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. 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/.github/workflows/ci.yml b/.github/workflows/ci.yml index f0c4d162c..d0337e983 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,12 +14,13 @@ jobs: - ubuntu-latest # - windows-latest node: - - 16 - 18 - 20 + - 22 eslint: - '8.56' - '8' + - '9' runs-on: ${{ matrix.os }} steps: - name: Checkout Repo diff --git a/package.json b/package.json index 9e587bc2e..fedc326ea 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "license": "MIT", "packageManager": "yarn@1.22.19", "engines": { - "node": ">=16" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "main": "lib/index.js", "exports": { @@ -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", @@ -45,57 +45,60 @@ "watch": "yarn test --watch" }, "peerDependencies": { - "eslint": "^8.56.0 || ^9.0.0-0" + "eslint": "^8.57.0 || ^9.0.0" }, "dependencies": { - "@typescript-eslint/utils": "^7.4.0", + "@typescript-eslint/utils": "^8.1.0", "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/eslint": "^8.56.6", + "@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", "@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.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": "^7.2.0 || ^8", + "eslint": "^9.9.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", @@ -106,14 +109,17 @@ "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", "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/patches/@typescript-eslint+utils+7.4.0.patch b/patches/@typescript-eslint+utils+7.4.0.patch deleted file mode 100644 index 6a6a3bb42..000000000 --- a/patches/@typescript-eslint+utils+7.4.0.patch +++ /dev/null @@ -1,37 +0,0 @@ -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 ---- 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 - */ -@@ -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 - */ -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 ---- 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/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/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/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/types.ts b/src/types.ts index 78a947787..34dd04fb3 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 type TsResolverOptions = { + alwaysTryTypes?: boolean + project?: string[] | string + extensions?: string[] +} & Omit + export type FileExtension = `.${string}` export type DocStyle = 'jsdoc' | 'tomdoc' @@ -63,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, @@ -89,11 +94,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/src/utils/create-rule.ts b/src/utils/create-rule.ts index 3d3b9fc22..d943daa2d 100644 --- a/src/utils/create-rule.ts +++ b/src/utils/create-rule.ts @@ -2,4 +2,13 @@ import { ESLintUtils } from '@typescript-eslint/utils' import { docsUrl } from './docs-url' -export const createRule = ESLintUtils.RuleCreator(docsUrl) +type ImportXPluginDocs = { + /** + * The category the rule falls under + */ + category?: string + + recommended?: true +} + +export const createRule = ESLintUtils.RuleCreator(docsUrl) diff --git a/src/utils/parse.ts b/src/utils/parse.ts index 837ae8f9f..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,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, parserMeta: parser.meta }, ) } else { return makeParseReturn(ast, keysFromParser(parserOrPath, parser)) diff --git a/test/cli.spec.ts b/test/cli.spec.ts index 7ae064423..bb8dafa09 100644 --- a/test/cli.spec.ts +++ b/test/cli.spec.ts @@ -4,8 +4,8 @@ import path from 'node:path' -import { ESLint } from 'eslint' 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' @@ -13,10 +13,9 @@ 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({ - useEslintrc: false, + const eslint = new LegacyESLint({ overrideConfigFile: './test/fixtures/issue210.config.js', - rulePaths: ['./src/rules'], + // rulePaths: ['./src/rules'], overrideConfig: { rules: { named: 2, @@ -34,10 +33,8 @@ 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({ - useEslintrc: false, + const eslint = new LegacyESLint({ overrideConfigFile: './test/fixtures/just-json-files/.eslintrc.json', - rulePaths: ['./src/rules'], ignore: false, plugins: { // @ts-expect-error - incompatible types @@ -58,6 +55,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/rules/consistent-type-specifier-style.spec.ts b/test/rules/consistent-type-specifier-style.spec.ts index 14c6c156b..4f6d8ad2b 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,12 @@ 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: { + parserOptions: { + ecmaVersion: 6, + sourceType: 'module', + }, }, }) ruleTester.run('consistent-type-specifier-style', rule, { @@ -459,11 +461,35 @@ 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', + requireConfigFile: false, + babelOptions: { + configFile: false, + babelrc: false, + presets: ['@babel/flow'], + }, + }, + }, + }) + ruleTester.run('consistent-type-specifier-style', rule, { + valid: [...COMMON_TESTS.valid, ...FLOW_ONLY.valid], + 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, { diff --git a/test/rules/default.spec.ts b/test/rules/default.spec.ts index 61071c19d..0dd155d5a 100644 --- a/test/rules/default.spec.ts +++ b/test/rules/default.spec.ts @@ -1,17 +1,20 @@ 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: [ - 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";' }), @@ -30,32 +33,43 @@ 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({ 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"', - 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 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 }, + }, }, }), @@ -66,41 +80,46 @@ 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 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({ code: 'export { "default" as bar } from "./bar"', - parserOptions: { - ecmaVersion: 2022, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { + ecmaVersion: 2022, + }, }, }), @@ -108,12 +127,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";', @@ -129,23 +148,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".', ], @@ -179,110 +198,116 @@ if (!CASE_SENSITIVE_FS) { } describe('TypeScript', () => { - const parser = parsers.TS ruleTester.run(`default`, rule, { valid: [ test({ code: `import foobar from "./typescript-default"`, - parser, 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"`, - parser, 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-function"`, - parser, + 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-mixed"`, - parser, + 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-reexport"`, - parser, + settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, }), test({ code: `import React from "./typescript-export-assign-default-namespace"`, - parser, + settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + '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"`, - parser, + settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + '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"`, - parser, + settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + '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"`, - parser, + settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + '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"`, - parser, + settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, }), @@ -291,18 +316,18 @@ describe('TypeScript', () => { invalid: [ test({ code: `import foobar from "./typescript"`, - parser, + 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".'], }), test({ code: `import React from "./typescript-export-assign-default-namespace"`, - parser, + settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, errors: [ @@ -311,9 +336,9 @@ describe('TypeScript', () => { }), test({ code: `import FooBar from "./typescript-export-as-default-namespace"`, - parser, + settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, errors: [ @@ -322,16 +347,18 @@ describe('TypeScript', () => { }), test({ code: `import Foo from "./typescript-export-as-default-namespace"`, - parser, + settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + '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/dynamic-import-chunkname.spec.ts b/test/rules/dynamic-import-chunkname.spec.ts index 0a5d14e37..3f7b60677 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,6 @@ ruleTester.run('dynamic-import-chunkname', rule, { }) describe('TypeScript', () => { - const typescriptParser = parsers.TS const nodeType = TSESTree.AST_NODE_TYPES.ImportExpression ruleTester.run('dynamic-import-chunkname', rule, { @@ -967,7 +967,6 @@ describe('TypeScript', () => { { code: `import('test')`, options: allowEmptyOptions, - parser: typescriptParser, }, { code: `import( @@ -975,7 +974,6 @@ describe('TypeScript', () => { 'test' )`, options: allowEmptyOptions, - parser: typescriptParser, }, { code: `import( @@ -983,7 +981,6 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, }, { code: `import( @@ -991,7 +988,6 @@ describe('TypeScript', () => { "test" )`, options, - parser: typescriptParser, }, { code: `import( @@ -999,7 +995,6 @@ describe('TypeScript', () => { "test" )`, options, - parser: typescriptParser, }, { code: `import( @@ -1007,7 +1002,6 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1015,7 +1009,6 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1023,7 +1016,6 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1031,7 +1023,6 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1040,7 +1031,6 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1049,7 +1039,6 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1058,7 +1047,6 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1067,7 +1055,6 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1075,7 +1062,6 @@ describe('TypeScript', () => { 'someModule' )`, options: pickyCommentOptions, - parser: typescriptParser, }, { code: `import( @@ -1083,7 +1069,6 @@ describe('TypeScript', () => { 'test' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1091,7 +1076,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1099,7 +1083,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1107,7 +1090,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1115,7 +1097,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1124,7 +1105,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1132,7 +1112,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1141,7 +1120,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1149,7 +1127,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1158,7 +1135,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1166,7 +1142,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1175,7 +1150,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1183,7 +1157,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1192,7 +1165,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1200,7 +1172,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1209,7 +1180,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1218,7 +1188,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1227,7 +1196,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1235,7 +1203,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1244,7 +1211,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1252,7 +1218,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, { code: `import( @@ -1267,7 +1232,6 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, }, ], invalid: [ @@ -1277,7 +1241,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1289,7 +1253,7 @@ describe('TypeScript', () => { { code: "import('test')", options, - parser: typescriptParser, + output: null, errors: [ { @@ -1304,7 +1268,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1319,7 +1283,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1334,7 +1298,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1349,7 +1313,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1364,7 +1328,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1379,7 +1343,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1394,7 +1358,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1409,7 +1373,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1424,7 +1388,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1440,7 +1404,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1455,7 +1419,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1470,7 +1434,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1485,7 +1449,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1500,7 +1464,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1515,7 +1479,7 @@ describe('TypeScript', () => { 'someModule' )`, options: pickyCommentOptions, - parser: typescriptParser, + output: null, errors: [ { @@ -1530,7 +1494,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1545,7 +1509,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1560,7 +1524,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1575,7 +1539,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1590,7 +1554,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1605,7 +1569,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1620,7 +1584,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1635,7 +1599,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1650,7 +1614,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1665,7 +1629,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1680,7 +1644,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser: typescriptParser, + output: null, errors: [ { @@ -1696,7 +1660,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -1728,7 +1692,7 @@ describe('TypeScript', () => { 'someModule' )`, options, - parser, + languageOptions: { parser: babelParser }, output: null, errors: [ { @@ -1761,7 +1725,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..10df5bd1e 100644 --- a/test/rules/export.spec.ts +++ b/test/rules/export.spec.ts @@ -1,14 +1,17 @@ -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: [ - test({ code: 'import "./malformed.js"' }), + test({ + code: 'import "./malformed.js"', + languageOptions: { parser: require(parsers.ESPREE) }, + }), // default test({ code: 'var foo = "foo"; export default foo;' }), @@ -39,8 +42,10 @@ 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, + }, }, }), @@ -52,7 +57,6 @@ ruleTester.run('export', rule, { return param && param1; } `, - parser: parsers.TS, }, ], @@ -110,6 +114,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: @@ -148,20 +153,20 @@ ruleTester.run('export', rule, { "Multiple exports of name 'foo'.", "Multiple exports of name 'foo'.", ], - parserOptions: { - ecmaVersion: 2022, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { + ecmaVersion: 2022, + }, }, }), ], }) describe('TypeScript', () => { - const parser = parsers.TS - const parserConfig = { - parser, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, } @@ -296,7 +301,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/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..871c1c5a1 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 { test, testFilePath } 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: [ @@ -660,9 +660,7 @@ ruleTester.run('extensions', rule, { }) describe('TypeScript', () => { - const parser = parsers.TS - - ruleTester.run(`${parser}: extensions ignore type-only`, rule, { + ruleTester.run(`typescript - extensions ignore type-only`, rule, { valid: [ test({ code: 'import type T from "./typescript-declare";', @@ -670,7 +668,6 @@ describe('TypeScript', () => { 'always', { ts: 'never', tsx: 'never', js: 'never', jsx: 'never' }, ], - parser, }), test({ code: 'export type { MyType } from "./typescript-declare";', @@ -678,7 +675,6 @@ describe('TypeScript', () => { 'always', { ts: 'never', tsx: 'never', js: 'never', jsx: 'never' }, ], - parser, }), ], invalid: [ @@ -689,7 +685,6 @@ describe('TypeScript', () => { 'always', { ts: 'never', tsx: 'never', js: 'never', jsx: 'never' }, ], - parser, }), test({ code: 'export { MyType } from "./typescript-declare";', @@ -698,7 +693,6 @@ describe('TypeScript', () => { 'always', { ts: 'never', tsx: 'never', js: 'never', jsx: 'never' }, ], - parser, }), ], }) diff --git a/test/rules/first.spec.ts b/test/rules/first.spec.ts index be061294e..7e5aad5b1 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: [ @@ -25,9 +25,11 @@ ruleTester.run('first', rule, { import { x } from 'foo';", }), test({ - // issue #2210 + name: '...component.html (issue #2210)', code: fs.readFileSync(testFilePath('component.html'), 'utf8'), - parser: require.resolve('@angular-eslint/template-parser'), + languageOptions: { + parser: require('@angular-eslint/template-parser'), + }, }), ], invalid: [ @@ -75,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'", @@ -91,12 +104,9 @@ ruleTester.run('first', rule, { }) describe('TypeScript', () => { - const parser = parsers.TS - 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/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..34143eca8 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, @@ -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 dd999844b..967bb92e6 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, @@ -20,7 +20,10 @@ 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"' }), @@ -42,11 +45,6 @@ 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', - }), - test({ code: 'import { foo, bar } from "./re-export-names"' }), test({ @@ -68,11 +66,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 +85,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 @@ -150,7 +148,10 @@ 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'] }, @@ -199,30 +200,38 @@ 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({ 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: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), test({ code: 'import { "foo" as foo } from "./empty-module"', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], @@ -277,17 +286,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 +340,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 +377,10 @@ ruleTester.run('named', rule, { test({ code: 'import { "somethingElse" as somethingElse } from "./test-module"', errors: [error('somethingElse', './test-module', 'Literal')], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), test({ code: 'import { "baz" as baz, "bop" as bop } from "./bar"', @@ -376,65 +388,74 @@ ruleTester.run('named', rule, { error('baz', './bar', 'Literal'), error('bop', './bar', 'Literal'), ], - 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'`], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], }) // #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 parser = parsers.TS - const settings = { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, } let valid = [ test({ code: `import x from './typescript-export-assign-object'`, - parser, - parserOptions: { - tsconfigRootDir: path.resolve( - __dirname, - '../fixtures/typescript-export-assign-object/', - ), + languageOptions: { + parserOptions: { + tsconfigRootDir: path.resolve( + __dirname, + '../fixtures/typescript-export-assign-object/', + ), + }, }, settings, }), @@ -453,12 +474,13 @@ describe('TypeScript', () => { // }), test({ code: `import { NotExported } from './typescript-export-assign-object'`, - parser, - parserOptions: { - tsconfigRootDir: path.resolve( - __dirname, - '../fixtures/typescript-export-assign-object/', - ), + languageOptions: { + parserOptions: { + tsconfigRootDir: path.resolve( + __dirname, + '../fixtures/typescript-export-assign-object/', + ), + }, }, settings, errors: [ @@ -471,12 +493,13 @@ 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/', - ), + languageOptions: { + parserOptions: { + tsconfigRootDir: path.resolve( + __dirname, + '../fixtures/typescript-export-assign-object/', + ), + }, }, settings, errors: [ @@ -498,27 +521,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 +549,7 @@ describe('TypeScript', () => { import { MyModule } from "./${source}" MyModule.ModuleFunction() `, - parser, + settings, }), test({ @@ -534,7 +557,7 @@ describe('TypeScript', () => { import { MyNamespace } from "./${source}" MyNamespace.NSModule.NSModuleFunction() `, - parser, + settings, }), ] @@ -542,7 +565,7 @@ describe('TypeScript', () => { invalid.push( test({ code: `import { MissingType } from "./${source}"`, - parser, + settings, errors: [ { @@ -553,7 +576,7 @@ describe('TypeScript', () => { }), test({ code: `import { NotExported } from "./${source}"`, - parser, + settings, errors: [ { @@ -565,7 +588,7 @@ describe('TypeScript', () => { ) } - ruleTester.run(`named [TypeScript]`, rule, { + ruleTester.run(`named`, rule, { valid, invalid, }) diff --git a/test/rules/namespace.spec.ts b/test/rules/namespace.spec.ts index 365ded3c9..69bad45ef 100644 --- a/test/rules/namespace.spec.ts +++ b/test/rules/namespace.spec.ts @@ -1,11 +1,13 @@ -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({ - parserOptions: { env: { es6: true } }, +const ruleTester = new TSESLintRuleTester({ + languageOptions: { + parserOptions: { env: { es6: true } }, + }, }) function error(name: string, namespace: string) { @@ -15,7 +17,10 @@ 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({ @@ -30,10 +35,12 @@ 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 @@ -58,9 +65,11 @@ const valid = [ settings: { 'import-x/extensions': ['.js', '.jsx'], }, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, }), @@ -103,21 +112,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 @@ -129,14 +138,15 @@ 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"', - 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 @@ -148,13 +158,15 @@ 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;`, - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), // #1144: should handle re-export CommonJS as namespace @@ -165,9 +177,11 @@ const valid = [ // JSX test({ code: 'import * as Names from "./named-exports"; const Foo = ', - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, }), @@ -178,7 +192,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 +201,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 +210,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 +219,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 }, @@ -229,34 +243,54 @@ 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: { + parser: require(parsers.BABEL), + parserOptions: { ecmaVersion: 2022 }, + }, }), test({ code: "import * as names from './default-export-string'; console.log(names.default)", - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.BABEL), + parserOptions: { ecmaVersion: 2022 }, + }, }), test({ code: "import * as names from './default-export-namespace-string';", - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), test({ code: "import * as names from './default-export-namespace-string'; console.log(names.default)", - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), test({ code: `import { "b" as b } from "./deep/a"; console.log(b.c.d.e)`, - 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`, - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ] @@ -330,13 +364,16 @@ 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'."], }), // parse errors test({ code: "import * as namespace from './malformed.js';", + languageOptions: { + parser: require(parsers.ESPREE), + }, errors: [ { message: @@ -371,9 +408,11 @@ 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, + }, }, }, }), @@ -381,12 +420,18 @@ const invalid = [ 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: { + 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'."], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ] @@ -397,60 +442,60 @@ for (const [folder, parser] of [['deep'], ['deep-es7', parsers.BABEL]]) { // close over params valid.push( test({ - parser, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import * as a from "./${folder}/a"; console.log(a.b.c.d.e)`, }), test({ - parser, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import { b } from "./${folder}/a"; console.log(b.c.d.e)`, }), test({ - parser, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import * as a from "./${folder}/a"; console.log(a.b.c.d.e.f)`, }), test({ - parser, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import * as a from "./${folder}/a"; var {b:{c:{d:{e}}}} = a`, }), test({ - 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({ - parser, + languageOptions: { ...(parser && { parser: require(parser) }) }, code: `import * as a from "./${folder}/a"; console.log(a.b.default)`, }), ) invalid.push( test({ - 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({ - 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({ - 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({ - 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({ - 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({ - 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'."], }), diff --git a/test/rules/newline-after-import.spec.ts b/test/rules/newline-after-import.spec.ts index 2a418d8cb..81efd8d97 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,18 @@ ruleTester.run('newline-after-import', rule, { import { ExecaReturnValue } from 'execa'; import execa = require('execa'); `, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` import execa = require('execa'); import { ExecaReturnValue } from 'execa'; `, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -315,8 +381,9 @@ ruleTester.run('newline-after-import', rule, { import execa = require('execa'); import { ExecbReturnValue } from 'execb'; `, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -324,15 +391,17 @@ ruleTester.run('newline-after-import', rule, { import { ExecaReturnValue } from 'execa'; import execb = require('execb'); `, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` export import a = obj;\nf(a); `, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -342,8 +411,9 @@ ruleTester.run('newline-after-import', rule, { export import a2 = a; f(a); }`, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -353,8 +423,9 @@ ruleTester.run('newline-after-import', rule, { stub } `, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -363,19 +434,9 @@ ruleTester.run('newline-after-import', rule, { export import Foo = ns.baz.bar.Foo; `, - parser: parsers.TS, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, - }, - - { - code: ` - import stub from './stub'; - - export { - stub - } - `, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -387,7 +448,9 @@ ruleTester.run('newline-after-import', rule, { **/ var bar = 42; `, - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -399,7 +462,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 +475,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 +503,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 +534,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 +559,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 +574,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 +589,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 +603,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 +618,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 +637,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 +656,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 +675,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 +733,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 +747,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 +761,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 +776,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 +791,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 +806,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 +832,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 +848,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 +863,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 +878,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 +893,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 +908,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 +923,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 +938,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 +953,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 +968,9 @@ ruleTester.run('newline-after-import', rule, { ...getImportError(2), }, ], - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + languageOptions: { + parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + }, }, { code: ` @@ -869,7 +988,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 +1004,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 +1019,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 +1032,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 +1045,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 +1064,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..651ee0698 100644 --- a/test/rules/no-absolute-path.spec.ts +++ b/test/rules/no-absolute-path.spec.ts @@ -1,15 +1,21 @@ -import { TSESLint } from '@typescript-eslint/utils' +import path from 'node:path' -import { test } from '../utils' +import { RuleTester as TSESLintRuleTester } from '@typescript-eslint/rule-tester' + +import { parsers, 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', } +function absolutePath(testPath: string) { + return path.join(__dirname, testPath) +} + ruleTester.run('no-absolute-path', rule, { valid: [ test({ code: 'import _ from "lodash"' }), @@ -41,7 +47,10 @@ 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 }], @@ -53,72 +62,73 @@ 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], output: 'define(["../../some/path"], function (f) { /* ... */ })', diff --git a/test/rules/no-amd.spec.ts b/test/rules/no-amd.spec.ts index 53ffedff9..b7178dcd6 100644 --- a/test/rules/no-amd.spec.ts +++ b/test/rules/no-amd.spec.ts @@ -1,9 +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-amd' -const ruleTester = new TSESLint.RuleTester({ - parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, +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 de85a1c74..340f09024 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 { test, SYNTAX_CASES, parsers } 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,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" }', - 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 9a8138909..65ede4a3f 100644 --- a/test/rules/no-commonjs.spec.ts +++ b/test/rules/no-commonjs.spec.ts @@ -1,14 +1,16 @@ -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({ - parserOptions: { - ecmaVersion: 2015, - sourceType: 'module', +const ruleTester = new TSESLintRuleTester({ + languageOptions: { + parserOptions: { + ecmaVersion: 2015, + sourceType: 'module', + }, }, }) diff --git a/test/rules/no-cycle.spec.ts b/test/rules/no-cycle.spec.ts index 03a155a06..3ed489478 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 }) @@ -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 @@ -33,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 }], @@ -55,69 +49,67 @@ 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 }], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ - code: `import type { FooType } from "./${testDialect}/depth-one"`, - parser: parsers.BABEL, + code: `import type { FooType } from "./es6/depth-one"`, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ - code: `import type { FooType, BarType } from "./${testDialect}/depth-one"`, - parser: parsers.BABEL, + 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 }], - parser: parsers.BABEL, + 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 }], - parser: parsers.BABEL, + 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 }], - parser: parsers.TS, }), test({ - code: `import { foo } from "./${testDialect}/depth-one-dynamic"; // #2265 4`, + code: `import { foo } from "./es6/depth-one-dynamic"; // #2265 4`, options: [{ allowUnsafeDynamicCyclicDependency: true }], - parser: 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({ @@ -140,128 +132,126 @@ 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`)], - parser: parsers.BABEL, + 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`)], - parser: parsers.BABEL, + 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`)], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), test({ - code: `import { foo } from "./${testDialect}/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 "./${testDialect}/depth-two"`, + code: `import("./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.`)], - 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`, + code: `import { foo } from "./es6/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`, + code: `function bar(){ return import("./es6/depth-one"); } // #2265 7`, errors: [error(`Dependency cycle detected.`)], - parser: parsers.TS, }), 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.`)], - parser: 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..e90d57f80 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,10 @@ ruleTester.run('no-default-export', rule, { 'Do not alias `foo` as `default`. Just export `foo` itself instead.', }, ], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], }) diff --git a/test/rules/no-deprecated.spec.ts b/test/rules/no-deprecated.spec.ts index 83a3ef06d..eebc33bc8 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: [ @@ -243,17 +243,14 @@ ruleTester.run('no-deprecated: hoisting', rule, { }) describe('TypeScript', () => { - const parser = parsers.TS - const parserConfig = { - parser, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, } - ruleTester.run(parser, 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 9b97df0c8..bdd502333 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,11 +12,14 @@ 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: [ - 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'" }), @@ -28,7 +31,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. @@ -105,9 +108,9 @@ 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.", "'non-existent' imported multiple times.", @@ -117,7 +120,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.", @@ -136,6 +139,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.", @@ -159,7 +163,6 @@ ruleTester.run('no-duplicates', rule, { "'./foo' imported multiple times.", "'./foo' imported multiple times.", ], - parser: parsers.TS, }), // #2347: duplicate identifiers should be removed @@ -171,7 +174,6 @@ ruleTester.run('no-duplicates', rule, { "'./foo' imported multiple times.", "'./foo' imported multiple times.", ], - parser: parsers.TS, }), // #2347: duplicate identifiers should be removed, but not if they are adjacent to comments @@ -182,7 +184,6 @@ ruleTester.run('no-duplicates', rule, { "'./foo' imported multiple times.", "'./foo' imported multiple times.", ], - parser: parsers.TS, }), test({ @@ -289,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.", @@ -320,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' @@ -338,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' @@ -356,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' `, @@ -372,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 `, @@ -388,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' `, @@ -404,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 */ @@ -458,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' `, @@ -474,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' `, @@ -490,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' `, @@ -506,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' `, @@ -522,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' @@ -667,12 +618,9 @@ export default TestComponent; }) describe('TypeScript', () => { - const parser = parsers.TS - const parserConfig = { - parser, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, } @@ -739,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-dynamic-require.spec.ts b/test/rules/no-dynamic-require.spec.ts index 4bf5cb697..93b8f373e 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', @@ -30,88 +30,111 @@ 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, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parser, + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'import(`foo`)', options: [{ esmodule: true }], - parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parser, + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'import("./foo")', options: [{ esmodule: true }], - parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parser, + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'import("@scope/foo")', options: [{ esmodule: true }], - parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parser, + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'var foo = import("foo")', options: [{ esmodule: true }], - parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parser, + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'var foo = import(`foo`)', options: [{ esmodule: true }], - parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parser, + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'var foo = import("./foo")', options: [{ esmodule: true }], - parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parser, + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'var foo = import("@scope/foo")', options: [{ esmodule: true }], - parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parser, + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'import("../" + name)', errors: [dynamicImportError], - parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parser, + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'import(`../${name}`)', errors: [dynamicImportError], - parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parser, + parserOptions: { + ecmaVersion: 2020, + }, }, }), ] @@ -141,44 +164,55 @@ 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, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parser, + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'import(`../${name}`)', errors: [dynamicImportError], options: [{ esmodule: true }], - parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parser, + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'import(name)', errors: [dynamicImportError], options: [{ esmodule: true }], - parser, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parser, + parserOptions: { + ecmaVersion: 2020, + }, }, }), _test({ code: 'import(name())', errors: [dynamicImportError], options: [{ esmodule: true }], - parser, - parserOptions: { - ecmaVersion: 2020, + 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 84d287eeb..cabdeae81 100644 --- a/test/rules/no-empty-named-blocks.spec.ts +++ b/test/rules/no-empty-named-blocks.spec.ts @@ -1,25 +1,29 @@ -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) { +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function generateSuggestionsTestCases(cases: string[], parser?: any) { return cases.map(code => test({ code, - parser, + languageOptions: { + ...(parser && { parser }), + }, errors: [ { + messageId: 'emptyNamed', suggestions: [ { - desc: 'Remove unused import', + messageId: 'unused', output: '', }, { - desc: 'Remove empty import block', + messageId: 'emptyImport', output: `import 'mod';`, }, ], @@ -38,32 +42,29 @@ 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';`, - parser: parsers.TS, }), test({ code: `import type Default, { Named } from 'mod';`, - parser: parsers.TS, }), test({ code: `import type * as Namespace from 'mod';`, - parser: 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: ` @@ -98,19 +99,16 @@ 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';`, - ], - parsers.TS, - ), + ...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';`, - parser: parsers.TS, + errors: ['Unexpected empty named import block'], }), @@ -122,12 +120,12 @@ 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';`, 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..dc7d5fbb4 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') @@ -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"', @@ -107,7 +105,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 +113,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";', @@ -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: [ @@ -537,12 +524,9 @@ ruleTester.run('no-extraneous-dependencies', rule, { }) describe('TypeScript', () => { - const parser = parsers.TS - const parserConfig = { - parser, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': ['node', 'typescript'], }, } @@ -629,22 +613,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 +636,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 +647,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 +657,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 +667,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-import-module-exports.spec.ts b/test/rules/no-import-module-exports.spec.ts index 62ce4e6b1..f3096dc4c 100644 --- a/test/rules/no-import-module-exports.spec.ts +++ b/test/rules/no-import-module-exports.spec.ts @@ -1,13 +1,15 @@ 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({ - parserOptions: { ecmaVersion: 6, sourceType: 'module' }, +const ruleTester = new TSESLintRuleTester({ + languageOptions: { + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + }, }) const error = { @@ -123,8 +125,10 @@ ruleTester.run('no-import-module-exports', rule, { }); }; `, - parserOptions: { - ecmaVersion: 2020, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + }, }, }), ], diff --git a/test/rules/no-internal-modules.spec.ts b/test/rules/no-internal-modules.spec.ts index 703fe2a7d..c683c2fdc 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 { test, testFilePath } 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,6 @@ ruleTester.run('no-internal-modules', rule, { } } `, - parser: 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..2d4120a69 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,19 @@ 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: { + 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."], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + 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..da25bcf8a 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 { test, SYNTAX_CASES, parsers } 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,10 @@ ruleTester.run('no-named-as-default-member', rule, { }), test({ code: 'import bar, { foo } from "./export-default-string-and-named"', - 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', }, ], - 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 0fcea1618..7e70b266c 100644 --- a/test/rules/no-named-as-default.spec.ts +++ b/test/rules/no-named-as-default.spec.ts @@ -1,28 +1,45 @@ -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() + +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";' }), // 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"', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ...SYNTAX_CASES, @@ -53,7 +70,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 +82,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: @@ -78,6 +95,7 @@ ruleTester.run('no-named-as-default', rule, { test({ code: 'import foo from "./malformed.js"', + languageOptions: { parser: require(parsers.ESPREE) }, errors: [ { message: @@ -96,7 +114,10 @@ ruleTester.run('no-named-as-default', rule, { type: 'ImportDefaultSpecifier', }, ], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), test({ code: 'import foo, { foo as bar } from "./export-default-string-and-named"', @@ -107,7 +128,10 @@ ruleTester.run('no-named-as-default', rule, { type: 'ImportDefaultSpecifier', }, ], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], }) diff --git a/test/rules/no-named-default.spec.ts b/test/rules/no-named-default.spec.ts index 4c1a049a4..63f9a3624 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";', @@ -60,8 +60,11 @@ ruleTester.run('no-named-default', rule, { type: 'Identifier', }, ], - parserOptions: { - ecmaVersion: 2022, + 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 f99a81498..444615c2c 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,10 @@ ruleTester.run('no-named-export', rule, { }), test({ code: 'let foo; export { foo as "default" }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], invalid: [ @@ -181,7 +184,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 +194,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 +204,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 +214,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..2c2efce8e 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'] }], }, ], @@ -36,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, @@ -47,7 +56,6 @@ ruleTester.run('no-namespace', rule, { }), test({ code: "import defaultExport, * as foo from 'foo';", - output: "import defaultExport, * as foo from 'foo';", errors: [ { line: 1, @@ -58,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-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..d11193917 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' @@ -9,10 +9,10 @@ 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 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..1e9bac579 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: [ @@ -764,10 +764,8 @@ ruleTester.run('no-restricted-paths', rule, { }) 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, { @@ -785,7 +783,7 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), test({ @@ -801,7 +799,7 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), test({ @@ -817,7 +815,7 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), test({ @@ -833,7 +831,7 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), test({ @@ -850,7 +848,7 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), test({ @@ -867,7 +865,7 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), test({ @@ -884,7 +882,7 @@ describe('Typescript', () => { ], }, ], - parser, + settings, }), test({ @@ -901,14 +899,14 @@ describe('Typescript', () => { ], }, ], - parser, + 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"', - parser, + settings, }), ], @@ -934,7 +932,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -958,7 +956,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -990,7 +988,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -1010,7 +1008,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -1034,7 +1032,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -1060,7 +1058,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -1085,7 +1083,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -1108,7 +1106,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), test({ @@ -1133,7 +1131,7 @@ describe('Typescript', () => { column: 20, }, ], - parser, + settings, }), ], 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..d5cc31cff 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 @@ -26,7 +26,10 @@ 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';" }), @@ -34,13 +37,15 @@ 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 rest({ code: "import('fs');", - parserOptions: { ecmaVersion: 2021 }, + languageOptions: { + parserOptions: { ecmaVersion: 2021 }, + }, }), rest({ code: 'import * as foo from "a"' }), @@ -52,11 +57,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 +181,7 @@ function runResolverTests(resolver: 'node' | 'webpack') { type: 'Literal', }, ], - parser: parsers.BABEL, + languageOptions: { parser: require(parsers.BABEL) }, }), rest({ @@ -197,18 +202,20 @@ function runResolverTests(resolver: 'node' | 'webpack') { type: 'Literal', }, ], - parserOptions: { ecmaVersion: 2021 }, + languageOptions: { + parserOptions: { ecmaVersion: 2021 }, + }, }), // 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'."], }), @@ -364,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';", @@ -427,6 +434,7 @@ ruleTester.run('no-unresolved ignore list', rule, { valid: [ test({ code: 'import "./malformed.js"', + languageOptions: { parser: require(parsers.BABEL) }, options: [{ ignore: ['.png$', '.gif$'] }], }), test({ @@ -467,6 +475,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".`, @@ -512,13 +521,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'.", ], @@ -528,28 +537,23 @@ 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('no-unresolved (ignore type-only)', rule, { 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 ea4de8994..aae74d1be 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' -// @ts-expect-error - no typings yet -import { FlatRuleTester } from 'eslint/use-at-your-own-risk' +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 { test, testFilePath, parsers } from '../utils' @@ -10,9 +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 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 }) @@ -127,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, @@ -301,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'), }), ], @@ -315,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', ), @@ -339,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', ), @@ -349,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, @@ -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', ), @@ -1407,7 +1403,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'), }), ], @@ -1415,7 +1411,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`), @@ -1431,7 +1427,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({ @@ -1440,13 +1436,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({ @@ -1455,7 +1451,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({ @@ -1464,7 +1460,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'), }), ], @@ -1478,13 +1474,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'), }), ], @@ -1498,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"`, - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, filename: testFilePath( './no-unused-modules/arbitrary-module-namespace-identifier-name-b.js', ), @@ -1506,7 +1505,10 @@ describe('support ES2022 Arbitrary module namespace identifier names', () => { test({ options: unusedExportsOptions, code: 'const foo = 333;\nexport { foo as "foo" }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, filename: testFilePath( './no-unused-modules/arbitrary-module-namespace-identifier-name-a.js', ), @@ -1516,7 +1518,10 @@ describe('support ES2022 Arbitrary module namespace identifier names', () => { test({ options: unusedExportsOptions, code: 'const foo = 333\nexport { foo as "foo" }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { + parser: require(parsers.BABEL), + parserOptions: { ecmaVersion: 2022 }, + }, filename: testFilePath( './no-unused-modules/arbitrary-module-namespace-identifier-name-c.js', ), @@ -1597,30 +1602,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/test/rules/no-useless-path-segments.spec.ts b/test/rules/no-useless-path-segments.spec.ts index 789dcd587..a886089da 100644 --- a/test/rules/no-useless-path-segments.spec.ts +++ b/test/rules/no-useless-path-segments.spec.ts @@ -1,19 +1,25 @@ -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, { 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 +37,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({ @@ -42,11 +49,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) }, }), ], @@ -54,16 +67,21 @@ 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: [ 'Useless path segments for "./../fixtures/malformed.js", should be "../fixtures/malformed.js"', ], }), test({ code: 'require("./../fixtures/malformed")', - output: 'require("../fixtures/malformed")', + output: ['require("../fixtures/malformed")', 'require("./malformed")'], options: [{ commonjs: true }], + languageOptions: { parser: require(parsers.ESPREE) }, errors: [ 'Useless path segments for "./../fixtures/malformed", should be "../fixtures/malformed"', ], @@ -72,6 +90,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"', ], @@ -80,6 +99,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"', ], @@ -88,6 +108,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"', ], @@ -172,14 +193,19 @@ 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"', ], }), 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"', ], @@ -187,6 +213,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"', ], @@ -194,6 +221,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"', ], @@ -282,19 +310,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/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..3777f54e7 100644 --- a/test/rules/order.spec.ts +++ b/test/rules/order.spec.ts @@ -1,30 +1,27 @@ -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' import { test, parsers, getNonDefaultParsers, testFilePath } from '../utils' -import type { ValidTestCase } from '../utils' import rule from 'eslint-plugin-import-x/rules/order' -const ruleTester = new TSESLint.RuleTester() - -const flowRuleTester = new TSESLint.RuleTester({ - parser: parsers.BABEL, - parserOptions: { - requireConfigFile: false, - babelOptions: { - configFile: false, - babelrc: false, - presets: ['@babel/flow'], +const ruleTester = new TSESLintRuleTester() + +const flowRuleTester = new TSESLintRuleTester({ + languageOptions: { + parser: require(parsers.BABEL), + parserOptions: { + requireConfigFile: false, + babelOptions: { + configFile: false, + babelrc: false, + presets: ['@babel/flow'], + }, }, }, }) -function withoutAutofixOutput(test: T) { - return { ...test, output: test.code } -} - ruleTester.run('order', rule, { valid: [ // Default order using require @@ -219,14 +216,12 @@ ruleTester.run('order', rule, { var relParent3 = require('../'); var index = require('./'); `, - parser: parsers.TS, }), test({ code: ` export import CreateSomething = _CreateSomething; `, - parser: parsers.TS, }), // Adding unknown import types (e.g. using a resolver alias via babel) to the groups. test({ @@ -896,7 +891,7 @@ ruleTester.run('order', rule, { code: ` import blah = require('./blah'); import { hello } from './hello';`, - parser: parsers.TS, + options: [ { alphabetize: { @@ -910,7 +905,7 @@ ruleTester.run('order', rule, { code: ` import blah = require('./blah'); import log = console.log;`, - parser: parsers.TS, + options: [ { alphabetize: { @@ -924,7 +919,7 @@ ruleTester.run('order', rule, { code: ` import debug = console.debug; import log = console.log;`, - parser: parsers.TS, + options: [ { alphabetize: { @@ -937,7 +932,7 @@ ruleTester.run('order', rule, { code: ` import log = console.log; import debug = console.debug;`, - parser: parsers.TS, + options: [ { alphabetize: { @@ -953,7 +948,7 @@ ruleTester.run('order', rule, { export import a2 = a; } `, - parser: parsers.TS, + options: [ { groups: ['external', 'index'], @@ -1194,6 +1189,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 +1206,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 +1223,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 +1347,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({ @@ -1438,11 +1437,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`', @@ -1496,65 +1502,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: ` @@ -1725,7 +1723,7 @@ ruleTester.run('order', rule, { import bar = require("../foo/bar"); var fs = require('fs'); `, - parser: parsers.TS, + errors: [ { message: '`fs` import should occur after import of `../foo/bar`', @@ -1741,12 +1739,13 @@ ruleTester.run('order', rule, { var fs = require('fs'); var async = require('async'); `, - parser: parsers.TS, + errors: [ { message: '`fs` import should occur before import of `async`', }, ], + languageOptions: { parser: require(parsers.ESPREE) }, }), test({ code: ` @@ -1767,7 +1766,7 @@ ruleTester.run('order', rule, { alphabetize: { order: 'asc' }, }, ], - parser: parsers.TS, + errors: [ { message: '`async` import should occur before import of `sync`', @@ -1779,7 +1778,7 @@ ruleTester.run('order', rule, { code: ` import log = console.log; import blah = require('./blah');`, - parser: parsers.TS, + errors: [ { message: @@ -1932,12 +1931,6 @@ ruleTester.run('order', rule, { var index = require('./'); `, - output: ` - var fs = require('fs'); /* multiline - comment */ - - var index = require('./'); - `, options: [ { groups: [['builtin'], ['index']], @@ -2042,13 +2035,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 }, ], @@ -2091,13 +2077,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: [ { @@ -2177,12 +2156,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: [ { @@ -2204,21 +2192,12 @@ 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`', }, ], + languageOptions: { parser: require(parsers.ESPREE) }, }), // reorder fix cannot cross function call on moving below #2 test({ @@ -2230,19 +2209,12 @@ 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`', }, ], + languageOptions: { parser: require(parsers.ESPREE) }, }), // reorder fix cannot cross function call on moving below #3 test({ @@ -2259,19 +2231,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`', @@ -2280,9 +2239,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'); @@ -2291,13 +2249,13 @@ ruleTester.run('order', rule, { fn_call(); `, - errors: [ - { - message: '`./local` import should occur after import of `global3`', - }, - ], - }), - ), + 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({ @@ -2607,20 +2565,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: ` @@ -2633,16 +2589,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`', @@ -2650,123 +2596,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`', - }, - ], - }), - ), + 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: ` @@ -3012,12 +2943,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`', @@ -3033,9 +2972,11 @@ 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': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, } @@ -3463,12 +3404,6 @@ describe('TypeScript', () => { import local from './local2'; import 'global2'; `, - output: ` - import './local1'; - import global from 'global1'; - import local from './local2'; - import 'global2'; - `, errors: [ { message: @@ -3488,14 +3423,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'; `, @@ -3692,7 +3619,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'; @@ -3701,6 +3629,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: [ @@ -3755,6 +3693,7 @@ flowRuleTester.run('order', rule, { column: 9, }, ], + languageOptions: { parser: require(parsers.ESPREE) }, }), ], }) diff --git a/test/rules/prefer-default-export.spec.ts b/test/rules/prefer-default-export.spec.ts index 6bc0aaa16..9920359f8 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,31 @@ 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: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], invalid: [ @@ -232,7 +235,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 +263,10 @@ 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: { + parser: require(parsers.ESPREE), + parserOptions: { ecmaVersion: 2022 }, + }, }), ], // { target: 'any' } invalid cases when any exporting file must contain default export but does not @@ -328,7 +334,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', @@ -389,9 +395,11 @@ ruleTester.run('prefer-default-export', rule, { describe('TypeScript', () => { for (const parser of getNonDefaultParsers()) { const parserConfig = { - parser, + languageOptions: { + ...(parser === parsers.BABEL && { parser: require(parsers.BABEL) }), + }, settings: { - 'import-x/parsers': { [parser]: ['.ts'] }, + 'import-x/parsers': { [parsers.TS]: ['.ts'] }, 'import-x/resolver': { 'eslint-import-resolver-typescript': true }, }, } @@ -407,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, diff --git a/test/rules/unambiguous.spec.ts b/test/rules/unambiguous.spec.ts index 80de2894b..c38932e52 100644 --- a/test/rules/unambiguous.spec.ts +++ b/test/rules/unambiguous.spec.ts @@ -1,58 +1,87 @@ -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: [ - '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() {}', - 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), + 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: [ { diff --git a/test/utils.ts b/test/utils.ts index ecab116bf..07c74a853 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -1,6 +1,10 @@ import path from 'node:path' -import type { TSESLint, TSESTree } from '@typescript-eslint/utils' +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' @@ -15,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) { @@ -45,12 +50,14 @@ 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 + parser?: never + parserOptions?: never } export type InvalidTestCase = // eslint-disable-next-line @typescript-eslint/no-explicit-any -- simplify testing - TSESLint.InvalidTestCase + TSESLintInvalidTestCase export function testVersion( specifier: string, @@ -75,17 +82,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, - parserOptions: { - sourceType: 'module', - ecmaVersion: 9, - ...t.parserOptions, + languageOptions: { + ...t.languageOptions, + parserOptions: { + sourceType: 'module', + ecmaVersion: 9, + ...t.languageOptions?.parserOptions, + }, }, } } @@ -106,7 +113,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', parser: parsers.BABEL }), + test({ + code: 'const { x, y, ...z } = bar', + languageOptions: { parser: require(parsers.BABEL) }, + }), // all the exports test({ code: 'let x; export { x }' }), @@ -114,7 +124,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' }), 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 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 760e281b4..263a14452 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" @@ -1398,11 +1611,25 @@ 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", "@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== + +"@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== +"@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" @@ -1418,6 +1645,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 "" @@ -1427,6 +1669,21 @@ 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/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" + 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" @@ -1446,6 +1703,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" @@ -1728,14 +1990,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" @@ -1744,97 +2006,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" @@ -1857,6 +2119,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" @@ -1905,125 +2224,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" @@ -2068,10 +2388,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" @@ -2120,10 +2440,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.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== + 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" "*" @@ -2172,7 +2500,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== @@ -2226,34 +2554,44 @@ 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== - 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" +"@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.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.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.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" "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.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.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.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" + 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" @@ -2262,33 +2600,33 @@ "@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== +"@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" "7.4.0" - "@typescript-eslint/visitor-keys" "7.4.0" + "@typescript-eslint/types" "8.1.0" + "@typescript-eslint/visitor-keys" "8.1.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/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" "7.4.0" - "@typescript-eslint/utils" "7.4.0" + "@typescript-eslint/typescript-estree" "8.1.0" + "@typescript-eslint/utils" "8.1.0" 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" 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.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" @@ -2303,32 +2641,29 @@ 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== +"@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" "7.4.0" - "@typescript-eslint/visitor-keys" "7.4.0" + "@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" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" -"@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/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" - "@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.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" @@ -2352,13 +2687,13 @@ "@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== +"@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" "7.4.0" - eslint-visitor-keys "^3.4.1" + "@typescript-eslint/types" "8.1.0" + eslint-visitor-keys "^3.4.3" "@ungap/structured-clone@^1.2.0": version "1.2.0" @@ -2418,7 +2753,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== @@ -2733,6 +3073,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" @@ -2797,6 +3147,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" @@ -2962,13 +3317,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" @@ -3110,6 +3472,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" @@ -3234,6 +3603,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" @@ -3377,7 +3751,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== @@ -3417,10 +3791,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" @@ -3592,6 +3966,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 +3991,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 +4040,95 @@ 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": + 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" + +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" + 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 +4276,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 +4351,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 +4533,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" @@ -4134,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" @@ -4161,7 +4678,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== @@ -4964,7 +5481,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 +5570,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== @@ -5211,19 +5728,26 @@ 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: +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" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + 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@^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" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== +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 "^1.1.7" + brace-expansion "^2.0.1" minimist-options@^4.0.2: version "4.1.0" @@ -5289,6 +5813,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" @@ -5398,6 +5927,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" @@ -5519,6 +6065,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" @@ -5901,10 +6452,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" @@ -5961,6 +6512,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" @@ -6399,7 +6955,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: 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== @@ -6433,6 +6989,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" @@ -6549,10 +7110,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" @@ -6610,6 +7171,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"