From 8b3ff9865e248b9f6b31ddb7f696fcf8dad82f65 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Fri, 12 Jul 2024 11:02:43 +0800 Subject: [PATCH 01/36] chore/ci: bump Node.js requirement to 18.18 --- .github/workflows/ci.yml | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f0c4d162c..9e5ea9ed9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,9 +14,9 @@ jobs: - ubuntu-latest # - windows-latest node: - - 16 - 18 - 20 + - 22 eslint: - '8.56' - '8' diff --git a/package.json b/package.json index 9e587bc2e..408d338ae 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "license": "MIT", "packageManager": "yarn@1.22.19", "engines": { - "node": ">=16" + "node": ">=18.18" }, "main": "lib/index.js", "exports": { From 1d45ef58ac868f5adfded81c556d5b531a7ba32c Mon Sep 17 00:00:00 2001 From: SukkaW Date: Fri, 12 Jul 2024 11:06:31 +0800 Subject: [PATCH 02/36] chore(devDeps): bump typescript eslint to v8 --- .eslintrc.js | 2 +- package.json | 4 +- src/types.ts | 9 ++-- yarn.lock | 137 ++++++++++++++++++++++++++++++++++++--------------- 4 files changed, 103 insertions(+), 49 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 27ce99ac8..54a81f13f 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -23,7 +23,7 @@ module.exports = { }, rules: { '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-require-imports': 'off', 'eslint-plugin/consistent-output': ['error', 'always'], 'eslint-plugin/meta-property-ordering': 'error', diff --git a/package.json b/package.json index 408d338ae..fa2998840 100644 --- a/package.json +++ b/package.json @@ -87,8 +87,8 @@ "@types/jest": "^29.5.12", "@types/json-schema": "^7.0.15", "@types/node": "^20.11.30", - "@typescript-eslint/eslint-plugin": "^7.4.0", - "@typescript-eslint/parser": "^7.4.0", + "@typescript-eslint/eslint-plugin": "^8.0.0-alpha.41", + "@typescript-eslint/parser": "^8.0.0-alpha.41", "@unts/patch-package": "^8.0.0", "cross-env": "^7.0.3", "enhanced-resolve": "^5.16.0", diff --git a/src/types.ts b/src/types.ts index 78a947787..785995dae 100644 --- a/src/types.ts +++ b/src/types.ts @@ -89,11 +89,10 @@ export type ParseError = { column: number } & Error -// eslint-disable-next-line @typescript-eslint/ban-types -export type CustomESTreeNode = Omit< - TSESTree.BaseNode, - 'type' -> & { +export type CustomESTreeNode< + Type extends string, + T extends object = object, +> = Omit & { type: Type } & T diff --git a/yarn.lock b/yarn.lock index 760e281b4..60c2a9a01 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1398,7 +1398,12 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.10.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" + integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== + +"@eslint-community/regexpp@^4.6.0", "@eslint-community/regexpp@^4.6.1": version "4.10.0" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== @@ -2226,32 +2231,30 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.4.0.tgz#de61c3083842fc6ac889d2fc83c9a96b55ab8328" - integrity sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw== +"@typescript-eslint/eslint-plugin@^8.0.0-alpha.41": + version "8.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.0-alpha.41.tgz#8dfb0416c802cf53d9b8ba2688bb5d87c3b5a5ba" + integrity sha512-WePtbzWMaQO4qtGAXp3zzEN8yYZCEuAHVCERCUXgoSUTQ80F5UB7T5lYyA9ySpFDB7rqJ2ev98DtnbS4U3Ms+w== dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "7.4.0" - "@typescript-eslint/type-utils" "7.4.0" - "@typescript-eslint/utils" "7.4.0" - "@typescript-eslint/visitor-keys" "7.4.0" - debug "^4.3.4" + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.0.0-alpha.41" + "@typescript-eslint/type-utils" "8.0.0-alpha.41" + "@typescript-eslint/utils" "8.0.0-alpha.41" + "@typescript-eslint/visitor-keys" "8.0.0-alpha.41" graphemer "^1.4.0" - ignore "^5.2.4" + ignore "^5.3.1" natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" + ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.4.0.tgz#540f4321de1e52b886c0fa68628af1459954c1f1" - integrity sha512-ZvKHxHLusweEUVwrGRXXUVzFgnWhigo4JurEj0dGF1tbcGh6buL+ejDdjxOQxv6ytcY1uhun1p2sm8iWStlgLQ== +"@typescript-eslint/parser@^8.0.0-alpha.41": + version "8.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.0.0-alpha.41.tgz#d6b5f3a869a78d490c94628bc119a9a38c5842a8" + integrity sha512-7HMXwy/q/59ZASBXz2FtdIsR7LgABrR8j2dTKq9GMR8OkjjdO4klxWSY/uOBozVt4UxlMRYsBdBDhEq4/tHRiw== dependencies: - "@typescript-eslint/scope-manager" "7.4.0" - "@typescript-eslint/types" "7.4.0" - "@typescript-eslint/typescript-estree" "7.4.0" - "@typescript-eslint/visitor-keys" "7.4.0" + "@typescript-eslint/scope-manager" "8.0.0-alpha.41" + "@typescript-eslint/types" "8.0.0-alpha.41" + "@typescript-eslint/typescript-estree" "8.0.0-alpha.41" + "@typescript-eslint/visitor-keys" "8.0.0-alpha.41" debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": @@ -2270,15 +2273,23 @@ "@typescript-eslint/types" "7.4.0" "@typescript-eslint/visitor-keys" "7.4.0" -"@typescript-eslint/type-utils@7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.4.0.tgz#cfcaab21bcca441c57da5d3a1153555e39028cbd" - integrity sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw== +"@typescript-eslint/scope-manager@8.0.0-alpha.41": + version "8.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.0.0-alpha.41.tgz#7729d129d966cc34a3b37c12cf08ba1b0467d516" + integrity sha512-iNxuQ0TMVfFiMJ2al4bGd/mY9+aLtBxnHfo7B2xoVzR6cRFgUdBLlMa//MSIjSmVRpCEqNLQnkxpJb96tFG+xw== dependencies: - "@typescript-eslint/typescript-estree" "7.4.0" - "@typescript-eslint/utils" "7.4.0" + "@typescript-eslint/types" "8.0.0-alpha.41" + "@typescript-eslint/visitor-keys" "8.0.0-alpha.41" + +"@typescript-eslint/type-utils@8.0.0-alpha.41": + version "8.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.0.0-alpha.41.tgz#6da1e44d9ce1e060e66feaa45f73a792965a0e69" + integrity sha512-+QIA1z/jrox6bbvqlyqBQjotpevieLTycfiuoKuqGcKoskFZV5Rma51BV8LCJacnOafwJtSi+7b8zDo8OsXUvA== + dependencies: + "@typescript-eslint/typescript-estree" "8.0.0-alpha.41" + "@typescript-eslint/utils" "8.0.0-alpha.41" debug "^4.3.4" - ts-api-utils "^1.0.1" + ts-api-utils "^1.3.0" "@typescript-eslint/types@5.62.0": version "5.62.0" @@ -2290,6 +2301,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.4.0.tgz#ee9dafa75c99eaee49de6dcc9348b45d354419b6" integrity sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw== +"@typescript-eslint/types@8.0.0-alpha.41": + version "8.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.0.0-alpha.41.tgz#c1f8dacfb118e4d9febdff2f065802c4db69beae" + integrity sha512-n0P2FP3YC3pD3yoiCf4lHqbUP45xlnOk8HkjB+LtKSUZZWLLJ8k1ZXZtQj7MEX22tytCMj//Bmq403xFuCwfIg== + "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" @@ -2317,18 +2333,29 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@7.4.0", "@typescript-eslint/utils@^7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.4.0.tgz#d889a0630cab88bddedaf7c845c64a00576257bd" - integrity sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg== +"@typescript-eslint/typescript-estree@8.0.0-alpha.41": + version "8.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0-alpha.41.tgz#c78c96d6b3f39355aac2bdf2f999abfd9333121f" + integrity sha512-adCr+vbLYTFhwhIwjIjjMxTdUYiPA2Jlyuhnbj092IzgLHtT79bvuwcgPWeTyLbFb/13SMKmOEka00xHiqLpig== + dependencies: + "@typescript-eslint/types" "8.0.0-alpha.41" + "@typescript-eslint/visitor-keys" "8.0.0-alpha.41" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/utils@8.0.0-alpha.41": + version "8.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.0.0-alpha.41.tgz#de7d1fb1856773c7343028352cf326a668aa43b9" + integrity sha512-DTxc9VdERS6iloiw1P5tgRDqRArmp/sIuvgdHBvGh2SiltEFc3VjLGnHHGSTr6GfH7tjFWvcCnCtxx+pjWfp5Q== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "7.4.0" - "@typescript-eslint/types" "7.4.0" - "@typescript-eslint/typescript-estree" "7.4.0" - semver "^7.5.4" + "@typescript-eslint/scope-manager" "8.0.0-alpha.41" + "@typescript-eslint/types" "8.0.0-alpha.41" + "@typescript-eslint/typescript-estree" "8.0.0-alpha.41" "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.38.1": version "5.62.0" @@ -2344,6 +2371,19 @@ eslint-scope "^5.1.1" semver "^7.3.7" +"@typescript-eslint/utils@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.4.0.tgz#d889a0630cab88bddedaf7c845c64a00576257bd" + integrity sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "7.4.0" + "@typescript-eslint/types" "7.4.0" + "@typescript-eslint/typescript-estree" "7.4.0" + semver "^7.5.4" + "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" @@ -2360,6 +2400,14 @@ "@typescript-eslint/types" "7.4.0" eslint-visitor-keys "^3.4.1" +"@typescript-eslint/visitor-keys@8.0.0-alpha.41": + version "8.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0-alpha.41.tgz#6ddefe0a08a36683e2e8db4b161d6b67374b7757" + integrity sha512-uetCAUBVC+YarBdZnWzDDgX11PpAEGV8Cw31I3d1xNrhx6/bJGThKX+holEmd3amMdnr4w/XUKH/4YuQOgtjDA== + dependencies: + "@typescript-eslint/types" "8.0.0-alpha.41" + eslint-visitor-keys "^3.4.3" + "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" @@ -4161,7 +4209,7 @@ iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -ignore@^5.2.0, ignore@^5.2.4: +ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== @@ -5225,6 +5273,13 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -6399,7 +6454,7 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -ts-api-utils@^1.0.1: +ts-api-utils@^1.0.1, ts-api-utils@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== From cf1d9b6c2710f048a1b52e108cae5f715a55d2ca Mon Sep 17 00:00:00 2001 From: SukkaW Date: Fri, 12 Jul 2024 11:24:49 +0800 Subject: [PATCH 03/36] refactor: adapt typescript-eslint v8 --- package.json | 2 +- ...escript-eslint+utils+8.0.0-alpha.41.patch} | 19 ++---- src/utils/create-rule.ts | 4 +- yarn.lock | 68 +++---------------- 4 files changed, 19 insertions(+), 74 deletions(-) rename patches/{@typescript-eslint+utils+7.4.0.patch => @typescript-eslint+utils+8.0.0-alpha.41.patch} (63%) diff --git a/package.json b/package.json index fa2998840..83aef18ec 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "eslint": "^8.56.0 || ^9.0.0-0" }, "dependencies": { - "@typescript-eslint/utils": "^7.4.0", + "@typescript-eslint/utils": "^8.0.0-alpha.41", "debug": "^4.3.4", "doctrine": "^3.0.0", "eslint-import-resolver-node": "^0.3.9", diff --git a/patches/@typescript-eslint+utils+7.4.0.patch b/patches/@typescript-eslint+utils+8.0.0-alpha.41.patch similarity index 63% rename from patches/@typescript-eslint+utils+7.4.0.patch rename to patches/@typescript-eslint+utils+8.0.0-alpha.41.patch index 6a6a3bb42..6b424c5ce 100644 --- a/patches/@typescript-eslint+utils+7.4.0.patch +++ b/patches/@typescript-eslint+utils+8.0.0-alpha.41.patch @@ -1,32 +1,23 @@ diff --git a/node_modules/@typescript-eslint/utils/dist/ts-eslint/Rule.d.ts b/node_modules/@typescript-eslint/utils/dist/ts-eslint/Rule.d.ts -index 5ae7288..3d14a45 100644 +index e74b5d6..8b0aa7d 100644 --- a/node_modules/@typescript-eslint/utils/dist/ts-eslint/Rule.d.ts +++ b/node_modules/@typescript-eslint/utils/dist/ts-eslint/Rule.d.ts @@ -11,6 +11,10 @@ export interface RuleRecommendationAcrossConfigs; } - export interface RuleMetaDataDocs { + export interface RuleMetaDataDocs { + /** + * The category the rule falls under + */ + category?: string; /** - * Concise description of the rule - */ -@@ -20,7 +24,7 @@ export interface RuleMetaDataDocs { - * Used by the build tools to generate the recommended and strict configs. - * Exclude to not include it as a recommendation. - */ -- recommended?: RuleRecommendation | RuleRecommendationAcrossConfigs; -+ recommended?: RuleRecommendation | RuleRecommendationAcrossConfigs | boolean; - /** - * The URL of the rule's docs + * Concise description of the rule. */ diff --git a/node_modules/@typescript-eslint/utils/dist/ts-eslint/RuleTester.d.ts b/node_modules/@typescript-eslint/utils/dist/ts-eslint/RuleTester.d.ts -index 38d1f12..bf897a3 100644 +index ee1176f..7868f50 100644 --- a/node_modules/@typescript-eslint/utils/dist/ts-eslint/RuleTester.d.ts +++ b/node_modules/@typescript-eslint/utils/dist/ts-eslint/RuleTester.d.ts -@@ -113,7 +113,7 @@ interface RunTests[]; } interface RuleTesterConfig extends ClassicConfig.Config { diff --git a/src/utils/create-rule.ts b/src/utils/create-rule.ts index 3d3b9fc22..a9b3d970d 100644 --- a/src/utils/create-rule.ts +++ b/src/utils/create-rule.ts @@ -2,4 +2,6 @@ import { ESLintUtils } from '@typescript-eslint/utils' import { docsUrl } from './docs-url' -export const createRule = ESLintUtils.RuleCreator(docsUrl) +export const createRule = ESLintUtils.RuleCreator<{ recommended?: true }>( + docsUrl, +) diff --git a/yarn.lock b/yarn.lock index 60c2a9a01..f80b51b3e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2177,7 +2177,7 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -2265,14 +2265,6 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.4.0.tgz#acfc69261f10ece7bf7ece1734f1713392c3655f" - integrity sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw== - dependencies: - "@typescript-eslint/types" "7.4.0" - "@typescript-eslint/visitor-keys" "7.4.0" - "@typescript-eslint/scope-manager@8.0.0-alpha.41": version "8.0.0-alpha.41" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.0.0-alpha.41.tgz#7729d129d966cc34a3b37c12cf08ba1b0467d516" @@ -2296,11 +2288,6 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.4.0.tgz#ee9dafa75c99eaee49de6dcc9348b45d354419b6" - integrity sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw== - "@typescript-eslint/types@8.0.0-alpha.41": version "8.0.0-alpha.41" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.0.0-alpha.41.tgz#c1f8dacfb118e4d9febdff2f065802c4db69beae" @@ -2319,20 +2306,6 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.4.0.tgz#12dbcb4624d952f72c10a9f4431284fca24624f4" - integrity sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg== - dependencies: - "@typescript-eslint/types" "7.4.0" - "@typescript-eslint/visitor-keys" "7.4.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - "@typescript-eslint/typescript-estree@8.0.0-alpha.41": version "8.0.0-alpha.41" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0-alpha.41.tgz#c78c96d6b3f39355aac2bdf2f999abfd9333121f" @@ -2347,7 +2320,7 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/utils@8.0.0-alpha.41": +"@typescript-eslint/utils@8.0.0-alpha.41", "@typescript-eslint/utils@^8.0.0-alpha.41": version "8.0.0-alpha.41" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.0.0-alpha.41.tgz#de7d1fb1856773c7343028352cf326a668aa43b9" integrity sha512-DTxc9VdERS6iloiw1P5tgRDqRArmp/sIuvgdHBvGh2SiltEFc3VjLGnHHGSTr6GfH7tjFWvcCnCtxx+pjWfp5Q== @@ -2371,19 +2344,6 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@^7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.4.0.tgz#d889a0630cab88bddedaf7c845c64a00576257bd" - integrity sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "7.4.0" - "@typescript-eslint/types" "7.4.0" - "@typescript-eslint/typescript-estree" "7.4.0" - semver "^7.5.4" - "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" @@ -2392,14 +2352,6 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz#0c8ff2c1f8a6fe8d7d1a57ebbd4a638e86a60a94" - integrity sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA== - dependencies: - "@typescript-eslint/types" "7.4.0" - eslint-visitor-keys "^3.4.1" - "@typescript-eslint/visitor-keys@8.0.0-alpha.41": version "8.0.0-alpha.41" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0-alpha.41.tgz#6ddefe0a08a36683e2e8db4b161d6b67374b7757" @@ -5259,13 +5211,6 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -minimatch@9.0.3, minimatch@^9.0.0, minimatch@^9.0.1, minimatch@^9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -5273,6 +5218,13 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimatch@^9.0.0, minimatch@^9.0.1, minimatch@^9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + minimatch@^9.0.4: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" @@ -6454,7 +6406,7 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -ts-api-utils@^1.0.1, ts-api-utils@^1.3.0: +ts-api-utils@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== From fe795c4410ea6db40526a8af4fd50d3cd874d850 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Fri, 12 Jul 2024 11:31:12 +0800 Subject: [PATCH 04/36] fix: avoid useless patch --- .../@typescript-eslint+utils+8.0.0-alpha.41.patch | 15 --------------- src/rules/imports-first.ts | 8 +------- src/utils/create-rule.ts | 13 ++++++++++--- 3 files changed, 11 insertions(+), 25 deletions(-) diff --git a/patches/@typescript-eslint+utils+8.0.0-alpha.41.patch b/patches/@typescript-eslint+utils+8.0.0-alpha.41.patch index 6b424c5ce..16924206f 100644 --- a/patches/@typescript-eslint+utils+8.0.0-alpha.41.patch +++ b/patches/@typescript-eslint+utils+8.0.0-alpha.41.patch @@ -1,18 +1,3 @@ -diff --git a/node_modules/@typescript-eslint/utils/dist/ts-eslint/Rule.d.ts b/node_modules/@typescript-eslint/utils/dist/ts-eslint/Rule.d.ts -index e74b5d6..8b0aa7d 100644 ---- a/node_modules/@typescript-eslint/utils/dist/ts-eslint/Rule.d.ts -+++ b/node_modules/@typescript-eslint/utils/dist/ts-eslint/Rule.d.ts -@@ -11,6 +11,10 @@ export interface RuleRecommendationAcrossConfigs; - } - export interface RuleMetaDataDocs { -+ /** -+ * The category the rule falls under -+ */ -+ category?: string; - /** - * Concise description of the rule. - */ diff --git a/node_modules/@typescript-eslint/utils/dist/ts-eslint/RuleTester.d.ts b/node_modules/@typescript-eslint/utils/dist/ts-eslint/RuleTester.d.ts index ee1176f..7868f50 100644 --- a/node_modules/@typescript-eslint/utils/dist/ts-eslint/RuleTester.d.ts diff --git a/src/rules/imports-first.ts b/src/rules/imports-first.ts index 721a6ba7c..f33acf383 100644 --- a/src/rules/imports-first.ts +++ b/src/rules/imports-first.ts @@ -1,13 +1,7 @@ -import { ESLintUtils } from '@typescript-eslint/utils' - -import { docsUrl } from '../utils/docs-url' +import { createRule } from '../utils' import first from './first' -const createRule = ESLintUtils.RuleCreator(ruleName => - docsUrl(ruleName, '7b25c1cb95ee18acc1531002fd343e1e6031f9ed'), -) - export = createRule({ ...first, name: 'imports-first', diff --git a/src/utils/create-rule.ts b/src/utils/create-rule.ts index a9b3d970d..d943daa2d 100644 --- a/src/utils/create-rule.ts +++ b/src/utils/create-rule.ts @@ -2,6 +2,13 @@ import { ESLintUtils } from '@typescript-eslint/utils' import { docsUrl } from './docs-url' -export const createRule = ESLintUtils.RuleCreator<{ recommended?: true }>( - docsUrl, -) +type ImportXPluginDocs = { + /** + * The category the rule falls under + */ + category?: string + + recommended?: true +} + +export const createRule = ESLintUtils.RuleCreator(docsUrl) From c08d150972022984269e30e85b76f3fa051d6ae6 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Fri, 12 Jul 2024 11:33:55 +0800 Subject: [PATCH 05/36] ci: test against ESLint v9 --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9e5ea9ed9..d0337e983 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,6 +20,7 @@ jobs: eslint: - '8.56' - '8' + - '9' runs-on: ${{ matrix.os }} steps: - name: Checkout Repo From 467363c6959a716c77e530195d8e4e61815a421c Mon Sep 17 00:00:00 2001 From: SukkaW Date: Fri, 12 Jul 2024 11:43:11 +0800 Subject: [PATCH 06/36] test: FlatRuleTester for both ESLint 8 & 9 --- test/rules/no-unused-modules.spec.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/rules/no-unused-modules.spec.ts b/test/rules/no-unused-modules.spec.ts index ea4de8994..b0f4468c4 100644 --- a/test/rules/no-unused-modules.spec.ts +++ b/test/rules/no-unused-modules.spec.ts @@ -1,8 +1,8 @@ import fs from 'node:fs' import { TSESLint } from '@typescript-eslint/utils' -// @ts-expect-error - no typings yet -import { FlatRuleTester } from 'eslint/use-at-your-own-risk' +import { version } from 'eslint/package.json' +import semver from 'semver' import { test, testFilePath, parsers } from '../utils' @@ -10,6 +10,8 @@ import jsxConfig from 'eslint-plugin-import-x/config/react' import typescriptConfig from 'eslint-plugin-import-x/config/typescript' import rule from 'eslint-plugin-import-x/rules/no-unused-modules' +const FlatRuleTester = semver.satisfies(version, '8') ? require('eslint/use-at-your-own-risk').FlatRuleTester : require('eslint').RuleTester + const ruleTester = new TSESLint.RuleTester() const typescriptRuleTester = new TSESLint.RuleTester(typescriptConfig) const jsxRuleTester = new TSESLint.RuleTester(jsxConfig) From 4889d3fd3f29f15e4ff5b16ef2100662b3c9ec25 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Fri, 2 Aug 2024 10:55:11 +0800 Subject: [PATCH 07/36] chore: housekeeping for ts-eslint 8 --- package.json | 17 +- ...pescript-eslint+utils+8.0.0-alpha.41.patch | 13 - src/rules/dynamic-import-chunkname.ts | 2 +- src/types.ts | 7 +- .../{CaseyKasem.js => CASEYKASEM2.js} | 0 test/fixtures/deep/cache-2.js | 2 + test/rules/no-unused-modules.spec.ts | 70 ++--- tsconfig.base.json | 2 +- yarn.lock | 264 ++++++++++++++---- 9 files changed, 264 insertions(+), 113 deletions(-) delete mode 100644 patches/@typescript-eslint+utils+8.0.0-alpha.41.patch rename test/fixtures/{CaseyKasem.js => CASEYKASEM2.js} (100%) create mode 100644 test/fixtures/deep/cache-2.js diff --git a/package.json b/package.json index 83aef18ec..a2cec2f11 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "codesandbox:install": "yarn --ignore-engines", "lint": "run-p lint:*", "lint:docs": "yarn update:eslint-docs --check", - "lint:es": "eslint . --cache", + "lint:es": "ESLINT_USE_FLAT_CONFIG=false eslint . --cache", "lint:tsc": "tsc -p tsconfig.base.json --noEmit", "prepare": "patch-package", "release": "changeset publish", @@ -48,7 +48,7 @@ "eslint": "^8.56.0 || ^9.0.0-0" }, "dependencies": { - "@typescript-eslint/utils": "^8.0.0-alpha.41", + "@typescript-eslint/utils": "^8.0.0", "debug": "^4.3.4", "doctrine": "^3.0.0", "eslint-import-resolver-node": "^0.3.9", @@ -82,18 +82,23 @@ "@total-typescript/ts-reset": "^0.5.1", "@types/debug": "^4.1.12", "@types/doctrine": "^0.0.9", - "@types/eslint": "^8.56.6", + "@types/eslint": "^9.6.0", + "@types/eslint8.56": "npm:@types/eslint@^8.56.6", + "@types/eslint9": "npm:@types/eslint@^9.6.0", "@types/is-glob": "^4.0.4", "@types/jest": "^29.5.12", "@types/json-schema": "^7.0.15", "@types/node": "^20.11.30", - "@typescript-eslint/eslint-plugin": "^8.0.0-alpha.41", - "@typescript-eslint/parser": "^8.0.0-alpha.41", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", + "@typescript-eslint/rule-tester": "^8.0.0", "@unts/patch-package": "^8.0.0", "cross-env": "^7.0.3", "enhanced-resolve": "^5.16.0", "escope": "^4.0.0", - "eslint": "^7.2.0 || ^8", + "eslint": "^9.8.0", + "eslint8.56": "npm:eslint@^8.56.0", + "eslint9": "npm:eslint@^9.8.0", "eslint-config-prettier": "^9.1.0", "eslint-doc-generator": "^1.7.0", "eslint-import-resolver-typescript": "^3.6.1", diff --git a/patches/@typescript-eslint+utils+8.0.0-alpha.41.patch b/patches/@typescript-eslint+utils+8.0.0-alpha.41.patch deleted file mode 100644 index 16924206f..000000000 --- a/patches/@typescript-eslint+utils+8.0.0-alpha.41.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/@typescript-eslint/utils/dist/ts-eslint/RuleTester.d.ts b/node_modules/@typescript-eslint/utils/dist/ts-eslint/RuleTester.d.ts -index ee1176f..7868f50 100644 ---- a/node_modules/@typescript-eslint/utils/dist/ts-eslint/RuleTester.d.ts -+++ b/node_modules/@typescript-eslint/utils/dist/ts-eslint/RuleTester.d.ts -@@ -113,7 +113,7 @@ interface RunTests[]; - } - interface RuleTesterConfig extends ClassicConfig.Config { -- readonly parser: string; -+ readonly parser?: string; - readonly parserOptions?: Readonly; - } - declare class RuleTesterBase { diff --git a/src/rules/dynamic-import-chunkname.ts b/src/rules/dynamic-import-chunkname.ts index bbdedb9b9..fdde52e39 100644 --- a/src/rules/dynamic-import-chunkname.ts +++ b/src/rules/dynamic-import-chunkname.ts @@ -1,7 +1,7 @@ import vm from 'node:vm' import type { TSESTree } from '@typescript-eslint/utils' -import type { RuleFixer } from '@typescript-eslint/utils/dist/ts-eslint' +import type { RuleFixer } from '@typescript-eslint/utils/ts-eslint' import { createRule } from '../utils' diff --git a/src/types.ts b/src/types.ts index 785995dae..78c7ce008 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,6 +1,5 @@ import type { TSESLint, TSESTree } from '@typescript-eslint/utils' import type { ResolveOptions } from 'enhanced-resolve' -import type { TsResolverOptions } from 'eslint-import-resolver-typescript' import type { MinimatchOptions } from 'minimatch' import type { KebabCase, LiteralUnion } from 'type-fest' @@ -21,6 +20,12 @@ export type WebpackResolverOptions = { argv?: Record } +export interface TsResolverOptions extends Omit { + alwaysTryTypes?: boolean; + project?: string[] | string; + extensions?: string[]; +} + export type FileExtension = `.${string}` export type DocStyle = 'jsdoc' | 'tomdoc' diff --git a/test/fixtures/CaseyKasem.js b/test/fixtures/CASEYKASEM2.js similarity index 100% rename from test/fixtures/CaseyKasem.js rename to test/fixtures/CASEYKASEM2.js diff --git a/test/fixtures/deep/cache-2.js b/test/fixtures/deep/cache-2.js new file mode 100644 index 000000000..7b1586ca9 --- /dev/null +++ b/test/fixtures/deep/cache-2.js @@ -0,0 +1,2 @@ +import * as c from './c' +export { c } diff --git a/test/rules/no-unused-modules.spec.ts b/test/rules/no-unused-modules.spec.ts index b0f4468c4..a65f5edb4 100644 --- a/test/rules/no-unused-modules.spec.ts +++ b/test/rules/no-unused-modules.spec.ts @@ -1,8 +1,10 @@ import fs from 'node:fs' import { TSESLint } from '@typescript-eslint/utils' -import { version } from 'eslint/package.json' -import semver from 'semver' +// @ts-expect-error -- in correct types +import { FlatRuleTester as ESLint8_56_FlatRuleTester } from 'eslint8.56/use-at-your-own-risk' +import { RuleTester as ESLint9_FlatRuleTester } from 'eslint9' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester'; import { test, testFilePath, parsers } from '../utils' @@ -10,11 +12,9 @@ import jsxConfig from 'eslint-plugin-import-x/config/react' import typescriptConfig from 'eslint-plugin-import-x/config/typescript' import rule from 'eslint-plugin-import-x/rules/no-unused-modules' -const FlatRuleTester = semver.satisfies(version, '8') ? require('eslint/use-at-your-own-risk').FlatRuleTester : require('eslint').RuleTester - -const ruleTester = new TSESLint.RuleTester() -const typescriptRuleTester = new TSESLint.RuleTester(typescriptConfig) -const jsxRuleTester = new TSESLint.RuleTester(jsxConfig) +const ruleTester = new TSESLintRuleTester() +const typescriptRuleTester = new TSESLintRuleTester(typescriptConfig) +const jsxRuleTester = new TSESLintRuleTester(jsxConfig) const error = (message: string) => ({ message }) @@ -1599,30 +1599,36 @@ describe('parser ignores prefixes like BOM and hashbang', () => { }) }) -describe('supports flat eslint', () => { - const flatRuleTester = new FlatRuleTester() as TSESLint.RuleTester - flatRuleTester.run('no-unused-modules', rule, { - valid: [ - { - options: unusedExportsOptions, - code: 'import { o2 } from "./file-o"; export default () => 12', - filename: testFilePath('./no-unused-modules/file-a.js'), - }, - ], - invalid: [ - { - options: unusedExportsOptions, - code: 'export default () => 13', - filename: testFilePath('./no-unused-modules/file-f.js'), - errors: [ - { - messageId: 'unused', - data: { - value: 'default', +// [ESLint8_56_FlatRuleTester, ESLint9_FlatRuleTester] +for (const [name, FlatRuleTester] of [ + ['eslint 8.56 flat', ESLint8_56_FlatRuleTester], + ['eslint 9 flat', ESLint9_FlatRuleTester], +] as const) { + describe('supports ' + name, () => { + const flatRuleTester = new FlatRuleTester() as TSESLint.RuleTester + flatRuleTester.run('no-unused-modules', rule, { + valid: [ + { + options: unusedExportsOptions, + code: 'import { o2 } from "./file-o"; export default () => 12', + filename: testFilePath('./no-unused-modules/file-a.js'), + }, + ], + invalid: [ + { + options: unusedExportsOptions, + code: 'export default () => 13', + filename: testFilePath('./no-unused-modules/file-f.js'), + errors: [ + { + messageId: 'unused', + data: { + value: 'default', + }, }, - }, - ], - }, - ], + ], + }, + ], + }) }) -}) +} diff --git a/tsconfig.base.json b/tsconfig.base.json index 0f5238191..94ceccfda 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1,5 +1,5 @@ { - "extends": "@1stg/tsconfig/node", + "extends": "@1stg/tsconfig/node16", "compilerOptions": { "lib": ["ES2022"], "paths": { diff --git a/yarn.lock b/yarn.lock index f80b51b3e..4a2650896 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1398,7 +1398,7 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.10.0": +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0": version "4.11.0" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== @@ -1408,6 +1408,15 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== +"@eslint/config-array@^0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.17.1.tgz#d9b8b8b6b946f47388f32bedfd3adf29ca8f8910" + integrity sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA== + dependencies: + "@eslint/object-schema" "^2.1.4" + debug "^4.3.1" + minimatch "^3.1.2" + "@eslint/eslintrc@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" @@ -1423,6 +1432,21 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/eslintrc@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6" + integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + "@eslint/import-test-order-redirect-scoped@link:./test/fixtures/order-redirect-scoped": version "0.0.0" uid "" @@ -1432,6 +1456,16 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@eslint/js@9.8.0": + version "9.8.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.8.0.tgz#ae9bc14bb839713c5056f5018bcefa955556d3a4" + integrity sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA== + +"@eslint/object-schema@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843" + integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ== + "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -1451,6 +1485,11 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== +"@humanwhocodes/retry@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570" + integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -2125,10 +2164,18 @@ resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.9.tgz#d86a5f452a15e3e3113b99e39616a9baa0f9863f" integrity sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA== -"@types/eslint@^8.56.6": - version "8.56.6" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.6.tgz#d5dc16cac025d313ee101108ba5714ea10eb3ed0" - integrity sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A== +"@types/eslint8.56@npm:@types/eslint@^8.56.6": + version "8.56.11" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.11.tgz#e2ff61510a3b9454b3329fe7731e3b4c6f780041" + integrity sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/eslint9@npm:@types/eslint@^9.6.0", "@types/eslint@^9.6.0": + version "9.6.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.0.tgz#51d4fe4d0316da9e9f2c80884f2c20ed5fb022ff" + integrity sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -2231,32 +2278,44 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^8.0.0-alpha.41": - version "8.0.0-alpha.41" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.0-alpha.41.tgz#8dfb0416c802cf53d9b8ba2688bb5d87c3b5a5ba" - integrity sha512-WePtbzWMaQO4qtGAXp3zzEN8yYZCEuAHVCERCUXgoSUTQ80F5UB7T5lYyA9ySpFDB7rqJ2ev98DtnbS4U3Ms+w== +"@typescript-eslint/eslint-plugin@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.0.tgz#0fee96f6b691e4bfb9c260fd77d1c86bfbac4f56" + integrity sha512-STIZdwEQRXAHvNUS6ILDf5z3u95Gc8jzywunxSNqX00OooIemaaNIA0vEgynJlycL5AjabYLLrIyHd4iazyvtg== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.0.0-alpha.41" - "@typescript-eslint/type-utils" "8.0.0-alpha.41" - "@typescript-eslint/utils" "8.0.0-alpha.41" - "@typescript-eslint/visitor-keys" "8.0.0-alpha.41" + "@typescript-eslint/scope-manager" "8.0.0" + "@typescript-eslint/type-utils" "8.0.0" + "@typescript-eslint/utils" "8.0.0" + "@typescript-eslint/visitor-keys" "8.0.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^8.0.0-alpha.41": - version "8.0.0-alpha.41" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.0.0-alpha.41.tgz#d6b5f3a869a78d490c94628bc119a9a38c5842a8" - integrity sha512-7HMXwy/q/59ZASBXz2FtdIsR7LgABrR8j2dTKq9GMR8OkjjdO4klxWSY/uOBozVt4UxlMRYsBdBDhEq4/tHRiw== +"@typescript-eslint/parser@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.0.0.tgz#5a5030cf8123176b5a0abd966f99e5f9f110652d" + integrity sha512-pS1hdZ+vnrpDIxuFXYQpLTILglTjSYJ9MbetZctrUawogUsPdz31DIIRZ9+rab0LhYNTsk88w4fIzVheiTbWOQ== dependencies: - "@typescript-eslint/scope-manager" "8.0.0-alpha.41" - "@typescript-eslint/types" "8.0.0-alpha.41" - "@typescript-eslint/typescript-estree" "8.0.0-alpha.41" - "@typescript-eslint/visitor-keys" "8.0.0-alpha.41" + "@typescript-eslint/scope-manager" "8.0.0" + "@typescript-eslint/types" "8.0.0" + "@typescript-eslint/typescript-estree" "8.0.0" + "@typescript-eslint/visitor-keys" "8.0.0" debug "^4.3.4" +"@typescript-eslint/rule-tester@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/rule-tester/-/rule-tester-8.0.0.tgz#aa555c095f6d52cadd7863b7fffb3de84b075530" + integrity sha512-mYINoxt2DnRDl+X0Er134e6lxTrpb6enfKkea4RIjucd+YjsLzTSSkN40hiU4CB5kOjM17xJVm25TiZJLZMRMw== + dependencies: + "@typescript-eslint/typescript-estree" "8.0.0" + "@typescript-eslint/utils" "8.0.0" + ajv "^6.12.6" + json-stable-stringify-without-jsonify "^1.0.1" + lodash.merge "4.6.2" + semver "^7.6.0" + "@typescript-eslint/scope-manager@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" @@ -2265,21 +2324,21 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@8.0.0-alpha.41": - version "8.0.0-alpha.41" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.0.0-alpha.41.tgz#7729d129d966cc34a3b37c12cf08ba1b0467d516" - integrity sha512-iNxuQ0TMVfFiMJ2al4bGd/mY9+aLtBxnHfo7B2xoVzR6cRFgUdBLlMa//MSIjSmVRpCEqNLQnkxpJb96tFG+xw== +"@typescript-eslint/scope-manager@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.0.0.tgz#d14df46c9e43c53af7699dfa800cd615d7dfc118" + integrity sha512-V0aa9Csx/ZWWv2IPgTfY7T4agYwJyILESu/PVqFtTFz9RIS823mAze+NbnBI8xiwdX3iqeQbcTYlvB04G9wyQw== dependencies: - "@typescript-eslint/types" "8.0.0-alpha.41" - "@typescript-eslint/visitor-keys" "8.0.0-alpha.41" + "@typescript-eslint/types" "8.0.0" + "@typescript-eslint/visitor-keys" "8.0.0" -"@typescript-eslint/type-utils@8.0.0-alpha.41": - version "8.0.0-alpha.41" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.0.0-alpha.41.tgz#6da1e44d9ce1e060e66feaa45f73a792965a0e69" - integrity sha512-+QIA1z/jrox6bbvqlyqBQjotpevieLTycfiuoKuqGcKoskFZV5Rma51BV8LCJacnOafwJtSi+7b8zDo8OsXUvA== +"@typescript-eslint/type-utils@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.0.0.tgz#facecaf0736bfe8394b9290382f300554cf90884" + integrity sha512-mJAFP2mZLTBwAn5WI4PMakpywfWFH5nQZezUQdSKV23Pqo6o9iShQg1hP2+0hJJXP2LnZkWPphdIq4juYYwCeg== dependencies: - "@typescript-eslint/typescript-estree" "8.0.0-alpha.41" - "@typescript-eslint/utils" "8.0.0-alpha.41" + "@typescript-eslint/typescript-estree" "8.0.0" + "@typescript-eslint/utils" "8.0.0" debug "^4.3.4" ts-api-utils "^1.3.0" @@ -2288,10 +2347,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@8.0.0-alpha.41": - version "8.0.0-alpha.41" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.0.0-alpha.41.tgz#c1f8dacfb118e4d9febdff2f065802c4db69beae" - integrity sha512-n0P2FP3YC3pD3yoiCf4lHqbUP45xlnOk8HkjB+LtKSUZZWLLJ8k1ZXZtQj7MEX22tytCMj//Bmq403xFuCwfIg== +"@typescript-eslint/types@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.0.0.tgz#7195ea9369fe5ee46b958d7ffca6bd26511cce18" + integrity sha512-wgdSGs9BTMWQ7ooeHtu5quddKKs5Z5dS+fHLbrQI+ID0XWJLODGMHRfhwImiHoeO2S5Wir2yXuadJN6/l4JRxw== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -2306,13 +2365,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@8.0.0-alpha.41": - version "8.0.0-alpha.41" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0-alpha.41.tgz#c78c96d6b3f39355aac2bdf2f999abfd9333121f" - integrity sha512-adCr+vbLYTFhwhIwjIjjMxTdUYiPA2Jlyuhnbj092IzgLHtT79bvuwcgPWeTyLbFb/13SMKmOEka00xHiqLpig== +"@typescript-eslint/typescript-estree@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0.tgz#d172385ced7cb851a038b5c834c245a97a0f9cf6" + integrity sha512-5b97WpKMX+Y43YKi4zVcCVLtK5F98dFls3Oxui8LbnmRsseKenbbDinmvxrWegKDMmlkIq/XHuyy0UGLtpCDKg== dependencies: - "@typescript-eslint/types" "8.0.0-alpha.41" - "@typescript-eslint/visitor-keys" "8.0.0-alpha.41" + "@typescript-eslint/types" "8.0.0" + "@typescript-eslint/visitor-keys" "8.0.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -2320,15 +2379,15 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/utils@8.0.0-alpha.41", "@typescript-eslint/utils@^8.0.0-alpha.41": - version "8.0.0-alpha.41" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.0.0-alpha.41.tgz#de7d1fb1856773c7343028352cf326a668aa43b9" - integrity sha512-DTxc9VdERS6iloiw1P5tgRDqRArmp/sIuvgdHBvGh2SiltEFc3VjLGnHHGSTr6GfH7tjFWvcCnCtxx+pjWfp5Q== +"@typescript-eslint/utils@8.0.0", "@typescript-eslint/utils@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.0.0.tgz#1794d6f4b37ec253172a173dc938ae68651b9b99" + integrity sha512-k/oS/A/3QeGLRvOWCg6/9rATJL5rec7/5s1YmdS0ZU6LHveJyGFwBvLhSRBv6i9xaj7etmosp+l+ViN1I9Aj/Q== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.0.0-alpha.41" - "@typescript-eslint/types" "8.0.0-alpha.41" - "@typescript-eslint/typescript-estree" "8.0.0-alpha.41" + "@typescript-eslint/scope-manager" "8.0.0" + "@typescript-eslint/types" "8.0.0" + "@typescript-eslint/typescript-estree" "8.0.0" "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.38.1": version "5.62.0" @@ -2352,12 +2411,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@8.0.0-alpha.41": - version "8.0.0-alpha.41" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0-alpha.41.tgz#6ddefe0a08a36683e2e8db4b161d6b67374b7757" - integrity sha512-uetCAUBVC+YarBdZnWzDDgX11PpAEGV8Cw31I3d1xNrhx6/bJGThKX+holEmd3amMdnr4w/XUKH/4YuQOgtjDA== +"@typescript-eslint/visitor-keys@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0.tgz#224a67230190d267e6e78586bd7d8dfbd32ae4f3" + integrity sha512-oN0K4nkHuOyF3PVMyETbpP5zp6wfyOvm7tWhTMfoqxSSsPmJIh6JNASuZDlODE8eE+0EB9uar+6+vxr9DBTYOA== dependencies: - "@typescript-eslint/types" "8.0.0-alpha.41" + "@typescript-eslint/types" "8.0.0" eslint-visitor-keys "^3.4.3" "@ungap/structured-clone@^1.2.0": @@ -2418,7 +2477,12 @@ acorn@^8.10.0, acorn@^8.4.1, acorn@^8.9.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== -ajv@^6.12.4: +acorn@^8.12.0: + version "8.12.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== + +ajv@^6.12.4, ajv@^6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3592,6 +3656,14 @@ eslint-scope@^8.0.0: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-scope@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94" + integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + eslint-utils@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" @@ -3609,7 +3681,12 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -"eslint@^7.2.0 || ^8": +eslint-visitor-keys@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb" + integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== + +"eslint8.56@npm:eslint@^8.56.0": version "8.57.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== @@ -3653,6 +3730,55 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 strip-ansi "^6.0.1" text-table "^0.2.0" +"eslint9@npm:eslint@^9.8.0", eslint@^9.8.0: + version "9.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.8.0.tgz#a4f4a090c8ea2d10864d89a6603e02ce9f649f0f" + integrity sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.11.0" + "@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" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + escape-string-regexp "^4.0.0" + eslint-scope "^8.0.2" + eslint-visitor-keys "^4.0.0" + espree "^10.1.0" + esquery "^1.5.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^10.0.1, espree@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56" + integrity sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA== + dependencies: + acorn "^8.12.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.0.0" + espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" @@ -3800,6 +3926,13 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== + dependencies: + flat-cache "^4.0.0" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -3868,6 +4001,14 @@ flat-cache@^3.0.4: keyv "^4.5.3" rimraf "^3.0.2" +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.4" + flatted@^3.2.9: version "3.3.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" @@ -4042,6 +4183,11 @@ globals@^13.19.0, globals@^13.24.0: dependencies: type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + globalthis@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" @@ -4964,7 +5110,7 @@ jsonify@^0.0.1: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== -keyv@^4.5.3: +keyv@^4.5.3, keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -5053,7 +5199,7 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.merge@^4.6.2: +lodash.merge@4.6.2, lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== From 980ec757aa9fbb425785c332fa5f2ca3afdbcdfa Mon Sep 17 00:00:00 2001 From: SukkaW Date: Fri, 2 Aug 2024 11:19:21 +0800 Subject: [PATCH 08/36] test: migrate rule tester runner config --- src/types.ts | 10 +- .../consistent-type-specifier-style.spec.ts | 27 +- test/rules/default.spec.ts | 26 +- test/rules/dynamic-import-chunkname.spec.ts | 275 ++++++------- test/rules/export.spec.ts | 6 +- test/rules/exports-last.spec.ts | 4 +- test/rules/extensions.spec.ts | 4 +- test/rules/first.spec.ts | 4 +- test/rules/group-exports.spec.ts | 20 +- test/rules/max-dependencies.spec.ts | 8 +- test/rules/named.spec.ts | 50 +-- test/rules/namespace.spec.ts | 4 +- test/rules/newline-after-import.spec.ts | 362 +++++++++++++----- test/rules/no-absolute-path.spec.ts | 4 +- test/rules/no-amd.spec.ts | 4 +- .../rules/no-anonymous-default-export.spec.ts | 6 +- test/rules/no-commonjs.spec.ts | 4 +- test/rules/no-cycle.spec.ts | 42 +- test/rules/no-default-export.spec.ts | 16 +- test/rules/no-deprecated.spec.ts | 4 +- test/rules/no-duplicates.spec.ts | 14 +- test/rules/no-dynamic-require.spec.ts | 4 +- test/rules/no-empty-named-blocks.spec.ts | 20 +- test/rules/no-extraneous-dependencies.spec.ts | 10 +- test/rules/no-import-module-exports.spec.ts | 4 +- test/rules/no-internal-modules.spec.ts | 6 +- test/rules/no-mutable-exports.spec.ts | 12 +- test/rules/no-named-as-default-member.spec.ts | 8 +- test/rules/no-named-as-default.spec.ts | 14 +- test/rules/no-named-default.spec.ts | 10 +- test/rules/no-named-export.spec.ts | 16 +- test/rules/no-namespace.spec.ts | 24 +- test/rules/no-nodejs-modules.spec.ts | 4 +- test/rules/no-relative-packages.spec.ts | 4 +- test/rules/no-relative-parent-imports.spec.ts | 4 +- test/rules/no-restricted-paths.spec.ts | 4 +- test/rules/no-self-import.spec.ts | 4 +- test/rules/no-unassigned-import.spec.ts | 4 +- test/rules/no-unresolved.spec.ts | 8 +- test/rules/no-unused-modules.spec.ts | 20 +- test/rules/no-useless-path-segments.spec.ts | 4 +- test/rules/no-webpack-loader-syntax.spec.ts | 4 +- test/rules/order.spec.ts | 28 +- test/rules/prefer-default-export.spec.ts | 22 +- test/rules/unambiguous.spec.ts | 46 ++- 45 files changed, 685 insertions(+), 493 deletions(-) diff --git a/src/types.ts b/src/types.ts index 78c7ce008..662bfa6aa 100644 --- a/src/types.ts +++ b/src/types.ts @@ -20,11 +20,11 @@ export type WebpackResolverOptions = { argv?: Record } -export interface TsResolverOptions extends Omit { - alwaysTryTypes?: boolean; - project?: string[] | string; - extensions?: string[]; -} +export type TsResolverOptions = { + alwaysTryTypes?: boolean + project?: string[] | string + extensions?: string[] +} & Omit export type FileExtension = `.${string}` diff --git a/test/rules/consistent-type-specifier-style.spec.ts b/test/rules/consistent-type-specifier-style.spec.ts index 14c6c156b..4ae7cbb1b 100644 --- a/test/rules/consistent-type-specifier-style.spec.ts +++ b/test/rules/consistent-type-specifier-style.spec.ts @@ -1,4 +1,5 @@ -import { TSESLint, TSESTree } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' +import { TSESTree } from '@typescript-eslint/utils' import { parsers, test } from '../utils' @@ -445,11 +446,13 @@ const FLOW_ONLY = { } as const describe('TypeScript', () => { - const ruleTester = new TSESLint.RuleTester({ - parser: parsers.TS, - parserOptions: { - ecmaVersion: 6, - sourceType: 'module', + const ruleTester = new TSESLintRuleTester({ + languageOptions: { + parser: require(parsers.TS), + parserOptions: { + ecmaVersion: 6, + sourceType: 'module', + }, }, }) ruleTester.run('consistent-type-specifier-style', rule, { @@ -459,11 +462,13 @@ describe('TypeScript', () => { }) describe('Babel/Flow', () => { - const ruleTester = new TSESLint.RuleTester({ - parser: parsers.BABEL, - parserOptions: { - ecmaVersion: 6, - sourceType: 'module', + const ruleTester = new TSESLintRuleTester({ + languageOptions: { + parser: require(parsers.BABEL), + parserOptions: { + ecmaVersion: 6, + sourceType: 'module', + }, }, }) ruleTester.run('consistent-type-specifier-style', rule, { diff --git a/test/rules/default.spec.ts b/test/rules/default.spec.ts index 61071c19d..4d8128f3a 100644 --- a/test/rules/default.spec.ts +++ b/test/rules/default.spec.ts @@ -1,13 +1,13 @@ import path from 'node:path' -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, SYNTAX_CASES, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/default' import { CASE_SENSITIVE_FS } from 'eslint-plugin-import-x/utils' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('default', rule, { valid: [ @@ -39,14 +39,14 @@ ruleTester.run('default', rule, { test({ code: 'export { default as bar, foo } from "./bar"' }), test({ code: 'export bar, * as names from "./bar"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // sanity check test({ code: 'export {a} from "./named-exports"' }), test({ code: 'import twofer from "./trampoline"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // jsx @@ -74,27 +74,27 @@ ruleTester.run('default', rule, { // from no-errors test({ code: "import Foo from './jsx/FooES7.js';", - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // #545: more ES7 cases test({ code: "import bar from './default-export-from.js';", - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: "import bar from './default-export-from-named.js';", - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: "import bar from './default-export-from-ignored.js';", settings: { 'import-x/ignore': ['common'] }, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: "export bar from './default-export-from-ignored.js';", settings: { 'import-x/ignore': ['common'] }, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ @@ -129,23 +129,23 @@ ruleTester.run('default', rule, { // es7 export syntax test({ code: 'export baz from "./named-exports"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: ['No default export found in imported module "./named-exports".'], }), test({ code: 'export baz, { bar } from "./named-exports"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: ['No default export found in imported module "./named-exports".'], }), test({ code: 'export baz, * as names from "./named-exports"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: ['No default export found in imported module "./named-exports".'], }), // exports default from a module with no default test({ code: 'import twofer from "./broken-trampoline"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [ 'No default export found in imported module "./broken-trampoline".', ], diff --git a/test/rules/dynamic-import-chunkname.spec.ts b/test/rules/dynamic-import-chunkname.spec.ts index 0a5d14e37..fd977587a 100644 --- a/test/rules/dynamic-import-chunkname.spec.ts +++ b/test/rules/dynamic-import-chunkname.spec.ts @@ -1,10 +1,11 @@ -import { TSESLint, TSESTree } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' +import { TSESTree } from '@typescript-eslint/utils' import { SYNTAX_CASES, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/dynamic-import-chunkname' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() const pickyCommentFormat = '[a-zA-Z-_/.]+' @@ -34,7 +35,7 @@ const multipleImportFunctionOptions = [ }, ] as const -const parser = parsers.BABEL +const babelParser = require(parsers.BABEL) const pickyChunkNameFormatError = { messageId: 'chunknameFormat', @@ -104,7 +105,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { { code: `import('test')`, options: allowEmptyOptions, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -112,7 +113,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'test' )`, options: allowEmptyOptions, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -120,7 +121,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'test' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -128,7 +129,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { "test" )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -136,7 +137,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { "test" )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -144,7 +145,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'test' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -152,7 +153,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'test' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -160,7 +161,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'test' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -168,7 +169,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'test' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -177,7 +178,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'test' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -186,7 +187,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'test' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -195,7 +196,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'test' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -204,7 +205,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'test' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -212,7 +213,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -220,7 +221,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options: pickyCommentOptions, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -228,7 +229,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -236,7 +237,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -244,7 +245,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -252,7 +253,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -261,7 +262,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -269,7 +270,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -278,7 +279,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -286,7 +287,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -295,7 +296,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -304,7 +305,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -313,7 +314,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -321,7 +322,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -330,7 +331,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -338,7 +339,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -347,7 +348,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -355,7 +356,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -364,7 +365,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -373,7 +374,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -382,7 +383,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -390,7 +391,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -399,7 +400,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -407,7 +408,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, { code: `import( @@ -422,7 +423,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, }, ...SYNTAX_CASES, ], @@ -434,7 +435,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -446,7 +447,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { { code: "import('test')", options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -461,7 +462,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -476,7 +477,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -491,7 +492,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -506,7 +507,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -521,7 +522,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -536,7 +537,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -551,7 +552,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -566,7 +567,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -581,7 +582,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -596,7 +597,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -611,7 +612,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -626,7 +627,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -642,7 +643,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -657,7 +658,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -672,7 +673,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options: pickyCommentOptions, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -687,7 +688,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -702,7 +703,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -717,7 +718,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -732,7 +733,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -747,7 +748,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -762,7 +763,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -777,7 +778,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -792,7 +793,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -807,7 +808,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -822,7 +823,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -837,7 +838,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -959,7 +960,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { }) describe('TypeScript', () => { - const typescriptParser = parsers.TS + const typescriptParser = require(parsers.TS) const nodeType = TSESTree.AST_NODE_TYPES.ImportExpression ruleTester.run('dynamic-import-chunkname', rule, { @@ -967,7 +968,7 @@ describe('TypeScript', () => { { code: `import('test')`, options: allowEmptyOptions, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -975,7 +976,7 @@ describe('TypeScript', () => { 'test' )`, options: allowEmptyOptions, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -983,7 +984,7 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -991,7 +992,7 @@ describe('TypeScript', () => { "test" )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -999,7 +1000,7 @@ describe('TypeScript', () => { "test" )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1007,7 +1008,7 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1015,7 +1016,7 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1023,7 +1024,7 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1031,7 +1032,7 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1040,7 +1041,7 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1049,7 +1050,7 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1058,7 +1059,7 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1067,7 +1068,7 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1075,7 +1076,7 @@ describe('TypeScript', () => { 'someModule' )`, options: pickyCommentOptions, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1083,7 +1084,7 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1091,7 +1092,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1099,7 +1100,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1107,7 +1108,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1115,7 +1116,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1124,7 +1125,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1132,7 +1133,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1141,7 +1142,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1149,7 +1150,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1158,7 +1159,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1166,7 +1167,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1175,7 +1176,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1183,7 +1184,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1192,7 +1193,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1200,7 +1201,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1209,7 +1210,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1218,7 +1219,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1227,7 +1228,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1235,7 +1236,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1244,7 +1245,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1252,7 +1253,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, { code: `import( @@ -1267,7 +1268,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, }, ], invalid: [ @@ -1277,7 +1278,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1289,7 +1290,7 @@ describe('TypeScript', () => { { code: "import('test')", options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1304,7 +1305,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1319,7 +1320,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1334,7 +1335,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1349,7 +1350,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1364,7 +1365,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1379,7 +1380,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1394,7 +1395,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1409,7 +1410,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1424,7 +1425,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1440,7 +1441,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1455,7 +1456,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1470,7 +1471,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1485,7 +1486,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1500,7 +1501,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1515,7 +1516,7 @@ describe('TypeScript', () => { 'someModule' )`, options: pickyCommentOptions, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1530,7 +1531,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1545,7 +1546,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1560,7 +1561,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1575,7 +1576,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1590,7 +1591,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1605,7 +1606,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1620,7 +1621,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1635,7 +1636,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1650,7 +1651,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1665,7 +1666,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1680,7 +1681,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + languageOptions: { parser: typescriptParser }, output: null, errors: [ { @@ -1696,7 +1697,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -1728,7 +1729,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -1761,7 +1762,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { diff --git a/test/rules/export.spec.ts b/test/rules/export.spec.ts index af3bc0f20..3160530a8 100644 --- a/test/rules/export.spec.ts +++ b/test/rules/export.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, testFilePath, SYNTAX_CASES, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/export' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('export', rule, { valid: [ @@ -52,7 +52,7 @@ ruleTester.run('export', rule, { return param && param1; } `, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, }, ], diff --git a/test/rules/exports-last.spec.ts b/test/rules/exports-last.spec.ts index d40d051a2..11d41a948 100644 --- a/test/rules/exports-last.spec.ts +++ b/test/rules/exports-last.spec.ts @@ -1,11 +1,11 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import type { TSESTree } from '@typescript-eslint/utils' import { test } from '../utils' import rule from 'eslint-plugin-import-x/rules/exports-last' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() const error = (type: `${TSESTree.AST_NODE_TYPES}`) => ({ diff --git a/test/rules/extensions.spec.ts b/test/rules/extensions.spec.ts index 846062a1c..cac47f799 100644 --- a/test/rules/extensions.spec.ts +++ b/test/rules/extensions.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, testFilePath, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/extensions' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('extensions', rule, { valid: [ diff --git a/test/rules/first.spec.ts b/test/rules/first.spec.ts index be061294e..9adfc5e26 100644 --- a/test/rules/first.spec.ts +++ b/test/rules/first.spec.ts @@ -1,12 +1,12 @@ import fs from 'node:fs' -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, parsers, testFilePath } from '../utils' import rule from 'eslint-plugin-import-x/rules/first' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('first', rule, { valid: [ diff --git a/test/rules/group-exports.spec.ts b/test/rules/group-exports.spec.ts index 40633e44d..31e04752a 100644 --- a/test/rules/group-exports.spec.ts +++ b/test/rules/group-exports.spec.ts @@ -1,4 +1,4 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { parsers, test } from '../utils' @@ -11,14 +11,16 @@ const errors = { 'Multiple CommonJS exports; consolidate all exports into a single assignment to `module.exports`', } -const ruleTester = new TSESLint.RuleTester({ - parser: parsers.BABEL, - parserOptions: { - requireConfigFile: false, - babelOptions: { - configFile: false, - babelrc: false, - presets: ['@babel/flow'], +const ruleTester = new TSESLintRuleTester({ + languageOptions: { + parser: require(parsers.BABEL), + parserOptions: { + requireConfigFile: false, + babelOptions: { + configFile: false, + babelrc: false, + presets: ['@babel/flow'], + }, }, }, }) diff --git a/test/rules/max-dependencies.spec.ts b/test/rules/max-dependencies.spec.ts index 85374b0ef..db8d3cd3e 100644 --- a/test/rules/max-dependencies.spec.ts +++ b/test/rules/max-dependencies.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/max-dependencies' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('max-dependencies', rule, { valid: [ @@ -73,7 +73,7 @@ ruleTester.run('max-dependencies', rule, { test({ code: "import type { x } from './foo'; import type { y } from './bar'", - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, options: [ { max: 1, @@ -84,7 +84,7 @@ ruleTester.run('max-dependencies', rule, { test({ code: "import type { x } from './foo'; import type { y } from './bar'; import type { z } from './baz'", - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, options: [ { max: 2, diff --git a/test/rules/named.spec.ts b/test/rules/named.spec.ts index dd999844b..3a0ae4d10 100644 --- a/test/rules/named.spec.ts +++ b/test/rules/named.spec.ts @@ -1,14 +1,14 @@ import path from 'node:path' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import type { TSESTree } from '@typescript-eslint/utils' -import { TSESLint } from '@typescript-eslint/utils' import { test, SYNTAX_CASES, testFilePath, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/named' import { CASE_SENSITIVE_FS } from 'eslint-plugin-import-x/utils' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() function error( name: string, @@ -68,11 +68,11 @@ ruleTester.run('named', rule, { // es7 test({ code: 'export bar, { foo } from "./bar"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import { foo, bar } from "./named-trampoline"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // regression tests @@ -87,43 +87,43 @@ ruleTester.run('named', rule, { // should ignore imported/exported flow types, even if they don’t exist test({ code: 'import type { MissingType } from "./flowtypes"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import typeof { MissingType } from "./flowtypes"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import type { MyOpaqueType } from "./flowtypes"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import typeof { MyOpaqueType } from "./flowtypes"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import { type MyOpaqueType, MyClass } from "./flowtypes"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import { typeof MyOpaqueType, MyClass } from "./flowtypes"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import typeof MissingType from "./flowtypes"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import typeof * as MissingType from "./flowtypes"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'export type { MissingType } from "./flowtypes"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'export type { MyOpaqueType } from "./flowtypes"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // jsnext @@ -207,22 +207,22 @@ ruleTester.run('named', rule, { test({ code: 'const { something } = require("./dynamic-import-in-commonjs")', - parserOptions: { ecmaVersion: 2021 }, + languageOptions: { parserOptions: { ecmaVersion: 2021 } }, options: [{ commonjs: true }], }), test({ code: 'import { something } from "./dynamic-import-in-commonjs"', - parserOptions: { ecmaVersion: 2021 }, + languageOptions: { parserOptions: { ecmaVersion: 2021 } }, }), test({ code: 'import { "foo" as foo } from "./bar"', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), test({ code: 'import { "foo" as foo } from "./empty-module"', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), ], @@ -277,17 +277,17 @@ ruleTester.run('named', rule, { // es7 test({ code: 'export bar2, { bar } from "./bar"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: ["bar not found in './bar'"], }), test({ code: 'import { foo, bar, baz } from "./named-trampoline"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: ["baz not found in './named-trampoline'"], }), test({ code: 'import { baz } from "./broken-trampoline"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: ['baz not found via broken-trampoline.js -> named-exports.js'], }), @@ -331,7 +331,7 @@ ruleTester.run('named', rule, { test({ code: 'import { type MyOpaqueType, MyMissingClass } from "./flowtypes"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: ["MyMissingClass not found in './flowtypes'"], }), @@ -368,7 +368,7 @@ ruleTester.run('named', rule, { test({ code: 'import { "somethingElse" as somethingElse } from "./test-module"', errors: [error('somethingElse', './test-module', 'Literal')], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), test({ code: 'import { "baz" as baz, "bop" as bop } from "./bar"', @@ -376,12 +376,12 @@ ruleTester.run('named', rule, { error('baz', './bar', 'Literal'), error('bop', './bar', 'Literal'), ], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), test({ code: 'import { "default" as barDefault } from "./re-export"', errors: [`default not found in './re-export'`], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), ], }) diff --git a/test/rules/namespace.spec.ts b/test/rules/namespace.spec.ts index 365ded3c9..085b42e31 100644 --- a/test/rules/namespace.spec.ts +++ b/test/rules/namespace.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, SYNTAX_CASES, testFilePath, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/namespace' -const ruleTester = new TSESLint.RuleTester({ +const ruleTester = new TSESLintRuleTester({ parserOptions: { env: { es6: true } }, }) diff --git a/test/rules/newline-after-import.spec.ts b/test/rules/newline-after-import.spec.ts index 2a418d8cb..2ad0c5650 100644 --- a/test/rules/newline-after-import.spec.ts +++ b/test/rules/newline-after-import.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/newline-after-import' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() const getImportError = (count: number) => ({ messageId: 'newline' as const, @@ -37,7 +37,7 @@ ruleTester.run('newline-after-import', rule, { code: ` const x = () => require('baz') , y = () => require('bar')`, - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, }, { code: ` @@ -46,12 +46,12 @@ ruleTester.run('newline-after-import', rule, { // some comment here `, - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, options: [{ considerComments: true }], }, { code: `const x = () => require('baz') && require('bar')`, - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, }, { code: ` @@ -60,7 +60,7 @@ ruleTester.run('newline-after-import', rule, { // Some random single line comment var bar = 42; `, - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, options: [{ considerComments: true }], }, { @@ -70,7 +70,7 @@ ruleTester.run('newline-after-import', rule, { // Some random single line comment var bar = 42; `, - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, options: [{ considerComments: true, count: 1, exactCount: true }], }, { @@ -82,7 +82,7 @@ ruleTester.run('newline-after-import', rule, { **/ var bar = 42; `, - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, }, `function x() { require('baz'); }`, `a(require('b'), require('c'), require('d'));`, @@ -127,118 +127,168 @@ ruleTester.run('newline-after-import', rule, { return somethingElse(); } }`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import path from 'path';\nimport foo from 'foo';\n`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import path from 'path';import foo from 'foo';\n`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import path from 'path';import foo from 'foo';\n\nvar bar = 42;`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\n\nvar bar = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\n\n\nvar bar = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 2 }], }, { code: `import foo from 'foo';\n\n\nvar bar = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 2, exactCount: true }], }, { code: `import foo from 'foo';\n\nvar bar = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 1, exactCount: true }], }, { code: `import foo from 'foo';\n\n// Some random comment\nvar bar = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 2, exactCount: true }], }, { code: `import foo from 'foo';\n// Some random comment\nvar bar = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 1, exactCount: true }], }, { code: `import foo from 'foo';\n\n\n// Some random comment\nvar bar = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 2, exactCount: true, considerComments: true }], }, { code: `import foo from 'foo';\n\n// Some random comment\nvar bar = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 1, exactCount: true, considerComments: true }], }, { code: `/**\n * A leading comment\n */\nimport foo from 'foo';\n\n// Some random comment\nexport {foo};`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 2, exactCount: true }], }, { code: `import foo from 'foo';\n\n\nvar bar = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 1 }], }, { code: `import foo from 'foo';\n\n\n\n\nvar bar = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 4 }], }, { code: `var foo = require('foo-module');\n\nvar foo = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `var foo = require('foo-module');\n\n\nvar foo = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 2 }], }, { code: `var foo = require('foo-module');\n\n\n\n\nvar foo = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 4 }], }, { code: `var foo = require('foo-module');\n\n\n\n\nvar foo = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 4, exactCount: true }], }, { code: `var foo = require('foo-module');\n\n// Some random comment\n\n\nvar foo = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 4, exactCount: true }], }, { code: `var foo = require('foo-module');\n\n\n\n// Some random comment\nvar foo = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ count: 4, exactCount: true, considerComments: true }], }, { code: `require('foo-module');\n\nvar foo = 'bar';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\nimport { bar } from './bar-lib';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\n\nvar a = 123;\n\nimport { bar } from './bar-lib';`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `var foo = require('foo-module');\n\nvar a = 123;\n\nvar bar = require('bar-lib');`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -247,7 +297,9 @@ ruleTester.run('newline-after-import', rule, { foo(); } `, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -256,7 +308,9 @@ ruleTester.run('newline-after-import', rule, { foo(); } `, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -266,7 +320,9 @@ ruleTester.run('newline-after-import', rule, { var bar = 42; } `, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `//issue 592 @@ -274,23 +330,31 @@ ruleTester.run('newline-after-import', rule, { @SomeDecorator(require('./some-file')) class App {} `, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, - parser: parsers.BABEL, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + parser: require(parsers.BABEL), + }, }, { code: `var foo = require('foo');\n\n@SomeDecorator(foo)\nclass Foo {}`, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, - parser: parsers.BABEL, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + parser: require(parsers.BABEL), + }, }, { code: `// issue 1004\nimport foo from 'foo';\n\n@SomeDecorator(foo)\nexport default class Test {}`, - parserOptions: { sourceType: 'module' }, - parser: parsers.BABEL, + languageOptions: { + parserOptions: { sourceType: 'module' }, + parser: require(parsers.BABEL), + }, }, { code: `// issue 1004\nconst foo = require('foo');\n\n@SomeDecorator(foo)\nexport default class Test {}`, - parserOptions: { sourceType: 'module' }, - parser: parsers.BABEL, + languageOptions: { + parserOptions: { sourceType: 'module' }, + parser: require(parsers.BABEL), + }, }, { @@ -298,16 +362,22 @@ ruleTester.run('newline-after-import', rule, { import { ExecaReturnValue } from 'execa'; import execa = require('execa'); `, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parser: require(parsers.TS), + + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` import execa = require('execa'); import { ExecaReturnValue } from 'execa'; `, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parser: require(parsers.TS), + + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -315,8 +385,11 @@ ruleTester.run('newline-after-import', rule, { import execa = require('execa'); import { ExecbReturnValue } from 'execb'; `, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parser: require(parsers.TS), + + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -324,15 +397,21 @@ ruleTester.run('newline-after-import', rule, { import { ExecaReturnValue } from 'execa'; import execb = require('execb'); `, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parser: require(parsers.TS), + + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` export import a = obj;\nf(a); `, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parser: require(parsers.TS), + + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -342,8 +421,11 @@ ruleTester.run('newline-after-import', rule, { export import a2 = a; f(a); }`, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parser: require(parsers.TS), + + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -353,8 +435,11 @@ ruleTester.run('newline-after-import', rule, { stub } `, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parser: require(parsers.TS), + + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -363,8 +448,11 @@ ruleTester.run('newline-after-import', rule, { export import Foo = ns.baz.bar.Foo; `, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parser: require(parsers.TS), + + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { @@ -375,7 +463,9 @@ ruleTester.run('newline-after-import', rule, { stub } `, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -387,7 +477,9 @@ ruleTester.run('newline-after-import', rule, { **/ var bar = 42; `, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -399,7 +491,9 @@ ruleTester.run('newline-after-import', rule, { **/ var bar = 42; `, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ considerComments: true }], }, { @@ -410,7 +504,9 @@ ruleTester.run('newline-after-import', rule, { // Some random single line comment var bar = 42; `, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, ], @@ -436,7 +532,9 @@ ruleTester.run('newline-after-import', rule, { ...IMPORT_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ considerComments: true }], }, { @@ -465,7 +563,9 @@ ruleTester.run('newline-after-import', rule, { ...IMPORT_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ considerComments: true }], }, { @@ -488,7 +588,9 @@ ruleTester.run('newline-after-import', rule, { ...IMPORT_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ considerComments: true, count: 1 }], }, { @@ -501,7 +603,9 @@ ruleTester.run('newline-after-import', rule, { ...IMPORT_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\n\nexport default function() {};`, @@ -514,7 +618,9 @@ ruleTester.run('newline-after-import', rule, { ...getImportError(2), }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `var foo = require('foo-module');\nvar something = 123;`, @@ -526,7 +632,9 @@ ruleTester.run('newline-after-import', rule, { ...REQUIRE_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\nexport default function() {};`, @@ -539,7 +647,9 @@ ruleTester.run('newline-after-import', rule, { ...IMPORT_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\nvar a = 123;\n\nimport { bar } from './bar-lib';\nvar b=456;`, @@ -556,7 +666,9 @@ ruleTester.run('newline-after-import', rule, { ...IMPORT_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `var foo = require('foo-module');\nvar a = 123;\n\nvar bar = require('bar-lib');\nvar b=456;`, @@ -573,7 +685,9 @@ ruleTester.run('newline-after-import', rule, { ...REQUIRE_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `var foo = require('foo-module');\nvar a = 123;\n\nrequire('bar-lib');\nvar b=456;`, @@ -590,7 +704,9 @@ ruleTester.run('newline-after-import', rule, { ...REQUIRE_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `var path = require('path');\nvar foo = require('foo');\nvar bar = 42;`, @@ -646,7 +762,9 @@ ruleTester.run('newline-after-import', rule, { ...IMPORT_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import path from 'path';import foo from 'foo';var bar = 42;`, @@ -658,7 +776,9 @@ ruleTester.run('newline-after-import', rule, { ...IMPORT_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\n@SomeDecorator(foo)\nclass Foo {}`, @@ -670,8 +790,10 @@ ruleTester.run('newline-after-import', rule, { ...IMPORT_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, - parser: parsers.BABEL, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + parser: require(parsers.BABEL), + }, }, { code: `var foo = require('foo');\n@SomeDecorator(foo)\nclass Foo {}`, @@ -683,8 +805,10 @@ ruleTester.run('newline-after-import', rule, { ...REQUIRE_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, - parser: parsers.BABEL, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + parser: require(parsers.BABEL), + }, }, { code: `// issue 10042\nimport foo from 'foo';\n@SomeDecorator(foo)\nexport default class Test {}`, @@ -696,8 +820,10 @@ ruleTester.run('newline-after-import', rule, { ...IMPORT_ERROR, }, ], - parserOptions: { sourceType: 'module' }, - parser: parsers.BABEL, + languageOptions: { + parserOptions: { sourceType: 'module' }, + parser: require(parsers.BABEL), + }, }, { code: `// issue 1004\nconst foo = require('foo');\n@SomeDecorator(foo)\nexport default class Test {}`, @@ -709,8 +835,10 @@ ruleTester.run('newline-after-import', rule, { ...REQUIRE_ERROR, }, ], - parserOptions: { sourceType: 'module' }, - parser: parsers.BABEL, + languageOptions: { + parserOptions: { sourceType: 'module' }, + parser: require(parsers.BABEL), + }, }, { code: ` @@ -733,8 +861,10 @@ ruleTester.run('newline-after-import', rule, { ...IMPORT_ERROR, }, ], - parserOptions: { sourceType: 'module' }, - parser: parsers.BABEL, + languageOptions: { + parserOptions: { sourceType: 'module' }, + parser: require(parsers.BABEL), + }, }, { code: `import foo from 'foo';\n\nexport default function() {};`, @@ -747,7 +877,9 @@ ruleTester.run('newline-after-import', rule, { ...getImportError(2), }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\n\n\n\nexport default function() {};`, @@ -760,7 +892,9 @@ ruleTester.run('newline-after-import', rule, { ...getImportError(2), }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\n\n\n\n\nexport default function() {};`, @@ -773,7 +907,9 @@ ruleTester.run('newline-after-import', rule, { ...getImportError(2), }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\n// some random comment\nexport default function() {};`, @@ -786,7 +922,9 @@ ruleTester.run('newline-after-import', rule, { ...getImportError(2), }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\n// some random comment\n\n\nexport default function() {};`, @@ -799,7 +937,9 @@ ruleTester.run('newline-after-import', rule, { ...getImportError(2), }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\n// some random comment\n\n\n\nexport default function() {};`, @@ -812,7 +952,9 @@ ruleTester.run('newline-after-import', rule, { ...getImportError(2), }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\n// some random comment\nexport default function() {};`, @@ -825,7 +967,9 @@ ruleTester.run('newline-after-import', rule, { ...getImportError(2), }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\n\n// some random comment\nexport default function() {};`, @@ -838,7 +982,9 @@ ruleTester.run('newline-after-import', rule, { ...getImportError(2), }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `import foo from 'foo';\n\n\n\n// some random comment\nexport default function() {};`, @@ -851,7 +997,9 @@ ruleTester.run('newline-after-import', rule, { ...getImportError(2), }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -869,7 +1017,9 @@ ruleTester.run('newline-after-import', rule, { ...IMPORT_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ considerComments: true, count: 1, exactCount: true }], }, { @@ -883,7 +1033,9 @@ ruleTester.run('newline-after-import', rule, { ...IMPORT_ERROR, }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: `const foo = require('foo');\n\n\n\nconst bar = function() {};`, @@ -896,7 +1048,7 @@ ruleTester.run('newline-after-import', rule, { ...getRequireError(2), }, ], - parserOptions: { ecmaVersion: 2015 }, + languageOptions: { parserOptions: { ecmaVersion: 2015 } }, }, { code: `const foo = require('foo');\n\n\n\n// some random comment\nconst bar = function() {};`, @@ -909,7 +1061,7 @@ ruleTester.run('newline-after-import', rule, { ...getRequireError(2), }, ], - parserOptions: { ecmaVersion: 2015 }, + languageOptions: { parserOptions: { ecmaVersion: 2015 } }, }, { code: `import foo from 'foo';// some random comment\nexport default function() {};`, @@ -922,10 +1074,12 @@ ruleTester.run('newline-after-import', rule, { ...IMPORT_ERROR, }, ], - parserOptions: { - ecmaVersion: 2015, - considerComments: true, - sourceType: 'module', + languageOptions: { + parserOptions: { + ecmaVersion: 2015, + considerComments: true, + sourceType: 'module', + }, }, }, { @@ -939,7 +1093,7 @@ ruleTester.run('newline-after-import', rule, { ...getRequireError(2), }, ], - parserOptions: { ecmaVersion: 2015 }, + languageOptions: { parserOptions: { ecmaVersion: 2015 } }, }, ], }) diff --git a/test/rules/no-absolute-path.spec.ts b/test/rules/no-absolute-path.spec.ts index 278de2690..3165327f8 100644 --- a/test/rules/no-absolute-path.spec.ts +++ b/test/rules/no-absolute-path.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-absolute-path' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() const error = { messageId: 'absolute', diff --git a/test/rules/no-amd.spec.ts b/test/rules/no-amd.spec.ts index 53ffedff9..57f86e563 100644 --- a/test/rules/no-amd.spec.ts +++ b/test/rules/no-amd.spec.ts @@ -1,8 +1,8 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import rule from 'eslint-plugin-import-x/rules/no-amd' -const ruleTester = new TSESLint.RuleTester({ +const ruleTester = new TSESLintRuleTester({ parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }) diff --git a/test/rules/no-anonymous-default-export.spec.ts b/test/rules/no-anonymous-default-export.spec.ts index de85a1c74..3ed9e3f3f 100644 --- a/test/rules/no-anonymous-default-export.spec.ts +++ b/test/rules/no-anonymous-default-export.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, SYNTAX_CASES } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-anonymous-default-export' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('no-anonymous-default-export', rule, { valid: [ @@ -53,7 +53,7 @@ ruleTester.run('no-anonymous-default-export', rule, { test({ code: 'const foo = 123\nexport { foo as default }' }), test({ code: 'const foo = 123\nexport { foo as "default" }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), // Allow call expressions by default for backwards compatibility diff --git a/test/rules/no-commonjs.spec.ts b/test/rules/no-commonjs.spec.ts index 9a8138909..7a7eae883 100644 --- a/test/rules/no-commonjs.spec.ts +++ b/test/rules/no-commonjs.spec.ts @@ -1,11 +1,11 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import rule from 'eslint-plugin-import-x/rules/no-commonjs' const EXPORT = 'export' const IMPORT = 'import' -const ruleTester = new TSESLint.RuleTester({ +const ruleTester = new TSESLintRuleTester({ parserOptions: { ecmaVersion: 2015, sourceType: 'module', diff --git a/test/rules/no-cycle.spec.ts b/test/rules/no-cycle.spec.ts index 03a155a06..90b087d31 100644 --- a/test/rules/no-cycle.spec.ts +++ b/test/rules/no-cycle.spec.ts @@ -1,11 +1,11 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { parsers, test as _test, testFilePath } from '../utils' import type { ValidTestCase } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-cycle' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() const error = (message: string) => ({ message }) @@ -65,59 +65,59 @@ ruleTester.run('no-cycle', rule, { test({ code: `import("./${testDialect}/depth-two").then(function({ foo }) {})`, options: [{ maxDepth: 1 }], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: `import type { FooType } from "./${testDialect}/depth-one"`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: `import type { FooType, BarType } from "./${testDialect}/depth-one"`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: `function bar(){ return import("./${testDialect}/depth-one"); } // #2265 1`, options: [{ allowUnsafeDynamicCyclicDependency: true }], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: `import { foo } from "./${testDialect}/depth-one-dynamic"; // #2265 2`, options: [{ allowUnsafeDynamicCyclicDependency: true }], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: `function bar(){ return import("./${testDialect}/depth-one"); } // #2265 3`, options: [{ allowUnsafeDynamicCyclicDependency: true }], - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, }), test({ code: `import { foo } from "./${testDialect}/depth-one-dynamic"; // #2265 4`, options: [{ allowUnsafeDynamicCyclicDependency: true }], - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, }), test({ code: 'import { bar } from "./flow-types"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import { bar } from "./flow-types-only-importing-type"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import { bar } from "./flow-types-only-importing-multiple-types"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import { bar } from "./flow-typeof"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), ], invalid: [ test({ code: 'import { bar } from "./flow-types-some-type-imports"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [error(`Dependency cycle detected.`)], }), test({ @@ -220,12 +220,12 @@ ruleTester.run('no-cycle', rule, { test({ code: `import("./${testDialect}/depth-three-star")`, errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: `import("./${testDialect}/depth-three-indirect")`, errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: `import { foo } from "./${testDialect}/depth-two"`, @@ -240,28 +240,28 @@ ruleTester.run('no-cycle', rule, { test({ code: `function bar(){ return import("./${testDialect}/depth-one"); } // #2265 5`, errors: [error(`Dependency cycle detected.`)], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ // Dynamic import is not properly caracterized with eslint < 4 code: `import { foo } from "./${testDialect}/depth-one-dynamic"; // #2265 6`, errors: [error(`Dependency cycle detected.`)], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: `function bar(){ return import("./${testDialect}/depth-one"); } // #2265 7`, errors: [error(`Dependency cycle detected.`)], - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, }), test({ code: `import { foo } from "./${testDialect}/depth-one-dynamic"; // #2265 8`, errors: [error(`Dependency cycle detected.`)], - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, }), test({ code: 'import { bar } from "./flow-types-depth-one"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [ error( `Dependency cycle via ./flow-types-depth-two:4=>./es6/depth-one:1`, diff --git a/test/rules/no-default-export.spec.ts b/test/rules/no-default-export.spec.ts index b125a67ee..094ba6a76 100644 --- a/test/rules/no-default-export.spec.ts +++ b/test/rules/no-default-export.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { parsers, test } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-default-export' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('no-default-export', rule, { valid: [ @@ -59,7 +59,7 @@ ruleTester.run('no-default-export', rule, { }), test({ code: 'export { a, b } from "foo.js"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // no exports at all @@ -75,15 +75,15 @@ ruleTester.run('no-default-export', rule, { test({ code: `export type UserId = number;`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'export foo from "foo.js"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: `export Memory, { MemoryValue } from './Memory'`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), ], invalid: [ @@ -156,7 +156,7 @@ ruleTester.run('no-default-export', rule, { }), test({ code: 'export default from "foo.js"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [ { type: 'ExportNamedDeclaration', @@ -173,7 +173,7 @@ ruleTester.run('no-default-export', rule, { 'Do not alias `foo` as `default`. Just export `foo` itself instead.', }, ], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), ], }) diff --git a/test/rules/no-deprecated.spec.ts b/test/rules/no-deprecated.spec.ts index 83a3ef06d..78d667d9b 100644 --- a/test/rules/no-deprecated.spec.ts +++ b/test/rules/no-deprecated.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, SYNTAX_CASES, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-deprecated' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('no-deprecated', rule, { valid: [ diff --git a/test/rules/no-duplicates.spec.ts b/test/rules/no-duplicates.spec.ts index 9b97df0c8..2df33f3d1 100644 --- a/test/rules/no-duplicates.spec.ts +++ b/test/rules/no-duplicates.spec.ts @@ -1,6 +1,6 @@ import path from 'node:path' -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, @@ -12,7 +12,7 @@ import { import jsxConfig from 'eslint-plugin-import-x/config/react' import rule from 'eslint-plugin-import-x/rules/no-duplicates' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('no-duplicates', rule, { valid: [ @@ -28,7 +28,7 @@ ruleTester.run('no-duplicates', rule, { // #225: ignore duplicate if is a flow type import test({ code: "import { x } from './foo'; import type { y } from './foo'", - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // #1107: Using different query strings that trigger different webpack loaders. @@ -117,7 +117,7 @@ ruleTester.run('no-duplicates', rule, { test({ code: "import type { x } from './foo'; import type { y } from './foo'", output: "import type { x , y } from './foo'; ", - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [ "'./foo' imported multiple times.", "'./foo' imported multiple times.", @@ -159,7 +159,7 @@ ruleTester.run('no-duplicates', rule, { "'./foo' imported multiple times.", "'./foo' imported multiple times.", ], - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, }), // #2347: duplicate identifiers should be removed @@ -171,7 +171,7 @@ ruleTester.run('no-duplicates', rule, { "'./foo' imported multiple times.", "'./foo' imported multiple times.", ], - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, }), // #2347: duplicate identifiers should be removed, but not if they are adjacent to comments @@ -182,7 +182,7 @@ ruleTester.run('no-duplicates', rule, { "'./foo' imported multiple times.", "'./foo' imported multiple times.", ], - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, }), test({ diff --git a/test/rules/no-dynamic-require.spec.ts b/test/rules/no-dynamic-require.spec.ts index 4bf5cb697..d9c9b7b4c 100644 --- a/test/rules/no-dynamic-require.spec.ts +++ b/test/rules/no-dynamic-require.spec.ts @@ -1,11 +1,11 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { parsers, test } from '../utils' import type { ValidTestCase } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-dynamic-require' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() const error = { messageId: 'require', diff --git a/test/rules/no-empty-named-blocks.spec.ts b/test/rules/no-empty-named-blocks.spec.ts index 84d287eeb..cdd82fb22 100644 --- a/test/rules/no-empty-named-blocks.spec.ts +++ b/test/rules/no-empty-named-blocks.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { parsers, test } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-empty-named-blocks' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() function generateSuggestionsTestCases(cases: string[], parser?: string) { return cases.map(code => @@ -41,29 +41,29 @@ ruleTester.run('no-empty-named-blocks', rule, { test({ code: `import type Default from 'mod';`, parser: parsers.TS }), test({ code: `import type { Named } from 'mod';`, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, }), test({ code: `import type Default, { Named } from 'mod';`, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, }), test({ code: `import type * as Namespace from 'mod';`, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, }), // Flow test({ code: `import typeof Default from 'mod'; // babel old`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: `import typeof { Named } from 'mod'; // babel old`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: `import typeof Default, { Named } from 'mod'; // babel old`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: ` @@ -110,7 +110,7 @@ ruleTester.run('no-empty-named-blocks', rule, { test({ code: `import type Default, {} from 'mod';`, output: `import type Default from 'mod';`, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, errors: ['Unexpected empty named import block'], }), @@ -127,7 +127,7 @@ ruleTester.run('no-empty-named-blocks', rule, { test({ code: `import typeof Default, {} from 'mod';`, output: `import typeof Default from 'mod';`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: ['Unexpected empty named import block'], }), ], diff --git a/test/rules/no-extraneous-dependencies.spec.ts b/test/rules/no-extraneous-dependencies.spec.ts index 610005b9a..44fc9490e 100644 --- a/test/rules/no-extraneous-dependencies.spec.ts +++ b/test/rules/no-extraneous-dependencies.spec.ts @@ -1,7 +1,7 @@ import fs from 'node:fs' import path from 'node:path' -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { dependencies as deps, @@ -12,8 +12,8 @@ import { parsers, test, testFilePath } from '../utils' import typescriptConfig from 'eslint-plugin-import-x/config/typescript' import rule from 'eslint-plugin-import-x/rules/no-extraneous-dependencies' -const ruleTester = new TSESLint.RuleTester() -const typescriptRuleTester = new TSESLint.RuleTester(typescriptConfig) +const ruleTester = new TSESLintRuleTester() +const typescriptRuleTester = new TSESLintRuleTester(typescriptConfig) const packageDirWithSyntaxError = testFilePath('with-syntax-error') @@ -107,7 +107,7 @@ ruleTester.run('no-extraneous-dependencies', rule, { test({ code: 'import type MyType from "myflowtyped";', options: [{ packageDir: packageDirWithFlowTyped }], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: ` @@ -115,7 +115,7 @@ ruleTester.run('no-extraneous-dependencies', rule, { import typeof TypeScriptModule from 'typescript'; `, options: [{ packageDir: packageDirWithFlowTyped }], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import react from "react";', diff --git a/test/rules/no-import-module-exports.spec.ts b/test/rules/no-import-module-exports.spec.ts index 62ce4e6b1..8a3d25fc9 100644 --- a/test/rules/no-import-module-exports.spec.ts +++ b/test/rules/no-import-module-exports.spec.ts @@ -1,12 +1,12 @@ import path from 'node:path' -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-import-module-exports' -const ruleTester = new TSESLint.RuleTester({ +const ruleTester = new TSESLintRuleTester({ parserOptions: { ecmaVersion: 6, sourceType: 'module' }, }) diff --git a/test/rules/no-internal-modules.spec.ts b/test/rules/no-internal-modules.spec.ts index 703fe2a7d..9d2299c1d 100644 --- a/test/rules/no-internal-modules.spec.ts +++ b/test/rules/no-internal-modules.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, testFilePath, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-internal-modules' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('no-internal-modules', rule, { valid: [ @@ -149,7 +149,7 @@ ruleTester.run('no-internal-modules', rule, { } } `, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, }), test({ code: 'export * from "./plugin2/thing"', diff --git a/test/rules/no-mutable-exports.spec.ts b/test/rules/no-mutable-exports.spec.ts index 5d36eb5a5..8cf3f0bd9 100644 --- a/test/rules/no-mutable-exports.spec.ts +++ b/test/rules/no-mutable-exports.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { parsers, test } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-mutable-exports' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('no-mutable-exports', rule, { valid: [ @@ -27,16 +27,16 @@ ruleTester.run('no-mutable-exports', rule, { test({ code: 'class Counter {}\nexport default Counter' }), test({ code: 'class Counter {}\nexport { Counter as default }' }), test({ - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, code: 'export Something from "./something";', }), test({ - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, code: 'type Foo = {}\nexport type {Foo}', }), test({ code: 'const count = 1\nexport { count as "counter" }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), ], invalid: [ @@ -75,7 +75,7 @@ ruleTester.run('no-mutable-exports', rule, { test({ code: 'let count = 1\nexport { count as "counter" }', errors: ["Exporting mutable 'let' binding, use 'const' instead."], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), // todo: undeclared globals diff --git a/test/rules/no-named-as-default-member.spec.ts b/test/rules/no-named-as-default-member.spec.ts index 6b57f4075..a8601d740 100644 --- a/test/rules/no-named-as-default-member.spec.ts +++ b/test/rules/no-named-as-default-member.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, SYNTAX_CASES } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-named-as-default-member' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('no-named-as-default-member', rule, { valid: [ @@ -19,7 +19,7 @@ ruleTester.run('no-named-as-default-member', rule, { }), test({ code: 'import bar, { foo } from "./export-default-string-and-named"', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), ...SYNTAX_CASES, @@ -75,7 +75,7 @@ ruleTester.run('no-named-as-default-member', rule, { type: 'MemberExpression', }, ], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), ], }) diff --git a/test/rules/no-named-as-default.spec.ts b/test/rules/no-named-as-default.spec.ts index 0fcea1618..adcaaa350 100644 --- a/test/rules/no-named-as-default.spec.ts +++ b/test/rules/no-named-as-default.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, SYNTAX_CASES, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-named-as-default' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('no-named-as-default', rule, { valid: [ @@ -22,7 +22,7 @@ ruleTester.run('no-named-as-default', rule, { test({ code: 'import bar, { foo } from "./export-default-string-and-named"', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), ...SYNTAX_CASES, @@ -53,7 +53,7 @@ ruleTester.run('no-named-as-default', rule, { // es7 test({ code: 'export foo from "./bar";', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [ { message: @@ -65,7 +65,7 @@ ruleTester.run('no-named-as-default', rule, { }), test({ code: 'export foo, { foo as bar } from "./bar";', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [ { message: @@ -96,7 +96,7 @@ ruleTester.run('no-named-as-default', rule, { type: 'ImportDefaultSpecifier', }, ], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), test({ code: 'import foo, { foo as bar } from "./export-default-string-and-named"', @@ -107,7 +107,7 @@ ruleTester.run('no-named-as-default', rule, { type: 'ImportDefaultSpecifier', }, ], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), ], }) diff --git a/test/rules/no-named-default.spec.ts b/test/rules/no-named-default.spec.ts index 4c1a049a4..261b676b9 100644 --- a/test/rules/no-named-default.spec.ts +++ b/test/rules/no-named-default.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, SYNTAX_CASES, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-named-default' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('no-named-default', rule, { valid: [ @@ -14,11 +14,11 @@ ruleTester.run('no-named-default', rule, { // Should ignore imported flow types test({ code: 'import { type default as Foo } from "./bar";', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import { typeof default as Foo } from "./bar";', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), ...SYNTAX_CASES, @@ -31,7 +31,7 @@ ruleTester.run('no-named-default', rule, { message: 'Use default import syntax to import \'default\'.', type: 'Identifier', }], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) } , }),*/ test({ code: 'import { default as bar } from "./bar";', diff --git a/test/rules/no-named-export.spec.ts b/test/rules/no-named-export.spec.ts index f99a81498..5a2af56ae 100644 --- a/test/rules/no-named-export.spec.ts +++ b/test/rules/no-named-export.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { parsers, test } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-named-export' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('no-named-export', rule, { valid: [ @@ -16,7 +16,7 @@ ruleTester.run('no-named-export', rule, { }), test({ code: 'export default from "foo.js"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // no exports at all @@ -31,7 +31,7 @@ ruleTester.run('no-named-export', rule, { }), test({ code: 'let foo; export { foo as "default" }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), ], invalid: [ @@ -181,7 +181,7 @@ ruleTester.run('no-named-export', rule, { }), test({ code: 'export { a, b } from "foo.js"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [ { type: 'ExportNamedDeclaration', @@ -191,7 +191,7 @@ ruleTester.run('no-named-export', rule, { }), test({ code: `export type UserId = number;`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [ { type: 'ExportNamedDeclaration', @@ -201,7 +201,7 @@ ruleTester.run('no-named-export', rule, { }), test({ code: 'export foo from "foo.js"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [ { type: 'ExportNamedDeclaration', @@ -211,7 +211,7 @@ ruleTester.run('no-named-export', rule, { }), test({ code: `export Memory, { MemoryValue } from './Memory'`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [ { type: 'ExportNamedDeclaration', diff --git a/test/rules/no-namespace.spec.ts b/test/rules/no-namespace.spec.ts index 570b87f39..627108267 100644 --- a/test/rules/no-namespace.spec.ts +++ b/test/rules/no-namespace.spec.ts @@ -1,4 +1,4 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test } from '../utils' @@ -6,29 +6,39 @@ import rule from 'eslint-plugin-import-x/rules/no-namespace' const ERROR_MESSAGE = 'Unexpected namespace import.' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('no-namespace', rule, { valid: [ { code: "import { a, b } from 'foo';", - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: "import { a, b } from './foo';", - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: "import bar from 'bar';", - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: "import bar from './bar';", - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: "import * as bar from './ignored-module.ext';", - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, options: [{ ignore: ['*.ext'] }], }, ], diff --git a/test/rules/no-nodejs-modules.spec.ts b/test/rules/no-nodejs-modules.spec.ts index 6a404bae2..8d999f2ed 100644 --- a/test/rules/no-nodejs-modules.spec.ts +++ b/test/rules/no-nodejs-modules.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-nodejs-modules' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() const error = (message: string) => ({ message, diff --git a/test/rules/no-relative-packages.spec.ts b/test/rules/no-relative-packages.spec.ts index ceefbf58a..2b664b3fb 100644 --- a/test/rules/no-relative-packages.spec.ts +++ b/test/rules/no-relative-packages.spec.ts @@ -1,12 +1,12 @@ import path from 'node:path' -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, testFilePath } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-relative-packages' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('no-relative-packages', rule, { valid: [ diff --git a/test/rules/no-relative-parent-imports.spec.ts b/test/rules/no-relative-parent-imports.spec.ts index 43b5a51c9..2177e45ae 100644 --- a/test/rules/no-relative-parent-imports.spec.ts +++ b/test/rules/no-relative-parent-imports.spec.ts @@ -1,4 +1,4 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { parsers, test as _test, testFilePath } from '../utils' import type { ValidTestCase } from '../utils' @@ -12,7 +12,7 @@ const test = (def: T) => parser: parsers.BABEL, }) -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('no-relative-parent-imports', rule, { valid: [ diff --git a/test/rules/no-restricted-paths.spec.ts b/test/rules/no-restricted-paths.spec.ts index b69b4887d..d4c537c24 100644 --- a/test/rules/no-restricted-paths.spec.ts +++ b/test/rules/no-restricted-paths.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { parsers, test, testFilePath } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-restricted-paths' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('no-restricted-paths', rule, { valid: [ diff --git a/test/rules/no-self-import.spec.ts b/test/rules/no-self-import.spec.ts index c7d2392c9..8620ec987 100644 --- a/test/rules/no-self-import.spec.ts +++ b/test/rules/no-self-import.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, testFilePath } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-self-import' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() const error = { message: 'Module imports itself.', diff --git a/test/rules/no-unassigned-import.spec.ts b/test/rules/no-unassigned-import.spec.ts index 30d2024c2..a78c1bf79 100644 --- a/test/rules/no-unassigned-import.spec.ts +++ b/test/rules/no-unassigned-import.spec.ts @@ -1,12 +1,12 @@ import path from 'node:path' -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-unassigned-import' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() const error = { messageId: 'unassigned', diff --git a/test/rules/no-unresolved.spec.ts b/test/rules/no-unresolved.spec.ts index 7623d6569..802ecbddc 100644 --- a/test/rules/no-unresolved.spec.ts +++ b/test/rules/no-unresolved.spec.ts @@ -1,6 +1,6 @@ import path from 'node:path' -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, SYNTAX_CASES, parsers, testFilePath } from '../utils' import type { ValidTestCase } from '../utils' @@ -8,7 +8,7 @@ import type { ValidTestCase } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-unresolved' import { CASE_SENSITIVE_FS } from 'eslint-plugin-import-x/utils' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() function runResolverTests(resolver: 'node' | 'webpack') { // redefine 'test' to set a resolver @@ -512,13 +512,13 @@ ruleTester.run('import() with built-in parser', rule, { valid: [ test({ code: "import('fs');", - parserOptions: { ecmaVersion: 2021 }, + languageOptions: { parserOptions: { ecmaVersion: 2021 } }, }), ], invalid: [ test({ code: 'import("./does-not-exist-l0w9ssmcqy9").then(() => {})', - parserOptions: { ecmaVersion: 2021 }, + languageOptions: { parserOptions: { ecmaVersion: 2021 } }, errors: [ "Unable to resolve path to module './does-not-exist-l0w9ssmcqy9'.", ], diff --git a/test/rules/no-unused-modules.spec.ts b/test/rules/no-unused-modules.spec.ts index a65f5edb4..ffc4e2134 100644 --- a/test/rules/no-unused-modules.spec.ts +++ b/test/rules/no-unused-modules.spec.ts @@ -1,10 +1,10 @@ import fs from 'node:fs' -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' +import type { TSESLint } from '@typescript-eslint/utils' // @ts-expect-error -- in correct types import { FlatRuleTester as ESLint8_56_FlatRuleTester } from 'eslint8.56/use-at-your-own-risk' import { RuleTester as ESLint9_FlatRuleTester } from 'eslint9' -import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester'; import { test, testFilePath, parsers } from '../utils' @@ -129,49 +129,49 @@ ruleTester.run('no-unused-modules', rule, { options: unusedExportsOptions, code: 'import { o2 } from "./file-o";export default () => 12', filename: testFilePath('./no-unused-modules/file-a.js'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ options: unusedExportsOptions, code: 'export const b = 2', filename: testFilePath('./no-unused-modules/file-b.js'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ options: unusedExportsOptions, code: 'const c1 = 3; function c2() { return 3 }; export { c1, c2 }', filename: testFilePath('./no-unused-modules/file-c.js'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ options: unusedExportsOptions, code: 'export function d() { return 4 }', filename: testFilePath('./no-unused-modules/file-d.js'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ options: unusedExportsOptions, code: 'export class q { q0() {} }', filename: testFilePath('./no-unused-modules/file-q.js'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ options: unusedExportsOptions, code: 'const e0 = 5; export { e0 as e }', filename: testFilePath('./no-unused-modules/file-e.js'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ options: unusedExportsOptions, code: 'const l0 = 5; const l = 10; export { l0 as l1, l }; export default () => {}', filename: testFilePath('./no-unused-modules/file-l.js'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ options: unusedExportsOptions, code: 'const o0 = 0; const o1 = 1; export { o0, o1 as o2 }; export default () => {}', filename: testFilePath('./no-unused-modules/file-o.js'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ options: unusedExportsOptions, diff --git a/test/rules/no-useless-path-segments.spec.ts b/test/rules/no-useless-path-segments.spec.ts index 789dcd587..4db170cdc 100644 --- a/test/rules/no-useless-path-segments.spec.ts +++ b/test/rules/no-useless-path-segments.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { parsers, test } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-useless-path-segments' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() function runResolverTests(resolver: 'node' | 'webpack') { ruleTester.run(`no-useless-path-segments (${resolver})`, rule, { diff --git a/test/rules/no-webpack-loader-syntax.spec.ts b/test/rules/no-webpack-loader-syntax.spec.ts index 98f2e3aad..6b0ec71bb 100644 --- a/test/rules/no-webpack-loader-syntax.spec.ts +++ b/test/rules/no-webpack-loader-syntax.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-webpack-loader-syntax' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() const message = 'Do not use import syntax to configure webpack loaders.' diff --git a/test/rules/order.spec.ts b/test/rules/order.spec.ts index 8586643fc..73a9176a1 100644 --- a/test/rules/order.spec.ts +++ b/test/rules/order.spec.ts @@ -1,4 +1,4 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import eslintPkg from 'eslint/package.json' import semver from 'semver' @@ -7,9 +7,9 @@ import type { ValidTestCase } from '../utils' import rule from 'eslint-plugin-import-x/rules/order' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() -const flowRuleTester = new TSESLint.RuleTester({ +const flowRuleTester = new TSESLintRuleTester({ parser: parsers.BABEL, parserOptions: { requireConfigFile: false, @@ -219,14 +219,14 @@ ruleTester.run('order', rule, { var relParent3 = require('../'); var index = require('./'); `, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, }), test({ code: ` export import CreateSomething = _CreateSomething; `, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, }), // Adding unknown import types (e.g. using a resolver alias via babel) to the groups. test({ @@ -896,7 +896,7 @@ ruleTester.run('order', rule, { code: ` import blah = require('./blah'); import { hello } from './hello';`, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, options: [ { alphabetize: { @@ -910,7 +910,7 @@ ruleTester.run('order', rule, { code: ` import blah = require('./blah'); import log = console.log;`, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, options: [ { alphabetize: { @@ -924,7 +924,7 @@ ruleTester.run('order', rule, { code: ` import debug = console.debug; import log = console.log;`, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, options: [ { alphabetize: { @@ -937,7 +937,7 @@ ruleTester.run('order', rule, { code: ` import log = console.log; import debug = console.debug;`, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, options: [ { alphabetize: { @@ -953,7 +953,7 @@ ruleTester.run('order', rule, { export import a2 = a; } `, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, options: [ { groups: ['external', 'index'], @@ -1725,7 +1725,7 @@ ruleTester.run('order', rule, { import bar = require("../foo/bar"); var fs = require('fs'); `, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, errors: [ { message: '`fs` import should occur after import of `../foo/bar`', @@ -1741,7 +1741,7 @@ ruleTester.run('order', rule, { var fs = require('fs'); var async = require('async'); `, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, errors: [ { message: '`fs` import should occur before import of `async`', @@ -1767,7 +1767,7 @@ ruleTester.run('order', rule, { alphabetize: { order: 'asc' }, }, ], - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, errors: [ { message: '`async` import should occur before import of `sync`', @@ -1779,7 +1779,7 @@ ruleTester.run('order', rule, { code: ` import log = console.log; import blah = require('./blah');`, - parser: parsers.TS, + languageOptions: { parser: require(parsers.TS) }, errors: [ { message: diff --git a/test/rules/prefer-default-export.spec.ts b/test/rules/prefer-default-export.spec.ts index 6bc0aaa16..81ba1a20a 100644 --- a/test/rules/prefer-default-export.spec.ts +++ b/test/rules/prefer-default-export.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { test, getNonDefaultParsers, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/prefer-default-export' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() // test cases for default option { target: 'single' } ruleTester.run('prefer-default-export', rule, { @@ -66,7 +66,7 @@ ruleTester.run('prefer-default-export', rule, { }), test({ code: `export Memory, { MemoryValue } from './Memory'`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // no exports at all @@ -77,28 +77,28 @@ ruleTester.run('prefer-default-export', rule, { test({ code: `export type UserId = number;`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // issue #653 test({ code: 'export default from "foo.js"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'export { a, b } from "foo.js"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // ...SYNTAX_CASES, test({ code: ` export const [CounterProvider,, withCounter] = func();; `, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'let foo; export { foo as "default" };', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), ], invalid: [ @@ -232,7 +232,7 @@ ruleTester.run('prefer-default-export', rule, { }), test({ code: `export Memory, { MemoryValue } from './Memory'`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, options: [ { target: 'any', @@ -260,7 +260,7 @@ ruleTester.run('prefer-default-export', rule, { test({ code: 'export const a = 4; let foo; export { foo as "default" };', options: [{ target: 'any' }], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), ], // { target: 'any' } invalid cases when any exporting file must contain default export but does not @@ -328,7 +328,7 @@ ruleTester.run('prefer-default-export', rule, { }), test({ code: 'export { a, b } from "foo.js"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, options: [ { target: 'any', diff --git a/test/rules/unambiguous.spec.ts b/test/rules/unambiguous.spec.ts index 80de2894b..1b473c1a5 100644 --- a/test/rules/unambiguous.spec.ts +++ b/test/rules/unambiguous.spec.ts @@ -1,10 +1,10 @@ -import { TSESLint } from '@typescript-eslint/utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/unambiguous' -const ruleTester = new TSESLint.RuleTester() +const ruleTester = new TSESLintRuleTester() ruleTester.run('unambiguous', rule, { valid: [ @@ -13,46 +13,66 @@ ruleTester.run('unambiguous', rule, { { code: 'import y from "z"; function x() {}', - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: 'import * as y from "z"; function x() {}', - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: 'import { y } from "z"; function x() {}', - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: 'import z, { y } from "z"; function x() {}', - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: 'function x() {}; export {}', - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: 'function x() {}; export { x }', - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: 'function x() {}; export { y } from "z"', - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: 'function x() {}; export * as y from "z"', - parser: parsers.BABEL, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { parser: require(parsers.BABEL) }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: 'export function x() {}', - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, ], invalid: [ { code: 'function x() {}', - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, output: null, errors: [ { From c5bf9f6690363ddfd61135824c40f23886bcd492 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Fri, 2 Aug 2024 11:26:28 +0800 Subject: [PATCH 09/36] test: migrate new test cases config --- .../consistent-type-specifier-style.spec.ts | 1 - test/rules/default.spec.ts | 36 ++++++++++--------- test/rules/export.spec.ts | 1 - test/rules/namespace.spec.ts | 28 ++++++++------- test/rules/newline-after-import.spec.ts | 16 --------- test/rules/no-cycle.spec.ts | 6 +--- test/rules/no-duplicates.spec.ts | 3 -- test/rules/no-empty-named-blocks.spec.ts | 7 ++-- test/rules/no-extraneous-dependencies.spec.ts | 16 ++++----- test/rules/no-internal-modules.spec.ts | 3 +- test/rules/no-named-as-default.spec.ts | 15 ++++++-- test/rules/no-relative-parent-imports.spec.ts | 2 +- test/rules/no-unresolved.spec.ts | 12 +++---- test/rules/no-unused-modules.spec.ts | 24 ++++++------- test/rules/no-useless-path-segments.spec.ts | 18 ++++++---- test/rules/order.spec.ts | 22 ++++++------ 16 files changed, 99 insertions(+), 111 deletions(-) diff --git a/test/rules/consistent-type-specifier-style.spec.ts b/test/rules/consistent-type-specifier-style.spec.ts index 4ae7cbb1b..d24c9af94 100644 --- a/test/rules/consistent-type-specifier-style.spec.ts +++ b/test/rules/consistent-type-specifier-style.spec.ts @@ -448,7 +448,6 @@ const FLOW_ONLY = { describe('TypeScript', () => { const ruleTester = new TSESLintRuleTester({ languageOptions: { - parser: require(parsers.TS), parserOptions: { ecmaVersion: 6, sourceType: 'module', diff --git a/test/rules/default.spec.ts b/test/rules/default.spec.ts index 4d8128f3a..46d36e16e 100644 --- a/test/rules/default.spec.ts +++ b/test/rules/default.spec.ts @@ -33,9 +33,15 @@ ruleTester.run('default', rule, { test({ code: 'import common from "./common";' }), // es7 export syntax - test({ code: 'export bar from "./bar"', parser: parsers.BABEL }), + test({ + code: 'export bar from "./bar"', + languageOptions: { parser: require(parsers.BABEL) }, + }), test({ code: 'export { default as bar } from "./bar"' }), - test({ code: 'export bar, { foo } from "./bar"', parser: parsers.BABEL }), + test({ + code: 'export bar, { foo } from "./bar"', + languageOptions: { parser: require(parsers.BABEL) }, + }), test({ code: 'export { default as bar, foo } from "./bar"' }), test({ code: 'export bar, * as names from "./bar"', @@ -184,7 +190,6 @@ describe('TypeScript', () => { valid: [ test({ code: `import foobar from "./typescript-default"`, - parser, settings: { 'import-x/parsers': { [parser]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -192,7 +197,6 @@ describe('TypeScript', () => { }), test({ code: `import foobar from "./typescript-export-assign-default"`, - parser, settings: { 'import-x/parsers': { [parser]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -200,7 +204,7 @@ describe('TypeScript', () => { }), test({ code: `import foobar from "./typescript-export-assign-function"`, - parser, + settings: { 'import-x/parsers': { [parser]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -208,7 +212,7 @@ describe('TypeScript', () => { }), test({ code: `import foobar from "./typescript-export-assign-mixed"`, - parser, + settings: { 'import-x/parsers': { [parser]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -216,7 +220,7 @@ describe('TypeScript', () => { }), test({ code: `import foobar from "./typescript-export-assign-default-reexport"`, - parser, + settings: { 'import-x/parsers': { [parser]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -224,7 +228,7 @@ describe('TypeScript', () => { }), test({ code: `import React from "./typescript-export-assign-default-namespace"`, - parser, + settings: { 'import-x/parsers': { [parser]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -238,7 +242,7 @@ describe('TypeScript', () => { }), test({ code: `import Foo from "./typescript-export-as-default-namespace"`, - parser, + settings: { 'import-x/parsers': { [parser]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -252,7 +256,7 @@ describe('TypeScript', () => { }), test({ code: `import Foo from "./typescript-export-react-test-renderer"`, - parser, + settings: { 'import-x/parsers': { [parser]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -266,7 +270,7 @@ describe('TypeScript', () => { }), test({ code: `import Foo from "./typescript-extended-config"`, - parser, + settings: { 'import-x/parsers': { [parser]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -280,7 +284,7 @@ describe('TypeScript', () => { }), test({ code: `import foobar from "./typescript-export-assign-property"`, - parser, + settings: { 'import-x/parsers': { [parser]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -291,7 +295,7 @@ describe('TypeScript', () => { invalid: [ test({ code: `import foobar from "./typescript"`, - parser, + settings: { 'import-x/parsers': { [parser]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -300,7 +304,7 @@ describe('TypeScript', () => { }), test({ code: `import React from "./typescript-export-assign-default-namespace"`, - parser, + settings: { 'import-x/parsers': { [parser]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -311,7 +315,7 @@ describe('TypeScript', () => { }), test({ code: `import FooBar from "./typescript-export-as-default-namespace"`, - parser, + settings: { 'import-x/parsers': { [parser]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -322,7 +326,7 @@ describe('TypeScript', () => { }), test({ code: `import Foo from "./typescript-export-as-default-namespace"`, - parser, + settings: { 'import-x/parsers': { [parser]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, diff --git a/test/rules/export.spec.ts b/test/rules/export.spec.ts index 3160530a8..7b24b5e9c 100644 --- a/test/rules/export.spec.ts +++ b/test/rules/export.spec.ts @@ -52,7 +52,6 @@ ruleTester.run('export', rule, { return param && param1; } `, - languageOptions: { parser: require(parsers.TS) }, }, ], diff --git a/test/rules/namespace.spec.ts b/test/rules/namespace.spec.ts index 085b42e31..08f4b1b3c 100644 --- a/test/rules/namespace.spec.ts +++ b/test/rules/namespace.spec.ts @@ -5,7 +5,9 @@ import { test, SYNTAX_CASES, testFilePath, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/namespace' const ruleTester = new TSESLintRuleTester({ - parserOptions: { env: { es6: true } }, + languageOptions: { + parserOptions: { env: { es6: true } }, + }, }) function error(name: string, namespace: string) { @@ -103,21 +105,21 @@ const valid = [ ///////// test({ code: 'export * as names from "./named-exports"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'export defport, * as names from "./named-exports"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // non-existent is handled by no-unresolved test({ code: 'export * as names from "./does-not-exist"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import * as Endpoints from "./issue-195/Endpoints"; console.log(Endpoints.Users)', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // respect hoisting @@ -132,11 +134,11 @@ const valid = [ }), test({ code: 'export * as names from "./default-export"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'export defport, * as names from "./default-export"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // #456: optionally ignore computed references @@ -154,7 +156,7 @@ const valid = [ }), test({ code: `import * as names from './named-exports'; const {a, b, ...rest} = names;`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // #1144: should handle re-export CommonJS as namespace @@ -178,7 +180,7 @@ const valid = [ import * as foo from "./typescript-declare-nested" foo.bar.MyFunction() `, - parser: parsers.TS, + settings: { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -187,7 +189,7 @@ const valid = [ test({ code: `import { foobar } from "./typescript-declare-interface"`, - parser: parsers.TS, + settings: { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -196,7 +198,7 @@ const valid = [ test({ code: 'export * from "typescript/lib/typescript.d"', - parser: parsers.TS, + settings: { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -205,7 +207,7 @@ const valid = [ test({ code: 'export = function name() {}', - parser: parsers.TS, + settings: { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -330,7 +332,7 @@ const invalid = [ test({ code: 'import * as Endpoints from "./issue-195/Endpoints"; console.log(Endpoints.Foo)', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: ["'Foo' not found in imported namespace 'Endpoints'."], }), diff --git a/test/rules/newline-after-import.spec.ts b/test/rules/newline-after-import.spec.ts index 2ad0c5650..37bee0b45 100644 --- a/test/rules/newline-after-import.spec.ts +++ b/test/rules/newline-after-import.spec.ts @@ -363,8 +363,6 @@ ruleTester.run('newline-after-import', rule, { import execa = require('execa'); `, languageOptions: { - parser: require(parsers.TS), - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, }, @@ -374,8 +372,6 @@ ruleTester.run('newline-after-import', rule, { import { ExecaReturnValue } from 'execa'; `, languageOptions: { - parser: require(parsers.TS), - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, }, @@ -386,8 +382,6 @@ ruleTester.run('newline-after-import', rule, { import { ExecbReturnValue } from 'execb'; `, languageOptions: { - parser: require(parsers.TS), - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, }, @@ -398,8 +392,6 @@ ruleTester.run('newline-after-import', rule, { import execb = require('execb'); `, languageOptions: { - parser: require(parsers.TS), - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, }, @@ -408,8 +400,6 @@ ruleTester.run('newline-after-import', rule, { export import a = obj;\nf(a); `, languageOptions: { - parser: require(parsers.TS), - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, }, @@ -422,8 +412,6 @@ ruleTester.run('newline-after-import', rule, { f(a); }`, languageOptions: { - parser: require(parsers.TS), - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, }, @@ -436,8 +424,6 @@ ruleTester.run('newline-after-import', rule, { } `, languageOptions: { - parser: require(parsers.TS), - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, }, @@ -449,8 +435,6 @@ ruleTester.run('newline-after-import', rule, { export import Foo = ns.baz.bar.Foo; `, languageOptions: { - parser: require(parsers.TS), - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, }, diff --git a/test/rules/no-cycle.spec.ts b/test/rules/no-cycle.spec.ts index 90b087d31..42968b1fe 100644 --- a/test/rules/no-cycle.spec.ts +++ b/test/rules/no-cycle.spec.ts @@ -88,12 +88,10 @@ ruleTester.run('no-cycle', rule, { test({ code: `function bar(){ return import("./${testDialect}/depth-one"); } // #2265 3`, options: [{ allowUnsafeDynamicCyclicDependency: true }], - languageOptions: { parser: require(parsers.TS) }, }), test({ code: `import { foo } from "./${testDialect}/depth-one-dynamic"; // #2265 4`, options: [{ allowUnsafeDynamicCyclicDependency: true }], - languageOptions: { parser: require(parsers.TS) }, }), test({ @@ -203,7 +201,7 @@ ruleTester.run('no-cycle', rule, { code: `import { bar } from "./${testDialect}/depth-three-indirect"`, options: [{ ...opts }], errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: `import { foo } from "./${testDialect}/depth-two"`, @@ -251,12 +249,10 @@ ruleTester.run('no-cycle', rule, { test({ code: `function bar(){ return import("./${testDialect}/depth-one"); } // #2265 7`, errors: [error(`Dependency cycle detected.`)], - languageOptions: { parser: require(parsers.TS) }, }), test({ code: `import { foo } from "./${testDialect}/depth-one-dynamic"; // #2265 8`, errors: [error(`Dependency cycle detected.`)], - languageOptions: { parser: require(parsers.TS) }, }), test({ diff --git a/test/rules/no-duplicates.spec.ts b/test/rules/no-duplicates.spec.ts index 2df33f3d1..a141bf5e8 100644 --- a/test/rules/no-duplicates.spec.ts +++ b/test/rules/no-duplicates.spec.ts @@ -159,7 +159,6 @@ ruleTester.run('no-duplicates', rule, { "'./foo' imported multiple times.", "'./foo' imported multiple times.", ], - languageOptions: { parser: require(parsers.TS) }, }), // #2347: duplicate identifiers should be removed @@ -171,7 +170,6 @@ ruleTester.run('no-duplicates', rule, { "'./foo' imported multiple times.", "'./foo' imported multiple times.", ], - languageOptions: { parser: require(parsers.TS) }, }), // #2347: duplicate identifiers should be removed, but not if they are adjacent to comments @@ -182,7 +180,6 @@ ruleTester.run('no-duplicates', rule, { "'./foo' imported multiple times.", "'./foo' imported multiple times.", ], - languageOptions: { parser: require(parsers.TS) }, }), test({ diff --git a/test/rules/no-empty-named-blocks.spec.ts b/test/rules/no-empty-named-blocks.spec.ts index cdd82fb22..aed6b571f 100644 --- a/test/rules/no-empty-named-blocks.spec.ts +++ b/test/rules/no-empty-named-blocks.spec.ts @@ -38,18 +38,15 @@ ruleTester.run('no-empty-named-blocks', rule, { test({ code: `import * as Namespace from 'mod';` }), // Typescript - test({ code: `import type Default from 'mod';`, parser: parsers.TS }), + test({ code: `import type Default from 'mod';` }), test({ code: `import type { Named } from 'mod';`, - languageOptions: { parser: require(parsers.TS) }, }), test({ code: `import type Default, { Named } from 'mod';`, - languageOptions: { parser: require(parsers.TS) }, }), test({ code: `import type * as Namespace from 'mod';`, - languageOptions: { parser: require(parsers.TS) }, }), // Flow @@ -110,7 +107,7 @@ ruleTester.run('no-empty-named-blocks', rule, { test({ code: `import type Default, {} from 'mod';`, output: `import type Default from 'mod';`, - languageOptions: { parser: require(parsers.TS) }, + errors: ['Unexpected empty named import block'], }), diff --git a/test/rules/no-extraneous-dependencies.spec.ts b/test/rules/no-extraneous-dependencies.spec.ts index 44fc9490e..8e03654a2 100644 --- a/test/rules/no-extraneous-dependencies.spec.ts +++ b/test/rules/no-extraneous-dependencies.spec.ts @@ -629,22 +629,22 @@ typescriptRuleTester.run( test({ code: 'import type MyType from "not-a-dependency";', filename: testFilePath('./no-unused-modules/typescript/file-ts-a.ts'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import type { MyType } from "not-a-dependency";', filename: testFilePath('./no-unused-modules/typescript/file-ts-a.ts'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import { type MyType } from "not-a-dependency";', filename: testFilePath('./no-unused-modules/typescript/file-ts-a.ts'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import { type MyType, type OtherType } from "not-a-dependency";', filename: testFilePath('./no-unused-modules/typescript/file-ts-a.ts'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), ], invalid: [ @@ -652,7 +652,7 @@ typescriptRuleTester.run( code: 'import type { MyType } from "not-a-dependency";', options: [{ includeTypes: true }], filename: testFilePath('./no-unused-modules/typescript/file-ts-a.ts'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [ { message: `'not-a-dependency' should be listed in the project's dependencies. Run 'npm i -S not-a-dependency' to add it`, @@ -663,7 +663,7 @@ typescriptRuleTester.run( code: `import type { Foo } from 'not-a-dependency';`, options: [{ includeTypes: true }], filename: testFilePath('./no-unused-modules/typescript/file-ts-a.ts'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [ { message: `'not-a-dependency' should be listed in the project's dependencies. Run 'npm i -S not-a-dependency' to add it`, @@ -673,7 +673,7 @@ typescriptRuleTester.run( test({ code: 'import Foo, { type MyType } from "not-a-dependency";', filename: testFilePath('./no-unused-modules/typescript/file-ts-a.ts'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [ { message: `'not-a-dependency' should be listed in the project's dependencies. Run 'npm i -S not-a-dependency' to add it`, @@ -683,7 +683,7 @@ typescriptRuleTester.run( test({ code: 'import { type MyType, Foo } from "not-a-dependency";', filename: testFilePath('./no-unused-modules/typescript/file-ts-a.ts'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: [ { message: `'not-a-dependency' should be listed in the project's dependencies. Run 'npm i -S not-a-dependency' to add it`, diff --git a/test/rules/no-internal-modules.spec.ts b/test/rules/no-internal-modules.spec.ts index 9d2299c1d..c683c2fdc 100644 --- a/test/rules/no-internal-modules.spec.ts +++ b/test/rules/no-internal-modules.spec.ts @@ -1,6 +1,6 @@ import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' -import { test, testFilePath, parsers } from '../utils' +import { test, testFilePath } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-internal-modules' @@ -149,7 +149,6 @@ ruleTester.run('no-internal-modules', rule, { } } `, - languageOptions: { parser: require(parsers.TS) }, }), test({ code: 'export * from "./plugin2/thing"', diff --git a/test/rules/no-named-as-default.spec.ts b/test/rules/no-named-as-default.spec.ts index adcaaa350..05c1f1132 100644 --- a/test/rules/no-named-as-default.spec.ts +++ b/test/rules/no-named-as-default.spec.ts @@ -14,11 +14,20 @@ ruleTester.run('no-named-as-default', rule, { test({ code: 'import bar, { foo } from "./empty-folder";' }), // es7 - test({ code: 'export bar, { foo } from "./bar";', parser: parsers.BABEL }), - test({ code: 'export bar from "./bar";', parser: parsers.BABEL }), + test({ + code: 'export bar, { foo } from "./bar";', + languageOptions: { parser: require(parsers.BABEL) }, + }), + test({ + code: 'export bar from "./bar";', + languageOptions: { parser: require(parsers.BABEL) }, + }), // #566: don't false-positive on `default` itself - test({ code: 'export default from "./bar";', parser: parsers.BABEL }), + test({ + code: 'export default from "./bar";', + languageOptions: { parser: require(parsers.BABEL) }, + }), test({ code: 'import bar, { foo } from "./export-default-string-and-named"', diff --git a/test/rules/no-relative-parent-imports.spec.ts b/test/rules/no-relative-parent-imports.spec.ts index 2177e45ae..d11193917 100644 --- a/test/rules/no-relative-parent-imports.spec.ts +++ b/test/rules/no-relative-parent-imports.spec.ts @@ -9,7 +9,7 @@ const test = (def: T) => _test({ ...def, filename: testFilePath('./internal-modules/plugins/plugin2/index.js'), - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }) const ruleTester = new TSESLintRuleTester() diff --git a/test/rules/no-unresolved.spec.ts b/test/rules/no-unresolved.spec.ts index 802ecbddc..3be544aa6 100644 --- a/test/rules/no-unresolved.spec.ts +++ b/test/rules/no-unresolved.spec.ts @@ -34,7 +34,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { rest({ code: "import fs from 'fs';" }), rest({ code: "import('fs');", - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // check with eslint parser @@ -52,11 +52,11 @@ function runResolverTests(resolver: 'node' | 'webpack') { // stage 1 proposal for export symmetry, rest({ code: 'export * as bar from "./bar"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), rest({ code: 'export bar from "./bar"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), rest({ code: 'import foo from "./jsx/MyUnCoolComponent.jsx"' }), @@ -176,7 +176,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { type: 'Literal', }, ], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), rest({ @@ -203,12 +203,12 @@ function runResolverTests(resolver: 'node' | 'webpack') { // export symmetry proposal rest({ code: 'export * as bar from "./does-not-exist"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: ["Unable to resolve path to module './does-not-exist'."], }), rest({ code: 'export bar from "./does-not-exist"', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, errors: ["Unable to resolve path to module './does-not-exist'."], }), diff --git a/test/rules/no-unused-modules.spec.ts b/test/rules/no-unused-modules.spec.ts index ffc4e2134..b17b06fa6 100644 --- a/test/rules/no-unused-modules.spec.ts +++ b/test/rules/no-unused-modules.spec.ts @@ -303,7 +303,7 @@ describe('dynamic imports', () => { const d = 40 export default d `, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, filename: testFilePath('./no-unused-modules/exports-for-dynamic-js.js'), }), ], @@ -317,7 +317,7 @@ describe('dynamic imports', () => { const d = 40 export default d `, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, filename: testFilePath( './no-unused-modules/exports-for-dynamic-js-2.js', ), @@ -341,7 +341,6 @@ describe('dynamic imports', () => { const ts_d = 40 export default ts_d `, - parser: parsers.TS, filename: testFilePath( './no-unused-modules/typescript/exports-for-dynamic-ts.ts', ), @@ -351,7 +350,6 @@ describe('dynamic imports', () => { import App from './App'; `, filename: testFilePath('./unused-modules-reexport-crash/src/index.tsx'), - parser: parsers.TS, options: [ { unusedExports: true, @@ -1409,7 +1407,7 @@ describe('correctly work with JSX only files', () => { test({ options: unusedExportsJsxOptions, code: 'import a from "file-jsx-a";', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, filename: testFilePath('./no-unused-modules/jsx/file-jsx-a.jsx'), }), ], @@ -1417,7 +1415,7 @@ describe('correctly work with JSX only files', () => { test({ options: unusedExportsJsxOptions, code: `export const b = 2;`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, filename: testFilePath('./no-unused-modules/jsx/file-jsx-b.jsx'), errors: [ error(`exported declaration 'b' not used within other modules`), @@ -1433,7 +1431,7 @@ describe('ignore flow types', () => { test({ options: unusedExportsOptions, code: 'import { type FooType, type FooInterface } from "./flow-2";', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, filename: testFilePath('./no-unused-modules/flow/flow-0.js'), }), test({ @@ -1442,13 +1440,13 @@ describe('ignore flow types', () => { export type FooType = string; export interface FooInterface {}; `, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, filename: testFilePath('./no-unused-modules/flow/flow-2.js'), }), test({ options: unusedExportsOptions, code: 'import type { FooType, FooInterface } from "./flow-4";', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, filename: testFilePath('./no-unused-modules/flow/flow-3.js'), }), test({ @@ -1457,7 +1455,7 @@ describe('ignore flow types', () => { export type FooType = string; export interface FooInterface {}; `, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, filename: testFilePath('./no-unused-modules/flow/flow-4.js'), }), test({ @@ -1466,7 +1464,7 @@ describe('ignore flow types', () => { export type Bar = number; export interface BarInterface {}; `, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, filename: testFilePath('./no-unused-modules/flow/flow-1.js'), }), ], @@ -1480,13 +1478,13 @@ describe('support (nested) destructuring assignment', () => { test({ options: unusedExportsOptions, code: 'import {a, b} from "./destructuring-b";', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, filename: testFilePath('./no-unused-modules/destructuring-a.js'), }), test({ options: unusedExportsOptions, code: 'const obj = {a: 1, dummy: {b: 2}}; export const {a, dummy: {b}} = obj;', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, filename: testFilePath('./no-unused-modules/destructuring-b.js'), }), ], diff --git a/test/rules/no-useless-path-segments.spec.ts b/test/rules/no-useless-path-segments.spec.ts index 4db170cdc..f40afc6d2 100644 --- a/test/rules/no-useless-path-segments.spec.ts +++ b/test/rules/no-useless-path-segments.spec.ts @@ -42,11 +42,17 @@ function runResolverTests(resolver: 'node' | 'webpack') { options: [{ noUselessIndex: true }], }), // ./importType.js does not exist - test({ code: 'import(".")', parser: parsers.BABEL }), - test({ code: 'import("..")', parser: parsers.BABEL }), + test({ + code: 'import(".")', + languageOptions: { parser: require(parsers.BABEL) }, + }), + test({ + code: 'import("..")', + languageOptions: { parser: require(parsers.BABEL) }, + }), test({ code: 'import("fs").then(function(fs) {})', - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), ], @@ -282,19 +288,19 @@ function runResolverTests(resolver: 'node' | 'webpack') { code: 'import("./")', output: 'import(".")', errors: ['Useless path segments for "./", should be "."'], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import("../")', output: 'import("..")', errors: ['Useless path segments for "../", should be ".."'], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import("./deep//a")', output: 'import("./deep/a")', errors: ['Useless path segments for "./deep//a", should be "./deep/a"'], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), ], }) diff --git a/test/rules/order.spec.ts b/test/rules/order.spec.ts index 73a9176a1..9d9c35faf 100644 --- a/test/rules/order.spec.ts +++ b/test/rules/order.spec.ts @@ -10,7 +10,7 @@ import rule from 'eslint-plugin-import-x/rules/order' const ruleTester = new TSESLintRuleTester() const flowRuleTester = new TSESLintRuleTester({ - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, parserOptions: { requireConfigFile: false, babelOptions: { @@ -219,14 +219,12 @@ ruleTester.run('order', rule, { var relParent3 = require('../'); var index = require('./'); `, - languageOptions: { parser: require(parsers.TS) }, }), test({ code: ` export import CreateSomething = _CreateSomething; `, - languageOptions: { parser: require(parsers.TS) }, }), // Adding unknown import types (e.g. using a resolver alias via babel) to the groups. test({ @@ -896,7 +894,7 @@ ruleTester.run('order', rule, { code: ` import blah = require('./blah'); import { hello } from './hello';`, - languageOptions: { parser: require(parsers.TS) }, + options: [ { alphabetize: { @@ -910,7 +908,7 @@ ruleTester.run('order', rule, { code: ` import blah = require('./blah'); import log = console.log;`, - languageOptions: { parser: require(parsers.TS) }, + options: [ { alphabetize: { @@ -924,7 +922,7 @@ ruleTester.run('order', rule, { code: ` import debug = console.debug; import log = console.log;`, - languageOptions: { parser: require(parsers.TS) }, + options: [ { alphabetize: { @@ -937,7 +935,7 @@ ruleTester.run('order', rule, { code: ` import log = console.log; import debug = console.debug;`, - languageOptions: { parser: require(parsers.TS) }, + options: [ { alphabetize: { @@ -953,7 +951,7 @@ ruleTester.run('order', rule, { export import a2 = a; } `, - languageOptions: { parser: require(parsers.TS) }, + options: [ { groups: ['external', 'index'], @@ -1725,7 +1723,7 @@ ruleTester.run('order', rule, { import bar = require("../foo/bar"); var fs = require('fs'); `, - languageOptions: { parser: require(parsers.TS) }, + errors: [ { message: '`fs` import should occur after import of `../foo/bar`', @@ -1741,7 +1739,7 @@ ruleTester.run('order', rule, { var fs = require('fs'); var async = require('async'); `, - languageOptions: { parser: require(parsers.TS) }, + errors: [ { message: '`fs` import should occur before import of `async`', @@ -1767,7 +1765,7 @@ ruleTester.run('order', rule, { alphabetize: { order: 'asc' }, }, ], - languageOptions: { parser: require(parsers.TS) }, + errors: [ { message: '`async` import should occur before import of `sync`', @@ -1779,7 +1777,7 @@ ruleTester.run('order', rule, { code: ` import log = console.log; import blah = require('./blah');`, - languageOptions: { parser: require(parsers.TS) }, + errors: [ { message: From ff5263a4842165916b37762ee072b6bd31a8260c Mon Sep 17 00:00:00 2001 From: SukkaW Date: Fri, 2 Aug 2024 11:32:16 +0800 Subject: [PATCH 10/36] test: migrate new test cases config --- test/rules/default.spec.ts | 28 +++++++++---------- test/rules/export.spec.ts | 2 +- test/rules/first.spec.ts | 2 +- test/rules/named.spec.ts | 2 +- test/rules/no-deprecated.spec.ts | 2 +- test/rules/no-duplicates.spec.ts | 2 +- test/rules/no-extraneous-dependencies.spec.ts | 2 +- test/rules/no-restricted-paths.spec.ts | 2 +- test/rules/order.spec.ts | 2 +- test/rules/prefer-default-export.spec.ts | 2 +- 10 files changed, 23 insertions(+), 23 deletions(-) diff --git a/test/rules/default.spec.ts b/test/rules/default.spec.ts index 46d36e16e..3dfb3ad9c 100644 --- a/test/rules/default.spec.ts +++ b/test/rules/default.spec.ts @@ -191,14 +191,14 @@ describe('TypeScript', () => { test({ code: `import foobar from "./typescript-default"`, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, }), test({ code: `import foobar from "./typescript-export-assign-default"`, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, }), @@ -206,7 +206,7 @@ describe('TypeScript', () => { code: `import foobar from "./typescript-export-assign-function"`, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, }), @@ -214,7 +214,7 @@ describe('TypeScript', () => { code: `import foobar from "./typescript-export-assign-mixed"`, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, }), @@ -222,7 +222,7 @@ describe('TypeScript', () => { code: `import foobar from "./typescript-export-assign-default-reexport"`, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, }), @@ -230,7 +230,7 @@ describe('TypeScript', () => { code: `import React from "./typescript-export-assign-default-namespace"`, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, parserOptions: { @@ -244,7 +244,7 @@ describe('TypeScript', () => { code: `import Foo from "./typescript-export-as-default-namespace"`, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, parserOptions: { @@ -258,7 +258,7 @@ describe('TypeScript', () => { code: `import Foo from "./typescript-export-react-test-renderer"`, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, parserOptions: { @@ -272,7 +272,7 @@ describe('TypeScript', () => { code: `import Foo from "./typescript-extended-config"`, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, parserOptions: { @@ -286,7 +286,7 @@ describe('TypeScript', () => { code: `import foobar from "./typescript-export-assign-property"`, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, }), @@ -297,7 +297,7 @@ describe('TypeScript', () => { code: `import foobar from "./typescript"`, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, errors: ['No default export found in imported module "./typescript".'], @@ -306,7 +306,7 @@ describe('TypeScript', () => { code: `import React from "./typescript-export-assign-default-namespace"`, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, errors: [ @@ -317,7 +317,7 @@ describe('TypeScript', () => { code: `import FooBar from "./typescript-export-as-default-namespace"`, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, errors: [ @@ -328,7 +328,7 @@ describe('TypeScript', () => { code: `import Foo from "./typescript-export-as-default-namespace"`, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, parserOptions: { diff --git a/test/rules/export.spec.ts b/test/rules/export.spec.ts index 7b24b5e9c..1e5c92931 100644 --- a/test/rules/export.spec.ts +++ b/test/rules/export.spec.ts @@ -160,7 +160,7 @@ describe('TypeScript', () => { const parserConfig = { parser, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, } diff --git a/test/rules/first.spec.ts b/test/rules/first.spec.ts index 9adfc5e26..064f1aef3 100644 --- a/test/rules/first.spec.ts +++ b/test/rules/first.spec.ts @@ -96,7 +96,7 @@ describe('TypeScript', () => { const parserConfig = { parser, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, } diff --git a/test/rules/named.spec.ts b/test/rules/named.spec.ts index 3a0ae4d10..9476296e3 100644 --- a/test/rules/named.spec.ts +++ b/test/rules/named.spec.ts @@ -422,7 +422,7 @@ describe('TypeScript', () => { const parser = parsers.TS const settings = { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, } diff --git a/test/rules/no-deprecated.spec.ts b/test/rules/no-deprecated.spec.ts index 78d667d9b..754855a2f 100644 --- a/test/rules/no-deprecated.spec.ts +++ b/test/rules/no-deprecated.spec.ts @@ -248,7 +248,7 @@ describe('TypeScript', () => { const parserConfig = { parser, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, } diff --git a/test/rules/no-duplicates.spec.ts b/test/rules/no-duplicates.spec.ts index a141bf5e8..a5d8c611a 100644 --- a/test/rules/no-duplicates.spec.ts +++ b/test/rules/no-duplicates.spec.ts @@ -669,7 +669,7 @@ describe('TypeScript', () => { const parserConfig = { parser, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, } diff --git a/test/rules/no-extraneous-dependencies.spec.ts b/test/rules/no-extraneous-dependencies.spec.ts index 8e03654a2..0eb8d88cd 100644 --- a/test/rules/no-extraneous-dependencies.spec.ts +++ b/test/rules/no-extraneous-dependencies.spec.ts @@ -542,7 +542,7 @@ describe('TypeScript', () => { const parserConfig = { parser, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': ['node', 'typescript'], }, } diff --git a/test/rules/no-restricted-paths.spec.ts b/test/rules/no-restricted-paths.spec.ts index d4c537c24..8f6211ed9 100644 --- a/test/rules/no-restricted-paths.spec.ts +++ b/test/rules/no-restricted-paths.spec.ts @@ -767,7 +767,7 @@ describe('Typescript', () => { const parser = parsers.TS const settings = { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, } ruleTester.run('no-restricted-paths', rule, { diff --git a/test/rules/order.spec.ts b/test/rules/order.spec.ts index 9d9c35faf..1429a9b90 100644 --- a/test/rules/order.spec.ts +++ b/test/rules/order.spec.ts @@ -3033,7 +3033,7 @@ describe('TypeScript', () => { const parserConfig = { parser, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, } diff --git a/test/rules/prefer-default-export.spec.ts b/test/rules/prefer-default-export.spec.ts index 81ba1a20a..d047a5ec1 100644 --- a/test/rules/prefer-default-export.spec.ts +++ b/test/rules/prefer-default-export.spec.ts @@ -391,7 +391,7 @@ describe('TypeScript', () => { const parserConfig = { parser, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, } From dc5d7f4cef3d9a20b626c4984047bb722facff16 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Fri, 2 Aug 2024 11:39:00 +0800 Subject: [PATCH 11/36] test: migrate new test cases config --- test/rules/default.spec.ts | 1 - test/rules/export.spec.ts | 1 - test/rules/extensions.spec.ts | 4 -- test/rules/max-dependencies.spec.ts | 8 ++-- test/rules/named.spec.ts | 18 ++++----- test/rules/no-restricted-paths.spec.ts | 36 +++++++++--------- test/rules/no-unresolved.spec.ts | 4 -- test/rules/no-unused-modules.spec.ts | 52 ++++++++++++-------------- test/rules/order.spec.ts | 16 ++++---- test/rules/unambiguous.spec.ts | 2 +- test/utils.ts | 20 ++++++---- 11 files changed, 76 insertions(+), 86 deletions(-) diff --git a/test/rules/default.spec.ts b/test/rules/default.spec.ts index 3dfb3ad9c..be1929db1 100644 --- a/test/rules/default.spec.ts +++ b/test/rules/default.spec.ts @@ -185,7 +185,6 @@ if (!CASE_SENSITIVE_FS) { } describe('TypeScript', () => { - const parser = parsers.TS ruleTester.run(`default`, rule, { valid: [ test({ diff --git a/test/rules/export.spec.ts b/test/rules/export.spec.ts index 1e5c92931..fcbd24eed 100644 --- a/test/rules/export.spec.ts +++ b/test/rules/export.spec.ts @@ -295,7 +295,6 @@ describe('TypeScript', () => { export * as A from './named-export-collision/a'; export * as B from './named-export-collision/b'; `, - parser, }), // Exports in ambient modules diff --git a/test/rules/extensions.spec.ts b/test/rules/extensions.spec.ts index cac47f799..c8a501466 100644 --- a/test/rules/extensions.spec.ts +++ b/test/rules/extensions.spec.ts @@ -670,7 +670,6 @@ describe('TypeScript', () => { 'always', { ts: 'never', tsx: 'never', js: 'never', jsx: 'never' }, ], - parser, }), test({ code: 'export type { MyType } from "./typescript-declare";', @@ -678,7 +677,6 @@ describe('TypeScript', () => { 'always', { ts: 'never', tsx: 'never', js: 'never', jsx: 'never' }, ], - parser, }), ], invalid: [ @@ -689,7 +687,6 @@ describe('TypeScript', () => { 'always', { ts: 'never', tsx: 'never', js: 'never', jsx: 'never' }, ], - parser, }), test({ code: 'export { MyType } from "./typescript-declare";', @@ -698,7 +695,6 @@ describe('TypeScript', () => { 'always', { ts: 'never', tsx: 'never', js: 'never', jsx: 'never' }, ], - parser, }), ], }) diff --git a/test/rules/max-dependencies.spec.ts b/test/rules/max-dependencies.spec.ts index db8d3cd3e..34143eca8 100644 --- a/test/rules/max-dependencies.spec.ts +++ b/test/rules/max-dependencies.spec.ts @@ -97,13 +97,11 @@ ruleTester.run('max-dependencies', rule, { }) describe('TypeScript', () => { - const parser = parsers.TS - ruleTester.run('max-dependencies', rule, { valid: [ test({ code: "import type { x } from './foo'; import { y } from './bar';", - parser, + options: [ { max: 1, @@ -115,7 +113,7 @@ describe('TypeScript', () => { invalid: [ test({ code: "import type { x } from './foo'; import type { y } from './bar'", - parser, + options: [ { max: 1, @@ -126,7 +124,7 @@ describe('TypeScript', () => { test({ code: "import type { x } from './foo'; import type { y } from './bar'; import type { z } from './baz'", - parser, + options: [ { max: 2, diff --git a/test/rules/named.spec.ts b/test/rules/named.spec.ts index 9476296e3..330dcb714 100644 --- a/test/rules/named.spec.ts +++ b/test/rules/named.spec.ts @@ -498,27 +498,27 @@ describe('TypeScript', () => { ...valid, test({ code: `import { MyType } from "./${source}"`, - parser, + settings, }), test({ code: `import { Foo } from "./${source}"`, - parser, + settings, }), test({ code: `import { Bar } from "./${source}"`, - parser, + settings, }), test({ code: `import { getFoo } from "./${source}"`, - parser, + settings, }), test({ code: `import { MyEnum } from "./${source}"`, - parser, + settings, }), test({ @@ -526,7 +526,7 @@ describe('TypeScript', () => { import { MyModule } from "./${source}" MyModule.ModuleFunction() `, - parser, + settings, }), test({ @@ -534,7 +534,7 @@ describe('TypeScript', () => { import { MyNamespace } from "./${source}" MyNamespace.NSModule.NSModuleFunction() `, - parser, + settings, }), ] @@ -542,7 +542,7 @@ describe('TypeScript', () => { invalid.push( test({ code: `import { MissingType } from "./${source}"`, - parser, + settings, errors: [ { @@ -553,7 +553,7 @@ describe('TypeScript', () => { }), test({ code: `import { NotExported } from "./${source}"`, - parser, + settings, errors: [ { diff --git a/test/rules/no-restricted-paths.spec.ts b/test/rules/no-restricted-paths.spec.ts index 8f6211ed9..c5b906b3f 100644 --- a/test/rules/no-restricted-paths.spec.ts +++ b/test/rules/no-restricted-paths.spec.ts @@ -785,7 +785,7 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), test({ @@ -801,7 +801,7 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), test({ @@ -817,7 +817,7 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), test({ @@ -833,7 +833,7 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), test({ @@ -850,7 +850,7 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), test({ @@ -867,7 +867,7 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), test({ @@ -884,7 +884,7 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), test({ @@ -901,14 +901,14 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), // no config test({ code: 'import type b from "../server/b.js"', parser, settings }), test({ code: 'import type * as b from "../server/b.js"', - parser, + settings, }), ], @@ -934,7 +934,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -958,7 +958,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -990,7 +990,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -1010,7 +1010,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -1034,7 +1034,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -1060,7 +1060,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -1085,7 +1085,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -1108,7 +1108,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -1133,7 +1133,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), ], diff --git a/test/rules/no-unresolved.spec.ts b/test/rules/no-unresolved.spec.ts index 3be544aa6..96594d734 100644 --- a/test/rules/no-unresolved.spec.ts +++ b/test/rules/no-unresolved.spec.ts @@ -533,23 +533,19 @@ describe('TypeScript', () => { valid: [ test({ code: 'import type { JSONSchema7Type } from "@types/json-schema";', - parser, }), test({ code: 'export type { JSONSchema7Type } from "@types/json-schema";', - parser, }), ], invalid: [ test({ code: 'import { JSONSchema7Type } from "@types/json-schema";', errors: ["Unable to resolve path to module '@types/json-schema'."], - parser, }), test({ code: 'export { JSONSchema7Type } from "@types/json-schema";', errors: ["Unable to resolve path to module '@types/json-schema'."], - parser, }), ], }) diff --git a/test/rules/no-unused-modules.spec.ts b/test/rules/no-unused-modules.spec.ts index b17b06fa6..dc33fa59f 100644 --- a/test/rules/no-unused-modules.spec.ts +++ b/test/rules/no-unused-modules.spec.ts @@ -1169,8 +1169,6 @@ describe('Avoid errors if re-export all from umd compiled library', () => { }) describe('TypeScript', () => { - const parser = parsers.TS - typescriptRuleTester.run('no-unused-modules', rule, { valid: [ test({ @@ -1185,31 +1183,31 @@ describe('TypeScript', () => { const a2: c = {}; const a3: d = {}; `, - parser, + filename: testFilePath('./no-unused-modules/typescript/file-ts-a.ts'), }), test({ options: unusedExportsTypescriptOptions, code: `export const b = 2;`, - parser, + filename: testFilePath('./no-unused-modules/typescript/file-ts-b.ts'), }), test({ options: unusedExportsTypescriptOptions, code: `export interface c {};`, - parser, + filename: testFilePath('./no-unused-modules/typescript/file-ts-c.ts'), }), test({ options: unusedExportsTypescriptOptions, code: `export type d = {};`, - parser, + filename: testFilePath('./no-unused-modules/typescript/file-ts-d.ts'), }), test({ options: unusedExportsTypescriptOptions, code: `export enum e { f };`, - parser, + filename: testFilePath('./no-unused-modules/typescript/file-ts-e.ts'), }), test({ @@ -1225,7 +1223,7 @@ describe('TypeScript', () => { const a3: d = {}; const a4: typeof e = undefined; `, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-a-import-type.ts', ), @@ -1233,7 +1231,7 @@ describe('TypeScript', () => { test({ options: unusedExportsTypescriptOptions, code: `export const b = 2;`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-b-used-as-type.ts', ), @@ -1241,7 +1239,7 @@ describe('TypeScript', () => { test({ options: unusedExportsTypescriptOptions, code: `export interface c {};`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-c-used-as-type.ts', ), @@ -1249,7 +1247,7 @@ describe('TypeScript', () => { test({ options: unusedExportsTypescriptOptions, code: `export type d = {};`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-d-used-as-type.ts', ), @@ -1257,7 +1255,7 @@ describe('TypeScript', () => { test({ options: unusedExportsTypescriptOptions, code: `export enum e { f };`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-e-used-as-type.ts', ), @@ -1266,19 +1264,19 @@ describe('TypeScript', () => { test({ options: unusedExportsTypescriptOptions, code: `export interface g {}`, - parser, + filename: testFilePath('./no-unused-modules/typescript/file-ts-g.ts'), }), test({ options: unusedExportsTypescriptOptions, code: `import {g} from './file-ts-g';`, - parser, + filename: testFilePath('./no-unused-modules/typescript/file-ts-f.ts'), }), test({ options: unusedExportsTypescriptOptions, code: `export interface g {}; /* used-as-type */`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-g-used-as-type.ts', ), @@ -1286,7 +1284,7 @@ describe('TypeScript', () => { test({ options: unusedExportsTypescriptOptions, code: `import type {g} from './file-ts-g';`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-f-import-type.ts', ), @@ -1296,7 +1294,7 @@ describe('TypeScript', () => { test({ options: unusedExportsTypescriptOptions, code: `export const b = 2;`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-b-unused.ts', ), @@ -1307,7 +1305,7 @@ describe('TypeScript', () => { test({ options: unusedExportsTypescriptOptions, code: `export interface c {};`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-c-unused.ts', ), @@ -1318,7 +1316,7 @@ describe('TypeScript', () => { test({ options: unusedExportsTypescriptOptions, code: `export type d = {};`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-d-unused.ts', ), @@ -1329,7 +1327,7 @@ describe('TypeScript', () => { test({ options: unusedExportsTypescriptOptions, code: `export enum e { f };`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-e-unused.ts', ), @@ -1342,15 +1340,13 @@ describe('TypeScript', () => { }) describe('ignoreUnusedTypeExports', () => { - const parser = parsers.TS - typescriptRuleTester.run('no-unused-modules', rule, { valid: [ // unused vars should not report test({ options: unusedExportsTypescriptIgnoreUnusedTypesOptions, code: `export interface c {};`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-c-unused.ts', ), @@ -1358,7 +1354,7 @@ describe('ignoreUnusedTypeExports', () => { test({ options: unusedExportsTypescriptIgnoreUnusedTypesOptions, code: `export type d = {};`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-d-unused.ts', ), @@ -1366,7 +1362,7 @@ describe('ignoreUnusedTypeExports', () => { test({ options: unusedExportsTypescriptIgnoreUnusedTypesOptions, code: `export enum e { f };`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-e-unused.ts', ), @@ -1375,7 +1371,7 @@ describe('ignoreUnusedTypeExports', () => { test({ options: unusedExportsTypescriptIgnoreUnusedTypesOptions, code: `export interface c {};`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-c-used-as-type.ts', ), @@ -1383,7 +1379,7 @@ describe('ignoreUnusedTypeExports', () => { test({ options: unusedExportsTypescriptIgnoreUnusedTypesOptions, code: `export type d = {};`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-d-used-as-type.ts', ), @@ -1391,7 +1387,7 @@ describe('ignoreUnusedTypeExports', () => { test({ options: unusedExportsTypescriptIgnoreUnusedTypesOptions, code: `export enum e { f };`, - parser, + filename: testFilePath( './no-unused-modules/typescript/file-ts-e-used-as-type.ts', ), diff --git a/test/rules/order.spec.ts b/test/rules/order.spec.ts index 1429a9b90..3fad737d5 100644 --- a/test/rules/order.spec.ts +++ b/test/rules/order.spec.ts @@ -10,13 +10,15 @@ import rule from 'eslint-plugin-import-x/rules/order' const ruleTester = new TSESLintRuleTester() const flowRuleTester = new TSESLintRuleTester({ - languageOptions: { parser: require(parsers.BABEL) }, - parserOptions: { - requireConfigFile: false, - babelOptions: { - configFile: false, - babelrc: false, - presets: ['@babel/flow'], + languageOptions: { + parser: require(parsers.BABEL), + parserOptions: { + requireConfigFile: false, + babelOptions: { + configFile: false, + babelrc: false, + presets: ['@babel/flow'], + }, }, }, }) diff --git a/test/rules/unambiguous.spec.ts b/test/rules/unambiguous.spec.ts index 1b473c1a5..86c9dfca1 100644 --- a/test/rules/unambiguous.spec.ts +++ b/test/rules/unambiguous.spec.ts @@ -55,8 +55,8 @@ ruleTester.run('unambiguous', rule, { }, { code: 'function x() {}; export * as y from "z"', - languageOptions: { parser: require(parsers.BABEL) }, languageOptions: { + parser: require(parsers.BABEL), parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, }, diff --git a/test/utils.ts b/test/utils.ts index ecab116bf..dfaa061c2 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -1,11 +1,13 @@ import path from 'node:path' -import type { TSESLint, TSESTree } from '@typescript-eslint/utils' +import type { TSESTree } from '@typescript-eslint/utils' import type { RuleTester } from 'eslint' import eslintPkg from 'eslint/package.json' import semver from 'semver' import typescriptPkg from 'typescript/package.json' +import { ValidTestCase as TSESLintValidTestCase, InvalidTestCase as TSESLintInvalidTestCase } from '@typescript-eslint/rule-tester'; + import type { PluginSettings, RuleContext } from 'eslint-plugin-import-x/types' // warms up the module cache. this import takes a while (>500ms) @@ -45,12 +47,12 @@ export function eslintVersionSatisfies(specifier: string) { } // eslint-disable-next-line @typescript-eslint/no-explicit-any -- simplify testing -export type ValidTestCase = TSESLint.ValidTestCase & { +export type ValidTestCase = TSESLintValidTestCase & { errors?: readonly InvalidTestCaseError[] | number } export type InvalidTestCase = // eslint-disable-next-line @typescript-eslint/no-explicit-any -- simplify testing - TSESLint.InvalidTestCase + TSESLintInvalidTestCase export function testVersion( specifier: string, @@ -82,11 +84,13 @@ export function test( return { filename: TEST_FILENAME, ...t, - parserOptions: { - sourceType: 'module', - ecmaVersion: 9, - ...t.parserOptions, - }, + languageOptions: { + parserOptions: { + sourceType: 'module', + ecmaVersion: 9, + ...t.languageOptions, + }, + } } } From 1216dd7969567bea7fe8df5507b23e933c2dc18c Mon Sep 17 00:00:00 2001 From: SukkaW Date: Wed, 7 Aug 2024 23:19:16 +0800 Subject: [PATCH 12/36] test: migrate new test cases --- src/config/react.ts | 8 +- src/types.ts | 2 +- test/cli.spec.ts | 1 + .../{CASEYKASEM2.js => CaseyKasem.js} | 0 test/fixtures/deep/cache-2.js | 2 - test/rules/default.spec.ts | 97 +++++++++++-------- test/rules/export.spec.ts | 16 +-- test/rules/named.spec.ts | 54 ++++++----- test/rules/namespace.spec.ts | 76 +++++++++------ test/rules/no-amd.spec.ts | 4 +- test/rules/no-commonjs.spec.ts | 10 +- test/rules/no-dynamic-require.spec.ts | 84 ++++++++++------ test/rules/no-import-module-exports.spec.ts | 12 ++- test/rules/no-named-default.spec.ts | 8 +- test/rules/no-unresolved.spec.ts | 8 +- test/rules/no-unused-modules.spec.ts | 6 +- test/rules/prefer-default-export.spec.ts | 4 +- test/utils.ts | 2 + test/utils/export-map.spec.ts | 4 +- 19 files changed, 244 insertions(+), 154 deletions(-) rename test/fixtures/{CASEYKASEM2.js => CaseyKasem.js} (100%) delete mode 100644 test/fixtures/deep/cache-2.js diff --git a/src/config/react.ts b/src/config/react.ts index b28a97407..58b8e7997 100644 --- a/src/config/react.ts +++ b/src/config/react.ts @@ -11,9 +11,11 @@ export = { settings: { 'import-x/extensions': ['.js', '.jsx'], }, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, } satisfies PluginConfig diff --git a/src/types.ts b/src/types.ts index 662bfa6aa..34dd04fb3 100644 --- a/src/types.ts +++ b/src/types.ts @@ -68,7 +68,7 @@ export type PluginConfig = { plugins?: [PluginName] settings?: PluginSettings rules?: Record<`${PluginName}/${string}`, TSESLint.Linter.RuleEntry> -} & TSESLint.Linter.Config +} & TSESLint.Linter.ConfigType export type RuleContext< TMessageIds extends string = string, diff --git a/test/cli.spec.ts b/test/cli.spec.ts index 7ae064423..e6692b554 100644 --- a/test/cli.spec.ts +++ b/test/cli.spec.ts @@ -58,6 +58,7 @@ describe('CLI regression tests', () => { nodeType: results[0].messages[0].nodeType, // we don't care about this one ruleId: 'json/*', severity: 2, + // @ts-expect-error - legacy types source: results[0].messages[0].source, // NewLine-characters might differ depending on git-settings }, ], diff --git a/test/fixtures/CASEYKASEM2.js b/test/fixtures/CaseyKasem.js similarity index 100% rename from test/fixtures/CASEYKASEM2.js rename to test/fixtures/CaseyKasem.js diff --git a/test/fixtures/deep/cache-2.js b/test/fixtures/deep/cache-2.js deleted file mode 100644 index 7b1586ca9..000000000 --- a/test/fixtures/deep/cache-2.js +++ /dev/null @@ -1,2 +0,0 @@ -import * as c from './c' -export { c } diff --git a/test/rules/default.spec.ts b/test/rules/default.spec.ts index be1929db1..38590f75b 100644 --- a/test/rules/default.spec.ts +++ b/test/rules/default.spec.ts @@ -58,11 +58,13 @@ ruleTester.run('default', rule, { // jsx test({ code: 'import MyCoolComponent from "./jsx/MyCoolComponent.jsx"', - parserOptions: { - sourceType: 'module', - ecmaVersion: 6, - ecmaFeatures: { jsx: true }, - }, + languageOptions: { + parserOptions: { + sourceType: 'module', + ecmaVersion: 6, + ecmaFeatures: { jsx: true }, + }, + } }), // #54: import of named export default @@ -72,9 +74,11 @@ ruleTester.run('default', rule, { test({ code: 'import connectedApp from "./redux"' }), test({ code: 'import App from "./jsx/App"', - parserOptions: { - ecmaFeatures: { jsx: true, modules: true }, - }, + languageOptions: { + parserOptions: { + ecmaFeatures: { jsx: true, modules: true }, + }, + } }), // from no-errors @@ -105,9 +109,11 @@ ruleTester.run('default', rule, { test({ code: 'export { "default" as bar } from "./bar"', - parserOptions: { - ecmaVersion: 2022, - }, + languageOptions: { + parserOptions: { + ecmaVersion: 2022, + }, + } }), ...SYNTAX_CASES, @@ -232,12 +238,14 @@ describe('TypeScript', () => { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, - parserOptions: { - tsconfigRootDir: path.resolve( - __dirname, - '../fixtures/typescript-export-assign-default-namespace/', - ), - }, + languageOptions: { + parserOptions: { + tsconfigRootDir: path.resolve( + __dirname, + '../fixtures/typescript-export-assign-default-namespace/', + ), + }, + } }), test({ code: `import Foo from "./typescript-export-as-default-namespace"`, @@ -246,12 +254,15 @@ describe('TypeScript', () => { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, - parserOptions: { - tsconfigRootDir: path.resolve( - __dirname, - '../fixtures/typescript-export-as-default-namespace/', - ), - }, + + languageOptions: { + parserOptions: { + tsconfigRootDir: path.resolve( + __dirname, + '../fixtures/typescript-export-as-default-namespace/', + ), + }, + } }), test({ code: `import Foo from "./typescript-export-react-test-renderer"`, @@ -260,12 +271,14 @@ describe('TypeScript', () => { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, - parserOptions: { - tsconfigRootDir: path.resolve( - __dirname, - '../fixtures/typescript-export-react-test-renderer/', - ), - }, + languageOptions: { + parserOptions: { + tsconfigRootDir: path.resolve( + __dirname, + '../fixtures/typescript-export-react-test-renderer/', + ), + }, + } }), test({ code: `import Foo from "./typescript-extended-config"`, @@ -274,12 +287,14 @@ describe('TypeScript', () => { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, - parserOptions: { - tsconfigRootDir: path.resolve( - __dirname, - '../fixtures/typescript-extended-config/', - ), - }, + languageOptions: { + parserOptions: { + tsconfigRootDir: path.resolve( + __dirname, + '../fixtures/typescript-extended-config/', + ), + }, + } }), test({ code: `import foobar from "./typescript-export-assign-property"`, @@ -330,11 +345,13 @@ describe('TypeScript', () => { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, - parserOptions: { - tsconfigRootDir: path.resolve( - __dirname, - '../fixtures/typescript-no-compiler-options/', - ), + languageOptions: { + parserOptions: { + tsconfigRootDir: path.resolve( + __dirname, + '../fixtures/typescript-no-compiler-options/', + ), + }, }, errors: [ { diff --git a/test/rules/export.spec.ts b/test/rules/export.spec.ts index fcbd24eed..216f3fa9c 100644 --- a/test/rules/export.spec.ts +++ b/test/rules/export.spec.ts @@ -39,9 +39,11 @@ ruleTester.run('export', rule, { export * as A from './named-export-collision/a'; export * as B from './named-export-collision/b'; `, - parserOptions: { - ecmaVersion: 2020, - }, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, + } }), { @@ -147,9 +149,11 @@ ruleTester.run('export', rule, { "Multiple exports of name 'foo'.", "Multiple exports of name 'foo'.", ], - parserOptions: { - ecmaVersion: 2022, - }, + languageOptions: { + parserOptions: { + ecmaVersion: 2022, + }, + } }), ], }) diff --git a/test/rules/named.spec.ts b/test/rules/named.spec.ts index 330dcb714..a32f14e6a 100644 --- a/test/rules/named.spec.ts +++ b/test/rules/named.spec.ts @@ -199,10 +199,12 @@ ruleTester.run('named', rule, { test({ code: `import { ExtfieldModel, Extfield2Model } from './models';`, filename: testFilePath('./export-star/downstream.js'), - parserOptions: { - sourceType: 'module', - ecmaVersion: 2020, - }, + languageOptions: { + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + }, + } }), test({ @@ -419,8 +421,6 @@ ruleTester.run('named (export *)', rule, { }) describe('TypeScript', () => { - const parser = parsers.TS - const settings = { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -429,12 +429,14 @@ describe('TypeScript', () => { let valid = [ test({ code: `import x from './typescript-export-assign-object'`, - parser, - parserOptions: { - tsconfigRootDir: path.resolve( - __dirname, - '../fixtures/typescript-export-assign-object/', - ), + languageOptions: { + parser: require(parsers.TS), + parserOptions: { + tsconfigRootDir: path.resolve( + __dirname, + '../fixtures/typescript-export-assign-object/', + ), + }, }, settings, }), @@ -453,12 +455,14 @@ describe('TypeScript', () => { // }), test({ code: `import { NotExported } from './typescript-export-assign-object'`, - parser, - parserOptions: { - tsconfigRootDir: path.resolve( - __dirname, - '../fixtures/typescript-export-assign-object/', - ), + parser: require(parsers.TS), + languageOptions: { + parserOptions: { + tsconfigRootDir: path.resolve( + __dirname, + '../fixtures/typescript-export-assign-object/', + ), + }, }, settings, errors: [ @@ -471,12 +475,14 @@ describe('TypeScript', () => { test({ // `export =` syntax creates a default export only code: `import { FooBar } from './typescript-export-assign-object'`, - parser, - parserOptions: { - tsconfigRootDir: path.resolve( - __dirname, - '../fixtures/typescript-export-assign-object/', - ), + parser: require(parsers.TS), + languageOptions: { + parserOptions: { + tsconfigRootDir: path.resolve( + __dirname, + '../fixtures/typescript-export-assign-object/', + ), + }, }, settings, errors: [ diff --git a/test/rules/namespace.spec.ts b/test/rules/namespace.spec.ts index 08f4b1b3c..808a4ab9e 100644 --- a/test/rules/namespace.spec.ts +++ b/test/rules/namespace.spec.ts @@ -32,11 +32,13 @@ const valid = [ }), test({ code: "import * as elements from './jsx';", - parserOptions: { - sourceType: 'module', - ecmaFeatures: { jsx: true }, - ecmaVersion: 2015, - }, + languageOptions: { + parserOptions: { + sourceType: 'module', + ecmaFeatures: { jsx: true }, + ecmaVersion: 2015, + }, + } }), // import re-exported jsx files, where jsx file exports a string test({ @@ -60,11 +62,13 @@ const valid = [ settings: { 'import-x/extensions': ['.js', '.jsx'], }, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, - }, + } }), test({ code: "import * as foo from './common';" }), @@ -150,9 +154,11 @@ const valid = [ // #656: should handle object-rest properties test({ code: `import * as names from './named-exports'; const {a, b, ...rest} = names;`, - parserOptions: { - ecmaVersion: 2018, - }, + languageOptions: { + parserOptions: { + ecmaVersion: 2018, + }, + } }), test({ code: `import * as names from './named-exports'; const {a, b, ...rest} = names;`, @@ -167,11 +173,13 @@ const valid = [ // JSX test({ code: 'import * as Names from "./named-exports"; const Foo = ', - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, - }, + } }), // Typescript @@ -231,34 +239,38 @@ const valid = [ console.log(middle.myName); `, filename: testFilePath('export-star-2/downstream.js'), - parserOptions: { - ecmaVersion: 2020, - }, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, + } }), test({ code: "import * as names from './default-export-string';", - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 }, } }), test({ code: "import * as names from './default-export-string'; console.log(names.default)", - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 }, } }), test({ code: "import * as names from './default-export-namespace-string';", - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parserOptions: { ecmaVersion: 2022 }, + } }), test({ code: "import * as names from './default-export-namespace-string'; console.log(names.default)", - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 }, } }), test({ code: `import { "b" as b } from "./deep/a"; console.log(b.c.d.e)`, - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 }, } }), test({ code: `import { "b" as b } from "./deep/a"; var {c:{d:{e}}} = b`, - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 }, } }), ] @@ -373,22 +385,24 @@ const invalid = [ test({ code: 'import * as Names from "./named-exports"; const Foo = ', errors: [error('e', 'Names')], - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, - }, + } }), test({ code: `import { "b" as b } from "./deep/a"; console.log(b.e)`, errors: ["'e' not found in imported namespace 'b'."], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 }, } }), test({ code: `import { "b" as b } from "./deep/a"; console.log(b.c.e)`, errors: ["'e' not found in deeply imported namespace 'b.c'."], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 }, } }), ] diff --git a/test/rules/no-amd.spec.ts b/test/rules/no-amd.spec.ts index 57f86e563..eb250d340 100644 --- a/test/rules/no-amd.spec.ts +++ b/test/rules/no-amd.spec.ts @@ -3,7 +3,9 @@ import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester import rule from 'eslint-plugin-import-x/rules/no-amd' const ruleTester = new TSESLintRuleTester({ - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + } }) ruleTester.run('no-amd', rule, { diff --git a/test/rules/no-commonjs.spec.ts b/test/rules/no-commonjs.spec.ts index 7a7eae883..a8b7a89b0 100644 --- a/test/rules/no-commonjs.spec.ts +++ b/test/rules/no-commonjs.spec.ts @@ -6,10 +6,12 @@ const EXPORT = 'export' const IMPORT = 'import' const ruleTester = new TSESLintRuleTester({ - parserOptions: { - ecmaVersion: 2015, - sourceType: 'module', - }, + languageOptions: { + parserOptions: { + ecmaVersion: 2015, + sourceType: 'module', + }, + } }) ruleTester.run('no-commonjs', rule, { diff --git a/test/rules/no-dynamic-require.spec.ts b/test/rules/no-dynamic-require.spec.ts index d9c9b7b4c..845d3d46e 100644 --- a/test/rules/no-dynamic-require.spec.ts +++ b/test/rules/no-dynamic-require.spec.ts @@ -38,80 +38,100 @@ ruleTester.run('no-dynamic-require', rule, { code: 'import("foo")', options: [{ esmodule: true }], parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'import(`foo`)', options: [{ esmodule: true }], parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'import("./foo")', options: [{ esmodule: true }], parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'import("@scope/foo")', options: [{ esmodule: true }], parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'var foo = import("foo")', options: [{ esmodule: true }], parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'var foo = import(`foo`)', options: [{ esmodule: true }], parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'var foo = import("./foo")', options: [{ esmodule: true }], parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'var foo = import("@scope/foo")', options: [{ esmodule: true }], parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'import("../" + name)', errors: [dynamicImportError], parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'import(`../${name}`)', errors: [dynamicImportError], parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), ] @@ -150,8 +170,10 @@ ruleTester.run('no-dynamic-require', rule, { errors: [dynamicImportError], options: [{ esmodule: true }], parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ @@ -159,8 +181,10 @@ ruleTester.run('no-dynamic-require', rule, { errors: [dynamicImportError], options: [{ esmodule: true }], parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ @@ -168,8 +192,10 @@ ruleTester.run('no-dynamic-require', rule, { errors: [dynamicImportError], options: [{ esmodule: true }], parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ @@ -177,8 +203,10 @@ ruleTester.run('no-dynamic-require', rule, { errors: [dynamicImportError], options: [{ esmodule: true }], parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), ] diff --git a/test/rules/no-import-module-exports.spec.ts b/test/rules/no-import-module-exports.spec.ts index 8a3d25fc9..8650d332f 100644 --- a/test/rules/no-import-module-exports.spec.ts +++ b/test/rules/no-import-module-exports.spec.ts @@ -7,7 +7,9 @@ import { test } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-import-module-exports' const ruleTester = new TSESLintRuleTester({ - parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + } }) const error = { @@ -123,9 +125,11 @@ ruleTester.run('no-import-module-exports', rule, { }); }; `, - parserOptions: { - ecmaVersion: 2020, - }, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, + } }), ], invalid: [ diff --git a/test/rules/no-named-default.spec.ts b/test/rules/no-named-default.spec.ts index 261b676b9..740809abe 100644 --- a/test/rules/no-named-default.spec.ts +++ b/test/rules/no-named-default.spec.ts @@ -60,9 +60,11 @@ ruleTester.run('no-named-default', rule, { type: 'Identifier', }, ], - parserOptions: { - ecmaVersion: 2022, - }, + languageOptions: { + parserOptions: { + ecmaVersion: 2022, + }, + } }), ], }) diff --git a/test/rules/no-unresolved.spec.ts b/test/rules/no-unresolved.spec.ts index 96594d734..156639da3 100644 --- a/test/rules/no-unresolved.spec.ts +++ b/test/rules/no-unresolved.spec.ts @@ -40,7 +40,9 @@ function runResolverTests(resolver: 'node' | 'webpack') { // check with eslint parser rest({ code: "import('fs');", - parserOptions: { ecmaVersion: 2021 }, + languageOptions: { + parserOptions: { ecmaVersion: 2021 }, + } }), rest({ code: 'import * as foo from "a"' }), @@ -197,7 +199,9 @@ function runResolverTests(resolver: 'node' | 'webpack') { type: 'Literal', }, ], - parserOptions: { ecmaVersion: 2021 }, + languageOptions: { + parserOptions: { ecmaVersion: 2021 }, + } }), // export symmetry proposal diff --git a/test/rules/no-unused-modules.spec.ts b/test/rules/no-unused-modules.spec.ts index dc33fa59f..4d6f8d6ab 100644 --- a/test/rules/no-unused-modules.spec.ts +++ b/test/rules/no-unused-modules.spec.ts @@ -1494,7 +1494,7 @@ describe('support ES2022 Arbitrary module namespace identifier names', () => { test({ options: unusedExportsOptions, code: `import { "foo" as foo } from "./arbitrary-module-namespace-identifier-name-a"`, - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 }, }, filename: testFilePath( './no-unused-modules/arbitrary-module-namespace-identifier-name-b.js', ), @@ -1502,7 +1502,7 @@ describe('support ES2022 Arbitrary module namespace identifier names', () => { test({ options: unusedExportsOptions, code: 'const foo = 333;\nexport { foo as "foo" }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 }, }, filename: testFilePath( './no-unused-modules/arbitrary-module-namespace-identifier-name-a.js', ), @@ -1512,7 +1512,7 @@ describe('support ES2022 Arbitrary module namespace identifier names', () => { test({ options: unusedExportsOptions, code: 'const foo = 333\nexport { foo as "foo" }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 }, }, filename: testFilePath( './no-unused-modules/arbitrary-module-namespace-identifier-name-c.js', ), diff --git a/test/rules/prefer-default-export.spec.ts b/test/rules/prefer-default-export.spec.ts index d047a5ec1..072119c68 100644 --- a/test/rules/prefer-default-export.spec.ts +++ b/test/rules/prefer-default-export.spec.ts @@ -389,7 +389,9 @@ ruleTester.run('prefer-default-export', rule, { describe('TypeScript', () => { for (const parser of getNonDefaultParsers()) { const parserConfig = { - parser, + languageOptions: { + parser: require(parser), + }, settings: { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, diff --git a/test/utils.ts b/test/utils.ts index dfaa061c2..6abb1ad65 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -49,6 +49,7 @@ export function eslintVersionSatisfies(specifier: string) { // eslint-disable-next-line @typescript-eslint/no-explicit-any -- simplify testing export type ValidTestCase = TSESLintValidTestCase & { errors?: readonly InvalidTestCaseError[] | number + parserOptions?: never } export type InvalidTestCase = // eslint-disable-next-line @typescript-eslint/no-explicit-any -- simplify testing @@ -80,6 +81,7 @@ export function test( if (arguments.length !== 1) { throw new SyntaxError('`test` requires exactly one object argument') } + // @ts-expect-error -- simplify testing return { filename: TEST_FILENAME, diff --git a/test/utils/export-map.spec.ts b/test/utils/export-map.spec.ts index 96c26c201..7ad26266b 100644 --- a/test/utils/export-map.spec.ts +++ b/test/utils/export-map.spec.ts @@ -251,7 +251,9 @@ describe('ExportMap', () => { describe('exported static namespaces', () => { const espreeContext = { parserPath: 'espree', - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, settings: {}, } as ChildContext From 42ff768bd90b23967d06569cc4dcaa39ab097bc4 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Wed, 7 Aug 2024 23:49:42 +0800 Subject: [PATCH 13/36] test: migrate new test cases --- test/cli.spec.ts | 5 +- test/rules/dynamic-import-chunkname.spec.ts | 129 +++++++++--------- test/rules/export.spec.ts | 3 - test/rules/extensions.spec.ts | 4 +- test/rules/first.spec.ts | 7 +- test/rules/named.spec.ts | 3 - test/rules/namespace.spec.ts | 24 ++-- test/rules/no-deprecated.spec.ts | 5 +- test/rules/no-duplicates.spec.ts | 3 - test/rules/no-dynamic-require.spec.ts | 42 +++--- test/rules/no-empty-named-blocks.spec.ts | 9 +- test/rules/no-extraneous-dependencies.spec.ts | 3 - test/rules/no-restricted-paths.spec.ts | 4 +- test/rules/no-unresolved.spec.ts | 3 +- test/rules/order.spec.ts | 72 +++++----- test/rules/prefer-default-export.spec.ts | 2 +- test/utils.ts | 7 +- 17 files changed, 155 insertions(+), 170 deletions(-) diff --git a/test/cli.spec.ts b/test/cli.spec.ts index e6692b554..101dfc2be 100644 --- a/test/cli.spec.ts +++ b/test/cli.spec.ts @@ -14,9 +14,8 @@ describe('CLI regression tests', () => { describe('issue #210', () => { it("doesn't throw an error on gratuitous, erroneous self-reference", () => { const eslint = new ESLint({ - useEslintrc: false, overrideConfigFile: './test/fixtures/issue210.config.js', - rulePaths: ['./src/rules'], + // rulePaths: ['./src/rules'], overrideConfig: { rules: { named: 2, @@ -35,9 +34,7 @@ describe('CLI regression tests', () => { it('throws an error on invalid JSON', async () => { const invalidJSON = './test/fixtures/just-json-files/invalid.json' const eslint = new ESLint({ - useEslintrc: false, overrideConfigFile: './test/fixtures/just-json-files/.eslintrc.json', - rulePaths: ['./src/rules'], ignore: false, plugins: { // @ts-expect-error - incompatible types diff --git a/test/rules/dynamic-import-chunkname.spec.ts b/test/rules/dynamic-import-chunkname.spec.ts index fd977587a..573bdbf50 100644 --- a/test/rules/dynamic-import-chunkname.spec.ts +++ b/test/rules/dynamic-import-chunkname.spec.ts @@ -960,7 +960,6 @@ ruleTester.run('dynamic-import-chunkname', rule, { }) describe('TypeScript', () => { - const typescriptParser = require(parsers.TS) const nodeType = TSESTree.AST_NODE_TYPES.ImportExpression ruleTester.run('dynamic-import-chunkname', rule, { @@ -968,7 +967,7 @@ describe('TypeScript', () => { { code: `import('test')`, options: allowEmptyOptions, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -976,7 +975,7 @@ describe('TypeScript', () => { 'test' )`, options: allowEmptyOptions, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -984,7 +983,7 @@ describe('TypeScript', () => { 'test' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -992,7 +991,7 @@ describe('TypeScript', () => { "test" )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1000,7 +999,7 @@ describe('TypeScript', () => { "test" )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1008,7 +1007,7 @@ describe('TypeScript', () => { 'test' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1016,7 +1015,7 @@ describe('TypeScript', () => { 'test' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1024,7 +1023,7 @@ describe('TypeScript', () => { 'test' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1032,7 +1031,7 @@ describe('TypeScript', () => { 'test' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1041,7 +1040,7 @@ describe('TypeScript', () => { 'test' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1050,7 +1049,7 @@ describe('TypeScript', () => { 'test' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1059,7 +1058,7 @@ describe('TypeScript', () => { 'test' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1068,7 +1067,7 @@ describe('TypeScript', () => { 'test' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1076,7 +1075,7 @@ describe('TypeScript', () => { 'someModule' )`, options: pickyCommentOptions, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1084,7 +1083,7 @@ describe('TypeScript', () => { 'test' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1092,7 +1091,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1100,7 +1099,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1108,7 +1107,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1116,7 +1115,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1125,7 +1124,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1133,7 +1132,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1142,7 +1141,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1150,7 +1149,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1159,7 +1158,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1167,7 +1166,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1176,7 +1175,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1184,7 +1183,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1193,7 +1192,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1201,7 +1200,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1210,7 +1209,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1219,7 +1218,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1228,7 +1227,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1236,7 +1235,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1245,7 +1244,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1253,7 +1252,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, { code: `import( @@ -1268,7 +1267,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + }, ], invalid: [ @@ -1278,7 +1277,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1290,7 +1289,7 @@ describe('TypeScript', () => { { code: "import('test')", options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1305,7 +1304,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1320,7 +1319,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1335,7 +1334,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1350,7 +1349,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1365,7 +1364,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1380,7 +1379,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1395,7 +1394,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1410,7 +1409,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1425,7 +1424,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1441,7 +1440,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1456,7 +1455,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1471,7 +1470,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1486,7 +1485,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1501,7 +1500,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1516,7 +1515,7 @@ describe('TypeScript', () => { 'someModule' )`, options: pickyCommentOptions, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1531,7 +1530,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1546,7 +1545,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1561,7 +1560,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1576,7 +1575,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1591,7 +1590,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1606,7 +1605,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1621,7 +1620,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1636,7 +1635,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1651,7 +1650,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1666,7 +1665,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { @@ -1681,7 +1680,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - languageOptions: { parser: typescriptParser }, + output: null, errors: [ { diff --git a/test/rules/export.spec.ts b/test/rules/export.spec.ts index 216f3fa9c..046397a3c 100644 --- a/test/rules/export.spec.ts +++ b/test/rules/export.spec.ts @@ -159,10 +159,7 @@ ruleTester.run('export', rule, { }) describe('TypeScript', () => { - const parser = parsers.TS - const parserConfig = { - parser, settings: { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, diff --git a/test/rules/extensions.spec.ts b/test/rules/extensions.spec.ts index c8a501466..f8896c421 100644 --- a/test/rules/extensions.spec.ts +++ b/test/rules/extensions.spec.ts @@ -660,9 +660,7 @@ ruleTester.run('extensions', rule, { }) describe('TypeScript', () => { - const parser = parsers.TS - - ruleTester.run(`${parser}: extensions ignore type-only`, rule, { + ruleTester.run(`${parsers.TS}: extensions ignore type-only`, rule, { valid: [ test({ code: 'import type T from "./typescript-declare";', diff --git a/test/rules/first.spec.ts b/test/rules/first.spec.ts index 064f1aef3..f4aff38e8 100644 --- a/test/rules/first.spec.ts +++ b/test/rules/first.spec.ts @@ -27,7 +27,9 @@ ruleTester.run('first', rule, { test({ // issue #2210 code: fs.readFileSync(testFilePath('component.html'), 'utf8'), - parser: require.resolve('@angular-eslint/template-parser'), + languageOptions: { + parser: require('@angular-eslint/template-parser'), + } }), ], invalid: [ @@ -91,10 +93,7 @@ ruleTester.run('first', rule, { }) describe('TypeScript', () => { - const parser = parsers.TS - const parserConfig = { - parser, settings: { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, diff --git a/test/rules/named.spec.ts b/test/rules/named.spec.ts index a32f14e6a..f38b031f2 100644 --- a/test/rules/named.spec.ts +++ b/test/rules/named.spec.ts @@ -430,7 +430,6 @@ describe('TypeScript', () => { test({ code: `import x from './typescript-export-assign-object'`, languageOptions: { - parser: require(parsers.TS), parserOptions: { tsconfigRootDir: path.resolve( __dirname, @@ -455,7 +454,6 @@ describe('TypeScript', () => { // }), test({ code: `import { NotExported } from './typescript-export-assign-object'`, - parser: require(parsers.TS), languageOptions: { parserOptions: { tsconfigRootDir: path.resolve( @@ -475,7 +473,6 @@ describe('TypeScript', () => { test({ // `export =` syntax creates a default export only code: `import { FooBar } from './typescript-export-assign-object'`, - parser: require(parsers.TS), languageOptions: { parserOptions: { tsconfigRootDir: path.resolve( diff --git a/test/rules/namespace.spec.ts b/test/rules/namespace.spec.ts index 808a4ab9e..83c88f26f 100644 --- a/test/rules/namespace.spec.ts +++ b/test/rules/namespace.spec.ts @@ -413,60 +413,60 @@ for (const [folder, parser] of [['deep'], ['deep-es7', parsers.BABEL]]) { // close over params valid.push( test({ - parser, + parser: require(parser), code: `import * as a from "./${folder}/a"; console.log(a.b.c.d.e)`, }), test({ - parser, + parser: require(parser), code: `import { b } from "./${folder}/a"; console.log(b.c.d.e)`, }), test({ - parser, + parser: require(parser), code: `import * as a from "./${folder}/a"; console.log(a.b.c.d.e.f)`, }), test({ - parser, + parser: require(parser), code: `import * as a from "./${folder}/a"; var {b:{c:{d:{e}}}} = a`, }), test({ - parser, + parser: require(parser), code: `import { b } from "./${folder}/a"; var {c:{d:{e}}} = b`, }), // deep namespaces should include explicitly exported defaults test({ - parser, + parser: require(parser), code: `import * as a from "./${folder}/a"; console.log(a.b.default)`, }), ) invalid.push( test({ - parser, + parser: require(parser), code: `import * as a from "./${folder}/a"; console.log(a.b.e)`, errors: ["'e' not found in deeply imported namespace 'a.b'."], }), test({ - parser, + parser: require(parser), code: `import { b } from "./${folder}/a"; console.log(b.e)`, errors: ["'e' not found in imported namespace 'b'."], }), test({ - parser, + parser: require(parser), code: `import * as a from "./${folder}/a"; console.log(a.b.c.e)`, errors: ["'e' not found in deeply imported namespace 'a.b.c'."], }), test({ - parser, + parser: require(parser), code: `import { b } from "./${folder}/a"; console.log(b.c.e)`, errors: ["'e' not found in deeply imported namespace 'b.c'."], }), test({ - parser, + parser: require(parser), code: `import * as a from "./${folder}/a"; var {b:{ e }} = a`, errors: ["'e' not found in deeply imported namespace 'a.b'."], }), test({ - parser, + parser: require(parser), code: `import * as a from "./${folder}/a"; var {b:{c:{ e }}} = a`, errors: ["'e' not found in deeply imported namespace 'a.b.c'."], }), diff --git a/test/rules/no-deprecated.spec.ts b/test/rules/no-deprecated.spec.ts index 754855a2f..2ccea178a 100644 --- a/test/rules/no-deprecated.spec.ts +++ b/test/rules/no-deprecated.spec.ts @@ -243,17 +243,14 @@ ruleTester.run('no-deprecated: hoisting', rule, { }) describe('TypeScript', () => { - const parser = parsers.TS - const parserConfig = { - parser, settings: { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, } - ruleTester.run(parser, rule, { + ruleTester.run(parsers.TS, rule, { valid: [ test({ code: "import * as hasDeprecated from './ts-deprecated.ts'", diff --git a/test/rules/no-duplicates.spec.ts b/test/rules/no-duplicates.spec.ts index a5d8c611a..4e1e712fd 100644 --- a/test/rules/no-duplicates.spec.ts +++ b/test/rules/no-duplicates.spec.ts @@ -664,10 +664,7 @@ export default TestComponent; }) describe('TypeScript', () => { - const parser = parsers.TS - const parserConfig = { - parser, settings: { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, diff --git a/test/rules/no-dynamic-require.spec.ts b/test/rules/no-dynamic-require.spec.ts index 845d3d46e..93b8f373e 100644 --- a/test/rules/no-dynamic-require.spec.ts +++ b/test/rules/no-dynamic-require.spec.ts @@ -30,15 +30,18 @@ ruleTester.run('no-dynamic-require', rule, { test({ code: 'var foo = require("@scope/foo")' }), //dynamic import - ...[parsers.ESPREE, parsers.BABEL].flatMap(parser => { + ...[parsers.ESPREE, parsers.BABEL].flatMap($parser => { const _test = (testObj: T) => - parser === parsers.ESPREE ? testObj : test(testObj) + $parser === parsers.ESPREE ? testObj : test(testObj) + + const parser = require($parser) + return [ _test({ code: 'import("foo")', options: [{ esmodule: true }], - parser, languageOptions: { + parser, parserOptions: { ecmaVersion: 2020, }, @@ -47,8 +50,8 @@ ruleTester.run('no-dynamic-require', rule, { _test({ code: 'import(`foo`)', options: [{ esmodule: true }], - parser, languageOptions: { + parser, parserOptions: { ecmaVersion: 2020, }, @@ -57,8 +60,8 @@ ruleTester.run('no-dynamic-require', rule, { _test({ code: 'import("./foo")', options: [{ esmodule: true }], - parser, languageOptions: { + parser, parserOptions: { ecmaVersion: 2020, }, @@ -67,8 +70,8 @@ ruleTester.run('no-dynamic-require', rule, { _test({ code: 'import("@scope/foo")', options: [{ esmodule: true }], - parser, languageOptions: { + parser, parserOptions: { ecmaVersion: 2020, }, @@ -77,8 +80,8 @@ ruleTester.run('no-dynamic-require', rule, { _test({ code: 'var foo = import("foo")', options: [{ esmodule: true }], - parser, languageOptions: { + parser, parserOptions: { ecmaVersion: 2020, }, @@ -87,8 +90,8 @@ ruleTester.run('no-dynamic-require', rule, { _test({ code: 'var foo = import(`foo`)', options: [{ esmodule: true }], - parser, languageOptions: { + parser, parserOptions: { ecmaVersion: 2020, }, @@ -97,8 +100,8 @@ ruleTester.run('no-dynamic-require', rule, { _test({ code: 'var foo = import("./foo")', options: [{ esmodule: true }], - parser, languageOptions: { + parser, parserOptions: { ecmaVersion: 2020, }, @@ -107,8 +110,8 @@ ruleTester.run('no-dynamic-require', rule, { _test({ code: 'var foo = import("@scope/foo")', options: [{ esmodule: true }], - parser, languageOptions: { + parser, parserOptions: { ecmaVersion: 2020, }, @@ -117,8 +120,8 @@ ruleTester.run('no-dynamic-require', rule, { _test({ code: 'import("../" + name)', errors: [dynamicImportError], - parser, languageOptions: { + parser, parserOptions: { ecmaVersion: 2020, }, @@ -127,8 +130,8 @@ ruleTester.run('no-dynamic-require', rule, { _test({ code: 'import(`../${name}`)', errors: [dynamicImportError], - parser, languageOptions: { + parser, parserOptions: { ecmaVersion: 2020, }, @@ -161,16 +164,19 @@ ruleTester.run('no-dynamic-require', rule, { }), // dynamic import - ...[parsers.ESPREE, parsers.BABEL].flatMap(parser => { + ...[parsers.ESPREE, parsers.BABEL].flatMap($parser => { const _test = (testObj: T) => - parser === parsers.ESPREE ? testObj : test(testObj) + $parser === parsers.ESPREE ? testObj : test(testObj) + + const parser = require($parser) + return [ _test({ code: 'import("../" + name)', errors: [dynamicImportError], options: [{ esmodule: true }], - parser, languageOptions: { + parser, parserOptions: { ecmaVersion: 2020, }, @@ -180,8 +186,8 @@ ruleTester.run('no-dynamic-require', rule, { code: 'import(`../${name}`)', errors: [dynamicImportError], options: [{ esmodule: true }], - parser, languageOptions: { + parser, parserOptions: { ecmaVersion: 2020, }, @@ -191,8 +197,8 @@ ruleTester.run('no-dynamic-require', rule, { code: 'import(name)', errors: [dynamicImportError], options: [{ esmodule: true }], - parser, languageOptions: { + parser, parserOptions: { ecmaVersion: 2020, }, @@ -202,8 +208,8 @@ ruleTester.run('no-dynamic-require', rule, { code: 'import(name())', errors: [dynamicImportError], options: [{ esmodule: true }], - parser, languageOptions: { + parser, parserOptions: { ecmaVersion: 2020, }, diff --git a/test/rules/no-empty-named-blocks.spec.ts b/test/rules/no-empty-named-blocks.spec.ts index aed6b571f..b84080a28 100644 --- a/test/rules/no-empty-named-blocks.spec.ts +++ b/test/rules/no-empty-named-blocks.spec.ts @@ -6,11 +6,13 @@ import rule from 'eslint-plugin-import-x/rules/no-empty-named-blocks' const ruleTester = new TSESLintRuleTester() -function generateSuggestionsTestCases(cases: string[], parser?: string) { +function generateSuggestionsTestCases(cases: string[], parser?: any) { return cases.map(code => test({ code, - parser, + languageOptions: { + ...(parser && { parser }), + }, errors: [ { suggestions: [ @@ -101,8 +103,7 @@ ruleTester.run('no-empty-named-blocks', rule, { `import type {}from 'mod';`, `import type{}from 'mod';`, `import type {}from'mod';`, - ], - parsers.TS, + ] ), test({ code: `import type Default, {} from 'mod';`, diff --git a/test/rules/no-extraneous-dependencies.spec.ts b/test/rules/no-extraneous-dependencies.spec.ts index 0eb8d88cd..35ddaf7b9 100644 --- a/test/rules/no-extraneous-dependencies.spec.ts +++ b/test/rules/no-extraneous-dependencies.spec.ts @@ -537,10 +537,7 @@ ruleTester.run('no-extraneous-dependencies', rule, { }) describe('TypeScript', () => { - const parser = parsers.TS - const parserConfig = { - parser, settings: { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': ['node', 'typescript'], diff --git a/test/rules/no-restricted-paths.spec.ts b/test/rules/no-restricted-paths.spec.ts index c5b906b3f..1e9bac579 100644 --- a/test/rules/no-restricted-paths.spec.ts +++ b/test/rules/no-restricted-paths.spec.ts @@ -764,8 +764,6 @@ ruleTester.run('no-restricted-paths', rule, { }) describe('Typescript', () => { - const parser = parsers.TS - const settings = { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -905,7 +903,7 @@ describe('Typescript', () => { settings, }), // no config - test({ code: 'import type b from "../server/b.js"', parser, settings }), + test({ code: 'import type b from "../server/b.js"', settings }), test({ code: 'import type * as b from "../server/b.js"', diff --git a/test/rules/no-unresolved.spec.ts b/test/rules/no-unresolved.spec.ts index 156639da3..51685ca67 100644 --- a/test/rules/no-unresolved.spec.ts +++ b/test/rules/no-unresolved.spec.ts @@ -532,8 +532,7 @@ ruleTester.run('import() with built-in parser', rule, { describe('TypeScript', () => { // Type-only imports were added in TypeScript ESTree 2.23.0 - const parser = parsers.TS - ruleTester.run(`${parser}: no-unresolved ignore type-only`, rule, { + ruleTester.run(`${parsers.TS}: no-unresolved ignore type-only`, rule, { valid: [ test({ code: 'import type { JSONSchema7Type } from "@types/json-schema";', diff --git a/test/rules/order.spec.ts b/test/rules/order.spec.ts index 3fad737d5..9e42df2fe 100644 --- a/test/rules/order.spec.ts +++ b/test/rules/order.spec.ts @@ -3033,7 +3033,9 @@ ruleTester.run('order', rule, { describe('TypeScript', () => { for (const parser of getNonDefaultParsers()) { const parserConfig = { - parser, + languageOptions: { + ...(parser === parsers.BABEL && { parser: require(parsers.BABEL) }), + }, settings: { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, @@ -3386,24 +3388,24 @@ describe('TypeScript', () => { ], errors: semver.satisfies(eslintPkg.version, '< 3') ? [ - { - message: '`Bar` import should occur before import of `bar`', - }, - { - message: - '`Bar` type import should occur before type import of `foo`', - }, - ] + { + message: '`Bar` import should occur before import of `bar`', + }, + { + message: + '`Bar` type import should occur before type import of `foo`', + }, + ] : [ - { - message: - /(`Bar` import should occur before import of `bar`)|(`bar` import should occur after import of `Bar`)/, - }, - { - message: - /(`Bar` type import should occur before type import of `foo`)|(`foo` type import should occur after type import of `Bar`)/, - }, - ], + { + message: + /(`Bar` import should occur before import of `bar`)|(`bar` import should occur after import of `Bar`)/, + }, + { + message: + /(`Bar` type import should occur before type import of `foo`)|(`foo` type import should occur after type import of `Bar`)/, + }, + ], }), // Option alphabetize: {order: 'desc'} with type group test({ @@ -3436,24 +3438,24 @@ describe('TypeScript', () => { ], errors: semver.satisfies(eslintPkg.version, '< 3') ? [ - { - message: '`bar` import should occur before import of `Bar`', - }, - { - message: - '`foo` type import should occur before type import of `Bar`', - }, - ] + { + message: '`bar` import should occur before import of `Bar`', + }, + { + message: + '`foo` type import should occur before type import of `Bar`', + }, + ] : [ - { - message: - /(`bar` import should occur before import of `Bar`)|(`Bar` import should occur after import of `bar`)/, - }, - { - message: - /(`foo` type import should occur before type import of `Bar`)|(`Bar` type import should occur after import of type `foo`)/, - }, - ], + { + message: + /(`bar` import should occur before import of `Bar`)|(`Bar` import should occur after import of `bar`)/, + }, + { + message: + /(`foo` type import should occur before type import of `Bar`)|(`Bar` type import should occur after import of type `foo`)/, + }, + ], }), // warns for out of order unassigned imports (warnOnUnassignedImports enabled) test({ diff --git a/test/rules/prefer-default-export.spec.ts b/test/rules/prefer-default-export.spec.ts index 072119c68..e5d42d89a 100644 --- a/test/rules/prefer-default-export.spec.ts +++ b/test/rules/prefer-default-export.spec.ts @@ -390,7 +390,7 @@ describe('TypeScript', () => { for (const parser of getNonDefaultParsers()) { const parserConfig = { languageOptions: { - parser: require(parser), + ...(parser === parsers.BABEL && { parser: require(parsers.BABEL) }), }, settings: { 'import-x/parsers': { [parsers.TS]: ['.ts'] }, diff --git a/test/utils.ts b/test/utils.ts index 6abb1ad65..3460a9ad2 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -49,6 +49,7 @@ export function eslintVersionSatisfies(specifier: string) { // eslint-disable-next-line @typescript-eslint/no-explicit-any -- simplify testing export type ValidTestCase = TSESLintValidTestCase & { errors?: readonly InvalidTestCaseError[] | number + parser?: never, parserOptions?: never } @@ -90,8 +91,8 @@ export function test( parserOptions: { sourceType: 'module', ecmaVersion: 9, - ...t.languageOptions, }, + ...t.languageOptions, } } } @@ -112,7 +113,7 @@ export const SYNTAX_CASES = [ test({ code: 'for (let [ foo, bar ] of baz) {}' }), test({ code: 'const { x, y } = bar' }), - test({ code: 'const { x, y, ...z } = bar', parser: parsers.BABEL }), + test({ code: 'const { x, y, ...z } = bar', languageOptions: { parser: require(parsers.BABEL) } }), // all the exports test({ code: 'let x; export { x }' }), @@ -120,7 +121,7 @@ export const SYNTAX_CASES = [ // not sure about these since they reference a file // test({ code: 'export { x } from "./y.js"'}), - // test({ code: 'export * as y from "./y.js"', parser: parsers.BABEL}), + // test({ code: 'export * as y from "./y.js"', languageOptions: { parser: require(parsers.BABEL) } }), test({ code: 'export const x = null' }), test({ code: 'export var x = null' }), From d45e26417938261e82149200a047249318c0e2e5 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Wed, 7 Aug 2024 23:55:43 +0800 Subject: [PATCH 14/36] test: migrate new test cases --- test/rules/namespace.spec.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/test/rules/namespace.spec.ts b/test/rules/namespace.spec.ts index 83c88f26f..a06e886d1 100644 --- a/test/rules/namespace.spec.ts +++ b/test/rules/namespace.spec.ts @@ -413,60 +413,60 @@ for (const [folder, parser] of [['deep'], ['deep-es7', parsers.BABEL]]) { // close over params valid.push( test({ - parser: require(parser), + languageOptions: { parser: require(parser), }, code: `import * as a from "./${folder}/a"; console.log(a.b.c.d.e)`, }), test({ - parser: require(parser), + languageOptions: { parser: require(parser), }, code: `import { b } from "./${folder}/a"; console.log(b.c.d.e)`, }), test({ - parser: require(parser), + languageOptions: { parser: require(parser), }, code: `import * as a from "./${folder}/a"; console.log(a.b.c.d.e.f)`, }), test({ - parser: require(parser), + languageOptions: { parser: require(parser), }, code: `import * as a from "./${folder}/a"; var {b:{c:{d:{e}}}} = a`, }), test({ - parser: require(parser), + languageOptions: { parser: require(parser), }, code: `import { b } from "./${folder}/a"; var {c:{d:{e}}} = b`, }), // deep namespaces should include explicitly exported defaults test({ - parser: require(parser), + languageOptions: { parser: require(parser), }, code: `import * as a from "./${folder}/a"; console.log(a.b.default)`, }), ) invalid.push( test({ - parser: require(parser), + languageOptions: { parser: require(parser), }, code: `import * as a from "./${folder}/a"; console.log(a.b.e)`, errors: ["'e' not found in deeply imported namespace 'a.b'."], }), test({ - parser: require(parser), + languageOptions: { parser: require(parser), }, code: `import { b } from "./${folder}/a"; console.log(b.e)`, errors: ["'e' not found in imported namespace 'b'."], }), test({ - parser: require(parser), + languageOptions: { parser: require(parser), }, code: `import * as a from "./${folder}/a"; console.log(a.b.c.e)`, errors: ["'e' not found in deeply imported namespace 'a.b.c'."], }), test({ - parser: require(parser), + languageOptions: { parser: require(parser), }, code: `import { b } from "./${folder}/a"; console.log(b.c.e)`, errors: ["'e' not found in deeply imported namespace 'b.c'."], }), test({ - parser: require(parser), + languageOptions: { parser: require(parser), }, code: `import * as a from "./${folder}/a"; var {b:{ e }} = a`, errors: ["'e' not found in deeply imported namespace 'a.b'."], }), test({ - parser: require(parser), + languageOptions: { parser: require(parser), }, code: `import * as a from "./${folder}/a"; var {b:{c:{ e }}} = a`, errors: ["'e' not found in deeply imported namespace 'a.b.c'."], }), From e12af0912e9755a5034c0bda51e0d9b3859c8ea7 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 8 Aug 2024 00:09:14 +0800 Subject: [PATCH 15/36] test: fix ts parser not recognizing export identifier --- test/rules/default.spec.ts | 14 ++-- test/rules/dynamic-import-chunkname.spec.ts | 36 ---------- test/rules/export.spec.ts | 5 +- test/rules/first.spec.ts | 2 +- test/rules/named.spec.ts | 27 ++++++-- test/rules/namespace.spec.ts | 64 ++++++++++------- test/rules/no-amd.spec.ts | 2 +- .../rules/no-anonymous-default-export.spec.ts | 7 +- test/rules/no-commonjs.spec.ts | 2 +- test/rules/no-cycle.spec.ts | 66 +++++++++--------- test/rules/no-default-export.spec.ts | 5 +- test/rules/no-empty-named-blocks.spec.ts | 15 ++-- test/rules/no-import-module-exports.spec.ts | 4 +- test/rules/no-mutable-exports.spec.ts | 10 ++- test/rules/no-named-as-default.spec.ts | 2 + test/rules/no-named-default.spec.ts | 3 +- test/rules/no-named-export.spec.ts | 5 +- test/rules/no-unresolved.spec.ts | 4 +- test/rules/no-unused-modules.spec.ts | 15 +++- test/rules/order.spec.ts | 68 +++++++++---------- test/rules/prefer-default-export.spec.ts | 10 ++- test/utils.ts | 15 ++-- 22 files changed, 204 insertions(+), 177 deletions(-) diff --git a/test/rules/default.spec.ts b/test/rules/default.spec.ts index 38590f75b..21de09088 100644 --- a/test/rules/default.spec.ts +++ b/test/rules/default.spec.ts @@ -64,7 +64,7 @@ ruleTester.run('default', rule, { ecmaVersion: 6, ecmaFeatures: { jsx: true }, }, - } + }, }), // #54: import of named export default @@ -78,7 +78,7 @@ ruleTester.run('default', rule, { parserOptions: { ecmaFeatures: { jsx: true, modules: true }, }, - } + }, }), // from no-errors @@ -113,7 +113,7 @@ ruleTester.run('default', rule, { parserOptions: { ecmaVersion: 2022, }, - } + }, }), ...SYNTAX_CASES, @@ -245,7 +245,7 @@ describe('TypeScript', () => { '../fixtures/typescript-export-assign-default-namespace/', ), }, - } + }, }), test({ code: `import Foo from "./typescript-export-as-default-namespace"`, @@ -262,7 +262,7 @@ describe('TypeScript', () => { '../fixtures/typescript-export-as-default-namespace/', ), }, - } + }, }), test({ code: `import Foo from "./typescript-export-react-test-renderer"`, @@ -278,7 +278,7 @@ describe('TypeScript', () => { '../fixtures/typescript-export-react-test-renderer/', ), }, - } + }, }), test({ code: `import Foo from "./typescript-extended-config"`, @@ -294,7 +294,7 @@ describe('TypeScript', () => { '../fixtures/typescript-extended-config/', ), }, - } + }, }), test({ code: `import foobar from "./typescript-export-assign-property"`, diff --git a/test/rules/dynamic-import-chunkname.spec.ts b/test/rules/dynamic-import-chunkname.spec.ts index 573bdbf50..3f7b60677 100644 --- a/test/rules/dynamic-import-chunkname.spec.ts +++ b/test/rules/dynamic-import-chunkname.spec.ts @@ -967,7 +967,6 @@ describe('TypeScript', () => { { code: `import('test')`, options: allowEmptyOptions, - }, { code: `import( @@ -975,7 +974,6 @@ describe('TypeScript', () => { 'test' )`, options: allowEmptyOptions, - }, { code: `import( @@ -983,7 +981,6 @@ describe('TypeScript', () => { 'test' )`, options, - }, { code: `import( @@ -991,7 +988,6 @@ describe('TypeScript', () => { "test" )`, options, - }, { code: `import( @@ -999,7 +995,6 @@ describe('TypeScript', () => { "test" )`, options, - }, { code: `import( @@ -1007,7 +1002,6 @@ describe('TypeScript', () => { 'test' )`, options, - }, { code: `import( @@ -1015,7 +1009,6 @@ describe('TypeScript', () => { 'test' )`, options, - }, { code: `import( @@ -1023,7 +1016,6 @@ describe('TypeScript', () => { 'test' )`, options, - }, { code: `import( @@ -1031,7 +1023,6 @@ describe('TypeScript', () => { 'test' )`, options, - }, { code: `import( @@ -1040,7 +1031,6 @@ describe('TypeScript', () => { 'test' )`, options, - }, { code: `import( @@ -1049,7 +1039,6 @@ describe('TypeScript', () => { 'test' )`, options, - }, { code: `import( @@ -1058,7 +1047,6 @@ describe('TypeScript', () => { 'test' )`, options, - }, { code: `import( @@ -1067,7 +1055,6 @@ describe('TypeScript', () => { 'test' )`, options, - }, { code: `import( @@ -1075,7 +1062,6 @@ describe('TypeScript', () => { 'someModule' )`, options: pickyCommentOptions, - }, { code: `import( @@ -1083,7 +1069,6 @@ describe('TypeScript', () => { 'test' )`, options, - }, { code: `import( @@ -1091,7 +1076,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1099,7 +1083,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1107,7 +1090,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1115,7 +1097,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1124,7 +1105,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1132,7 +1112,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1141,7 +1120,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1149,7 +1127,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1158,7 +1135,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1166,7 +1142,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1175,7 +1150,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1183,7 +1157,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1192,7 +1165,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1200,7 +1172,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1209,7 +1180,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1218,7 +1188,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1227,7 +1196,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1235,7 +1203,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1244,7 +1211,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1252,7 +1218,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, { code: `import( @@ -1267,7 +1232,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - }, ], invalid: [ diff --git a/test/rules/export.spec.ts b/test/rules/export.spec.ts index 046397a3c..87c9780f2 100644 --- a/test/rules/export.spec.ts +++ b/test/rules/export.spec.ts @@ -43,7 +43,7 @@ ruleTester.run('export', rule, { parserOptions: { ecmaVersion: 2020, }, - } + }, }), { @@ -150,10 +150,11 @@ ruleTester.run('export', rule, { "Multiple exports of name 'foo'.", ], languageOptions: { + parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022, }, - } + }, }), ], }) diff --git a/test/rules/first.spec.ts b/test/rules/first.spec.ts index f4aff38e8..17daec79c 100644 --- a/test/rules/first.spec.ts +++ b/test/rules/first.spec.ts @@ -29,7 +29,7 @@ ruleTester.run('first', rule, { code: fs.readFileSync(testFilePath('component.html'), 'utf8'), languageOptions: { parser: require('@angular-eslint/template-parser'), - } + }, }), ], invalid: [ diff --git a/test/rules/named.spec.ts b/test/rules/named.spec.ts index f38b031f2..d8b1a753f 100644 --- a/test/rules/named.spec.ts +++ b/test/rules/named.spec.ts @@ -204,7 +204,7 @@ ruleTester.run('named', rule, { sourceType: 'module', ecmaVersion: 2020, }, - } + }, }), test({ @@ -220,11 +220,17 @@ ruleTester.run('named', rule, { test({ code: 'import { "foo" as foo } from "./bar"', - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), test({ code: 'import { "foo" as foo } from "./empty-module"', - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], @@ -370,7 +376,10 @@ ruleTester.run('named', rule, { test({ code: 'import { "somethingElse" as somethingElse } from "./test-module"', errors: [error('somethingElse', './test-module', 'Literal')], - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), test({ code: 'import { "baz" as baz, "bop" as bop } from "./bar"', @@ -378,12 +387,18 @@ ruleTester.run('named', rule, { error('baz', './bar', 'Literal'), error('bop', './bar', 'Literal'), ], - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), test({ code: 'import { "default" as barDefault } from "./re-export"', errors: [`default not found in './re-export'`], - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], }) diff --git a/test/rules/namespace.spec.ts b/test/rules/namespace.spec.ts index a06e886d1..c7dddcca3 100644 --- a/test/rules/namespace.spec.ts +++ b/test/rules/namespace.spec.ts @@ -38,7 +38,7 @@ const valid = [ ecmaFeatures: { jsx: true }, ecmaVersion: 2015, }, - } + }, }), // import re-exported jsx files, where jsx file exports a string test({ @@ -68,7 +68,7 @@ const valid = [ jsx: true, }, }, - } + }, }), test({ code: "import * as foo from './common';" }), @@ -158,7 +158,7 @@ const valid = [ parserOptions: { ecmaVersion: 2018, }, - } + }, }), test({ code: `import * as names from './named-exports'; const {a, b, ...rest} = names;`, @@ -179,7 +179,7 @@ const valid = [ jsx: true, }, }, - } + }, }), // Typescript @@ -243,34 +243,40 @@ const valid = [ parserOptions: { ecmaVersion: 2020, }, - } + }, }), test({ code: "import * as names from './default-export-string';", - languageOptions: { parserOptions: { ecmaVersion: 2022 }, } + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), test({ code: "import * as names from './default-export-string'; console.log(names.default)", - languageOptions: { parserOptions: { ecmaVersion: 2022 }, } + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), test({ code: "import * as names from './default-export-namespace-string';", languageOptions: { parserOptions: { ecmaVersion: 2022 }, - } + }, }), test({ code: "import * as names from './default-export-namespace-string'; console.log(names.default)", - languageOptions: { parserOptions: { ecmaVersion: 2022 }, } + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }), test({ code: `import { "b" as b } from "./deep/a"; console.log(b.c.d.e)`, - languageOptions: { parserOptions: { ecmaVersion: 2022 }, } + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), test({ code: `import { "b" as b } from "./deep/a"; var {c:{d:{e}}} = b`, - languageOptions: { parserOptions: { ecmaVersion: 2022 }, } + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ] @@ -391,18 +397,24 @@ const invalid = [ jsx: true, }, }, - } + }, }), test({ code: `import { "b" as b } from "./deep/a"; console.log(b.e)`, errors: ["'e' not found in imported namespace 'b'."], - languageOptions: { parserOptions: { ecmaVersion: 2022 }, } + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), test({ code: `import { "b" as b } from "./deep/a"; console.log(b.c.e)`, errors: ["'e' not found in deeply imported namespace 'b.c'."], - languageOptions: { parserOptions: { ecmaVersion: 2022 }, } + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ] @@ -413,60 +425,60 @@ for (const [folder, parser] of [['deep'], ['deep-es7', parsers.BABEL]]) { // close over params valid.push( test({ - languageOptions: { parser: require(parser), }, + languageOptions: { parser: require(parser) }, code: `import * as a from "./${folder}/a"; console.log(a.b.c.d.e)`, }), test({ - languageOptions: { parser: require(parser), }, + languageOptions: { parser: require(parser) }, code: `import { b } from "./${folder}/a"; console.log(b.c.d.e)`, }), test({ - languageOptions: { parser: require(parser), }, + languageOptions: { parser: require(parser) }, code: `import * as a from "./${folder}/a"; console.log(a.b.c.d.e.f)`, }), test({ - languageOptions: { parser: require(parser), }, + languageOptions: { parser: require(parser) }, code: `import * as a from "./${folder}/a"; var {b:{c:{d:{e}}}} = a`, }), test({ - languageOptions: { parser: require(parser), }, + languageOptions: { parser: require(parser) }, code: `import { b } from "./${folder}/a"; var {c:{d:{e}}} = b`, }), // deep namespaces should include explicitly exported defaults test({ - languageOptions: { parser: require(parser), }, + languageOptions: { parser: require(parser) }, code: `import * as a from "./${folder}/a"; console.log(a.b.default)`, }), ) invalid.push( test({ - languageOptions: { parser: require(parser), }, + languageOptions: { parser: require(parser) }, code: `import * as a from "./${folder}/a"; console.log(a.b.e)`, errors: ["'e' not found in deeply imported namespace 'a.b'."], }), test({ - languageOptions: { parser: require(parser), }, + languageOptions: { parser: require(parser) }, code: `import { b } from "./${folder}/a"; console.log(b.e)`, errors: ["'e' not found in imported namespace 'b'."], }), test({ - languageOptions: { parser: require(parser), }, + languageOptions: { parser: require(parser) }, code: `import * as a from "./${folder}/a"; console.log(a.b.c.e)`, errors: ["'e' not found in deeply imported namespace 'a.b.c'."], }), test({ - languageOptions: { parser: require(parser), }, + languageOptions: { parser: require(parser) }, code: `import { b } from "./${folder}/a"; console.log(b.c.e)`, errors: ["'e' not found in deeply imported namespace 'b.c'."], }), test({ - languageOptions: { parser: require(parser), }, + languageOptions: { parser: require(parser) }, code: `import * as a from "./${folder}/a"; var {b:{ e }} = a`, errors: ["'e' not found in deeply imported namespace 'a.b'."], }), test({ - languageOptions: { parser: require(parser), }, + languageOptions: { parser: require(parser) }, code: `import * as a from "./${folder}/a"; var {b:{c:{ e }}} = a`, errors: ["'e' not found in deeply imported namespace 'a.b.c'."], }), diff --git a/test/rules/no-amd.spec.ts b/test/rules/no-amd.spec.ts index eb250d340..b7178dcd6 100644 --- a/test/rules/no-amd.spec.ts +++ b/test/rules/no-amd.spec.ts @@ -5,7 +5,7 @@ import rule from 'eslint-plugin-import-x/rules/no-amd' const ruleTester = new TSESLintRuleTester({ languageOptions: { parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, - } + }, }) ruleTester.run('no-amd', rule, { diff --git a/test/rules/no-anonymous-default-export.spec.ts b/test/rules/no-anonymous-default-export.spec.ts index 3ed9e3f3f..340f09024 100644 --- a/test/rules/no-anonymous-default-export.spec.ts +++ b/test/rules/no-anonymous-default-export.spec.ts @@ -1,6 +1,6 @@ import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' -import { test, SYNTAX_CASES } from '../utils' +import { test, SYNTAX_CASES, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-anonymous-default-export' @@ -53,7 +53,10 @@ ruleTester.run('no-anonymous-default-export', rule, { test({ code: 'const foo = 123\nexport { foo as default }' }), test({ code: 'const foo = 123\nexport { foo as "default" }', - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), // Allow call expressions by default for backwards compatibility diff --git a/test/rules/no-commonjs.spec.ts b/test/rules/no-commonjs.spec.ts index a8b7a89b0..65ede4a3f 100644 --- a/test/rules/no-commonjs.spec.ts +++ b/test/rules/no-commonjs.spec.ts @@ -11,7 +11,7 @@ const ruleTester = new TSESLintRuleTester({ ecmaVersion: 2015, sourceType: 'module', }, - } + }, }) ruleTester.run('no-commonjs', rule, { diff --git a/test/rules/no-cycle.spec.ts b/test/rules/no-cycle.spec.ts index 42968b1fe..d4d06c836 100644 --- a/test/rules/no-cycle.spec.ts +++ b/test/rules/no-cycle.spec.ts @@ -15,8 +15,6 @@ const test = (def: T) => filename: testFilePath('./cycles/depth-zero.js'), }) -const testDialect = 'es6' - ruleTester.run('no-cycle', rule, { valid: [ // this rule doesn't care if the cycle length is 0 @@ -55,42 +53,42 @@ ruleTester.run('no-cycle', rule, { }), test({ - code: `import { foo } from "./${testDialect}/depth-two"`, + code: `import { foo } from "./es6/depth-two"`, options: [{ maxDepth: 1 }], }), test({ - code: `import { foo, bar } from "./${testDialect}/depth-two"`, + code: `import { foo, bar } from "./es6/depth-two"`, options: [{ maxDepth: 1 }], }), test({ - code: `import("./${testDialect}/depth-two").then(function({ foo }) {})`, + code: `import("./es6/depth-two").then(function({ foo }) {})`, options: [{ maxDepth: 1 }], languageOptions: { parser: require(parsers.BABEL) }, }), test({ - code: `import type { FooType } from "./${testDialect}/depth-one"`, + code: `import type { FooType } from "./es6/depth-one"`, languageOptions: { parser: require(parsers.BABEL) }, }), test({ - code: `import type { FooType, BarType } from "./${testDialect}/depth-one"`, + code: `import type { FooType, BarType } from "./es6/depth-one"`, languageOptions: { parser: require(parsers.BABEL) }, }), test({ - code: `function bar(){ return import("./${testDialect}/depth-one"); } // #2265 1`, + code: `function bar(){ return import("./es6/depth-one"); } // #2265 1`, options: [{ allowUnsafeDynamicCyclicDependency: true }], languageOptions: { parser: require(parsers.BABEL) }, }), test({ - code: `import { foo } from "./${testDialect}/depth-one-dynamic"; // #2265 2`, + code: `import { foo } from "./es6/depth-one-dynamic"; // #2265 2`, options: [{ allowUnsafeDynamicCyclicDependency: true }], languageOptions: { parser: require(parsers.BABEL) }, }), test({ - code: `function bar(){ return import("./${testDialect}/depth-one"); } // #2265 3`, + code: `function bar(){ return import("./es6/depth-one"); } // #2265 3`, options: [{ allowUnsafeDynamicCyclicDependency: true }], }), test({ - code: `import { foo } from "./${testDialect}/depth-one-dynamic"; // #2265 4`, + code: `import { foo } from "./es6/depth-one-dynamic"; // #2265 4`, options: [{ allowUnsafeDynamicCyclicDependency: true }], }), @@ -138,120 +136,120 @@ ruleTester.run('no-cycle', rule, { // Ensure behavior does not change for those tests, with or without ...[{}, { allowUnsafeDynamicCyclicDependency: true }].flatMap(opts => [ test({ - code: `import { foo } from "./${testDialect}/depth-one"`, + code: `import { foo } from "./es6/depth-one"`, options: [{ ...opts }], errors: [error(`Dependency cycle detected.`)], }), test({ - code: `import { foo } from "./${testDialect}/depth-one"`, + code: `import { foo } from "./es6/depth-one"`, options: [{ ...opts, maxDepth: 1 }], errors: [error(`Dependency cycle detected.`)], }), test({ - code: `const { foo } = require("./${testDialect}/depth-one")`, + code: `const { foo } = require("./es6/depth-one")`, errors: [error(`Dependency cycle detected.`)], options: [{ ...opts, commonjs: true }], }), test({ - code: `require(["./${testDialect}/depth-one"], d1 => {})`, + code: `require(["./es6/depth-one"], d1 => {})`, errors: [error(`Dependency cycle detected.`)], options: [{ ...opts, amd: true }], }), test({ - code: `define(["./${testDialect}/depth-one"], d1 => {})`, + code: `define(["./es6/depth-one"], d1 => {})`, errors: [error(`Dependency cycle detected.`)], options: [{ ...opts, amd: true }], }), test({ - code: `import { foo } from "./${testDialect}/depth-one-reexport"`, + code: `import { foo } from "./es6/depth-one-reexport"`, options: [{ ...opts }], errors: [error(`Dependency cycle detected.`)], }), test({ - code: `import { foo } from "./${testDialect}/depth-two"`, + code: `import { foo } from "./es6/depth-two"`, options: [{ ...opts }], errors: [error(`Dependency cycle via ./depth-one:1`)], }), test({ - code: `import { foo } from "./${testDialect}/depth-two"`, + code: `import { foo } from "./es6/depth-two"`, options: [{ ...opts, maxDepth: 2 }], errors: [error(`Dependency cycle via ./depth-one:1`)], }), test({ - code: `const { foo } = require("./${testDialect}/depth-two")`, + code: `const { foo } = require("./es6/depth-two")`, errors: [error(`Dependency cycle via ./depth-one:1`)], options: [{ ...opts, commonjs: true }], }), test({ - code: `import { two } from "./${testDialect}/depth-three-star"`, + code: `import { two } from "./es6/depth-three-star"`, options: [{ ...opts }], errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)], }), test({ - code: `import one, { two, three } from "./${testDialect}/depth-three-star"`, + code: `import one, { two, three } from "./es6/depth-three-star"`, options: [{ ...opts }], errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)], }), test({ - code: `import { bar } from "./${testDialect}/depth-three-indirect"`, + code: `import { bar } from "./es6/depth-three-indirect"`, options: [{ ...opts }], errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)], }), test({ - code: `import { bar } from "./${testDialect}/depth-three-indirect"`, + code: `import { bar } from "./es6/depth-three-indirect"`, options: [{ ...opts }], errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)], languageOptions: { parser: require(parsers.BABEL) }, }), test({ - code: `import { foo } from "./${testDialect}/depth-two"`, + code: `import { foo } from "./es6/depth-two"`, options: [{ ...opts, maxDepth: Number.POSITIVE_INFINITY }], errors: [error(`Dependency cycle via ./depth-one:1`)], }), test({ - code: `import { foo } from "./${testDialect}/depth-two"`, + code: `import { foo } from "./es6/depth-two"`, options: [{ ...opts, maxDepth: '∞' }], errors: [error(`Dependency cycle via ./depth-one:1`)], }), ]), test({ - code: `import("./${testDialect}/depth-three-star")`, + code: `import("./es6/depth-three-star")`, errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)], languageOptions: { parser: require(parsers.BABEL) }, }), test({ - code: `import("./${testDialect}/depth-three-indirect")`, + code: `import("./es6/depth-three-indirect")`, errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)], languageOptions: { parser: require(parsers.BABEL) }, }), test({ - code: `import { foo } from "./${testDialect}/depth-two"`, + code: `import { foo } from "./es6/depth-two"`, options: [{ maxDepth: Number.POSITIVE_INFINITY }], errors: [error(`Dependency cycle via ./depth-one:1`)], }), test({ - code: `import { foo } from "./${testDialect}/depth-two"`, + code: `import { foo } from "./es6/depth-two"`, options: [{ maxDepth: '∞' }], errors: [error(`Dependency cycle via ./depth-one:1`)], }), test({ - code: `function bar(){ return import("./${testDialect}/depth-one"); } // #2265 5`, + code: `function bar(){ return import("./es6/depth-one"); } // #2265 5`, errors: [error(`Dependency cycle detected.`)], languageOptions: { parser: require(parsers.BABEL) }, }), test({ // Dynamic import is not properly caracterized with eslint < 4 - code: `import { foo } from "./${testDialect}/depth-one-dynamic"; // #2265 6`, + code: `import { foo } from "./es6/depth-one-dynamic"; // #2265 6`, errors: [error(`Dependency cycle detected.`)], languageOptions: { parser: require(parsers.BABEL) }, }), test({ - code: `function bar(){ return import("./${testDialect}/depth-one"); } // #2265 7`, + code: `function bar(){ return import("./es6/depth-one"); } // #2265 7`, errors: [error(`Dependency cycle detected.`)], }), test({ - code: `import { foo } from "./${testDialect}/depth-one-dynamic"; // #2265 8`, + code: `import { foo } from "./es6/depth-one-dynamic"; // #2265 8`, errors: [error(`Dependency cycle detected.`)], }), diff --git a/test/rules/no-default-export.spec.ts b/test/rules/no-default-export.spec.ts index 094ba6a76..e90d57f80 100644 --- a/test/rules/no-default-export.spec.ts +++ b/test/rules/no-default-export.spec.ts @@ -173,7 +173,10 @@ ruleTester.run('no-default-export', rule, { 'Do not alias `foo` as `default`. Just export `foo` itself instead.', }, ], - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], }) diff --git a/test/rules/no-empty-named-blocks.spec.ts b/test/rules/no-empty-named-blocks.spec.ts index b84080a28..7eaaa6adb 100644 --- a/test/rules/no-empty-named-blocks.spec.ts +++ b/test/rules/no-empty-named-blocks.spec.ts @@ -6,6 +6,7 @@ import rule from 'eslint-plugin-import-x/rules/no-empty-named-blocks' const ruleTester = new TSESLintRuleTester() +// eslint-disable-next-line @typescript-eslint/no-explicit-any function generateSuggestionsTestCases(cases: string[], parser?: any) { return cases.map(code => test({ @@ -97,14 +98,12 @@ ruleTester.run('no-empty-named-blocks', rule, { ]), // Typescript - ...generateSuggestionsTestCases( - [ - `import type {} from 'mod';`, - `import type {}from 'mod';`, - `import type{}from 'mod';`, - `import type {}from'mod';`, - ] - ), + ...generateSuggestionsTestCases([ + `import type {} from 'mod';`, + `import type {}from 'mod';`, + `import type{}from 'mod';`, + `import type {}from'mod';`, + ]), test({ code: `import type Default, {} from 'mod';`, output: `import type Default from 'mod';`, diff --git a/test/rules/no-import-module-exports.spec.ts b/test/rules/no-import-module-exports.spec.ts index 8650d332f..f3096dc4c 100644 --- a/test/rules/no-import-module-exports.spec.ts +++ b/test/rules/no-import-module-exports.spec.ts @@ -9,7 +9,7 @@ import rule from 'eslint-plugin-import-x/rules/no-import-module-exports' const ruleTester = new TSESLintRuleTester({ languageOptions: { parserOptions: { ecmaVersion: 6, sourceType: 'module' }, - } + }, }) const error = { @@ -129,7 +129,7 @@ ruleTester.run('no-import-module-exports', rule, { parserOptions: { ecmaVersion: 2020, }, - } + }, }), ], invalid: [ diff --git a/test/rules/no-mutable-exports.spec.ts b/test/rules/no-mutable-exports.spec.ts index 8cf3f0bd9..2d4120a69 100644 --- a/test/rules/no-mutable-exports.spec.ts +++ b/test/rules/no-mutable-exports.spec.ts @@ -36,7 +36,10 @@ ruleTester.run('no-mutable-exports', rule, { }), test({ code: 'const count = 1\nexport { count as "counter" }', - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], invalid: [ @@ -75,7 +78,10 @@ ruleTester.run('no-mutable-exports', rule, { test({ code: 'let count = 1\nexport { count as "counter" }', errors: ["Exporting mutable 'let' binding, use 'const' instead."], - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), // todo: undeclared globals diff --git a/test/rules/no-named-as-default.spec.ts b/test/rules/no-named-as-default.spec.ts index 05c1f1132..c4dbb223f 100644 --- a/test/rules/no-named-as-default.spec.ts +++ b/test/rules/no-named-as-default.spec.ts @@ -6,6 +6,8 @@ import rule from 'eslint-plugin-import-x/rules/no-named-as-default' const ruleTester = new TSESLintRuleTester() +console.log({ babel: require(parsers.BABEL) }) + ruleTester.run('no-named-as-default', rule, { valid: [ test({ code: 'import "./malformed.js"' }), diff --git a/test/rules/no-named-default.spec.ts b/test/rules/no-named-default.spec.ts index 740809abe..63f9a3624 100644 --- a/test/rules/no-named-default.spec.ts +++ b/test/rules/no-named-default.spec.ts @@ -61,10 +61,11 @@ ruleTester.run('no-named-default', rule, { }, ], languageOptions: { + parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022, }, - } + }, }), ], }) diff --git a/test/rules/no-named-export.spec.ts b/test/rules/no-named-export.spec.ts index 5a2af56ae..444615c2c 100644 --- a/test/rules/no-named-export.spec.ts +++ b/test/rules/no-named-export.spec.ts @@ -31,7 +31,10 @@ ruleTester.run('no-named-export', rule, { }), test({ code: 'let foo; export { foo as "default" }', - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], invalid: [ diff --git a/test/rules/no-unresolved.spec.ts b/test/rules/no-unresolved.spec.ts index 51685ca67..654d7c9dc 100644 --- a/test/rules/no-unresolved.spec.ts +++ b/test/rules/no-unresolved.spec.ts @@ -42,7 +42,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { code: "import('fs');", languageOptions: { parserOptions: { ecmaVersion: 2021 }, - } + }, }), rest({ code: 'import * as foo from "a"' }), @@ -201,7 +201,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { ], languageOptions: { parserOptions: { ecmaVersion: 2021 }, - } + }, }), // export symmetry proposal diff --git a/test/rules/no-unused-modules.spec.ts b/test/rules/no-unused-modules.spec.ts index 4d6f8d6ab..60b227743 100644 --- a/test/rules/no-unused-modules.spec.ts +++ b/test/rules/no-unused-modules.spec.ts @@ -1494,7 +1494,10 @@ describe('support ES2022 Arbitrary module namespace identifier names', () => { test({ options: unusedExportsOptions, code: `import { "foo" as foo } from "./arbitrary-module-namespace-identifier-name-a"`, - languageOptions: { parserOptions: { ecmaVersion: 2022 }, }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, filename: testFilePath( './no-unused-modules/arbitrary-module-namespace-identifier-name-b.js', ), @@ -1502,7 +1505,10 @@ describe('support ES2022 Arbitrary module namespace identifier names', () => { test({ options: unusedExportsOptions, code: 'const foo = 333;\nexport { foo as "foo" }', - languageOptions: { parserOptions: { ecmaVersion: 2022 }, }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, filename: testFilePath( './no-unused-modules/arbitrary-module-namespace-identifier-name-a.js', ), @@ -1512,7 +1518,10 @@ describe('support ES2022 Arbitrary module namespace identifier names', () => { test({ options: unusedExportsOptions, code: 'const foo = 333\nexport { foo as "foo" }', - languageOptions: { parserOptions: { ecmaVersion: 2022 }, }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, filename: testFilePath( './no-unused-modules/arbitrary-module-namespace-identifier-name-c.js', ), diff --git a/test/rules/order.spec.ts b/test/rules/order.spec.ts index 9e42df2fe..864f1244b 100644 --- a/test/rules/order.spec.ts +++ b/test/rules/order.spec.ts @@ -3388,24 +3388,24 @@ describe('TypeScript', () => { ], errors: semver.satisfies(eslintPkg.version, '< 3') ? [ - { - message: '`Bar` import should occur before import of `bar`', - }, - { - message: - '`Bar` type import should occur before type import of `foo`', - }, - ] + { + message: '`Bar` import should occur before import of `bar`', + }, + { + message: + '`Bar` type import should occur before type import of `foo`', + }, + ] : [ - { - message: - /(`Bar` import should occur before import of `bar`)|(`bar` import should occur after import of `Bar`)/, - }, - { - message: - /(`Bar` type import should occur before type import of `foo`)|(`foo` type import should occur after type import of `Bar`)/, - }, - ], + { + message: + /(`Bar` import should occur before import of `bar`)|(`bar` import should occur after import of `Bar`)/, + }, + { + message: + /(`Bar` type import should occur before type import of `foo`)|(`foo` type import should occur after type import of `Bar`)/, + }, + ], }), // Option alphabetize: {order: 'desc'} with type group test({ @@ -3438,24 +3438,24 @@ describe('TypeScript', () => { ], errors: semver.satisfies(eslintPkg.version, '< 3') ? [ - { - message: '`bar` import should occur before import of `Bar`', - }, - { - message: - '`foo` type import should occur before type import of `Bar`', - }, - ] + { + message: '`bar` import should occur before import of `Bar`', + }, + { + message: + '`foo` type import should occur before type import of `Bar`', + }, + ] : [ - { - message: - /(`bar` import should occur before import of `Bar`)|(`Bar` import should occur after import of `bar`)/, - }, - { - message: - /(`foo` type import should occur before type import of `Bar`)|(`Bar` type import should occur after import of type `foo`)/, - }, - ], + { + message: + /(`bar` import should occur before import of `Bar`)|(`Bar` import should occur after import of `bar`)/, + }, + { + message: + /(`foo` type import should occur before type import of `Bar`)|(`Bar` type import should occur after import of type `foo`)/, + }, + ], }), // warns for out of order unassigned imports (warnOnUnassignedImports enabled) test({ diff --git a/test/rules/prefer-default-export.spec.ts b/test/rules/prefer-default-export.spec.ts index e5d42d89a..291808167 100644 --- a/test/rules/prefer-default-export.spec.ts +++ b/test/rules/prefer-default-export.spec.ts @@ -98,7 +98,10 @@ ruleTester.run('prefer-default-export', rule, { }), test({ code: 'let foo; export { foo as "default" };', - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], invalid: [ @@ -260,7 +263,10 @@ ruleTester.run('prefer-default-export', rule, { test({ code: 'export const a = 4; let foo; export { foo as "default" };', options: [{ target: 'any' }], - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], // { target: 'any' } invalid cases when any exporting file must contain default export but does not diff --git a/test/utils.ts b/test/utils.ts index 3460a9ad2..d81726a05 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -1,13 +1,15 @@ import path from 'node:path' +import type { + ValidTestCase as TSESLintValidTestCase, + InvalidTestCase as TSESLintInvalidTestCase, +} from '@typescript-eslint/rule-tester' import type { TSESTree } from '@typescript-eslint/utils' import type { RuleTester } from 'eslint' import eslintPkg from 'eslint/package.json' import semver from 'semver' import typescriptPkg from 'typescript/package.json' -import { ValidTestCase as TSESLintValidTestCase, InvalidTestCase as TSESLintInvalidTestCase } from '@typescript-eslint/rule-tester'; - import type { PluginSettings, RuleContext } from 'eslint-plugin-import-x/types' // warms up the module cache. this import takes a while (>500ms) @@ -49,7 +51,7 @@ export function eslintVersionSatisfies(specifier: string) { // eslint-disable-next-line @typescript-eslint/no-explicit-any -- simplify testing export type ValidTestCase = TSESLintValidTestCase & { errors?: readonly InvalidTestCaseError[] | number - parser?: never, + parser?: never parserOptions?: never } @@ -93,7 +95,7 @@ export function test( ecmaVersion: 9, }, ...t.languageOptions, - } + }, } } @@ -113,7 +115,10 @@ export const SYNTAX_CASES = [ test({ code: 'for (let [ foo, bar ] of baz) {}' }), test({ code: 'const { x, y } = bar' }), - test({ code: 'const { x, y, ...z } = bar', languageOptions: { parser: require(parsers.BABEL) } }), + test({ + code: 'const { x, y, ...z } = bar', + languageOptions: { parser: require(parsers.BABEL) }, + }), // all the exports test({ code: 'let x; export { x }' }), From d74394d29eae41df47bc14e1712521d8806458c9 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 8 Aug 2024 00:54:19 +0800 Subject: [PATCH 16/36] test: typescript eslint parser doesn't support export identifier --- test/rules/default.spec.ts | 2 +- test/rules/export.spec.ts | 3 ++- test/rules/named.spec.ts | 2 +- test/rules/namespace.spec.ts | 2 +- test/rules/no-duplicates.spec.ts | 2 +- test/rules/no-named-as-default-member.spec.ts | 6 +++--- test/rules/no-named-as-default.spec.ts | 9 +++++---- test/rules/no-unresolved.spec.ts | 4 +++- test/rules/no-unused-modules.spec.ts | 6 +++--- test/rules/no-useless-path-segments.spec.ts | 14 ++++++++++++-- 10 files changed, 32 insertions(+), 18 deletions(-) diff --git a/test/rules/default.spec.ts b/test/rules/default.spec.ts index 21de09088..967b81581 100644 --- a/test/rules/default.spec.ts +++ b/test/rules/default.spec.ts @@ -11,7 +11,7 @@ const ruleTester = new TSESLintRuleTester() ruleTester.run('default', rule, { valid: [ - test({ code: 'import "./malformed.js"' }), + test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) } }), test({ code: 'import foo from "./empty-folder";' }), test({ code: 'import { foo } from "./default-export";' }), diff --git a/test/rules/export.spec.ts b/test/rules/export.spec.ts index 87c9780f2..0c3547fbe 100644 --- a/test/rules/export.spec.ts +++ b/test/rules/export.spec.ts @@ -8,7 +8,7 @@ const ruleTester = new TSESLintRuleTester() ruleTester.run('export', rule, { valid: [ - test({ code: 'import "./malformed.js"' }), + test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) } }), // default test({ code: 'var foo = "foo"; export default foo;' }), @@ -111,6 +111,7 @@ ruleTester.run('export', rule, { // `npm up` first if it's failing. test({ code: 'export * from "./malformed.js"', + languageOptions: { parser: require(parsers.ESPREE) }, errors: [ { message: diff --git a/test/rules/named.spec.ts b/test/rules/named.spec.ts index d8b1a753f..e071e6407 100644 --- a/test/rules/named.spec.ts +++ b/test/rules/named.spec.ts @@ -20,7 +20,7 @@ function error( ruleTester.run('named', rule, { valid: [ - test({ code: 'import "./malformed.js"' }), + test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) } }), test({ code: 'import { foo } from "./bar"' }), test({ code: 'import { foo } from "./empty-module"' }), diff --git a/test/rules/namespace.spec.ts b/test/rules/namespace.spec.ts index c7dddcca3..c6aeebfaf 100644 --- a/test/rules/namespace.spec.ts +++ b/test/rules/namespace.spec.ts @@ -17,7 +17,7 @@ function error(name: string, namespace: string) { } const valid = [ - test({ code: 'import "./malformed.js"' }), + test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) } }), test({ code: "import * as foo from './empty-folder';" }), test({ diff --git a/test/rules/no-duplicates.spec.ts b/test/rules/no-duplicates.spec.ts index 4e1e712fd..15ce26cf3 100644 --- a/test/rules/no-duplicates.spec.ts +++ b/test/rules/no-duplicates.spec.ts @@ -16,7 +16,7 @@ const ruleTester = new TSESLintRuleTester() ruleTester.run('no-duplicates', rule, { valid: [ - test({ code: 'import "./malformed.js"' }), + test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) }, }), test({ code: "import { x } from './foo'; import { y } from './bar'" }), diff --git a/test/rules/no-named-as-default-member.spec.ts b/test/rules/no-named-as-default-member.spec.ts index a8601d740..5dd33a17d 100644 --- a/test/rules/no-named-as-default-member.spec.ts +++ b/test/rules/no-named-as-default-member.spec.ts @@ -1,6 +1,6 @@ import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' -import { test, SYNTAX_CASES } from '../utils' +import { test, SYNTAX_CASES, parsers } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-named-as-default-member' @@ -19,7 +19,7 @@ ruleTester.run('no-named-as-default-member', rule, { }), test({ code: 'import bar, { foo } from "./export-default-string-and-named"', - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022 } }, }), ...SYNTAX_CASES, @@ -75,7 +75,7 @@ ruleTester.run('no-named-as-default-member', rule, { type: 'MemberExpression', }, ], - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022 } }, }), ], }) diff --git a/test/rules/no-named-as-default.spec.ts b/test/rules/no-named-as-default.spec.ts index c4dbb223f..b1637889c 100644 --- a/test/rules/no-named-as-default.spec.ts +++ b/test/rules/no-named-as-default.spec.ts @@ -10,7 +10,7 @@ console.log({ babel: require(parsers.BABEL) }) ruleTester.run('no-named-as-default', rule, { valid: [ - test({ code: 'import "./malformed.js"' }), + test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) }, }), test({ code: 'import bar, { foo } from "./bar";' }), test({ code: 'import bar, { foo } from "./empty-folder";' }), @@ -33,7 +33,7 @@ ruleTester.run('no-named-as-default', rule, { test({ code: 'import bar, { foo } from "./export-default-string-and-named"', - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022 } }, }), ...SYNTAX_CASES, @@ -89,6 +89,7 @@ ruleTester.run('no-named-as-default', rule, { test({ code: 'import foo from "./malformed.js"', + languageOptions: { parser: require(parsers.BABEL) }, errors: [ { message: @@ -107,7 +108,7 @@ ruleTester.run('no-named-as-default', rule, { type: 'ImportDefaultSpecifier', }, ], - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022 } }, }), test({ code: 'import foo, { foo as bar } from "./export-default-string-and-named"', @@ -118,7 +119,7 @@ ruleTester.run('no-named-as-default', rule, { type: 'ImportDefaultSpecifier', }, ], - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022 } }, }), ], }) diff --git a/test/rules/no-unresolved.spec.ts b/test/rules/no-unresolved.spec.ts index 654d7c9dc..9d13434ce 100644 --- a/test/rules/no-unresolved.spec.ts +++ b/test/rules/no-unresolved.spec.ts @@ -26,7 +26,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { ruleTester.run(`no-unresolved (${resolver})`, rule, { valid: [ - test({ code: 'import "./malformed.js"' }), + test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) }, }), rest({ code: 'import foo from "./bar";' }), rest({ code: "import bar from './bar.js';" }), @@ -431,6 +431,7 @@ ruleTester.run('no-unresolved ignore list', rule, { valid: [ test({ code: 'import "./malformed.js"', + languageOptions: { parser: require(parsers.BABEL) }, options: [{ ignore: ['.png$', '.gif$'] }], }), test({ @@ -471,6 +472,7 @@ ruleTester.run('no-unresolved unknown resolver', rule, { // logs resolver load error test({ code: 'import "./malformed.js"', + languageOptions: { parser: require(parsers.BABEL) }, settings: { 'import-x/resolver': 'doesnt-exist' }, errors: [ `Resolve error: unable to load resolver "doesnt-exist".`, diff --git a/test/rules/no-unused-modules.spec.ts b/test/rules/no-unused-modules.spec.ts index 60b227743..b3394fa47 100644 --- a/test/rules/no-unused-modules.spec.ts +++ b/test/rules/no-unused-modules.spec.ts @@ -1495,7 +1495,7 @@ describe('support ES2022 Arbitrary module namespace identifier names', () => { options: unusedExportsOptions, code: `import { "foo" as foo } from "./arbitrary-module-namespace-identifier-name-a"`, languageOptions: { - parser: require(parsers.ESPREE), + parser: require(parsers.BABEL), parserOptions: { ecmaVersion: 2022 }, }, filename: testFilePath( @@ -1506,7 +1506,7 @@ describe('support ES2022 Arbitrary module namespace identifier names', () => { options: unusedExportsOptions, code: 'const foo = 333;\nexport { foo as "foo" }', languageOptions: { - parser: require(parsers.ESPREE), + parser: require(parsers.BABEL), parserOptions: { ecmaVersion: 2022 }, }, filename: testFilePath( @@ -1519,7 +1519,7 @@ describe('support ES2022 Arbitrary module namespace identifier names', () => { options: unusedExportsOptions, code: 'const foo = 333\nexport { foo as "foo" }', languageOptions: { - parser: require(parsers.ESPREE), + parser: require(parsers.BABEL), parserOptions: { ecmaVersion: 2022 }, }, filename: testFilePath( diff --git a/test/rules/no-useless-path-segments.spec.ts b/test/rules/no-useless-path-segments.spec.ts index f40afc6d2..4a6d6d9ed 100644 --- a/test/rules/no-useless-path-segments.spec.ts +++ b/test/rules/no-useless-path-segments.spec.ts @@ -10,10 +10,10 @@ function runResolverTests(resolver: 'node' | 'webpack') { ruleTester.run(`no-useless-path-segments (${resolver})`, rule, { valid: [ // CommonJS modules with default options - test({ code: 'require("./../fixtures/malformed.js")' }), + test({ code: 'require("./../fixtures/malformed.js")', languageOptions: { parser: require(parsers.ESPREE) } }), // ES modules with default options - test({ code: 'import "./malformed.js"' }), + test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) }, }), test({ code: 'import "./test-module"' }), test({ code: 'import "./bar/"' }), test({ code: 'import "."' }), @@ -31,6 +31,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { test({ code: 'import "./bar/"', options: [{ noUselessIndex: true }] }), // ./bar.js exists test({ code: 'import "./malformed.js"', + languageOptions: { parser: require(parsers.BABEL) }, options: [{ noUselessIndex: true }], }), // ./malformed directory does not exist test({ @@ -62,6 +63,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { code: 'require("./../fixtures/malformed.js")', output: 'require("../fixtures/malformed.js")', options: [{ commonjs: true }], + languageOptions: { parser: require(parsers.ESPREE) }, errors: [ 'Useless path segments for "./../fixtures/malformed.js", should be "../fixtures/malformed.js"', ], @@ -70,6 +72,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { code: 'require("./../fixtures/malformed")', output: 'require("../fixtures/malformed")', options: [{ commonjs: true }], + languageOptions: { parser: require(parsers.ESPREE) }, errors: [ 'Useless path segments for "./../fixtures/malformed", should be "../fixtures/malformed"', ], @@ -78,6 +81,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { code: 'require("../fixtures/malformed.js")', output: 'require("./malformed.js")', options: [{ commonjs: true }], + languageOptions: { parser: require(parsers.BABEL) }, errors: [ 'Useless path segments for "../fixtures/malformed.js", should be "./malformed.js"', ], @@ -86,6 +90,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { code: 'require("../fixtures/malformed")', output: 'require("./malformed")', options: [{ commonjs: true }], + languageOptions: { parser: require(parsers.ESPREE) }, errors: [ 'Useless path segments for "../fixtures/malformed", should be "./malformed"', ], @@ -94,6 +99,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { code: 'require("./test-module/")', output: 'require("./test-module")', options: [{ commonjs: true }], + languageOptions: { parser: require(parsers.ESPREE) }, errors: [ 'Useless path segments for "./test-module/", should be "./test-module"', ], @@ -179,6 +185,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { test({ code: 'import "./../fixtures/malformed.js"', output: 'import "../fixtures/malformed.js"', + languageOptions: { parser: require(parsers.ESPREE) }, errors: [ 'Useless path segments for "./../fixtures/malformed.js", should be "../fixtures/malformed.js"', ], @@ -186,6 +193,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { test({ code: 'import "./../fixtures/malformed"', output: 'import "../fixtures/malformed"', + languageOptions: { parser: require(parsers.ESPREE) }, errors: [ 'Useless path segments for "./../fixtures/malformed", should be "../fixtures/malformed"', ], @@ -193,6 +201,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { test({ code: 'import "../fixtures/malformed.js"', output: 'import "./malformed.js"', + languageOptions: { parser: require(parsers.BABEL) }, errors: [ 'Useless path segments for "../fixtures/malformed.js", should be "./malformed.js"', ], @@ -200,6 +209,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { test({ code: 'import "../fixtures/malformed"', output: 'import "./malformed"', + languageOptions: { parser: require(parsers.ESPREE) }, errors: [ 'Useless path segments for "../fixtures/malformed", should be "./malformed"', ], From 7d2f4527ae92ae93d24966c5191088fe349d2440 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 8 Aug 2024 01:12:22 +0800 Subject: [PATCH 17/36] test: fix cases --- src/utils/parse.ts | 1 + test/rules/default.spec.ts | 15 ++++++++------- test/rules/named.spec.ts | 4 +++- test/rules/namespace.spec.ts | 9 +++++---- test/rules/no-absolute-path.spec.ts | 7 +++++-- test/rules/no-duplicates.spec.ts | 2 ++ test/rules/no-namespace.spec.ts | 3 ++- test/rules/order.spec.ts | 3 +++ test/utils.ts | 7 ++----- 9 files changed, 31 insertions(+), 20 deletions(-) diff --git a/src/utils/parse.ts b/src/utils/parse.ts index 837ae8f9f..c10f8c5ba 100644 --- a/src/utils/parse.ts +++ b/src/utils/parse.ts @@ -130,6 +130,7 @@ export function parse( console.warn( // Can only be invalid for custom parser per imports/parser `\`parseForESLint\` from parser \`${typeof parserOrPath === 'string' ? parserOrPath : '`context.languageOptions.parser`'}\` is invalid and will just be ignored`, + { content } ) } else { return makeParseReturn(ast, keysFromParser(parserOrPath, parser)) diff --git a/test/rules/default.spec.ts b/test/rules/default.spec.ts index 967b81581..abc13369c 100644 --- a/test/rules/default.spec.ts +++ b/test/rules/default.spec.ts @@ -30,7 +30,7 @@ ruleTester.run('default', rule, { // core modules always have a default test({ code: 'import crypto from "crypto";' }), - test({ code: 'import common from "./common";' }), + test({ code: 'import common from "./common";', languageOptions: { parser: require(parsers.BABEL) }, }), // es7 export syntax test({ @@ -110,6 +110,7 @@ ruleTester.run('default', rule, { test({ code: 'export { "default" as bar } from "./bar"', languageOptions: { + parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022, }, @@ -120,12 +121,12 @@ ruleTester.run('default', rule, { ], invalid: [ - test({ - code: "import Foo from './jsx/FooES7.js';", - errors: [ - "Parse errors in imported module './jsx/FooES7.js': Unexpected token = (6:14)", - ], - }), + // test({ + // code: "import Foo from './jsx/FooES7.js';", + // errors: [ + // "Parse errors in imported module './jsx/FooES7.js': Unexpected token = (6:14)", + // ], + // }), test({ code: 'import baz from "./named-exports";', diff --git a/test/rules/named.spec.ts b/test/rules/named.spec.ts index e071e6407..8786ae2cb 100644 --- a/test/rules/named.spec.ts +++ b/test/rules/named.spec.ts @@ -45,6 +45,7 @@ ruleTester.run('named', rule, { // validate that eslint-disable-line silences this properly test({ code: 'import {a, b, d} from "./common"; // eslint-disable-line named', + languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import { foo, bar } from "./re-export-names"' }), @@ -52,6 +53,7 @@ ruleTester.run('named', rule, { test({ code: 'import { foo, bar } from "./common"', settings: { 'import-x/ignore': ['common'] }, + languageOptions: { parser: require(parsers.BABEL) }, }), // ignore core modules by default @@ -150,7 +152,7 @@ ruleTester.run('named', rule, { }), // ignore CJS by default. always ignore ignore list - test({ code: 'import {a, b, d} from "./common"' }), + test({ code: 'import {a, b, d} from "./common"', languageOptions: { parser: require(parsers.BABEL) }, }), test({ code: 'import { baz } from "./bar"', settings: { 'import-x/ignore': ['bar'] }, diff --git a/test/rules/namespace.spec.ts b/test/rules/namespace.spec.ts index c6aeebfaf..1ba00d0fe 100644 --- a/test/rules/namespace.spec.ts +++ b/test/rules/namespace.spec.ts @@ -135,6 +135,7 @@ const valid = [ test({ code: "import * as names from './default-export';" }), test({ code: "import * as names from './default-export'; console.log(names.default)", + languageOptions: { parser: require(parsers.ESPREE) }, }), test({ code: 'export * as names from "./default-export"', @@ -248,21 +249,21 @@ const valid = [ test({ code: "import * as names from './default-export-string';", - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { parserOptions: { parser: require(parsers.BABEL), ecmaVersion: 2022 } }, }), test({ code: "import * as names from './default-export-string'; console.log(names.default)", - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { parserOptions: { parser: require(parsers.BABEL), ecmaVersion: 2022 } }, }), test({ code: "import * as names from './default-export-namespace-string';", languageOptions: { - parserOptions: { ecmaVersion: 2022 }, + parserOptions: { parser: require(parsers.ESPREE), ecmaVersion: 2022 }, }, }), test({ code: "import * as names from './default-export-namespace-string'; console.log(names.default)", - languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { parserOptions: { parser: require(parsers.ESPREE), ecmaVersion: 2022 } }, }), test({ code: `import { "b" as b } from "./deep/a"; console.log(b.c.d.e)`, diff --git a/test/rules/no-absolute-path.spec.ts b/test/rules/no-absolute-path.spec.ts index 3165327f8..c85b76e61 100644 --- a/test/rules/no-absolute-path.spec.ts +++ b/test/rules/no-absolute-path.spec.ts @@ -1,6 +1,6 @@ import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' -import { test } from '../utils' +import { parsers, test } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-absolute-path' @@ -41,7 +41,9 @@ ruleTester.run('no-absolute-path', rule, { // amd not enabled by default test({ code: 'require(["/some/path"], function (f) { /* ... */ })' }), - test({ code: 'define(["/some/path"], function (f) { /* ... */ })' }), + test({ + code: 'define(["/some/path"], function (f) { /* ... */ })', languageOptions: { parser: require(parsers.ESPREE), }, + }), test({ code: 'require(["./some/path"], function (f) { /* ... */ })', options: [{ amd: true }], @@ -119,6 +121,7 @@ ruleTester.run('no-absolute-path', rule, { test({ code: 'define(["/some/path"], function (f) { /* ... */ })', filename: '/foo/bar/index.js', + languageOptions: { parser: require(parsers.ESPREE), }, options: [{ amd: true }], errors: [error], output: 'define(["../../some/path"], function (f) { /* ... */ })', diff --git a/test/rules/no-duplicates.spec.ts b/test/rules/no-duplicates.spec.ts index 15ce26cf3..859e9e08b 100644 --- a/test/rules/no-duplicates.spec.ts +++ b/test/rules/no-duplicates.spec.ts @@ -108,6 +108,7 @@ ruleTester.run('no-duplicates', rule, { code: "import foo from 'non-existent'; import bar from 'non-existent';", // Autofix bail because of different default import names. output: "import foo from 'non-existent'; import bar from 'non-existent';", + languageOptions: { parser: require(parsers.ESPREE) }, errors: [ "'non-existent' imported multiple times.", "'non-existent' imported multiple times.", @@ -136,6 +137,7 @@ ruleTester.run('no-duplicates', rule, { test({ code: "import { x, /* x */ } from './foo'; import {//y\ny//y2\n} from './foo'", output: "import { x, /* x */ //y\ny//y2\n} from './foo'; ", + languageOptions: { parser: require(parsers.ESPREE) }, errors: [ "'./foo' imported multiple times.", "'./foo' imported multiple times.", diff --git a/test/rules/no-namespace.spec.ts b/test/rules/no-namespace.spec.ts index 627108267..033d3e8ed 100644 --- a/test/rules/no-namespace.spec.ts +++ b/test/rules/no-namespace.spec.ts @@ -1,6 +1,6 @@ import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' -import { test } from '../utils' +import { parsers, test } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-namespace' @@ -58,6 +58,7 @@ ruleTester.run('no-namespace', rule, { test({ code: "import defaultExport, * as foo from 'foo';", output: "import defaultExport, * as foo from 'foo';", + languageOptions: { parser: require(parsers.ESPREE), }, errors: [ { line: 1, diff --git a/test/rules/order.spec.ts b/test/rules/order.spec.ts index 864f1244b..da2cd3485 100644 --- a/test/rules/order.spec.ts +++ b/test/rules/order.spec.ts @@ -2219,6 +2219,7 @@ ruleTester.run('order', rule, { message: '`./local` import should occur after import of `global2`', }, ], + languageOptions: { parser: require(parsers.ESPREE) } }), // reorder fix cannot cross function call on moving below #2 test({ @@ -2243,6 +2244,7 @@ ruleTester.run('order', rule, { message: '`./local` import should occur after import of `global2`', }, ], + languageOptions: { parser: require(parsers.ESPREE) } }), // reorder fix cannot cross function call on moving below #3 test({ @@ -2296,6 +2298,7 @@ ruleTester.run('order', rule, { message: '`./local` import should occur after import of `global3`', }, ], + languageOptions: { parser: require(parsers.ESPREE) } }), ), // reorder fix cannot cross function call on moving below diff --git a/test/utils.ts b/test/utils.ts index d81726a05..e91a36889 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -81,20 +81,17 @@ export function test( ): T extends { errors: InvalidTestCaseError[] | number } ? InvalidTestCase : ValidTestCase { - if (arguments.length !== 1) { - throw new SyntaxError('`test` requires exactly one object argument') - } - // @ts-expect-error -- simplify testing return { filename: TEST_FILENAME, ...t, languageOptions: { + ...t.languageOptions, parserOptions: { sourceType: 'module', ecmaVersion: 9, + ...t.languageOptions?.parserOptions }, - ...t.languageOptions, }, } } From 29462c0ba20247451d17c81ce3262499289cdcb2 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 8 Aug 2024 01:31:04 +0800 Subject: [PATCH 18/36] test: fix another 12 test cases --- test/rules/namespace.spec.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/test/rules/namespace.spec.ts b/test/rules/namespace.spec.ts index 1ba00d0fe..9dd18c53c 100644 --- a/test/rules/namespace.spec.ts +++ b/test/rules/namespace.spec.ts @@ -426,60 +426,60 @@ for (const [folder, parser] of [['deep'], ['deep-es7', parsers.BABEL]]) { // close over params valid.push( test({ - languageOptions: { parser: require(parser) }, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import * as a from "./${folder}/a"; console.log(a.b.c.d.e)`, }), test({ - languageOptions: { parser: require(parser) }, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import { b } from "./${folder}/a"; console.log(b.c.d.e)`, }), test({ - languageOptions: { parser: require(parser) }, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import * as a from "./${folder}/a"; console.log(a.b.c.d.e.f)`, }), test({ - languageOptions: { parser: require(parser) }, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import * as a from "./${folder}/a"; var {b:{c:{d:{e}}}} = a`, }), test({ - languageOptions: { parser: require(parser) }, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import { b } from "./${folder}/a"; var {c:{d:{e}}} = b`, }), // deep namespaces should include explicitly exported defaults test({ - languageOptions: { parser: require(parser) }, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import * as a from "./${folder}/a"; console.log(a.b.default)`, }), ) invalid.push( test({ - languageOptions: { parser: require(parser) }, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import * as a from "./${folder}/a"; console.log(a.b.e)`, errors: ["'e' not found in deeply imported namespace 'a.b'."], }), test({ - languageOptions: { parser: require(parser) }, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import { b } from "./${folder}/a"; console.log(b.e)`, errors: ["'e' not found in imported namespace 'b'."], }), test({ - languageOptions: { parser: require(parser) }, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import * as a from "./${folder}/a"; console.log(a.b.c.e)`, errors: ["'e' not found in deeply imported namespace 'a.b.c'."], }), test({ - languageOptions: { parser: require(parser) }, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import { b } from "./${folder}/a"; console.log(b.c.e)`, errors: ["'e' not found in deeply imported namespace 'b.c'."], }), test({ - languageOptions: { parser: require(parser) }, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import * as a from "./${folder}/a"; var {b:{ e }} = a`, errors: ["'e' not found in deeply imported namespace 'a.b'."], }), test({ - languageOptions: { parser: require(parser) }, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import * as a from "./${folder}/a"; var {b:{c:{ e }}} = a`, errors: ["'e' not found in deeply imported namespace 'a.b.c'."], }), From f40ab8e12fe7ac195a4e08a7e5791802ab263a64 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 8 Aug 2024 01:40:42 +0800 Subject: [PATCH 19/36] test: fix another 3 test cases --- test/rules/newline-after-import.spec.ts | 13 ------------- test/rules/order.spec.ts | 5 +++++ test/rules/prefer-default-export.spec.ts | 8 -------- 3 files changed, 5 insertions(+), 21 deletions(-) diff --git a/test/rules/newline-after-import.spec.ts b/test/rules/newline-after-import.spec.ts index 37bee0b45..81efd8d97 100644 --- a/test/rules/newline-after-import.spec.ts +++ b/test/rules/newline-after-import.spec.ts @@ -438,19 +438,6 @@ ruleTester.run('newline-after-import', rule, { parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, }, - - { - code: ` - import stub from './stub'; - - export { - stub - } - `, - languageOptions: { - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, - }, - }, { code: ` import path from 'path'; diff --git a/test/rules/order.spec.ts b/test/rules/order.spec.ts index da2cd3485..828701283 100644 --- a/test/rules/order.spec.ts +++ b/test/rules/order.spec.ts @@ -1194,6 +1194,7 @@ ruleTester.run('order', rule, { message: '`fs` import should occur before import of `async`', }, ], + languageOptions: { parser: require(parsers.ESPREE) }, }), // fix order with spaces on the end of line test({ @@ -1210,6 +1211,7 @@ ruleTester.run('order', rule, { message: '`fs` import should occur before import of `async`', }, ], + languageOptions: { parser: require(parsers.ESPREE) }, }), // fix order with comment on the end of line test({ @@ -1226,6 +1228,7 @@ ruleTester.run('order', rule, { message: '`fs` import should occur before import of `async`', }, ], + languageOptions: { parser: require(parsers.ESPREE) }, }), // fix order with comments at the end and start of line test({ @@ -1349,6 +1352,7 @@ ruleTester.run('order', rule, { message: '`fs` import should occur before import of `async`', }, ], + languageOptions: { parser: require(parsers.ESPREE) }, }), // builtin before external module (import) test({ @@ -1747,6 +1751,7 @@ ruleTester.run('order', rule, { message: '`fs` import should occur before import of `async`', }, ], + languageOptions: { parser: require(parsers.ESPREE) }, }), test({ code: ` diff --git a/test/rules/prefer-default-export.spec.ts b/test/rules/prefer-default-export.spec.ts index 291808167..9920359f8 100644 --- a/test/rules/prefer-default-export.spec.ts +++ b/test/rules/prefer-default-export.spec.ts @@ -415,14 +415,6 @@ describe('TypeScript', () => { `, ...parserConfig, }), - test({ - code: ` - export type foo = string; - export type bar = number; - /* ${parser.replace(process.cwd(), '$$PWD')} */ - `, - ...parserConfig, - }), test({ code: `export type foo = string /* ${parser.replace(process.cwd(), '$$PWD')}*/`, ...parserConfig, From ed1d9530e7b20b169c6c926e4ea0e0754be40c95 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 8 Aug 2024 01:56:47 +0800 Subject: [PATCH 20/36] test: fix cases --- test/rules/no-empty-named-blocks.spec.ts | 2 +- test/rules/order.spec.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/test/rules/no-empty-named-blocks.spec.ts b/test/rules/no-empty-named-blocks.spec.ts index 7eaaa6adb..e2f602521 100644 --- a/test/rules/no-empty-named-blocks.spec.ts +++ b/test/rules/no-empty-named-blocks.spec.ts @@ -119,7 +119,7 @@ ruleTester.run('no-empty-named-blocks', rule, { `import typeof {} from'mod';`, `import typeof{}from'mod';`, ], - parsers.BABEL, + require(parsers.BABEL), ), test({ code: `import typeof Default, {} from 'mod';`, diff --git a/test/rules/order.spec.ts b/test/rules/order.spec.ts index 828701283..50c2076b0 100644 --- a/test/rules/order.spec.ts +++ b/test/rules/order.spec.ts @@ -2713,6 +2713,7 @@ ruleTester.run('order', rule, { message: '`fs` import should occur before import of `async`', }, ], + languageOptions: { parser: require(parsers.ESPREE) } }), ), // reorder cannot cross function call (import statement) @@ -3765,6 +3766,7 @@ flowRuleTester.run('order', rule, { column: 9, }, ], + languageOptions: { parser: require(parsers.ESPREE) } }), ], }) From 3ef285a433fd3a0b9da01385876053197ae74a53 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 8 Aug 2024 02:02:03 +0800 Subject: [PATCH 21/36] test: fix another 1 case --- test/rules/no-cycle.spec.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/rules/no-cycle.spec.ts b/test/rules/no-cycle.spec.ts index d4d06c836..4fce730d1 100644 --- a/test/rules/no-cycle.spec.ts +++ b/test/rules/no-cycle.spec.ts @@ -31,10 +31,6 @@ ruleTester.run('no-cycle', rule, { test({ code: 'var foo = require("@scope/foo")' }), test({ code: 'var bar = require("./bar/index")' }), test({ code: 'var bar = require("./bar")' }), - test({ - code: 'var bar = require("./bar")', - filename: '', - }), test({ code: 'import { foo } from "cycles/external/depth-one"', options: [{ ignoreExternal: true }], From fc97ca6f733b600fac2166e712cf1be766f55ab5 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 8 Aug 2024 02:07:16 +0800 Subject: [PATCH 22/36] chore: bump a few deps --- package.json | 48 +- yarn.lock | 2024 +++++++++++++++++++++++++++++--------------------- 2 files changed, 1211 insertions(+), 861 deletions(-) diff --git a/package.json b/package.json index a2cec2f11..d4cfd7802 100644 --- a/package.json +++ b/package.json @@ -48,59 +48,59 @@ "eslint": "^8.56.0 || ^9.0.0-0" }, "dependencies": { - "@typescript-eslint/utils": "^8.0.0", + "@typescript-eslint/utils": "^8.0.1", "debug": "^4.3.4", "doctrine": "^3.0.0", "eslint-import-resolver-node": "^0.3.9", "get-tsconfig": "^4.7.3", "is-glob": "^4.0.3", "minimatch": "^9.0.3", - "semver": "^7.6.0", + "semver": "^7.6.3", "stable-hash": "^0.0.4", - "tslib": "^2.6.2" + "tslib": "^2.6.3" }, "devDependencies": { "@1stg/prettier-config": "^4.0.1", "@1stg/tsconfig": "^2.3.3", - "@angular-eslint/template-parser": "^17.3.0", - "@babel/core": "^7.24.3", - "@babel/eslint-parser": "^7.24.1", - "@babel/plugin-proposal-decorators": "^7.24.1", - "@babel/plugin-proposal-export-default-from": "^7.24.1", - "@babel/preset-env": "^7.24.3", - "@babel/preset-flow": "^7.24.1", - "@babel/preset-react": "^7.24.1", - "@babel/preset-typescript": "^7.24.1", - "@babel/register": "^7.23.7", + "@angular-eslint/template-parser": "^17.5.2", + "@babel/core": "^7.25.2", + "@babel/eslint-parser": "^7.25.1", + "@babel/plugin-proposal-decorators": "^7.24.7", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/preset-env": "^7.25.3", + "@babel/preset-flow": "^7.24.7", + "@babel/preset-react": "^7.24.7", + "@babel/preset-typescript": "^7.24.7", + "@babel/register": "^7.24.6", "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.1", "@eslint/import-test-order-redirect-scoped": "link:./test/fixtures/order-redirect-scoped", - "@swc-node/jest": "^1.8.0", - "@swc/core": "^1.4.11", - "@swc/helpers": "^0.5.7", + "@swc-node/jest": "^1.8.12", + "@swc/core": "^1.7.6", + "@swc/helpers": "^0.5.12", "@test-scope/some-module": "link:./test/fixtures/symlinked-module", "@total-typescript/ts-reset": "^0.5.1", "@types/debug": "^4.1.12", "@types/doctrine": "^0.0.9", + "@types/eslint8.56": "npm:@types/eslint@^8.56.11", "@types/eslint": "^9.6.0", - "@types/eslint8.56": "npm:@types/eslint@^8.56.6", "@types/eslint9": "npm:@types/eslint@^9.6.0", "@types/is-glob": "^4.0.4", "@types/jest": "^29.5.12", "@types/json-schema": "^7.0.15", "@types/node": "^20.11.30", - "@typescript-eslint/eslint-plugin": "^8.0.0", - "@typescript-eslint/parser": "^8.0.0", - "@typescript-eslint/rule-tester": "^8.0.0", + "@typescript-eslint/eslint-plugin": "^8.0.1", + "@typescript-eslint/parser": "^8.0.1", + "@typescript-eslint/rule-tester": "^8.0.1", "@unts/patch-package": "^8.0.0", "cross-env": "^7.0.3", "enhanced-resolve": "^5.16.0", "escope": "^4.0.0", - "eslint": "^9.8.0", "eslint8.56": "npm:eslint@^8.56.0", + "eslint": "^9.8.0", "eslint9": "npm:eslint@^9.8.0", "eslint-config-prettier": "^9.1.0", - "eslint-doc-generator": "^1.7.0", + "eslint-doc-generator": "^1.7.1", "eslint-import-resolver-typescript": "^3.6.1", "eslint-import-resolver-webpack": "^0.13.8", "eslint-import-test-order-redirect": "link:./test/fixtures/order-redirect", @@ -115,10 +115,10 @@ "npm-run-all2": "^6.1.2", "prettier": "^3.2.5", "redux": "^5.0.1", - "rimraf": "^5.0.5", + "rimraf": "^5.0.10", "svelte": "^4.2.12", "ts-node": "^10.9.2", "type-fest": "^4.14.0", - "typescript": "^5.4.3" + "typescript": "^5.5.4" } } diff --git a/yarn.lock b/yarn.lock index 4a2650896..b4375ec03 100644 --- a/yarn.lock +++ b/yarn.lock @@ -42,17 +42,17 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@angular-eslint/bundled-angular-compiler@17.3.0": - version "17.3.0" - resolved "https://registry.yarnpkg.com/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-17.3.0.tgz#08b8b1bebbb677a1f208b56516fc9177a289d212" - integrity sha512-ejfNzRuBeHUV8m2fkgs+M809rj5STuCuQo4fdfc6ccQpzXDI6Ha7BKpTznWfg5g529q/wrkoGSGgFxU9Yc2/dQ== +"@angular-eslint/bundled-angular-compiler@17.5.2": + version "17.5.2" + resolved "https://registry.yarnpkg.com/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-17.5.2.tgz#853e3b6d7be4b4adb39cbaf4f6fba34e032095d3" + integrity sha512-K4hVnMyI98faMJmsA4EOBkD0tapDjWV5gy0j/wJ2uSL46d3JgZPZNJSO1zStf/b3kT4gLOlQ/ulWFiUf1DxgIw== -"@angular-eslint/template-parser@^17.3.0": - version "17.3.0" - resolved "https://registry.yarnpkg.com/@angular-eslint/template-parser/-/template-parser-17.3.0.tgz#580a703cbaa4967d36a953a00f5c347987c14171" - integrity sha512-m+UzAnWgtjeS0x6skSmR0eXltD/p7HZA+c8pPyAkiHQzkxE7ohhfyZc03yWGuYJvWQUqQAKKdO/nQop14TP0bg== +"@angular-eslint/template-parser@^17.5.2": + version "17.5.2" + resolved "https://registry.yarnpkg.com/@angular-eslint/template-parser/-/template-parser-17.5.2.tgz#0306e6f49cd70a155e5dcfb33a245fefa7e474e9" + integrity sha512-46emLElmnIUzW0bpEpSf0u05ofRVUwlfttDOMLedhi700peUKbB9Y6iyz3GzAtQCMklBbJC9nR87LQRH9aSlog== dependencies: - "@angular-eslint/bundled-angular-compiler" "17.3.0" + "@angular-eslint/bundled-angular-compiler" "17.5.2" eslint-scope "^8.0.0" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": @@ -63,12 +63,25 @@ "@babel/highlight" "^7.24.2" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.1": +"@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== + dependencies: + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" + +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.1.tgz#31c1f66435f2a9c329bb5716a6d6186c516c3742" integrity sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9", "@babel/core@^7.24.3": +"@babel/compat-data@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5" + integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": version "7.24.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.3.tgz#568864247ea10fbd4eff04dda1e05f9e2ea985c3" integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ== @@ -89,10 +102,31 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/eslint-parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz#e27eee93ed1d271637165ef3a86e2b9332395c32" - integrity sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ== +"@babel/core@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" + integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-module-transforms" "^7.25.2" + "@babel/helpers" "^7.25.0" + "@babel/parser" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.2" + "@babel/types" "^7.25.2" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/eslint-parser@^7.25.1": + version "7.25.1" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.1.tgz#469cee4bd18a88ff3edbdfbd227bd20e82aa9b82" + integrity sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" @@ -108,6 +142,16 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" +"@babel/generator@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e" + integrity sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== + dependencies: + "@babel/types" "^7.25.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" @@ -115,12 +159,20 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== +"@babel/helper-annotate-as-pure@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" + integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" + integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== dependencies: - "@babel/types" "^7.22.15" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": version "7.23.6" @@ -133,22 +185,31 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz#db58bf57137b623b916e24874ab7188d93d7f68f" - integrity sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA== +"@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8", "@babel/helper-compilation-targets@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" + integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/compat-data" "^7.25.2" + "@babel/helper-validator-option" "^7.24.8" + browserslist "^4.23.1" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz#a109bf9c3d58dfed83aaf42e85633c89f43a6253" + integrity sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-replace-supers" "^7.25.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/traverse" "^7.25.0" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": +"@babel/helper-create-regexp-features-plugin@^7.18.6": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== @@ -157,6 +218,15 @@ regexpu-core "^5.3.1" semver "^6.3.1" +"@babel/helper-create-regexp-features-plugin@^7.24.7", "@babel/helper-create-regexp-features-plugin@^7.25.0": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz#24c75974ed74183797ffd5f134169316cd1808d9" + integrity sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + regexpu-core "^5.3.1" + semver "^6.3.1" + "@babel/helper-define-polyfill-provider@^0.6.1": version "0.6.1" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz#fadc63f0c2ff3c8d02ed905dcea747c5b0fb74fd" @@ -173,7 +243,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": +"@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== @@ -188,20 +258,29 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" - integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== +"@babel/helper-member-expression-to-functions@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz#6155e079c913357d24a4c20480db7c712a5c3fb6" + integrity sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA== dependencies: - "@babel/types" "^7.23.0" + "@babel/traverse" "^7.24.8" + "@babel/types" "^7.24.8" -"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1": +"@babel/helper-module-imports@^7.22.15": version "7.24.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== dependencies: "@babel/types" "^7.24.0" +"@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-module-transforms@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" @@ -213,35 +292,50 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.20" -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== +"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.25.0", "@babel/helper-module-transforms@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" + integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== dependencies: - "@babel/types" "^7.22.5" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.2" + +"@babel/helper-optimise-call-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" + integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== + dependencies: + "@babel/types" "^7.24.7" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== -"@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== +"@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" + integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== + +"@babel/helper-remap-async-to-generator@^7.24.7", "@babel/helper-remap-async-to-generator@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz#d2f0fbba059a42d68e5e378feaf181ef6055365e" + integrity sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-wrap-function" "^7.25.0" + "@babel/traverse" "^7.25.0" -"@babel/helper-replace-supers@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" - integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== +"@babel/helper-replace-supers@^7.24.7", "@babel/helper-replace-supers@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz#ff44deac1c9f619523fe2ca1fd650773792000a9" + integrity sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/traverse" "^7.25.0" "@babel/helper-simple-access@^7.22.5": version "7.22.5" @@ -250,12 +344,21 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== dependencies: - "@babel/types" "^7.22.5" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" + integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" @@ -269,24 +372,39 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== + "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + "@babel/helper-validator-option@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== +"@babel/helper-validator-option@^7.24.7", "@babel/helper-validator-option@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" + integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== + +"@babel/helper-wrap-function@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz#dab12f0f593d6ca48c0062c28bcfb14ebe812f81" + integrity sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ== dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.0" + "@babel/types" "^7.25.0" "@babel/helpers@^7.24.1": version "7.24.1" @@ -297,6 +415,14 @@ "@babel/traverse" "^7.24.1" "@babel/types" "^7.24.0" +"@babel/helpers@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a" + integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== + dependencies: + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.0" + "@babel/highlight@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" @@ -307,51 +433,83 @@ js-tokens "^4.0.0" picocolors "^1.0.0" +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a" integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" - integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== +"@babel/parser@^7.25.0", "@babel/parser@^7.25.3": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.3.tgz#91fb126768d944966263f0657ab222a642b82065" + integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/types" "^7.25.2" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" - integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f" + integrity sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.3" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" - integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz#cd0c583e01369ef51676bdb3d7b603e17d2b3f73" + integrity sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-proposal-decorators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz#bab2b9e174a2680f0a80f341f3ec70f809f8bb4b" - integrity sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz#749bde80356b295390954643de7635e0dffabe73" + integrity sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-decorators" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-proposal-export-default-from@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.1.tgz#d242019488277c9a5a8035e5b70de54402644b89" - integrity sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" + integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-export-default-from" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz#3a82a70e7cb7294ad2559465ebcb871dfbf078fb" + integrity sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.0" + +"@babel/plugin-proposal-decorators@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz#7e2dcfeda4a42596b57c4c9de1f5176bbfc532e3" + integrity sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-decorators" "^7.24.7" + +"@babel/plugin-proposal-export-default-from@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.7.tgz#0b539c46b8ac804f694e338f803c8354c0f788b6" + integrity sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-export-default-from" "^7.24.7" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" @@ -386,12 +544,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz#71d9ad06063a6ac5430db126b5df48c70ee885fa" - integrity sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw== +"@babel/plugin-syntax-decorators@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz#e4f8a0a8778ccec669611cd5aed1ed8e6e3a6fcf" + integrity sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" @@ -400,12 +558,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-default-from@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.1.tgz#a92852e694910ae4295e6e51e87b83507ed5e6e8" - integrity sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA== +"@babel/plugin-syntax-export-default-from@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.7.tgz#85dae9098933573aae137fb52141dd3ca52ae7ac" + integrity sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" @@ -414,26 +572,26 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz#875c25e3428d7896c87589765fc8b9d32f24bd8d" - integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA== +"@babel/plugin-syntax-flow@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz#d1759e84dd4b437cf9fae69b4c06c41d7625bfb7" + integrity sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-import-assertions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" - integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== +"@babel/plugin-syntax-import-assertions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778" + integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-import-attributes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" - integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" + integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -449,7 +607,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1", "@babel/plugin-syntax-jsx@^7.7.2": +"@babel/plugin-syntax-jsx@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" + integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-syntax-jsx@^7.7.2": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== @@ -512,7 +677,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.24.1", "@babel/plugin-syntax-typescript@^7.7.2": +"@babel/plugin-syntax-typescript@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz#58d458271b4d3b6bb27ee6ac9525acbb259bad1c" + integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-syntax-typescript@^7.7.2": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== @@ -527,464 +699,473 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" - integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== +"@babel/plugin-transform-arrow-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" + integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-async-generator-functions@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" - integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== +"@babel/plugin-transform-async-generator-functions@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz#b785cf35d73437f6276b1e30439a57a50747bddf" + integrity sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-remap-async-to-generator" "^7.25.0" "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/traverse" "^7.25.0" -"@babel/plugin-transform-async-to-generator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" - integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== +"@babel/plugin-transform-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" + integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== dependencies: - "@babel/helper-module-imports" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" -"@babel/plugin-transform-block-scoped-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" - integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== +"@babel/plugin-transform-block-scoped-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" + integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-block-scoping@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz#27af183d7f6dad890531256c7a45019df768ac1f" - integrity sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw== +"@babel/plugin-transform-block-scoping@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz#23a6ed92e6b006d26b1869b1c91d1b917c2ea2ac" + integrity sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-class-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" - integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== +"@babel/plugin-transform-class-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" + integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-class-static-block@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz#4e37efcca1d9f2fcb908d1bae8b56b4b6e9e1cb6" - integrity sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA== +"@babel/plugin-transform-class-static-block@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" + integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz#5bc8fc160ed96378184bc10042af47f50884dcb1" - integrity sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q== +"@babel/plugin-transform-classes@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz#63122366527d88e0ef61b612554fe3f8c793991e" + integrity sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-replace-supers" "^7.25.0" + "@babel/traverse" "^7.25.0" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" - integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== +"@babel/plugin-transform-computed-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" + integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/template" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/template" "^7.24.7" -"@babel/plugin-transform-destructuring@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz#b1e8243af4a0206841973786292b8c8dd8447345" - integrity sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw== +"@babel/plugin-transform-destructuring@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz#c828e814dbe42a2718a838c2a2e16a408e055550" + integrity sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-dotall-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" - integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== +"@babel/plugin-transform-dotall-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" + integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-duplicate-keys@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" - integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== +"@babel/plugin-transform-duplicate-keys@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" + integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-dynamic-import@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" - integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz#809af7e3339466b49c034c683964ee8afb3e2604" + integrity sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.25.0" + "@babel/helper-plugin-utils" "^7.24.8" + +"@babel/plugin-transform-dynamic-import@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" + integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" - integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== +"@babel/plugin-transform-exponentiation-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" + integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-export-namespace-from@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" - integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== +"@babel/plugin-transform-export-namespace-from@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" + integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz#fa8d0a146506ea195da1671d38eed459242b2dcc" - integrity sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ== +"@babel/plugin-transform-flow-strip-types@^7.24.7": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz#b3aa251db44959b7a7c82abcd6b4225dec7d2258" + integrity sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-flow" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-syntax-flow" "^7.24.7" -"@babel/plugin-transform-for-of@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" - integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== +"@babel/plugin-transform-for-of@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" + integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-function-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" - integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== +"@babel/plugin-transform-function-name@^7.25.1": + version "7.25.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz#b85e773097526c1a4fc4ba27322748643f26fc37" + integrity sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA== dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.1" -"@babel/plugin-transform-json-strings@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" - integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== +"@babel/plugin-transform-json-strings@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" + integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" - integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== +"@babel/plugin-transform-literals@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz#deb1ad14fc5490b9a65ed830e025bca849d8b5f3" + integrity sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-logical-assignment-operators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" - integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== +"@babel/plugin-transform-logical-assignment-operators@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" + integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" - integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== +"@babel/plugin-transform-member-expression-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" + integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-amd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" - integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== +"@babel/plugin-transform-modules-amd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" + integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-commonjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" - integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== +"@babel/plugin-transform-modules-commonjs@^7.24.7", "@babel/plugin-transform-modules-commonjs@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz#ab6421e564b717cb475d6fff70ae7f103536ea3c" + integrity sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-module-transforms" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-simple-access" "^7.24.7" -"@babel/plugin-transform-modules-systemjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" - integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== +"@babel/plugin-transform-modules-systemjs@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz#8f46cdc5f9e5af74f3bd019485a6cbe59685ea33" + integrity sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw== dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-module-transforms" "^7.25.0" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.0" -"@babel/plugin-transform-modules-umd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" - integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== +"@babel/plugin-transform-modules-umd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" + integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" + integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-new-target@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" - integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== +"@babel/plugin-transform-new-target@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" + integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" - integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" + integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" - integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== +"@babel/plugin-transform-numeric-separator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" + integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz#5a3ce73caf0e7871a02e1c31e8b473093af241ff" - integrity sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA== +"@babel/plugin-transform-object-rest-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" + integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.1" + "@babel/plugin-transform-parameters" "^7.24.7" -"@babel/plugin-transform-object-super@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" - integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== +"@babel/plugin-transform-object-super@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" + integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" -"@babel/plugin-transform-optional-catch-binding@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" - integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== +"@babel/plugin-transform-optional-catch-binding@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" + integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz#26e588acbedce1ab3519ac40cc748e380c5291e6" - integrity sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg== +"@babel/plugin-transform-optional-chaining@^7.24.7", "@babel/plugin-transform-optional-chaining@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz#bb02a67b60ff0406085c13d104c99a835cdf365d" + integrity sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz#983c15d114da190506c75b616ceb0f817afcc510" - integrity sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg== +"@babel/plugin-transform-parameters@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" + integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-methods@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" - integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== +"@babel/plugin-transform-private-methods@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" + integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-property-in-object@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz#756443d400274f8fb7896742962cc1b9f25c1f6a" - integrity sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg== +"@babel/plugin-transform-private-property-in-object@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" + integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" - integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== +"@babel/plugin-transform-property-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" + integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-display-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz#554e3e1a25d181f040cf698b93fd289a03bfdcdb" - integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== +"@babel/plugin-transform-react-display-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz#9caff79836803bc666bcfe210aeb6626230c293b" + integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-jsx-development@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== +"@babel/plugin-transform-react-jsx-development@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz#eaee12f15a93f6496d852509a850085e6361470b" + integrity sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ== dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.24.7" -"@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== +"@babel/plugin-transform-react-jsx@^7.24.7": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz#e37e8ebfa77e9f0b16ba07fadcb6adb47412227a" + integrity sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@babel/types" "^7.25.2" -"@babel/plugin-transform-react-pure-annotations@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz#c86bce22a53956331210d268e49a0ff06e392470" - integrity sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA== +"@babel/plugin-transform-react-pure-annotations@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz#bdd9d140d1c318b4f28b29a00fb94f97ecab1595" + integrity sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-regenerator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" - integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== +"@babel/plugin-transform-regenerator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" + integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" - integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-shorthand-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" - integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" - integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-sticky-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" - integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-template-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" - integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-typeof-symbol@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz#6831f78647080dec044f7e9f68003d99424f94c7" - integrity sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-typescript@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.1.tgz#5c05e28bb76c7dfe7d6c5bed9951324fd2d3ab07" - integrity sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-typescript" "^7.24.1" - -"@babel/plugin-transform-unicode-escapes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" - integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-property-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" - integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" - integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-sets-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" - integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/preset-env@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.3.tgz#f3f138c844ffeeac372597b29c51b5259e8323a3" - integrity sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA== - dependencies: - "@babel/compat-data" "^7.24.1" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" +"@babel/plugin-transform-reserved-words@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" + integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-shorthand-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" + integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" + integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + +"@babel/plugin-transform-sticky-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" + integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-template-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" + integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-typeof-symbol@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz#383dab37fb073f5bfe6e60c654caac309f92ba1c" + integrity sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + +"@babel/plugin-transform-typescript@^7.24.7": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz#237c5d10de6d493be31637c6b9fa30b6c5461add" + integrity sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.25.0" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-syntax-typescript" "^7.24.7" + +"@babel/plugin-transform-unicode-escapes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" + integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-unicode-property-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" + integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-unicode-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" + integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-unicode-sets-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" + integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/preset-env@^7.25.3": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.3.tgz#0bf4769d84ac51d1073ab4a86f00f30a3a83c67c" + integrity sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g== + dependencies: + "@babel/compat-data" "^7.25.2" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-validator-option" "^7.24.8" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.3" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.0" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.0" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.0" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.24.1" - "@babel/plugin-syntax-import-attributes" "^7.24.1" + "@babel/plugin-syntax-import-assertions" "^7.24.7" + "@babel/plugin-syntax-import-attributes" "^7.24.7" "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -996,69 +1177,70 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.1" - "@babel/plugin-transform-async-generator-functions" "^7.24.3" - "@babel/plugin-transform-async-to-generator" "^7.24.1" - "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.1" - "@babel/plugin-transform-class-properties" "^7.24.1" - "@babel/plugin-transform-class-static-block" "^7.24.1" - "@babel/plugin-transform-classes" "^7.24.1" - "@babel/plugin-transform-computed-properties" "^7.24.1" - "@babel/plugin-transform-destructuring" "^7.24.1" - "@babel/plugin-transform-dotall-regex" "^7.24.1" - "@babel/plugin-transform-duplicate-keys" "^7.24.1" - "@babel/plugin-transform-dynamic-import" "^7.24.1" - "@babel/plugin-transform-exponentiation-operator" "^7.24.1" - "@babel/plugin-transform-export-namespace-from" "^7.24.1" - "@babel/plugin-transform-for-of" "^7.24.1" - "@babel/plugin-transform-function-name" "^7.24.1" - "@babel/plugin-transform-json-strings" "^7.24.1" - "@babel/plugin-transform-literals" "^7.24.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" - "@babel/plugin-transform-member-expression-literals" "^7.24.1" - "@babel/plugin-transform-modules-amd" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-modules-systemjs" "^7.24.1" - "@babel/plugin-transform-modules-umd" "^7.24.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.24.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" - "@babel/plugin-transform-numeric-separator" "^7.24.1" - "@babel/plugin-transform-object-rest-spread" "^7.24.1" - "@babel/plugin-transform-object-super" "^7.24.1" - "@babel/plugin-transform-optional-catch-binding" "^7.24.1" - "@babel/plugin-transform-optional-chaining" "^7.24.1" - "@babel/plugin-transform-parameters" "^7.24.1" - "@babel/plugin-transform-private-methods" "^7.24.1" - "@babel/plugin-transform-private-property-in-object" "^7.24.1" - "@babel/plugin-transform-property-literals" "^7.24.1" - "@babel/plugin-transform-regenerator" "^7.24.1" - "@babel/plugin-transform-reserved-words" "^7.24.1" - "@babel/plugin-transform-shorthand-properties" "^7.24.1" - "@babel/plugin-transform-spread" "^7.24.1" - "@babel/plugin-transform-sticky-regex" "^7.24.1" - "@babel/plugin-transform-template-literals" "^7.24.1" - "@babel/plugin-transform-typeof-symbol" "^7.24.1" - "@babel/plugin-transform-unicode-escapes" "^7.24.1" - "@babel/plugin-transform-unicode-property-regex" "^7.24.1" - "@babel/plugin-transform-unicode-regex" "^7.24.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" + "@babel/plugin-transform-arrow-functions" "^7.24.7" + "@babel/plugin-transform-async-generator-functions" "^7.25.0" + "@babel/plugin-transform-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoped-functions" "^7.24.7" + "@babel/plugin-transform-block-scoping" "^7.25.0" + "@babel/plugin-transform-class-properties" "^7.24.7" + "@babel/plugin-transform-class-static-block" "^7.24.7" + "@babel/plugin-transform-classes" "^7.25.0" + "@babel/plugin-transform-computed-properties" "^7.24.7" + "@babel/plugin-transform-destructuring" "^7.24.8" + "@babel/plugin-transform-dotall-regex" "^7.24.7" + "@babel/plugin-transform-duplicate-keys" "^7.24.7" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.0" + "@babel/plugin-transform-dynamic-import" "^7.24.7" + "@babel/plugin-transform-exponentiation-operator" "^7.24.7" + "@babel/plugin-transform-export-namespace-from" "^7.24.7" + "@babel/plugin-transform-for-of" "^7.24.7" + "@babel/plugin-transform-function-name" "^7.25.1" + "@babel/plugin-transform-json-strings" "^7.24.7" + "@babel/plugin-transform-literals" "^7.25.2" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" + "@babel/plugin-transform-member-expression-literals" "^7.24.7" + "@babel/plugin-transform-modules-amd" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.8" + "@babel/plugin-transform-modules-systemjs" "^7.25.0" + "@babel/plugin-transform-modules-umd" "^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" + "@babel/plugin-transform-new-target" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" + "@babel/plugin-transform-numeric-separator" "^7.24.7" + "@babel/plugin-transform-object-rest-spread" "^7.24.7" + "@babel/plugin-transform-object-super" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.8" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-property-in-object" "^7.24.7" + "@babel/plugin-transform-property-literals" "^7.24.7" + "@babel/plugin-transform-regenerator" "^7.24.7" + "@babel/plugin-transform-reserved-words" "^7.24.7" + "@babel/plugin-transform-shorthand-properties" "^7.24.7" + "@babel/plugin-transform-spread" "^7.24.7" + "@babel/plugin-transform-sticky-regex" "^7.24.7" + "@babel/plugin-transform-template-literals" "^7.24.7" + "@babel/plugin-transform-typeof-symbol" "^7.24.8" + "@babel/plugin-transform-unicode-escapes" "^7.24.7" + "@babel/plugin-transform-unicode-property-regex" "^7.24.7" + "@babel/plugin-transform-unicode-regex" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.10.4" babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.31.0" + core-js-compat "^3.37.1" semver "^6.3.1" -"@babel/preset-flow@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.24.1.tgz#da7196c20c2d7dd4e98cfd8b192fe53b5eb6f0bb" - integrity sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA== +"@babel/preset-flow@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.24.7.tgz#eef5cb8e05e97a448fc50c16826f5612fe512c06" + integrity sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-transform-flow-strip-types" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-transform-flow-strip-types" "^7.24.7" "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" @@ -1069,33 +1251,33 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.1.tgz#2450c2ac5cc498ef6101a6ca5474de251e33aa95" - integrity sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-transform-react-display-name" "^7.24.1" - "@babel/plugin-transform-react-jsx" "^7.23.4" - "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.24.1" - -"@babel/preset-typescript@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" - integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-syntax-jsx" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-typescript" "^7.24.1" - -"@babel/register@^7.23.7": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.23.7.tgz#485a5e7951939d21304cae4af1719fdb887bc038" - integrity sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ== +"@babel/preset-react@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.7.tgz#480aeb389b2a798880bf1f889199e3641cbb22dc" + integrity sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-transform-react-display-name" "^7.24.7" + "@babel/plugin-transform-react-jsx" "^7.24.7" + "@babel/plugin-transform-react-jsx-development" "^7.24.7" + "@babel/plugin-transform-react-pure-annotations" "^7.24.7" + +"@babel/preset-typescript@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz#66cd86ea8f8c014855671d5ea9a737139cbbfef1" + integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.7" + "@babel/plugin-transform-typescript" "^7.24.7" + +"@babel/register@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.24.6.tgz#59e21dcc79e1d04eed5377633b0f88029a6bef9e" + integrity sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" @@ -1124,6 +1306,15 @@ "@babel/parser" "^7.24.0" "@babel/types" "^7.24.0" +"@babel/template@^7.24.7", "@babel/template@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" + integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.25.0" + "@babel/types" "^7.25.0" + "@babel/traverse@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" @@ -1140,7 +1331,20 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490" + integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/parser" "^7.25.3" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.2" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== @@ -1149,6 +1353,15 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125" + integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q== + dependencies: + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1772,14 +1985,14 @@ globby "^11.0.0" read-yaml-file "^1.1.0" -"@napi-rs/wasm-runtime@^0.1.1": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.1.2.tgz#cff8330e3728ab4447af82b67277f067132d341f" - integrity sha512-8JuczewTFIZ/XIjHQ+YlQUydHvlKx2hkcxtuGwh+t/t5zWyZct6YG4+xjHcq8xyc/e7FmFwf42Zj2YgICwmlvA== +"@napi-rs/wasm-runtime@^0.2.3", "@napi-rs/wasm-runtime@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz#d27788176f250d86e498081e3c5ff48a17606918" + integrity sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ== dependencies: "@emnapi/core" "^1.1.0" "@emnapi/runtime" "^1.1.0" - "@tybys/wasm-util" "^0.8.1" + "@tybys/wasm-util" "^0.9.0" "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" @@ -1788,97 +2001,97 @@ dependencies: eslint-scope "5.1.1" -"@node-rs/xxhash-android-arm-eabi@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash-android-arm-eabi/-/xxhash-android-arm-eabi-1.7.0.tgz#50871b2b0ca93e9fe47dd48934d4e4ee3becefe0" - integrity sha512-IvkF5xrVwr3OcOlD3fkbD1/nAYPWCjJPxmx+8XVLzjZL7TVdsGlNBRRDe4z5nAywMWjVVJJk0qmQ1fjjbBeCOw== - -"@node-rs/xxhash-android-arm64@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash-android-arm64/-/xxhash-android-arm64-1.7.0.tgz#e011458ee956196b39b555b505eede7be6fcded9" - integrity sha512-6pQKgNgUNGyv+pBqreTaLNDo4ElFnkhf5WPW/bgD5UlfPsJl48sMrF+4EqjaFRMCtLxRiI62XY+MRKDK/KrDrg== - -"@node-rs/xxhash-darwin-arm64@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash-darwin-arm64/-/xxhash-darwin-arm64-1.7.0.tgz#92d9801756a2316fbd60dd21a333eec7c112906b" - integrity sha512-8FThAUO6IO35ek9DW6Y/TdktMmIy/2Ol7tSDecFdv+c8izQMrCzISTLWgLjjhb7zCMZE4+ZgL3oQPI1mbB/wSQ== - -"@node-rs/xxhash-darwin-x64@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash-darwin-x64/-/xxhash-darwin-x64-1.7.0.tgz#d80aee15da4db540268cf3db9e76872ecb2fd060" - integrity sha512-a8tWz+tMXfYgHzGBxdANObpu6o6APV7KO4D4W1yxHxzLiY0cujTsQpVvN9Z2YVTsFUVuAQwmy9UsB5aTxSnxlg== - -"@node-rs/xxhash-freebsd-x64@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash-freebsd-x64/-/xxhash-freebsd-x64-1.7.0.tgz#0ecde2c8bcd0557783d0130cb59c656bfb67d642" - integrity sha512-vAeZNsqlPtwCkSm7IAatUwN1srvuApEc04BkdL9ryoEP0u7Su0O4wAvb0UoSzwB9+fwr0APSK4NtJ5Wd7F3p8w== - -"@node-rs/xxhash-linux-arm-gnueabihf@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash-linux-arm-gnueabihf/-/xxhash-linux-arm-gnueabihf-1.7.0.tgz#66ec6a3c3b73214d4e70a6118d55a959ced04b3a" - integrity sha512-zhw98wpFlDiJ8YSTDaHJ3oYcn/ZIpTZRJS0G0VbTlHT7KNQwyc6pT1UQE5dkBRhwa4vyrBfwtrQu+UzIAE/ERg== - -"@node-rs/xxhash-linux-arm64-gnu@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash-linux-arm64-gnu/-/xxhash-linux-arm64-gnu-1.7.0.tgz#065ab88d8e7fe46cdd91cd2e4c7f1b7db384dc9e" - integrity sha512-mqzonU68+WhttziDKL+eW4Eo/RBPsztfMd8pAehELJlW1wIRhbggm9jmwSy90dZm7HnozHIzg278Hc+134xwhw== - -"@node-rs/xxhash-linux-arm64-musl@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash-linux-arm64-musl/-/xxhash-linux-arm64-musl-1.7.0.tgz#cc286b8dbd639e05ce1f3d59730458aaf355e459" - integrity sha512-QpUhAUvM5cFKrWDzutvbsaBLMSw1KUy2Yysh6MlzpcTrshLi6XPqLfPAz2FrDRzD7yquZNVs0HrleEh/tG7Dxg== - -"@node-rs/xxhash-linux-x64-gnu@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash-linux-x64-gnu/-/xxhash-linux-x64-gnu-1.7.0.tgz#a0257b4dd1b54dc0f0a3778e756ed7b27e6045d0" - integrity sha512-CKZJrM/BSrvH0yDEIRJTDTA+K5Nxj7zzuNsA88IQCXHAWaHMRgearznL/E72G6yYZ2V007rwy4CD2DOahZHgBg== - -"@node-rs/xxhash-linux-x64-musl@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash-linux-x64-musl/-/xxhash-linux-x64-musl-1.7.0.tgz#1b2d7f473878d7650de93b62e051f6361c35858a" - integrity sha512-oiACZI4Z5Uh0bQ63/OqIUrETVhSR7sb8VynoJ6fx9ZpjXpAww6A+twBznIgKRRBGGF82qjeydXAOv9p1+Nonyw== - -"@node-rs/xxhash-wasm32-wasi@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash-wasm32-wasi/-/xxhash-wasm32-wasi-1.7.0.tgz#1b98800e401d0e1567a5060f2512ca5796218b16" - integrity sha512-pS+yUVkovxJF6S96fK0QYyYqpNp/CB+DjbNDECtNryTj+dSJx4DslQlhsO/46xBoyJf6CUtfeB7cB7ugRgd++Q== - dependencies: - "@napi-rs/wasm-runtime" "^0.1.1" - -"@node-rs/xxhash-win32-arm64-msvc@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash-win32-arm64-msvc/-/xxhash-win32-arm64-msvc-1.7.0.tgz#b49a52b444127c335fa96b5b9933f71c2e0ef9ea" - integrity sha512-oU1WNrtuHXrFGKCKKnPUZEuqOvmMWYmX42/tN3eGgvpzrL/ONz5hAaLxW6h+Tn1h3SqCvgvrB6JR2HaIXYpqeQ== - -"@node-rs/xxhash-win32-ia32-msvc@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash-win32-ia32-msvc/-/xxhash-win32-ia32-msvc-1.7.0.tgz#fc58a9df3b3cf0cc1ca58b02e3d5977f754d2f8c" - integrity sha512-XISZ7x3ISXhWMm5iXUcDj6Tanj2F5r93Nvo0K+xQM+UPW45Q+A6+ybE2YXTAZOSN1tZa5qF49DNNMILZSBfcDA== - -"@node-rs/xxhash-win32-x64-msvc@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash-win32-x64-msvc/-/xxhash-win32-x64-msvc-1.7.0.tgz#a2ebf565426669906d7b691deea973215cf41bbf" - integrity sha512-c50wUnGFo2EWnZeUDco0ItPel7VfooCxMVSCwjLzxr7J/FWdYko/4qcUROj40XVj0QDlT/ypO7dm6bRDTVZadg== - -"@node-rs/xxhash@^1.6.2": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@node-rs/xxhash/-/xxhash-1.7.0.tgz#e03d5f632f2f09d54743cd1085f03b94a23c0a70" - integrity sha512-nvY2X76vIC8A8NNEtfipFcJl+izyglQfJjVNqXi/qb74r422yH3MbGrVKNU+Sp5G1EJXM8/Z7ksbiowPHiGcVg== +"@node-rs/xxhash-android-arm-eabi@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash-android-arm-eabi/-/xxhash-android-arm-eabi-1.7.3.tgz#271a935e7f373a07927fd02311e81d0ffd7a95d5" + integrity sha512-BQTZxzBwmQg23G38X0ysjbw91cKXYBF/35j6bywEZjBvbn8QwT8rpmYVmNqQ28QtIO3/P6/LJqYm6rRbY6EzvA== + +"@node-rs/xxhash-android-arm64@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash-android-arm64/-/xxhash-android-arm64-1.7.3.tgz#7afed541728f5a05cb66325549c86dc730d9208d" + integrity sha512-3ifUgdNzZTPHtg4FWaQ3XTlsIMN6GSWbcH6UUx4xe4hZyeZs865m/1Id5ur4HqFSTRCqq1J5JG2sf8vRb8zJxw== + +"@node-rs/xxhash-darwin-arm64@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash-darwin-arm64/-/xxhash-darwin-arm64-1.7.3.tgz#9f88c4c7cda29e00168fd8478cc42e2a4b3e0969" + integrity sha512-xsXlhRrMOvVnnMey3LuutVULv5UcHZiimdXv98V4wmTXCJqnP4lu+svB283NVY2Sgm0hTAq3IvIQ2vbFLkthzA== + +"@node-rs/xxhash-darwin-x64@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash-darwin-x64/-/xxhash-darwin-x64-1.7.3.tgz#6e9c7ce9040b669079458930ba7696b38a98e062" + integrity sha512-b9UAR8JwiZIamfdlplGlArAb/O1FpZgIdOI2ujBXfsevkPWsl6bxgghsNzWCQiBjCAagSzfzwZ/YunJnNv+1dw== + +"@node-rs/xxhash-freebsd-x64@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash-freebsd-x64/-/xxhash-freebsd-x64-1.7.3.tgz#4f948b8dd15d4f0b2c938e41a6be9c47b1466c1c" + integrity sha512-WPZIcF4k4reQF0w+JTKRhfVTO9Xh418uI1UDva7p+K8h/BxKd2z43BzAsnLgnnsH7JTOcGcsNeajHLoXeSYExw== + +"@node-rs/xxhash-linux-arm-gnueabihf@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash-linux-arm-gnueabihf/-/xxhash-linux-arm-gnueabihf-1.7.3.tgz#46b992f4ef466a6241506b219174ca3d5dce9234" + integrity sha512-XHZknt9apzBkGWp1Kz4Q9/GmgcTEj/VGnGcSJVuU+mvPqrOnFxi5wJzE4yw6w3Vl72jTMI0N2tx+jIHT0G7k4g== + +"@node-rs/xxhash-linux-arm64-gnu@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash-linux-arm64-gnu/-/xxhash-linux-arm64-gnu-1.7.3.tgz#8514305feec3923297f5d0822e11e41dd067c786" + integrity sha512-jNYenmfb7r44o3ihuF3tG3YKqe5wn6jGp/4dkiF0e5s1A9Eyjx3tUn8NxAaONEJKE8qKtPns0Z4bnvQQDHa1Sw== + +"@node-rs/xxhash-linux-arm64-musl@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash-linux-arm64-musl/-/xxhash-linux-arm64-musl-1.7.3.tgz#717aca43809e1178e5d61f2386453c368d732441" + integrity sha512-sxEDrMdZDxYTo++VElmC34FZKSkNte7o2fCLq6falb9mx+1kMJa8QbF+Gk5wcVabjnbMgcLTiBez8LF0SRLSew== + +"@node-rs/xxhash-linux-x64-gnu@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash-linux-x64-gnu/-/xxhash-linux-x64-gnu-1.7.3.tgz#71642f9e76c66413695ae32d2a29a169f954b993" + integrity sha512-Aw61p+EiDEuVHYATEvsxb0kKJryiRUiKxjmDHH4s7Z6lpXcSyNQemGkbZUr+CX5+plnMXIIuzNinBbVQl2NRvQ== + +"@node-rs/xxhash-linux-x64-musl@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash-linux-x64-musl/-/xxhash-linux-x64-musl-1.7.3.tgz#ff8efa5931c35be59f7c5423f8f27e7145dfcc2c" + integrity sha512-cvolPw1xfUkHAObcaRDu8tRjm4/q2ei3AGGwkfoYKsCI3pAU0vkDqr9SIju3xjNom7XCKCkLkD1EYJ4dBdHdvQ== + +"@node-rs/xxhash-wasm32-wasi@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash-wasm32-wasi/-/xxhash-wasm32-wasi-1.7.3.tgz#4ecb3bc6f851196b7cbfb2a47bd163cc2e7bc218" + integrity sha512-xUvXOaGOyUcc892k+mrMA9hkUIdUu2KUuoYOx7FoWlOLvlo+nNGXUazTWfS9tjzypAW0jB80lA/uMwGZr9ncWA== + dependencies: + "@napi-rs/wasm-runtime" "^0.2.3" + +"@node-rs/xxhash-win32-arm64-msvc@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash-win32-arm64-msvc/-/xxhash-win32-arm64-msvc-1.7.3.tgz#467cdbd4472acc7039200f9687654c08e6c47973" + integrity sha512-J90MJoVGoHNJj8RxYoAupAZijZ/Jui8szJ9KIHGPOD/g4jXlmNo4oBQMwbEWZDX0oYftNvRxA6MJWwet6mz6ow== + +"@node-rs/xxhash-win32-ia32-msvc@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash-win32-ia32-msvc/-/xxhash-win32-ia32-msvc-1.7.3.tgz#fd55496ed8c3743cccf57c733c194c016c5039c6" + integrity sha512-oaAkcgfHWUgrNGZzKXv+vOfs3xFxNwH4SAhETz40U+42XrgHx3m7aPoPrMiiTnWxiNOd2mIiioYUjh3QHwuktA== + +"@node-rs/xxhash-win32-x64-msvc@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash-win32-x64-msvc/-/xxhash-win32-x64-msvc-1.7.3.tgz#26afda4e8cf29e37a8f101d6c92b6f437466c79f" + integrity sha512-53v0vgPzE3oogIQJzK7D7lzEapWQZrhI5+aNnIq18tYawixXUIyPLmx8U7S461i/kkqVF7IzQy4hbcW7NzzHxw== + +"@node-rs/xxhash@^1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@node-rs/xxhash/-/xxhash-1.7.3.tgz#d36032060089be5983fe1c9448cdd0869ef83920" + integrity sha512-uK06Hw0hDxQcfKsCAYJlIirQHO74KfuGp9+/q+Pc1sBFITsA7+UOj4dM71jV9z59+qktNVmp/m9bEjZ8fRrWLQ== optionalDependencies: - "@node-rs/xxhash-android-arm-eabi" "1.7.0" - "@node-rs/xxhash-android-arm64" "1.7.0" - "@node-rs/xxhash-darwin-arm64" "1.7.0" - "@node-rs/xxhash-darwin-x64" "1.7.0" - "@node-rs/xxhash-freebsd-x64" "1.7.0" - "@node-rs/xxhash-linux-arm-gnueabihf" "1.7.0" - "@node-rs/xxhash-linux-arm64-gnu" "1.7.0" - "@node-rs/xxhash-linux-arm64-musl" "1.7.0" - "@node-rs/xxhash-linux-x64-gnu" "1.7.0" - "@node-rs/xxhash-linux-x64-musl" "1.7.0" - "@node-rs/xxhash-wasm32-wasi" "1.7.0" - "@node-rs/xxhash-win32-arm64-msvc" "1.7.0" - "@node-rs/xxhash-win32-ia32-msvc" "1.7.0" - "@node-rs/xxhash-win32-x64-msvc" "1.7.0" + "@node-rs/xxhash-android-arm-eabi" "1.7.3" + "@node-rs/xxhash-android-arm64" "1.7.3" + "@node-rs/xxhash-darwin-arm64" "1.7.3" + "@node-rs/xxhash-darwin-x64" "1.7.3" + "@node-rs/xxhash-freebsd-x64" "1.7.3" + "@node-rs/xxhash-linux-arm-gnueabihf" "1.7.3" + "@node-rs/xxhash-linux-arm64-gnu" "1.7.3" + "@node-rs/xxhash-linux-arm64-musl" "1.7.3" + "@node-rs/xxhash-linux-x64-gnu" "1.7.3" + "@node-rs/xxhash-linux-x64-musl" "1.7.3" + "@node-rs/xxhash-wasm32-wasi" "1.7.3" + "@node-rs/xxhash-win32-arm64-msvc" "1.7.3" + "@node-rs/xxhash-win32-ia32-msvc" "1.7.3" + "@node-rs/xxhash-win32-x64-msvc" "1.7.3" "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1901,6 +2114,63 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@oxc-resolver/binding-darwin-arm64@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-1.10.2.tgz#7fd04e5f07bd4dfc9abe9416afe107b925df1f98" + integrity sha512-aOCZYXqmFL+2sXlaVkYbAOtICGGeTFtmdul8OimQfOXHJods6YHJ2nR6+rEeBcJzaXyXPP18ne1IsEc4AYL1IA== + +"@oxc-resolver/binding-darwin-x64@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-1.10.2.tgz#b73dfa73c7af1ee808a52f6873274b47af284716" + integrity sha512-6WD7lHGkoduFZfUgnC2suKOlqttQRKxWsiVXiiGPu3mfXvQAhMd/gekuH1t8vOhFlPJduaww15n5UB0bSjCK+w== + +"@oxc-resolver/binding-freebsd-x64@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-1.10.2.tgz#b1303a29ff8eafc267683d253b7458b78f68245b" + integrity sha512-nEqHWx/Ot5p7Mafj8qH6vFlLSvHjECxAcZwhnAMqRuQu1NgXC/QM3emkdhVGy7QJgsxZbHpPaF6TERNf5/NL9Q== + +"@oxc-resolver/binding-linux-arm-gnueabihf@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.10.2.tgz#f921703edfc1e972408394b9c639c50e984ff16e" + integrity sha512-+AlZI0fPnpfArh8aC5k2295lmQrxa2p8gBLxC3buvCkz0ZpbVLxyyAXz3J2jGwJnmc5MUPLEqPYw6ZlAGH4XHA== + +"@oxc-resolver/binding-linux-arm64-gnu@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.10.2.tgz#173982495965af46d028329ce1e99d7dd584e483" + integrity sha512-8fZ8NszFaUZaoA8eUwkF2lHjgUs76aFiewWgG/cjcZmwKp+ErZQLW8eOvIWZ4SohHQ+ScvhVsSaU2PU38c88gw== + +"@oxc-resolver/binding-linux-arm64-musl@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.10.2.tgz#323fc30fc4611a2bd0d1a2d73fdea5d91a9c0ae7" + integrity sha512-oPrLICrw96Ym9n04FWXWGkbkpF6qJtZ57JSnqI3oQ24xHTt4iWyjHKHQO46NbJAK9sFb3Qce4BzV8faDI5Rifg== + +"@oxc-resolver/binding-linux-x64-gnu@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.10.2.tgz#f7f8bd53f146a28176180a1fa8b47885427df7e9" + integrity sha512-eli74jTAUiIfqi8IPFqiPxQS69Alcr6w/IFRyf3XxrkxeFGgcgxJkRIxWNTKJ6T3EXxjuma+49LdZn6l9rEj7A== + +"@oxc-resolver/binding-linux-x64-musl@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-1.10.2.tgz#00d3465bc6a2abd9a34d09dc5eeba0479f33059b" + integrity sha512-HH9zmjNSQo3rkbqJH5nIjGrtjC+QPrUy0KGGMR/oRCSLuD0cNFJ/Uly1XAugwSm4oEw0+rv6PmeclXmVTKsxhw== + +"@oxc-resolver/binding-wasm32-wasi@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-1.10.2.tgz#ed3c49f4887a765503f589bb8b95e9c8d5369adb" + integrity sha512-3ItX23q33sfVBtMMdMhVDSe0NX5zBHxHfmFiXhSJuwNaVIwGpLFU7WU2nmq9oNdnmTOvjL8vlhOqiGvumBLlRA== + dependencies: + "@napi-rs/wasm-runtime" "^0.2.4" + +"@oxc-resolver/binding-win32-arm64-msvc@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.10.2.tgz#bea966a1ab09d1a8b2823abf488ba1e213a619b7" + integrity sha512-aVoj2V+jmQ1N+lVy9AhaLmzssJM0lcKt8D0UL83aNLZJ5lSN7hgBuUXTVmL+VF268f167khjo38z+fbELDVm8Q== + +"@oxc-resolver/binding-win32-x64-msvc@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.10.2.tgz#b43deb60fac0b13add5a259fac3c8fdfffd7333c" + integrity sha512-l8BDQWyP0Piw8hlmYPUqTRKLsq+ceG9h+9p6ZrjNzwW9AmJX7T7T2hgoVVHqS6f4WNA/CFkb3RyZP9QTzNkyyA== + "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -1949,125 +2219,126 @@ dependencies: "@sinonjs/commons" "^3.0.0" -"@swc-node/core@^1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@swc-node/core/-/core-1.13.0.tgz#209d70f6371049926915a7d23a502144cdb5cffb" - integrity sha512-lFPD4nmy4ifAOVMChFjwlpXN5KQXvegqeyuzz1KQz42q1lf+cL3Qux1/GteGuZjh8HC+Rj1RdNrHpE/MCfJSTw== +"@swc-node/core@^1.13.3": + version "1.13.3" + resolved "https://registry.yarnpkg.com/@swc-node/core/-/core-1.13.3.tgz#0821d01263f48314392d38d80ef1a03fef5f11b3" + integrity sha512-OGsvXIid2Go21kiNqeTIn79jcaX4l0G93X2rAnas4LFoDyA9wAwVK7xZdm+QsKoMn5Mus2yFLCc4OtX2dD/PWA== -"@swc-node/jest@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@swc-node/jest/-/jest-1.8.0.tgz#664f200a414a1b81c9c8d4ac9133a26d12600cca" - integrity sha512-kWNYj6ef9dOdyL+r7S/nyZnH+vX7csMWR80YlujA6O3XY1fNaDX4NE6OCgD2YeJkMjsm9im1aI2HfeVD6+vGyQ== +"@swc-node/jest@^1.8.12": + version "1.8.12" + resolved "https://registry.yarnpkg.com/@swc-node/jest/-/jest-1.8.12.tgz#4a624e1ef696289c570f452d18a7cabfb526baa0" + integrity sha512-HyuYSSB0tOh8eXzRXBWD4GJO0OK2s/nTinHliTuOexaNuS8R/Oqun686827ueAeGiaRLC72yzOpn6P7xhApdBg== dependencies: - "@node-rs/xxhash" "^1.6.2" - "@swc-node/core" "^1.13.0" - "@swc-node/register" "^1.9.0" + "@node-rs/xxhash" "^1.7.3" + "@swc-node/core" "^1.13.3" + "@swc-node/register" "^1.10.9" -"@swc-node/register@^1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@swc-node/register/-/register-1.9.0.tgz#dcab1567a3999f75e04fc1cf9803d9673dddc50a" - integrity sha512-i0iYInD4q5v3xQC6bKvs0QtfUxu197CU5qKALmpxEqTYs7sIhQ7KFLe3kP+eAR4gRkJTvAgjQgrokXLN2jZrOw== +"@swc-node/register@^1.10.9": + version "1.10.9" + resolved "https://registry.yarnpkg.com/@swc-node/register/-/register-1.10.9.tgz#9e2660f99a12969d3e5a34144e6a5812c7187680" + integrity sha512-iXy2sjP0phPEpK2yivjRC3PAgoLaT4sjSk0LDWCTdcTBJmR4waEog0E6eJbvoOkLkOtWw37SB8vCkl/bbh4+8A== dependencies: - "@swc-node/core" "^1.13.0" - "@swc-node/sourcemap-support" "^0.5.0" + "@swc-node/core" "^1.13.3" + "@swc-node/sourcemap-support" "^0.5.1" colorette "^2.0.20" - debug "^4.3.4" + debug "^4.3.5" + oxc-resolver "^1.10.2" pirates "^4.0.6" - tslib "^2.6.2" + tslib "^2.6.3" -"@swc-node/sourcemap-support@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@swc-node/sourcemap-support/-/sourcemap-support-0.5.0.tgz#bf2a3e8097eb810b9137305c8cb429288a328fde" - integrity sha512-fbhjL5G0YvFoWwNhWleuBUfotiX+USiA9oJqu9STFw+Hb0Cgnddn+HVS/K5fI45mn92e8V+cHD2jgFjk4w2T9Q== +"@swc-node/sourcemap-support@^0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@swc-node/sourcemap-support/-/sourcemap-support-0.5.1.tgz#0355540d62874891770ce1ba06838de186f098ff" + integrity sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg== dependencies: source-map-support "^0.5.21" - tslib "^2.6.2" - -"@swc/core-darwin-arm64@1.4.11": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.11.tgz#91ef40816e10495a4038a98dc6c8dfcc85d9c59b" - integrity sha512-C1j1Qp/IHSelVWdEnT7f0iONWxQz6FAqzjCF2iaL+0vFg4V5f2nlgrueY8vj5pNNzSGhrAlxsMxEIp4dj1MXkg== - -"@swc/core-darwin-x64@1.4.11": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.4.11.tgz#6f71e3cd4687ef5df226ba0b8a20adc52fa7dc9e" - integrity sha512-0TTy3Ni8ncgaMCchSQ7FK8ZXQLlamy0FXmGWbR58c+pVZWYZltYPTmheJUvVcR0H2+gPAymRKyfC0iLszDALjg== - -"@swc/core-linux-arm-gnueabihf@1.4.11": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.11.tgz#08521822b5510cb506bc49e728f416636ff0306f" - integrity sha512-XJLB71uw0rog4DjYAPxFGAuGCBQpgJDlPZZK6MTmZOvI/1t0+DelJ24IjHIxk500YYM26Yv47xPabqFPD7I2zQ== - -"@swc/core-linux-arm64-gnu@1.4.11": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.11.tgz#9485bc591aa573b282d08b168b80a60badb8df9b" - integrity sha512-vYQwzJvm/iu052d5Iw27UFALIN5xSrGkPZXxLNMHPySVko2QMNNBv35HLatkEQHbQ3X+VKSW9J9SkdtAvAVRAQ== - -"@swc/core-linux-arm64-musl@1.4.11": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.11.tgz#85eecad7aaab7e94b1ff15ab9d95e80a1e95f356" - integrity sha512-eV+KduiRYUFjPsvbZuJ9aknQH9Tj0U2/G9oIZSzLx/18WsYi+upzHbgxmIIHJ2VJgfd7nN40RI/hMtxNsUzR/g== - -"@swc/core-linux-x64-gnu@1.4.11": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.11.tgz#16259de893489b4699045e36bf52b2afe5d10f6d" - integrity sha512-WA1iGXZ2HpqM1OR9VCQZJ8sQ1KP2or9O4bO8vWZo6HZJIeoQSo7aa9waaCLRpkZvkng1ct/TF/l6ymqSNFXIzQ== - -"@swc/core-linux-x64-musl@1.4.11": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.11.tgz#0f4e644fc2b62c8c966072389d354337a22b4dde" - integrity sha512-UkVJToKf0owwQYRnGvjHAeYVDfeimCEcx0VQSbJoN7Iy0ckRZi7YPlmWJU31xtKvikE2bQWCOVe0qbSDqqcWXA== - -"@swc/core-win32-arm64-msvc@1.4.11": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.11.tgz#d836b79d8730bf83e6b38a5b888e83944d6fb233" - integrity sha512-35khwkyly7lF5NDSyvIrukBMzxPorgc5iTSDfVO/LvnmN5+fm4lTlrDr4tUfTdOhv3Emy7CsKlsNAeFRJ+Pm+w== - -"@swc/core-win32-ia32-msvc@1.4.11": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.11.tgz#bc60bbdc65134aaa5b214e2aaf209acfce401d17" - integrity sha512-Wx8/6f0ufgQF2pbVPsJ2dAmFLwIOW+xBE5fxnb7VnEbGkTgP1qMDWiiAtD9rtvDSuODG3i1AEmAak/2HAc6i6A== - -"@swc/core-win32-x64-msvc@1.4.11": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.11.tgz#92fd6d4e2d70bbd4fda438f02310d998db8c7b7c" - integrity sha512-0xRFW6K9UZQH2NVC/0pVB0GJXS45lY24f+6XaPBF1YnMHd8A8GoHl7ugyM5yNUTe2AKhSgk5fJV00EJt/XBtdQ== - -"@swc/core@^1.4.11": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.4.11.tgz#e91f488df9242584cc6f1b034419f8302aeb0c85" - integrity sha512-WKEakMZxkVwRdgMN4AMJ9K5nysY8g8npgQPczmjBeNK5In7QEAZAJwnyccrWwJZU0XjVeHn2uj+XbOKdDW17rg== - dependencies: - "@swc/counter" "^0.1.2" - "@swc/types" "^0.1.5" + tslib "^2.6.3" + +"@swc/core-darwin-arm64@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.6.tgz#16deedb286caf7b4519d3e39f121e276bc573e72" + integrity sha512-6lYHey84ZzsdtC7UuPheM4Rm0Inzxm6Sb8U6dmKc4eCx8JL0LfWG4LC5RsdsrTxnjTsbriWlnhZBffh8ijUHIQ== + +"@swc/core-darwin-x64@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.7.6.tgz#d54cfa083d5bef0eb2a852568bbc6f6c5e5bae97" + integrity sha512-Fyl+8aH9O5rpx4O7r2KnsPpoi32iWoKOYKiipeTbGjQ/E95tNPxbmsz4yqE8Ovldcga60IPJ5OKQA3HWRiuzdw== + +"@swc/core-linux-arm-gnueabihf@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.6.tgz#d92b5022f872c9da6b246a16b01ec074288b94b0" + integrity sha512-2WxYTqFaOx48GKC2cbO1/IntA+w+kfCFy436Ij7qRqqtV/WAvTM9TC1OmiFbqq436rSot52qYmX8fkwdB5UcLQ== + +"@swc/core-linux-arm64-gnu@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.6.tgz#3e14000de714cefe097ee244498758f993bb0c81" + integrity sha512-TBEGMSe0LhvPe4S7E68c7VzgT3OMu4VTmBLS7B2aHv4v8uZO92Khpp7L0WqgYU1y5eMjk+XLDLi4kokiNHv/Hg== + +"@swc/core-linux-arm64-musl@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.6.tgz#69edbe4b1f62e7d35fde180bd714ad23a6749c25" + integrity sha512-QI8QGL0HGT42tj7F1A+YAzhGkJjUcvvTfI1e2m704W0Enl2/UIK9v5D1zvQzYwusRyKuaQfbeBRYDh0NcLOGLg== + +"@swc/core-linux-x64-gnu@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.6.tgz#b766e32e5e3549f7c0b83d7a798886810290fa5a" + integrity sha512-61AYVzhjuNQAVIKKWOJu3H0/pFD28RYJGxnGg3YMhvRLRyuWNyY5Nyyj2WkKcz/ON+g38Arlz00NT1LDIViRLg== + +"@swc/core-linux-x64-musl@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.6.tgz#833b77654b48bf04b27263a798cc306d7c378192" + integrity sha512-hQFznpfLK8XajfAAN9Cjs0w/aVmO7iu9VZvInyrTCRcPqxV5O+rvrhRxKvC1LRMZXr5M6JRSRtepp5w+TK4kAw== + +"@swc/core-win32-arm64-msvc@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.6.tgz#0cc81edb4478863d1b64942329fadbc90321ffdf" + integrity sha512-Aqsd9afykVMuekzjm4X4TDqwxmG4CrzoOSFe0hZrn9SMio72l5eAPnMtYoe5LsIqtjV8MNprLfXaNbjHjTegmA== + +"@swc/core-win32-ia32-msvc@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.6.tgz#47965dbf55f06d87f0bcd3198fca0b3515a7daf9" + integrity sha512-9h0hYnOeRVNeQgHQTvD1Im67faNSSzBZ7Adtxyu9urNLfBTJilMllFd2QuGHlKW5+uaT6ZH7ZWDb+c/enx7Lcg== + +"@swc/core-win32-x64-msvc@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.6.tgz#89f0b151d3e8a9539f7915631759a406ebc14ed2" + integrity sha512-izeoB8glCSe6IIDQmrVm6bvR9muk9TeKgmtY7b6l1BwL4BFnTUk4dMmpbntT90bEVQn3JPCaPtUG4HfL8VuyuA== + +"@swc/core@^1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.7.6.tgz#04fbe99660ac83d341c6447ff52e04706bea6f36" + integrity sha512-FZxyao9eQks1MRmUshgsZTmlg/HB2oXK5fghkoWJm/1CU2q2kaJlVDll2as5j+rmWiwkp0Gidlq8wlXcEEAO+g== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.12" optionalDependencies: - "@swc/core-darwin-arm64" "1.4.11" - "@swc/core-darwin-x64" "1.4.11" - "@swc/core-linux-arm-gnueabihf" "1.4.11" - "@swc/core-linux-arm64-gnu" "1.4.11" - "@swc/core-linux-arm64-musl" "1.4.11" - "@swc/core-linux-x64-gnu" "1.4.11" - "@swc/core-linux-x64-musl" "1.4.11" - "@swc/core-win32-arm64-msvc" "1.4.11" - "@swc/core-win32-ia32-msvc" "1.4.11" - "@swc/core-win32-x64-msvc" "1.4.11" - -"@swc/counter@^0.1.2", "@swc/counter@^0.1.3": + "@swc/core-darwin-arm64" "1.7.6" + "@swc/core-darwin-x64" "1.7.6" + "@swc/core-linux-arm-gnueabihf" "1.7.6" + "@swc/core-linux-arm64-gnu" "1.7.6" + "@swc/core-linux-arm64-musl" "1.7.6" + "@swc/core-linux-x64-gnu" "1.7.6" + "@swc/core-linux-x64-musl" "1.7.6" + "@swc/core-win32-arm64-msvc" "1.7.6" + "@swc/core-win32-ia32-msvc" "1.7.6" + "@swc/core-win32-x64-msvc" "1.7.6" + +"@swc/counter@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== -"@swc/helpers@^0.5.7": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.7.tgz#36c05f61b412abcff3616ecc8634623bcc7c9618" - integrity sha512-BVvNZhx362+l2tSwSuyEUV4h7+jk9raNdoTSdLfwTshXJSaGmYKluGRJznziCI3KX02Z19DdsQrdfrpXAU3Hfg== +"@swc/helpers@^0.5.12": + version "0.5.12" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.12.tgz#37aaca95284019eb5d2207101249435659709f4b" + integrity sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g== dependencies: tslib "^2.4.0" -"@swc/types@^0.1.5": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.6.tgz#2f13f748995b247d146de2784d3eb7195410faba" - integrity sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg== +"@swc/types@^0.1.12": + version "0.1.12" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.12.tgz#7f632c06ab4092ce0ebd046ed77ff7557442282f" + integrity sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA== dependencies: "@swc/counter" "^0.1.3" @@ -2112,10 +2383,10 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== -"@tybys/wasm-util@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.8.1.tgz#10360976b7f679497ea8526791006417ff304abb" - integrity sha512-GSsTwyBl4pIzsxAY5wroZdyQKyhXk0d8PCRZtrSZ2WEB1cBdrp2EgGBwHOGCZtIIPun/DL3+AykCv+J6fyRH4Q== +"@tybys/wasm-util@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" + integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== dependencies: tslib "^2.4.0" @@ -2164,7 +2435,7 @@ resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.9.tgz#d86a5f452a15e3e3113b99e39616a9baa0f9863f" integrity sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA== -"@types/eslint8.56@npm:@types/eslint@^8.56.6": +"@types/eslint8.56@npm:@types/eslint@^8.56.11": version "8.56.11" resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.11.tgz#e2ff61510a3b9454b3329fe7731e3b4c6f780041" integrity sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q== @@ -2278,39 +2549,39 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.0.tgz#0fee96f6b691e4bfb9c260fd77d1c86bfbac4f56" - integrity sha512-STIZdwEQRXAHvNUS6ILDf5z3u95Gc8jzywunxSNqX00OooIemaaNIA0vEgynJlycL5AjabYLLrIyHd4iazyvtg== +"@typescript-eslint/eslint-plugin@^8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz#5dbd1b498fdea83a16d292322d27d293ce156f94" + integrity sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.0.0" - "@typescript-eslint/type-utils" "8.0.0" - "@typescript-eslint/utils" "8.0.0" - "@typescript-eslint/visitor-keys" "8.0.0" + "@typescript-eslint/scope-manager" "8.0.1" + "@typescript-eslint/type-utils" "8.0.1" + "@typescript-eslint/utils" "8.0.1" + "@typescript-eslint/visitor-keys" "8.0.1" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.0.0.tgz#5a5030cf8123176b5a0abd966f99e5f9f110652d" - integrity sha512-pS1hdZ+vnrpDIxuFXYQpLTILglTjSYJ9MbetZctrUawogUsPdz31DIIRZ9+rab0LhYNTsk88w4fIzVheiTbWOQ== +"@typescript-eslint/parser@^8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.0.1.tgz#eb0728147a3a79edf43dde84c797f117213bbfdb" + integrity sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg== dependencies: - "@typescript-eslint/scope-manager" "8.0.0" - "@typescript-eslint/types" "8.0.0" - "@typescript-eslint/typescript-estree" "8.0.0" - "@typescript-eslint/visitor-keys" "8.0.0" + "@typescript-eslint/scope-manager" "8.0.1" + "@typescript-eslint/types" "8.0.1" + "@typescript-eslint/typescript-estree" "8.0.1" + "@typescript-eslint/visitor-keys" "8.0.1" debug "^4.3.4" -"@typescript-eslint/rule-tester@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/rule-tester/-/rule-tester-8.0.0.tgz#aa555c095f6d52cadd7863b7fffb3de84b075530" - integrity sha512-mYINoxt2DnRDl+X0Er134e6lxTrpb6enfKkea4RIjucd+YjsLzTSSkN40hiU4CB5kOjM17xJVm25TiZJLZMRMw== +"@typescript-eslint/rule-tester@^8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/rule-tester/-/rule-tester-8.0.1.tgz#bb7a1a9c6814e693a4f2b726d375ffc6ff02461e" + integrity sha512-uNOvD7HdsEgRnSCMkxMmP6COq0ItXBXrWdII78svxZjhSNJ3gU4rkL4y0ui6ZoHy0wOfS1f0me1ti+2komxlNg== dependencies: - "@typescript-eslint/typescript-estree" "8.0.0" - "@typescript-eslint/utils" "8.0.0" + "@typescript-eslint/typescript-estree" "8.0.1" + "@typescript-eslint/utils" "8.0.1" ajv "^6.12.6" json-stable-stringify-without-jsonify "^1.0.1" lodash.merge "4.6.2" @@ -2324,21 +2595,21 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.0.0.tgz#d14df46c9e43c53af7699dfa800cd615d7dfc118" - integrity sha512-V0aa9Csx/ZWWv2IPgTfY7T4agYwJyILESu/PVqFtTFz9RIS823mAze+NbnBI8xiwdX3iqeQbcTYlvB04G9wyQw== +"@typescript-eslint/scope-manager@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz#544259c29e1ebf65d30b6e99a9f420d98795a54e" + integrity sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ== dependencies: - "@typescript-eslint/types" "8.0.0" - "@typescript-eslint/visitor-keys" "8.0.0" + "@typescript-eslint/types" "8.0.1" + "@typescript-eslint/visitor-keys" "8.0.1" -"@typescript-eslint/type-utils@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.0.0.tgz#facecaf0736bfe8394b9290382f300554cf90884" - integrity sha512-mJAFP2mZLTBwAn5WI4PMakpywfWFH5nQZezUQdSKV23Pqo6o9iShQg1hP2+0hJJXP2LnZkWPphdIq4juYYwCeg== +"@typescript-eslint/type-utils@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz#a613ee2dfeed4a9781300b5d326ec7cf946eed92" + integrity sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng== dependencies: - "@typescript-eslint/typescript-estree" "8.0.0" - "@typescript-eslint/utils" "8.0.0" + "@typescript-eslint/typescript-estree" "8.0.1" + "@typescript-eslint/utils" "8.0.1" debug "^4.3.4" ts-api-utils "^1.3.0" @@ -2347,10 +2618,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.0.0.tgz#7195ea9369fe5ee46b958d7ffca6bd26511cce18" - integrity sha512-wgdSGs9BTMWQ7ooeHtu5quddKKs5Z5dS+fHLbrQI+ID0XWJLODGMHRfhwImiHoeO2S5Wir2yXuadJN6/l4JRxw== +"@typescript-eslint/types@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.0.1.tgz#333e2f4c158952dbc8181a4ddcc6e49898a28918" + integrity sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -2365,13 +2636,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0.tgz#d172385ced7cb851a038b5c834c245a97a0f9cf6" - integrity sha512-5b97WpKMX+Y43YKi4zVcCVLtK5F98dFls3Oxui8LbnmRsseKenbbDinmvxrWegKDMmlkIq/XHuyy0UGLtpCDKg== +"@typescript-eslint/typescript-estree@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz#64575ec7b77aedfe497acdfb2779ec942bb8d866" + integrity sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w== dependencies: - "@typescript-eslint/types" "8.0.0" - "@typescript-eslint/visitor-keys" "8.0.0" + "@typescript-eslint/types" "8.0.1" + "@typescript-eslint/visitor-keys" "8.0.1" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -2379,15 +2650,15 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/utils@8.0.0", "@typescript-eslint/utils@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.0.0.tgz#1794d6f4b37ec253172a173dc938ae68651b9b99" - integrity sha512-k/oS/A/3QeGLRvOWCg6/9rATJL5rec7/5s1YmdS0ZU6LHveJyGFwBvLhSRBv6i9xaj7etmosp+l+ViN1I9Aj/Q== +"@typescript-eslint/utils@8.0.1", "@typescript-eslint/utils@^8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.0.1.tgz#b48e3320c4f9011f97d25e0588b8c143adc38d2a" + integrity sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.0.0" - "@typescript-eslint/types" "8.0.0" - "@typescript-eslint/typescript-estree" "8.0.0" + "@typescript-eslint/scope-manager" "8.0.1" + "@typescript-eslint/types" "8.0.1" + "@typescript-eslint/typescript-estree" "8.0.1" "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.38.1": version "5.62.0" @@ -2411,12 +2682,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0.tgz#224a67230190d267e6e78586bd7d8dfbd32ae4f3" - integrity sha512-oN0K4nkHuOyF3PVMyETbpP5zp6wfyOvm7tWhTMfoqxSSsPmJIh6JNASuZDlODE8eE+0EB9uar+6+vxr9DBTYOA== +"@typescript-eslint/visitor-keys@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz#e5816803b4dad1de5e97f00df8dc15d0bcb49778" + integrity sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ== dependencies: - "@typescript-eslint/types" "8.0.0" + "@typescript-eslint/types" "8.0.1" eslint-visitor-keys "^3.4.3" "@ungap/structured-clone@^1.2.0": @@ -2797,6 +3068,16 @@ browserslist@^4.22.2, browserslist@^4.23.0: node-releases "^2.0.14" update-browserslist-db "^1.0.13" +browserslist@^4.23.1, browserslist@^4.23.3: + version "4.23.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" + integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== + dependencies: + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -2861,6 +3142,11 @@ caniuse-lite@^1.0.30001587: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz#93a3ee17a35aa6a9f0c6ef1b2ab49507d1ab9079" integrity sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ== +caniuse-lite@^1.0.30001646: + version "1.0.30001650" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001650.tgz#dd1eba0938e39536d184c3c99b2569a13788bc16" + integrity sha512-fgEc7hP/LB7iicdXHUI9VsBsMZmUmlVJeQP2qqQW+3lkqVhbmjEU8zp+h5stWeilX+G7uXuIUIIlWlDw9jdt8g== + chalk@^2.1.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -3026,13 +3312,20 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-js-compat@^3.31.0, core-js-compat@^3.34.0, core-js-compat@^3.36.1: +core-js-compat@^3.34.0, core-js-compat@^3.36.1: version "3.36.1" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.1.tgz#1818695d72c99c25d621dca94e6883e190cea3c8" integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA== dependencies: browserslist "^4.23.0" +core-js-compat@^3.37.1: + version "3.38.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.0.tgz#d93393b1aa346b6ee683377b0c31172ccfe607aa" + integrity sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A== + dependencies: + browserslist "^4.23.3" + cosmiconfig@^8.0.0: version "8.3.6" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" @@ -3174,6 +3467,13 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" +debug@^4.3.5: + version "4.3.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + dependencies: + ms "2.1.2" + decamelize-keys@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" @@ -3298,6 +3598,11 @@ electron-to-chromium@^1.4.668: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.717.tgz#99db370cae8cd090d5b01f8748e9ad369924d0f8" integrity sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A== +electron-to-chromium@^1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.5.tgz#03bfdf422bdd2c05ee2657efedde21264a1a566b" + integrity sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA== + emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" @@ -3441,7 +3746,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -escalade@^3.1.1: +escalade@^3.1.1, escalade@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== @@ -3481,10 +3786,10 @@ eslint-config-prettier@^9.1.0: resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== -eslint-doc-generator@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/eslint-doc-generator/-/eslint-doc-generator-1.7.0.tgz#71bcfdcc473b3d87ed7699aa9ff7e9ea535a21c8" - integrity sha512-C1hE1acb/jruOO+cJe/rIsf+Kgq32JhimTgTtffwsjckKEJ800gx26kUtZhP+8Xm8M/n3BVBZ0XiNbojnNDqHQ== +eslint-doc-generator@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/eslint-doc-generator/-/eslint-doc-generator-1.7.1.tgz#c758c802a23f9a21b2134d9c3f57d5e5c13c3aea" + integrity sha512-i1Zjl+Xcy712SZhbceCeMVaIdhbFqY27i8d7f9gyb9P/6AQNnPA0VCWynAFVGYa0hpeR5kwUI09+GBELgC2nnA== dependencies: "@typescript-eslint/utils" "^5.38.1" ajv "^8.11.2" @@ -5442,6 +5747,11 @@ node-releases@^2.0.14: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -5551,6 +5861,23 @@ outdent@^0.5.0: resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff" integrity sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q== +oxc-resolver@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/oxc-resolver/-/oxc-resolver-1.10.2.tgz#d1d2985d458ccec8d42928612a4ac6af3dac4299" + integrity sha512-NIbwVqoU8Bhl7PVtItHCg+VFFokIDwBgIgFUwFG2Y8ePhxftFh5xG+KLar5PLWXlCP4WunPIuXD3jr3v6/MfRw== + optionalDependencies: + "@oxc-resolver/binding-darwin-arm64" "1.10.2" + "@oxc-resolver/binding-darwin-x64" "1.10.2" + "@oxc-resolver/binding-freebsd-x64" "1.10.2" + "@oxc-resolver/binding-linux-arm-gnueabihf" "1.10.2" + "@oxc-resolver/binding-linux-arm64-gnu" "1.10.2" + "@oxc-resolver/binding-linux-arm64-musl" "1.10.2" + "@oxc-resolver/binding-linux-x64-gnu" "1.10.2" + "@oxc-resolver/binding-linux-x64-musl" "1.10.2" + "@oxc-resolver/binding-wasm32-wasi" "1.10.2" + "@oxc-resolver/binding-win32-arm64-msvc" "1.10.2" + "@oxc-resolver/binding-win32-x64-msvc" "1.10.2" + p-filter@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" @@ -5672,6 +5999,11 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -6054,10 +6386,10 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rimraf@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf" - integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== +rimraf@^5.0.10: + version "5.0.10" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c" + integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== dependencies: glob "^10.3.7" @@ -6114,6 +6446,11 @@ semver@^7.0.0, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: dependencies: lru-cache "^6.0.0" +semver@^7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -6586,6 +6923,11 @@ tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.2: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@^2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -6702,10 +7044,10 @@ typed-array-length@^1.0.5: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" -typescript@^5.4.3: - version "5.4.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.3.tgz#5c6fedd4c87bee01cd7a528a30145521f8e0feff" - integrity sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg== +typescript@^5.5.4: + version "5.5.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" + integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== unbox-primitive@^1.0.2: version "1.0.2" @@ -6763,6 +7105,14 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" From 29491d0352ee0c78c6d1a15f7b706e59229d62d2 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 8 Aug 2024 02:23:34 +0800 Subject: [PATCH 23/36] chore: make eslint happy --- src/utils/parse.ts | 2 +- test/rules/default.spec.ts | 10 +++++++-- test/rules/export.spec.ts | 5 ++++- test/rules/named.spec.ts | 10 +++++++-- test/rules/namespace.spec.ts | 19 +++++++++++----- test/rules/no-absolute-path.spec.ts | 5 +++-- test/rules/no-duplicates.spec.ts | 5 ++++- test/rules/no-empty-named-blocks.spec.ts | 4 ++-- test/rules/no-named-as-default-member.spec.ts | 10 +++++++-- test/rules/no-named-as-default.spec.ts | 22 ++++++++++++++----- test/rules/no-namespace.spec.ts | 2 +- test/rules/no-unresolved.spec.ts | 5 ++++- test/rules/no-unused-modules.spec.ts | 4 ++-- test/rules/no-useless-path-segments.spec.ts | 10 +++++++-- test/rules/order.spec.ts | 10 ++++----- test/utils.ts | 2 +- 16 files changed, 90 insertions(+), 35 deletions(-) diff --git a/src/utils/parse.ts b/src/utils/parse.ts index c10f8c5ba..bb5bd85c6 100644 --- a/src/utils/parse.ts +++ b/src/utils/parse.ts @@ -130,7 +130,7 @@ export function parse( console.warn( // Can only be invalid for custom parser per imports/parser `\`parseForESLint\` from parser \`${typeof parserOrPath === 'string' ? parserOrPath : '`context.languageOptions.parser`'}\` is invalid and will just be ignored`, - { content } + { content }, ) } else { return makeParseReturn(ast, keysFromParser(parserOrPath, parser)) diff --git a/test/rules/default.spec.ts b/test/rules/default.spec.ts index abc13369c..0dd155d5a 100644 --- a/test/rules/default.spec.ts +++ b/test/rules/default.spec.ts @@ -11,7 +11,10 @@ const ruleTester = new TSESLintRuleTester() ruleTester.run('default', rule, { valid: [ - test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) } }), + test({ + code: 'import "./malformed.js"', + languageOptions: { parser: require(parsers.ESPREE) }, + }), test({ code: 'import foo from "./empty-folder";' }), test({ code: 'import { foo } from "./default-export";' }), @@ -30,7 +33,10 @@ ruleTester.run('default', rule, { // core modules always have a default test({ code: 'import crypto from "crypto";' }), - test({ code: 'import common from "./common";', languageOptions: { parser: require(parsers.BABEL) }, }), + test({ + code: 'import common from "./common";', + languageOptions: { parser: require(parsers.BABEL) }, + }), // es7 export syntax test({ diff --git a/test/rules/export.spec.ts b/test/rules/export.spec.ts index 0c3547fbe..10df5bd1e 100644 --- a/test/rules/export.spec.ts +++ b/test/rules/export.spec.ts @@ -8,7 +8,10 @@ const ruleTester = new TSESLintRuleTester() ruleTester.run('export', rule, { valid: [ - test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) } }), + test({ + code: 'import "./malformed.js"', + languageOptions: { parser: require(parsers.ESPREE) }, + }), // default test({ code: 'var foo = "foo"; export default foo;' }), diff --git a/test/rules/named.spec.ts b/test/rules/named.spec.ts index 8786ae2cb..6b8a359c0 100644 --- a/test/rules/named.spec.ts +++ b/test/rules/named.spec.ts @@ -20,7 +20,10 @@ function error( ruleTester.run('named', rule, { valid: [ - test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) } }), + test({ + code: 'import "./malformed.js"', + languageOptions: { parser: require(parsers.ESPREE) }, + }), test({ code: 'import { foo } from "./bar"' }), test({ code: 'import { foo } from "./empty-module"' }), @@ -152,7 +155,10 @@ ruleTester.run('named', rule, { }), // ignore CJS by default. always ignore ignore list - test({ code: 'import {a, b, d} from "./common"', languageOptions: { parser: require(parsers.BABEL) }, }), + test({ + code: 'import {a, b, d} from "./common"', + languageOptions: { parser: require(parsers.BABEL) }, + }), test({ code: 'import { baz } from "./bar"', settings: { 'import-x/ignore': ['bar'] }, diff --git a/test/rules/namespace.spec.ts b/test/rules/namespace.spec.ts index 9dd18c53c..7c6ddb62b 100644 --- a/test/rules/namespace.spec.ts +++ b/test/rules/namespace.spec.ts @@ -17,7 +17,10 @@ function error(name: string, namespace: string) { } const valid = [ - test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) } }), + test({ + code: 'import "./malformed.js"', + languageOptions: { parser: require(parsers.ESPREE) }, + }), test({ code: "import * as foo from './empty-folder';" }), test({ @@ -249,21 +252,27 @@ const valid = [ test({ code: "import * as names from './default-export-string';", - languageOptions: { parserOptions: { parser: require(parsers.BABEL), ecmaVersion: 2022 } }, + languageOptions: { + parserOptions: { parser: require(parsers.BABEL), ecmaVersion: 2022 }, + }, }), test({ code: "import * as names from './default-export-string'; console.log(names.default)", - languageOptions: { parserOptions: { parser: require(parsers.BABEL), ecmaVersion: 2022 } }, + languageOptions: { + parserOptions: { parser: require(parsers.BABEL), ecmaVersion: 2022 }, + }, }), test({ code: "import * as names from './default-export-namespace-string';", languageOptions: { - parserOptions: { parser: require(parsers.ESPREE), ecmaVersion: 2022 }, + parserOptions: { parser: require(parsers.BABEL), ecmaVersion: 2022 }, }, }), test({ code: "import * as names from './default-export-namespace-string'; console.log(names.default)", - languageOptions: { parserOptions: { parser: require(parsers.ESPREE), ecmaVersion: 2022 } }, + languageOptions: { + parserOptions: { parser: require(parsers.BABEL), ecmaVersion: 2022 }, + }, }), test({ code: `import { "b" as b } from "./deep/a"; console.log(b.c.d.e)`, diff --git a/test/rules/no-absolute-path.spec.ts b/test/rules/no-absolute-path.spec.ts index c85b76e61..ea0ec0355 100644 --- a/test/rules/no-absolute-path.spec.ts +++ b/test/rules/no-absolute-path.spec.ts @@ -42,7 +42,8 @@ ruleTester.run('no-absolute-path', rule, { // amd not enabled by default test({ code: 'require(["/some/path"], function (f) { /* ... */ })' }), test({ - code: 'define(["/some/path"], function (f) { /* ... */ })', languageOptions: { parser: require(parsers.ESPREE), }, + code: 'define(["/some/path"], function (f) { /* ... */ })', + languageOptions: { parser: require(parsers.ESPREE) }, }), test({ code: 'require(["./some/path"], function (f) { /* ... */ })', @@ -121,7 +122,7 @@ ruleTester.run('no-absolute-path', rule, { test({ code: 'define(["/some/path"], function (f) { /* ... */ })', filename: '/foo/bar/index.js', - languageOptions: { parser: require(parsers.ESPREE), }, + languageOptions: { parser: require(parsers.ESPREE) }, options: [{ amd: true }], errors: [error], output: 'define(["../../some/path"], function (f) { /* ... */ })', diff --git a/test/rules/no-duplicates.spec.ts b/test/rules/no-duplicates.spec.ts index 859e9e08b..03d2c2eab 100644 --- a/test/rules/no-duplicates.spec.ts +++ b/test/rules/no-duplicates.spec.ts @@ -16,7 +16,10 @@ const ruleTester = new TSESLintRuleTester() ruleTester.run('no-duplicates', rule, { valid: [ - test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) }, }), + test({ + code: 'import "./malformed.js"', + languageOptions: { parser: require(parsers.ESPREE) }, + }), test({ code: "import { x } from './foo'; import { y } from './bar'" }), diff --git a/test/rules/no-empty-named-blocks.spec.ts b/test/rules/no-empty-named-blocks.spec.ts index e2f602521..133ce2195 100644 --- a/test/rules/no-empty-named-blocks.spec.ts +++ b/test/rules/no-empty-named-blocks.spec.ts @@ -18,11 +18,11 @@ function generateSuggestionsTestCases(cases: string[], parser?: any) { { suggestions: [ { - desc: 'Remove unused import', + messageId: 'unused', output: '', }, { - desc: 'Remove empty import block', + messageId: 'emptyImport', output: `import 'mod';`, }, ], diff --git a/test/rules/no-named-as-default-member.spec.ts b/test/rules/no-named-as-default-member.spec.ts index 5dd33a17d..da25bcf8a 100644 --- a/test/rules/no-named-as-default-member.spec.ts +++ b/test/rules/no-named-as-default-member.spec.ts @@ -19,7 +19,10 @@ ruleTester.run('no-named-as-default-member', rule, { }), test({ code: 'import bar, { foo } from "./export-default-string-and-named"', - languageOptions: { parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ...SYNTAX_CASES, @@ -75,7 +78,10 @@ ruleTester.run('no-named-as-default-member', rule, { type: 'MemberExpression', }, ], - languageOptions: { parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], }) diff --git a/test/rules/no-named-as-default.spec.ts b/test/rules/no-named-as-default.spec.ts index b1637889c..7e70b266c 100644 --- a/test/rules/no-named-as-default.spec.ts +++ b/test/rules/no-named-as-default.spec.ts @@ -10,7 +10,10 @@ console.log({ babel: require(parsers.BABEL) }) ruleTester.run('no-named-as-default', rule, { valid: [ - test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) }, }), + test({ + code: 'import "./malformed.js"', + languageOptions: { parser: require(parsers.ESPREE) }, + }), test({ code: 'import bar, { foo } from "./bar";' }), test({ code: 'import bar, { foo } from "./empty-folder";' }), @@ -33,7 +36,10 @@ ruleTester.run('no-named-as-default', rule, { test({ code: 'import bar, { foo } from "./export-default-string-and-named"', - languageOptions: { parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ...SYNTAX_CASES, @@ -89,7 +95,7 @@ ruleTester.run('no-named-as-default', rule, { test({ code: 'import foo from "./malformed.js"', - languageOptions: { parser: require(parsers.BABEL) }, + languageOptions: { parser: require(parsers.ESPREE) }, errors: [ { message: @@ -108,7 +114,10 @@ ruleTester.run('no-named-as-default', rule, { type: 'ImportDefaultSpecifier', }, ], - languageOptions: { parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), test({ code: 'import foo, { foo as bar } from "./export-default-string-and-named"', @@ -119,7 +128,10 @@ ruleTester.run('no-named-as-default', rule, { type: 'ImportDefaultSpecifier', }, ], - languageOptions: { parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022 } }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], }) diff --git a/test/rules/no-namespace.spec.ts b/test/rules/no-namespace.spec.ts index 033d3e8ed..dd9b7c96d 100644 --- a/test/rules/no-namespace.spec.ts +++ b/test/rules/no-namespace.spec.ts @@ -58,7 +58,7 @@ ruleTester.run('no-namespace', rule, { test({ code: "import defaultExport, * as foo from 'foo';", output: "import defaultExport, * as foo from 'foo';", - languageOptions: { parser: require(parsers.ESPREE), }, + languageOptions: { parser: require(parsers.ESPREE) }, errors: [ { line: 1, diff --git a/test/rules/no-unresolved.spec.ts b/test/rules/no-unresolved.spec.ts index 9d13434ce..fcaee28fa 100644 --- a/test/rules/no-unresolved.spec.ts +++ b/test/rules/no-unresolved.spec.ts @@ -26,7 +26,10 @@ function runResolverTests(resolver: 'node' | 'webpack') { ruleTester.run(`no-unresolved (${resolver})`, rule, { valid: [ - test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) }, }), + test({ + code: 'import "./malformed.js"', + languageOptions: { parser: require(parsers.ESPREE) }, + }), rest({ code: 'import foo from "./bar";' }), rest({ code: "import bar from './bar.js';" }), diff --git a/test/rules/no-unused-modules.spec.ts b/test/rules/no-unused-modules.spec.ts index b3394fa47..aae74d1be 100644 --- a/test/rules/no-unused-modules.spec.ts +++ b/test/rules/no-unused-modules.spec.ts @@ -1495,7 +1495,7 @@ describe('support ES2022 Arbitrary module namespace identifier names', () => { options: unusedExportsOptions, code: `import { "foo" as foo } from "./arbitrary-module-namespace-identifier-name-a"`, languageOptions: { - parser: require(parsers.BABEL), + parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022 }, }, filename: testFilePath( @@ -1506,7 +1506,7 @@ describe('support ES2022 Arbitrary module namespace identifier names', () => { options: unusedExportsOptions, code: 'const foo = 333;\nexport { foo as "foo" }', languageOptions: { - parser: require(parsers.BABEL), + parser: require(parsers.ESPREE), parserOptions: { ecmaVersion: 2022 }, }, filename: testFilePath( diff --git a/test/rules/no-useless-path-segments.spec.ts b/test/rules/no-useless-path-segments.spec.ts index 4a6d6d9ed..98afffa69 100644 --- a/test/rules/no-useless-path-segments.spec.ts +++ b/test/rules/no-useless-path-segments.spec.ts @@ -10,10 +10,16 @@ function runResolverTests(resolver: 'node' | 'webpack') { ruleTester.run(`no-useless-path-segments (${resolver})`, rule, { valid: [ // CommonJS modules with default options - test({ code: 'require("./../fixtures/malformed.js")', languageOptions: { parser: require(parsers.ESPREE) } }), + test({ + code: 'require("./../fixtures/malformed.js")', + languageOptions: { parser: require(parsers.ESPREE) }, + }), // ES modules with default options - test({ code: 'import "./malformed.js"', languageOptions: { parser: require(parsers.ESPREE) }, }), + test({ + code: 'import "./malformed.js"', + languageOptions: { parser: require(parsers.ESPREE) }, + }), test({ code: 'import "./test-module"' }), test({ code: 'import "./bar/"' }), test({ code: 'import "."' }), diff --git a/test/rules/order.spec.ts b/test/rules/order.spec.ts index 50c2076b0..bdf9933bf 100644 --- a/test/rules/order.spec.ts +++ b/test/rules/order.spec.ts @@ -2224,7 +2224,7 @@ ruleTester.run('order', rule, { message: '`./local` import should occur after import of `global2`', }, ], - languageOptions: { parser: require(parsers.ESPREE) } + languageOptions: { parser: require(parsers.ESPREE) }, }), // reorder fix cannot cross function call on moving below #2 test({ @@ -2249,7 +2249,7 @@ ruleTester.run('order', rule, { message: '`./local` import should occur after import of `global2`', }, ], - languageOptions: { parser: require(parsers.ESPREE) } + languageOptions: { parser: require(parsers.ESPREE) }, }), // reorder fix cannot cross function call on moving below #3 test({ @@ -2303,7 +2303,7 @@ ruleTester.run('order', rule, { message: '`./local` import should occur after import of `global3`', }, ], - languageOptions: { parser: require(parsers.ESPREE) } + languageOptions: { parser: require(parsers.ESPREE) }, }), ), // reorder fix cannot cross function call on moving below @@ -2713,7 +2713,7 @@ ruleTester.run('order', rule, { message: '`fs` import should occur before import of `async`', }, ], - languageOptions: { parser: require(parsers.ESPREE) } + languageOptions: { parser: require(parsers.ESPREE) }, }), ), // reorder cannot cross function call (import statement) @@ -3766,7 +3766,7 @@ flowRuleTester.run('order', rule, { column: 9, }, ], - languageOptions: { parser: require(parsers.ESPREE) } + languageOptions: { parser: require(parsers.ESPREE) }, }), ], }) diff --git a/test/utils.ts b/test/utils.ts index e91a36889..29271e297 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -90,7 +90,7 @@ export function test( parserOptions: { sourceType: 'module', ecmaVersion: 9, - ...t.languageOptions?.parserOptions + ...t.languageOptions?.parserOptions, }, }, } From f77b4c2fe38ee3a803b230e6366bc3d07ec4dcd8 Mon Sep 17 00:00:00 2001 From: merrywhether Date: Tue, 13 Aug 2024 17:38:11 -0700 Subject: [PATCH 24/36] Fix 88 tests --- package.json | 6 +- test/rules/extensions.spec.ts | 2 +- test/rules/first.spec.ts | 15 +- test/rules/no-cycle.spec.ts | 4 +- test/rules/no-deprecated.spec.ts | 2 +- test/rules/no-duplicates.spec.ts | 78 +--- test/rules/no-empty-named-blocks.spec.ts | 1 + test/rules/no-extraneous-dependencies.spec.ts | 13 - test/rules/no-namespace.spec.ts | 6 +- test/rules/no-unresolved.spec.ts | 4 +- test/rules/no-useless-path-segments.spec.ts | 14 +- test/rules/order.spec.ts | 378 +++++++----------- test/rules/unambiguous.spec.ts | 15 +- 13 files changed, 212 insertions(+), 326 deletions(-) diff --git a/package.json b/package.json index d4cfd7802..bf3df9960 100644 --- a/package.json +++ b/package.json @@ -82,8 +82,8 @@ "@total-typescript/ts-reset": "^0.5.1", "@types/debug": "^4.1.12", "@types/doctrine": "^0.0.9", - "@types/eslint8.56": "npm:@types/eslint@^8.56.11", "@types/eslint": "^9.6.0", + "@types/eslint8.56": "npm:@types/eslint@^8.56.11", "@types/eslint9": "npm:@types/eslint@^9.6.0", "@types/is-glob": "^4.0.4", "@types/jest": "^29.5.12", @@ -96,9 +96,7 @@ "cross-env": "^7.0.3", "enhanced-resolve": "^5.16.0", "escope": "^4.0.0", - "eslint8.56": "npm:eslint@^8.56.0", "eslint": "^9.8.0", - "eslint9": "npm:eslint@^9.8.0", "eslint-config-prettier": "^9.1.0", "eslint-doc-generator": "^1.7.1", "eslint-import-resolver-typescript": "^3.6.1", @@ -111,6 +109,8 @@ "eslint-plugin-n": "^16.6.2", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-unicorn": "^51.0.1", + "eslint8.56": "npm:eslint@^8.56.0", + "eslint9": "npm:eslint@^9.8.0", "jest": "^29.7.0", "npm-run-all2": "^6.1.2", "prettier": "^3.2.5", diff --git a/test/rules/extensions.spec.ts b/test/rules/extensions.spec.ts index f8896c421..24f45a9ba 100644 --- a/test/rules/extensions.spec.ts +++ b/test/rules/extensions.spec.ts @@ -660,7 +660,7 @@ ruleTester.run('extensions', rule, { }) describe('TypeScript', () => { - ruleTester.run(`${parsers.TS}: extensions ignore type-only`, rule, { + ruleTester.run(`extensions ignore type-only`, rule, { valid: [ test({ code: 'import type T from "./typescript-declare";', diff --git a/test/rules/first.spec.ts b/test/rules/first.spec.ts index 17daec79c..7e5aad5b1 100644 --- a/test/rules/first.spec.ts +++ b/test/rules/first.spec.ts @@ -25,7 +25,7 @@ ruleTester.run('first', rule, { import { x } from 'foo';", }), test({ - // issue #2210 + name: '...component.html (issue #2210)', code: fs.readFileSync(testFilePath('component.html'), 'utf8'), languageOptions: { parser: require('@angular-eslint/template-parser'), @@ -77,12 +77,23 @@ ruleTester.run('first', rule, { import { x } from './foo';\ import { z } from './baz';", errors: 3, - output: + output: [ "import { y } from './bar';\ var a = 1;\ if (true) { x() };\ import { x } from './foo';\ import { z } from './baz';", + "import { y } from './bar';\ + import { x } from './foo';\ + var a = 1;\ + if (true) { x() };\ + import { z } from './baz';", + "import { y } from './bar';\ + import { x } from './foo';\ + import { z } from './baz';\ + var a = 1;\ + if (true) { x() };", + ], }), test({ code: "if (true) { console.log(1) }import a from 'b'", diff --git a/test/rules/no-cycle.spec.ts b/test/rules/no-cycle.spec.ts index 4fce730d1..3ed489478 100644 --- a/test/rules/no-cycle.spec.ts +++ b/test/rules/no-cycle.spec.ts @@ -220,12 +220,12 @@ ruleTester.run('no-cycle', rule, { languageOptions: { parser: require(parsers.BABEL) }, }), test({ - code: `import { foo } from "./es6/depth-two"`, + code: `import("./es6/depth-two")`, options: [{ maxDepth: Number.POSITIVE_INFINITY }], errors: [error(`Dependency cycle via ./depth-one:1`)], }), test({ - code: `import { foo } from "./es6/depth-two"`, + code: `import("./es6/depth-two")`, options: [{ maxDepth: '∞' }], errors: [error(`Dependency cycle via ./depth-one:1`)], }), diff --git a/test/rules/no-deprecated.spec.ts b/test/rules/no-deprecated.spec.ts index 2ccea178a..eebc33bc8 100644 --- a/test/rules/no-deprecated.spec.ts +++ b/test/rules/no-deprecated.spec.ts @@ -250,7 +250,7 @@ describe('TypeScript', () => { }, } - ruleTester.run(parsers.TS, rule, { + ruleTester.run('no-deprecated', rule, { valid: [ test({ code: "import * as hasDeprecated from './ts-deprecated.ts'", diff --git a/test/rules/no-duplicates.spec.ts b/test/rules/no-duplicates.spec.ts index 03d2c2eab..bdd502333 100644 --- a/test/rules/no-duplicates.spec.ts +++ b/test/rules/no-duplicates.spec.ts @@ -108,9 +108,8 @@ ruleTester.run('no-duplicates', rule, { // #86: duplicate unresolved modules should be flagged test({ - code: "import foo from 'non-existent'; import bar from 'non-existent';", // Autofix bail because of different default import names. - output: "import foo from 'non-existent'; import bar from 'non-existent';", + code: "import foo from 'non-existent'; import bar from 'non-existent';", languageOptions: { parser: require(parsers.ESPREE) }, errors: [ "'non-existent' imported multiple times.", @@ -291,9 +290,8 @@ ruleTester.run('no-duplicates', rule, { }), test({ - code: "import * as ns1 from './foo'; import * as ns2 from './foo'", // Autofix bail because cannot merge namespace imports. - output: "import * as ns1 from './foo'; import * as ns2 from './foo'", + code: "import * as ns1 from './foo'; import * as ns2 from './foo'", errors: [ "'./foo' imported multiple times.", "'./foo' imported multiple times.", @@ -322,13 +320,8 @@ ruleTester.run('no-duplicates', rule, { }), test({ - code: ` - // some-tool-disable-next-line - import {x} from './foo' - import {//y\ny} from './foo' - `, // Autofix bail because of comment. - output: ` + code: ` // some-tool-disable-next-line import {x} from './foo' import {//y\ny} from './foo' @@ -340,13 +333,8 @@ ruleTester.run('no-duplicates', rule, { }), test({ - code: ` - import {x} from './foo' - // some-tool-disable-next-line - import {y} from './foo' - `, // Autofix bail because of comment. - output: ` + code: ` import {x} from './foo' // some-tool-disable-next-line import {y} from './foo' @@ -358,12 +346,8 @@ ruleTester.run('no-duplicates', rule, { }), test({ - code: ` - import {x} from './foo' // some-tool-disable-line - import {y} from './foo' - `, // Autofix bail because of comment. - output: ` + code: ` import {x} from './foo' // some-tool-disable-line import {y} from './foo' `, @@ -374,12 +358,8 @@ ruleTester.run('no-duplicates', rule, { }), test({ - code: ` - import {x} from './foo' - import {y} from './foo' // some-tool-disable-line - `, // Autofix bail because of comment. - output: ` + code: ` import {x} from './foo' import {y} from './foo' // some-tool-disable-line `, @@ -390,12 +370,8 @@ ruleTester.run('no-duplicates', rule, { }), test({ - code: ` - import {x} from './foo' - /* comment */ import {y} from './foo' - `, // Autofix bail because of comment. - output: ` + code: ` import {x} from './foo' /* comment */ import {y} from './foo' `, @@ -406,13 +382,8 @@ ruleTester.run('no-duplicates', rule, { }), test({ - code: ` - import {x} from './foo' - import {y} from './foo' /* comment - multiline */ - `, // Autofix bail because of comment. - output: ` + code: ` import {x} from './foo' import {y} from './foo' /* comment multiline */ @@ -460,12 +431,8 @@ import {x,y} from './foo' }), test({ - code: ` - import {x} from './foo' - import/* comment */{y} from './foo' - `, // Autofix bail because of comment. - output: ` + code: ` import {x} from './foo' import/* comment */{y} from './foo' `, @@ -476,12 +443,8 @@ import {x,y} from './foo' }), test({ - code: ` - import {x} from './foo' - import/* comment */'./foo' - `, // Autofix bail because of comment. - output: ` + code: ` import {x} from './foo' import/* comment */'./foo' `, @@ -492,12 +455,8 @@ import {x,y} from './foo' }), test({ - code: ` - import {x} from './foo' - import{y}/* comment */from './foo' - `, // Autofix bail because of comment. - output: ` + code: ` import {x} from './foo' import{y}/* comment */from './foo' `, @@ -508,12 +467,8 @@ import {x,y} from './foo' }), test({ - code: ` - import {x} from './foo' - import{y}from/* comment */'./foo' - `, // Autofix bail because of comment. - output: ` + code: ` import {x} from './foo' import{y}from/* comment */'./foo' `, @@ -524,14 +479,8 @@ import {x,y} from './foo' }), test({ - code: ` - import {x} from - // some-tool-disable-next-line - './foo' - import {y} from './foo' - `, // Autofix bail because of comment. - output: ` + code: ` import {x} from // some-tool-disable-next-line './foo' @@ -738,7 +687,6 @@ describe('TypeScript', () => { const invalid = [ test({ code: "import type x from './foo'; import type y from './foo'", - output: "import type x from './foo'; import type y from './foo'", ...parserConfig, errors: [ { diff --git a/test/rules/no-empty-named-blocks.spec.ts b/test/rules/no-empty-named-blocks.spec.ts index 133ce2195..cabdeae81 100644 --- a/test/rules/no-empty-named-blocks.spec.ts +++ b/test/rules/no-empty-named-blocks.spec.ts @@ -16,6 +16,7 @@ function generateSuggestionsTestCases(cases: string[], parser?: any) { }, errors: [ { + messageId: 'emptyNamed', suggestions: [ { messageId: 'unused', diff --git a/test/rules/no-extraneous-dependencies.spec.ts b/test/rules/no-extraneous-dependencies.spec.ts index 35ddaf7b9..dc7d5fbb4 100644 --- a/test/rules/no-extraneous-dependencies.spec.ts +++ b/test/rules/no-extraneous-dependencies.spec.ts @@ -60,11 +60,9 @@ ruleTester.run('no-extraneous-dependencies', rule, { test({ code: `export { foo } from "${pkg}"` }), test({ code: `export * from "${pkg}"` }), ]), - test({ code: 'import "eslint"' }), test({ code: 'import "eslint/lib/api"' }), test({ code: 'import "fs"' }), test({ code: 'import "./foo"' }), - test({ code: 'import "@org/package"' }), test({ code: 'import "electron"', @@ -497,17 +495,6 @@ ruleTester.run('no-extraneous-dependencies', rule, { ], }), - test({ - code: 'import "not-a-dependency"', - filename: path.join(packageDirMonoRepoRoot, 'foo.js'), - options: [{ packageDir: packageDirMonoRepoRoot }], - errors: [ - { - message: `'not-a-dependency' should be listed in the project's dependencies. Run 'npm i -S not-a-dependency' to add it`, - }, - ], - }), - test({ code: 'import "esm-package-not-in-pkg-json/esm-module";', errors: [ diff --git a/test/rules/no-namespace.spec.ts b/test/rules/no-namespace.spec.ts index dd9b7c96d..2c2efce8e 100644 --- a/test/rules/no-namespace.spec.ts +++ b/test/rules/no-namespace.spec.ts @@ -1,6 +1,6 @@ import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' -import { parsers, test } from '../utils' +import { test } from '../utils' import rule from 'eslint-plugin-import-x/rules/no-namespace' @@ -46,7 +46,6 @@ ruleTester.run('no-namespace', rule, { invalid: [ test({ code: "import * as foo from 'foo';", - output: "import * as foo from 'foo';", errors: [ { line: 1, @@ -57,8 +56,6 @@ ruleTester.run('no-namespace', rule, { }), test({ code: "import defaultExport, * as foo from 'foo';", - output: "import defaultExport, * as foo from 'foo';", - languageOptions: { parser: require(parsers.ESPREE) }, errors: [ { line: 1, @@ -69,7 +66,6 @@ ruleTester.run('no-namespace', rule, { }), test({ code: "import * as foo from './foo';", - output: "import * as foo from './foo';", errors: [ { line: 1, diff --git a/test/rules/no-unresolved.spec.ts b/test/rules/no-unresolved.spec.ts index fcaee28fa..d5cc31cff 100644 --- a/test/rules/no-unresolved.spec.ts +++ b/test/rules/no-unresolved.spec.ts @@ -371,7 +371,7 @@ for (const resolver of ['node', 'webpack'] as const) { runResolverTests(resolver) } -ruleTester.run('no-unresolved (import-x/resolve legacy)', rule, { +ruleTester.run('no-unresolved (import-x resolve legacy)', rule, { valid: [ test({ code: "import { DEEP } from 'in-alternate-root';", @@ -537,7 +537,7 @@ ruleTester.run('import() with built-in parser', rule, { describe('TypeScript', () => { // Type-only imports were added in TypeScript ESTree 2.23.0 - ruleTester.run(`${parsers.TS}: no-unresolved ignore type-only`, rule, { + ruleTester.run('no-unresolved (ignore type-only)', rule, { valid: [ test({ code: 'import type { JSONSchema7Type } from "@types/json-schema";', diff --git a/test/rules/no-useless-path-segments.spec.ts b/test/rules/no-useless-path-segments.spec.ts index 98afffa69..a886089da 100644 --- a/test/rules/no-useless-path-segments.spec.ts +++ b/test/rules/no-useless-path-segments.spec.ts @@ -67,7 +67,10 @@ function runResolverTests(resolver: 'node' | 'webpack') { // CommonJS modules test({ code: 'require("./../fixtures/malformed.js")', - output: 'require("../fixtures/malformed.js")', + output: [ + 'require("../fixtures/malformed.js")', + 'require("./malformed.js")', + ], options: [{ commonjs: true }], languageOptions: { parser: require(parsers.ESPREE) }, errors: [ @@ -76,7 +79,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { }), test({ code: 'require("./../fixtures/malformed")', - output: 'require("../fixtures/malformed")', + output: ['require("../fixtures/malformed")', 'require("./malformed")'], options: [{ commonjs: true }], languageOptions: { parser: require(parsers.ESPREE) }, errors: [ @@ -190,7 +193,10 @@ function runResolverTests(resolver: 'node' | 'webpack') { // ES modules test({ code: 'import "./../fixtures/malformed.js"', - output: 'import "../fixtures/malformed.js"', + output: [ + 'import "../fixtures/malformed.js"', + 'import "./malformed.js"', + ], languageOptions: { parser: require(parsers.ESPREE) }, errors: [ 'Useless path segments for "./../fixtures/malformed.js", should be "../fixtures/malformed.js"', @@ -198,7 +204,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { }), test({ code: 'import "./../fixtures/malformed"', - output: 'import "../fixtures/malformed"', + output: ['import "../fixtures/malformed"', 'import "./malformed"'], languageOptions: { parser: require(parsers.ESPREE) }, errors: [ 'Useless path segments for "./../fixtures/malformed", should be "../fixtures/malformed"', diff --git a/test/rules/order.spec.ts b/test/rules/order.spec.ts index bdf9933bf..7d82c2687 100644 --- a/test/rules/order.spec.ts +++ b/test/rules/order.spec.ts @@ -23,10 +23,6 @@ const flowRuleTester = new TSESLintRuleTester({ }, }) -function withoutAutofixOutput(test: T) { - return { ...test, output: test.code } -} - ruleTester.run('order', rule, { valid: [ // Default order using require @@ -1442,11 +1438,18 @@ ruleTester.run('order', rule, { var async = require('async'); var fs = require('fs'); `, - output: ` + output: [ + ` var async = require('async'); var sibling = require('./sibling'); var fs = require('fs'); `, + ` + var fs = require('fs'); + var async = require('async'); + var sibling = require('./sibling'); + `, + ], errors: [ { message: '`async` import should occur before import of `./sibling`', @@ -1500,65 +1503,57 @@ ruleTester.run('order', rule, { ], }), // member expression of require - test( - withoutAutofixOutput({ - code: ` + test({ + code: ` var foo = require('./foo').bar; var fs = require('fs'); `, - errors: [ - { - message: '`fs` import should occur before import of `./foo`', - }, - ], - }), - ), + errors: [ + { + message: '`fs` import should occur before import of `./foo`', + }, + ], + }), // nested member expression of require - test( - withoutAutofixOutput({ - code: ` + test({ + code: ` var foo = require('./foo').bar.bar.bar; var fs = require('fs'); `, - errors: [ - { - message: '`fs` import should occur before import of `./foo`', - }, - ], - }), - ), + errors: [ + { + message: '`fs` import should occur before import of `./foo`', + }, + ], + }), // fix near nested member expression of require with newlines - test( - withoutAutofixOutput({ - code: ` + test({ + code: ` var foo = require('./foo').bar .bar .bar; var fs = require('fs'); `, - errors: [ - { - message: '`fs` import should occur before import of `./foo`', - }, - ], - }), - ), + errors: [ + { + message: '`fs` import should occur before import of `./foo`', + }, + ], + }), // fix nested member expression of require with newlines - test( - withoutAutofixOutput({ - code: ` + test({ + code: ` var foo = require('./foo'); var fs = require('fs').bar .bar .bar; `, - errors: [ - { - message: '`fs` import should occur before import of `./foo`', - }, - ], - }), - ), + errors: [ + { + message: '`fs` import should occur before import of `./foo`', + }, + ], + }), // Grouping import types test({ code: ` @@ -1937,12 +1932,6 @@ ruleTester.run('order', rule, { var index = require('./'); `, - output: ` - var fs = require('fs'); /* multiline - comment */ - - var index = require('./'); - `, options: [ { groups: [['builtin'], ['index']], @@ -2047,13 +2036,6 @@ ruleTester.run('order', rule, { import 'something-else'; import _ from 'lodash'; `, - output: ` - import path from 'path'; - import 'loud-rejection'; - - import 'something-else'; - import _ from 'lodash'; - `, options: [ { 'newlines-between': 'never', warnOnUnassignedImports: false }, ], @@ -2096,13 +2078,6 @@ ruleTester.run('order', rule, { import 'something-else'; import _ from 'lodash'; `, - output: ` - import path from 'path'; - export const abc = 123; - - import 'something-else'; - import _ from 'lodash'; - `, options: [{ 'newlines-between': 'never' }], errors: [ { @@ -2182,12 +2157,21 @@ ruleTester.run('order', rule, { 2 */ import _ from 'lodash'; `, - output: ` + output: [ + ` + import path from 'path'; + /* 1 + 2 */ + import _ from 'lodash'; + `, + ` import path from 'path'; + /* 1 2 */ import _ from 'lodash'; `, + ], options: [{ 'newlines-between': 'always' }], errors: [ { @@ -2209,16 +2193,6 @@ ruleTester.run('order', rule, { fn_call(); `, - output: ` - const local = require('./local'); - - fn_call(); - - const global1 = require('global1'); - const global2 = require('global2'); - - fn_call(); - `, errors: [ { message: '`./local` import should occur after import of `global2`', @@ -2236,14 +2210,6 @@ ruleTester.run('order', rule, { fn_call(); `, - output: ` - const local = require('./local'); - fn_call(); - const global1 = require('global1'); - const global2 = require('global2'); - - fn_call(); - `, errors: [ { message: '`./local` import should occur after import of `global2`', @@ -2266,19 +2232,6 @@ ruleTester.run('order', rule, { const global5 = require('global5'); fn_call(); `, - output: ` - const local1 = require('./local1'); - const local2 = require('./local2'); - const local3 = require('./local3'); - const local4 = require('./local4'); - fn_call(); - const global1 = require('global1'); - const global2 = require('global2'); - const global3 = require('global3'); - const global4 = require('global4'); - const global5 = require('global5'); - fn_call(); - `, errors: [ '`./local1` import should occur after import of `global5`', '`./local2` import should occur after import of `global5`', @@ -2287,9 +2240,8 @@ ruleTester.run('order', rule, { ], }), // reorder fix cannot cross function call on moving below - test( - withoutAutofixOutput({ - code: ` + test({ + code: ` const local = require('./local'); const global1 = require('global1'); const global2 = require('global2'); @@ -2298,14 +2250,13 @@ ruleTester.run('order', rule, { fn_call(); `, - errors: [ - { - message: '`./local` import should occur after import of `global3`', - }, - ], - languageOptions: { parser: require(parsers.ESPREE) }, - }), - ), + errors: [ + { + message: '`./local` import should occur after import of `global3`', + }, + ], + languageOptions: { parser: require(parsers.ESPREE) }, + }), // reorder fix cannot cross function call on moving below // fix imports that not crosses function call only test({ @@ -2615,20 +2566,18 @@ ruleTester.run('order', rule, { }), // reorder fix cannot cross non import or require - test( - withoutAutofixOutput({ - code: ` + test({ + code: ` var async = require('async'); fn_call(); var fs = require('fs'); `, - errors: [ - { - message: '`fs` import should occur before import of `async`', - }, - ], - }), - ), + errors: [ + { + message: '`fs` import should occur before import of `async`', + }, + ], + }), // reorder fix cannot cross function call on moving below (from #1252) test({ code: ` @@ -2641,16 +2590,6 @@ ruleTester.run('order', rule, { http.createServer(express()); `, - output: ` - const env = require('./config'); - - Object.keys(env); - - const http = require('http'); - const express = require('express'); - - http.createServer(express()); - `, errors: [ { message: '`./config` import should occur after import of `express`', @@ -2658,124 +2597,108 @@ ruleTester.run('order', rule, { ], }), // reorder cannot cross non plain requires - test( - withoutAutofixOutput({ - code: ` + test({ + code: ` var async = require('async'); var a = require('./value.js')(a); var fs = require('fs'); `, - errors: [ - { - message: '`fs` import should occur before import of `async`', - }, - ], - }), - ), + errors: [ + { + message: '`fs` import should occur before import of `async`', + }, + ], + }), // reorder fixes cannot be applied to non plain requires #1 - test( - withoutAutofixOutput({ - code: ` + test({ + code: ` var async = require('async'); var fs = require('fs')(a); `, - errors: [ - { - message: '`fs` import should occur before import of `async`', - }, - ], - }), - ), + errors: [ + { + message: '`fs` import should occur before import of `async`', + }, + ], + }), // reorder fixes cannot be applied to non plain requires #2 - test( - withoutAutofixOutput({ - code: ` + test({ + code: ` var async = require('async')(a); var fs = require('fs'); `, - errors: [ - { - message: '`fs` import should occur before import of `async`', - }, - ], - }), - ), + errors: [ + { + message: '`fs` import should occur before import of `async`', + }, + ], + }), // cannot require in case of not assignment require - test( - withoutAutofixOutput({ - code: ` + test({ + code: ` var async = require('async'); require('./aa'); var fs = require('fs'); `, - errors: [ - { - message: '`fs` import should occur before import of `async`', - }, - ], - languageOptions: { parser: require(parsers.ESPREE) }, - }), - ), + errors: [ + { + message: '`fs` import should occur before import of `async`', + }, + ], + languageOptions: { parser: require(parsers.ESPREE) }, + }), // reorder cannot cross function call (import statement) - test( - withoutAutofixOutput({ - code: ` + test({ + code: ` import async from 'async'; fn_call(); import fs from 'fs'; `, - errors: [ - { - message: '`fs` import should occur before import of `async`', - }, - ], - }), - ), + errors: [ + { + message: '`fs` import should occur before import of `async`', + }, + ], + }), // reorder cannot cross variable assignment (import statement) - test( - withoutAutofixOutput({ - code: ` + test({ + code: ` import async from 'async'; var a = 1; import fs from 'fs'; `, - errors: [ - { - message: '`fs` import should occur before import of `async`', - }, - ], - }), - ), + errors: [ + { + message: '`fs` import should occur before import of `async`', + }, + ], + }), // reorder cannot cross non plain requires (import statement) - test( - withoutAutofixOutput({ - code: ` + test({ + code: ` import async from 'async'; var a = require('./value.js')(a); import fs from 'fs'; `, - errors: [ - { - message: '`fs` import should occur before import of `async`', - }, - ], - }), - ), + errors: [ + { + message: '`fs` import should occur before import of `async`', + }, + ], + }), // cannot reorder in case of not assignment import - test( - withoutAutofixOutput({ - code: ` + test({ + code: ` import async from 'async'; import './aa'; import fs from 'fs'; `, - errors: [ - { - message: '`fs` import should occur before import of `async`', - }, - ], - }), - ), + errors: [ + { + message: '`fs` import should occur before import of `async`', + }, + ], + }), // Option alphabetize: {order: 'asc'} test({ code: ` @@ -3021,12 +2944,20 @@ ruleTester.run('order', rule, { const blah = require('./blah'); import { hello } from './hello'; `, - output: ` + output: [ + ` import { int } from './int'; const { cello } = require('./cello'); const blah = require('./blah'); import { hello } from './hello'; `, + ` + import { int } from './int'; + import { hello } from './hello'; + const { cello } = require('./cello'); + const blah = require('./blah'); + `, + ], errors: [ { message: '`./int` import should occur before import of `./cello`', @@ -3474,12 +3405,6 @@ describe('TypeScript', () => { import local from './local2'; import 'global2'; `, - output: ` - import './local1'; - import global from 'global1'; - import local from './local2'; - import 'global2'; - `, errors: [ { message: @@ -3499,14 +3424,6 @@ describe('TypeScript', () => { import 'global1'; - import global2 from 'global2'; - import global3 from 'global3'; - `, - output: ` - import local from './local'; - - import 'global1'; - import global2 from 'global2'; import global3 from 'global3'; `, @@ -3703,7 +3620,8 @@ flowRuleTester.run('order', rule, { import { component } from '../../../../path/path/path/component'; import { controller } from '../../../../path/path/path/controller'; ` - : ` + : [ + ` import { helpers } from 'path/path/path/helpers'; import { cfg } from 'path/path/path/src/Cfg'; import { l10n } from 'path/src/l10n'; @@ -3712,6 +3630,16 @@ flowRuleTester.run('order', rule, { import { component } from '../../../../path/path/path/component'; import { controller } from '../../../../path/path/path/controller'; `, + ` + import { helpers } from 'path/path/path/helpers'; + import { cfg } from 'path/path/path/src/Cfg'; + import { tip } from 'path/path/tip'; + import { l10n } from 'path/src/l10n'; + + import { component } from '../../../../path/path/path/component'; + import { controller } from '../../../../path/path/path/controller'; + `, + ], options: [ { groups: [ diff --git a/test/rules/unambiguous.spec.ts b/test/rules/unambiguous.spec.ts index 86c9dfca1..c38932e52 100644 --- a/test/rules/unambiguous.spec.ts +++ b/test/rules/unambiguous.spec.ts @@ -8,9 +8,18 @@ const ruleTester = new TSESLintRuleTester() ruleTester.run('unambiguous', rule, { valid: [ - 'function x() {}', - '"use strict"; function y() {}', - + { + code: 'function x() {}', + languageOptions: { + parserOptions: { sourceType: 'commonjs' }, + }, + }, + { + code: '"use strict"; function y() {}', + languageOptions: { + parserOptions: { sourceType: 'commonjs' }, + }, + }, { code: 'import y from "z"; function x() {}', languageOptions: { From 945e8f87a1cd5cc4589678e815281310328341de Mon Sep 17 00:00:00 2001 From: Sukka Date: Wed, 14 Aug 2024 22:26:57 +0800 Subject: [PATCH 25/36] test(extensions): update test group name --- test/rules/extensions.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/rules/extensions.spec.ts b/test/rules/extensions.spec.ts index 24f45a9ba..8dd22ddfe 100644 --- a/test/rules/extensions.spec.ts +++ b/test/rules/extensions.spec.ts @@ -660,7 +660,7 @@ ruleTester.run('extensions', rule, { }) describe('TypeScript', () => { - ruleTester.run(`extensions ignore type-only`, rule, { + ruleTester.run(`typescript - extensions ignore type-only`, rule, { valid: [ test({ code: 'import type T from "./typescript-declare";', From 152d3e97a1df84df4af46f95db856d271c41ddfc Mon Sep 17 00:00:00 2001 From: Risto Keravuori Date: Wed, 14 Aug 2024 09:47:05 -0700 Subject: [PATCH 26/36] test: fix no-absolute-path (#4) --- test/rules/no-absolute-path.spec.ts | 50 ++++++++++++++++------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/test/rules/no-absolute-path.spec.ts b/test/rules/no-absolute-path.spec.ts index ea0ec0355..003d7d096 100644 --- a/test/rules/no-absolute-path.spec.ts +++ b/test/rules/no-absolute-path.spec.ts @@ -1,3 +1,5 @@ +import path from 'node:path' + import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' import { parsers, test } from '../utils' @@ -10,6 +12,10 @@ const error = { messageId: 'absolute', } +function absolutePath(testPath: string) { + return path.join(__dirname, testPath); +} + ruleTester.run('no-absolute-path', rule, { valid: [ test({ code: 'import _ from "lodash"' }), @@ -56,72 +62,72 @@ ruleTester.run('no-absolute-path', rule, { ], invalid: [ test({ - code: 'import f from "/foo"', - filename: '/foo/bar/index.js', + code: `import f from "${absolutePath('/foo')}"`, + filename: absolutePath('/foo/bar/index.js'), errors: [error], output: 'import f from ".."', }), test({ - code: 'import f from "/foo/bar/baz.js"', - filename: '/foo/bar/index.js', + code: `import f from "${absolutePath('/foo/bar/baz.js')}"`, + filename: absolutePath('/foo/bar/index.js'), errors: [error], output: 'import f from "./baz.js"', }), test({ - code: 'import f from "/foo/path"', - filename: '/foo/bar/index.js', + code: `import f from "${absolutePath('/foo/path')}"`, + filename: absolutePath('/foo/bar/index.js'), errors: [error], output: 'import f from "../path"', }), test({ - code: 'import f from "/some/path"', - filename: '/foo/bar/index.js', + code: `import f from "${absolutePath('/some/path')}"`, + filename: absolutePath('/foo/bar/index.js'), errors: [error], output: 'import f from "../../some/path"', }), test({ - code: 'import f from "/some/path"', - filename: '/foo/bar/index.js', + code: `import f from "${absolutePath('/some/path')}"`, + filename: absolutePath('/foo/bar/index.js'), options: [{ amd: true }], errors: [error], output: 'import f from "../../some/path"', }), test({ - code: 'var f = require("/foo")', - filename: '/foo/bar/index.js', + code: `var f = require("${absolutePath('/foo')}")`, + filename: absolutePath('/foo/bar/index.js'), errors: [error], output: 'var f = require("..")', }), test({ - code: 'var f = require("/foo/path")', - filename: '/foo/bar/index.js', + code: `var f = require("${absolutePath('/foo/path')}")`, + filename: absolutePath('/foo/bar/index.js'), errors: [error], output: 'var f = require("../path")', }), test({ - code: 'var f = require("/some/path")', - filename: '/foo/bar/index.js', + code: `var f = require("${absolutePath('/some/path')}")`, + filename: absolutePath('/foo/bar/index.js'), errors: [error], output: 'var f = require("../../some/path")', }), test({ - code: 'var f = require("/some/path")', - filename: '/foo/bar/index.js', + code: `var f = require("${absolutePath('/some/path')}")`, + filename: absolutePath('/foo/bar/index.js'), options: [{ amd: true }], errors: [error], output: 'var f = require("../../some/path")', }), // validate amd test({ - code: 'require(["/some/path"], function (f) { /* ... */ })', - filename: '/foo/bar/index.js', + code: `require(["${absolutePath('/some/path')}"], function (f) { /* ... */ })`, + filename: absolutePath('/foo/bar/index.js'), options: [{ amd: true }], errors: [error], output: 'require(["../../some/path"], function (f) { /* ... */ })', }), test({ - code: 'define(["/some/path"], function (f) { /* ... */ })', - filename: '/foo/bar/index.js', + code: `define(["${absolutePath('/some/path')}"], function (f) { /* ... */ })`, + filename: absolutePath('/foo/bar/index.js'), languageOptions: { parser: require(parsers.ESPREE) }, options: [{ amd: true }], errors: [error], From e523937eeabc4dc027c1e85214e7ea0bf52f3f4b Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 15 Aug 2024 00:52:24 +0800 Subject: [PATCH 27/36] test: fix another error --- test/rules/namespace.spec.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/rules/namespace.spec.ts b/test/rules/namespace.spec.ts index 7c6ddb62b..06eb9b948 100644 --- a/test/rules/namespace.spec.ts +++ b/test/rules/namespace.spec.ts @@ -367,6 +367,9 @@ const invalid = [ // parse errors test({ code: "import * as namespace from './malformed.js';", + languageOptions: { + parser: require(parsers.ESPREE), + }, errors: [ { message: From 4fef125fcd34e29092569b84ce91bcb8af0837b3 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 15 Aug 2024 00:58:29 +0800 Subject: [PATCH 28/36] chore: housekeeping --- package.json | 16 ++-- src/utils/parse.ts | 2 +- test/rules/namespace.spec.ts | 4 +- yarn.lock | 159 ++++++++++++++++++++++------------- 4 files changed, 113 insertions(+), 68 deletions(-) diff --git a/package.json b/package.json index bf3df9960..3e5fdbfbb 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "eslint": "^8.56.0 || ^9.0.0-0" }, "dependencies": { - "@typescript-eslint/utils": "^8.0.1", + "@typescript-eslint/utils": "^8.1.0", "debug": "^4.3.4", "doctrine": "^3.0.0", "eslint-import-resolver-node": "^0.3.9", @@ -82,21 +82,23 @@ "@total-typescript/ts-reset": "^0.5.1", "@types/debug": "^4.1.12", "@types/doctrine": "^0.0.9", - "@types/eslint": "^9.6.0", "@types/eslint8.56": "npm:@types/eslint@^8.56.11", + "@types/eslint": "^9.6.0", "@types/eslint9": "npm:@types/eslint@^9.6.0", "@types/is-glob": "^4.0.4", "@types/jest": "^29.5.12", "@types/json-schema": "^7.0.15", "@types/node": "^20.11.30", - "@typescript-eslint/eslint-plugin": "^8.0.1", - "@typescript-eslint/parser": "^8.0.1", - "@typescript-eslint/rule-tester": "^8.0.1", + "@typescript-eslint/eslint-plugin": "^8.1.0", + "@typescript-eslint/parser": "^8.1.0", + "@typescript-eslint/rule-tester": "^8.1.0", "@unts/patch-package": "^8.0.0", "cross-env": "^7.0.3", "enhanced-resolve": "^5.16.0", "escope": "^4.0.0", - "eslint": "^9.8.0", + "eslint": "^9.9.0", + "eslint8.56": "npm:eslint@^8.56.0", + "eslint9": "npm:eslint@^9.8.0", "eslint-config-prettier": "^9.1.0", "eslint-doc-generator": "^1.7.1", "eslint-import-resolver-typescript": "^3.6.1", @@ -109,8 +111,6 @@ "eslint-plugin-n": "^16.6.2", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-unicorn": "^51.0.1", - "eslint8.56": "npm:eslint@^8.56.0", - "eslint9": "npm:eslint@^9.8.0", "jest": "^29.7.0", "npm-run-all2": "^6.1.2", "prettier": "^3.2.5", diff --git a/src/utils/parse.ts b/src/utils/parse.ts index bb5bd85c6..1dc823ec1 100644 --- a/src/utils/parse.ts +++ b/src/utils/parse.ts @@ -130,7 +130,7 @@ export function parse( console.warn( // Can only be invalid for custom parser per imports/parser `\`parseForESLint\` from parser \`${typeof parserOrPath === 'string' ? parserOrPath : '`context.languageOptions.parser`'}\` is invalid and will just be ignored`, - { content }, + { content, parser, parserOrPath }, ) } else { return makeParseReturn(ast, keysFromParser(parserOrPath, parser)) diff --git a/test/rules/namespace.spec.ts b/test/rules/namespace.spec.ts index 06eb9b948..3ab8797a0 100644 --- a/test/rules/namespace.spec.ts +++ b/test/rules/namespace.spec.ts @@ -265,13 +265,13 @@ const valid = [ test({ code: "import * as names from './default-export-namespace-string';", languageOptions: { - parserOptions: { parser: require(parsers.BABEL), ecmaVersion: 2022 }, + parserOptions: { parser: require(parsers.ESPREE), ecmaVersion: 2022 }, }, }), test({ code: "import * as names from './default-export-namespace-string'; console.log(names.default)", languageOptions: { - parserOptions: { parser: require(parsers.BABEL), ecmaVersion: 2022 }, + parserOptions: { parser: require(parsers.ESPREE), ecmaVersion: 2022 }, }, }), test({ diff --git a/yarn.lock b/yarn.lock index b4375ec03..dbb58569b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1674,6 +1674,11 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.8.0.tgz#ae9bc14bb839713c5056f5018bcefa955556d3a4" integrity sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA== +"@eslint/js@9.9.0": + version "9.9.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.9.0.tgz#d8437adda50b3ed4401964517b64b4f59b0e2638" + integrity sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug== + "@eslint/object-schema@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843" @@ -2549,39 +2554,39 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz#5dbd1b498fdea83a16d292322d27d293ce156f94" - integrity sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ== +"@typescript-eslint/eslint-plugin@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.1.0.tgz#3c020deeaaba82a6f741d00dacf172c53be4911f" + integrity sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.0.1" - "@typescript-eslint/type-utils" "8.0.1" - "@typescript-eslint/utils" "8.0.1" - "@typescript-eslint/visitor-keys" "8.0.1" + "@typescript-eslint/scope-manager" "8.1.0" + "@typescript-eslint/type-utils" "8.1.0" + "@typescript-eslint/utils" "8.1.0" + "@typescript-eslint/visitor-keys" "8.1.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.0.1.tgz#eb0728147a3a79edf43dde84c797f117213bbfdb" - integrity sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg== +"@typescript-eslint/parser@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.1.0.tgz#b7e77f5fa212df59eba51ecd4986f194bccc2303" + integrity sha512-U7iTAtGgJk6DPX9wIWPPOlt1gO57097G06gIcl0N0EEnNw8RGD62c+2/DiP/zL7KrkqnnqF7gtFGR7YgzPllTA== dependencies: - "@typescript-eslint/scope-manager" "8.0.1" - "@typescript-eslint/types" "8.0.1" - "@typescript-eslint/typescript-estree" "8.0.1" - "@typescript-eslint/visitor-keys" "8.0.1" + "@typescript-eslint/scope-manager" "8.1.0" + "@typescript-eslint/types" "8.1.0" + "@typescript-eslint/typescript-estree" "8.1.0" + "@typescript-eslint/visitor-keys" "8.1.0" debug "^4.3.4" -"@typescript-eslint/rule-tester@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/rule-tester/-/rule-tester-8.0.1.tgz#bb7a1a9c6814e693a4f2b726d375ffc6ff02461e" - integrity sha512-uNOvD7HdsEgRnSCMkxMmP6COq0ItXBXrWdII78svxZjhSNJ3gU4rkL4y0ui6ZoHy0wOfS1f0me1ti+2komxlNg== +"@typescript-eslint/rule-tester@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/rule-tester/-/rule-tester-8.1.0.tgz#b413ce541234695f12cfe231941b026e4f2c83ef" + integrity sha512-shzRkkwKoCUCV1lttzqMFsKnbsOWQ0vjfxe1q3kDjrqdhKkQ/t3t3GwHk0QqjYQd7NUjKk2EB+nNaNI//0IL7Q== dependencies: - "@typescript-eslint/typescript-estree" "8.0.1" - "@typescript-eslint/utils" "8.0.1" + "@typescript-eslint/typescript-estree" "8.1.0" + "@typescript-eslint/utils" "8.1.0" ajv "^6.12.6" json-stable-stringify-without-jsonify "^1.0.1" lodash.merge "4.6.2" @@ -2595,21 +2600,21 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz#544259c29e1ebf65d30b6e99a9f420d98795a54e" - integrity sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ== +"@typescript-eslint/scope-manager@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.1.0.tgz#dd8987d2efebb71d230a1c71d82e84a7aead5c3d" + integrity sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ== dependencies: - "@typescript-eslint/types" "8.0.1" - "@typescript-eslint/visitor-keys" "8.0.1" + "@typescript-eslint/types" "8.1.0" + "@typescript-eslint/visitor-keys" "8.1.0" -"@typescript-eslint/type-utils@8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz#a613ee2dfeed4a9781300b5d326ec7cf946eed92" - integrity sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng== +"@typescript-eslint/type-utils@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.1.0.tgz#dbf5a4308166dfc37a36305390dea04a3a3b5048" + integrity sha512-oLYvTxljVvsMnldfl6jIKxTaU7ok7km0KDrwOt1RHYu6nxlhN3TIx8k5Q52L6wR33nOwDgM7VwW1fT1qMNfFIA== dependencies: - "@typescript-eslint/typescript-estree" "8.0.1" - "@typescript-eslint/utils" "8.0.1" + "@typescript-eslint/typescript-estree" "8.1.0" + "@typescript-eslint/utils" "8.1.0" debug "^4.3.4" ts-api-utils "^1.3.0" @@ -2618,10 +2623,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.0.1.tgz#333e2f4c158952dbc8181a4ddcc6e49898a28918" - integrity sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw== +"@typescript-eslint/types@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.1.0.tgz#fbf1eaa668a7e444ac507732ca9d3c3468e5db9c" + integrity sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -2636,13 +2641,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz#64575ec7b77aedfe497acdfb2779ec942bb8d866" - integrity sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w== +"@typescript-eslint/typescript-estree@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.1.0.tgz#c44e5667683c0bb5caa43192e27de6a994f4e4c4" + integrity sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg== dependencies: - "@typescript-eslint/types" "8.0.1" - "@typescript-eslint/visitor-keys" "8.0.1" + "@typescript-eslint/types" "8.1.0" + "@typescript-eslint/visitor-keys" "8.1.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -2650,15 +2655,15 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/utils@8.0.1", "@typescript-eslint/utils@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.0.1.tgz#b48e3320c4f9011f97d25e0588b8c143adc38d2a" - integrity sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA== +"@typescript-eslint/utils@8.1.0", "@typescript-eslint/utils@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.1.0.tgz#a922985a43d2560ce0d293be79148fa80c1325e0" + integrity sha512-ypRueFNKTIFwqPeJBfeIpxZ895PQhNyH4YID6js0UoBImWYoSjBsahUn9KMiJXh94uOjVBgHD9AmkyPsPnFwJA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.0.1" - "@typescript-eslint/types" "8.0.1" - "@typescript-eslint/typescript-estree" "8.0.1" + "@typescript-eslint/scope-manager" "8.1.0" + "@typescript-eslint/types" "8.1.0" + "@typescript-eslint/typescript-estree" "8.1.0" "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.38.1": version "5.62.0" @@ -2682,12 +2687,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz#e5816803b4dad1de5e97f00df8dc15d0bcb49778" - integrity sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ== +"@typescript-eslint/visitor-keys@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.1.0.tgz#ab2b3a9699a8ddebf0c205e133f114c1fed9daad" + integrity sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag== dependencies: - "@typescript-eslint/types" "8.0.1" + "@typescript-eslint/types" "8.1.0" eslint-visitor-keys "^3.4.3" "@ungap/structured-clone@^1.2.0": @@ -4035,7 +4040,7 @@ eslint-visitor-keys@^4.0.0: strip-ansi "^6.0.1" text-table "^0.2.0" -"eslint9@npm:eslint@^9.8.0", eslint@^9.8.0: +"eslint9@npm:eslint@^9.8.0": version "9.8.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.8.0.tgz#a4f4a090c8ea2d10864d89a6603e02ce9f649f0f" integrity sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A== @@ -4075,6 +4080,46 @@ eslint-visitor-keys@^4.0.0: strip-ansi "^6.0.1" text-table "^0.2.0" +eslint@^9.9.0: + version "9.9.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.9.0.tgz#8d214e69ae4debeca7ae97daebbefe462072d975" + integrity sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.11.0" + "@eslint/config-array" "^0.17.1" + "@eslint/eslintrc" "^3.1.0" + "@eslint/js" "9.9.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.3.0" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + escape-string-regexp "^4.0.0" + eslint-scope "^8.0.2" + eslint-visitor-keys "^4.0.0" + espree "^10.1.0" + esquery "^1.5.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + espree@^10.0.1, espree@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56" From 49edefe76ff413336b940d075180074ce42319e8 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 15 Aug 2024 01:25:37 +0800 Subject: [PATCH 29/36] test: fix 4 tests --- src/utils/parse.ts | 8 ++++---- test/rules/namespace.spec.ts | 12 ++++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/utils/parse.ts b/src/utils/parse.ts index 1dc823ec1..9886b9b11 100644 --- a/src/utils/parse.ts +++ b/src/utils/parse.ts @@ -15,9 +15,9 @@ import { moduleRequire } from './module-require' const log = debug('eslint-plugin-import-x:parse') function keysFromParser( - parserPath: string | TSESLint.Linter.ParserModule, - parserInstance: TSESLint.Linter.ParserModule, - parsedResult?: TSESLint.Linter.ESLintParseResult, + parserPath: string | TSESLint.Parser.ParserModule, + parserInstance: TSESLint.Parser.ParserModule, + parsedResult?: TSESLint.Parser.ParseResult, ) { // Exposed by @typescript-eslint/parser and @babel/eslint-parser if (parsedResult && parsedResult.visitorKeys) { @@ -130,7 +130,7 @@ export function parse( console.warn( // Can only be invalid for custom parser per imports/parser `\`parseForESLint\` from parser \`${typeof parserOrPath === 'string' ? parserOrPath : '`context.languageOptions.parser`'}\` is invalid and will just be ignored`, - { content, parser, parserOrPath }, + { content, parserMeta: parser.meta }, ) } else { return makeParseReturn(ast, keysFromParser(parserOrPath, parser)) diff --git a/test/rules/namespace.spec.ts b/test/rules/namespace.spec.ts index 3ab8797a0..69bad45ef 100644 --- a/test/rules/namespace.spec.ts +++ b/test/rules/namespace.spec.ts @@ -253,25 +253,29 @@ const valid = [ test({ code: "import * as names from './default-export-string';", languageOptions: { - parserOptions: { parser: require(parsers.BABEL), ecmaVersion: 2022 }, + parser: require(parsers.BABEL), + parserOptions: { ecmaVersion: 2022 }, }, }), test({ code: "import * as names from './default-export-string'; console.log(names.default)", languageOptions: { - parserOptions: { parser: require(parsers.BABEL), ecmaVersion: 2022 }, + parser: require(parsers.BABEL), + parserOptions: { ecmaVersion: 2022 }, }, }), test({ code: "import * as names from './default-export-namespace-string';", languageOptions: { - parserOptions: { parser: require(parsers.ESPREE), ecmaVersion: 2022 }, + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, }, }), test({ code: "import * as names from './default-export-namespace-string'; console.log(names.default)", languageOptions: { - parserOptions: { parser: require(parsers.ESPREE), ecmaVersion: 2022 }, + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, }, }), test({ From c98e823061c81249ad6d42aac9d0198c8dfe413b Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 15 Aug 2024 01:39:08 +0800 Subject: [PATCH 30/36] test: fix flow tests --- test/rules/consistent-type-specifier-style.spec.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/rules/consistent-type-specifier-style.spec.ts b/test/rules/consistent-type-specifier-style.spec.ts index d24c9af94..b8c393279 100644 --- a/test/rules/consistent-type-specifier-style.spec.ts +++ b/test/rules/consistent-type-specifier-style.spec.ts @@ -467,6 +467,12 @@ describe('Babel/Flow', () => { parserOptions: { ecmaVersion: 6, sourceType: 'module', + requireConfigFile: false, + babelOptions: { + configFile: false, + babelrc: false, + presets: ['@babel/flow'], + }, }, }, }) From b534ddf6f2475cfba6d348d419c3dbc7e004ed54 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 15 Aug 2024 01:40:27 +0800 Subject: [PATCH 31/36] test: add hermes-eslint support --- package.json | 7 ++++--- .../consistent-type-specifier-style.spec.ts | 16 ++++++++++++++ test/utils.ts | 1 + yarn.lock | 21 +++++++++++++++++++ 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 3e5fdbfbb..26d5bfc1f 100644 --- a/package.json +++ b/package.json @@ -82,8 +82,8 @@ "@total-typescript/ts-reset": "^0.5.1", "@types/debug": "^4.1.12", "@types/doctrine": "^0.0.9", - "@types/eslint8.56": "npm:@types/eslint@^8.56.11", "@types/eslint": "^9.6.0", + "@types/eslint8.56": "npm:@types/eslint@^8.56.11", "@types/eslint9": "npm:@types/eslint@^9.6.0", "@types/is-glob": "^4.0.4", "@types/jest": "^29.5.12", @@ -97,8 +97,6 @@ "enhanced-resolve": "^5.16.0", "escope": "^4.0.0", "eslint": "^9.9.0", - "eslint8.56": "npm:eslint@^8.56.0", - "eslint9": "npm:eslint@^9.8.0", "eslint-config-prettier": "^9.1.0", "eslint-doc-generator": "^1.7.1", "eslint-import-resolver-typescript": "^3.6.1", @@ -111,6 +109,9 @@ "eslint-plugin-n": "^16.6.2", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-unicorn": "^51.0.1", + "eslint8.56": "npm:eslint@^8.56.0", + "eslint9": "npm:eslint@^9.8.0", + "hermes-eslint": "^0.23.1", "jest": "^29.7.0", "npm-run-all2": "^6.1.2", "prettier": "^3.2.5", diff --git a/test/rules/consistent-type-specifier-style.spec.ts b/test/rules/consistent-type-specifier-style.spec.ts index b8c393279..4f6d8ad2b 100644 --- a/test/rules/consistent-type-specifier-style.spec.ts +++ b/test/rules/consistent-type-specifier-style.spec.ts @@ -481,3 +481,19 @@ describe('Babel/Flow', () => { invalid: [...COMMON_TESTS.invalid, ...FLOW_ONLY.invalid], }) }) + +describe('Hermes/Flow', () => { + const ruleTester = new TSESLintRuleTester({ + languageOptions: { + parser: require(parsers.HERMES), + parserOptions: { + ecmaVersion: 6, + sourceType: 'module', + }, + }, + }) + ruleTester.run('consistent-type-specifier-style', rule, { + valid: [...COMMON_TESTS.valid, ...FLOW_ONLY.valid], + invalid: [...COMMON_TESTS.invalid, ...FLOW_ONLY.invalid], + }) +}) diff --git a/test/utils.ts b/test/utils.ts index 29271e297..b13a540e0 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -19,6 +19,7 @@ export const parsers = { ESPREE: require.resolve('espree'), TS: require.resolve('@typescript-eslint/parser'), BABEL: require.resolve('@babel/eslint-parser'), + HERMES: require.resolve('hermes-eslint') } export function tsVersionSatisfies(specifier: string) { diff --git a/yarn.lock b/yarn.lock index dbb58569b..263a14452 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4630,6 +4630,27 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" +hermes-eslint@^0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/hermes-eslint/-/hermes-eslint-0.23.1.tgz#e0801e58bd4a70f01b0b0659805f315ab7ea6691" + integrity sha512-DaEpbJobK1KwpTSXrPIKkHs2h+B+RTw2F1g9S70tjtJ14a3zM+2gPVUtc8xyffQqRJ6tPfs+/zRKwV17lwDvqA== + dependencies: + esrecurse "^4.3.0" + hermes-estree "0.23.1" + hermes-parser "0.23.1" + +hermes-estree@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.23.1.tgz#d0bac369a030188120ee7024926aabe5a9f84fdb" + integrity sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg== + +hermes-parser@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.23.1.tgz#e5de648e664f3b3d84d01b48fc7ab164f4b68205" + integrity sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA== + dependencies: + hermes-estree "0.23.1" + hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" From 8cc48a411cf55bde14feb333d8155db4ab29081e Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 15 Aug 2024 02:04:03 +0800 Subject: [PATCH 32/36] test: remove 2 meaningless tests --- test/rules/named.spec.ts | 53 +++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/test/rules/named.spec.ts b/test/rules/named.spec.ts index 6b8a359c0..12eafe794 100644 --- a/test/rules/named.spec.ts +++ b/test/rules/named.spec.ts @@ -45,18 +45,11 @@ ruleTester.run('named', rule, { settings: { 'import-x/resolve': { extensions: ['.js', '.jsx'] } }, }), - // validate that eslint-disable-line silences this properly - test({ - code: 'import {a, b, d} from "./common"; // eslint-disable-line named', - languageOptions: { parser: require(parsers.BABEL) }, - }), - test({ code: 'import { foo, bar } from "./re-export-names"' }), test({ code: 'import { foo, bar } from "./common"', settings: { 'import-x/ignore': ['common'] }, - languageOptions: { parser: require(parsers.BABEL) }, }), // ignore core modules by default @@ -413,35 +406,39 @@ ruleTester.run('named', rule, { // #311: import of mismatched case if (!CASE_SENSITIVE_FS) { - ruleTester.run('named (path case-insensitivity)', rule, { + describe('path case-insensitivity', () => { + ruleTester.run('named', rule, { + valid: [ + test({ + code: 'import { b } from "./Named-Exports"', + }), + ], + invalid: [ + test({ + code: 'import { foo } from "./Named-Exports"', + errors: [`foo not found in './Named-Exports'`], + }), + ], + }) + }); +} + +// export-all +describe('export *', () => { + ruleTester.run('named', rule, { valid: [ test({ - code: 'import { b } from "./Named-Exports"', + code: 'import { foo } from "./export-all"', }), ], invalid: [ test({ - code: 'import { foo } from "./Named-Exports"', - errors: [`foo not found in './Named-Exports'`], + code: 'import { bar } from "./export-all"', + errors: [`bar not found in './export-all'`], }), ], }) -} - -// export-all -ruleTester.run('named (export *)', rule, { - valid: [ - test({ - code: 'import { foo } from "./export-all"', - }), - ], - invalid: [ - test({ - code: 'import { bar } from "./export-all"', - errors: [`bar not found in './export-all'`], - }), - ], -}) +}); describe('TypeScript', () => { const settings = { @@ -591,7 +588,7 @@ describe('TypeScript', () => { ) } - ruleTester.run(`named [TypeScript]`, rule, { + ruleTester.run(`named`, rule, { valid, invalid, }) From 5d4d2e2ebca3cd58c5e82c3073834f14df39ebb3 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 15 Aug 2024 02:07:36 +0800 Subject: [PATCH 33/36] test: use legacy eslint for eslintrc test --- test/cli.spec.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/cli.spec.ts b/test/cli.spec.ts index 101dfc2be..68c26f712 100644 --- a/test/cli.spec.ts +++ b/test/cli.spec.ts @@ -4,7 +4,7 @@ import path from 'node:path' -import { ESLint } from 'eslint' +import { LegacyESLint } from 'eslint/use-at-your-own-risk' import eslintPkg from 'eslint/package.json' import semver from 'semver' @@ -13,7 +13,7 @@ import importPlugin from 'eslint-plugin-import-x' describe('CLI regression tests', () => { describe('issue #210', () => { it("doesn't throw an error on gratuitous, erroneous self-reference", () => { - const eslint = new ESLint({ + const eslint = new LegacyESLint({ overrideConfigFile: './test/fixtures/issue210.config.js', // rulePaths: ['./src/rules'], overrideConfig: { @@ -33,7 +33,7 @@ describe('CLI regression tests', () => { describe('issue #1645', () => { it('throws an error on invalid JSON', async () => { const invalidJSON = './test/fixtures/just-json-files/invalid.json' - const eslint = new ESLint({ + const eslint = new LegacyESLint({ overrideConfigFile: './test/fixtures/just-json-files/.eslintrc.json', ignore: false, plugins: { From 098d6b7869d56d05c4fb503666c498a6b5d55922 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 15 Aug 2024 02:11:03 +0800 Subject: [PATCH 34/36] chore: make lint happy --- test/cli.spec.ts | 2 +- test/rules/extensions.spec.ts | 2 +- test/rules/named.spec.ts | 4 ++-- test/rules/no-absolute-path.spec.ts | 2 +- test/rules/order.spec.ts | 1 - test/utils.ts | 2 +- 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/test/cli.spec.ts b/test/cli.spec.ts index 68c26f712..bb8dafa09 100644 --- a/test/cli.spec.ts +++ b/test/cli.spec.ts @@ -4,8 +4,8 @@ import path from 'node:path' -import { LegacyESLint } from 'eslint/use-at-your-own-risk' import eslintPkg from 'eslint/package.json' +import { LegacyESLint } from 'eslint/use-at-your-own-risk' import semver from 'semver' import importPlugin from 'eslint-plugin-import-x' diff --git a/test/rules/extensions.spec.ts b/test/rules/extensions.spec.ts index 8dd22ddfe..871c1c5a1 100644 --- a/test/rules/extensions.spec.ts +++ b/test/rules/extensions.spec.ts @@ -1,6 +1,6 @@ import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' -import { test, testFilePath, parsers } from '../utils' +import { test, testFilePath } from '../utils' import rule from 'eslint-plugin-import-x/rules/extensions' diff --git a/test/rules/named.spec.ts b/test/rules/named.spec.ts index 12eafe794..967bb92e6 100644 --- a/test/rules/named.spec.ts +++ b/test/rules/named.spec.ts @@ -420,7 +420,7 @@ if (!CASE_SENSITIVE_FS) { }), ], }) - }); + }) } // export-all @@ -438,7 +438,7 @@ describe('export *', () => { }), ], }) -}); +}) describe('TypeScript', () => { const settings = { diff --git a/test/rules/no-absolute-path.spec.ts b/test/rules/no-absolute-path.spec.ts index 003d7d096..651ee0698 100644 --- a/test/rules/no-absolute-path.spec.ts +++ b/test/rules/no-absolute-path.spec.ts @@ -13,7 +13,7 @@ const error = { } function absolutePath(testPath: string) { - return path.join(__dirname, testPath); + return path.join(__dirname, testPath) } ruleTester.run('no-absolute-path', rule, { diff --git a/test/rules/order.spec.ts b/test/rules/order.spec.ts index 7d82c2687..3777f54e7 100644 --- a/test/rules/order.spec.ts +++ b/test/rules/order.spec.ts @@ -3,7 +3,6 @@ import eslintPkg from 'eslint/package.json' import semver from 'semver' import { test, parsers, getNonDefaultParsers, testFilePath } from '../utils' -import type { ValidTestCase } from '../utils' import rule from 'eslint-plugin-import-x/rules/order' diff --git a/test/utils.ts b/test/utils.ts index b13a540e0..07c74a853 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -19,7 +19,7 @@ export const parsers = { ESPREE: require.resolve('espree'), TS: require.resolve('@typescript-eslint/parser'), BABEL: require.resolve('@babel/eslint-parser'), - HERMES: require.resolve('hermes-eslint') + HERMES: require.resolve('hermes-eslint'), } export function tsVersionSatisfies(specifier: string) { From 04c58ed82ae24b12bc180549416026e1338a4022 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 15 Aug 2024 02:46:13 +0800 Subject: [PATCH 35/36] chore: update eslint and node version --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 26d5bfc1f..fedc326ea 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "license": "MIT", "packageManager": "yarn@1.22.19", "engines": { - "node": ">=18.18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "main": "lib/index.js", "exports": { @@ -45,7 +45,7 @@ "watch": "yarn test --watch" }, "peerDependencies": { - "eslint": "^8.56.0 || ^9.0.0-0" + "eslint": "^8.57.0 || ^9.0.0" }, "dependencies": { "@typescript-eslint/utils": "^8.1.0", From f25124f4240c851eb6ba2d9019586d9f28fd9108 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Thu, 15 Aug 2024 02:47:33 +0800 Subject: [PATCH 36/36] chore: add changeset --- .changeset/smooth-donkeys-drive.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/smooth-donkeys-drive.md diff --git a/.changeset/smooth-donkeys-drive.md b/.changeset/smooth-donkeys-drive.md new file mode 100644 index 000000000..f863922ad --- /dev/null +++ b/.changeset/smooth-donkeys-drive.md @@ -0,0 +1,5 @@ +--- +"eslint-plugin-import-x": major +--- + +Use typescript-eslint v8. The minimum supported ESLint version is now >= 8.57.0 and the minimum required Node.js version is now 18.18.0.