diff --git a/apps/legacy-importer/eslint.config.mjs b/apps/legacy-importer/eslint.config.mjs index 1a2e5c1c9..f8d8aae31 100644 --- a/apps/legacy-importer/eslint.config.mjs +++ b/apps/legacy-importer/eslint.config.mjs @@ -1,13 +1,3 @@ -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; -import js from '@eslint/js'; -import { FlatCompat } from '@eslint/eslintrc'; +import config from '@gw2treasures/eslint-config'; -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); -const compat = new FlatCompat({ - baseDirectory: __dirname, - recommendedConfig: js.configs.recommended, - allConfig: js.configs.all -}); -export default [...compat.extends('@gw2treasures/eslint-config')]; +export default config; diff --git a/apps/legacy-importer/package.json b/apps/legacy-importer/package.json index 7b170fa2e..6d463c644 100644 --- a/apps/legacy-importer/package.json +++ b/apps/legacy-importer/package.json @@ -13,8 +13,6 @@ "gw2-api-types": "0.0.8" }, "devDependencies": { - "@eslint/eslintrc": "3.2.0", - "@eslint/js": "9.16.0", "@gw2treasures/eslint-config": "workspace:*", "@gw2treasures/tsconfig": "workspace:*", "@types/node": "22.10.1", diff --git a/apps/web/eslint.config.mjs b/apps/web/eslint.config.mjs index 0ae76fba6..47df141f7 100644 --- a/apps/web/eslint.config.mjs +++ b/apps/web/eslint.config.mjs @@ -1,4 +1,5 @@ import nextJsPlugin from '@gw2treasures/eslint-plugin-nextjs'; +import reactConfig from '@gw2treasures/eslint-config/react'; import reactCompiler from 'eslint-plugin-react-compiler'; import js from '@eslint/js'; import tseslint from 'typescript-eslint'; @@ -12,7 +13,8 @@ const compat = new FlatCompat({ export default tseslint.config( { ignores: ['.next'] }, - ...compat.extends('next/core-web-vitals', '@gw2treasures/eslint-config/react'), + ...compat.extends('next/core-web-vitals'), + ...reactConfig, { plugins: { '@gw2treasures/nextjs': nextJsPlugin, diff --git a/apps/worker/eslint.config.mjs b/apps/worker/eslint.config.mjs index 1a2e5c1c9..f8d8aae31 100644 --- a/apps/worker/eslint.config.mjs +++ b/apps/worker/eslint.config.mjs @@ -1,13 +1,3 @@ -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; -import js from '@eslint/js'; -import { FlatCompat } from '@eslint/eslintrc'; +import config from '@gw2treasures/eslint-config'; -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); -const compat = new FlatCompat({ - baseDirectory: __dirname, - recommendedConfig: js.configs.recommended, - allConfig: js.configs.all -}); -export default [...compat.extends('@gw2treasures/eslint-config')]; +export default config; diff --git a/apps/worker/package.json b/apps/worker/package.json index 1acbfb644..c93279db4 100644 --- a/apps/worker/package.json +++ b/apps/worker/package.json @@ -24,14 +24,11 @@ "sharp": "0.33.5" }, "devDependencies": { - "@eslint/eslintrc": "3.2.0", - "@eslint/js": "9.16.0", "@gw2api/types": "0.0.22", "@gw2treasures/eslint-config": "workspace:*", "@gw2treasures/tsconfig": "workspace:*", "@types/jest": "29.5.14", "@types/node": "22.10.1", - "@typescript-eslint/parser": "8.17.0", "@vercel/ncc": "0.38.3", "eslint": "9.16.0", "jest": "29.7.0", diff --git a/packages/eslint-config/configs/index.json b/packages/eslint-config/configs/index.json deleted file mode 100644 index 42c86a029..000000000 --- a/packages/eslint-config/configs/index.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/eslintrc", - - "plugins": [ - "@stylistic" - ], - - "env": { - "es6": true - }, - - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module", - "project": true - }, - - "parser": "@typescript-eslint/parser", - - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:import/recommended", - "plugin:import/typescript" - ], - - "rules": { - // `"foo"` → `'foo'` - "@stylistic/quotes": ["warn", "single"], - - // `a => a` → `(a) => a` - "@stylistic/arrow-parens": "warn", - - // `(a)=>a` → `(a) => a` - "@stylistic/arrow-spacing": "warn", - - // `foo( bar )` → `foo(bar)` - "@stylistic/space-in-parens": "warn", - - // disallows multipe spaces - "@stylistic/no-multi-spaces": "warn", - - // disallow multiple empty lines - "@stylistic/no-multiple-empty-lines": "warn", - - // only 1 property per line for objects (enforced only for > 3 properties or multiline values) - "@stylistic/object-curly-newline": ["warn", { "multiline": true, "consistent": true }], - - // `{foo: bar}` → `{ foo: bar }` - "@stylistic/object-curly-spacing": ["warn", "always", { "objectsInObjects": false }], - - // `{ foo:bar }` → `{ foo: bar }` - "@stylistic/key-spacing": "warn", - - // `{ x: x }` → `{ x }` - "object-shorthand": "warn", - - // allows (but does not require) dangling commas in multiline - "@stylistic/comma-dangle": ["warn", "only-multiline"], - - // `foo(bar,baz)` → `foo(bar, baz)` - "@stylistic/comma-spacing": "warn", - - // `1+1` → `1 + 1` - "@stylistic/space-infix-ops": "warn", - - // require semicolon - "@stylistic/semi": "warn", - - // no unnecessary semicolon - "@stylistic/no-extra-semi": ["warn"], - - // disallows async functions not using await - "require-await": "warn", - - // require dependencies to be in package.json - "import/no-extraneous-dependencies": "error", - - // disable import/no-unresolved, ts is already handling this - "import/no-unresolved": "off", - - // `const foo:Bar` → `const foo: Bar` - "@stylistic/type-annotation-spacing": "warn", - - // `class foo_bar` → `class FooBar` - "@typescript-eslint/naming-convention": [ - "warn", - { "selector": "default", "format": null }, - { "selector": "typeLike", "format": ["PascalCase"] } - ] - }, - - "overrides": [{ - "files": ["**/eslint.config.mjs"], - "extends": "plugin:@typescript-eslint/disable-type-checked" - }] -} diff --git a/packages/eslint-config/configs/index.mjs b/packages/eslint-config/configs/index.mjs new file mode 100644 index 000000000..f43ceea5c --- /dev/null +++ b/packages/eslint-config/configs/index.mjs @@ -0,0 +1,85 @@ +import js from "@eslint/js"; +import ts from 'typescript-eslint'; +import importPlugin from 'eslint-plugin-import'; +import stylistic from '@stylistic/eslint-plugin' + +export default ts.config( + js.configs.recommended, + ts.configs.recommended, + importPlugin.flatConfigs.recommended, + importPlugin.flatConfigs.typescript, + { + languageOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + }, + plugins: { + '@stylistic': stylistic + }, + rules: { + // `"foo"` → `'foo'` + "@stylistic/quotes": ["warn", "single"], + + // `a => a` → `(a) => a` + "@stylistic/arrow-parens": "warn", + + // `(a)=>a` → `(a) => a` + "@stylistic/arrow-spacing": "warn", + + // `foo( bar )` → `foo(bar)` + "@stylistic/space-in-parens": "warn", + + // disallows multipe spaces + "@stylistic/no-multi-spaces": "warn", + + // disallow multiple empty lines + "@stylistic/no-multiple-empty-lines": "warn", + + // only 1 property per line for objects (enforced only for > 3 properties or multiline values) + "@stylistic/object-curly-newline": ["warn", { "multiline": true, "consistent": true }], + + // `{foo: bar}` → `{ foo: bar }` + "@stylistic/object-curly-spacing": ["warn", "always", { "objectsInObjects": false }], + + // `{ foo:bar }` → `{ foo: bar }` + "@stylistic/key-spacing": "warn", + + // `{ x: x }` → `{ x }` + "object-shorthand": "warn", + + // allows (but does not require) dangling commas in multiline + "@stylistic/comma-dangle": ["warn", "only-multiline"], + + // `foo(bar,baz)` → `foo(bar, baz)` + "@stylistic/comma-spacing": "warn", + + // `1+1` → `1 + 1` + "@stylistic/space-infix-ops": "warn", + + // require semicolon + "@stylistic/semi": "warn", + + // no unnecessary semicolon + "@stylistic/no-extra-semi": ["warn"], + + // disallows async functions not using await + "require-await": "warn", + + // require dependencies to be in package.json + "import/no-extraneous-dependencies": "error", + + // disable import/no-unresolved, ts is already handling this + "import/no-unresolved": "off", + + // `const foo:Bar` → `const foo: Bar` + "@stylistic/type-annotation-spacing": "warn", + + // `class foo_bar` → `class FooBar` + "@typescript-eslint/naming-convention": [ + "warn", + { "selector": "default", "format": null }, + { "selector": "typeLike", "format": ["PascalCase"] } + ] + } + } +); diff --git a/packages/eslint-config/configs/react.json b/packages/eslint-config/configs/react.json deleted file mode 100644 index 214f43ea5..000000000 --- a/packages/eslint-config/configs/react.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/eslintrc", - - "extends": [ - "plugin:react/recommended", - "plugin:react/jsx-runtime", - "@gw2treasures/eslint-config" - ], - - "rules": { - // `` → `` - "@stylistic/jsx-quotes": ["warn", "prefer-double"], - - // `< C / >` → `` - "@stylistic/jsx-tag-spacing": ["warn", { - "closingSlash": "never", - "beforeSelfClosing": "never", - "afterOpening": "never", - "beforeClosing": "never" - }], - - // `` → `` - "@stylistic/jsx-curly-brace-presence": ["warn", "never"], - - // add parens around jsx - "@stylistic/jsx-wrap-multilines": ["warn", { - "declaration": "parens-new-line", - "assignment": "parens-new-line", - "return": "parens-new-line", - "arrow": "parens-new-line", - "condition": "parens-new-line", - "logical": "parens-new-line", - "prop": "parens-new-line" - }], - - // multiline closing bracket location - "@stylistic/jsx-closing-bracket-location": ["warn", { - "nonEmpty": "line-aligned", - "selfClosing": "after-props" - }], - - // indent jsx with 2 spaces - "@stylistic/jsx-indent": ["warn", 2, { "checkAttributes": true, "indentLogicalExpressions": true }], - - // indent props with 2 spaces - "@stylistic/jsx-indent-props": ["warn", 2], - - // disallows using the array index as key - "react/no-array-index-key": "warn", - - // `` → `` - "react/self-closing-comp": "warn", - - // `` → `` - "react/jsx-boolean-value": "warn", - - // align the closing JSX tag with the opening tag - "@stylistic/jsx-closing-tag-location": "warn", - - // `` → `<>` - "react/jsx-fragments": "warn", - - // require key - "react/jsx-key": ["warn", { "checkFragmentShorthand": true }], - - // prevent multiple spaces in jsx - "@stylistic/jsx-props-no-multi-spaces": "warn", - - // `` → `` - "@stylistic/jsx-curly-spacing": "warn", - - // disable next rules - "@next/next/no-html-link-for-pages": "off" - } -} diff --git a/packages/eslint-config/configs/react.mjs b/packages/eslint-config/configs/react.mjs new file mode 100644 index 000000000..069d83d29 --- /dev/null +++ b/packages/eslint-config/configs/react.mjs @@ -0,0 +1,73 @@ +import ts from 'typescript-eslint'; +import react from 'eslint-plugin-react'; +import config from './index.mjs'; + +export default ts.config( + react.configs.flat.recommended, + react.configs.flat['jsx-runtime'], + config, + { + rules: { + // `` → `` + "@stylistic/jsx-quotes": ["warn", "prefer-double"], + + // `< C / >` → `` + "@stylistic/jsx-tag-spacing": ["warn", { + "closingSlash": "never", + "beforeSelfClosing": "never", + "afterOpening": "never", + "beforeClosing": "never" + }], + + // `` → `` + "@stylistic/jsx-curly-brace-presence": ["warn", "never"], + + // add parens around jsx + "@stylistic/jsx-wrap-multilines": ["warn", { + "declaration": "parens-new-line", + "assignment": "parens-new-line", + "return": "parens-new-line", + "arrow": "parens-new-line", + "condition": "parens-new-line", + "logical": "parens-new-line", + "prop": "parens-new-line" + }], + + // multiline closing bracket location + "@stylistic/jsx-closing-bracket-location": ["warn", { + "nonEmpty": "line-aligned", + "selfClosing": "after-props" + }], + + // indent jsx with 2 spaces + "@stylistic/jsx-indent": ["warn", 2, { "checkAttributes": true, "indentLogicalExpressions": true }], + + // indent props with 2 spaces + "@stylistic/jsx-indent-props": ["warn", 2], + + // disallows using the array index as key + "react/no-array-index-key": "warn", + + // `` → `` + "react/self-closing-comp": "warn", + + // `` → `` + "react/jsx-boolean-value": "warn", + + // align the closing JSX tag with the opening tag + "@stylistic/jsx-closing-tag-location": "warn", + + // `` → `<>` + "react/jsx-fragments": "warn", + + // require key + "react/jsx-key": ["warn", { "checkFragmentShorthand": true }], + + // prevent multiple spaces in jsx + "@stylistic/jsx-props-no-multi-spaces": "warn", + + // `` → `` + "@stylistic/jsx-curly-spacing": "warn", + } + } +); diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 20efa81fe..6ca895b85 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -3,8 +3,8 @@ "version": "0.0.6", "description": "ESLint config for gw2treasures", "exports": { - ".": "./configs/index.json", - "./react": "./configs/react.json" + ".": "./configs/index.mjs", + "./react": "./configs/react.mjs" }, "scripts": { "publish-package": "gw2treasures-publish-package" @@ -28,11 +28,11 @@ }, "homepage": "https://github.com/GW2Treasures/gw2treasures.com#readme", "dependencies": { + "@eslint/js": "9.16.0", "@stylistic/eslint-plugin": "2.11.0", - "@typescript-eslint/eslint-plugin": "8.17.0", - "@typescript-eslint/parser": "8.17.0", "eslint-plugin-import": "2.31.0", - "eslint-plugin-react": "7.37.2" + "eslint-plugin-react": "7.37.2", + "typescript-eslint": "8.17.0" }, "peerDependencies": { "eslint": "^9.16.0" diff --git a/packages/eslint-plugin-nextjs/eslint.config.mjs b/packages/eslint-plugin-nextjs/eslint.config.mjs index db01fae88..86e81eeb8 100644 --- a/packages/eslint-plugin-nextjs/eslint.config.mjs +++ b/packages/eslint-plugin-nextjs/eslint.config.mjs @@ -1,17 +1,6 @@ -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; -import js from '@eslint/js'; -import { FlatCompat } from '@eslint/eslintrc'; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); -const compat = new FlatCompat({ - baseDirectory: __dirname, - recommendedConfig: js.configs.recommended, - allConfig: js.configs.all -}); +import config from '@gw2treasures/eslint-config'; export default [ { ignores: ['dist/**/*'] }, - ...compat.extends('@gw2treasures/eslint-config') + ...config, ]; diff --git a/packages/eslint-plugin-nextjs/package.json b/packages/eslint-plugin-nextjs/package.json index 60e567e7d..c82eaa4a8 100644 --- a/packages/eslint-plugin-nextjs/package.json +++ b/packages/eslint-plugin-nextjs/package.json @@ -33,8 +33,6 @@ "@typescript-eslint/utils": "8.17.0" }, "devDependencies": { - "@eslint/eslintrc": "3.2.0", - "@eslint/js": "9.16.0", "@gw2treasures/eslint-config": "workspace:*", "@gw2treasures/tsconfig": "workspace:*", "eslint": "9.16.0", diff --git a/packages/helper/eslint.config.mjs b/packages/helper/eslint.config.mjs index 1a2e5c1c9..f8d8aae31 100644 --- a/packages/helper/eslint.config.mjs +++ b/packages/helper/eslint.config.mjs @@ -1,13 +1,3 @@ -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; -import js from '@eslint/js'; -import { FlatCompat } from '@eslint/eslintrc'; +import config from '@gw2treasures/eslint-config'; -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); -const compat = new FlatCompat({ - baseDirectory: __dirname, - recommendedConfig: js.configs.recommended, - allConfig: js.configs.all -}); -export default [...compat.extends('@gw2treasures/eslint-config')]; +export default config; diff --git a/packages/helper/package.json b/packages/helper/package.json index 382976a1f..f16bad9ce 100644 --- a/packages/helper/package.json +++ b/packages/helper/package.json @@ -34,8 +34,6 @@ }, "homepage": "https://github.com/GW2Treasures/gw2treasures.com#readme", "devDependencies": { - "@eslint/eslintrc": "3.2.0", - "@eslint/js": "9.16.0", "@gw2treasures/eslint-config": "workspace:*", "@gw2treasures/tsconfig": "workspace:*", "eslint": "9.16.0", diff --git a/packages/publish-package/eslint.config.mjs b/packages/publish-package/eslint.config.mjs index ab1d91573..f8d8aae31 100644 --- a/packages/publish-package/eslint.config.mjs +++ b/packages/publish-package/eslint.config.mjs @@ -1,17 +1,3 @@ -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; -import js from '@eslint/js'; -import { FlatCompat } from '@eslint/eslintrc'; +import config from '@gw2treasures/eslint-config'; -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); -const compat = new FlatCompat({ - baseDirectory: __dirname, - recommendedConfig: js.configs.recommended, - allConfig: js.configs.all -}); - -export default [ - { ignores: ['**/bin/'] }, - ...compat.extends('@gw2treasures/eslint-config') -]; +export default config; diff --git a/packages/publish-package/package.json b/packages/publish-package/package.json index ccecdc6c7..3ce8e689b 100644 --- a/packages/publish-package/package.json +++ b/packages/publish-package/package.json @@ -32,8 +32,6 @@ }, "homepage": "https://github.com/GW2Treasures/gw2treasures.com#readme", "devDependencies": { - "@eslint/eslintrc": "3.2.0", - "@eslint/js": "9.16.0", "@gw2treasures/eslint-config": "workspace:*", "@gw2treasures/tsconfig": "workspace:*", "@types/node": "22.10.1", diff --git a/packages/ui/eslint.config.mjs b/packages/ui/eslint.config.mjs index 10b2bbc77..45bab6ffa 100644 --- a/packages/ui/eslint.config.mjs +++ b/packages/ui/eslint.config.mjs @@ -1,20 +1,3 @@ -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; -import js from '@eslint/js'; -import { FlatCompat } from '@eslint/eslintrc'; +import config from '@gw2treasures/eslint-config/react'; -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); -const compat = new FlatCompat({ - baseDirectory: __dirname, - recommendedConfig: js.configs.recommended, - allConfig: js.configs.all -}); - -const eslintConfig = [ - { ignores: ['components/Table/comparable-properties.ts'] }, - ...compat.extends('next/core-web-vitals', '@gw2treasures/eslint-config/react'), - { rules: { '@next/next/no-html-link-for-pages': 'off' }} -]; - -export default eslintConfig; +export default config; diff --git a/packages/ui/package.json b/packages/ui/package.json index b1cfa4325..9a82806ec 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -34,8 +34,6 @@ "server-only": "0.0.1" }, "devDependencies": { - "@eslint/eslintrc": "3.2.0", - "@eslint/js": "9.16.0", "@gw2treasures/eslint-config": "workspace:*", "@types/react": "19.0.1", "@types/react-dom": "19.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d6a9aee24..998293d7e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,12 +39,6 @@ importers: specifier: 0.0.8 version: 0.0.8 devDependencies: - '@eslint/eslintrc': - specifier: 3.2.0 - version: 3.2.0 - '@eslint/js': - specifier: 9.16.0 - version: 9.16.0 '@gw2treasures/eslint-config': specifier: workspace:* version: link:../../packages/eslint-config @@ -299,12 +293,6 @@ importers: specifier: 0.33.5 version: 0.33.5 devDependencies: - '@eslint/eslintrc': - specifier: 3.2.0 - version: 3.2.0 - '@eslint/js': - specifier: 9.16.0 - version: 9.16.0 '@gw2api/types': specifier: 0.0.22 version: 0.0.22 @@ -320,9 +308,6 @@ importers: '@types/node': specifier: 22.10.1 version: 22.10.1 - '@typescript-eslint/parser': - specifier: 8.17.0 - version: 8.17.0(eslint@9.16.0)(typescript@5.7.2) '@vercel/ncc': specifier: 0.38.3 version: 0.38.3 @@ -363,24 +348,24 @@ importers: packages/eslint-config: dependencies: + '@eslint/js': + specifier: 9.16.0 + version: 9.16.0 '@stylistic/eslint-plugin': specifier: 2.11.0 version: 2.11.0(eslint@9.16.0)(typescript@5.7.2) - '@typescript-eslint/eslint-plugin': - specifier: 8.17.0 - version: 8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)(typescript@5.7.2) - '@typescript-eslint/parser': - specifier: 8.17.0 - version: 8.17.0(eslint@9.16.0)(typescript@5.7.2) eslint: specifier: ^9.16.0 version: 9.16.0 eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0))(eslint@9.16.0))(eslint@9.16.0) + version: 2.31.0(eslint@9.16.0) eslint-plugin-react: specifier: 7.37.2 version: 7.37.2(eslint@9.16.0) + typescript-eslint: + specifier: 8.17.0 + version: 8.17.0(eslint@9.16.0)(typescript@5.7.2) packages/eslint-plugin-nextjs: dependencies: @@ -388,12 +373,6 @@ importers: specifier: 8.17.0 version: 8.17.0(eslint@9.16.0)(typescript@5.7.2) devDependencies: - '@eslint/eslintrc': - specifier: 3.2.0 - version: 3.2.0 - '@eslint/js': - specifier: 9.16.0 - version: 9.16.0 '@gw2treasures/eslint-config': specifier: workspace:* version: link:../eslint-config @@ -412,12 +391,6 @@ importers: packages/helper: devDependencies: - '@eslint/eslintrc': - specifier: 3.2.0 - version: 3.2.0 - '@eslint/js': - specifier: 9.16.0 - version: 9.16.0 '@gw2treasures/eslint-config': specifier: workspace:* version: link:../eslint-config @@ -464,12 +437,6 @@ importers: packages/publish-package: devDependencies: - '@eslint/eslintrc': - specifier: 3.2.0 - version: 3.2.0 - '@eslint/js': - specifier: 9.16.0 - version: 9.16.0 '@gw2treasures/eslint-config': specifier: workspace:* version: link:../eslint-config @@ -521,12 +488,6 @@ importers: specifier: 0.0.1 version: 0.0.1 devDependencies: - '@eslint/eslintrc': - specifier: 3.2.0 - version: 3.2.0 - '@eslint/js': - specifier: 9.16.0 - version: 9.16.0 '@gw2treasures/eslint-config': specifier: workspace:* version: link:../eslint-config @@ -6424,8 +6385,8 @@ snapshots: '@typescript-eslint/parser': 8.17.0(eslint@9.16.0)(typescript@5.7.2) eslint: 9.16.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0))(eslint@9.16.0) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0))(eslint@9.16.0))(eslint@9.16.0) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.16.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@9.16.0) eslint-plugin-jsx-a11y: 6.10.0(eslint@9.16.0) eslint-plugin-react: 7.37.2(eslint@9.16.0) eslint-plugin-react-hooks: 5.0.0(eslint@9.16.0) @@ -6457,37 +6418,37 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0))(eslint@9.16.0): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.16.0): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7 enhanced-resolve: 5.17.0 eslint: 9.16.0 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0))(eslint@9.16.0))(eslint@9.16.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.16.0) fast-glob: 3.3.2 get-tsconfig: 4.7.5 is-bun-module: 1.1.0 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0))(eslint@9.16.0))(eslint@9.16.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@9.16.0) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0))(eslint@9.16.0))(eslint@9.16.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.16.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.17.0(eslint@9.16.0)(typescript@5.7.2) eslint: 9.16.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0))(eslint@9.16.0) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.16.0) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0))(eslint@9.16.0))(eslint@9.16.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@9.16.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -6498,7 +6459,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.16.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0))(eslint@9.16.0))(eslint@9.16.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.16.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -6516,6 +6477,33 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-import@2.31.0(eslint@9.16.0): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.16.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.16.0) + hasown: 2.0.2 + is-core-module: 2.15.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + string.prototype.trimend: 1.0.8 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + eslint-plugin-jsx-a11y@6.10.0(eslint@9.16.0): dependencies: aria-query: 5.1.3