From e2ea797ea950fedfd4ec0e5df99e89abd5272da5 Mon Sep 17 00:00:00 2001 From: Shinigami Date: Mon, 16 Sep 2024 10:37:53 +0200 Subject: infra: use eslint.config.ts (#3044) Co-authored-by: ST-DDT --- .vscode/settings.json | 3 + eslint.config.js | 262 -------------------------------------------------- eslint.config.ts | 262 ++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 9 +- pnpm-lock.yaml | 178 +++++++++++++++++----------------- 5 files changed, 355 insertions(+), 359 deletions(-) delete mode 100644 eslint.config.js create mode 100644 eslint.config.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index adff015a..5c9676d6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,7 @@ { + "eslint.options": { + "flags": ["unstable_ts_config"] + }, // Enable eslint validation for js and ts files "eslint.validate": ["javascript", "typescript"], diff --git a/eslint.config.js b/eslint.config.js deleted file mode 100644 index 60acff7c..00000000 --- a/eslint.config.js +++ /dev/null @@ -1,262 +0,0 @@ -// @ts-check -/* eslint-disable @typescript-eslint/no-unsafe-argument */ -import { includeIgnoreFile } from '@eslint/compat'; -import eslint from '@eslint/js'; -import stylistic from '@stylistic/eslint-plugin'; -import eslintPluginJsdoc from 'eslint-plugin-jsdoc'; -import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; -import eslintPluginUnicorn from 'eslint-plugin-unicorn'; -import eslintPluginVitest from 'eslint-plugin-vitest'; -import { dirname, resolve } from 'node:path'; -import { fileURLToPath } from 'node:url'; -import tseslint from 'typescript-eslint'; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = dirname(__filename); -const gitignorePath = resolve(__dirname, '.gitignore'); - -export default tseslint.config( - //#region global - includeIgnoreFile(gitignorePath), - { - ignores: [ - // Skip some files that don't need linting right now - '.github/workflows/commentCodeGeneration.ts', - '.prettierrc.js', - 'docs/.vitepress/components/shims.d.ts', - 'docs/.vitepress/shared/utils/slugify.ts', - 'docs/.vitepress/theme/index.ts', - 'eslint.config.js', - ], - }, - { - linterOptions: { - reportUnusedDisableDirectives: 'error', - }, - }, - //#endregion - - //#region eslint (js) - eslint.configs.recommended, - { - rules: { - eqeqeq: ['error', 'always', { null: 'ignore' }], - 'logical-assignment-operators': 'error', - 'no-else-return': 'error', - 'no-restricted-globals': ['error', 'Intl'], - 'prefer-exponentiation-operator': 'error', - 'prefer-template': 'error', - }, - }, - //#endregion - - //#region typescript-eslint - ...tseslint.configs.strictTypeChecked, - { - plugins: { - '@typescript-eslint': tseslint.plugin, - }, - languageOptions: { - parserOptions: { - project: true, - warnOnUnsupportedTypeScriptVersion: false, - }, - }, - rules: { - '@typescript-eslint/array-type': [ - 'error', - { default: 'array-simple', readonly: 'generic' }, - ], - '@typescript-eslint/consistent-type-exports': 'error', - '@typescript-eslint/consistent-type-imports': 'error', - '@typescript-eslint/explicit-module-boundary-types': 'error', - '@typescript-eslint/naming-convention': [ - 'error', - { - format: ['PascalCase'], - selector: ['class', 'interface', 'typeAlias', 'enumMember'], - leadingUnderscore: 'forbid', - trailingUnderscore: 'forbid', - }, - { - format: ['PascalCase'], - selector: ['typeParameter'], - prefix: ['T'], - leadingUnderscore: 'forbid', - trailingUnderscore: 'forbid', - }, - ], - '@typescript-eslint/no-confusing-void-expression': [ - 'error', - { - ignoreArrowShorthand: true, - }, - ], - '@typescript-eslint/no-inferrable-types': [ - 'error', - { ignoreParameters: true }, - ], - '@typescript-eslint/no-unnecessary-condition': 'off', // requires `strictNullChecks` to be enabled - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - '@typescript-eslint/prefer-regexp-exec': 'error', - '@typescript-eslint/restrict-plus-operands': [ - 'error', - { - allowAny: false, - allowBoolean: false, - allowNullish: false, - allowNumberAndString: true, - allowRegExp: false, - }, - ], - '@typescript-eslint/restrict-template-expressions': [ - 'error', - { allowNumber: true, allowBoolean: true }, - ], - '@typescript-eslint/switch-exhaustiveness-check': [ - 'error', - { requireDefaultForNonUnion: true }, - ], - '@typescript-eslint/unbound-method': 'off', - '@typescript-eslint/unified-signatures': 'off', // incompatible with our api docs generation - }, - }, - //#endregion - - //#region stylistic - { - plugins: { - '@stylistic': stylistic, - }, - rules: { - '@stylistic/padding-line-between-statements': [ - 'error', - { blankLine: 'always', prev: 'block-like', next: '*' }, - ], - }, - }, - //#endregion - - //#region unicorn - eslintPluginUnicorn.configs['flat/recommended'], - { - rules: { - 'unicorn/import-style': 'off', // subjective & doesn't do anything for us - 'unicorn/no-array-callback-reference': 'off', // reduces readability - 'unicorn/no-nested-ternary': 'off', // incompatible with prettier - 'unicorn/no-null': 'off', // incompatible with TypeScript - 'unicorn/no-zero-fractions': 'off', // deactivated to raise awareness of floating operations - 'unicorn/number-literal-case': 'off', // incompatible with prettier - 'unicorn/numeric-separators-style': 'off', // "magic numbers" may carry specific meaning - 'unicorn/prefer-string-raw': 'off', // The additional prefix doesn't help readability - 'unicorn/prefer-ternary': 'off', // ternaries aren't always better - - // TODO @Shinigami92 2023-09-23: The following rules currently conflict with our code. - // Each rule should be checked whether it should be enabled/configured and the problems fixed, or stay disabled permanently. - 'unicorn/better-regex': 'off', - 'unicorn/consistent-function-scoping': 'off', - 'unicorn/no-object-as-default-parameter': 'off', - 'unicorn/prefer-export-from': 'off', - 'unicorn/prefer-string-slice': 'off', - 'unicorn/prevent-abbreviations': 'off', - }, - }, - //#endregion - - //#region jsdoc - eslintPluginJsdoc.configs['flat/recommended-typescript-error'], - { - rules: { - 'jsdoc/require-jsdoc': 'off', // Enabled only for src/**/*.ts - 'jsdoc/require-returns': 'off', - 'jsdoc/sort-tags': [ - 'error', - { - tagSequence: [ - { tags: ['template'] }, - { tags: ['internal'] }, - { tags: ['param'] }, - { tags: ['returns'] }, - { tags: ['throws'] }, - { tags: ['see'] }, - { tags: ['example'] }, - { tags: ['since'] }, - { tags: ['default'] }, - { tags: ['deprecated'] }, - ], - }, - ], - 'jsdoc/tag-lines': 'off', - }, - settings: { - jsdoc: { - mode: 'typescript', - }, - }, - }, - //#endregion - - //#region prettier - eslintPluginPrettierRecommended, - //#endregion, - - //#region overrides - { - files: ['src/**/*.ts'], - rules: { - 'jsdoc/require-jsdoc': 'error', - }, - }, - { - files: ['src/locale/**/*.ts'], - rules: { - 'unicorn/filename-case': 'off', // our locale files have a custom naming scheme - }, - }, - { - files: ['src/definitions/**/*.ts', 'src/locales/**/*.ts'], - rules: { - 'unicorn/filename-case': [ - 'error', - { - case: 'snakeCase', - }, - ], - 'unicorn/text-encoding-identifier-case': 'off', - }, - }, - { - files: ['test/**/*.spec.ts', 'test/**/*.spec.d.ts'], - plugins: { - vitest: eslintPluginVitest, - }, - rules: { - 'deprecation/deprecation': 'off', - - '@typescript-eslint/restrict-template-expressions': [ - 'error', - { - allowNumber: true, - allowBoolean: true, - allowAny: true, - }, - ], - - ...eslintPluginVitest.configs.recommended.rules, - - 'vitest/expect-expect': 'off', - 'vitest/no-alias-methods': 'error', - 'vitest/prefer-each': 'error', - 'vitest/prefer-to-have-length': 'error', - 'vitest/valid-expect': ['error', { maxArgs: 2 }], - }, - settings: { - vitest: { - typecheck: true, - }, - }, - } - //#endregion -); diff --git a/eslint.config.ts b/eslint.config.ts new file mode 100644 index 00000000..400a188a --- /dev/null +++ b/eslint.config.ts @@ -0,0 +1,262 @@ +import { includeIgnoreFile } from '@eslint/compat'; +import eslint from '@eslint/js'; +import stylistic from '@stylistic/eslint-plugin'; +import eslintPluginJsdoc from 'eslint-plugin-jsdoc'; +import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; +import eslintPluginUnicorn from 'eslint-plugin-unicorn'; +import eslintPluginVitest from 'eslint-plugin-vitest'; +import { dirname, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import tseslint from 'typescript-eslint'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); +const gitignorePath = resolve(__dirname, '.gitignore'); + +const config: ReturnType = tseslint.config( + //#region global + includeIgnoreFile(gitignorePath), + { + ignores: [ + // Skip some files that don't need linting right now + '.github/workflows/commentCodeGeneration.ts', + '.prettierrc.js', + 'docs/.vitepress/components/shims.d.ts', + 'docs/.vitepress/shared/utils/slugify.ts', + 'docs/.vitepress/theme/index.ts', + 'eslint.config.js', + ], + }, + { + linterOptions: { + reportUnusedDisableDirectives: 'error', + }, + }, + //#endregion + + //#region eslint (js) + eslint.configs.recommended, + { + rules: { + eqeqeq: ['error', 'always', { null: 'ignore' }], + 'logical-assignment-operators': 'error', + 'no-else-return': 'error', + 'no-restricted-globals': ['error', 'Intl'], + 'prefer-exponentiation-operator': 'error', + 'prefer-template': 'error', + }, + }, + //#endregion + + //#region typescript-eslint + ...tseslint.configs.strictTypeChecked, + { + plugins: { + '@typescript-eslint': tseslint.plugin, + }, + languageOptions: { + parserOptions: { + project: true, + warnOnUnsupportedTypeScriptVersion: false, + }, + }, + rules: { + '@typescript-eslint/array-type': [ + 'error', + { default: 'array-simple', readonly: 'generic' }, + ], + '@typescript-eslint/consistent-type-exports': 'error', + '@typescript-eslint/consistent-type-imports': 'error', + '@typescript-eslint/explicit-module-boundary-types': 'error', + '@typescript-eslint/naming-convention': [ + 'error', + { + format: ['PascalCase'], + selector: ['class', 'interface', 'typeAlias', 'enumMember'], + leadingUnderscore: 'forbid', + trailingUnderscore: 'forbid', + }, + { + format: ['PascalCase'], + selector: ['typeParameter'], + prefix: ['T'], + leadingUnderscore: 'forbid', + trailingUnderscore: 'forbid', + }, + ], + '@typescript-eslint/no-confusing-void-expression': [ + 'error', + { + ignoreArrowShorthand: true, + }, + ], + '@typescript-eslint/no-inferrable-types': [ + 'error', + { ignoreParameters: true }, + ], + '@typescript-eslint/no-unnecessary-condition': 'off', // requires `strictNullChecks` to be enabled + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/prefer-regexp-exec': 'error', + '@typescript-eslint/restrict-plus-operands': [ + 'error', + { + allowAny: false, + allowBoolean: false, + allowNullish: false, + allowNumberAndString: true, + allowRegExp: false, + }, + ], + '@typescript-eslint/restrict-template-expressions': [ + 'error', + { allowNumber: true, allowBoolean: true }, + ], + '@typescript-eslint/switch-exhaustiveness-check': [ + 'error', + { requireDefaultForNonUnion: true }, + ], + '@typescript-eslint/unbound-method': 'off', + '@typescript-eslint/unified-signatures': 'off', // incompatible with our api docs generation + }, + }, + //#endregion + + //#region stylistic + { + plugins: { + '@stylistic': stylistic, + }, + rules: { + '@stylistic/padding-line-between-statements': [ + 'error', + { blankLine: 'always', prev: 'block-like', next: '*' }, + ], + }, + }, + //#endregion + + //#region unicorn + eslintPluginUnicorn.configs['flat/recommended'], + { + rules: { + 'unicorn/import-style': 'off', // subjective & doesn't do anything for us + 'unicorn/no-array-callback-reference': 'off', // reduces readability + 'unicorn/no-nested-ternary': 'off', // incompatible with prettier + 'unicorn/no-null': 'off', // incompatible with TypeScript + 'unicorn/no-zero-fractions': 'off', // deactivated to raise awareness of floating operations + 'unicorn/number-literal-case': 'off', // incompatible with prettier + 'unicorn/numeric-separators-style': 'off', // "magic numbers" may carry specific meaning + 'unicorn/prefer-string-raw': 'off', // The additional prefix doesn't help readability + 'unicorn/prefer-ternary': 'off', // ternaries aren't always better + + // TODO @Shinigami92 2023-09-23: The following rules currently conflict with our code. + // Each rule should be checked whether it should be enabled/configured and the problems fixed, or stay disabled permanently. + 'unicorn/better-regex': 'off', + 'unicorn/consistent-function-scoping': 'off', + 'unicorn/no-object-as-default-parameter': 'off', + 'unicorn/prefer-export-from': 'off', + 'unicorn/prefer-string-slice': 'off', + 'unicorn/prevent-abbreviations': 'off', + }, + }, + //#endregion + + //#region jsdoc + eslintPluginJsdoc.configs['flat/recommended-typescript-error'], + { + rules: { + 'jsdoc/require-jsdoc': 'off', // Enabled only for src/**/*.ts + 'jsdoc/require-returns': 'off', + 'jsdoc/sort-tags': [ + 'error', + { + tagSequence: [ + { tags: ['template'] }, + { tags: ['internal'] }, + { tags: ['param'] }, + { tags: ['returns'] }, + { tags: ['throws'] }, + { tags: ['see'] }, + { tags: ['example'] }, + { tags: ['since'] }, + { tags: ['default'] }, + { tags: ['deprecated'] }, + ], + }, + ], + 'jsdoc/tag-lines': 'off', + }, + settings: { + jsdoc: { + mode: 'typescript', + }, + }, + }, + //#endregion + + //#region prettier + eslintPluginPrettierRecommended, + //#endregion, + + //#region overrides + { + files: ['src/**/*.ts'], + rules: { + 'jsdoc/require-jsdoc': 'error', + }, + }, + { + files: ['src/locale/**/*.ts'], + rules: { + 'unicorn/filename-case': 'off', // our locale files have a custom naming scheme + }, + }, + { + files: ['src/definitions/**/*.ts', 'src/locales/**/*.ts'], + rules: { + 'unicorn/filename-case': [ + 'error', + { + case: 'snakeCase', + }, + ], + 'unicorn/text-encoding-identifier-case': 'off', + }, + }, + { + files: ['test/**/*.spec.ts', 'test/**/*.spec.d.ts'], + plugins: { + vitest: eslintPluginVitest, + }, + rules: { + 'deprecation/deprecation': 'off', + + '@typescript-eslint/restrict-template-expressions': [ + 'error', + { + allowNumber: true, + allowBoolean: true, + allowAny: true, + }, + ], + + ...eslintPluginVitest.configs.recommended.rules, + + 'vitest/expect-expect': 'off', + 'vitest/no-alias-methods': 'error', + 'vitest/prefer-each': 'error', + 'vitest/prefer-to-have-length': 'error', + 'vitest/valid-expect': ['error', { maxArgs: 2 }], + }, + settings: { + vitest: { + typecheck: true, + }, + }, + } + //#endregion +); + +export default config; diff --git a/package.json b/package.json index 3c78bfd9..debe9480 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "docs:serve": "vitepress serve docs --port 5173", "docs:diff": "tsx ./scripts/diff.ts", "format": "prettier --cache --write .", - "lint": "eslint --cache --cache-strategy content .", + "lint": "eslint --cache --cache-strategy content --flag unstable_ts_config .", "ts-check": "tsc", "test": "vitest", "test:update-snapshots": "vitest run -u", @@ -105,14 +105,10 @@ "devDependencies": { "@actions/github": "6.0.0", "@algolia/client-search": "5.4.1", - "@eslint-types/deprecation": "2.0.0-1", - "@eslint-types/jsdoc": "48.2.2", - "@eslint-types/prettier": "5.1.3", - "@eslint-types/typescript-eslint": "7.5.0", - "@eslint-types/unicorn": "52.0.0", "@eslint/compat": "1.1.1", "@eslint/js": "9.10.0", "@stylistic/eslint-plugin": "2.8.0", + "@types/eslint__js": "8.42.3", "@types/node": "20.16.5", "@types/sanitize-html": "2.13.0", "@types/semver": "7.5.8", @@ -129,6 +125,7 @@ "eslint-plugin-prettier": "5.2.1", "eslint-plugin-unicorn": "55.0.0", "eslint-plugin-vitest": "0.5.4", + "jiti": "1.21.6", "npm-run-all2": "6.2.3", "prettier": "3.3.3", "prettier-plugin-organize-imports": "4.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 56373969..a86e82ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,21 +14,6 @@ importers: '@algolia/client-search': specifier: 5.4.1 version: 5.4.1 - '@eslint-types/deprecation': - specifier: 2.0.0-1 - version: 2.0.0-1 - '@eslint-types/jsdoc': - specifier: 48.2.2 - version: 48.2.2 - '@eslint-types/prettier': - specifier: 5.1.3 - version: 5.1.3 - '@eslint-types/typescript-eslint': - specifier: 7.5.0 - version: 7.5.0 - '@eslint-types/unicorn': - specifier: 52.0.0 - version: 52.0.0 '@eslint/compat': specifier: 1.1.1 version: 1.1.1 @@ -37,7 +22,10 @@ importers: version: 9.10.0 '@stylistic/eslint-plugin': specifier: 2.8.0 - version: 2.8.0(eslint@9.10.0)(typescript@5.5.4) + version: 2.8.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@types/eslint__js': + specifier: 8.42.3 + version: 8.42.3 '@types/node': specifier: 20.16.5 version: 20.16.5 @@ -67,25 +55,28 @@ importers: version: 13.14.2 eslint: specifier: 9.10.0 - version: 9.10.0 + version: 9.10.0(jiti@1.21.6) eslint-config-prettier: specifier: 9.1.0 - version: 9.1.0(eslint@9.10.0) + version: 9.1.0(eslint@9.10.0(jiti@1.21.6)) eslint-define-config: specifier: 2.1.0 version: 2.1.0 eslint-plugin-jsdoc: specifier: 50.2.3 - version: 50.2.3(eslint@9.10.0) + version: 50.2.3(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-prettier: specifier: 5.2.1 - version: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.10.0))(eslint@9.10.0)(prettier@3.3.3) + version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6))(prettier@3.3.3) eslint-plugin-unicorn: specifier: 55.0.0 - version: 55.0.0(eslint@9.10.0) + version: 55.0.0(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-vitest: specifier: 0.5.4 - version: 0.5.4(eslint@9.10.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@20.16.5)(@vitest/ui@2.0.5)(jsdom@25.0.0)) + version: 0.5.4(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@20.16.5)(@vitest/ui@2.0.5)(jsdom@25.0.0)) + jiti: + specifier: 1.21.6 + version: 1.21.6 npm-run-all2: specifier: 6.2.3 version: 6.2.3 @@ -112,7 +103,7 @@ importers: version: 23.0.0 tsup: specifier: 8.2.4 - version: 8.2.4(postcss@8.4.47)(tsx@4.19.1)(typescript@5.5.4)(yaml@2.5.1) + version: 8.2.4(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.5.4)(yaml@2.5.1) tsx: specifier: 4.19.1 version: 4.19.1 @@ -121,7 +112,7 @@ importers: version: 5.5.4 typescript-eslint: specifier: 8.5.0 - version: 8.5.0(eslint@9.10.0)(typescript@5.5.4) + version: 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) validator: specifier: 13.12.0 version: 13.12.0 @@ -596,21 +587,6 @@ packages: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-types/deprecation@2.0.0-1': - resolution: {integrity: sha512-bsl7dssIW598hWQBIsnKMHQCguXkjI14117dXVpRhaaGBmzUAJxGpL9ClM36alal6NSbljrxJvzBadINVcWeoQ==} - - '@eslint-types/jsdoc@48.2.2': - resolution: {integrity: sha512-HpyW7wipVZGkCMOMMzjZ/wieIoinafxg1M617s8UPEchEGH/Xgs7pLZMaNR3Kdyx3Rz8STHYzCmKJfV2orjFJg==} - - '@eslint-types/prettier@5.1.3': - resolution: {integrity: sha512-jJHwCAdqj+iw2ahrFrA9FSDrYJSAEShWS6s/X/6fmD8xpdaKUpFqG/ecTnUlO6Iyxhkt3lj79Nfu4MWUpo7k6Q==} - - '@eslint-types/typescript-eslint@7.5.0': - resolution: {integrity: sha512-zKvsPBDq6o0L4p2sRtq8fxOtGc+mm37aZSXLsiD4DIRl2kYUxKNO9CKDTAgmuMYUzih9J7lbLxAomreLrdAiVQ==} - - '@eslint-types/unicorn@52.0.0': - resolution: {integrity: sha512-1+Om/IekT0AwlPiARvhbtKsSgVMu3ZAtP99YCzhHkDSnF5f8sQegh8/3ZmMhlCnKipa7/x8qEC7Bn4rbaagnSA==} - '@eslint/compat@1.1.1': resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -855,12 +831,21 @@ packages: '@ts-morph/common@0.24.0': resolution: {integrity: sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==} + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/eslint__js@8.42.3': + resolution: {integrity: sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==} + '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} @@ -2318,6 +2303,10 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -4082,23 +4071,13 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.10.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.10.0(jiti@1.21.6))': dependencies: - eslint: 9.10.0 + eslint: 9.10.0(jiti@1.21.6) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} - '@eslint-types/deprecation@2.0.0-1': {} - - '@eslint-types/jsdoc@48.2.2': {} - - '@eslint-types/prettier@5.1.3': {} - - '@eslint-types/typescript-eslint@7.5.0': {} - - '@eslint-types/unicorn@52.0.0': {} - '@eslint/compat@1.1.1': {} '@eslint/config-array@0.18.0': @@ -4322,10 +4301,10 @@ snapshots: '@shikijs/vscode-textmate@9.2.2': {} - '@stylistic/eslint-plugin@2.8.0(eslint@9.10.0)(typescript@5.5.4)': + '@stylistic/eslint-plugin@2.8.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: - '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.5.4) - eslint: 9.10.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.10.0(jiti@1.21.6) eslint-visitor-keys: 4.0.0 espree: 10.1.0 estraverse: 5.3.0 @@ -4341,12 +4320,23 @@ snapshots: mkdirp: 3.0.1 path-browserify: 1.0.1 + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + + '@types/eslint__js@8.42.3': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree@1.0.5': {} '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 + '@types/json-schema@7.0.15': {} + '@types/linkify-it@5.0.0': {} '@types/markdown-it@14.1.2': @@ -4389,15 +4379,15 @@ snapshots: '@types/node': 20.16.5 optional: true - '@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.5.0(eslint@9.10.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) '@typescript-eslint/scope-manager': 8.5.0 - '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0)(typescript@5.5.4) - '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.5.4) + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.5.0 - eslint: 9.10.0 + eslint: 9.10.0(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -4407,14 +4397,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.5.4)': + '@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 8.5.0 '@typescript-eslint/types': 8.5.0 '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.5.0 debug: 4.3.7(supports-color@8.1.1) - eslint: 9.10.0 + eslint: 9.10.0(jiti@1.21.6) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: @@ -4430,10 +4420,10 @@ snapshots: '@typescript-eslint/types': 8.5.0 '@typescript-eslint/visitor-keys': 8.5.0 - '@typescript-eslint/type-utils@8.5.0(eslint@9.10.0)(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) debug: 4.3.7(supports-color@8.1.1) ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -4476,24 +4466,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@9.10.0)(typescript@5.5.4)': + '@typescript-eslint/utils@7.18.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - eslint: 9.10.0 + eslint: 9.10.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.5.0(eslint@9.10.0)(typescript@5.5.4)': + '@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) '@typescript-eslint/scope-manager': 8.5.0 '@typescript-eslint/types': 8.5.0 '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.5.4) - eslint: 9.10.0 + eslint: 9.10.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript @@ -5421,20 +5411,20 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@9.1.0(eslint@9.10.0): + eslint-config-prettier@9.1.0(eslint@9.10.0(jiti@1.21.6)): dependencies: - eslint: 9.10.0 + eslint: 9.10.0(jiti@1.21.6) eslint-define-config@2.1.0: {} - eslint-plugin-jsdoc@50.2.3(eslint@9.10.0): + eslint-plugin-jsdoc@50.2.3(eslint@9.10.0(jiti@1.21.6)): dependencies: '@es-joy/jsdoccomment': 0.48.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.3.7(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint: 9.10.0 + eslint: 9.10.0(jiti@1.21.6) espree: 10.1.0 esquery: 1.6.0 parse-imports: 2.1.1 @@ -5444,23 +5434,24 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.10.0))(eslint@9.10.0)(prettier@3.3.3): + eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.10.0(jiti@1.21.6)))(eslint@9.10.0(jiti@1.21.6))(prettier@3.3.3): dependencies: - eslint: 9.10.0 + eslint: 9.10.0(jiti@1.21.6) prettier: 3.3.3 prettier-linter-helpers: 1.0.0 synckit: 0.9.1 optionalDependencies: - eslint-config-prettier: 9.1.0(eslint@9.10.0) + '@types/eslint': 9.6.1 + eslint-config-prettier: 9.1.0(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-unicorn@55.0.0(eslint@9.10.0): + eslint-plugin-unicorn@55.0.0(eslint@9.10.0(jiti@1.21.6)): dependencies: '@babel/helper-validator-identifier': 7.24.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.38.1 - eslint: 9.10.0 + eslint: 9.10.0(jiti@1.21.6) esquery: 1.6.0 globals: 15.9.0 indent-string: 4.0.0 @@ -5473,10 +5464,10 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-plugin-vitest@0.5.4(eslint@9.10.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@20.16.5)(@vitest/ui@2.0.5)(jsdom@25.0.0)): + eslint-plugin-vitest@0.5.4(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@20.16.5)(@vitest/ui@2.0.5)(jsdom@25.0.0)): dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0)(typescript@5.5.4) - eslint: 9.10.0 + '@typescript-eslint/utils': 7.18.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.10.0(jiti@1.21.6) optionalDependencies: vitest: 2.0.5(@types/node@20.16.5)(@vitest/ui@2.0.5)(jsdom@25.0.0) transitivePeerDependencies: @@ -5492,9 +5483,9 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.10.0: + eslint@9.10.0(jiti@1.21.6): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) '@eslint-community/regexpp': 4.11.0 '@eslint/config-array': 0.18.0 '@eslint/eslintrc': 3.1.0 @@ -5528,6 +5519,8 @@ snapshots: optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 + optionalDependencies: + jiti: 1.21.6 transitivePeerDependencies: - supports-color @@ -6027,6 +6020,8 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jiti@1.21.6: {} + joycon@3.1.1: {} js-tokens@4.0.0: {} @@ -6506,10 +6501,11 @@ snapshots: pluralize@8.0.0: {} - postcss-load-config@6.0.1(postcss@8.4.47)(tsx@4.19.1)(yaml@2.5.1): + postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(yaml@2.5.1): dependencies: lilconfig: 3.1.2 optionalDependencies: + jiti: 1.21.6 postcss: 8.4.47 tsx: 4.19.1 yaml: 2.5.1 @@ -7017,7 +7013,7 @@ snapshots: tslib@2.7.0: {} - tsup@8.2.4(postcss@8.4.47)(tsx@4.19.1)(typescript@5.5.4)(yaml@2.5.1): + tsup@8.2.4(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.5.4)(yaml@2.5.1): dependencies: bundle-require: 5.0.0(esbuild@0.23.1) cac: 6.7.14 @@ -7029,7 +7025,7 @@ snapshots: globby: 11.1.0 joycon: 3.1.1 picocolors: 1.1.0 - postcss-load-config: 6.0.1(postcss@8.4.47)(tsx@4.19.1)(yaml@2.5.1) + postcss-load-config: 6.0.1(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(yaml@2.5.1) resolve-from: 5.0.0 rollup: 4.21.3 source-map: 0.8.0-beta.0 @@ -7073,11 +7069,11 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.5.0(eslint@9.10.0)(typescript@5.5.4): + typescript-eslint@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4): dependencies: - '@typescript-eslint/eslint-plugin': 8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0)(typescript@5.5.4) - '@typescript-eslint/parser': 8.5.0(eslint@9.10.0)(typescript@5.5.4) - '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: -- cgit v1.2.3