From c19259f0639d47d31c42cbbbc7ca607a20c7e347 Mon Sep 17 00:00:00 2001 From: Dmitry Fuks Date: Tue, 3 Dec 2024 23:56:22 +0300 Subject: [PATCH] eslint use custom program --- packages/example/eslint.config.mjs | 39 +++ packages/example/package.json | 7 +- packages/example/src/modern/getDate.ts | 3 + packages/plugin/src/cli/index.ts | 11 + packages/plugin/tsconfig.json | 1 + yarn.lock | 400 ++++++++++++++++++++++++- 6 files changed, 457 insertions(+), 4 deletions(-) create mode 100644 packages/example/eslint.config.mjs diff --git a/packages/example/eslint.config.mjs b/packages/example/eslint.config.mjs new file mode 100644 index 0000000..23fdfcf --- /dev/null +++ b/packages/example/eslint.config.mjs @@ -0,0 +1,39 @@ +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; +import * as parser from '@typescript-eslint/parser'; +import plugin from 'ts-overrides-plugin'; +import typescript from 'typescript'; + +const parserProgram = parser.createProgram('tsconfig.json'); +const host = typescript.createCompilerHost(parserProgram.getCompilerOptions()); +const originalProgram = typescript.createProgram(parserProgram.getRootFileNames(), parserProgram.getCompilerOptions(), host); +const pluginProgram = plugin(originalProgram, host, { + "ignores": ["src/ignored/**/*.{ts,tsx}"], + "overrides": [ + { + "files": [ + "src/modern/**/*.{ts,tsx}", + ], + "compilerOptions": { + "strict": true, + }, + }, + ] +}, { ts: typescript }); + +export default tseslint.config( + eslint.configs.recommended, + tseslint.configs.strictTypeChecked, + tseslint.configs.stylisticTypeChecked, + { + languageOptions: { + parserOptions: { + programs: [pluginProgram], + tsconfigRootDir: import.meta.dirname, + }, + }, + }, + { + ignores: ['dist', '*.config.*'], + } +); diff --git a/packages/example/package.json b/packages/example/package.json index 4b78b55..c5c3dd9 100644 --- a/packages/example/package.json +++ b/packages/example/package.json @@ -6,21 +6,26 @@ "build:fork-ts": "webpack --config webpack.config.fork-ts.js", "watch:tspc": "tspc --watch", "watch:ts-loader": "webpack --config webpack.config.ts-loader.js --watch", - "watch:fork-ts": "webpack --config webpack.config.fork-ts.js --watch" + "watch:fork-ts": "webpack --config webpack.config.fork-ts.js --watch", + "lint": "eslint ." }, "devDependencies": { "@babel/core": "^7.23.6", "@babel/preset-env": "^7.23.6", "@babel/preset-typescript": "^7.23.3", + "@eslint/js": "^9.16.0", "@types/babel__core": "^7", "@types/babel__preset-env": "^7", + "@typescript-eslint/parser": "^8.17.0", "babel-loader": "^9.1.3", + "eslint": "^9.16.0", "fork-ts-checker-webpack-plugin": "^9.0.2", "ts-loader": "^9.5.1", "ts-node": "^10.9.2", "ts-overrides-plugin": "workspce:*", "ts-patch": "3.2.1", "typescript": "5.5.2", + "typescript-eslint": "^8.17.0", "webpack": "^5.96.1", "webpack-cli": "^5.1.4" }, diff --git a/packages/example/src/modern/getDate.ts b/packages/example/src/modern/getDate.ts index d28c1bb..35cb1f9 100644 --- a/packages/example/src/modern/getDate.ts +++ b/packages/example/src/modern/getDate.ts @@ -3,6 +3,9 @@ import { someVar } from '../legacy/getDate'; // Parameter 'date' implicitly has an 'any' type. export const getDate = (date) => { const modern: string | undefined = undefined; + const alwaysStringVar = 'Some string'; + + alwaysStringVar?.toLowerCase(); // Show `string | undefined` on hover in IDE console.log(someVar); diff --git a/packages/plugin/src/cli/index.ts b/packages/plugin/src/cli/index.ts index cd99608..72712d4 100644 --- a/packages/plugin/src/cli/index.ts +++ b/packages/plugin/src/cli/index.ts @@ -97,6 +97,17 @@ const plugin: ProgramTransformer = (program, host, pluginConfig, extras) => { return new Proxy(program, { get: (target, property: keyof ts.Program) => { + if (property === `getCompilerOptions`) { + return (() => { + const compilerOptions = target.getCompilerOptions(); + + return { + ...compilerOptions, + strictNullChecks: true, + }; + }) as ts.Program['getCompilerOptions']; + } + // for watch mode - ForkTsCheckerWebpackPlugin and tspc if (property === `getBindAndCheckDiagnostics`) { return ((sourceFile, cancellationToken) => diff --git a/packages/plugin/tsconfig.json b/packages/plugin/tsconfig.json index e91fe5f..d2019dc 100644 --- a/packages/plugin/tsconfig.json +++ b/packages/plugin/tsconfig.json @@ -5,6 +5,7 @@ "outDir": "./dist", "esModuleInterop": true, "skipLibCheck": true, + "declaration": true, "strict": true } } diff --git a/yarn.lock b/yarn.lock index c9a806b..b802235 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1407,6 +1407,13 @@ __metadata: languageName: node linkType: hard +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40eslint-community%2Fregexpp%2F-%2Fregexpp-4.12.1.tgz" + checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 + languageName: node + linkType: hard + "@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": version: 4.10.0 resolution: "@eslint-community/regexpp@npm:4.10.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40eslint-community%2Fregexpp%2F-%2Fregexpp-4.10.0.tgz" @@ -1414,6 +1421,24 @@ __metadata: languageName: node linkType: hard +"@eslint/config-array@npm:^0.19.0": + version: 0.19.0 + resolution: "@eslint/config-array@npm:0.19.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40eslint%2Fconfig-array%2F-%2Fconfig-array-0.19.0.tgz" + dependencies: + "@eslint/object-schema": "npm:^2.1.4" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10c0/def23c6c67a8f98dc88f1b87e17a5668e5028f5ab9459661aabfe08e08f2acd557474bbaf9ba227be0921ae4db232c62773dbb7739815f8415678eb8f592dbf5 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.9.0": + version: 0.9.0 + resolution: "@eslint/core@npm:0.9.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40eslint%2Fcore%2F-%2Fcore-0.9.0.tgz" + checksum: 10c0/6d8e8e0991cef12314c49425d8d2d9394f5fb1a36753ff82df7c03185a4646cb7c8736cf26638a4a714782cedf4b23cfc17667d282d3e5965b3920a0e7ce20d4 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^2.1.4": version: 2.1.4 resolution: "@eslint/eslintrc@npm:2.1.4::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40eslint%2Feslintrc%2F-%2Feslintrc-2.1.4.tgz" @@ -1431,6 +1456,23 @@ __metadata: languageName: node linkType: hard +"@eslint/eslintrc@npm:^3.2.0": + version: 3.2.0 + resolution: "@eslint/eslintrc@npm:3.2.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40eslint%2Feslintrc%2F-%2Feslintrc-3.2.0.tgz" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^10.0.1" + globals: "npm:^14.0.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/43867a07ff9884d895d9855edba41acf325ef7664a8df41d957135a81a477ff4df4196f5f74dc3382627e5cc8b7ad6b815c2cea1b58f04a75aced7c43414ab8b + languageName: node + linkType: hard + "@eslint/js@npm:8.57.0": version: 8.57.0 resolution: "@eslint/js@npm:8.57.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40eslint%2Fjs%2F-%2Fjs-8.57.0.tgz" @@ -1438,6 +1480,29 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:9.16.0, @eslint/js@npm:^9.16.0": + version: 9.16.0 + resolution: "@eslint/js@npm:9.16.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40eslint%2Fjs%2F-%2Fjs-9.16.0.tgz" + checksum: 10c0/a55846a4ddade720662d36682f3eaaf38eac06eeee12c83bb837bba2b7d550dadcb3445b104219f0bc1da2e09b4fe5fb5ba123b8338c8c787bcfbd540878df75 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/object-schema@npm:2.1.4::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40eslint%2Fobject-schema%2F-%2Fobject-schema-2.1.4.tgz" + checksum: 10c0/e9885532ea70e483fb007bf1275968b05bb15ebaa506d98560c41a41220d33d342e19023d5f2939fed6eb59676c1bda5c847c284b4b55fce521d282004da4dda + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.2.3": + version: 0.2.3 + resolution: "@eslint/plugin-kit@npm:0.2.3::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40eslint%2Fplugin-kit%2F-%2Fplugin-kit-0.2.3.tgz" + dependencies: + levn: "npm:^0.4.1" + checksum: 10c0/89a8035976bb1780e3fa8ffe682df013bd25f7d102d991cecd3b7c297f4ce8c1a1b6805e76dd16465b5353455b670b545eff2b4ec3133e0eab81a5f9e99bd90f + languageName: node + linkType: hard + "@feature-sliced/eslint-config@npm:0.1.1": version: 0.1.1 resolution: "@feature-sliced/eslint-config@npm:0.1.1::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40feature-sliced%2Feslint-config%2F-%2Feslint-config-0.1.1.tgz" @@ -1448,6 +1513,23 @@ __metadata: languageName: node linkType: hard +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40humanfs%2Fcore%2F-%2Fcore-0.19.1.tgz" + checksum: 10c0/aa4e0152171c07879b458d0e8a704b8c3a89a8c0541726c6b65b81e84fd8b7564b5d6c633feadc6598307d34564bd53294b533491424e8e313d7ab6c7bc5dc67 + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.6 + resolution: "@humanfs/node@npm:0.16.6::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40humanfs%2Fnode%2F-%2Fnode-0.16.6.tgz" + dependencies: + "@humanfs/core": "npm:^0.19.1" + "@humanwhocodes/retry": "npm:^0.3.0" + checksum: 10c0/8356359c9f60108ec204cbd249ecd0356667359b2524886b357617c4a7c3b6aace0fd5a369f63747b926a762a88f8a25bc066fa1778508d110195ce7686243e1 + languageName: node + linkType: hard + "@humanwhocodes/config-array@npm:^0.11.14": version: 0.11.14 resolution: "@humanwhocodes/config-array@npm:0.11.14::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40humanwhocodes%2Fconfig-array%2F-%2Fconfig-array-0.11.14.tgz" @@ -1473,6 +1555,20 @@ __metadata: languageName: node linkType: hard +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40humanwhocodes%2Fretry%2F-%2Fretry-0.3.1.tgz" + checksum: 10c0/f0da1282dfb45e8120480b9e2e275e2ac9bbe1cf016d046fdad8e27cc1285c45bb9e711681237944445157b430093412b4446c1ab3fc4bb037861b5904101d3b + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.1": + version: 0.4.1 + resolution: "@humanwhocodes/retry@npm:0.4.1::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40humanwhocodes%2Fretry%2F-%2Fretry-0.4.1.tgz" + checksum: 10c0/be7bb6841c4c01d0b767d9bb1ec1c9359ee61421ce8ba66c249d035c5acdfd080f32d55a5c9e859cdd7868788b8935774f65b2caf24ec0b7bd7bf333791f063b + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -1755,7 +1851,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.12": +"@types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.15": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40types%2Fjson-schema%2F-%2Fjson-schema-7.0.15.tgz" checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db @@ -1826,6 +1922,29 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.17.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Feslint-plugin%2F-%2Feslint-plugin-8.17.0.tgz" + dependencies: + "@eslint-community/regexpp": "npm:^4.10.0" + "@typescript-eslint/scope-manager": "npm:8.17.0" + "@typescript-eslint/type-utils": "npm:8.17.0" + "@typescript-eslint/utils": "npm:8.17.0" + "@typescript-eslint/visitor-keys": "npm:8.17.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.3.1" + natural-compare: "npm:^1.4.0" + ts-api-utils: "npm:^1.3.0" + peerDependencies: + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/d78778173571a9a1370345bc2aa3e850235a489d16b8a8b5ba3086b988bbef7549bdae38e509d7a679ba3179c688cc5a408376b158be402770836e94ffc9602d + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:6.13.2": version: 6.13.2 resolution: "@typescript-eslint/parser@npm:6.13.2::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Fparser%2F-%2Fparser-6.13.2.tgz" @@ -1844,6 +1963,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:8.17.0, @typescript-eslint/parser@npm:^8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/parser@npm:8.17.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Fparser%2F-%2Fparser-8.17.0.tgz" + dependencies: + "@typescript-eslint/scope-manager": "npm:8.17.0" + "@typescript-eslint/types": "npm:8.17.0" + "@typescript-eslint/typescript-estree": "npm:8.17.0" + "@typescript-eslint/visitor-keys": "npm:8.17.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/2543deadf01302a92d3b6f58a4c14f98d8936c4d976e7da05e3bb65608f19d8de93b25282e343c304eca3e3f37f2ac23e97fa9c11c6edff36dd2d4f6b601a630 + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/scope-manager@npm:5.62.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Fscope-manager%2F-%2Fscope-manager-5.62.0.tgz" @@ -1874,6 +2011,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/scope-manager@npm:8.17.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Fscope-manager%2F-%2Fscope-manager-8.17.0.tgz" + dependencies: + "@typescript-eslint/types": "npm:8.17.0" + "@typescript-eslint/visitor-keys": "npm:8.17.0" + checksum: 10c0/0c08d14240bad4b3f6874f08ba80b29db1a6657437089a6f109db458c544d835bcdc06ba9140bb4f835233ba4326d9a86e6cf6bdb5209960d2f7025aa3191f4f + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:6.13.2": version: 6.13.2 resolution: "@typescript-eslint/type-utils@npm:6.13.2::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Ftype-utils%2F-%2Ftype-utils-6.13.2.tgz" @@ -1891,6 +2038,23 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/type-utils@npm:8.17.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Ftype-utils%2F-%2Ftype-utils-8.17.0.tgz" + dependencies: + "@typescript-eslint/typescript-estree": "npm:8.17.0" + "@typescript-eslint/utils": "npm:8.17.0" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^1.3.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/6138ec71b5692d4b5e0bf3d7f66a6fa4e91ddea7031907b0ac45a7693df0a2f4cc5bca7218311e0639620d636ceb7efec83a137dfcd5938304d873b774fcc8bd + languageName: node + linkType: hard + "@typescript-eslint/types@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/types@npm:5.62.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Ftypes%2F-%2Ftypes-5.62.0.tgz" @@ -1912,6 +2076,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/types@npm:8.17.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Ftypes%2F-%2Ftypes-8.17.0.tgz" + checksum: 10c0/26b1bf9dfc3ee783c85c6f354b84c28706d5689d777f3ff2de2cb496e45f9d0189c0d561c03ccbc8b24712438be17cf63dd0871ff3ca2083e7f48749770d1893 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/typescript-estree@npm:5.62.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Ftypescript-estree%2F-%2Ftypescript-estree-5.62.0.tgz" @@ -1967,6 +2138,25 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.17.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Ftypescript-estree%2F-%2Ftypescript-estree-8.17.0.tgz" + dependencies: + "@typescript-eslint/types": "npm:8.17.0" + "@typescript-eslint/visitor-keys": "npm:8.17.0" + debug: "npm:^4.3.4" + fast-glob: "npm:^3.3.2" + is-glob: "npm:^4.0.3" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^1.3.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/523013f9b5cf2c58c566868e4c3b0b9ac1b4807223a6d64e2a7c58e01e53b6587ba61f1a8241eade361f3f426d6057657515473176141ef8aebb352bc0d223ce + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:6.13.2": version: 6.13.2 resolution: "@typescript-eslint/utils@npm:6.13.2::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Futils%2F-%2Futils-6.13.2.tgz" @@ -1984,6 +2174,23 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/utils@npm:8.17.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Futils%2F-%2Futils-8.17.0.tgz" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:8.17.0" + "@typescript-eslint/types": "npm:8.17.0" + "@typescript-eslint/typescript-estree": "npm:8.17.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/a9785ae5f7e7b51d521dc3f48b15093948e4fcd03352c0b60f39bae366cbc935947d215f91e2ae3182d52fa6affb5ccbb50feff487bd1209011f3e0da02cdf07 + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:^5.10.0, @typescript-eslint/utils@npm:^5.45.0, @typescript-eslint/utils@npm:^5.58.0": version: 5.62.0 resolution: "@typescript-eslint/utils@npm:5.62.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Futils%2F-%2Futils-5.62.0.tgz" @@ -2049,6 +2256,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.17.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40typescript-eslint%2Fvisitor-keys%2F-%2Fvisitor-keys-8.17.0.tgz" + dependencies: + "@typescript-eslint/types": "npm:8.17.0" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10c0/9144c4e4a63034fb2031a0ee1fc77e80594f30cab3faafa9a1f7f83782695774dd32fac8986f260698b4e150b4dd52444f2611c07e4c101501f08353eb47c82c + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.2.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40ungap%2Fstructured-clone%2F-%2Fstructured-clone-1.2.0.tgz" @@ -2982,6 +3199,17 @@ __metadata: languageName: node linkType: hard +"cross-spawn@npm:^7.0.5": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fcross-spawn%2F-%2Fcross-spawn-7.0.6.tgz" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 + languageName: node + linkType: hard + "damerau-levenshtein@npm:^1.0.8": version: 1.0.8 resolution: "damerau-levenshtein@npm:1.0.8::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fdamerau-levenshtein%2F-%2Fdamerau-levenshtein-1.0.8.tgz" @@ -3838,6 +4066,16 @@ __metadata: languageName: node linkType: hard +"eslint-scope@npm:^8.2.0": + version: 8.2.0 + resolution: "eslint-scope@npm:8.2.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Feslint-scope%2F-%2Feslint-scope-8.2.0.tgz" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/8d2d58e2136d548ac7e0099b1a90d9fab56f990d86eb518de1247a7066d38c908be2f3df477a79cf60d70b30ba18735d6c6e70e9914dca2ee515a729975d70d6 + languageName: node + linkType: hard + "eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Feslint-visitor-keys%2F-%2Feslint-visitor-keys-3.4.3.tgz" @@ -3845,6 +4083,13 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^4.2.0": + version: 4.2.0 + resolution: "eslint-visitor-keys@npm:4.2.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Feslint-visitor-keys%2F-%2Feslint-visitor-keys-4.2.0.tgz" + checksum: 10c0/2ed81c663b147ca6f578312919483eb040295bbab759e5a371953456c636c5b49a559883e2677112453728d66293c0a4c90ab11cab3428cf02a0236d2e738269 + languageName: node + linkType: hard + "eslint@npm:8.57.0": version: 8.57.0 resolution: "eslint@npm:8.57.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Feslint%2F-%2Feslint-8.57.0.tgz" @@ -3893,6 +4138,66 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^9.16.0": + version: 9.16.0 + resolution: "eslint@npm:9.16.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Feslint%2F-%2Feslint-9.16.0.tgz" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.19.0" + "@eslint/core": "npm:^0.9.0" + "@eslint/eslintrc": "npm:^3.2.0" + "@eslint/js": "npm:9.16.0" + "@eslint/plugin-kit": "npm:^0.2.3" + "@humanfs/node": "npm:^0.16.6" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@humanwhocodes/retry": "npm:^0.4.1" + "@types/estree": "npm:^1.0.6" + "@types/json-schema": "npm:^7.0.15" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.5" + debug: "npm:^4.3.2" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^8.2.0" + eslint-visitor-keys: "npm:^4.2.0" + espree: "npm:^10.3.0" + esquery: "npm:^1.5.0" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^8.0.0" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + bin: + eslint: bin/eslint.js + checksum: 10c0/f36d12652c6f20bab8a77375b8ad29a6af030c3840deb0a5f9dd4cee49d68a2d68d7dc73b0c25918df59d83cd686dd5712e11387e696e1f3842e8dde15cd3255 + languageName: node + linkType: hard + +"espree@npm:^10.0.1, espree@npm:^10.3.0": + version: 10.3.0 + resolution: "espree@npm:10.3.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fespree%2F-%2Fespree-10.3.0.tgz" + dependencies: + acorn: "npm:^8.14.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10c0/272beeaca70d0a1a047d61baff64db04664a33d7cfb5d144f84bc8a5c6194c6c8ebe9cc594093ca53add88baa23e59b01e69e8a0160ab32eac570482e165c462 + languageName: node + linkType: hard + "espree@npm:^9.6.0, espree@npm:^9.6.1": version: 9.6.1 resolution: "espree@npm:9.6.1::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fespree%2F-%2Fespree-9.6.1.tgz" @@ -3913,6 +4218,15 @@ __metadata: languageName: node linkType: hard +"esquery@npm:^1.5.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fesquery%2F-%2Fesquery-1.6.0.tgz" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 + languageName: node + linkType: hard + "esrecurse@npm:^4.3.0": version: 4.3.0 resolution: "esrecurse@npm:4.3.0" @@ -4006,15 +4320,19 @@ __metadata: "@babel/core": "npm:^7.23.6" "@babel/preset-env": "npm:^7.23.6" "@babel/preset-typescript": "npm:^7.23.3" + "@eslint/js": "npm:^9.16.0" "@types/babel__core": "npm:^7" "@types/babel__preset-env": "npm:^7" + "@typescript-eslint/parser": "npm:^8.17.0" babel-loader: "npm:^9.1.3" + eslint: "npm:^9.16.0" fork-ts-checker-webpack-plugin: "npm:^9.0.2" ts-loader: "npm:^9.5.1" ts-node: "npm:^10.9.2" ts-overrides-plugin: "workspce:*" ts-patch: "npm:3.2.1" typescript: "npm:5.5.2" + typescript-eslint: "npm:^8.17.0" webpack: "npm:^5.96.1" webpack-cli: "npm:^5.1.4" languageName: unknown @@ -4041,7 +4359,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.1": +"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.1, fast-glob@npm:^3.3.2": version: 3.3.2 resolution: "fast-glob@npm:3.3.2::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Ffast-glob%2F-%2Ffast-glob-3.3.2.tgz" dependencies: @@ -4093,6 +4411,15 @@ __metadata: languageName: node linkType: hard +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Ffile-entry-cache%2F-%2Ffile-entry-cache-8.0.0.tgz" + dependencies: + flat-cache: "npm:^4.0.0" + checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 + languageName: node + linkType: hard + "fill-range@npm:^7.1.1": version: 7.1.1 resolution: "fill-range@npm:7.1.1::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Ffill-range%2F-%2Ffill-range-7.1.1.tgz" @@ -4153,6 +4480,16 @@ __metadata: languageName: node linkType: hard +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fflat-cache%2F-%2Fflat-cache-4.0.1.tgz" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.4" + checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc + languageName: node + linkType: hard + "flat@npm:^5.0.2": version: 5.0.2 resolution: "flat@npm:5.0.2" @@ -4442,6 +4779,13 @@ __metadata: languageName: node linkType: hard +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fglobals%2F-%2Fglobals-14.0.0.tgz" + checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d + languageName: node + linkType: hard + "globalthis@npm:^1.0.3": version: 1.0.4 resolution: "globalthis@npm:1.0.4::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fglobalthis%2F-%2Fglobalthis-1.0.4.tgz" @@ -4610,6 +4954,13 @@ __metadata: languageName: node linkType: hard +"ignore@npm:^5.3.1": + version: 5.3.2 + resolution: "ignore@npm:5.3.2::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fignore%2F-%2Fignore-5.3.2.tgz" + checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 + languageName: node + linkType: hard + "import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fimport-fresh%2F-%2Fimport-fresh-3.3.0.tgz" @@ -5196,7 +5547,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.5.3": +"keyv@npm:^4.5.3, keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fkeyv%2F-%2Fkeyv-4.5.4.tgz" dependencies: @@ -5457,6 +5808,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fminimatch%2F-%2Fminimatch-9.0.5.tgz" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed + languageName: node + linkType: hard + "minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8": version: 1.2.8 resolution: "minimist@npm:1.2.8::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fminimist%2F-%2Fminimist-1.2.8.tgz" @@ -6423,6 +6783,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.6.0": + version: 7.6.3 + resolution: "semver@npm:7.6.3::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fsemver%2F-%2Fsemver-7.6.3.tgz" + bin: + semver: bin/semver.js + checksum: 10c0/88f33e148b210c153873cb08cfe1e281d518aaa9a666d4d148add6560db5cd3c582f3a08ccb91f38d5f379ead256da9931234ed122057f40bb5766e65e58adaf + languageName: node + linkType: hard + "serialize-javascript@npm:^6.0.1": version: 6.0.1 resolution: "serialize-javascript@npm:6.0.1" @@ -6831,6 +7200,15 @@ __metadata: languageName: node linkType: hard +"ts-api-utils@npm:^1.3.0": + version: 1.4.3 + resolution: "ts-api-utils@npm:1.4.3::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fts-api-utils%2F-%2Fts-api-utils-1.4.3.tgz" + peerDependencies: + typescript: ">=4.2.0" + checksum: 10c0/e65dc6e7e8141140c23e1dc94984bf995d4f6801919c71d6dc27cf0cd51b100a91ffcfe5217626193e5bea9d46831e8586febdc7e172df3f1091a7384299e23a + languageName: node + linkType: hard + "ts-dedent@npm:^2.2.0": version: 2.2.0 resolution: "ts-dedent@npm:2.2.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fts-dedent%2F-%2Fts-dedent-2.2.0.tgz" @@ -7076,6 +7454,22 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.17.0": + version: 8.17.0 + resolution: "typescript-eslint@npm:8.17.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Ftypescript-eslint%2F-%2Ftypescript-eslint-8.17.0.tgz" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.17.0" + "@typescript-eslint/parser": "npm:8.17.0" + "@typescript-eslint/utils": "npm:8.17.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/b148525769b9afa789ad3c2d52249fa78e67a225d48d17f2f0117b0e8b52566112be3a35de6cd26bcaffba3114be87c1070f7f4b4e2b730c059668fec4a530bc + languageName: node + linkType: hard + "typescript@npm:3.9.10": version: 3.9.10 resolution: "typescript@npm:3.9.10::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Ftypescript%2F-%2Ftypescript-3.9.10.tgz"