From 32111cb77ad4ed54c95899419d9aaf75a2505124 Mon Sep 17 00:00:00 2001 From: jimmy-guzman Date: Thu, 5 Dec 2024 17:54:08 -0600 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E2=9C=A8=20use=20`eslint-plugin-im?= =?UTF-8?q?port-x`'s=20new=20v3=20resolver?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 12 +-- pnpm-lock.yaml | 178 +++++++++++++++++------------------- src/configs/imports.spec.ts | 55 +++++++++++ src/configs/imports.ts | 33 ++++--- src/rules.gen.d.ts | 92 +++++++++---------- 5 files changed, 214 insertions(+), 156 deletions(-) create mode 100644 src/configs/imports.spec.ts diff --git a/package.json b/package.json index c9da9d8..7acf110 100644 --- a/package.json +++ b/package.json @@ -56,9 +56,9 @@ "@typescript-eslint/utils": "^8.17.0", "astro-eslint-parser": "^1.1.0", "eslint-config-prettier": "^9.1.0", - "eslint-import-resolver-typescript": "^3.6.3", + "eslint-import-resolver-typescript": "^3.7.0", "eslint-plugin-astro": "^1.3.1", - "eslint-plugin-import-x": "^4.4.3", + "eslint-plugin-import-x": "^4.5.0", "eslint-plugin-jest": "^28.9.0", "eslint-plugin-jest-dom": "^5.5.0", "eslint-plugin-jsx-a11y": "^6.10.2", @@ -87,9 +87,9 @@ "@semantic-release/git": "10.0.1", "@semantic-release/npm": "12.0.1", "@semantic-release/release-notes-generator": "14.0.1", - "@tanstack/react-query": "5.62.1", + "@tanstack/react-query": "5.62.2", "@testing-library/dom": "10.4.0", - "@testing-library/react": "16.0.1", + "@testing-library/react": "16.1.0", "@total-typescript/ts-reset": "0.6.1", "@types/node": "22.10.1", "@types/react": "18.3.12", @@ -105,11 +105,11 @@ "lefthook": "1.8.5", "next": "15.0.3", "pkgroll": "2.5.1", - "prettier": "3.4.1", + "prettier": "3.4.2", "react": "18.3.1", "react-dom": "18.3.1", "semantic-release": "24.2.0", - "storybook": "8.4.6", + "storybook": "8.4.7", "tsx": "4.19.2", "typescript": "5.7.2", "vitest": "2.1.8" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6b5117e..6e5925e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,14 +36,14 @@ importers: specifier: ^9.1.0 version: 9.1.0(eslint@9.16.0(jiti@2.4.1)) eslint-import-resolver-typescript: - specifier: ^3.6.3 - version: 3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint-plugin-import-x@4.4.3(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.16.0(jiti@2.4.1)) + specifier: ^3.7.0 + version: 3.7.0(eslint-plugin-import-x@4.5.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.16.0(jiti@2.4.1)) eslint-plugin-astro: specifier: ^1.3.1 version: 1.3.1(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2) eslint-plugin-import-x: - specifier: ^4.4.3 - version: 4.4.3(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2) + specifier: ^4.5.0 + version: 4.5.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2) eslint-plugin-jest: specifier: ^28.9.0 version: 28.9.0(@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2) @@ -104,7 +104,7 @@ importers: version: 0.5.6(eslint@9.16.0(jiti@2.4.1)) '@jimmy.codes/prettier-config': specifier: 1.3.0 - version: 1.3.0(prettier@3.4.1) + version: 1.3.0(prettier@3.4.2) '@playwright/test': specifier: 1.49.0 version: 1.49.0 @@ -124,14 +124,14 @@ importers: specifier: 14.0.1 version: 14.0.1(semantic-release@24.2.0(typescript@5.7.2)) '@tanstack/react-query': - specifier: 5.62.1 - version: 5.62.1(react@18.3.1) + specifier: 5.62.2 + version: 5.62.2(react@18.3.1) '@testing-library/dom': specifier: 10.4.0 version: 10.4.0 '@testing-library/react': - specifier: 16.0.1 - version: 16.0.1(@testing-library/dom@10.4.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 16.1.0 + version: 16.1.0(@testing-library/dom@10.4.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@total-typescript/ts-reset': specifier: 0.6.1 version: 0.6.1 @@ -178,8 +178,8 @@ importers: specifier: 2.5.1 version: 2.5.1(typescript@5.7.2) prettier: - specifier: 3.4.1 - version: 3.4.1 + specifier: 3.4.2 + version: 3.4.2 react: specifier: 18.3.1 version: 18.3.1 @@ -190,8 +190,8 @@ importers: specifier: 24.2.0 version: 24.2.0(typescript@5.7.2) storybook: - specifier: 8.4.6 - version: 8.4.6(prettier@3.4.1) + specifier: 8.4.7 + version: 8.4.7(prettier@3.4.2) tsx: specifier: 4.19.2 version: 4.19.2 @@ -1536,8 +1536,8 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@storybook/core@8.4.6': - resolution: {integrity: sha512-WeojVtHy0/t50tzw/15S+DLzKsj8BN9yWdo3vJMvm+nflLFvfq1XvD9WGOWeaFp8E/o3AP+4HprXG0r42KEJtA==} + '@storybook/core@8.4.7': + resolution: {integrity: sha512-7Z8Z0A+1YnhrrSXoKKwFFI4gnsLbWzr8fnDCU6+6HlDukFYh8GHRcZ9zKfqmy6U3hw2h8H5DrHsxWfyaYUUOoA==} peerDependencies: prettier: ^2 || ^3 peerDependenciesMeta: @@ -1547,6 +1547,9 @@ packages: '@storybook/csf@0.1.11': resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==} + '@storybook/csf@0.1.12': + resolution: {integrity: sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==} + '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} @@ -1558,11 +1561,11 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@tanstack/query-core@5.62.1': - resolution: {integrity: sha512-thYv90GkMcfumgmtp6sptC18SqxWwXTCKUuk7jyeHHn7kYouh0VJrowuuBffAIBiR3Z8OnsccmPUnP1leKJBVQ==} + '@tanstack/query-core@5.62.2': + resolution: {integrity: sha512-LcwVcC5qpsDpHcqlXUUL5o9SaOBwhNkGeV+B06s0GBoyBr8FqXPuXT29XzYXR36lchhnerp6XO+CWc84/vh7Zg==} - '@tanstack/react-query@5.62.1': - resolution: {integrity: sha512-gb4eglrgW+yOeiNPkpqFyN8oLrFafHrHE+q2LzVl7TfyA4fuQluH92NTl6Jed7ae35v+BNtAQng9mykywWLzfA==} + '@tanstack/react-query@5.62.2': + resolution: {integrity: sha512-fkTpKKfwTJtVPKVR+ag7YqFgG/7TRVVPzduPAUF9zRCiiA8Wu305u+KJl8rCrh98Qce77vzIakvtUyzWLtaPGA==} peerDependencies: react: ^18 || ^19 @@ -1570,15 +1573,15 @@ packages: resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} - '@testing-library/react@16.0.1': - resolution: {integrity: sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==} + '@testing-library/react@16.1.0': + resolution: {integrity: sha512-Q2ToPvg0KsVL0ohND9A3zLJWcOXXcO8IDu3fj11KhNt0UlCWyFyvnCIBkd12tidB2lkiVRG8VFqdhcqhqnAQtg==} engines: {node: '>=18'} peerDependencies: '@testing-library/dom': ^10.0.0 - '@types/react': ^18.0.0 - '@types/react-dom': ^18.0.0 - react: ^18.0.0 - react-dom: ^18.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true @@ -2562,8 +2565,8 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-typescript@3.6.3: - resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} + eslint-import-resolver-typescript@3.7.0: + resolution: {integrity: sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -2575,27 +2578,6 @@ packages: eslint-plugin-import-x: optional: true - eslint-module-utils@2.12.0: - resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - eslint-plugin-astro@1.3.1: resolution: {integrity: sha512-2XaLCMQm8htW1UvJvy1Zcmg8l0ziskitiUfJTn/w1Mk7r4Mxj0fZeNpN6UTNrm64XBIXSa5h8UCGrg8mdu47+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2608,8 +2590,8 @@ packages: peerDependencies: eslint: '>=8' - eslint-plugin-import-x@4.4.3: - resolution: {integrity: sha512-QBprHvhLsfDhP++2T1NnjsOUt6bLDX3NMHaYwAB1FD3xmYTkdFH+HS1OamGhz28jLkRyIZa6UNAzTxbHnJwz5w==} + eslint-plugin-import-x@4.5.0: + resolution: {integrity: sha512-l0OTfnPF8RwmSXfjT75N8d6ZYLVrVYWpaGlgvVkVqFERCI5SyBfDP7QEMr3kt0zWi2sOa9EQ47clbdFsHkF83Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3012,6 +2994,10 @@ packages: gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} @@ -3230,8 +3216,8 @@ packages: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} - is-bun-module@1.2.1: - resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} + is-bun-module@1.3.0: + resolution: {integrity: sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==} is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} @@ -4426,8 +4412,8 @@ packages: prettier-plugin-svelte: optional: true - prettier@3.4.1: - resolution: {integrity: sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==} + prettier@3.4.2: + resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} engines: {node: '>=14'} hasBin: true @@ -4817,8 +4803,8 @@ packages: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} - storybook@8.4.6: - resolution: {integrity: sha512-J6juZSZT2u3PUW0QZYZZYxBq6zU5O0OrkSgkMXGMg/QrS9to9IHmt4FjEMEyACRbXo8POcB/fSXa3VpGe7bv3g==} + storybook@8.4.7: + resolution: {integrity: sha512-RP/nMJxiWyFc8EVMH5gp20ID032Wvk+Yr3lmKidoegto5Iy+2dVQnUoElZb2zpbVXNHWakGuAkfI0dY1Hfp/vw==} hasBin: true peerDependencies: prettier: ^2 || ^3 @@ -5315,6 +5301,10 @@ packages: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} + which-typed-array@1.1.16: + resolution: {integrity: sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==} + engines: {node: '>= 0.4'} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -6167,11 +6157,11 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@jimmy.codes/prettier-config@1.3.0(prettier@3.4.1)': + '@jimmy.codes/prettier-config@1.3.0(prettier@3.4.2)': dependencies: - prettier: 3.4.1 + prettier: 3.4.2 prettier-plugin-astro: 0.14.1 - prettier-plugin-tailwindcss: 0.6.8(prettier-plugin-astro@0.14.1)(prettier@3.4.1) + prettier-plugin-tailwindcss: 0.6.8(prettier-plugin-astro@0.14.1)(prettier@3.4.2) transitivePeerDependencies: - '@ianvs/prettier-plugin-sort-imports' - '@prettier/plugin-pug' @@ -6645,9 +6635,9 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@storybook/core@8.4.6(prettier@3.4.1)': + '@storybook/core@8.4.7(prettier@3.4.2)': dependencies: - '@storybook/csf': 0.1.11 + '@storybook/csf': 0.1.12 better-opn: 3.0.2 browser-assert: 1.2.1 esbuild: 0.24.0 @@ -6659,7 +6649,7 @@ snapshots: util: 0.12.5 ws: 8.18.0 optionalDependencies: - prettier: 3.4.1 + prettier: 3.4.2 transitivePeerDependencies: - bufferutil - supports-color @@ -6669,6 +6659,10 @@ snapshots: dependencies: type-fest: 2.19.0 + '@storybook/csf@0.1.12': + dependencies: + type-fest: 2.19.0 + '@swc/counter@0.1.3': {} '@swc/helpers@0.5.13': @@ -6683,11 +6677,11 @@ snapshots: - supports-color - typescript - '@tanstack/query-core@5.62.1': {} + '@tanstack/query-core@5.62.2': {} - '@tanstack/react-query@5.62.1(react@18.3.1)': + '@tanstack/react-query@5.62.2(react@18.3.1)': dependencies: - '@tanstack/query-core': 5.62.1 + '@tanstack/query-core': 5.62.2 react: 18.3.1 '@testing-library/dom@10.4.0': @@ -6701,7 +6695,7 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/react@16.0.1(@testing-library/dom@10.4.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@testing-library/react@16.1.0(@testing-library/dom@10.4.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@testing-library/dom': 10.4.0 @@ -7916,32 +7910,19 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint-plugin-import-x@4.4.3(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.16.0(jiti@2.4.1)): + eslint-import-resolver-typescript@3.7.0(eslint-plugin-import-x@4.5.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.16.0(jiti@2.4.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7 enhanced-resolve: 5.17.1 eslint: 9.16.0(jiti@2.4.1) - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint-plugin-import-x@4.4.3(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.16.0(jiti@2.4.1)))(eslint@9.16.0(jiti@2.4.1)) fast-glob: 3.3.2 get-tsconfig: 4.8.1 - is-bun-module: 1.2.1 + is-bun-module: 1.3.0 is-glob: 4.0.3 + stable-hash: 0.0.4 optionalDependencies: - eslint-plugin-import-x: 4.4.3(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2) - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - - supports-color - - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint-plugin-import-x@4.4.3(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.16.0(jiti@2.4.1)))(eslint@9.16.0(jiti@2.4.1)): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2) - eslint: 9.16.0(jiti@2.4.1) - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint-plugin-import-x@4.4.3(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.16.0(jiti@2.4.1)) + eslint-plugin-import-x: 4.5.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2) transitivePeerDependencies: - supports-color @@ -7967,8 +7948,9 @@ snapshots: eslint: 9.16.0(jiti@2.4.1) eslint-compat-utils: 0.5.1(eslint@9.16.0(jiti@2.4.1)) - eslint-plugin-import-x@4.4.3(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2): + eslint-plugin-import-x@4.5.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2): dependencies: + '@typescript-eslint/scope-manager': 8.17.0 '@typescript-eslint/utils': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2) debug: 4.3.7 doctrine: 3.0.0 @@ -8514,6 +8496,8 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + gopd@1.2.0: {} + graceful-fs@4.2.10: {} graceful-fs@4.2.11: {} @@ -8781,7 +8765,7 @@ snapshots: dependencies: builtin-modules: 3.3.0 - is-bun-module@1.2.1: + is-bun-module@1.3.0: dependencies: semver: 7.6.3 @@ -9963,16 +9947,16 @@ snapshots: prettier-plugin-astro@0.14.1: dependencies: '@astrojs/compiler': 2.10.3 - prettier: 3.4.1 + prettier: 3.4.2 sass-formatter: 0.7.9 - prettier-plugin-tailwindcss@0.6.8(prettier-plugin-astro@0.14.1)(prettier@3.4.1): + prettier-plugin-tailwindcss@0.6.8(prettier-plugin-astro@0.14.1)(prettier@3.4.2): dependencies: - prettier: 3.4.1 + prettier: 3.4.2 optionalDependencies: prettier-plugin-astro: 0.14.1 - prettier@3.4.1: {} + prettier@3.4.2: {} pretty-format@27.5.1: dependencies: @@ -10516,11 +10500,11 @@ snapshots: stdin-discarder@0.2.2: {} - storybook@8.4.6(prettier@3.4.1): + storybook@8.4.7(prettier@3.4.2): dependencies: - '@storybook/core': 8.4.6(prettier@3.4.1) + '@storybook/core': 8.4.7(prettier@3.4.2) optionalDependencies: - prettier: 3.4.1 + prettier: 3.4.2 transitivePeerDependencies: - bufferutil - supports-color @@ -10919,7 +10903,7 @@ snapshots: is-arguments: 1.1.1 is-generator-function: 1.0.10 is-typed-array: 1.1.13 - which-typed-array: 1.1.15 + which-typed-array: 1.1.16 validate-npm-package-license@3.0.4: dependencies: @@ -11053,6 +11037,14 @@ snapshots: gopd: 1.0.1 has-tostringtag: 1.0.2 + which-typed-array@1.1.16: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + which@2.0.2: dependencies: isexe: 2.0.0 diff --git a/src/configs/imports.spec.ts b/src/configs/imports.spec.ts new file mode 100644 index 0000000..2d760f8 --- /dev/null +++ b/src/configs/imports.spec.ts @@ -0,0 +1,55 @@ +import { importsConfig } from "./imports"; + +describe("importsConfig", () => { + it("should only contain base config", () => { + const [base, typescript] = importsConfig(); + + expect(base.name).toBe("jimmy.codes/imports"); + expect(typescript?.name).toBeUndefined(); + }); + + it("should contain typescript config when enabled", () => { + const [base, typescript] = importsConfig({ typescript: true }); + + expect(base.name).toBe("jimmy.codes/imports"); + expect(typescript?.name).toBe("jimmy.codes/imports/typescript"); + }); + + it("should contain typescript settings config when enabled", () => { + const [_base, typescript] = importsConfig({ typescript: true }); + + expect(typescript?.settings).toMatchInlineSnapshot(` + { + "import-x/extensions": [ + ".ts", + ".tsx", + ".cts", + ".mts", + ".js", + ".jsx", + ".cjs", + ".mjs", + ], + "import-x/external-module-folders": [ + "node_modules", + "node_modules/@types", + ], + "import-x/parsers": { + "@typescript-eslint/parser": [ + ".ts", + ".tsx", + ".cts", + ".mts", + ], + }, + "import-x/resolver-next": [ + { + "interfaceVersion": 3, + "name": "eslint-import-resolver-typescript", + "resolve": [Function], + }, + ], + } + `); + }); +}); diff --git a/src/configs/imports.ts b/src/configs/imports.ts index 4cb932f..facce18 100644 --- a/src/configs/imports.ts +++ b/src/configs/imports.ts @@ -1,3 +1,4 @@ +import { createTypeScriptImportResolver } from "eslint-import-resolver-typescript"; import importX from "eslint-plugin-import-x"; import nodePlugin from "eslint-plugin-n"; @@ -5,16 +6,26 @@ import type { TypedConfigItem, TypescriptOptions } from "../types"; import { importsRules } from "../rules/imports"; -const typescriptImports = { - name: "jimmy.codes/imports/typescript", - rules: importX.configs.typescript.rules, - settings: { - ...importX.configs.typescript.settings, - "import-x/resolver": { - ...importX.configs.typescript.settings["import-x/resolver"], - typescript: true, +const importsTypescriptConfig = () => { + const { rules, settings } = importX.configs.typescript; + + return [ + { + name: "jimmy.codes/imports/typescript", + rules, + settings: { + "import-x/extensions": settings["import-x/extensions"], + "import-x/external-module-folders": + settings["import-x/external-module-folders"], + "import-x/parsers": settings["import-x/parsers"], + "import-x/resolver-next": [ + createTypeScriptImportResolver({ + alwaysTryTypes: true, + }), + ], + }, }, - }, + ]; }; interface ImportsConfigOptions { @@ -33,6 +44,6 @@ export const importsConfig = ({ }, rules: importsRules, }, - ...(typescript ? [typescriptImports] : []), - ] satisfies TypedConfigItem[]; + ...(typescript ? importsTypescriptConfig() : []), + ] as const satisfies TypedConfigItem[]; }; diff --git a/src/rules.gen.d.ts b/src/rules.gen.d.ts index c74909d..bcf2b05 100644 --- a/src/rules.gen.d.ts +++ b/src/rules.gen.d.ts @@ -1362,233 +1362,233 @@ export interface RuleOptions { 'implicit-arrow-linebreak'?: Linter.RuleEntry /** * Enforce or ban the use of inline type-only markers for named imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/consistent-type-specifier-style.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/consistent-type-specifier-style.md */ 'import-x/consistent-type-specifier-style'?: Linter.RuleEntry /** * Ensure a default export is present, given a default import. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/default.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/default.md */ 'import-x/default'?: Linter.RuleEntry<[]> /** * Enforce a leading comment with the webpackChunkName for dynamic imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/dynamic-import-chunkname.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/dynamic-import-chunkname.md */ 'import-x/dynamic-import-chunkname'?: Linter.RuleEntry /** * Forbid any invalid exports, i.e. re-export of the same name. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/export.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/export.md */ 'import-x/export'?: Linter.RuleEntry<[]> /** * Ensure all exports appear after other statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/exports-last.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/exports-last.md */ 'import-x/exports-last'?: Linter.RuleEntry<[]> /** * Ensure consistent use of file extension within the import path. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/extensions.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/extensions.md */ 'import-x/extensions'?: Linter.RuleEntry /** * Ensure all imports appear before other statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/first.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/first.md */ 'import-x/first'?: Linter.RuleEntry /** * Prefer named exports to be grouped together in a single export declaration. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/group-exports.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/group-exports.md */ 'import-x/group-exports'?: Linter.RuleEntry<[]> /** * Replaced by `import-x/first`. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/imports-first.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/imports-first.md * @deprecated */ 'import-x/imports-first'?: Linter.RuleEntry /** * Enforce the maximum number of dependencies a module can have. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/max-dependencies.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/max-dependencies.md */ 'import-x/max-dependencies'?: Linter.RuleEntry /** * Ensure named imports correspond to a named export in the remote file. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/named.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/named.md */ 'import-x/named'?: Linter.RuleEntry /** * Ensure imported namespaces contain dereferenced properties as they are dereferenced. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/namespace.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/namespace.md */ 'import-x/namespace'?: Linter.RuleEntry /** * Enforce a newline after import statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/newline-after-import.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/newline-after-import.md */ 'import-x/newline-after-import'?: Linter.RuleEntry /** * Forbid import of modules using absolute paths. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-absolute-path.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-absolute-path.md */ 'import-x/no-absolute-path'?: Linter.RuleEntry /** * Forbid AMD `require` and `define` calls. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-amd.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-amd.md */ 'import-x/no-amd'?: Linter.RuleEntry<[]> /** * Forbid anonymous values as default exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-anonymous-default-export.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-anonymous-default-export.md */ 'import-x/no-anonymous-default-export'?: Linter.RuleEntry /** * Forbid CommonJS `require` calls and `module.exports` or `exports.*`. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-commonjs.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-commonjs.md */ 'import-x/no-commonjs'?: Linter.RuleEntry /** * Forbid a module from importing a module with a dependency path back to itself. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-cycle.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-cycle.md */ 'import-x/no-cycle'?: Linter.RuleEntry /** * Forbid default exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-default-export.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-default-export.md */ 'import-x/no-default-export'?: Linter.RuleEntry<[]> /** * Forbid imported names marked with `@deprecated` documentation tag. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-deprecated.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-deprecated.md */ 'import-x/no-deprecated'?: Linter.RuleEntry<[]> /** * Forbid repeated import of the same module in multiple places. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-duplicates.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-duplicates.md */ 'import-x/no-duplicates'?: Linter.RuleEntry /** * Forbid `require()` calls with expressions. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-dynamic-require.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-dynamic-require.md */ 'import-x/no-dynamic-require'?: Linter.RuleEntry /** * Forbid empty named import blocks. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-empty-named-blocks.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-empty-named-blocks.md */ 'import-x/no-empty-named-blocks'?: Linter.RuleEntry<[]> /** * Forbid the use of extraneous packages. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-extraneous-dependencies.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-extraneous-dependencies.md */ 'import-x/no-extraneous-dependencies'?: Linter.RuleEntry /** * Forbid import statements with CommonJS module.exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-import-module-exports.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-import-module-exports.md */ 'import-x/no-import-module-exports'?: Linter.RuleEntry /** * Forbid importing the submodules of other modules. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-internal-modules.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-internal-modules.md */ 'import-x/no-internal-modules'?: Linter.RuleEntry /** * Forbid the use of mutable exports with `var` or `let`. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-mutable-exports.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-mutable-exports.md */ 'import-x/no-mutable-exports'?: Linter.RuleEntry<[]> /** * Forbid use of exported name as identifier of default export. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-named-as-default.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-named-as-default.md */ 'import-x/no-named-as-default'?: Linter.RuleEntry<[]> /** * Forbid use of exported name as property of default export. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-named-as-default-member.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-named-as-default-member.md */ 'import-x/no-named-as-default-member'?: Linter.RuleEntry<[]> /** * Forbid named default exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-named-default.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-named-default.md */ 'import-x/no-named-default'?: Linter.RuleEntry<[]> /** * Forbid named exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-named-export.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-named-export.md */ 'import-x/no-named-export'?: Linter.RuleEntry<[]> /** * Forbid namespace (a.k.a. "wildcard" `*`) imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-namespace.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-namespace.md */ 'import-x/no-namespace'?: Linter.RuleEntry /** * Forbid Node.js builtin modules. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-nodejs-modules.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-nodejs-modules.md */ 'import-x/no-nodejs-modules'?: Linter.RuleEntry /** * Forbid importing packages through relative paths. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-relative-packages.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-relative-packages.md */ 'import-x/no-relative-packages'?: Linter.RuleEntry /** * Forbid importing modules from parent directories. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-relative-parent-imports.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-relative-parent-imports.md */ 'import-x/no-relative-parent-imports'?: Linter.RuleEntry /** * Forbid importing a default export by a different name. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-rename-default.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-rename-default.md */ 'import-x/no-rename-default'?: Linter.RuleEntry /** * Enforce which files can be imported in a given folder. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-restricted-paths.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-restricted-paths.md */ 'import-x/no-restricted-paths'?: Linter.RuleEntry /** * Forbid a module from importing itself. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-self-import.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-self-import.md */ 'import-x/no-self-import'?: Linter.RuleEntry<[]> /** * Forbid unassigned imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-unassigned-import.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-unassigned-import.md */ 'import-x/no-unassigned-import'?: Linter.RuleEntry /** * Ensure imports point to a file/module that can be resolved. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-unresolved.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-unresolved.md */ 'import-x/no-unresolved'?: Linter.RuleEntry /** * Forbid modules without exports, or exports without matching import in another module. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-unused-modules.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-unused-modules.md */ 'import-x/no-unused-modules'?: Linter.RuleEntry /** * Forbid unnecessary path segments in import and require statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-useless-path-segments.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-useless-path-segments.md */ 'import-x/no-useless-path-segments'?: Linter.RuleEntry /** * Forbid webpack loader syntax in imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/no-webpack-loader-syntax.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/no-webpack-loader-syntax.md */ 'import-x/no-webpack-loader-syntax'?: Linter.RuleEntry<[]> /** * Enforce a convention in module import order. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/order.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/order.md */ 'import-x/order'?: Linter.RuleEntry /** * Prefer a default export if module exports a single name or multiple names. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/prefer-default-export.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/prefer-default-export.md */ 'import-x/prefer-default-export'?: Linter.RuleEntry /** * Forbid potentially ambiguous parse goal (`script` vs. `module`). - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.4.3/docs/rules/unambiguous.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.5.0/docs/rules/unambiguous.md */ 'import-x/unambiguous'?: Linter.RuleEntry<[]> /** From 74b6b5b7193e242158a4d8fcf99041e9632814af Mon Sep 17 00:00:00 2001 From: jimmy-guzman Date: Thu, 5 Dec 2024 18:01:24 -0600 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E2=9C=A8=20bump=20`eslint-plugin-p?= =?UTF-8?q?erfectionist`=20to=20v4.2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- pnpm-lock.yaml | 18 +++----- src/rules.gen.d.ts | 106 +++++++++++++++++++++++++++++++++------------ 3 files changed, 86 insertions(+), 40 deletions(-) diff --git a/package.json b/package.json index 7acf110..06c04f1 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "eslint-plugin-jest-dom": "^5.5.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-n": "^17.14.0", - "eslint-plugin-perfectionist": "^4.1.2", + "eslint-plugin-perfectionist": "^4.2.0", "eslint-plugin-playwright": "^2.1.0", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-compiler": "19.0.0-beta-df7b47d-20241124", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6e5925e..7b18722 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,8 +57,8 @@ importers: specifier: ^17.14.0 version: 17.14.0(eslint@9.16.0(jiti@2.4.1)) eslint-plugin-perfectionist: - specifier: ^4.1.2 - version: 4.1.2(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2) + specifier: ^4.2.0 + version: 4.2.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2) eslint-plugin-playwright: specifier: ^2.1.0 version: 2.1.0(eslint@9.16.0(jiti@2.4.1)) @@ -1708,10 +1708,6 @@ packages: resolution: {integrity: sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.16.0': - resolution: {integrity: sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.17.0': resolution: {integrity: sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2631,8 +2627,8 @@ packages: peerDependencies: eslint: '>=8.23.0' - eslint-plugin-perfectionist@4.1.2: - resolution: {integrity: sha512-YjXPWB/rKe/gPUsyuxw75wTUrzN5MuJnRV0PH9NoonFvgcdVIXk551mkBKPr59nRZCbu7S3dFHwfo4gA42DB2w==} + eslint-plugin-perfectionist@4.2.0: + resolution: {integrity: sha512-hEMFx5xfSc/0OLZXJhSaLUKkFxATuRf4yL2iVfxEcxkkb17DfoLZY9eH960dPSw5uB7o+4avqP3rtkNp1Vwo7w==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: eslint: '>=8.0.0' @@ -6843,8 +6839,6 @@ snapshots: '@typescript-eslint/types@8.15.0': {} - '@typescript-eslint/types@8.16.0': {} - '@typescript-eslint/types@8.17.0': {} '@typescript-eslint/typescript-estree@8.13.0(typescript@5.7.2)': @@ -8015,9 +8009,9 @@ snapshots: minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-perfectionist@4.1.2(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2): + eslint-plugin-perfectionist@4.2.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2): dependencies: - '@typescript-eslint/types': 8.16.0 + '@typescript-eslint/types': 8.17.0 '@typescript-eslint/utils': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.7.2) eslint: 9.16.0(jiti@2.4.1) natural-orderby: 5.0.0 diff --git a/src/rules.gen.d.ts b/src/rules.gen.d.ts index bcf2b05..fe52c2a 100644 --- a/src/rules.gen.d.ts +++ b/src/rules.gen.d.ts @@ -9252,6 +9252,10 @@ type PerfectionistSortArrayIncludes = []|[{ // ----- perfectionist/sort-classes ----- type PerfectionistSortClasses = []|[{ + ignoreCallbackDependenciesPatterns?: string[] + + partitionByComment?: (string[] | boolean | string) + customGroups?: ({ groupName?: string @@ -9261,12 +9265,12 @@ type PerfectionistSortClasses = []|[{ order?: ("desc" | "asc") anyOf?: { - modifiers?: ("async" | "protected" | "private" | "public" | "static" | "abstract" | "override" | "readonly" | "decorated" | "declare" | "optional")[] - elementValuePattern?: string decoratorNamePattern?: string + modifiers?: ("async" | "protected" | "private" | "public" | "static" | "abstract" | "override" | "readonly" | "decorated" | "declare" | "optional")[] + selector?: ("accessor-property" | "index-signature" | "constructor" | "static-block" | "get-method" | "set-method" | "function-property" | "property" | "method") elementNamePattern?: string @@ -9279,21 +9283,17 @@ type PerfectionistSortClasses = []|[{ order?: ("desc" | "asc") - modifiers?: ("async" | "protected" | "private" | "public" | "static" | "abstract" | "override" | "readonly" | "decorated" | "declare" | "optional")[] - elementValuePattern?: string decoratorNamePattern?: string + modifiers?: ("async" | "protected" | "private" | "public" | "static" | "abstract" | "override" | "readonly" | "decorated" | "declare" | "optional")[] + selector?: ("accessor-property" | "index-signature" | "constructor" | "static-block" | "get-method" | "set-method" | "function-property" | "property" | "method") elementNamePattern?: string })[] - ignoreCallbackDependenciesPatterns?: string[] - - partitionByComment?: (string[] | boolean | string) - partitionByNewLine?: boolean specialCharacters?: ("remove" | "trim" | "keep") @@ -9456,8 +9456,39 @@ type PerfectionistSortInterfaces = []|[{ ignorePattern?: string[] partitionByComment?: (string[] | boolean | string) + customGroups?: ({ + [k: string]: (string | string[]) | undefined + } | ({ + + groupName?: string + + type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + + order?: ("desc" | "asc") + anyOf?: { + + modifiers?: ("optional" | "required" | "multiline")[] + + selector?: ("index-signature" | "member" | "method" | "multiline" | "property") + + elementNamePattern?: string + }[] + } | { + + groupName?: string + + type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + + order?: ("desc" | "asc") + + modifiers?: ("optional" | "required" | "multiline")[] + + selector?: ("index-signature" | "member" | "method" | "multiline" | "property") + + elementNamePattern?: string + })[]) - groupKind?: ("mixed" | "optional-first" | "required-first") + groupKind?: ("mixed" | "required-first" | "optional-first") partitionByNewLine?: boolean @@ -9465,10 +9496,6 @@ type PerfectionistSortInterfaces = []|[{ newlinesBetween?: ("ignore" | "always" | "never") - customGroups?: { - [k: string]: (string | string[]) | undefined - } - ignoreCase?: boolean locales?: (string | string[]) @@ -9541,6 +9568,8 @@ type PerfectionistSortMaps = []|[{ // ----- perfectionist/sort-modules ----- type PerfectionistSortModules = []|[{ + partitionByComment?: (string[] | boolean | string) + customGroups?: ({ groupName?: string @@ -9550,12 +9579,10 @@ type PerfectionistSortModules = []|[{ order?: ("desc" | "asc") anyOf?: { - modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[] - - elementValuePattern?: string - decoratorNamePattern?: string + modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[] + selector?: ("enum" | "function" | "interface" | "type" | "class") elementNamePattern?: string @@ -9568,19 +9595,15 @@ type PerfectionistSortModules = []|[{ order?: ("desc" | "asc") - modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[] - - elementValuePattern?: string - decoratorNamePattern?: string + modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[] + selector?: ("enum" | "function" | "interface" | "type" | "class") elementNamePattern?: string })[] - partitionByComment?: (string[] | boolean | string) - partitionByNewLine?: boolean specialCharacters?: ("remove" | "trim" | "keep") @@ -9640,7 +9663,40 @@ type PerfectionistSortNamedImports = []|[{ // ----- perfectionist/sort-object-types ----- type PerfectionistSortObjectTypes = []|[{ + ignorePattern?: string[] + partitionByComment?: (string[] | boolean | string) + customGroups?: ({ + [k: string]: (string | string[]) | undefined + } | ({ + + groupName?: string + + type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + + order?: ("desc" | "asc") + anyOf?: { + + modifiers?: ("optional" | "required" | "multiline")[] + + selector?: ("index-signature" | "member" | "method" | "multiline" | "property") + + elementNamePattern?: string + }[] + } | { + + groupName?: string + + type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + + order?: ("desc" | "asc") + + modifiers?: ("optional" | "required" | "multiline")[] + + selector?: ("index-signature" | "member" | "method" | "multiline" | "property") + + elementNamePattern?: string + })[]) groupKind?: ("mixed" | "required-first" | "optional-first") @@ -9650,10 +9706,6 @@ type PerfectionistSortObjectTypes = []|[{ newlinesBetween?: ("ignore" | "always" | "never") - customGroups?: { - [k: string]: (string | string[]) | undefined - } - ignoreCase?: boolean locales?: (string | string[])