From 05b65027f7c6ff8354db98f883359e2f0e724a86 Mon Sep 17 00:00:00 2001 From: "Azat S." Date: Fri, 2 Aug 2024 19:11:23 +0300 Subject: [PATCH] feat: move to typescript-eslint v8 --- package.json | 15 +- pnpm-lock.yaml | 525 ++++++++++++------------ rules/sort-enums.ts | 6 +- rules/sort-jsx-props.ts | 219 +++++----- test/fixtures/file.astro | 0 test/fixtures/file.svelte | 0 test/fixtures/file.ts | 0 test/fixtures/file.vue | 0 test/fixtures/react.tsx | 0 test/fixtures/tsconfig.json | 12 + test/sort-array-includes.test.ts | 4 +- test/sort-astro-attributes.test.ts | 195 ++++----- test/sort-classes.test.ts | 4 +- test/sort-enums.test.ts | 4 +- test/sort-exports.test.ts | 4 +- test/sort-imports.test.ts | 4 +- test/sort-interfaces.test.ts | 4 +- test/sort-intersection-types.test.ts | 4 +- test/sort-jsx-props.test.ts | 32 +- test/sort-maps.test.ts | 4 +- test/sort-named-exports.test.ts | 4 +- test/sort-named-imports.test.ts | 4 +- test/sort-object-types.test.ts | 103 +++-- test/sort-objects.test.ts | 80 ++-- test/sort-svelte-attributes.test.ts | 197 ++++----- test/sort-switch-case.test.ts | 394 +++++++++++++++++- test/sort-union-types.test.ts | 4 +- test/sort-variable-declarations.test.ts | 4 +- test/sort-vue-attributes.test.ts | 113 ++--- 29 files changed, 1179 insertions(+), 760 deletions(-) create mode 100644 test/fixtures/file.astro create mode 100644 test/fixtures/file.svelte create mode 100644 test/fixtures/file.ts create mode 100644 test/fixtures/file.vue create mode 100644 test/fixtures/react.tsx create mode 100644 test/fixtures/tsconfig.json diff --git a/package.json b/package.json index ec1bf23a9..02e604d4c 100644 --- a/package.json +++ b/package.json @@ -71,8 +71,8 @@ "vue-eslint-parser": ">=9.0.0" }, "dependencies": { - "@typescript-eslint/types": "^7.18.0", - "@typescript-eslint/utils": "^7.18.0", + "@typescript-eslint/types": "^8.0.0", + "@typescript-eslint/utils": "^8.0.0", "minimatch": "^10.0.1", "natural-compare-lite": "^1.4.0" }, @@ -95,9 +95,9 @@ "@types/natural-compare-lite": "^1.4.2", "@types/node": "^22.0.1", "@types/unist": "^3.0.2", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", - "@typescript-eslint/rule-tester": "^7.18.0", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", + "@typescript-eslint/rule-tester": "^8.0.0", "@typescript-eslint/types": "^6.13.0", "@vercel/og": "^0.6.2", "@vitest/coverage-v8": "^2.0.5", @@ -107,7 +107,7 @@ "changelogen": "^0.5.5", "clean-publish": "^5.0.0", "cspell": "^8.13.0", - "eslint": "^8.57.0", + "eslint": "^9.8.0", "eslint-plugin-astro": "^1.2.3", "eslint-plugin-eslint-plugin": "^6.2.0", "eslint-plugin-import": "^2.29.1", @@ -150,6 +150,7 @@ "vite": "^5.3.5", "vite-plugin-dts": "4.0.0-beta.2", "vite-plugin-lightningcss": "^0.0.5", - "vitest": "^2.0.5" + "vitest": "^2.0.5", + "vue-eslint-parser": "^9.4.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8672500e2..d0c9093da 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,20 +9,17 @@ importers: .: dependencies: '@typescript-eslint/types': - specifier: ^7.18.0 - version: 7.18.0 + specifier: ^8.0.0 + version: 8.0.0 '@typescript-eslint/utils': - specifier: ^7.18.0 - version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) + specifier: ^8.0.0 + version: 8.0.0(eslint@9.8.0)(typescript@5.5.4) minimatch: specifier: ^10.0.1 version: 10.0.1 natural-compare-lite: specifier: ^1.4.0 version: 1.4.0 - vue-eslint-parser: - specifier: '>=9.0.0' - version: 9.4.3(eslint@8.57.0) devDependencies: '@astrojs/check': specifier: ^0.9.1 @@ -38,7 +35,7 @@ importers: version: 5.7.0(astro@4.12.3(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)(typescript@5.5.4))(svelte@5.0.0-next.205)(typescript@5.5.4)(vite@5.3.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)) '@azat-io/eslint-config-astro': specifier: ^1.10.0 - version: 1.10.0(6slw32i2zuaxbzk6aevhv5alzy) + version: 1.10.0(utep4wi4wfftztiq7t3mjnrqku) '@azat-io/stylelint-config': specifier: ^0.1.1 version: 0.1.1(stylelint-config-recess-order@5.0.1(stylelint@16.8.1(typescript@5.5.4)))(stylelint-gamut@1.3.4(stylelint@16.8.1(typescript@5.5.4)))(stylelint-order@6.0.4(stylelint@16.8.1(typescript@5.5.4)))(stylelint-plugin-logical-css@1.2.1(stylelint@16.8.1(typescript@5.5.4)))(stylelint@16.8.1(typescript@5.5.4)) @@ -79,14 +76,14 @@ importers: specifier: ^3.0.2 version: 3.0.2 '@typescript-eslint/eslint-plugin': - specifier: ^7.18.0 - version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + specifier: ^8.0.0 + version: 8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) '@typescript-eslint/parser': - specifier: ^7.18.0 - version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) + specifier: ^8.0.0 + version: 8.0.0(eslint@9.8.0)(typescript@5.5.4) '@typescript-eslint/rule-tester': - specifier: ^7.18.0 - version: 7.18.0(@eslint/eslintrc@3.1.0)(eslint@8.57.0)(typescript@5.5.4) + specifier: ^8.0.0 + version: 8.0.0(@eslint/eslintrc@3.1.0)(eslint@9.8.0)(typescript@5.5.4) '@vercel/og': specifier: ^0.6.2 version: 0.6.2 @@ -112,47 +109,47 @@ importers: specifier: ^8.13.0 version: 8.13.0 eslint: - specifier: ^8.57.0 - version: 8.57.0 + specifier: ^9.8.0 + version: 9.8.0 eslint-plugin-astro: specifier: ^1.2.3 - version: 1.2.3(eslint@8.57.0)(typescript@5.5.4) + version: 1.2.3(eslint@9.8.0)(typescript@5.5.4) eslint-plugin-eslint-plugin: specifier: ^6.2.0 - version: 6.2.0(eslint@8.57.0) + version: 6.2.0(eslint@9.8.0) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0) eslint-plugin-jsx-a11y: specifier: ^6.9.0 - version: 6.9.0(eslint@8.57.0) + version: 6.9.0(eslint@9.8.0) eslint-plugin-n: specifier: ^17.10.1 - version: 17.10.1(eslint@8.57.0) + version: 17.10.1(eslint@9.8.0) eslint-plugin-node-import: specifier: ^1.0.4 - version: 1.0.4(eslint@8.57.0) + version: 1.0.4(eslint@9.8.0) eslint-plugin-perfectionist: specifier: ^3.0.0 - version: 3.0.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@8.57.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.205))(svelte@5.0.0-next.205)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@8.57.0)) + version: 3.0.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.205))(svelte@5.0.0-next.205)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.8.0)) eslint-plugin-prefer-arrow: specifier: ^1.2.3 - version: 1.2.3(eslint@8.57.0) + version: 1.2.3(eslint@9.8.0) eslint-plugin-prefer-let: specifier: ^4.0.0 version: 4.0.0 eslint-plugin-promise: specifier: ^7.0.0 - version: 7.0.0(eslint@8.57.0) + version: 7.0.0(eslint@9.8.0) eslint-plugin-sonarjs: specifier: 1.0.4 - version: 1.0.4(eslint@8.57.0) + version: 1.0.4(eslint@9.8.0) eslint-plugin-unicorn: specifier: ^55.0.0 - version: 55.0.0(eslint@8.57.0) + version: 55.0.0(eslint@9.8.0) eslint-plugin-vitest: specifier: ^0.5.4 - version: 0.5.4(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)) + version: 0.5.4(@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)) execa: specifier: ^9.3.0 version: 9.3.0 @@ -243,6 +240,9 @@ importers: vitest: specifier: ^2.0.5 version: 2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3) + vue-eslint-parser: + specifier: ^9.4.3 + version: 9.4.3(eslint@9.8.0) packages: @@ -917,30 +917,29 @@ packages: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/config-array@0.17.1': + resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.1.0': resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@9.8.0': + resolution: {integrity: sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.3.0': + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} '@img/sharp-darwin-arm64@0.33.4': resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==} @@ -1398,43 +1397,46 @@ packages: '@types/unist@3.0.2': resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - '@typescript-eslint/eslint-plugin@7.18.0': - resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/eslint-plugin@8.0.0': + resolution: {integrity: sha512-STIZdwEQRXAHvNUS6ILDf5z3u95Gc8jzywunxSNqX00OooIemaaNIA0vEgynJlycL5AjabYLLrIyHd4iazyvtg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/parser@7.18.0': - resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/parser@8.0.0': + resolution: {integrity: sha512-pS1hdZ+vnrpDIxuFXYQpLTILglTjSYJ9MbetZctrUawogUsPdz31DIIRZ9+rab0LhYNTsk88w4fIzVheiTbWOQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/rule-tester@7.18.0': - resolution: {integrity: sha512-ClrFQlwen9pJcYPIBLuarzBpONQAwjmJ0+YUjAo1TGzoZFJPyUK/A7bb4Mps0u+SMJJnFXbfMN8I9feQDf0O5A==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/rule-tester@8.0.0': + resolution: {integrity: sha512-mYINoxt2DnRDl+X0Er134e6lxTrpb6enfKkea4RIjucd+YjsLzTSSkN40hiU4CB5kOjM17xJVm25TiZJLZMRMw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@eslint/eslintrc': '>=2' - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 '@typescript-eslint/scope-manager@7.18.0': resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@7.18.0': - resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@8.0.0': + resolution: {integrity: sha512-V0aa9Csx/ZWWv2IPgTfY7T4agYwJyILESu/PVqFtTFz9RIS823mAze+NbnBI8xiwdX3iqeQbcTYlvB04G9wyQw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.0.0': + resolution: {integrity: sha512-mJAFP2mZLTBwAn5WI4PMakpywfWFH5nQZezUQdSKV23Pqo6o9iShQg1hP2+0hJJXP2LnZkWPphdIq4juYYwCeg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: @@ -1444,6 +1446,10 @@ packages: resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/types@8.0.0': + resolution: {integrity: sha512-wgdSGs9BTMWQ7ooeHtu5quddKKs5Z5dS+fHLbrQI+ID0XWJLODGMHRfhwImiHoeO2S5Wir2yXuadJN6/l4JRxw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@7.18.0': resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} engines: {node: ^18.18.0 || >=20.0.0} @@ -1453,16 +1459,35 @@ packages: typescript: optional: true + '@typescript-eslint/typescript-estree@8.0.0': + resolution: {integrity: sha512-5b97WpKMX+Y43YKi4zVcCVLtK5F98dFls3Oxui8LbnmRsseKenbbDinmvxrWegKDMmlkIq/XHuyy0UGLtpCDKg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/utils@7.18.0': resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 + '@typescript-eslint/utils@8.0.0': + resolution: {integrity: sha512-k/oS/A/3QeGLRvOWCg6/9rATJL5rec7/5s1YmdS0ZU6LHveJyGFwBvLhSRBv6i9xaj7etmosp+l+ViN1I9Aj/Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/visitor-keys@7.18.0': resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@8.0.0': + resolution: {integrity: sha512-oN0K4nkHuOyF3PVMyETbpP5zp6wfyOvm7tWhTMfoqxSSsPmJIh6JNASuZDlODE8eE+0EB9uar+6+vxr9DBTYOA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -2283,10 +2308,6 @@ packages: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -2574,9 +2595,9 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint@9.8.0: + resolution: {integrity: sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true esm-env@1.0.0: @@ -2695,9 +2716,9 @@ packages: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} file-entry-cache@9.0.0: resolution: {integrity: sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==} @@ -2726,9 +2747,9 @@ packages: find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} flat-cache@5.0.0: resolution: {integrity: sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==} @@ -2864,10 +2885,6 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -4316,11 +4333,6 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rollup@4.19.1: resolution: {integrity: sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -4831,10 +4843,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} @@ -5401,65 +5409,65 @@ snapshots: transitivePeerDependencies: - supports-color - '@azat-io/eslint-config-astro@1.10.0(6slw32i2zuaxbzk6aevhv5alzy)': + '@azat-io/eslint-config-astro@1.10.0(utep4wi4wfftztiq7t3mjnrqku)': dependencies: - '@azat-io/eslint-config-typescript': 1.10.0(zj56tcgpmy2c3637zqqf3rdwnq) - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@azat-io/eslint-config-typescript': 1.10.0(snw2epr7czxtgtx437abfcna4a) + '@typescript-eslint/eslint-plugin': 8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.0.0(eslint@9.8.0)(typescript@5.5.4) astro-eslint-parser: 1.0.2(typescript@5.5.4) - eslint: 8.57.0 - eslint-plugin-astro: 1.2.3(eslint@8.57.0)(typescript@5.5.4) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) - eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) - eslint-plugin-n: 17.10.1(eslint@8.57.0) - eslint-plugin-perfectionist: 3.0.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@8.57.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.205))(svelte@5.0.0-next.205)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@8.57.0)) - eslint-plugin-prefer-arrow: 1.2.3(eslint@8.57.0) + eslint: 9.8.0 + eslint-plugin-astro: 1.2.3(eslint@9.8.0)(typescript@5.5.4) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0) + eslint-plugin-jsx-a11y: 6.9.0(eslint@9.8.0) + eslint-plugin-n: 17.10.1(eslint@9.8.0) + eslint-plugin-perfectionist: 3.0.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.205))(svelte@5.0.0-next.205)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.8.0)) + eslint-plugin-prefer-arrow: 1.2.3(eslint@9.8.0) eslint-plugin-prefer-let: 4.0.0 - eslint-plugin-promise: 7.0.0(eslint@8.57.0) - eslint-plugin-sonarjs: 1.0.4(eslint@8.57.0) - eslint-plugin-unicorn: 55.0.0(eslint@8.57.0) - eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)) + eslint-plugin-promise: 7.0.0(eslint@9.8.0) + eslint-plugin-sonarjs: 1.0.4(eslint@9.8.0) + eslint-plugin-unicorn: 55.0.0(eslint@9.8.0) + eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)) transitivePeerDependencies: - eslint-import-resolver-node - eslint-import-resolver-webpack - eslint-plugin-node-import - supports-color - '@azat-io/eslint-config-typescript@1.10.0(zj56tcgpmy2c3637zqqf3rdwnq)': - dependencies: - '@azat-io/eslint-config': 1.10.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint-plugin-n@17.10.1(eslint@8.57.0))(eslint-plugin-node-import@1.0.4(eslint@8.57.0))(eslint-plugin-perfectionist@3.0.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@8.57.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.205))(svelte@5.0.0-next.205)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@8.57.0)))(eslint-plugin-prefer-arrow@1.2.3(eslint@8.57.0))(eslint-plugin-prefer-let@4.0.0)(eslint-plugin-promise@7.0.0(eslint@8.57.0))(eslint-plugin-sonarjs@1.0.4(eslint@8.57.0))(eslint-plugin-unicorn@55.0.0(eslint@8.57.0))(eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)))(eslint@8.57.0) - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) - eslint-plugin-n: 17.10.1(eslint@8.57.0) - eslint-plugin-perfectionist: 3.0.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@8.57.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.205))(svelte@5.0.0-next.205)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@8.57.0)) - eslint-plugin-prefer-arrow: 1.2.3(eslint@8.57.0) + '@azat-io/eslint-config-typescript@1.10.0(snw2epr7czxtgtx437abfcna4a)': + dependencies: + '@azat-io/eslint-config': 1.10.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0))(eslint-plugin-n@17.10.1(eslint@9.8.0))(eslint-plugin-node-import@1.0.4(eslint@9.8.0))(eslint-plugin-perfectionist@3.0.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.205))(svelte@5.0.0-next.205)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.8.0)))(eslint-plugin-prefer-arrow@1.2.3(eslint@9.8.0))(eslint-plugin-prefer-let@4.0.0)(eslint-plugin-promise@7.0.0(eslint@9.8.0))(eslint-plugin-sonarjs@1.0.4(eslint@9.8.0))(eslint-plugin-unicorn@55.0.0(eslint@9.8.0))(eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)))(eslint@9.8.0) + '@typescript-eslint/eslint-plugin': 8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.0.0(eslint@9.8.0)(typescript@5.5.4) + eslint: 9.8.0 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0))(eslint@9.8.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0) + eslint-plugin-n: 17.10.1(eslint@9.8.0) + eslint-plugin-perfectionist: 3.0.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.205))(svelte@5.0.0-next.205)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.8.0)) + eslint-plugin-prefer-arrow: 1.2.3(eslint@9.8.0) eslint-plugin-prefer-let: 4.0.0 - eslint-plugin-promise: 7.0.0(eslint@8.57.0) - eslint-plugin-sonarjs: 1.0.4(eslint@8.57.0) - eslint-plugin-unicorn: 55.0.0(eslint@8.57.0) - eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)) + eslint-plugin-promise: 7.0.0(eslint@9.8.0) + eslint-plugin-sonarjs: 1.0.4(eslint@9.8.0) + eslint-plugin-unicorn: 55.0.0(eslint@9.8.0) + eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)) transitivePeerDependencies: - eslint-import-resolver-node - eslint-import-resolver-webpack - eslint-plugin-node-import - supports-color - '@azat-io/eslint-config@1.10.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint-plugin-n@17.10.1(eslint@8.57.0))(eslint-plugin-node-import@1.0.4(eslint@8.57.0))(eslint-plugin-perfectionist@3.0.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@8.57.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.205))(svelte@5.0.0-next.205)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@8.57.0)))(eslint-plugin-prefer-arrow@1.2.3(eslint@8.57.0))(eslint-plugin-prefer-let@4.0.0)(eslint-plugin-promise@7.0.0(eslint@8.57.0))(eslint-plugin-sonarjs@1.0.4(eslint@8.57.0))(eslint-plugin-unicorn@55.0.0(eslint@8.57.0))(eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)))(eslint@8.57.0)': + '@azat-io/eslint-config@1.10.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0))(eslint-plugin-n@17.10.1(eslint@9.8.0))(eslint-plugin-node-import@1.0.4(eslint@9.8.0))(eslint-plugin-perfectionist@3.0.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.205))(svelte@5.0.0-next.205)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.8.0)))(eslint-plugin-prefer-arrow@1.2.3(eslint@9.8.0))(eslint-plugin-prefer-let@4.0.0)(eslint-plugin-promise@7.0.0(eslint@9.8.0))(eslint-plugin-sonarjs@1.0.4(eslint@9.8.0))(eslint-plugin-unicorn@55.0.0(eslint@9.8.0))(eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)))(eslint@9.8.0)': dependencies: - eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) - eslint-plugin-n: 17.10.1(eslint@8.57.0) - eslint-plugin-node-import: 1.0.4(eslint@8.57.0) - eslint-plugin-perfectionist: 3.0.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@8.57.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.205))(svelte@5.0.0-next.205)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@8.57.0)) - eslint-plugin-prefer-arrow: 1.2.3(eslint@8.57.0) + eslint: 9.8.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0) + eslint-plugin-n: 17.10.1(eslint@9.8.0) + eslint-plugin-node-import: 1.0.4(eslint@9.8.0) + eslint-plugin-perfectionist: 3.0.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.205))(svelte@5.0.0-next.205)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.8.0)) + eslint-plugin-prefer-arrow: 1.2.3(eslint@9.8.0) eslint-plugin-prefer-let: 4.0.0 - eslint-plugin-promise: 7.0.0(eslint@8.57.0) - eslint-plugin-sonarjs: 1.0.4(eslint@8.57.0) - eslint-plugin-unicorn: 55.0.0(eslint@8.57.0) - eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)) + eslint-plugin-promise: 7.0.0(eslint@9.8.0) + eslint-plugin-sonarjs: 1.0.4(eslint@9.8.0) + eslint-plugin-unicorn: 55.0.0(eslint@9.8.0) + eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)) globals: 15.8.0 '@azat-io/stylelint-config@0.1.1(stylelint-config-recess-order@5.0.1(stylelint@16.8.1(typescript@5.5.4)))(stylelint-gamut@1.3.4(stylelint@16.8.1(typescript@5.5.4)))(stylelint-order@6.0.4(stylelint@16.8.1(typescript@5.5.4)))(stylelint-plugin-logical-css@1.2.1(stylelint@16.8.1(typescript@5.5.4)))(stylelint@16.8.1(typescript@5.5.4))': @@ -6016,24 +6024,18 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.8.0)': dependencies: - eslint: 8.57.0 + eslint: 9.8.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} - '@eslint/eslintrc@2.1.4': + '@eslint/config-array@0.17.1': dependencies: - ajv: 6.12.6 + '@eslint/object-schema': 2.1.4 debug: 4.3.6 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 minimatch: 3.1.2 - strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color @@ -6051,19 +6053,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.0': {} + '@eslint/js@9.8.0': {} - '@humanwhocodes/config-array@0.11.14': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.6 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@eslint/object-schema@2.1.4': {} '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.3.0': {} '@img/sharp-darwin-arm64@0.33.4': optionalDependencies: @@ -6533,15 +6529,15 @@ snapshots: '@types/unist@3.0.2': {} - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 8.57.0 + '@typescript-eslint/parser': 8.0.0(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.0.0 + '@typescript-eslint/type-utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.0.0 + eslint: 9.8.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -6551,26 +6547,26 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/scope-manager': 8.0.0 + '@typescript-eslint/types': 8.0.0 + '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.0.0 debug: 4.3.6 - eslint: 8.57.0 + eslint: 9.8.0 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/rule-tester@7.18.0(@eslint/eslintrc@3.1.0)(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/rule-tester@8.0.0(@eslint/eslintrc@3.1.0)(eslint@9.8.0)(typescript@5.5.4)': dependencies: '@eslint/eslintrc': 3.1.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4) + '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4) ajv: 6.12.6 - eslint: 8.57.0 + eslint: 9.8.0 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 semver: 7.6.3 @@ -6583,20 +6579,27 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/scope-manager@8.0.0': dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/types': 8.0.0 + '@typescript-eslint/visitor-keys': 8.0.0 + + '@typescript-eslint/type-utils@8.0.0(eslint@9.8.0)(typescript@5.5.4)': + dependencies: + '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4) + '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4) debug: 4.3.6 - eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: + - eslint - supports-color '@typescript-eslint/types@7.18.0': {} + '@typescript-eslint/types@8.0.0': {} + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 7.18.0 @@ -6612,13 +6615,39 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.0.0(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/types': 8.0.0 + '@typescript-eslint/visitor-keys': 8.0.0 + debug: 4.3.6 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.18.0(eslint@9.8.0)(typescript@5.5.4)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@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: 8.57.0 + eslint: 9.8.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@8.0.0(eslint@9.8.0)(typescript@5.5.4)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) + '@typescript-eslint/scope-manager': 8.0.0 + '@typescript-eslint/types': 8.0.0 + '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4) + eslint: 9.8.0 transitivePeerDependencies: - supports-color - typescript @@ -6628,6 +6657,11 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@8.0.0': + dependencies: + '@typescript-eslint/types': 8.0.0 + eslint-visitor-keys: 3.4.3 + '@ungap/structured-clone@1.2.0': {} '@vercel/og@0.6.2': @@ -7684,10 +7718,6 @@ snapshots: dependencies: esutils: 2.0.3 - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -7893,9 +7923,9 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@8.57.0): + eslint-compat-utils@0.5.1(eslint@9.8.0): dependencies: - eslint: 8.57.0 + eslint: 9.8.0 semver: 7.6.3 eslint-import-resolver-node@0.3.9: @@ -7906,13 +7936,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0))(eslint@9.8.0): dependencies: debug: 4.3.6 enhanced-resolve: 5.17.1 - eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) + eslint: 9.8.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0))(eslint@9.8.0))(eslint@9.8.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0) fast-glob: 3.3.2 get-tsconfig: 4.7.6 is-core-module: 2.15.0 @@ -7923,34 +7953,34 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.8.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 + '@typescript-eslint/parser': 8.0.0(eslint@9.8.0)(typescript@5.5.4) + eslint: 9.8.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0))(eslint@9.8.0))(eslint@9.8.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0) + '@typescript-eslint/parser': 8.0.0(eslint@9.8.0)(typescript@5.5.4) + eslint: 9.8.0 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0))(eslint@9.8.0) transitivePeerDependencies: - supports-color - eslint-plugin-astro@1.2.3(eslint@8.57.0)(typescript@5.5.4): + eslint-plugin-astro@1.2.3(eslint@9.8.0)(typescript@5.5.4): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@jridgewell/sourcemap-codec': 1.5.0 '@typescript-eslint/types': 7.18.0 astro-eslint-parser: 1.0.2(typescript@5.5.4) - eslint: 8.57.0 - eslint-compat-utils: 0.5.1(eslint@8.57.0) + eslint: 9.8.0 + eslint-compat-utils: 0.5.1(eslint@9.8.0) globals: 15.8.0 postcss: 8.4.40 postcss-selector-parser: 6.1.1 @@ -7958,20 +7988,20 @@ snapshots: - supports-color - typescript - eslint-plugin-es-x@7.8.0(eslint@8.57.0): + eslint-plugin-es-x@7.8.0(eslint@9.8.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@eslint-community/regexpp': 4.11.0 - eslint: 8.57.0 - eslint-compat-utils: 0.5.1(eslint@8.57.0) + eslint: 9.8.0 + eslint-compat-utils: 0.5.1(eslint@9.8.0) - eslint-plugin-eslint-plugin@6.2.0(eslint@8.57.0): + eslint-plugin-eslint-plugin@6.2.0(eslint@9.8.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - eslint: 8.57.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) + eslint: 9.8.0 estraverse: 5.3.0 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -7979,9 +8009,9 @@ snapshots: array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.0 + eslint: 9.8.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.8.0) hasown: 2.0.2 is-core-module: 2.15.0 is-glob: 4.0.3 @@ -7992,13 +8022,13 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.0.0(eslint@9.8.0)(typescript@5.5.4) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0): + eslint-plugin-jsx-a11y@6.9.0(eslint@9.8.0): dependencies: aria-query: 5.1.3 array-includes: 3.1.8 @@ -8009,7 +8039,7 @@ snapshots: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.19 - eslint: 8.57.0 + eslint: 9.8.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -8018,62 +8048,62 @@ snapshots: safe-regex-test: 1.0.3 string.prototype.includes: 2.0.0 - eslint-plugin-n@17.10.1(eslint@8.57.0): + eslint-plugin-n@17.10.1(eslint@9.8.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) enhanced-resolve: 5.17.1 - eslint: 8.57.0 - eslint-plugin-es-x: 7.8.0(eslint@8.57.0) + eslint: 9.8.0 + eslint-plugin-es-x: 7.8.0(eslint@9.8.0) get-tsconfig: 4.7.6 globals: 15.8.0 ignore: 5.3.1 minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-node-import@1.0.4(eslint@8.57.0): + eslint-plugin-node-import@1.0.4(eslint@9.8.0): dependencies: - eslint: 8.57.0 + eslint: 9.8.0 - eslint-plugin-perfectionist@3.0.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@8.57.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.205))(svelte@5.0.0-next.205)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@8.57.0)): + eslint-plugin-perfectionist@3.0.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.205))(svelte@5.0.0-next.205)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.8.0)): dependencies: '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 + '@typescript-eslint/utils': 7.18.0(eslint@9.8.0)(typescript@5.5.4) + eslint: 9.8.0 minimatch: 10.0.1 natural-compare-lite: 1.4.0 optionalDependencies: astro-eslint-parser: 1.0.2(typescript@5.5.4) svelte: 5.0.0-next.205 svelte-eslint-parser: 0.41.0(svelte@5.0.0-next.205) - vue-eslint-parser: 9.4.3(eslint@8.57.0) + vue-eslint-parser: 9.4.3(eslint@9.8.0) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-prefer-arrow@1.2.3(eslint@8.57.0): + eslint-plugin-prefer-arrow@1.2.3(eslint@9.8.0): dependencies: - eslint: 8.57.0 + eslint: 9.8.0 eslint-plugin-prefer-let@4.0.0: dependencies: requireindex: 1.2.0 - eslint-plugin-promise@7.0.0(eslint@8.57.0): + eslint-plugin-promise@7.0.0(eslint@9.8.0): dependencies: - eslint: 8.57.0 + eslint: 9.8.0 - eslint-plugin-sonarjs@1.0.4(eslint@8.57.0): + eslint-plugin-sonarjs@1.0.4(eslint@9.8.0): dependencies: - eslint: 8.57.0 + eslint: 9.8.0 - eslint-plugin-unicorn@55.0.0(eslint@8.57.0): + eslint-plugin-unicorn@55.0.0(eslint@9.8.0): dependencies: '@babel/helper-validator-identifier': 7.24.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.37.1 - eslint: 8.57.0 + eslint: 9.8.0 esquery: 1.6.0 globals: 15.8.0 indent-string: 4.0.0 @@ -8086,12 +8116,12 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)): + eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3)): dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 + '@typescript-eslint/utils': 7.18.0(eslint@9.8.0)(typescript@5.5.4) + eslint: 9.8.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) vitest: 2.0.5(@types/node@22.0.1)(lightningcss@1.25.1)(terser@5.31.3) transitivePeerDependencies: - supports-color @@ -8111,38 +8141,34 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@8.57.0: + eslint@9.8.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@eslint-community/regexpp': 4.11.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint/config-array': 0.17.1 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.8.0 '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.6 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.0.2 + eslint-visitor-keys: 4.0.0 + espree: 10.1.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -8306,9 +8332,9 @@ snapshots: dependencies: is-unicode-supported: 2.0.0 - file-entry-cache@6.0.1: + file-entry-cache@8.0.0: dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 file-entry-cache@9.0.0: dependencies: @@ -8341,11 +8367,10 @@ snapshots: micromatch: 4.0.7 pkg-dir: 4.2.0 - flat-cache@3.2.0: + flat-cache@4.0.1: dependencies: flatted: 3.3.1 keyv: 4.5.4 - rimraf: 3.0.2 flat-cache@5.0.0: dependencies: @@ -8491,10 +8516,6 @@ snapshots: globals@11.12.0: {} - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - globals@14.0.0: {} globals@15.8.0: {} @@ -10255,10 +10276,6 @@ snapshots: dependencies: glob: 7.2.3 - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - rollup@4.19.1: dependencies: '@types/estree': 1.0.5 @@ -10850,8 +10867,6 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@0.20.2: {} - type-fest@0.6.0: {} type-fest@0.8.1: {} @@ -11206,10 +11221,10 @@ snapshots: vscode-uri@3.0.8: {} - vue-eslint-parser@9.4.3(eslint@8.57.0): + vue-eslint-parser@9.4.3(eslint@9.8.0): dependencies: debug: 4.3.6 - eslint: 8.57.0 + eslint: 9.8.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 diff --git a/rules/sort-enums.ts b/rules/sort-enums.ts index a7f34c66f..91d2d82aa 100644 --- a/rules/sort-enums.ts +++ b/rules/sort-enums.ts @@ -89,8 +89,8 @@ export default createEslintRule({ create: context => ({ TSEnumDeclaration: node => { if ( - node.members.length > 1 && - node.members.every(({ initializer }) => initializer) + node.body.members.length > 1 && + node.body.members.every(({ initializer }) => initializer) ) { let options = complete(context.options.at(0), { partitionByComment: false, @@ -102,7 +102,7 @@ export default createEslintRule({ let sourceCode = getSourceCode(context) let partitionComment = options.partitionByComment - let formattedMembers: SortingNode[][] = node.members.reduce( + let formattedMembers: SortingNode[][] = node.body.members.reduce( (accumulator: SortingNode[][], member) => { let comment = getCommentBefore(member, sourceCode) diff --git a/rules/sort-jsx-props.ts b/rules/sort-jsx-props.ts index ecba97ce4..c2ff2e1a6 100644 --- a/rules/sort-jsx-props.ts +++ b/rules/sort-jsx-props.ts @@ -1,7 +1,6 @@ import type { TSESTree } from '@typescript-eslint/types' import { minimatch } from 'minimatch' -import path from 'node:path' import type { SortingNode } from '../typings' @@ -125,135 +124,123 @@ export default createEslintRule, MESSAGE_ID>({ customGroups: {}, }, ], - create: context => { - if ( - ['.svelte', '.astro', '.vue'].includes(path.extname(context.filename)) - ) { - return {} - } - return { - JSXElement: node => { - if (node.openingElement.attributes.length > 1) { - let options = complete(context.options.at(0), { - type: 'alphabetical', - ignorePattern: [], - ignoreCase: true, - customGroups: {}, - order: 'asc', - groups: [], - } as const) - - let sourceCode = getSourceCode(context) - - let shouldIgnore = false - if (options.ignorePattern.length) { - let tagName = sourceCode.text.slice( - ...node.openingElement.name.range, - ) - shouldIgnore = options.ignorePattern.some(pattern => - minimatch(tagName, pattern), - ) - } - - if (!shouldIgnore && node.openingElement.attributes.length > 1) { - let parts: SortingNode[][] = node.openingElement.attributes.reduce( - ( - accumulator: SortingNode[][], - attribute: TSESTree.JSXSpreadAttribute | TSESTree.JSXAttribute, - ) => { - if (attribute.type === 'JSXSpreadAttribute') { - accumulator.push([]) - return accumulator - } - - let name = - attribute.name.type === 'JSXNamespacedName' - ? `${attribute.name.namespace.name}:${attribute.name.name.name}` - : attribute.name.name - - let { getGroup, defineGroup, setCustomGroups } = useGroups( - options.groups, - ) + create: context => ({ + JSXElement: node => { + if (node.openingElement.attributes.length > 1) { + let options = complete(context.options.at(0), { + type: 'alphabetical', + ignorePattern: [], + ignoreCase: true, + customGroups: {}, + order: 'asc', + groups: [], + } as const) + + let sourceCode = getSourceCode(context) + + let shouldIgnore = false + if (options.ignorePattern.length) { + let tagName = sourceCode.text.slice(...node.openingElement.name.range) + shouldIgnore = options.ignorePattern.some(pattern => + minimatch(tagName, pattern), + ) + } - setCustomGroups(options.customGroups, name) + if (!shouldIgnore && node.openingElement.attributes.length > 1) { + let parts: SortingNode[][] = node.openingElement.attributes.reduce( + ( + accumulator: SortingNode[][], + attribute: TSESTree.JSXSpreadAttribute | TSESTree.JSXAttribute, + ) => { + if (attribute.type === 'JSXSpreadAttribute') { + accumulator.push([]) + return accumulator + } - if (attribute.value === null) { - defineGroup('shorthand') - } + let name = + attribute.name.type === 'JSXNamespacedName' + ? `${attribute.name.namespace.name}:${attribute.name.name.name}` + : attribute.name.name - if (attribute.loc.start.line !== attribute.loc.end.line) { - defineGroup('multiline') - } + let { getGroup, defineGroup, setCustomGroups } = useGroups( + options.groups, + ) - let jsxNode = { - size: rangeToDiff(attribute.range), - node: structuredClone(attribute), - group: getGroup(), - name, - } + setCustomGroups(options.customGroups, name) - accumulator.at(-1)!.push(jsxNode) + if (attribute.value === null) { + defineGroup('shorthand') + } - return accumulator - }, - [[]], - ) + if (attribute.loc.start.line !== attribute.loc.end.line) { + defineGroup('multiline') + } - for (let nodes of parts) { - pairwise(nodes, (left, right) => { - let leftNum = getGroupNumber(options.groups, left) - let rightNum = getGroupNumber(options.groups, right) + let jsxNode = { + size: rangeToDiff(attribute.range), + node: structuredClone(attribute), + group: getGroup(), + name, + } - if ( - leftNum > rightNum || - (leftNum === rightNum && - isPositive(compare(left, right, options))) - ) { - context.report({ - messageId: 'unexpectedJSXPropsOrder', - data: { - left: left.name, - right: right.name, - }, - node: right.node, - fix: fixer => { - let grouped: { - [key: string]: SortingNode[] - } = {} + accumulator.at(-1)!.push(jsxNode) - for (let currentNode of nodes) { - let groupNum = getGroupNumber( - options.groups, - currentNode, + return accumulator + }, + [[]], + ) + + for (let nodes of parts) { + pairwise(nodes, (left, right) => { + let leftNum = getGroupNumber(options.groups, left) + let rightNum = getGroupNumber(options.groups, right) + + if ( + leftNum > rightNum || + (leftNum === rightNum && + isPositive(compare(left, right, options))) + ) { + context.report({ + messageId: 'unexpectedJSXPropsOrder', + data: { + left: left.name, + right: right.name, + }, + node: right.node, + fix: fixer => { + let grouped: { + [key: string]: SortingNode[] + } = {} + + for (let currentNode of nodes) { + let groupNum = getGroupNumber(options.groups, currentNode) + + if (!(groupNum in grouped)) { + grouped[groupNum] = [currentNode] + } else { + grouped[groupNum] = sortNodes( + [...grouped[groupNum], currentNode], + options, ) - - if (!(groupNum in grouped)) { - grouped[groupNum] = [currentNode] - } else { - grouped[groupNum] = sortNodes( - [...grouped[groupNum], currentNode], - options, - ) - } } + } - let sortedNodes: SortingNode[] = [] + let sortedNodes: SortingNode[] = [] - for (let group of Object.keys(grouped).sort( - (a, b) => Number(a) - Number(b), - )) { - sortedNodes.push(...sortNodes(grouped[group], options)) - } + for (let group of Object.keys(grouped).sort( + (a, b) => Number(a) - Number(b), + )) { + sortedNodes.push(...sortNodes(grouped[group], options)) + } - return makeFixes(fixer, nodes, sortedNodes, sourceCode) - }, - }) - } - }) - } + return makeFixes(fixer, nodes, sortedNodes, sourceCode) + }, + }) + } + }) } } - }, - } - }, + } + }, + }), }) diff --git a/test/fixtures/file.astro b/test/fixtures/file.astro new file mode 100644 index 000000000..e69de29bb diff --git a/test/fixtures/file.svelte b/test/fixtures/file.svelte new file mode 100644 index 000000000..e69de29bb diff --git a/test/fixtures/file.ts b/test/fixtures/file.ts new file mode 100644 index 000000000..e69de29bb diff --git a/test/fixtures/file.vue b/test/fixtures/file.vue new file mode 100644 index 000000000..e69de29bb diff --git a/test/fixtures/react.tsx b/test/fixtures/react.tsx new file mode 100644 index 000000000..e69de29bb diff --git a/test/fixtures/tsconfig.json b/test/fixtures/tsconfig.json new file mode 100644 index 000000000..cb938d776 --- /dev/null +++ b/test/fixtures/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "lib": ["es2015", "es2017", "esnext"], + "experimentalDecorators": true, + "esModuleInterop": true, + "module": "commonjs", + "jsx": "preserve", + "target": "es5", + "strict": true + }, + "include": ["file.svelte", "file.astro", "react.tsx", "file.vue", "file.ts"] +} diff --git a/test/sort-array-includes.test.ts b/test/sort-array-includes.test.ts index d8451a9b5..629452356 100644 --- a/test/sort-array-includes.test.ts +++ b/test/sort-array-includes.test.ts @@ -14,9 +14,7 @@ describe(ruleName, () => { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' diff --git a/test/sort-astro-attributes.test.ts b/test/sort-astro-attributes.test.ts index b2011d804..fc95938b8 100644 --- a/test/sort-astro-attributes.test.ts +++ b/test/sort-astro-attributes.test.ts @@ -1,6 +1,9 @@ import { RuleTester } from '@typescript-eslint/rule-tester' +import typescriptParser from '@typescript-eslint/parser' import { afterAll, describe, it } from 'vitest' +import astroParser from 'astro-eslint-parser' import { dedent } from 'ts-dedent' +import path from 'node:path' import rule from '../rules/sort-astro-attributes' @@ -15,10 +18,14 @@ describe(ruleName, () => { RuleTester.it = it let ruleTester = new RuleTester({ - parser: require.resolve('astro-eslint-parser'), - parserOptions: { - parser: { - ts: '@typescript-eslint/parser', + languageOptions: { + parser: astroParser, + parserOptions: { + parser: { + tsconfigRootDir: path.join(__dirname, './fixtures'), + project: './tsconfig.json', + ts: typescriptParser, + }, }, }, }) @@ -38,10 +45,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' --- `, @@ -50,16 +57,16 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' --- `, output: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' --- `, @@ -84,10 +91,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' import data from './data.json' --- @@ -98,10 +105,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' import data from './data.json' --- @@ -109,7 +116,7 @@ describe(ruleName, () => { `, output: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' import data from './data.json' --- @@ -136,10 +143,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from './Component.astro' + import Component from './file.astro' let ccc = 'c' let dddd = 'd' @@ -156,10 +163,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from './Component.astro' + import Component from './file.astro' let ccc = 'c' let dddd = 'd' @@ -173,7 +180,7 @@ describe(ruleName, () => { `, output: dedent` --- - import Component from './Component.astro' + import Component from './file.astro' let ccc = 'c' let dddd = 'd' @@ -206,10 +213,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let d = 'd' --- @@ -231,10 +238,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let d = 'd' --- @@ -248,7 +255,7 @@ describe(ruleName, () => { `, output: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let d = 'd' --- @@ -286,10 +293,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let c = false --- @@ -312,10 +319,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let c = false --- @@ -330,7 +337,7 @@ describe(ruleName, () => { `, output: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let c = false --- @@ -366,10 +373,10 @@ describe(ruleName, () => { ruleTester.run(`${ruleName}(${type}): allows to set custom groups`, rule, { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '~/Component.astro' + import Component from '~/file.astro' --- { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '~/Component.astro' + import Component from '~/file.astro' --- { `, output: dedent` --- - import Component from '~/Component.astro' + import Component from '~/file.astro' --- { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' --- `, @@ -479,16 +486,16 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' --- `, output: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' --- `, @@ -513,10 +520,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' import data from './data.json' --- @@ -527,10 +534,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' import data from './data.json' --- @@ -538,7 +545,7 @@ describe(ruleName, () => { `, output: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' import data from './data.json' --- @@ -565,10 +572,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from './Component.astro' + import Component from './file.astro' let ccc = 'c' let dddd = 'd' @@ -585,10 +592,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from './Component.astro' + import Component from './file.astro' let ccc = 'c' let dddd = 'd' @@ -602,7 +609,7 @@ describe(ruleName, () => { `, output: dedent` --- - import Component from './Component.astro' + import Component from './file.astro' let ccc = 'c' let dddd = 'd' @@ -635,10 +642,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let d = 'd' --- @@ -660,10 +667,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let d = 'd' --- @@ -677,7 +684,7 @@ describe(ruleName, () => { `, output: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let d = 'd' --- @@ -715,10 +722,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let c = false --- @@ -742,10 +749,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let c = false --- @@ -761,7 +768,7 @@ describe(ruleName, () => { `, output: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let c = false --- @@ -798,10 +805,10 @@ describe(ruleName, () => { ruleTester.run(`${ruleName}(${type}): allows to set custom groups`, rule, { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '~/Component.astro' + import Component from '~/file.astro' --- { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '~/Component.astro' + import Component from '~/file.astro' --- { `, output: dedent` --- - import Component from '~/Component.astro' + import Component from '~/file.astro' --- { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' --- `, @@ -910,16 +917,16 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' --- `, output: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' --- `, @@ -944,10 +951,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' import data from './data.json' --- @@ -958,10 +965,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' import data from './data.json' --- @@ -969,7 +976,7 @@ describe(ruleName, () => { `, output: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' import data from './data.json' --- @@ -996,10 +1003,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from './Component.astro' + import Component from './file.astro' let ccc = 'c' let dddd = 'd' @@ -1016,10 +1023,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from './Component.astro' + import Component from './file.astro' let ccc = 'c' let dddd = 'd' @@ -1033,7 +1040,7 @@ describe(ruleName, () => { `, output: dedent` --- - import Component from './Component.astro' + import Component from './file.astro' let ccc = 'c' let dddd = 'd' @@ -1066,10 +1073,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let d = 'd' --- @@ -1091,10 +1098,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let d = 'd' --- @@ -1108,7 +1115,7 @@ describe(ruleName, () => { `, output: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let d = 'd' --- @@ -1153,10 +1160,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let c = false --- @@ -1179,10 +1186,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let c = false --- @@ -1197,7 +1204,7 @@ describe(ruleName, () => { `, output: dedent` --- - import Component from '../Component.astro' + import Component from '../file.astro' let c = false --- @@ -1240,10 +1247,10 @@ describe(ruleName, () => { ruleTester.run(`${ruleName}(${type}): allows to set custom groups`, rule, { valid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '~/Component.astro' + import Component from '~/file.astro' --- { ], invalid: [ { - filename: 'component.astro', + filename: 'file.astro', code: dedent` --- - import Component from '~/Component.astro' + import Component from '~/file.astro' --- { `, output: dedent` --- - import Component from '~/Component.astro' + import Component from '~/file.astro' --- { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' diff --git a/test/sort-enums.test.ts b/test/sort-enums.test.ts index b863eb0a9..66629266f 100644 --- a/test/sort-enums.test.ts +++ b/test/sort-enums.test.ts @@ -14,9 +14,7 @@ describe(ruleName, () => { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' diff --git a/test/sort-exports.test.ts b/test/sort-exports.test.ts index 02cb9f473..ac6e0dc6c 100644 --- a/test/sort-exports.test.ts +++ b/test/sort-exports.test.ts @@ -14,9 +14,7 @@ describe(ruleName, () => { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' diff --git a/test/sort-imports.test.ts b/test/sort-imports.test.ts index 230bb9d94..d0ef65a57 100644 --- a/test/sort-imports.test.ts +++ b/test/sort-imports.test.ts @@ -14,9 +14,7 @@ describe(ruleName, () => { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' diff --git a/test/sort-interfaces.test.ts b/test/sort-interfaces.test.ts index ca9df709b..c5f62424e 100644 --- a/test/sort-interfaces.test.ts +++ b/test/sort-interfaces.test.ts @@ -14,9 +14,7 @@ describe(ruleName, () => { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' diff --git a/test/sort-intersection-types.test.ts b/test/sort-intersection-types.test.ts index 3f475d5a3..604e6aea4 100644 --- a/test/sort-intersection-types.test.ts +++ b/test/sort-intersection-types.test.ts @@ -14,9 +14,7 @@ describe(ruleName, () => { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' diff --git a/test/sort-jsx-props.test.ts b/test/sort-jsx-props.test.ts index b8c1b3ffa..fa0d78d31 100644 --- a/test/sort-jsx-props.test.ts +++ b/test/sort-jsx-props.test.ts @@ -1,6 +1,8 @@ import { RuleTester } from '@typescript-eslint/rule-tester' +import typescriptParser from '@typescript-eslint/parser' import { afterAll, describe, it } from 'vitest' import { dedent } from 'ts-dedent' +import path from 'node:path' import rule from '../rules/sort-jsx-props' @@ -15,10 +17,15 @@ describe(ruleName, () => { RuleTester.it = it let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + tsconfigRootDir: path.join(__dirname, './fixtures'), + project: './tsconfig.json', + parser: typescriptParser, + extraFileExtensions: ['.svelte', '.astro', '.vue'], + ecmaFeatures: { + jsx: true, + }, }, }, }) @@ -1432,23 +1439,6 @@ describe(ruleName, () => { invalid: [], }, ) - ;['.svelte', '.astro', '.vue'].forEach(extension => { - ruleTester.run(`${ruleName}: not works with ${extension} files`, rule, { - valid: [ - { - filename: `component${extension}`, - code: dedent` - - `, - }, - ], - invalid: [], - }) - }) ruleTester.run(`${ruleName}: does not work with empty props`, rule, { valid: [ diff --git a/test/sort-maps.test.ts b/test/sort-maps.test.ts index 87fde801f..9f58841d1 100644 --- a/test/sort-maps.test.ts +++ b/test/sort-maps.test.ts @@ -14,9 +14,7 @@ describe(ruleName, () => { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' diff --git a/test/sort-named-exports.test.ts b/test/sort-named-exports.test.ts index 1b029ac90..ef9850535 100644 --- a/test/sort-named-exports.test.ts +++ b/test/sort-named-exports.test.ts @@ -14,9 +14,7 @@ describe(ruleName, () => { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' diff --git a/test/sort-named-imports.test.ts b/test/sort-named-imports.test.ts index 08f949efd..2e3dc2798 100644 --- a/test/sort-named-imports.test.ts +++ b/test/sort-named-imports.test.ts @@ -14,9 +14,7 @@ describe(ruleName, () => { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' diff --git a/test/sort-object-types.test.ts b/test/sort-object-types.test.ts index d8911e999..bccbd1a3d 100644 --- a/test/sort-object-types.test.ts +++ b/test/sort-object-types.test.ts @@ -14,9 +14,7 @@ describe(ruleName, () => { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' @@ -311,17 +309,30 @@ describe(ruleName, () => { } } `, - output: dedent` - type Type = { - b: 'bb' - a: 'aaa' - c: 'c' - d: { - f: 'f' - e: 'ee' + output: [ + dedent` + type Type = { + b: 'bb' + a: 'aaa' + c: 'c' + d: { + f: 'f' + e: 'ee' + } } - } - `, + `, + dedent` + type Type = { + b: 'bb' + a: 'aaa' + c: 'c' + d: { + e: 'ee' + f: 'f' + } + } + `, + ], options: [ { ...options, @@ -895,17 +906,30 @@ describe(ruleName, () => { } } `, - output: dedent` - type Type = { - b: 'bb' - a: 'aaa' - c: 'c' - d: { - f: 'f' - e: 'ee' + output: [ + dedent` + type Type = { + b: 'bb' + a: 'aaa' + c: 'c' + d: { + f: 'f' + e: 'ee' + } } - } - `, + `, + dedent` + type Type = { + b: 'bb' + a: 'aaa' + c: 'c' + d: { + e: 'ee' + f: 'f' + } + } + `, + ], options: [ { ...options, @@ -1452,17 +1476,30 @@ describe(ruleName, () => { } } `, - output: dedent` - type Type = { - b: 'bb' - a: 'aaa' - c: 'c' - d: { - f: 'f' - e: 'ee' + output: [ + dedent` + type Type = { + b: 'bb' + a: 'aaa' + c: 'c' + d: { + f: 'f' + e: 'ee' + } } - } - `, + `, + dedent` + type Type = { + b: 'bb' + a: 'aaa' + c: 'c' + d: { + e: 'ee' + f: 'f' + } + } + `, + ], options: [ { ...options, diff --git a/test/sort-objects.test.ts b/test/sort-objects.test.ts index 953738f7d..c69978c3b 100644 --- a/test/sort-objects.test.ts +++ b/test/sort-objects.test.ts @@ -14,9 +14,7 @@ describe(ruleName, () => { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' @@ -159,18 +157,32 @@ describe(ruleName, () => { }, } `, - output: dedent` - let Obj = { - x: { - b: 'b', - a: 'aa', - }, - y: { - b: 'b', - a: 'aa', - }, - } - `, + output: [ + dedent` + let Obj = { + x: { + b: 'b', + a: 'aa', + }, + y: { + b: 'b', + a: 'aa', + }, + } + `, + dedent` + let Obj = { + x: { + a: 'aa', + b: 'b', + }, + y: { + a: 'aa', + b: 'b', + }, + } + `, + ], options: [options], errors: [ { @@ -1032,18 +1044,32 @@ describe(ruleName, () => { }, } `, - output: dedent` - let Obj = { - x: { - b: 'b', - a: 'aa', - }, - y: { - b: 'b', - a: 'aa', - }, - } - `, + output: [ + dedent` + let Obj = { + x: { + b: 'b', + a: 'aa', + }, + y: { + b: 'b', + a: 'aa', + }, + } + `, + dedent` + let Obj = { + x: { + a: 'aa', + b: 'b', + }, + y: { + a: 'aa', + b: 'b', + }, + } + `, + ], options: [options], errors: [ { diff --git a/test/sort-svelte-attributes.test.ts b/test/sort-svelte-attributes.test.ts index 618f78495..11f9a50fd 100644 --- a/test/sort-svelte-attributes.test.ts +++ b/test/sort-svelte-attributes.test.ts @@ -1,6 +1,9 @@ import { RuleTester } from '@typescript-eslint/rule-tester' +import typescriptParser from '@typescript-eslint/parser' import { afterAll, describe, it } from 'vitest' +import svelteParser from 'svelte-eslint-parser' import { dedent } from 'ts-dedent' +import path from 'node:path' import rule from '../rules/sort-svelte-attributes' @@ -15,10 +18,14 @@ describe(ruleName, () => { RuleTester.it = it let ruleTester = new RuleTester({ - parser: require.resolve('svelte-eslint-parser'), - parserOptions: { - parser: { - ts: '@typescript-eslint/parser', + languageOptions: { + parser: svelteParser, + parserOptions: { + parser: { + tsconfigRootDir: path.join(__dirname, './fixtures'), + project: './tsconfig.json', + ts: typescriptParser, + }, }, }, }) @@ -38,10 +45,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -51,17 +58,17 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` `, output: dedent` @@ -91,10 +98,10 @@ describe(ruleName, () => { ruleTester.run(`${ruleName}(${type}): works with spread attributes`, rule, { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -106,10 +113,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -118,7 +125,7 @@ describe(ruleName, () => { `, output: dedent` @@ -142,11 +149,11 @@ describe(ruleName, () => { ruleTester.run(`${ruleName}(${type}): works with directives`, rule, { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -161,11 +168,11 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -178,7 +185,7 @@ describe(ruleName, () => { output: dedent` @@ -208,10 +215,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -233,10 +240,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -250,7 +257,7 @@ describe(ruleName, () => { `, output: dedent` @@ -295,10 +302,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -322,10 +329,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -341,7 +348,7 @@ describe(ruleName, () => { `, output: dedent` @@ -378,10 +385,10 @@ describe(ruleName, () => { ruleTester.run(`${ruleName}(${type}): allows to set custom groups`, rule, { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` { `, output: dedent` { { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -488,17 +495,17 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` `, output: dedent` @@ -528,10 +535,10 @@ describe(ruleName, () => { ruleTester.run(`${ruleName}(${type}): works with spread attributes`, rule, { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -543,10 +550,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -555,7 +562,7 @@ describe(ruleName, () => { `, output: dedent` @@ -579,11 +586,11 @@ describe(ruleName, () => { ruleTester.run(`${ruleName}(${type}): works with directives`, rule, { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -598,11 +605,11 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -615,7 +622,7 @@ describe(ruleName, () => { output: dedent` @@ -645,10 +652,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -670,10 +677,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -687,7 +694,7 @@ describe(ruleName, () => { `, output: dedent` @@ -732,10 +739,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -759,10 +766,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -778,7 +785,7 @@ describe(ruleName, () => { `, output: dedent` @@ -815,10 +822,10 @@ describe(ruleName, () => { ruleTester.run(`${ruleName}(${type}): allows to set custom groups`, rule, { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` { `, output: dedent` { { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -924,17 +931,17 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` `, output: dedent` @@ -964,10 +971,10 @@ describe(ruleName, () => { ruleTester.run(`${ruleName}(${type}): works with spread attributes`, rule, { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -979,10 +986,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -991,7 +998,7 @@ describe(ruleName, () => { `, output: dedent` @@ -1015,11 +1022,11 @@ describe(ruleName, () => { ruleTester.run(`${ruleName}(${type}): works with directives`, rule, { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -1034,11 +1041,11 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -1051,7 +1058,7 @@ describe(ruleName, () => { output: dedent` @@ -1081,10 +1088,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -1106,10 +1113,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -1123,7 +1130,7 @@ describe(ruleName, () => { `, output: dedent` @@ -1168,10 +1175,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -1195,10 +1202,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` @@ -1214,7 +1221,7 @@ describe(ruleName, () => { `, output: dedent` @@ -1251,10 +1258,10 @@ describe(ruleName, () => { ruleTester.run(`${ruleName}(${type}): allows to set custom groups`, rule, { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` { ], invalid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` { `, output: dedent` { ruleTester.run(`${ruleName}: works with special directive keys`, rule, { valid: [ { - filename: 'component.svelte', + filename: 'file.svelte', code: dedent` `, diff --git a/test/sort-switch-case.test.ts b/test/sort-switch-case.test.ts index 4423e81bf..8fcc7bca4 100644 --- a/test/sort-switch-case.test.ts +++ b/test/sort-switch-case.test.ts @@ -14,9 +14,7 @@ describe(ruleName, () => { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' @@ -411,24 +409,44 @@ describe(ruleName, () => { const c = 3 } `, - output: dedent` - switch (x) { - case DD: - case E: - const b = () => { - return 2 - } - break - case CCC: - break - case AAAAA: - case BBBB: - const a = 1 - break - default: - const c = 3 - } - `, + output: [ + dedent` + switch (x) { + case DD: + case E: + const b = () => { + return 2 + } + break + case CCC: + break + case AAAAA: + case BBBB: + const a = 1 + break + default: + const c = 3 + } + `, + dedent` + switch (x) { + case AAAAA: + case BBBB: + const a = 1 + break + case CCC: + break + case DD: + case E: + const b = () => { + return 2 + } + break + default: + const c = 3 + } + `, + ], options: [options], errors: [ { @@ -763,6 +781,173 @@ describe(ruleName, () => { ], }, ) + + ruleTester.run( + `${ruleName}(${type}): works with single grouped case`, + rule, + { + valid: [ + { + code: dedent` + switch (x) { + case AA: + case B: + const a = 1; + break; + } + `, + options: [options], + }, + ], + invalid: [ + { + code: dedent` + switch (x) { + case B: + case AA: + const a = 1; + break; + } + `, + output: dedent` + switch (x) { + case AA: + case B: + const a = 1; + break; + } + `, + options: [options], + errors: [ + { + messageId: 'unexpectedSwitchCaseOrder', + data: { + left: 'B', + right: 'AA', + }, + }, + ], + }, + ], + }, + ) + + ruleTester.run(`${ruleName}(${type}): works with complex cases`, rule, { + valid: [ + { + code: dedent` + switch (x) { + case AAAAA: + case BBBB: + const a = 1 + break + case CCC: + break + case DD: + case E: + const b = () => { + return 2 + } + break + default: + const c = 3 + } + `, + options: [options], + }, + ], + invalid: [ + { + code: dedent` + switch (x) { + case E: + case DD: + const b = () => { + return 2 + } + break + case CCC: + break + case BBBB: + case AAAAA: + const a = 1 + break + default: + const c = 3 + } + `, + output: [ + dedent` + switch (x) { + case DD: + case E: + const b = () => { + return 2 + } + break + case CCC: + break + case AAAAA: + case BBBB: + const a = 1 + break + default: + const c = 3 + } + `, + dedent` + switch (x) { + case AAAAA: + case BBBB: + const a = 1 + break + case CCC: + break + case DD: + case E: + const b = () => { + return 2 + } + break + default: + const c = 3 + } + `, + ], + options: [options], + errors: [ + { + messageId: 'unexpectedSwitchCaseOrder', + data: { + left: 'E', + right: 'DD', + }, + }, + { + messageId: 'unexpectedSwitchCaseOrder', + data: { + left: 'DD', + right: 'CCC', + }, + }, + { + messageId: 'unexpectedSwitchCaseOrder', + data: { + left: 'CCC', + right: 'BBBB', + }, + }, + { + messageId: 'unexpectedSwitchCaseOrder', + data: { + left: 'BBBB', + right: 'AAAAA', + }, + }, + ], + }, + ], + }) }) describe(`${ruleName}: sorting by line length`, () => { @@ -1062,6 +1247,173 @@ describe(ruleName, () => { ], }, ) + + ruleTester.run( + `${ruleName}(${type}): works with single grouped case`, + rule, + { + valid: [ + { + code: dedent` + switch (x) { + case AA: + case B: + const a = 1; + break; + } + `, + options: [options], + }, + ], + invalid: [ + { + code: dedent` + switch (x) { + case B: + case AA: + const a = 1; + break; + } + `, + output: dedent` + switch (x) { + case AA: + case B: + const a = 1; + break; + } + `, + options: [options], + errors: [ + { + messageId: 'unexpectedSwitchCaseOrder', + data: { + left: 'B', + right: 'AA', + }, + }, + ], + }, + ], + }, + ) + + ruleTester.run(`${ruleName}(${type}): works with complex cases`, rule, { + valid: [ + { + code: dedent` + switch (x) { + case AAAAA: + case BBBB: + const a = 1 + break + case CCC: + break + case DD: + case E: + const b = () => { + return 2 + } + break + default: + const c = 3 + } + `, + options: [options], + }, + ], + invalid: [ + { + code: dedent` + switch (x) { + case E: + case DD: + const b = () => { + return 2 + } + break + case CCC: + break + case BBBB: + case AAAAA: + const a = 1 + break + default: + const c = 3 + } + `, + output: [ + dedent` + switch (x) { + case DD: + case E: + const b = () => { + return 2 + } + break + case CCC: + break + case AAAAA: + case BBBB: + const a = 1 + break + default: + const c = 3 + } + `, + dedent` + switch (x) { + case AAAAA: + case BBBB: + const a = 1 + break + case CCC: + break + case DD: + case E: + const b = () => { + return 2 + } + break + default: + const c = 3 + } + `, + ], + options: [options], + errors: [ + { + messageId: 'unexpectedSwitchCaseOrder', + data: { + left: 'E', + right: 'DD', + }, + }, + { + messageId: 'unexpectedSwitchCaseOrder', + data: { + left: 'DD', + right: 'CCC', + }, + }, + { + messageId: 'unexpectedSwitchCaseOrder', + data: { + left: 'CCC', + right: 'BBBB', + }, + }, + { + messageId: 'unexpectedSwitchCaseOrder', + data: { + left: 'BBBB', + right: 'AAAAA', + }, + }, + ], + }, + ], + }) }) describe(`${ruleName}: misc`, () => { diff --git a/test/sort-union-types.test.ts b/test/sort-union-types.test.ts index b7ff1456b..92e29672b 100644 --- a/test/sort-union-types.test.ts +++ b/test/sort-union-types.test.ts @@ -14,9 +14,7 @@ describe(ruleName, () => { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' diff --git a/test/sort-variable-declarations.test.ts b/test/sort-variable-declarations.test.ts index f59bc924f..b9c29e9f6 100644 --- a/test/sort-variable-declarations.test.ts +++ b/test/sort-variable-declarations.test.ts @@ -14,9 +14,7 @@ describe(ruleName, () => { RuleTester.itSkip = it.skip RuleTester.it = it - let ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - }) + let ruleTester = new RuleTester() describe(`${ruleName}: sorting by alphabetical order`, () => { let type = 'alphabetical-order' diff --git a/test/sort-vue-attributes.test.ts b/test/sort-vue-attributes.test.ts index 64bf70b7e..1b30e25bf 100644 --- a/test/sort-vue-attributes.test.ts +++ b/test/sort-vue-attributes.test.ts @@ -1,6 +1,9 @@ import { RuleTester } from '@typescript-eslint/rule-tester' +import typescriptParser from '@typescript-eslint/parser' import { afterAll, describe, it } from 'vitest' +import vueParser from 'vue-eslint-parser' import { dedent } from 'ts-dedent' +import path from 'node:path' import rule from '../rules/sort-vue-attributes' @@ -15,10 +18,14 @@ describe(ruleName, () => { RuleTester.it = it let ruleTester = new RuleTester({ - parser: require.resolve('vue-eslint-parser'), - parserOptions: { - parser: { - ts: '@typescript-eslint/parser', + languageOptions: { + parser: vueParser, + parserOptions: { + parser: { + tsconfigRootDir: path.join(__dirname, './fixtures'), + project: './tsconfig.json', + ts: typescriptParser, + }, }, }, }) @@ -38,10 +45,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.vue', + filename: 'file.vue', code: dedent` @@ -60,10 +67,10 @@ describe(ruleName, () => { ], invalid: [ { - filename: 'component.vue', + filename: 'file.vue', code: dedent` @@ -79,7 +86,7 @@ describe(ruleName, () => { `, output: dedent` @@ -114,10 +121,10 @@ describe(ruleName, () => { { valid: [ { - filename: 'component.vue', + filename: 'file.vue', code: dedent`