File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ const { rmSync, existsSync } = require ( 'fs' ) ;
2+ const net = require ( 'net' ) ;
3+
4+ const port = parseInt ( process . env . PORT ?? '3000' , 10 ) ;
5+
6+ function isServerRunning ( port ) {
7+ return new Promise ( ( resolve ) => {
8+ const socket = new net . Socket ( ) ;
9+ socket . setTimeout ( 500 ) ;
10+ socket . on ( 'connect' , ( ) => { socket . destroy ( ) ; resolve ( true ) ; } ) ;
11+ socket . on ( 'error' , ( ) => resolve ( false ) ) ;
12+ socket . on ( 'timeout' , ( ) => { socket . destroy ( ) ; resolve ( false ) ; } ) ;
13+ socket . connect ( port , '127.0.0.1' ) ;
14+ } ) ;
15+ }
16+
17+ async function main ( ) {
18+ if ( await isServerRunning ( port ) ) {
19+ console . error ( `Error: the sharing server is still running on port ${ port } .` ) ;
20+ console . error ( 'Stop it first, then re-run npm run clean:db.' ) ;
21+ process . exit ( 1 ) ;
22+ }
23+
24+ const files = [ './data/sharing.db' , './data/sharing.db-shm' , './data/sharing.db-wal' ] ;
25+ files . forEach ( f => {
26+ if ( existsSync ( f ) ) {
27+ try {
28+ rmSync ( f ) ;
29+ console . log ( 'Removed ' + f ) ;
30+ } catch ( err ) {
31+ if ( err . code === 'EPERM' || err . code === 'EBUSY' ) {
32+ console . error ( `Cannot remove ${ f } — the file is locked.` ) ;
33+ process . exit ( 1 ) ;
34+ }
35+ throw err ;
36+ }
37+ }
38+ } ) ;
39+ console . log ( 'Done.' ) ;
40+ }
41+
42+ main ( ) ;
Original file line number Diff line number Diff line change 1414 "build:production" : " node esbuild.js --production" ,
1515 "start" : " node --env-file=.env dist/server.js" ,
1616 "dev" : " node --env-file=.env --watch dist/server.js" ,
17+ "serve" : " node esbuild.js && node --env-file=.env --watch dist/server.js" ,
18+ "clean:db" : " node clean-db.js" ,
1719 "update" : " npm ci && node esbuild.js" ,
1820 "check-types" : " tsc --noEmit"
1921 },
You can’t perform that action at this time.
0 commit comments