diff --git a/README.md b/README.md index 38ae247..a3beec9 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![MIT License](https://img.shields.io/github/license/checkdigit/typescript-config)](https://github.com/checkdigit/typescript-config/blob/master/LICENSE.txt) -Copyright © 2021–2025 [Check Digit, LLC](https://checkdigit.com) +Copyright © 2021–2026 [Check Digit, LLC](https://checkdigit.com) ## Introduction diff --git a/eslint.config.mjs b/eslint.config.mjs deleted file mode 100644 index 85c5040..0000000 --- a/eslint.config.mjs +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Copyright (c) 2021-2025 Check Digit, LLC - * - * This code is licensed under the MIT license (see LICENSE.txt for details). - */ - -import { promises as fs } from 'node:fs'; - -import ts from 'typescript-eslint'; -import js from '@eslint/js'; -import prettier from 'eslint-config-prettier'; -import json from '@eslint/json'; -import markdown from '@eslint/markdown'; -import yaml from 'eslint-plugin-yml'; - -const ignores = [ - ...(await fs.readFile('.gitignore', 'utf-8')) - .split('\n') - .filter((path) => path.trim() !== ''), - 'eslint.config.mjs', -]; - -const tsConfigurations = [ - js.configs.all, - ...ts.configs.strictTypeChecked, - ...ts.configs.stylisticTypeChecked, - prettier, - { - languageOptions: { - parser: ts.parser, - ecmaVersion: 'latest', - sourceType: 'module', - parserOptions: { - projectService: true, - }, - }, - settings: { - 'import/resolver': { - typescript: true, - node: true, - }, - }, - rules: { - 'no-shadow': 'off', - '@typescript-eslint/strict-boolean-expressions': 'error', - '@typescript-eslint/no-shadow': 'error', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - varsIgnorePattern: '^_', - argsIgnorePattern: '^_', - }, - ], - - 'no-underscore-dangle': 'off', - 'no-useless-constructor': 'off', - '@typescript-eslint/no-useless-constructor': ['error'], - 'func-names': 'off', - - // Per require-await docs: - // If you are throwing an error inside an asynchronous function for this purpose, then you may want to disable this rule. - 'require-await': 'off', - '@typescript-eslint/require-await': 'off', - - // enforce use of curly braces around if statements and discourage one-line ifs - curly: 'error', - - // undefined can be used - 'no-undefined': 'off', - - 'sort-imports': [ - 'error', - { - ignoreCase: true, - ignoreDeclarationSort: true, - }, - ], - - 'spaced-comment': 'error', - 'no-var': 'error', - 'prefer-const': 'error', - 'prefer-rest-params': 'error', - 'prefer-spread': 'error', - 'require-yield': 'error', - 'no-console': 'error', - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'error', - '@typescript-eslint/ban-ts-comment': 'error', - '@typescript-eslint/no-floating-promises': 'error', - '@typescript-eslint/no-require-imports': 'error', - - // sometimes fails on valid interface names like ISO8583 - '@typescript-eslint/interface-name-prefix': 'off', - - // typeof any === "evil". - '@typescript-eslint/no-explicit-any': 'error', - - // eslint:all rules to modify - 'one-var': 'off', - 'default-case': 'off', - 'sort-keys': 'off', - 'capitalized-comments': 'off', - - 'func-style': [ - 'error', - 'declaration', - { - allowArrowFunctions: true, - }, - ], - - 'multiline-comment-style': 'off', - - 'no-magic-numbers': [ - 'error', - { - ignore: [ - -1, - 0, - 1, - 2, - 4, - 7, - 8, - 10, - 12, - 16, - 24, - 30, - 31, - 32, - 60, - 64, - 128, - 256, - 512, - 1000, - 1024, - 2048, - 4096, - 8192, - 16_384, - 32_768, - 65_536, - '-1n', - '0n', - '1n', - '2n', - '4n', - '7n', - '8n', - '10n', - '12n', - '16n', - '24n', - '30n', - '31n', - '32n', - '60n', - '64n', - '128n', - '256n', - '512n', - '1000n', - '1024n', - '2048n', - '4096n', - '8192n', - '16384n', - '32768n', - '65536n', - ], - }, - ], - - 'no-ternary': 'off', - - // this should use the default (3) but would currently cause too much pain - 'max-params': ['error', 8], - - // this should be turned on if the ignoreTopLevelFunctions option starts working - 'max-statements': 'off', - 'consistent-return': 'off', - 'init-declarations': 'off', - 'no-inline-comments': 'off', - 'line-comment-position': 'off', - 'prefer-destructuring': 'off', - - // thanks to Prettier, we don't rely on automatic semicolon insertion, so this can remain off - 'no-plusplus': 'off', - - 'max-lines': [ - 'error', - { - max: 500, - skipBlankLines: true, - skipComments: true, - }, - ], - - 'id-length': 'off', - - 'new-cap': [ - 'error', - { - capIsNew: false, - }, - ], - - 'dot-notation': 'off', - - // having this restriction for number/boolean literals forces unnecessary changes - '@typescript-eslint/restrict-template-expressions': [ - 'error', - { - allowNumber: true, - allowBoolean: true, - }, - ], - - // we are seriously using many new features such as fetch, etc. - 'n/no-unsupported-features/node-builtins': 'off', - }, - }, - { - files: ['**/*.spec.ts', '**/*.test.ts'], - rules: { - '@typescript-eslint/no-base-to-string': 'off', - '@typescript-eslint/no-unsafe-argument': 'off', - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/no-unsafe-return': 'off', - '@typescript-eslint/restrict-template-expressions': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/no-non-null-asserted-optional-chain': 'off', - '@typescript-eslint/no-confusing-void-expression': 'off', - '@typescript-eslint/strict-boolean-expressions': 'off', - '@typescript-eslint/unbound-method': 'off', - '@typescript-eslint/no-floating-promises': [ - 'error', - { - allowForKnownSafeCalls: [ - { - from: 'package', - name: [ - 'after', - 'afterEach', - 'before', - 'beforeEach', - 'describe', - 'describe.only', - 'describe.skip', - 'describe.todo', - 'it', - 'it.only', - 'it.skip', - 'it.todo', - 'suite', - 'suite.only', - 'suite.skip', - 'suite.todo', - 'test', - 'test.only', - 'test.skip', - 'test.todo', - ], - package: 'node:test', - }, - ], - }, - ], - 'import/no-extraneous-dependencies': 'off', - 'n/no-process-env': 'off', - 'max-lines': 'off', - 'max-lines-per-function': 'off', - 'max-statements': 'off', - 'no-await-in-loop': 'off', - 'no-magic-numbers': 'off', - 'no-undefined': 'off', - 'prefer-promise-reject-errors': 'off', - 'require-yield': 'off', - }, - }, - { - files: ['src/test/**/*.ts'], - rules: { - 'no-constant-condition': 'off', - 'no-constant-binary-expression': 'off', - 'no-param-reassign': 'off', - 'no-useless-return': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-unnecessary-condition': 'off', - '@typescript-eslint/no-unnecessary-type-parameters': 'off', - }, - }, -].map((config) => ({ - ...config, - files: config.files ?? ['**/*.ts'], -})); - -const jsonConfigurations = [ - { - ignores: ['package-lock.json'], - language: 'json/json', - ...json.configs.recommended, - }, -].map((config) => ({ - ...config, - files: config.files ?? ['**/*.json'], -})); - -const yamlConfigurations = yaml.configs['flat/recommended'].map((config) => ({ - ...config, - files: config.files ?? ['**/*.yml', '**/*.yaml'], -})); - -const markdownConfigurations = markdown.configs.recommended.map((config) => ({ - ...config, - files: config.files ?? ['**/*.md'], -})); - -export default [ - { ignores }, - { - linterOptions: { - reportUnusedDisableDirectives: 'error', - }, - }, - ...tsConfigurations, - ...markdownConfigurations, - ...jsonConfigurations, - ...yamlConfigurations, -]; diff --git a/eslint.config.ts b/eslint.config.ts new file mode 100644 index 0000000..a9cab09 --- /dev/null +++ b/eslint.config.ts @@ -0,0 +1,343 @@ +/* + * Copyright (c) 2021-2025 Check Digit, LLC + * + * This code is licensed under the MIT license (see LICENSE.txt for details). + */ + +import { promises as fs } from 'node:fs'; + +import type { Linter } from 'eslint'; +import ts from 'typescript-eslint'; +import js from '@eslint/js'; +import prettier from 'eslint-config-prettier'; +import json from '@eslint/json'; +import markdown from '@eslint/markdown'; +import yaml from 'eslint-plugin-yml'; + +const ignores = [ + ...(await fs.readFile('.gitignore', 'utf-8')) + .split('\n') + .filter((path) => path.trim() !== ''), + 'eslint.config.ts', +]; + +const tsConfigurations = ( + [ + js.configs.all, + ...(ts.configs.strictTypeChecked as Linter.Config[]), + ...(ts.configs.stylisticTypeChecked as Linter.Config[]), + prettier, + { + languageOptions: { + parser: ts.parser, + ecmaVersion: 'latest', + sourceType: 'module', + parserOptions: { + projectService: true, + }, + }, + settings: { + 'import/resolver': { + typescript: true, + node: true, + }, + }, + rules: { + 'no-shadow': 'off', + '@typescript-eslint/strict-boolean-expressions': 'error', + '@typescript-eslint/no-shadow': 'error', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + varsIgnorePattern: '^_', + argsIgnorePattern: '^_', + }, + ], + + 'no-underscore-dangle': 'off', + 'no-useless-constructor': 'off', + '@typescript-eslint/no-useless-constructor': ['error'], + 'func-names': 'off', + + // Per require-await docs: + // If you are throwing an error inside an asynchronous function for this purpose, then you may want to disable this rule. + 'require-await': 'off', + '@typescript-eslint/require-await': 'off', + + // enforce use of curly braces around if statements and discourage one-line ifs + curly: 'error', + + // undefined can be used + 'no-undefined': 'off', + + 'sort-imports': [ + 'error', + { + ignoreCase: true, + ignoreDeclarationSort: true, + }, + ], + + 'spaced-comment': 'error', + 'no-var': 'error', + 'prefer-const': 'error', + 'prefer-rest-params': 'error', + 'prefer-spread': 'error', + 'require-yield': 'error', + 'no-console': 'error', + 'no-return-await': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'error', + '@typescript-eslint/ban-ts-comment': 'error', + '@typescript-eslint/no-floating-promises': 'error', + '@typescript-eslint/no-require-imports': 'error', + + // sometimes fails on valid interface names like ISO8583 + '@typescript-eslint/interface-name-prefix': 'off', + + // typeof any === "evil". + '@typescript-eslint/no-explicit-any': 'error', + + // eslint:all rules to modify + 'one-var': 'off', + 'default-case': 'off', + 'sort-keys': 'off', + 'capitalized-comments': 'off', + + 'func-style': [ + 'error', + 'declaration', + { + allowArrowFunctions: true, + }, + ], + + 'multiline-comment-style': 'off', + + 'no-magic-numbers': [ + 'error', + { + ignore: [ + -1, + 0, + 1, + 2, + 4, + 7, + 8, + 10, + 12, + 16, + 24, + 30, + 31, + 32, + 60, + 64, + 128, + 256, + 512, + 1000, + 1024, + 2048, + 4096, + 8192, + 16_384, + 32_768, + 65_536, + '-1n', + '0n', + '1n', + '2n', + '4n', + '7n', + '8n', + '10n', + '12n', + '16n', + '24n', + '30n', + '31n', + '32n', + '60n', + '64n', + '128n', + '256n', + '512n', + '1000n', + '1024n', + '2048n', + '4096n', + '8192n', + '16384n', + '32768n', + '65536n', + ], + }, + ], + + 'no-ternary': 'off', + + // this should use the default (3) but would currently cause too much pain + 'max-params': ['error', 8], + + // this should be turned on if the ignoreTopLevelFunctions option starts working + 'max-statements': 'off', + 'consistent-return': 'off', + 'init-declarations': 'off', + 'no-inline-comments': 'off', + 'line-comment-position': 'off', + 'prefer-destructuring': 'off', + + // thanks to Prettier, we don't rely on automatic semicolon insertion, so this can remain off + 'no-plusplus': 'off', + + 'max-lines': [ + 'error', + { + max: 500, + skipBlankLines: true, + skipComments: true, + }, + ], + + 'id-length': 'off', + + 'new-cap': [ + 'error', + { + capIsNew: false, + }, + ], + + 'dot-notation': 'off', + + // having this restriction for number/boolean literals forces unnecessary changes + '@typescript-eslint/restrict-template-expressions': [ + 'error', + { + allowNumber: true, + allowBoolean: true, + }, + ], + + // we are seriously using many new features such as fetch, etc. + 'n/no-unsupported-features/node-builtins': 'off', + }, + }, + { + files: ['**/*.spec.ts', '**/*.test.ts'], + rules: { + '@typescript-eslint/no-base-to-string': 'off', + '@typescript-eslint/no-unsafe-argument': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-return': 'off', + '@typescript-eslint/restrict-template-expressions': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-non-null-asserted-optional-chain': 'off', + '@typescript-eslint/no-confusing-void-expression': 'off', + '@typescript-eslint/strict-boolean-expressions': 'off', + '@typescript-eslint/unbound-method': 'off', + '@typescript-eslint/no-floating-promises': [ + 'error', + { + allowForKnownSafeCalls: [ + { + from: 'package', + name: [ + 'after', + 'afterEach', + 'before', + 'beforeEach', + 'describe', + 'describe.only', + 'describe.skip', + 'describe.todo', + 'it', + 'it.only', + 'it.skip', + 'it.todo', + 'suite', + 'suite.only', + 'suite.skip', + 'suite.todo', + 'test', + 'test.only', + 'test.skip', + 'test.todo', + ], + package: 'node:test', + }, + ], + }, + ], + 'import/no-extraneous-dependencies': 'off', + 'n/no-process-env': 'off', + 'max-lines': 'off', + 'max-lines-per-function': 'off', + 'max-statements': 'off', + 'no-await-in-loop': 'off', + 'no-magic-numbers': 'off', + 'no-undefined': 'off', + 'prefer-promise-reject-errors': 'off', + 'require-yield': 'off', + }, + }, + { + files: ['src/test/**/*.ts'], + rules: { + 'no-constant-condition': 'off', + 'no-constant-binary-expression': 'off', + 'no-param-reassign': 'off', + 'no-useless-return': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unnecessary-condition': 'off', + '@typescript-eslint/no-unnecessary-type-parameters': 'off', + }, + }, + ] as Linter.Config[] +).map((config) => ({ + ...config, + files: config.files ?? ['**/*.ts'], +})); + +const jsonConfigurations = ( + [ + { + ignores: ['package-lock.json'], + language: 'json/json', + ...json.configs.recommended, + }, + ] as Linter.Config[] +).map((config) => ({ + ...config, + files: config.files ?? ['**/*.json'], +})); + +const yamlConfigurations = ( + yaml.configs['flat/recommended'] as Linter.Config[] +).map((config) => ({ + ...config, + files: config.files ?? ['**/*.yml', '**/*.yaml'], +})); + +const markdownConfigurations = markdown.configs.recommended.map((config) => ({ + ...config, + files: config.files ?? ['**/*.md'], +})); + +export default [ + { ignores }, + { + linterOptions: { + reportUnusedDisableDirectives: 'error', + }, + }, + ...tsConfigurations, + ...markdownConfigurations, + ...jsonConfigurations, + ...yamlConfigurations, +] as Linter.Config[]; diff --git a/package-lock.json b/package-lock.json index 486368a..86a9352 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,16 @@ { "name": "@checkdigit/typescript-config", - "version": "10.0.0", + "version": "11.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@checkdigit/typescript-config", - "version": "10.0.0", + "version": "11.0.0", "license": "MIT", "bin": { - "builder": "bin/builder.mjs" + "builder": "bin/builder.mjs", + "tsc": "node_modules/.bin/tscgo" }, "devDependencies": { "@checkdigit/prettier-config": "^7.1.2", @@ -19,7 +20,8 @@ "eslint": "^9.39.1", "eslint-config-prettier": "^10.1.8", "eslint-plugin-yml": "^1.19.0", - "rimraf": "^6.1.0", + "jiti": "^2.6.1", + "rimraf": "^6.1.2", "typescript-eslint": "^8.47.0" }, "engines": { @@ -28,6 +30,7 @@ "peerDependencies": { "@swc-node/register": "1.11.1", "@types/node": ">=24", + "@typescript/native-preview": "^7.0.0-dev.20251120.1", "esbuild": "0.27.0", "typescript": ">=5.9.3 <6" } @@ -766,24 +769,6 @@ "node": "20 || >=22" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -1518,9 +1503,9 @@ } }, "node_modules/@swc/core": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.2.tgz", - "integrity": "sha512-OQm+yJdXxvSjqGeaWhP6Ia264ogifwAO7Q12uTDVYj/Ks4jBTI4JknlcjDRAXtRhqbWsfbZyK/5RtuIPyptk3w==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.3.tgz", + "integrity": "sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q==", "hasInstallScript": true, "license": "Apache-2.0", "peer": true, @@ -1536,16 +1521,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.15.2", - "@swc/core-darwin-x64": "1.15.2", - "@swc/core-linux-arm-gnueabihf": "1.15.2", - "@swc/core-linux-arm64-gnu": "1.15.2", - "@swc/core-linux-arm64-musl": "1.15.2", - "@swc/core-linux-x64-gnu": "1.15.2", - "@swc/core-linux-x64-musl": "1.15.2", - "@swc/core-win32-arm64-msvc": "1.15.2", - "@swc/core-win32-ia32-msvc": "1.15.2", - "@swc/core-win32-x64-msvc": "1.15.2" + "@swc/core-darwin-arm64": "1.15.3", + "@swc/core-darwin-x64": "1.15.3", + "@swc/core-linux-arm-gnueabihf": "1.15.3", + "@swc/core-linux-arm64-gnu": "1.15.3", + "@swc/core-linux-arm64-musl": "1.15.3", + "@swc/core-linux-x64-gnu": "1.15.3", + "@swc/core-linux-x64-musl": "1.15.3", + "@swc/core-win32-arm64-msvc": "1.15.3", + "@swc/core-win32-ia32-msvc": "1.15.3", + "@swc/core-win32-x64-msvc": "1.15.3" }, "peerDependencies": { "@swc/helpers": ">=0.5.17" @@ -1557,9 +1542,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.2.tgz", - "integrity": "sha512-Ghyz4RJv4zyXzrUC1B2MLQBbppIB5c4jMZJybX2ebdEQAvryEKp3gq1kBksCNsatKGmEgXul88SETU19sMWcrw==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.3.tgz", + "integrity": "sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==", "cpu": [ "arm64" ], @@ -1573,9 +1558,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.2.tgz", - "integrity": "sha512-7n/PGJOcL2QoptzL42L5xFFfXY5rFxLHnuz1foU+4ruUTG8x2IebGhtwVTpaDN8ShEv2UZObBlT1rrXTba15Zw==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.3.tgz", + "integrity": "sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A==", "cpu": [ "x64" ], @@ -1589,9 +1574,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.2.tgz", - "integrity": "sha512-ZUQVCfRJ9wimuxkStRSlLwqX4TEDmv6/J+E6FicGkQ6ssLMWoKDy0cAo93HiWt/TWEee5vFhFaSQYzCuBEGO6A==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.3.tgz", + "integrity": "sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg==", "cpu": [ "arm" ], @@ -1605,9 +1590,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.2.tgz", - "integrity": "sha512-GZh3pYBmfnpQ+JIg+TqLuz+pM+Mjsk5VOzi8nwKn/m+GvQBsxD5ectRtxuWUxMGNG8h0lMy4SnHRqdK3/iJl7A==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.3.tgz", + "integrity": "sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw==", "cpu": [ "arm64" ], @@ -1621,9 +1606,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.2.tgz", - "integrity": "sha512-5av6VYZZeneiYIodwzGMlnyVakpuYZryGzFIbgu1XP8wVylZxduEzup4eP8atiMDFmIm+s4wn8GySJmYqeJC0A==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.3.tgz", + "integrity": "sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g==", "cpu": [ "arm64" ], @@ -1637,9 +1622,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.2.tgz", - "integrity": "sha512-1nO/UfdCLuT/uE/7oB3EZgTeZDCIa6nL72cFEpdegnqpJVNDI6Qb8U4g/4lfVPkmHq2lvxQ0L+n+JdgaZLhrRA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.3.tgz", + "integrity": "sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A==", "cpu": [ "x64" ], @@ -1653,9 +1638,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.2.tgz", - "integrity": "sha512-Ksfrb0Tx310kr+TLiUOvB/I80lyZ3lSOp6cM18zmNRT/92NB4mW8oX2Jo7K4eVEI2JWyaQUAFubDSha2Q+439A==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.3.tgz", + "integrity": "sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug==", "cpu": [ "x64" ], @@ -1669,9 +1654,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.2.tgz", - "integrity": "sha512-IzUb5RlMUY0r1A9IuJrQ7Tbts1wWb73/zXVXT8VhewbHGoNlBKE0qUhKMED6Tv4wDF+pmbtUJmKXDthytAvLmg==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.3.tgz", + "integrity": "sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA==", "cpu": [ "arm64" ], @@ -1685,9 +1670,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.2.tgz", - "integrity": "sha512-kCATEzuY2LP9AlbU2uScjcVhgnCAkRdu62vbce17Ro5kxEHxYWcugkveyBRS3AqZGtwAKYbMAuNloer9LS/hpw==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.3.tgz", + "integrity": "sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw==", "cpu": [ "ia32" ], @@ -1701,9 +1686,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.2.tgz", - "integrity": "sha512-iJaHeYCF4jTn7OEKSa3KRiuVFIVYts8jYjNmCdyz1u5g8HRyTDISD76r8+ljEOgm36oviRQvcXaw6LFp1m0yyA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.3.tgz", + "integrity": "sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog==", "cpu": [ "x64" ], @@ -2059,6 +2044,116 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript/native-preview": { + "version": "7.0.0-dev.20251120.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview/-/native-preview-7.0.0-dev.20251120.1.tgz", + "integrity": "sha512-QxWSmrqxeCwztkx8CT+3grD+Xr6Alvu9Bo94ZW+MgHiUIFUINFDqOHWdwcMB7jj9VpisktAqWwolMGeQWoCYhQ==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsgo": "bin/tsgo.js" + }, + "optionalDependencies": { + "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20251120.1", + "@typescript/native-preview-darwin-x64": "7.0.0-dev.20251120.1", + "@typescript/native-preview-linux-arm": "7.0.0-dev.20251120.1", + "@typescript/native-preview-linux-arm64": "7.0.0-dev.20251120.1", + "@typescript/native-preview-linux-x64": "7.0.0-dev.20251120.1", + "@typescript/native-preview-win32-arm64": "7.0.0-dev.20251120.1", + "@typescript/native-preview-win32-x64": "7.0.0-dev.20251120.1" + } + }, + "node_modules/@typescript/native-preview-darwin-arm64": { + "version": "7.0.0-dev.20251120.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-arm64/-/native-preview-darwin-arm64-7.0.0-dev.20251120.1.tgz", + "integrity": "sha512-ekoZN9y7f6cTqFeWErex46j4fEEwGn3WESEsI/aOFEawAeJC3qbqU7M9MRe2HEkWIB9VykdYtA41U+gECEoleg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@typescript/native-preview-darwin-x64": { + "version": "7.0.0-dev.20251120.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-x64/-/native-preview-darwin-x64-7.0.0-dev.20251120.1.tgz", + "integrity": "sha512-lVAUuKiMTj8He6c6VPZWJ3mJfda7cNC20U2JoZT5kW550uCM+oOwD5GqDjKXiQnIoKkU2MIFjjVeRxe2HJ+nAA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@typescript/native-preview-linux-arm": { + "version": "7.0.0-dev.20251120.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm/-/native-preview-linux-arm-7.0.0-dev.20251120.1.tgz", + "integrity": "sha512-B08WB7gADfGvQTr4ys4zl5tXjlZELZH8b1ktvDUGXmppoP95zMOvyqJJCDU9vuvlEHjTeH4ZWDAA0fIVdBAL8w==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@typescript/native-preview-linux-arm64": { + "version": "7.0.0-dev.20251120.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm64/-/native-preview-linux-arm64-7.0.0-dev.20251120.1.tgz", + "integrity": "sha512-CWvipzFf2DWrNYih1guBRD16SAkHk90PdxZao3mpSwEoDo8NzYq4vLOklnr69hYiEVLR8BbQtRSIxOGPlvqK+Q==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@typescript/native-preview-linux-x64": { + "version": "7.0.0-dev.20251120.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-x64/-/native-preview-linux-x64-7.0.0-dev.20251120.1.tgz", + "integrity": "sha512-K95CJixIFtGc/uXWhCJogTh5z6K0rKyM+1I+zFhM9X76/UFjFvOeF3ymSeHuXgfP3gLpW8A8DZgsb8PwPypbBQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@typescript/native-preview-win32-arm64": { + "version": "7.0.0-dev.20251120.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-arm64/-/native-preview-win32-arm64-7.0.0-dev.20251120.1.tgz", + "integrity": "sha512-II3sydpubtZxzTdmqt7N3WBUYniuQno0ds7RFh0WjydJ8hisJbRGq1r0YIsJONkrJMWCzxZxRHxN25uSOY+z5g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@typescript/native-preview-win32-x64": { + "version": "7.0.0-dev.20251120.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-x64/-/native-preview-win32-x64-7.0.0-dev.20251120.1.tgz", + "integrity": "sha512-KfeH0WdGhq018X/uLOH5kStL8gm5I6U1C7YVpgKFhJ7khNPI0+XvFaVKEtaS1FFTR4M9IjTFyLH8n8kvIT8isA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@xml-tools/parser": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@xml-tools/parser/-/parser-1.0.11.tgz", @@ -2110,19 +2205,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2418,20 +2500,6 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, "node_modules/esbuild": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.0.tgz", @@ -2872,23 +2940,6 @@ "dev": true, "license": "ISC" }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/format": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", @@ -2916,22 +2967,16 @@ "license": "ISC" }, "node_modules/glob": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", - "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, "engines": { "node": "20 || >=22" }, @@ -3045,16 +3090,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3108,20 +3143,15 @@ "dev": true, "license": "ISC" }, - "node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "license": "MIT", + "peer": true, + "bin": { + "jiti": "lib/jiti-cli.mjs" } }, "node_modules/js-yaml": { @@ -4580,13 +4610,13 @@ } }, "node_modules/rimraf": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.0.tgz", - "integrity": "sha512-DxdlA1bdNzkZK7JiNWH+BAx1x4tEJWoTofIopFo6qWUU94jYrFZ0ubY05TqH3nWPJ1nKa1JWVFDINZ3fnrle/A==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.2.tgz", + "integrity": "sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "glob": "^11.0.3", + "glob": "^13.0.0", "package-json-from-dist": "^1.0.1" }, "bin": { @@ -4659,19 +4689,6 @@ "node": ">=8" } }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/sort-object-keys": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-1.1.3.tgz", @@ -4720,110 +4737,6 @@ "source-map": "^0.6.0" } }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -4851,9 +4764,9 @@ } }, "node_modules/svelte": { - "version": "5.43.11", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.43.11.tgz", - "integrity": "sha512-jrAtflQFbCpaPS6BFDw/zz5W2BK0q3qXmnKX8vWuf5gaPuMefFh9zGIWFm2tDdmeK61rP+tF5rAx0V+C3Z7A3g==", + "version": "5.43.14", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.43.14.tgz", + "integrity": "sha512-pHeUrp1A5S6RGaXhJB7PtYjL1VVjbVrJ2EfuAoPu9/1LeoMaJa/pcdCsCSb0gS4eUHAHnhCbUDxORZyvGK6kOQ==", "dev": true, "license": "MIT", "peer": true, @@ -5094,101 +5007,6 @@ "node": ">=0.10.0" } }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/yaml": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", diff --git a/package.json b/package.json index b961aac..56a9069 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@checkdigit/typescript-config", - "version": "10.0.0", + "version": "11.0.0", "description": "Check Digit standard Typescript configuration", "homepage": "https://github.com/checkdigit/typescript-config#readme", "bugs": { @@ -21,7 +21,8 @@ } }, "bin": { - "builder": "./bin/builder.mjs" + "builder": "./bin/builder.mjs", + "tsc": "./node_modules/.bin/tscgo" }, "files": [ "bin", @@ -50,12 +51,12 @@ "build:mjs-bundle-minify": "rimraf build-mjs-bundle-minify && bin/builder.mjs --type=module --minify --outDir=build-mjs-bundle-minify --entryPoint=index.test.ts --outFile=index.test.mjs", "build:mjs-bundle-no-external": "rimraf build-mjs-bundle-no-external && bin/builder.mjs --type=module --external=./node_modules/* --outDir=build-mjs-bundle-no-external --entryPoint=index.test.ts --outFile=index.test.mjs --minify", "build:types": "rimraf build-types && bin/builder.mjs --type=types --outDir=build-types", - "ci:compile": "tsc --noEmit --rootDir src", + "ci:compile": "time tsgo && time tsc", "ci:lint": "npm run lint", "ci:style": "npm run prettier", "ci:test": "npm run build && npm run test:node && npm run test:mjs && npm run test:mjs-bundle && npm run test:mjs-bundle-no-external", - "lint": "eslint --max-warnings 0 .", - "lint:fix": "eslint . --fix", + "lint": "eslint . --max-warnings=0 --concurrency=auto", + "lint:fix": "eslint . --fix --concurrency=auto", "prepare": "", "prepublishOnly": "npm run build:builder && npm run build:dist-types && npm run build:dist-mjs", "prettier": "prettier --ignore-path .gitignore --list-different .", @@ -76,12 +77,14 @@ "eslint": "^9.39.1", "eslint-config-prettier": "^10.1.8", "eslint-plugin-yml": "^1.19.0", - "rimraf": "^6.1.0", + "jiti": "^2.6.1", + "rimraf": "^6.1.2", "typescript-eslint": "^8.47.0" }, "peerDependencies": { "@swc-node/register": "1.11.1", "@types/node": ">=24", + "@typescript/native-preview": "^7.0.0-dev.20251120.1", "esbuild": "0.27.0", "typescript": ">=5.9.3 <6" },