From f6d5a2378a814d432cd3a44d8995b485e2920b45 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Tue, 7 Oct 2025 00:35:22 -0400 Subject: [PATCH] remove jsconfig templates and add new lib/scripts templates --- packages/shared/jsconfig.web.json | 26 ------------ packages/shared/jsconfig.webworker.json | 11 ----- packages/shared/tsconfig.common.jsonc | 41 ++++++++++++++++++ packages/shared/tsconfig.json | 14 +++++++ packages/shared/tsconfig.lib.jsonc | 22 ++++++++++ packages/shared/tsconfig.node.json | 42 ------------------- ...jsconfig.node.json => tsconfig.node.jsonc} | 29 ++++++------- packages/shared/tsconfig.scripts.jsonc | 12 ++++++ packages/shared/tsconfig.web.json | 39 ----------------- packages/shared/tsconfig.web.jsonc | 20 +++++++++ ...ebworker.json => tsconfig.webworker.jsonc} | 2 +- 11 files changed, 122 insertions(+), 136 deletions(-) delete mode 100644 packages/shared/jsconfig.web.json delete mode 100644 packages/shared/jsconfig.webworker.json create mode 100644 packages/shared/tsconfig.common.jsonc create mode 100644 packages/shared/tsconfig.json create mode 100644 packages/shared/tsconfig.lib.jsonc delete mode 100644 packages/shared/tsconfig.node.json rename packages/shared/{jsconfig.node.json => tsconfig.node.jsonc} (54%) create mode 100644 packages/shared/tsconfig.scripts.jsonc delete mode 100644 packages/shared/tsconfig.web.json create mode 100644 packages/shared/tsconfig.web.jsonc rename packages/shared/{tsconfig.webworker.json => tsconfig.webworker.jsonc} (80%) diff --git a/packages/shared/jsconfig.web.json b/packages/shared/jsconfig.web.json deleted file mode 100644 index 3e17a5adfb..0000000000 --- a/packages/shared/jsconfig.web.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "noEmit": true, - "target": "ES2022", - "module": "ES2022", - "moduleResolution": "Bundler", - "types": [], - "lib": ["ES2022", "DOM", "DOM.Iterable"], - "noLib": false, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "skipLibCheck": true, - "skipDefaultLibCheck": true, - "incremental": true - }, - "compileOnSave": false, - "exclude": [ - "node_modules", - "built", - "coverage", - "**/*.ts" - ] -} diff --git a/packages/shared/jsconfig.webworker.json b/packages/shared/jsconfig.webworker.json deleted file mode 100644 index 68c1def539..0000000000 --- a/packages/shared/jsconfig.webworker.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./jsconfig.web.json", - "compilerOptions": { - "lib": [ - "ES2022", - "WebWorker", - "Webworker.Iterable" - ] - } -} diff --git a/packages/shared/tsconfig.common.jsonc b/packages/shared/tsconfig.common.jsonc new file mode 100644 index 0000000000..bba3faf16f --- /dev/null +++ b/packages/shared/tsconfig.common.jsonc @@ -0,0 +1,41 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + // Input + "allowJs": true, + "checkJs": true, + "noLib": false, + + // Checking + "skipLibCheck": true, + "skipDefaultLibCheck": true, + "strict": true, + "noImplicitReturns": true, + "noUnusedParameters": true, + "noUnusedLocals": true, + "noFallthroughCasesInSwitch": true, + "experimentalDecorators": true, + "verbatimModuleSyntax": true, + "isolatedModules": true, + "forceConsistentCasingInFileNames": true, + "allowUnreachableCode": false, + "noImplicitOverride": true, + "allowSyntheticDefaultImports": false, + "resolveJsonModule": false, + + // Output + "esModuleInterop": true, + "noEmitOnError": true, + "incremental": true, + "removeComments": true, + }, + "compileOnSave": false, + "exclude": [ + "**/node_modules", + "**/built", + "**/built-test", + "**/js-built", + "**/temp", + "**/coverage" + ] +} diff --git a/packages/shared/tsconfig.json b/packages/shared/tsconfig.json new file mode 100644 index 0000000000..afb071f752 --- /dev/null +++ b/packages/shared/tsconfig.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.scripts.jsonc", + + "#": [ + "This is not a template!!!", + "Used for type-checking the shared JS/TS code; do not reference from other packages." + ], + + "include": [ + "*.js", + "*.ts", + ], +} diff --git a/packages/shared/tsconfig.lib.jsonc b/packages/shared/tsconfig.lib.jsonc new file mode 100644 index 0000000000..254cd0cb4b --- /dev/null +++ b/packages/shared/tsconfig.lib.jsonc @@ -0,0 +1,22 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.common.jsonc", + "compilerOptions": { + // Target + // NodeNext should be used even for non-node libraries: https://stackoverflow.com/a/78087127 + "target": "ES2022", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "lib": ["ES2022"], + + // Output + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "inlineSources": true, + "removeComments": false, + "noEmitOnError": false, + "noEmit": false, + "composite": true + } +} diff --git a/packages/shared/tsconfig.node.json b/packages/shared/tsconfig.node.json deleted file mode 100644 index 9183af505d..0000000000 --- a/packages/shared/tsconfig.node.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "noEmitOnError": true, - // ES2025 is the earliest that supports our API uses: https://node.green/#ES2025 - // But TS doesn't implement it yet: https://github.com/microsoft/TypeScript/issues/61735 - "target": "ESNext", - "module": "NodeNext", - "moduleResolution": "NodeNext", - "types": ["node"], - "lib": ["ESNext"], - "noLib": false, - "noImplicitAny": true, - "noImplicitReturns": true, - "noUnusedParameters": false, - "noUnusedLocals": false, - "noFallthroughCasesInSwitch": true, - "declaration": false, - "sourceMap": false, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "strict": true, - "strictNullChecks": true, - "strictPropertyInitialization": false, - "skipLibCheck": true, - "skipDefaultLibCheck": true, - "experimentalDecorators": true, - "verbatimModuleSyntax": true, - "emitDecoratorMetadata": true, - "resolveJsonModule": true, - "isolatedModules": true, - "incremental": true - }, - "compileOnSave": false, - "exclude": [ - "node_modules", - "built", - "coverage" - ] -} diff --git a/packages/shared/jsconfig.node.json b/packages/shared/tsconfig.node.jsonc similarity index 54% rename from packages/shared/jsconfig.node.json rename to packages/shared/tsconfig.node.jsonc index c9a3832f00..6d347038fa 100644 --- a/packages/shared/jsconfig.node.json +++ b/packages/shared/tsconfig.node.jsonc @@ -1,28 +1,23 @@ { "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.common.jsonc", "compilerOptions": { - "allowJs": true, - "checkJs": true, - "noEmit": true, + // Target // ES2025 is the earliest that supports our API uses: https://node.green/#ES2025 // But TS doesn't implement it yet: https://github.com/microsoft/TypeScript/issues/61735 "target": "ESNext", "module": "NodeNext", "moduleResolution": "NodeNext", - "types": ["node"], "lib": ["ESNext"], - "noLib": false, + + // Checking "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "skipLibCheck": true, - "skipDefaultLibCheck": true, - "incremental": true - }, - "compileOnSave": false, - "exclude": [ - "node_modules", - "built", - "coverage", - "**/*.ts" - ] + "resolveJsonModule": true, + "noUnusedLocals": false, // allow unused imports to avoid merge conflicts + "noUnusedParameters": false, // allow unused imports to avoid merge conflicts + + // Output + "emitDecoratorMetadata": true, + "removeComments": false + } } diff --git a/packages/shared/tsconfig.scripts.jsonc b/packages/shared/tsconfig.scripts.jsonc new file mode 100644 index 0000000000..e3b21f75d2 --- /dev/null +++ b/packages/shared/tsconfig.scripts.jsonc @@ -0,0 +1,12 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.node.jsonc", + "compilerOptions": { + // Checking + "noImplicitAny": false, + "allowImportingTsExtensions": true, + + // Output + "noEmit": true + } +} diff --git a/packages/shared/tsconfig.web.json b/packages/shared/tsconfig.web.json deleted file mode 100644 index 1865ef1c7b..0000000000 --- a/packages/shared/tsconfig.web.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "noEmitOnError": false, - // TODO should we support an older standard? - "target": "ES2022", - "module": "ES2022", - "moduleResolution": "Bundler", - "lib": ["ES2022", "DOM", "DOM.Iterable"], - "noLib": false, - "strict": true, - "noImplicitAny": false, - "noImplicitReturns": true, - "noUnusedParameters": false, - "noUnusedLocals": false, - "noFallthroughCasesInSwitch": true, - "declaration": false, - "sourceMap": false, - "strictNullChecks": true, - "experimentalDecorators": true, - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, - "isolatedModules": true, - "useDefineForClassFields": true, - "esModuleInterop": true, - "verbatimModuleSyntax": true, - "skipLibCheck": true, - "skipDefaultLibCheck": true, - "incremental": true - }, - "compileOnSave": false, - "exclude": [ - "node_modules", - "built", - "coverage" - ] -} diff --git a/packages/shared/tsconfig.web.jsonc b/packages/shared/tsconfig.web.jsonc new file mode 100644 index 0000000000..dc8d026792 --- /dev/null +++ b/packages/shared/tsconfig.web.jsonc @@ -0,0 +1,20 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.common.jsonc", + "compilerOptions": { + // Target + // TODO should we target an older standard? + "target": "ES2022", + "module": "ES2022", + "moduleResolution": "Bundler", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + + // Checking + // TODO separate web/bundler profiles to account for stuff like this + "resolveJsonModule": true, + + // Output + "sourceMap": true, + "inlineSources": true + } +} diff --git a/packages/shared/tsconfig.webworker.json b/packages/shared/tsconfig.webworker.jsonc similarity index 80% rename from packages/shared/tsconfig.webworker.json rename to packages/shared/tsconfig.webworker.jsonc index cf60dbb9e2..630dec499d 100644 --- a/packages/shared/tsconfig.webworker.json +++ b/packages/shared/tsconfig.webworker.jsonc @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./tsconfig.web.json", + "extends": "./tsconfig.web.jsonc", "compilerOptions": { "lib": [ "ES2022",