From a0f95b60803d1b77640a80695d66caa1f1ca18e4 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 15 Mar 2024 09:47:43 +0530 Subject: [PATCH] Settle on a tsconfig for now Electron also comes with its own type definitions, and from a (possibly dated) blog post announcing this I got that we should not be overriding it with @types/node: https://www.electronjs.org/pt/blog/typescript --- desktop/package.json | 2 -- desktop/tsconfig.json | 51 +++++++++++++++++++++++++++++++++---------- desktop/yarn.lock | 10 --------- 3 files changed, 40 insertions(+), 23 deletions(-) diff --git a/desktop/package.json b/desktop/package.json index de6199f78..4c86fc76f 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -39,11 +39,9 @@ "promise-fs": "^2.1.1" }, "devDependencies": { - "@tsconfig/node18": "^18.2.2", "@types/auto-launch": "^5.0.2", "@types/ffmpeg-static": "^3.0.1", "@types/get-folder-size": "^2.0.0", - "@types/node": "18.15.0", "@types/node-fetch": "^2.6.2", "@types/promise-fs": "^2.1.1", "@typescript-eslint/eslint-plugin": "^5.28.0", diff --git a/desktop/tsconfig.json b/desktop/tsconfig.json index a4d99a9ab..5e5cca606 100644 --- a/desktop/tsconfig.json +++ b/desktop/tsconfig.json @@ -5,34 +5,63 @@ /* TSConfig docs: https://aka.ms/tsconfig.json */ - /* Recommended target, lib and other settings for code running in the - version of Node.js bundled with Electron. - - Currently, with Electron 25, this is Node.js 18 - https://www.electronjs.org/blog/electron-25-0 - */ - // "extends": "@tsconfig/node18/tsconfig.json", "compilerOptions": { + /* Recommended target, lib and other settings for code running in the + version of Node.js bundled with Electron. + + Currently, with Electron 25, this is Node.js 18 + https://www.electronjs.org/blog/electron-25-0 + + Note that we cannot do + + "extends": "@tsconfig/node18/tsconfig.json", + + because that sets "lib": ["es2023"]. However (and I don't fully + understand what's going on here), that breaks our compilation since + tsc can then not find type definitions of things like ReadableStream. + + Adding "dom" to "lib" (e.g. `"lib": ["es2023", "dom"]`) fixes the + issue, but that doesn't sound correct - the main Electron process + isn't running in a browser context. + + It is possible that we're using some of the types incorrectly. For + now, we just omit the "lib" definition and rely on the defaults for + the "target" we've chosen. This is also what the current + electron-forge starter does: + + yarn create electron-app electron-forge-starter -- --template=webpack-typescript + + Enhancement: Can revisit this later. + + Refs: + - https://github.com/electron/electron/issues/27092 + - https://github.com/electron/electron/issues/16146 + */ + + "target": "es2022", + "module": "node16", + + "esModuleInterop": true, + "skipLibCheck": true, + /* Emit the generated JS into `app/` */ "outDir": "app", /* Generate source maps */ "sourceMap": true, /* Allow absolute imports starting with src as root */ "baseUrl": "src", - /* Allow imports of paths in node_modules */ + /* Allow imports of paths from node_modules */ "paths": { "*": ["node_modules/*"] }, /* Temporary overrides to get things to compile with the older config */ - "target": "es2021", - "module": "commonjs", - "esModuleInterop": true, "strict": false, "noImplicitAny": true /* Below is the state we want */ /* Enable these one by one */ + // "strict": true, /* Require the `type` modifier when importing types */ // "verbatimModuleSyntax": true diff --git a/desktop/yarn.lock b/desktop/yarn.lock index 1b6a83191..55ccafd01 100644 --- a/desktop/yarn.lock +++ b/desktop/yarn.lock @@ -205,11 +205,6 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== -"@tsconfig/node18@^18.2.2": - version "18.2.2" - resolved "https://registry.yarnpkg.com/@tsconfig/node18/-/node18-18.2.2.tgz#81fb16ecff0d400b1cbadbf76713b50f331029ce" - integrity sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw== - "@types/auto-launch@^5.0.2": version "5.0.2" resolved "https://registry.yarnpkg.com/@types/auto-launch/-/auto-launch-5.0.2.tgz#4970f01e5dd27572489b7fe77590204a19f86bd0" @@ -284,11 +279,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.3.tgz#463fc47f13ec0688a33aec75d078a0541a447199" integrity sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ== -"@types/node@18.15.0": - version "18.15.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.0.tgz#286a65e3fdffd691e170541e6ecb0410b16a38be" - integrity sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w== - "@types/node@^10.0.3": version "10.17.60" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b"