From bc7c47c30db18304f46a4cbd13a6fb918cf542b8 Mon Sep 17 00:00:00 2001 From: Martyn Janes Date: Fri, 23 Oct 2026 08:33:46 +0800 Subject: [PATCH] feat: add tstransform native compiler command Add a `tstransform` command and `tsTransform` method to nameof-transformer which compile projects with the native TypeScript compiler, replacing the `nameof` calls as source files are read through a virtual file system. Switch all packages and apps from `tspc` to `tstransform`, move incremental build settings into tsconfig, move vitest cache settings into vitest config, and remove ts-patch. Build orchestrator overrides are sent as both `compilerOptions` and `overrideCompilerOptions` so they apply before and after microsoft/TypeScript#64759 is released. --- apps/crypto-cli/package.json | 9 +- apps/crypto-cli/tests/tsconfig.json | 2 + apps/crypto-cli/tsconfig.json | 2 + apps/crypto-cli/vitest.config.ts | 1 + apps/merge-locales/package.json | 9 +- apps/merge-locales/tests/tsconfig.json | 2 + apps/merge-locales/tsconfig.json | 2 + apps/merge-locales/vitest.config.ts | 1 + apps/validate-locales/package.json | 9 +- apps/validate-locales/tests/tsconfig.json | 2 + apps/validate-locales/tsconfig.json | 2 + apps/validate-locales/vitest.config.ts | 1 + packages/cli-core/package.json | 9 +- packages/cli-core/tests/tsconfig.json | 2 + packages/cli-core/tsconfig.json | 2 + packages/cli-core/vitest.config.ts | 1 + packages/context/package.json | 9 +- packages/context/tests/tsconfig.json | 2 + packages/context/tsconfig.json | 2 + packages/context/vitest.config.ts | 1 + packages/core/package.json | 9 +- packages/core/tests/tsconfig.json | 2 + packages/core/tsconfig.json | 2 + packages/core/vitest.config.ts | 1 + packages/crypto/package.json | 9 +- packages/crypto/tests/tsconfig.json | 2 + packages/crypto/tsconfig.json | 2 + packages/crypto/vitest.config.ts | 1 + packages/entity/package.json | 9 +- packages/entity/tests/tsconfig.json | 2 + packages/entity/tsconfig.json | 2 + packages/entity/vitest.config.ts | 1 + packages/image/package.json | 9 +- packages/image/tests/tsconfig.json | 2 + packages/image/tsconfig.json | 2 + packages/image/vitest.config.ts | 1 + packages/modules/package.json | 9 +- packages/modules/tests/tsconfig.json | 2 + packages/modules/tsconfig.json | 2 + packages/modules/vitest.config.ts | 1 + .../nameof-transformer/bin/tstransform.js | 10 + .../nameof-transformer/docs/configuration.md | 25 ++ packages/nameof-transformer/package.json | 16 +- packages/nameof-transformer/src/index.ts | 1 + .../src/models/IBuildOrchestratorApi.ts | 26 ++ .../nameof-transformer/src/tsTransform.ts | 88 +++++ .../tests/tsTransform.spec.ts | 95 ++++++ .../nameof-transformer/tests/tsconfig.json | 3 +- packages/nameof-transformer/tsconfig.json | 4 +- packages/nameof-transformer/vitest.config.ts | 1 + packages/nameof-vitest-plugin/package.json | 8 +- .../nameof-vitest-plugin/tests/tsconfig.json | 1 + packages/nameof-vitest-plugin/tsconfig.json | 2 + .../nameof-vitest-plugin/vitest.config.ts | 1 + packages/nameof/package.json | 9 +- packages/nameof/tests/tsconfig.json | 2 + packages/nameof/tsconfig.json | 2 + packages/nameof/vitest.config.ts | 1 + packages/qr/package.json | 9 +- packages/qr/tests/tsconfig.json | 2 + packages/qr/tsconfig.json | 2 + packages/qr/vitest.config.ts | 1 + packages/web/package.json | 9 +- packages/web/tests/tsconfig.json | 2 + packages/web/tsconfig.json | 2 + packages/web/vitest.config.ts | 1 + pnpm-lock.yaml | 308 +++++++++++++----- 67 files changed, 611 insertions(+), 160 deletions(-) create mode 100644 packages/nameof-transformer/bin/tstransform.js create mode 100644 packages/nameof-transformer/src/models/IBuildOrchestratorApi.ts create mode 100644 packages/nameof-transformer/src/tsTransform.ts create mode 100644 packages/nameof-transformer/tests/tsTransform.spec.ts diff --git a/apps/crypto-cli/package.json b/apps/crypto-cli/package.json index 3781b876..5d2d769d 100644 --- a/apps/crypto-cli/package.json +++ b/apps/crypto-cli/package.json @@ -15,12 +15,12 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tspc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tstransform", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", "merge-locales": "merge-locales", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tspc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tstransform -p ./tests/tsconfig.json", "validate-locales": "validate-locales", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", @@ -46,7 +46,6 @@ "copyfiles": "2.4.1", "nodemon": "3.1.14", "rimraf": "6.1.3", - "ts-patch": "4.0.1", "typedoc": "0.28.20", "typedoc-plugin-markdown": "4.14.1", "typescript": "6.0.3", diff --git a/apps/crypto-cli/tests/tsconfig.json b/apps/crypto-cli/tests/tsconfig.json index 820a7c3f..29bcd4d0 100644 --- a/apps/crypto-cli/tests/tsconfig.json +++ b/apps/crypto-cli/tests/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", "types": ["node", "vitest/globals"] }, diff --git a/apps/crypto-cli/tsconfig.json b/apps/crypto-cli/tsconfig.json index 75bd95c6..a8a4cec5 100644 --- a/apps/crypto-cli/tsconfig.json +++ b/apps/crypto-cli/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", diff --git a/apps/crypto-cli/vitest.config.ts b/apps/crypto-cli/vitest.config.ts index 648402ee..9c5783dd 100644 --- a/apps/crypto-cli/vitest.config.ts +++ b/apps/crypto-cli/vitest.config.ts @@ -8,6 +8,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/apps/merge-locales/package.json b/apps/merge-locales/package.json index 9afe013e..7e3dd70a 100644 --- a/apps/merge-locales/package.json +++ b/apps/merge-locales/package.json @@ -15,12 +15,12 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tspc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tstransform", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", "merge-locales": "copyfiles locales/en.json dist && tsx ./src/cli-dev.ts", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tspc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tstransform -p ./tests/tsconfig.json", "validate-locales": "echo Can not perform locale validation on merge-locales package as the validate-locales package depends on merge-locales", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", @@ -44,7 +44,6 @@ "copyfiles": "2.4.1", "nodemon": "3.1.14", "rimraf": "6.1.3", - "ts-patch": "4.0.1", "tsx": "4.23.15", "typedoc": "0.28.20", "typedoc-plugin-markdown": "4.14.1", diff --git a/apps/merge-locales/tests/tsconfig.json b/apps/merge-locales/tests/tsconfig.json index 44d8c8f8..8f550b23 100644 --- a/apps/merge-locales/tests/tsconfig.json +++ b/apps/merge-locales/tests/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", "types": ["vitest/globals"] }, diff --git a/apps/merge-locales/tsconfig.json b/apps/merge-locales/tsconfig.json index 75bd95c6..a8a4cec5 100644 --- a/apps/merge-locales/tsconfig.json +++ b/apps/merge-locales/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", diff --git a/apps/merge-locales/vitest.config.ts b/apps/merge-locales/vitest.config.ts index 648402ee..9c5783dd 100644 --- a/apps/merge-locales/vitest.config.ts +++ b/apps/merge-locales/vitest.config.ts @@ -8,6 +8,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/apps/validate-locales/package.json b/apps/validate-locales/package.json index 2e292a6d..aae26122 100644 --- a/apps/validate-locales/package.json +++ b/apps/validate-locales/package.json @@ -15,12 +15,12 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tspc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tstransform", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", "merge-locales": "merge-locales", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tspc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tstransform -p ./tests/tsconfig.json", "validate-locales": "tsx ./src/cli-dev.ts", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", @@ -46,7 +46,6 @@ "copyfiles": "2.4.1", "nodemon": "3.1.14", "rimraf": "6.1.3", - "ts-patch": "4.0.1", "tsx": "4.23.15", "typedoc": "0.28.20", "typedoc-plugin-markdown": "4.14.1", diff --git a/apps/validate-locales/tests/tsconfig.json b/apps/validate-locales/tests/tsconfig.json index 820a7c3f..29bcd4d0 100644 --- a/apps/validate-locales/tests/tsconfig.json +++ b/apps/validate-locales/tests/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", "types": ["node", "vitest/globals"] }, diff --git a/apps/validate-locales/tsconfig.json b/apps/validate-locales/tsconfig.json index 75bd95c6..a8a4cec5 100644 --- a/apps/validate-locales/tsconfig.json +++ b/apps/validate-locales/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", diff --git a/apps/validate-locales/vitest.config.ts b/apps/validate-locales/vitest.config.ts index 648402ee..9c5783dd 100644 --- a/apps/validate-locales/vitest.config.ts +++ b/apps/validate-locales/vitest.config.ts @@ -8,6 +8,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/packages/cli-core/package.json b/packages/cli-core/package.json index 0a59830a..96f9f247 100644 --- a/packages/cli-core/package.json +++ b/packages/cli-core/package.json @@ -15,12 +15,12 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tspc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tstransform", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", "merge-locales": "copyfiles locales/en.json dist", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tspc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tstransform -p ./tests/tsconfig.json", "validate-locales": "tsx ../../apps/validate-locales/src/cli-dev.ts", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", @@ -44,7 +44,6 @@ "copyfiles": "2.4.1", "nodemon": "3.1.14", "rimraf": "6.1.3", - "ts-patch": "4.0.1", "tsx": "4.23.15", "typedoc": "0.28.20", "typedoc-plugin-markdown": "4.14.1", diff --git a/packages/cli-core/tests/tsconfig.json b/packages/cli-core/tests/tsconfig.json index 44d8c8f8..8f550b23 100644 --- a/packages/cli-core/tests/tsconfig.json +++ b/packages/cli-core/tests/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", "types": ["vitest/globals"] }, diff --git a/packages/cli-core/tsconfig.json b/packages/cli-core/tsconfig.json index 75bd95c6..a8a4cec5 100644 --- a/packages/cli-core/tsconfig.json +++ b/packages/cli-core/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", diff --git a/packages/cli-core/vitest.config.ts b/packages/cli-core/vitest.config.ts index 648402ee..9c5783dd 100644 --- a/packages/cli-core/vitest.config.ts +++ b/packages/cli-core/vitest.config.ts @@ -8,6 +8,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/packages/context/package.json b/packages/context/package.json index b155ccf4..dee110cd 100644 --- a/packages/context/package.json +++ b/packages/context/package.json @@ -15,11 +15,11 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tspc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tstransform", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tspc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tstransform -p ./tests/tsconfig.json", "validate-locales": "validate-locales", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", @@ -41,7 +41,6 @@ "copyfiles": "2.4.1", "nodemon": "3.1.14", "rimraf": "6.1.3", - "ts-patch": "4.0.1", "typedoc": "0.28.20", "typedoc-plugin-markdown": "4.14.1", "typescript": "6.0.3", diff --git a/packages/context/tests/tsconfig.json b/packages/context/tests/tsconfig.json index 820a7c3f..29bcd4d0 100644 --- a/packages/context/tests/tsconfig.json +++ b/packages/context/tests/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", "types": ["node", "vitest/globals"] }, diff --git a/packages/context/tsconfig.json b/packages/context/tsconfig.json index 75bd95c6..a8a4cec5 100644 --- a/packages/context/tsconfig.json +++ b/packages/context/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", diff --git a/packages/context/vitest.config.ts b/packages/context/vitest.config.ts index 648402ee..9c5783dd 100644 --- a/packages/context/vitest.config.ts +++ b/packages/context/vitest.config.ts @@ -8,6 +8,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/packages/core/package.json b/packages/core/package.json index c9941df2..ceb20107 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -15,11 +15,11 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tspc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tstransform", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tspc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tstransform -p ./tests/tsconfig.json", "validate-locales": "tsx ../../apps/validate-locales/src/cli-dev.ts", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", @@ -41,7 +41,6 @@ "copyfiles": "2.4.1", "nodemon": "3.1.14", "rimraf": "6.1.3", - "ts-patch": "4.0.1", "tsx": "4.23.15", "typedoc": "0.28.20", "typedoc-plugin-markdown": "4.14.1", diff --git a/packages/core/tests/tsconfig.json b/packages/core/tests/tsconfig.json index 820a7c3f..29bcd4d0 100644 --- a/packages/core/tests/tsconfig.json +++ b/packages/core/tests/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", "types": ["node", "vitest/globals"] }, diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index ea71a59e..b038db99 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", diff --git a/packages/core/vitest.config.ts b/packages/core/vitest.config.ts index 648402ee..9c5783dd 100644 --- a/packages/core/vitest.config.ts +++ b/packages/core/vitest.config.ts @@ -8,6 +8,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/packages/crypto/package.json b/packages/crypto/package.json index 14de825c..0cee4267 100644 --- a/packages/crypto/package.json +++ b/packages/crypto/package.json @@ -15,11 +15,11 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tspc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tstransform", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tspc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tstransform -p ./tests/tsconfig.json", "validate-locales": "validate-locales", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", @@ -48,7 +48,6 @@ "copyfiles": "2.4.1", "nodemon": "3.1.14", "rimraf": "6.1.3", - "ts-patch": "4.0.1", "typedoc": "0.28.20", "typedoc-plugin-markdown": "4.14.1", "typescript": "6.0.3", diff --git a/packages/crypto/tests/tsconfig.json b/packages/crypto/tests/tsconfig.json index 820a7c3f..29bcd4d0 100644 --- a/packages/crypto/tests/tsconfig.json +++ b/packages/crypto/tests/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", "types": ["node", "vitest/globals"] }, diff --git a/packages/crypto/tsconfig.json b/packages/crypto/tsconfig.json index 75bd95c6..a8a4cec5 100644 --- a/packages/crypto/tsconfig.json +++ b/packages/crypto/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", diff --git a/packages/crypto/vitest.config.ts b/packages/crypto/vitest.config.ts index 648402ee..9c5783dd 100644 --- a/packages/crypto/vitest.config.ts +++ b/packages/crypto/vitest.config.ts @@ -8,6 +8,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/packages/entity/package.json b/packages/entity/package.json index 478aca14..18d679e6 100644 --- a/packages/entity/package.json +++ b/packages/entity/package.json @@ -15,11 +15,11 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tspc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tstransform", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tspc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tstransform -p ./tests/tsconfig.json", "validate-locales": "validate-locales", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", @@ -42,7 +42,6 @@ "copyfiles": "2.4.1", "nodemon": "3.1.14", "rimraf": "6.1.3", - "ts-patch": "4.0.1", "typedoc": "0.28.20", "typedoc-plugin-markdown": "4.14.1", "typescript": "6.0.3", diff --git a/packages/entity/tests/tsconfig.json b/packages/entity/tests/tsconfig.json index 44d8c8f8..8f550b23 100644 --- a/packages/entity/tests/tsconfig.json +++ b/packages/entity/tests/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", "types": ["vitest/globals"] }, diff --git a/packages/entity/tsconfig.json b/packages/entity/tsconfig.json index d97632fa..9bfc0b78 100644 --- a/packages/entity/tsconfig.json +++ b/packages/entity/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", diff --git a/packages/entity/vitest.config.ts b/packages/entity/vitest.config.ts index 648402ee..9c5783dd 100644 --- a/packages/entity/vitest.config.ts +++ b/packages/entity/vitest.config.ts @@ -8,6 +8,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/packages/image/package.json b/packages/image/package.json index 00c0cf5a..7ce45f3b 100644 --- a/packages/image/package.json +++ b/packages/image/package.json @@ -15,11 +15,11 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tspc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tstransform", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tspc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tstransform -p ./tests/tsconfig.json", "validate-locales": "validate-locales", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", @@ -40,7 +40,6 @@ "copyfiles": "2.4.1", "nodemon": "3.1.14", "rimraf": "6.1.3", - "ts-patch": "4.0.1", "typedoc": "0.28.20", "typedoc-plugin-markdown": "4.14.1", "typescript": "6.0.3", diff --git a/packages/image/tests/tsconfig.json b/packages/image/tests/tsconfig.json index 44d8c8f8..8f550b23 100644 --- a/packages/image/tests/tsconfig.json +++ b/packages/image/tests/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", "types": ["vitest/globals"] }, diff --git a/packages/image/tsconfig.json b/packages/image/tsconfig.json index d97632fa..9bfc0b78 100644 --- a/packages/image/tsconfig.json +++ b/packages/image/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", diff --git a/packages/image/vitest.config.ts b/packages/image/vitest.config.ts index 648402ee..9c5783dd 100644 --- a/packages/image/vitest.config.ts +++ b/packages/image/vitest.config.ts @@ -8,6 +8,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/packages/modules/package.json b/packages/modules/package.json index bed6ca4a..d49d8be1 100644 --- a/packages/modules/package.json +++ b/packages/modules/package.json @@ -15,11 +15,11 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tspc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tstransform", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tspc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tstransform -p ./tests/tsconfig.json", "validate-locales": "validate-locales", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", @@ -43,7 +43,6 @@ "copyfiles": "2.4.1", "nodemon": "3.1.14", "rimraf": "6.1.3", - "ts-patch": "4.0.1", "typedoc": "0.28.20", "typedoc-plugin-markdown": "4.14.1", "typescript": "6.0.3", diff --git a/packages/modules/tests/tsconfig.json b/packages/modules/tests/tsconfig.json index 820a7c3f..29bcd4d0 100644 --- a/packages/modules/tests/tsconfig.json +++ b/packages/modules/tests/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", "types": ["node", "vitest/globals"] }, diff --git a/packages/modules/tsconfig.json b/packages/modules/tsconfig.json index 75bd95c6..a8a4cec5 100644 --- a/packages/modules/tsconfig.json +++ b/packages/modules/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", diff --git a/packages/modules/vitest.config.ts b/packages/modules/vitest.config.ts index 648402ee..9c5783dd 100644 --- a/packages/modules/vitest.config.ts +++ b/packages/modules/vitest.config.ts @@ -8,6 +8,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/packages/nameof-transformer/bin/tstransform.js b/packages/nameof-transformer/bin/tstransform.js new file mode 100644 index 00000000..225d239d --- /dev/null +++ b/packages/nameof-transformer/bin/tstransform.js @@ -0,0 +1,10 @@ +#!/usr/bin/env node +// Copyright 2026 3Sixty Trade Ltd. +// SPDX-License-Identifier: Apache-2.0. +import { tsTransform } from '../dist/es/index.js'; + +const output = tsTransform(process.argv.slice(2), process.cwd()); +if (output.length > 0) { + process.stderr.write(output); + process.exit(1); +} diff --git a/packages/nameof-transformer/docs/configuration.md b/packages/nameof-transformer/docs/configuration.md index 67668e76..7a296cda 100644 --- a/packages/nameof-transformer/docs/configuration.md +++ b/packages/nameof-transformer/docs/configuration.md @@ -6,6 +6,31 @@ This process is performed internally in the TypeScript compiler using a pipeline The transformer pipeline is not expose by the default `tsc` compiler, so for this reason we need to replace it's use in our compilation scripts with one that supports transformers. +## Native compiler + +The package includes a `tstransform` command which compiles your project with the native TypeScript compiler, replacing the `nameof` calls as the source files are read. It accepts the same command line arguments as `tsc`, and does not need ts-patch or the `plugins` entry in `tsconfig.json`. + +Modify your build scripts in `package.json` + +```json +{ + "scripts": { + "build": "tstransform", + "test:build": "tstransform -p ./tests/tsconfig.json --noEmit" + } +} +``` + +The same compilation is available from code using the `tsTransform` method, which returns the formatted diagnostics, or an empty string if the compilation succeeded. + +```typescript +import { tsTransform } from '@3sixty/nameof-transformer'; + +const diagnostics = tsTransform(['-p', './tsconfig.json'], process.cwd()); +``` + +## Transformer plugin + Add a transformer capable compiler. ```shell diff --git a/packages/nameof-transformer/package.json b/packages/nameof-transformer/package.json index 429773ed..20280790 100644 --- a/packages/nameof-transformer/package.json +++ b/packages/nameof-transformer/package.json @@ -15,11 +15,11 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tsc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tsc", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tsc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tsc -p ./tests/tsconfig.json --noEmit", "validate-locales": "echo Can not perform locale validation on nameof-transformer package as the validate-locales package depends on nameof-transformer", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", @@ -28,9 +28,11 @@ "dist:no-test": "pnpm run clean && concurrently -g -n build,locales,types \"pnpm run build\" \"pnpm run validate-locales\" \"pnpm run test:build\"" }, "dependencies": { - "typescript": "6.0.3" + "typescript": "6.0.3", + "typescript-native": "npm:typescript@7.1.0-beta" }, "devDependencies": { + "@types/node": "26.6.5", "@vitest/coverage-v8": "5.0.5", "concurrently": "10.0.6", "copyfiles": "2.4.1", @@ -50,11 +52,15 @@ } }, "files": [ + "bin", "dist/es", "dist/types", "locales", "docs" ], + "bin": { + "tstransform": "bin/tstransform.js" + }, "keywords": [ "twin", "trade", diff --git a/packages/nameof-transformer/src/index.ts b/packages/nameof-transformer/src/index.ts index 43d607a3..ce87498d 100644 --- a/packages/nameof-transformer/src/index.ts +++ b/packages/nameof-transformer/src/index.ts @@ -25,5 +25,6 @@ export const name = "@3sixty/nameof-transformer"; export * from "./manual.js"; export * from "./svelte.js"; +export * from "./tsTransform.js"; export default factory; diff --git a/packages/nameof-transformer/src/models/IBuildOrchestratorApi.ts b/packages/nameof-transformer/src/models/IBuildOrchestratorApi.ts new file mode 100644 index 00000000..635c1cab --- /dev/null +++ b/packages/nameof-transformer/src/models/IBuildOrchestratorApi.ts @@ -0,0 +1,26 @@ +// Copyright 2026 3Sixty Trade Ltd. +// SPDX-License-Identifier: Apache-2.0. +import type { BuildOrchestrator, CompilerOptions } from "typescript-native/sync"; + +/** + * The internal API method for creating a build orchestrator. + */ +export interface IBuildOrchestratorApi { + /** + * Create a build orchestrator for the projects. + * @param rootNames The project config files to build. + * @param options The options for the build. + * @param options.cwd The working directory for the build. + * @param options.compilerOptions The compiler options to override the project options, used by clients which spread the options into the request. + * @param options.overrideCompilerOptions The compiler options to override the project options, used by clients which nest the options in the request. + * @returns The build orchestrator. + */ + createBuildOrchestrator( + rootNames: string[], + options: { + cwd: string; + compilerOptions: CompilerOptions; + overrideCompilerOptions: CompilerOptions; + } + ): BuildOrchestrator; +} diff --git a/packages/nameof-transformer/src/tsTransform.ts b/packages/nameof-transformer/src/tsTransform.ts new file mode 100644 index 00000000..08ff717d --- /dev/null +++ b/packages/nameof-transformer/src/tsTransform.ts @@ -0,0 +1,88 @@ +// Copyright 2026 3Sixty Trade Ltd. +// SPDX-License-Identifier: Apache-2.0. +import { readFileSync } from "node:fs"; +import path from "node:path"; +import { type FileSystemCallbacks, serverFS } from "typescript-native/fs"; +import { API, type Diagnostic, formatDiagnosticsWithColorAndContext } from "typescript-native/sync"; +import { manual } from "./manual.js"; +import type { IBuildOrchestratorApi } from "./models/IBuildOrchestratorApi.js"; + +/** + * Is the file a source file that should have the nameof calls replaced. + * @param fileName The name of the file. + * @returns True if the nameof calls should be replaced. + */ +function isSourceFile(fileName: string): boolean { + return ( + /\.[cm]?tsx?$/.test(fileName) && + !/\.d\.[cm]?ts$/.test(fileName) && + !fileName.includes("/node_modules/") + ); +} + +/** + * Read a file, replacing the nameof calls if it is a source file. + * @param fileName The name of the file. + * @returns The content of the file, undefined if it does not exist, or useOS for other files. + * @throws Error if the file exists but cannot be read. + */ +function readFile(fileName: string): string | undefined | typeof serverFS.useOS { + if (!isSourceFile(fileName)) { + return serverFS.useOS; + } + try { + return manual(readFileSync(fileName, "utf8")); + } catch (error) { + if ((error as NodeJS.ErrnoException).code === "ENOENT") { + return undefined; + } + throw error; + } +} + +/** + * Compile a project with the native TypeScript compiler, replacing the nameof calls + * in the source files as they are read through a virtual file system. + * @param args The tsc command line arguments. + * @param cwd The working directory containing the project. + * @returns The diagnostics output, empty if the compilation succeeded. + */ +export function tsTransform(args: string[], cwd: string): string { + const fs: FileSystemCallbacks = { + directoryExists: serverFS.useOS, + fileExists: serverFS.useOS, + getAccessibleEntries: serverFS.useOS, + realpath: serverFS.useOS, + stat: serverFS.useOS, + writeFile: serverFS.useOS, + removeFile: serverFS.useOS, + readFile + }; + const api = new API({ cwd, fs }); + + try { + const commandLine = api.parseCommandLine(args); + const diagnostics: Diagnostic[] = [...commandLine.errors]; + if (diagnostics.length === 0) { + const { project, ...compilerOptions } = commandLine.options; + // The build orchestrator is internal to the API but is the only route which + // supports incremental builds, the server expects the options to be nested. + // Current clients spread the options so only the nested compilerOptions key + // reaches the server, clients with https://github.com/microsoft/TypeScript/pull/64759 + // only send overrideCompilerOptions. Remove compilerOptions once that is released. + const orchestrator = (api as unknown as IBuildOrchestratorApi).createBuildOrchestrator( + [project ?? path.join(cwd, "tsconfig.json")], + { cwd, compilerOptions, overrideCompilerOptions: compilerOptions } + ); + try { + diagnostics.push(...(orchestrator.build().diagnostics ?? [])); + } finally { + orchestrator.dispose(); + } + } + + return diagnostics.length > 0 ? formatDiagnosticsWithColorAndContext(diagnostics, api) : ""; + } finally { + api.close(); + } +} diff --git a/packages/nameof-transformer/tests/tsTransform.spec.ts b/packages/nameof-transformer/tests/tsTransform.spec.ts new file mode 100644 index 00000000..1139731d --- /dev/null +++ b/packages/nameof-transformer/tests/tsTransform.spec.ts @@ -0,0 +1,95 @@ +// Copyright 2026 3Sixty Trade Ltd. +// SPDX-License-Identifier: Apache-2.0. +import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs"; +import { tmpdir } from "node:os"; +import path from "node:path"; +import { tsTransform } from "../src/tsTransform.js"; + +let projectDir: string; + +/** + * Write a project with the given source file. + * @param source The content of the source file. + */ +function writeProject(source: string): void { + mkdirSync(path.join(projectDir, "src"), { recursive: true }); + writeFileSync( + path.join(projectDir, "tsconfig.json"), + JSON.stringify({ + compilerOptions: { + module: "nodenext", + target: "ES2022", + rootDir: "./src", + outDir: "dist", + strict: true, + types: [] + }, + include: ["src/**/*.ts"] + }) + ); + writeFileSync(path.join(projectDir, "src", "index.ts"), source); +} + +describe("tsTransform", () => { + beforeEach(() => { + projectDir = mkdtempSync(path.join(tmpdir(), "tstransform-")); + }); + + afterEach(() => { + rmSync(projectDir, { recursive: true, force: true }); + }); + + test("can compile a project replacing the nameof calls", () => { + writeProject( + "interface IMyObject { prop: number }\n" + + "export const typeName: string = nameof();\n" + + "export const camelName: string = nameofCamelCase();\n" + ); + + const output = tsTransform([], projectDir); + + expect(output).toEqual(""); + const js = readFileSync(path.join(projectDir, "dist", "index.js"), "utf8"); + expect(js).toContain('typeName = "IMyObject";'); + expect(js).toContain('camelName = "myObject";'); + }); + + test("can type check a project without emitting", () => { + writeProject( + "export const typeName: string = nameof();\ninterface IMyObject { prop: number }\n" + ); + + const output = tsTransform(["--noEmit"], projectDir); + + expect(output).toEqual(""); + expect(() => readFileSync(path.join(projectDir, "dist", "index.js"))).toThrow(); + }); + + test("can compile a project incrementally", () => { + writeProject("export const value = 1;\n"); + + const output = tsTransform( + ["--incremental", "--tsBuildInfoFile", ".cache/tsconfig.tsbuildinfo"], + projectDir + ); + + expect(output).toEqual(""); + expect(existsSync(path.join(projectDir, ".cache", "tsconfig.tsbuildinfo"))).toEqual(true); + }); + + test("can return the diagnostics for a project with errors", () => { + writeProject('export const value: number = "text";\n'); + + const output = tsTransform([], projectDir); + + expect(output).toContain("TS2322"); + }); + + test("can return the diagnostics for invalid command line arguments", () => { + writeProject("export const value = 1;\n"); + + const output = tsTransform(["--notAnOption"], projectDir); + + expect(output).toContain("TS5023"); + }); +}); diff --git a/packages/nameof-transformer/tests/tsconfig.json b/packages/nameof-transformer/tests/tsconfig.json index 44d8c8f8..8c65ca9b 100644 --- a/packages/nameof-transformer/tests/tsconfig.json +++ b/packages/nameof-transformer/tests/tsconfig.json @@ -1,8 +1,9 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", - "types": ["vitest/globals"] + "types": ["node", "vitest/globals"] }, "include": ["./**/*.ts"] } diff --git a/packages/nameof-transformer/tsconfig.json b/packages/nameof-transformer/tsconfig.json index 91076cb4..16749cdc 100644 --- a/packages/nameof-transformer/tsconfig.json +++ b/packages/nameof-transformer/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", @@ -16,7 +18,7 @@ "inlineSources": true, "declaration": true, "declarationDir": "dist/types", - "types": [], + "types": ["node"], "skipLibCheck": true }, "include": ["src/**/*.ts"] diff --git a/packages/nameof-transformer/vitest.config.ts b/packages/nameof-transformer/vitest.config.ts index 6d7e2ef0..47da9bcf 100644 --- a/packages/nameof-transformer/vitest.config.ts +++ b/packages/nameof-transformer/vitest.config.ts @@ -9,6 +9,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/packages/nameof-vitest-plugin/package.json b/packages/nameof-vitest-plugin/package.json index c2006312..9e363984 100644 --- a/packages/nameof-vitest-plugin/package.json +++ b/packages/nameof-vitest-plugin/package.json @@ -15,11 +15,11 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tsc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tsc", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tsc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tsc -p ./tests/tsconfig.json --noEmit", "validate-locales": "echo Can not perform locale validation on nameof-vitest-plugin package as the validate-locales package depends on nameof-vitest-plugin", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", diff --git a/packages/nameof-vitest-plugin/tests/tsconfig.json b/packages/nameof-vitest-plugin/tests/tsconfig.json index 44d8c8f8..32bbeccb 100644 --- a/packages/nameof-vitest-plugin/tests/tsconfig.json +++ b/packages/nameof-vitest-plugin/tests/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", "types": ["vitest/globals"] }, diff --git a/packages/nameof-vitest-plugin/tsconfig.json b/packages/nameof-vitest-plugin/tsconfig.json index 91076cb4..241be3d7 100644 --- a/packages/nameof-vitest-plugin/tsconfig.json +++ b/packages/nameof-vitest-plugin/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", diff --git a/packages/nameof-vitest-plugin/vitest.config.ts b/packages/nameof-vitest-plugin/vitest.config.ts index 6d7e2ef0..47da9bcf 100644 --- a/packages/nameof-vitest-plugin/vitest.config.ts +++ b/packages/nameof-vitest-plugin/vitest.config.ts @@ -9,6 +9,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/packages/nameof/package.json b/packages/nameof/package.json index 9210422a..7c541f77 100644 --- a/packages/nameof/package.json +++ b/packages/nameof/package.json @@ -15,11 +15,11 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tspc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tstransform", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tspc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tstransform -p ./tests/tsconfig.json", "validate-locales": "echo Can not perform locale validation on nameof package as the validate-locales package depends on nameof", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", @@ -34,7 +34,6 @@ "copyfiles": "2.4.1", "nodemon": "3.1.14", "rimraf": "6.1.3", - "ts-patch": "4.0.1", "typedoc": "0.28.20", "typedoc-plugin-markdown": "4.14.1", "typescript": "6.0.3", diff --git a/packages/nameof/tests/tsconfig.json b/packages/nameof/tests/tsconfig.json index 44d8c8f8..8f550b23 100644 --- a/packages/nameof/tests/tsconfig.json +++ b/packages/nameof/tests/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", "types": ["vitest/globals"] }, diff --git a/packages/nameof/tsconfig.json b/packages/nameof/tsconfig.json index d97632fa..9bfc0b78 100644 --- a/packages/nameof/tsconfig.json +++ b/packages/nameof/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", diff --git a/packages/nameof/vitest.config.ts b/packages/nameof/vitest.config.ts index 6d7e2ef0..47da9bcf 100644 --- a/packages/nameof/vitest.config.ts +++ b/packages/nameof/vitest.config.ts @@ -9,6 +9,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/packages/qr/package.json b/packages/qr/package.json index e738571d..97cdf88d 100644 --- a/packages/qr/package.json +++ b/packages/qr/package.json @@ -15,11 +15,11 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tspc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tstransform", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tspc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tstransform -p ./tests/tsconfig.json", "validate-locales": "validate-locales", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", @@ -41,7 +41,6 @@ "copyfiles": "2.4.1", "nodemon": "3.1.14", "rimraf": "6.1.3", - "ts-patch": "4.0.1", "typedoc": "0.28.20", "typedoc-plugin-markdown": "4.14.1", "typescript": "6.0.3", diff --git a/packages/qr/tests/tsconfig.json b/packages/qr/tests/tsconfig.json index 44d8c8f8..8f550b23 100644 --- a/packages/qr/tests/tsconfig.json +++ b/packages/qr/tests/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", "types": ["vitest/globals"] }, diff --git a/packages/qr/tsconfig.json b/packages/qr/tsconfig.json index d97632fa..9bfc0b78 100644 --- a/packages/qr/tsconfig.json +++ b/packages/qr/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", diff --git a/packages/qr/vitest.config.ts b/packages/qr/vitest.config.ts index 648402ee..9c5783dd 100644 --- a/packages/qr/vitest.config.ts +++ b/packages/qr/vitest.config.ts @@ -8,6 +8,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/packages/web/package.json b/packages/web/package.json index 64af20c5..180886c0 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -15,11 +15,11 @@ }, "scripts": { "clean": "rimraf dist coverage .cache", - "build": "tspc --incremental --tsBuildInfoFile .cache/tsconfig.tsbuildinfo", + "build": "tstransform", "dev": "nodemon --watch src --ext ts --exec \"pnpm run build\"", - "test": "vitest --run --config ./vitest.config.ts --no-cache", - "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache", - "test:build": "tspc -p ./tests/tsconfig.json --noEmit --incremental --tsBuildInfoFile .cache/tests.tsbuildinfo", + "test": "vitest --run --config ./vitest.config.ts", + "test:coverage": "vitest --run --coverage --config ./vitest.config.ts", + "test:build": "tstransform -p ./tests/tsconfig.json", "validate-locales": "validate-locales", "docs:clean": "rimraf docs/reference", "docs:generate": "typedoc --options typedoc.config.mjs", @@ -43,7 +43,6 @@ "copyfiles": "2.4.1", "nodemon": "3.1.14", "rimraf": "6.1.3", - "ts-patch": "4.0.1", "typedoc": "0.28.20", "typedoc-plugin-markdown": "4.14.1", "typescript": "6.0.3", diff --git a/packages/web/tests/tsconfig.json b/packages/web/tests/tsconfig.json index 820a7c3f..29bcd4d0 100644 --- a/packages/web/tests/tsconfig.json +++ b/packages/web/tests/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "../.cache/tests.tsbuildinfo", "rootDir": "..", "types": ["node", "vitest/globals"] }, diff --git a/packages/web/tsconfig.json b/packages/web/tsconfig.json index 75bd95c6..a8a4cec5 100644 --- a/packages/web/tsconfig.json +++ b/packages/web/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", "module": "nodenext", "moduleResolution": "nodenext", "target": "ES2022", diff --git a/packages/web/vitest.config.ts b/packages/web/vitest.config.ts index 648402ee..9c5783dd 100644 --- a/packages/web/vitest.config.ts +++ b/packages/web/vitest.config.ts @@ -8,6 +8,7 @@ export default defineConfig({ test: { include: ["./tests/**/*.spec.ts"], globals: true, + cache: false, testTimeout: 300000, hookTimeout: 300000, bail: 1, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 623aa323..85c7d46a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -287,9 +287,6 @@ importers: rimraf: specifier: 6.1.3 version: 6.1.3 - ts-patch: - specifier: 4.0.1 - version: 4.0.1 typedoc: specifier: 0.28.20 version: 0.28.20(typescript@6.0.3) @@ -345,9 +342,6 @@ importers: rimraf: specifier: 6.1.3 version: 6.1.3 - ts-patch: - specifier: 4.0.1 - version: 4.0.1 tsx: specifier: 4.23.15 version: 4.23.15 @@ -412,9 +406,6 @@ importers: rimraf: specifier: 6.1.3 version: 6.1.3 - ts-patch: - specifier: 4.0.1 - version: 4.0.1 tsx: specifier: 4.23.15 version: 4.23.15 @@ -470,9 +461,6 @@ importers: rimraf: specifier: 6.1.3 version: 6.1.3 - ts-patch: - specifier: 4.0.1 - version: 4.0.1 tsx: specifier: 4.23.15 version: 4.23.15 @@ -525,9 +513,6 @@ importers: rimraf: specifier: 6.1.3 version: 6.1.3 - ts-patch: - specifier: 4.0.1 - version: 4.0.1 typedoc: specifier: 0.28.20 version: 0.28.20(typescript@6.0.3) @@ -577,9 +562,6 @@ importers: rimraf: specifier: 6.1.3 version: 6.1.3 - ts-patch: - specifier: 4.0.1 - version: 4.0.1 tsx: specifier: 4.23.15 version: 4.23.15 @@ -653,9 +635,6 @@ importers: rimraf: specifier: 6.1.3 version: 6.1.3 - ts-patch: - specifier: 4.0.1 - version: 4.0.1 typedoc: specifier: 0.28.20 version: 0.28.20(typescript@6.0.3) @@ -708,9 +687,6 @@ importers: rimraf: specifier: 6.1.3 version: 6.1.3 - ts-patch: - specifier: 4.0.1 - version: 4.0.1 typedoc: specifier: 0.28.20 version: 0.28.20(typescript@6.0.3) @@ -757,9 +733,6 @@ importers: rimraf: specifier: 6.1.3 version: 6.1.3 - ts-patch: - specifier: 4.0.1 - version: 4.0.1 typedoc: specifier: 0.28.20 version: 0.28.20(typescript@6.0.3) @@ -815,9 +788,6 @@ importers: rimraf: specifier: 6.1.3 version: 6.1.3 - ts-patch: - specifier: 4.0.1 - version: 4.0.1 typedoc: specifier: 0.28.20 version: 0.28.20(typescript@6.0.3) @@ -851,9 +821,6 @@ importers: rimraf: specifier: 6.1.3 version: 6.1.3 - ts-patch: - specifier: 4.0.1 - version: 4.0.1 typedoc: specifier: 0.28.20 version: 0.28.20(typescript@6.0.3) @@ -872,7 +839,13 @@ importers: typescript: specifier: 6.0.3 version: 6.0.3 + typescript-native: + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta devDependencies: + '@types/node': + specifier: 26.6.5 + version: 26.6.5 '@vitest/coverage-v8': specifier: 5.0.5 version: 5.0.5(vitest@5.0.5) @@ -968,9 +941,6 @@ importers: rimraf: specifier: 6.1.3 version: 6.1.3 - ts-patch: - specifier: 4.0.1 - version: 4.0.1 typedoc: specifier: 0.28.20 version: 0.28.20(typescript@6.0.3) @@ -1026,9 +996,6 @@ importers: rimraf: specifier: 6.1.3 version: 6.1.3 - ts-patch: - specifier: 4.0.1 - version: 4.0.1 typedoc: specifier: 0.28.20 version: 0.28.20(typescript@6.0.3) @@ -2044,6 +2011,132 @@ packages: resolution: {integrity: sha512-E2mroviasaWecDzTGiGMtuEguuLVOeRggnrIn93CJuxYJzQBHbyymlT08aVQydbBal5538o+JkBKXh2sRuCyIA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript/typescript-aix-ppc64@7.1.0-beta': + resolution: {integrity: sha512-DXDG+jIWxBHGdoO70tcHON33rCnSzsEZj9P13oyf/r/KEGIo6awsdSNVNjAw0uMwEpqRu75IrgCcW58YcVkZHg==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] + + '@typescript/typescript-android-arm64@7.1.0-beta': + resolution: {integrity: sha512-UZx6PxoQavuvaVTrSf3aw0Oy/J/uJpRylipA0kzc038jMvZXh0UtE8vnQp20FqtdgD5bhXZ0aJrRJyoTSUO58Q==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [android] + + '@typescript/typescript-darwin-arm64@7.1.0-beta': + resolution: {integrity: sha512-q7mxblcyX0E7hXsY4k+Q6KWKK5mGmfVq+BDesdTgRVgjodk27aIxER77Zyj9+TgSTlCje8F7+JM6f6hl2BuNdw==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] + + '@typescript/typescript-darwin-x64@7.1.0-beta': + resolution: {integrity: sha512-D5EYqG5Wm/guw9+0j8+Mn1Jbr/gfS/VtFTuoH8PJtFbcqeDaQGMulc7SW8q51QG6Y3wGOGX3nbsTOw6fIKWWAA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [darwin] + + '@typescript/typescript-freebsd-arm64@7.1.0-beta': + resolution: {integrity: sha512-9A0XX0tcnH9qPdolSKKzSjTb93dlB0UEcAJbHYEsrFX2fkFNSum9+dvkQQJ9vLc+7vxHetDPujq9Qe6wx+Xhow==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] + + '@typescript/typescript-freebsd-x64@7.1.0-beta': + resolution: {integrity: sha512-EDf/dBHfY0TxX3NmUTek0hbffeyZlh3+ls6WQW3ICB8vYxwYLFnzg7wkgEUvl9eRlpiJ/nmc2S8arPMzINJ7rg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] + + '@typescript/typescript-linux-arm64@7.1.0-beta': + resolution: {integrity: sha512-hNqQBgQ5b5oGqN76QqbAU6CwYhJZ6iOcWc2kPTUs2OentgpxZktETziH6KIyRFJPaiBncognwn2ZLu3DNhHiWw==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [linux] + + '@typescript/typescript-linux-arm@7.1.0-beta': + resolution: {integrity: sha512-AvN9HmzOQh46G4312ooSgMHhbB7DtnLwg8D9mo324X49B7weMwtJrBG1MxT9IyI8kzDd7YRtW+1hWGun7WG7Qw==} + engines: {node: '>=16.20.0'} + cpu: [arm] + os: [linux] + + '@typescript/typescript-linux-loong64@7.1.0-beta': + resolution: {integrity: sha512-xbUustlBrFflt2pNEyG5ye+d4WGPc/rfr2xK29MXeobPSw297JqwuKRrvbKM5o3fE/eUM/c+urVm6jQ3IaMVTw==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] + + '@typescript/typescript-linux-mips64el@7.1.0-beta': + resolution: {integrity: sha512-fS4/G7/0bXZ3NSq3nBMAXyg65I3tO4S7j08VNQ2g1aNC/qq79gE7Qne1BNjVsjMFfHBVBFjQYoTQCjmVU2iFlg==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] + + '@typescript/typescript-linux-ppc64@7.1.0-beta': + resolution: {integrity: sha512-0upCCxYPX8X6gOwkvfv+Ee7/ufyy7k97mTrGE0e5BxLlnUEa+w+rtgnv2dsKcxFdwdeZYVlZKCqgN/xCBV08+A==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] + + '@typescript/typescript-linux-riscv64@7.1.0-beta': + resolution: {integrity: sha512-0jKU9YRgOPRgiy5V/UWv37kB53PaTpIbwGCbbOMUPPAkrjVRNOIAJaz7Wa7s3H7mdDebX1LopUEPEJR+7Xa7zg==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] + + '@typescript/typescript-linux-s390x@7.1.0-beta': + resolution: {integrity: sha512-j+d04s2kxaPQh6DLPb01sknAQfzsrdSZy15jBRHyLEZoaaQ19dVjbFRlkNVvYwUG7ZdP8+y5b/7RmPxdtHUKdQ==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] + + '@typescript/typescript-linux-x64@7.1.0-beta': + resolution: {integrity: sha512-kcD51ihf+pnI5KT4uQQYG04OpwznaZYBlIQhDhl8fflFd27NktxXsUeguxZyvUMyWfum7IF2bBS6Jv7ox0AgFQ==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] + + '@typescript/typescript-netbsd-arm64@7.1.0-beta': + resolution: {integrity: sha512-8W85YyoGK+rgGoSU9jJQUpELbrKcZcbdJk2jPNQ6UKDKI7ryPlPFTrV2jCE5RQuv4Tt96hMDTc33s4YfRrLFBA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] + + '@typescript/typescript-netbsd-x64@7.1.0-beta': + resolution: {integrity: sha512-iGsTE0ve2PG0AcyZinwAR0LnGEZhu/y4dceS0hZsYCaKdYETvQtvtlNWlmYKempsBr6C7Il7dMXHVk+VFm9u0g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [netbsd] + + '@typescript/typescript-openbsd-arm64@7.1.0-beta': + resolution: {integrity: sha512-Z2FERdHB9fAKI+KGqdWn04O7uNlnB+VYiEm6INE1aZuzzLNd3KBqQ6IpKUJF2ny4GigGU6nVu75XD9tAUODPng==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] + + '@typescript/typescript-openbsd-x64@7.1.0-beta': + resolution: {integrity: sha512-NVG3qeyCq/rJEOhaRjR3LsWgjrjo5vJW25omVLeHAVnpKIG4pE4cenwwKGR06DiJ1s0QTOymcJeKXMEpsiNBVg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] + + '@typescript/typescript-sunos-x64@7.1.0-beta': + resolution: {integrity: sha512-ovAdoWXEn2B5/fyWG69pLU3FWmQwPWOjQV5TFbcxtpnOv+R3g8ySGHl1NYRq7Lb/GYdFDvaGcZ+SiU7iKuiMsA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.1.0-beta': + resolution: {integrity: sha512-lJbo71IEOfL7ZZIZnArRaOLqjn9BAfoSzyUQn0aSjfSpDZL4ru0afUsdBfo6PQEjD6ssdmi0n/RwaPADX6bsvQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [win32] + + '@typescript/typescript-win32-x64@7.1.0-beta': + resolution: {integrity: sha512-UKcHvbybY2tDTvFW2b1vwiAvDlIRooo69lh8CXWVhOQejcvpM5+IgbiFW9EIwR5Wi5X/v+BdN7gdWbigBuJ3rw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [win32] + '@unrs/resolver-binding-android-arm-eabi@1.12.2': resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} cpu: [arm] @@ -2903,10 +2996,6 @@ packages: resolution: {integrity: sha512-1pgFdhK3J2LeM+dVf2Pd424yHx2ou338lC0ErNP2hPx4j8eW1Sp0XqSjNxtk6Tc4Kr5wlWtSvz8cn2yb7/SG/w==} engines: {node: '>=20'} - global-prefix@4.0.0: - resolution: {integrity: sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==} - engines: {node: '>=16'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -3017,10 +3106,6 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@4.1.3: - resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ini@6.0.0: resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} engines: {node: ^20.17.0 || >=22.9.0} @@ -3100,10 +3185,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isexe@3.1.5: - resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} - engines: {node: '>=18'} - jiti@2.7.0: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true @@ -3935,11 +4016,6 @@ packages: peerDependencies: typescript: '>=4.8.4' - ts-patch@4.0.1: - resolution: {integrity: sha512-pzXS6vZlsBwq3U+CUiPJfCAh0MJGco1j1C8bWsLgvtzDZLGZ7II1Usjtwm09mZ8Uoma+sg6sO3BlWHd6apCUww==} - engines: {node: '>=22.15.0'} - hasBin: true - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -3991,6 +4067,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@7.1.0-beta: + resolution: {integrity: sha512-cjWjZAJDsmZzsNC5GwHNlW0YPM65jZa5oR0KyQcYX3KSVIfTvtBq//vewISyatKk4OLi5grZjHhIVE9fdrw1UQ==} + engines: {node: '>=16.20.0'} + hasBin: true + uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} @@ -4145,11 +4226,6 @@ packages: engines: {node: '>= 8'} hasBin: true - which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true - why-is-node-running@3.2.1: resolution: {integrity: sha512-Tb2FUhB4vUsGQlfSquQLYkApkuPAFQXGFzxWKHHumVz2dK+X1RUm/HnID4+TfIGYJ1kTcwOaCk/buYCEJr6YjQ==} engines: {node: '>=20.11'} @@ -5172,6 +5248,69 @@ snapshots: '@typescript-eslint/types': 8.72.0 eslint-visitor-keys: 5.0.1 + '@typescript/typescript-aix-ppc64@7.1.0-beta': + optional: true + + '@typescript/typescript-android-arm64@7.1.0-beta': + optional: true + + '@typescript/typescript-darwin-arm64@7.1.0-beta': + optional: true + + '@typescript/typescript-darwin-x64@7.1.0-beta': + optional: true + + '@typescript/typescript-freebsd-arm64@7.1.0-beta': + optional: true + + '@typescript/typescript-freebsd-x64@7.1.0-beta': + optional: true + + '@typescript/typescript-linux-arm64@7.1.0-beta': + optional: true + + '@typescript/typescript-linux-arm@7.1.0-beta': + optional: true + + '@typescript/typescript-linux-loong64@7.1.0-beta': + optional: true + + '@typescript/typescript-linux-mips64el@7.1.0-beta': + optional: true + + '@typescript/typescript-linux-ppc64@7.1.0-beta': + optional: true + + '@typescript/typescript-linux-riscv64@7.1.0-beta': + optional: true + + '@typescript/typescript-linux-s390x@7.1.0-beta': + optional: true + + '@typescript/typescript-linux-x64@7.1.0-beta': + optional: true + + '@typescript/typescript-netbsd-arm64@7.1.0-beta': + optional: true + + '@typescript/typescript-netbsd-x64@7.1.0-beta': + optional: true + + '@typescript/typescript-openbsd-arm64@7.1.0-beta': + optional: true + + '@typescript/typescript-openbsd-x64@7.1.0-beta': + optional: true + + '@typescript/typescript-sunos-x64@7.1.0-beta': + optional: true + + '@typescript/typescript-win32-arm64@7.1.0-beta': + optional: true + + '@typescript/typescript-win32-x64@7.1.0-beta': + optional: true + '@unrs/resolver-binding-android-arm-eabi@1.12.2': optional: true @@ -6071,12 +6210,6 @@ snapshots: dependencies: ini: 6.0.0 - global-prefix@4.0.0: - dependencies: - ini: 4.1.3 - kind-of: 6.0.3 - which: 4.0.0 - globals@14.0.0: {} globals@17.13.0: {} @@ -6174,8 +6307,6 @@ snapshots: inherits@2.0.4: {} - ini@4.1.3: {} - ini@6.0.0: {} intl-messageformat@12.1.4: @@ -6234,8 +6365,6 @@ snapshots: isexe@2.0.0: {} - isexe@3.1.5: {} - jiti@2.7.0: {} jose@6.2.12: {} @@ -7182,15 +7311,6 @@ snapshots: dependencies: typescript: 6.0.3 - ts-patch@4.0.1: - dependencies: - chalk: 4.1.2 - global-prefix: 4.0.0 - minimist: 1.2.8 - resolve: 1.22.13 - semver: 7.8.5 - strip-ansi: 6.0.1 - tslib@2.8.1: {} tsx@4.23.15: @@ -7228,6 +7348,30 @@ snapshots: typescript@6.0.3: {} + typescript@7.1.0-beta: + optionalDependencies: + '@typescript/typescript-aix-ppc64': 7.1.0-beta + '@typescript/typescript-android-arm64': 7.1.0-beta + '@typescript/typescript-darwin-arm64': 7.1.0-beta + '@typescript/typescript-darwin-x64': 7.1.0-beta + '@typescript/typescript-freebsd-arm64': 7.1.0-beta + '@typescript/typescript-freebsd-x64': 7.1.0-beta + '@typescript/typescript-linux-arm': 7.1.0-beta + '@typescript/typescript-linux-arm64': 7.1.0-beta + '@typescript/typescript-linux-loong64': 7.1.0-beta + '@typescript/typescript-linux-mips64el': 7.1.0-beta + '@typescript/typescript-linux-ppc64': 7.1.0-beta + '@typescript/typescript-linux-riscv64': 7.1.0-beta + '@typescript/typescript-linux-s390x': 7.1.0-beta + '@typescript/typescript-linux-x64': 7.1.0-beta + '@typescript/typescript-netbsd-arm64': 7.1.0-beta + '@typescript/typescript-netbsd-x64': 7.1.0-beta + '@typescript/typescript-openbsd-arm64': 7.1.0-beta + '@typescript/typescript-openbsd-x64': 7.1.0-beta + '@typescript/typescript-sunos-x64': 7.1.0-beta + '@typescript/typescript-win32-arm64': 7.1.0-beta + '@typescript/typescript-win32-x64': 7.1.0-beta + uc.micro@2.1.0: {} uc.micro@3.0.0: {} @@ -7386,10 +7530,6 @@ snapshots: dependencies: isexe: 2.0.0 - which@4.0.0: - dependencies: - isexe: 3.1.5 - why-is-node-running@3.2.1: {} word-wrap@1.2.5: {}