diff --git a/apps/electron-backend/tsconfig.app.json b/apps/electron-backend/tsconfig.app.json index cdc691548..114cdeed2 100644 --- a/apps/electron-backend/tsconfig.app.json +++ b/apps/electron-backend/tsconfig.app.json @@ -3,7 +3,9 @@ "compilerOptions": { "outDir": "../../dist/out-tsc", "types": ["node"], - "importHelpers": false + "importHelpers": false, + "target": "ES2022", + "useDefineForClassFields": false }, "files": ["../../global.d.ts"], "exclude": [ diff --git a/apps/electron-backend/tsconfig.json b/apps/electron-backend/tsconfig.json index 0d3637e7d..522574b2b 100644 --- a/apps/electron-backend/tsconfig.json +++ b/apps/electron-backend/tsconfig.json @@ -4,9 +4,7 @@ "types": ["node"], "moduleResolution": "nodenext", "module": "NodeNext", - "ignoreDeprecations": "6.0", - "target": "ES2022", - "useDefineForClassFields": false + "ignoreDeprecations": "6.0" }, "include": ["**/*.ts"] } diff --git a/docs/development/electron-debugging.md b/docs/development/electron-debugging.md index 4ee34e510..b308236c0 100644 --- a/docs/development/electron-debugging.md +++ b/docs/development/electron-debugging.md @@ -135,10 +135,15 @@ from `app.asar`. The preload is [DB worker](../architecture/sqlite-db-worker.md) for worker ownership and [Electron security](../architecture/electron-security.md) for bridge boundaries. -`apps/electron-backend/tsconfig.json` sets `"target": "ES2022"` for the -main-process bundles (`main.js`, `main.app.js`, `deferred-events.js`), the -preloads and the backend's Jest specs; `tsconfig.base.json` stays at `es2015` -because other projects inherit it. Electron 43 (Node 24 and Chromium's V8) runs +`apps/electron-backend/tsconfig.app.json` sets `"target": "ES2022"` for the +main-process bundles (`main.js`, `main.app.js`, `deferred-events.js`) and the +preloads; `tsconfig.base.json` stays at `es2015` because other projects +inherit it. The Jest specs (`tsconfig.spec.json`) keep the base target on +purpose: Istanbul counts the statements of the emitted code, so an ES2022 spec +build drops the downleveled helpers from the counts (for example +`downloads.events.ts` from 126 to 111 statements) and would trip the absolute +`minimumCovered` ratchets in `tools/coverage/coverage-policy.json` without any +coverage being lost. Electron 43 (Node 24 and Chromium's V8) runs ES2022 natively in the main process and in the sandboxed preload, so async/await, optional chaining and `??` are no longer downleveled. `"useDefineForClassFields": false` keeps the class-field semantics of the old