diff --git a/package-lock.json b/package-lock.json index f8ac9aa0f..2dd4a639d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -107,6 +107,7 @@ "@types/safe-compare": "^1.1.2", "@types/sanitize-html": "^2.11.0", "@types/sax": "^1.2.7", + "@types/semver": "^7.5.8", "@types/serve-favicon": "^2.5.7", "@types/stream-throttle": "^0.1.4", "@types/tmp": "^0.2.6", @@ -1664,6 +1665,12 @@ "@types/node": "*" } }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", @@ -14678,6 +14685,12 @@ "@types/node": "*" } }, + "@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, "@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", diff --git a/package.json b/package.json index 241bee541..cbfcd7e32 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,9 @@ "url": "https://github.com/zadam/trilium.git" }, "scripts": { - "start-server": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.js", - "start-server-no-dir": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.js", - "qstart-server": "npm run qswitch-server && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.js", + "start-server": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.ts", + "start-server-no-dir": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.ts", + "qstart-server": "npm run qswitch-server && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.ts", "start-electron": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron --inspect=5858 .", "start-electron-no-dir": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 electron --inspect=5858 .", "qstart-electron": "npm run qswitch-electron && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron --inspect=5858 .", @@ -128,6 +128,7 @@ "@types/safe-compare": "^1.1.2", "@types/sanitize-html": "^2.11.0", "@types/sax": "^1.2.7", + "@types/semver": "^7.5.8", "@types/serve-favicon": "^2.5.7", "@types/stream-throttle": "^0.1.4", "@types/tmp": "^0.2.6", @@ -154,4 +155,4 @@ "optionalDependencies": { "electron-installer-debian": "3.2.0" } -} +} \ No newline at end of file diff --git a/src/services/window.ts b/src/services/window.ts index 80f7f7e83..a901d79a8 100644 --- a/src/services/window.ts +++ b/src/services/window.ts @@ -81,7 +81,7 @@ async function createMainWindow(app: App) { app.on('second-instance', () => { // Someone tried to run a second instance, we should focus our window. - // see www.js "requestSingleInstanceLock" for the rest of this logic with explanation + // see www.ts "requestSingleInstanceLock" for the rest of this logic with explanation if (mainWindow) { if (mainWindow.isMinimized()) { mainWindow.restore(); diff --git a/src/www.js b/src/www.ts similarity index 78% rename from src/www.js rename to src/www.ts index 2059a3a7c..3f9aa752e 100644 --- a/src/www.js +++ b/src/www.ts @@ -18,19 +18,19 @@ function exit() { process.on('SIGINT', exit); process.on('SIGTERM', exit); -const app = require('./app'); -const sessionParser = require('./routes/session_parser'); -const fs = require('fs'); -const http = require('http'); -const https = require('https'); -const config = require('./services/config'); -const log = require('./services/log'); -const appInfo = require('./services/app_info'); -const ws = require('./services/ws'); -const utils = require('./services/utils'); -const port = require('./services/port'); -const host = require('./services/host'); -const semver = require('semver'); +import app = require('./app'); +import sessionParser = require('./routes/session_parser'); +import fs = require('fs'); +import http = require('http'); +import https = require('https'); +import config = require('./services/config'); +import log = require('./services/log'); +import appInfo = require('./services/app_info'); +import ws = require('./services/ws'); +import utils = require('./services/utils'); +import port = require('./services/port'); +import host = require('./services/host'); +import semver = require('semver'); if (!semver.satisfies(process.version, ">=10.5.0")) { console.error("Trilium only supports node.js 10.5 and later"); @@ -66,7 +66,7 @@ function startTrilium() { const httpServer = startHttpServer(); - ws.init(httpServer, sessionParser); + ws.init(httpServer, sessionParser as any); // TODO: Not sure why session parser is incompatible. if (utils.isElectron()) { const electronRouting = require('./routes/electron'); @@ -126,25 +126,23 @@ function startHttpServer() { } httpServer.on('error', error => { - if (!listenOnTcp || error.syscall !== 'listen') { + if (!listenOnTcp || ("syscall" in error && error.syscall !== 'listen')) { throw error; } // handle specific listen errors with friendly messages - switch (error.code) { - case 'EACCES': - console.error(`Port ${port} requires elevated privileges. It's recommended to use port above 1024.`); - process.exit(1); - break; - - case 'EADDRINUSE': - console.error(`Port ${port} is already in use. Most likely, another Trilium process is already running. You might try to find it, kill it, and try again.`); - process.exit(1); - break; - - default: - throw error; + if ("code" in error) { + switch (error.code) { + case 'EACCES': + console.error(`Port ${port} requires elevated privileges. It's recommended to use port above 1024.`); + process.exit(1); + case 'EADDRINUSE': + console.error(`Port ${port} is already in use. Most likely, another Trilium process is already running. You might try to find it, kill it, and try again.`); + process.exit(1); + } } + + throw error; } )