diff --git a/.eslint-doc-generatorrc.js b/.eslint-doc-generatorrc.js index e5074cef..1787b085 100644 --- a/.eslint-doc-generatorrc.js +++ b/.eslint-doc-generatorrc.js @@ -1,9 +1,7 @@ -const prettier = require('prettier'); - -const prettierConfig = require('./.prettierrc.js'); +import * as prettier from 'prettier'; /** @type {import('eslint-doc-generator').GenerateOptions} */ -const config = { +export default { ignoreConfig: [ 'flat/angular', 'flat/dom', @@ -12,8 +10,8 @@ const config = { 'flat/svelte', 'flat/vue', ], - postprocess: (content) => - prettier.format(content, { ...prettierConfig, parser: 'markdown' }), + postprocess: async (content, path) => { + const prettierConfig = await prettier.resolveConfig(path); + return prettier.format(content, { ...prettierConfig, parser: 'markdown' }); + }, }; - -module.exports = config; diff --git a/.github/workflows/smoke-test.yml b/.github/workflows/smoke-test.yml index 27d78c06..bd39a633 100644 --- a/.github/workflows/smoke-test.yml +++ b/.github/workflows/smoke-test.yml @@ -1,12 +1,15 @@ name: Smoke test on: - schedule: + schedule: # Every Sunday at midnight - cron: '0 0 * * SUN' - workflow_dispatch: + workflow_dispatch: # Manual trigger release: types: [published] +permissions: + issues: write # To create issues for test results + jobs: test: runs-on: ubuntu-latest @@ -27,12 +30,8 @@ jobs: pnpm install pnpm run build - - run: pnpm link - working-directory: ./dist - - - run: pnpm link eslint-plugin-testing-library - - uses: AriPerkkio/eslint-remote-tester-run-action@v4 with: - issue-title: 'Results of weekly scheduled smoke test' - eslint-remote-tester-config: tests/eslint-remote-tester.config.js + issue-title: 'Results of smoke test' + issue-label: 'smoke-test' + eslint-remote-tester-config: eslint-remote-tester.config.ts diff --git a/.github/workflows/verifications.yml b/.github/workflows/verifications.yml index 2ccc737a..51a05120 100644 --- a/.github/workflows/verifications.yml +++ b/.github/workflows/verifications.yml @@ -14,7 +14,13 @@ jobs: fail-fast: false matrix: validation-script: - ['lint', 'type-check', 'format:check', 'generate-all:check'] + [ + 'lint', + 'type-check', + 'format:check', + 'validate-gen-all', + 'bundle-check', + ] steps: - name: Checkout uses: actions/checkout@v6 @@ -41,8 +47,8 @@ jobs: strategy: fail-fast: false matrix: - node: [18.18.0, 18, 20.9.0, 20, 21.1.0, 21, 22, 23] - eslint: [8.57.0, 8, 9] + node: [18, 20, 21, 22, 23] + eslint: [8, 9] steps: - name: Checkout uses: actions/checkout@v6 diff --git a/.releaserc.json b/.releaserc.json deleted file mode 100644 index 485cf943..00000000 --- a/.releaserc.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "branches": [ - "+([0-9])?(.{+([0-9]),x}).x", - "main", - "next", - "next-major", - { - "name": "beta", - "prerelease": true - }, - { - "name": "alpha", - "prerelease": true - } - ] -} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1818459a..7e8d9c87 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -57,13 +57,13 @@ Based on [ESLint's Rule Naming Conventions](https://eslint.org/docs/developer-gu In the [same way as ESLint](https://eslint.org/docs/developer-guide/working-with-rules), each rule has three files named with its identifier (e.g. `no-debugging-utils`): -- in the `lib/rules` directory: a source file (e.g. `no-debugging-utils.ts`) -- in the `tests/lib/rules` directory: a test file (e.g. `no-debugging-utils.ts`) +- in the `src/rules` directory: a source file (e.g. `no-debugging-utils.ts`) +- in the `tests/rules` directory: a test file (e.g. `no-debugging-utils.ts`) - in the `docs/rules` directory: a Markdown documentation file (e.g. `no-debugging-utils.md`) Additionally, you need to do a couple of extra things: -- Run `pnpm run generate:rules-doc` to include your rule in the "Supported Rules" table within the [README.md](./README.md) +- Run `pnpm run generate:docs` to include your rule in the "Supported Rules" table within the [README.md](./README.md) ### Custom rule creator diff --git a/commitlint.config.js b/commitlint.config.js index 4c73b71e..d5068c9c 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -1,3 +1,3 @@ -module.exports = { +export default { extends: ['@commitlint/config-conventional'], }; diff --git a/eslint-remote-tester.config.ts b/eslint-remote-tester.config.ts new file mode 100644 index 00000000..3dbd00a8 --- /dev/null +++ b/eslint-remote-tester.config.ts @@ -0,0 +1,40 @@ +import { + getPathIgnorePattern, + getRepositories, +} from 'eslint-remote-tester-repositories'; +import { parser } from 'typescript-eslint'; + +import testingLibraryPlugin from './src'; + +import type { Config } from 'eslint-remote-tester'; + +const eslintRemoteTesterConfig: Config = { + repositories: getRepositories({ randomize: true }), + pathIgnorePattern: getPathIgnorePattern(), + extensions: ['js', 'jsx', 'ts', 'tsx'], + concurrentTasks: 3, + cache: false, + logLevel: 'info', + eslintConfig: [ + { + plugins: { 'testing-library': testingLibraryPlugin }, + rules: { + ...Object.fromEntries( + Object.keys(testingLibraryPlugin.rules).map((rule) => [ + `testing-library/${rule}`, + 'error', + ]) + ), + + // Rules with required options without default values + 'testing-library/consistent-data-testid': [ + 'error', + { testIdPattern: '^{fileName}(__([A-Z]+[a-z]_?)+)_$' }, + ], + }, + }, + { languageOptions: { parser } }, + ] as Config['eslintConfig'], +}; + +export default eslintRemoteTesterConfig; diff --git a/eslint.config.mjs b/eslint.config.js similarity index 100% rename from eslint.config.mjs rename to eslint.config.js diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 1f4e5e7e..00000000 --- a/index.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { Linter, Rule } from 'eslint'; - -declare const plugin: { - meta: { - name: string; - version: string; - }; - configs: { - angular: Linter.LegacyConfig; - dom: Linter.LegacyConfig; - marko: Linter.LegacyConfig; - react: Linter.LegacyConfig; - svelte: Linter.LegacyConfig; - vue: Linter.LegacyConfig; - 'flat/angular': Linter.FlatConfig; - 'flat/dom': Linter.FlatConfig; - 'flat/marko': Linter.FlatConfig; - 'flat/react': Linter.FlatConfig; - 'flat/svelte': Linter.FlatConfig; - 'flat/vue': Linter.FlatConfig; - }; - rules: { - [key: string]: Rule.RuleModule; - }; -}; - -export = plugin; diff --git a/lib/index.ts b/lib/index.ts deleted file mode 100644 index 888f68b3..00000000 --- a/lib/index.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { legacyConfigs } from './configs'; -import rules from './rules'; - -import type { SupportedTestingFramework } from './utils'; -import type { TSESLint } from '@typescript-eslint/utils'; - -const { - name: packageName, - version: packageVersion, - // we can't natively import package.json as tsc will copy it into dist/ - // eslint-disable-next-line @typescript-eslint/no-require-imports -} = require('../package.json') as { name: string; version: string }; - -type FinalConfigs = Record< - SupportedTestingFramework | `flat/${SupportedTestingFramework}`, - TSESLint.ClassicConfig.Config | TSESLint.FlatConfig.Config ->; - -const plugin = { - meta: { - name: packageName, - version: packageVersion, - }, - configs: {} as FinalConfigs, - rules, -}; - -plugin.configs = { - ...legacyConfigs, - 'flat/dom': { - plugins: { 'testing-library': plugin }, - rules: legacyConfigs.dom.rules, - }, - 'flat/angular': { - plugins: { 'testing-library': plugin }, - rules: legacyConfigs.angular.rules, - }, - 'flat/react': { - plugins: { 'testing-library': plugin }, - rules: legacyConfigs.react.rules, - }, - 'flat/vue': { - plugins: { 'testing-library': plugin }, - rules: legacyConfigs.vue.rules, - }, - 'flat/svelte': { - plugins: { 'testing-library': plugin }, - rules: legacyConfigs.svelte.rules, - }, - 'flat/marko': { - plugins: { 'testing-library': plugin }, - rules: legacyConfigs.marko.rules, - }, -} satisfies FinalConfigs; - -export = plugin; diff --git a/lib/node-utils/is-node-of-type.ts b/lib/node-utils/is-node-of-type.ts deleted file mode 100644 index c3cd978c..00000000 --- a/lib/node-utils/is-node-of-type.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { AST_NODE_TYPES, ASTUtils } from '@typescript-eslint/utils'; - -export const isArrayExpression = ASTUtils.isNodeOfType( - AST_NODE_TYPES.ArrayExpression -); -export const isArrowFunctionExpression = ASTUtils.isNodeOfType( - AST_NODE_TYPES.ArrowFunctionExpression -); -export const isBlockStatement = ASTUtils.isNodeOfType( - AST_NODE_TYPES.BlockStatement -); -export const isCallExpression = ASTUtils.isNodeOfType( - AST_NODE_TYPES.CallExpression -); -export const isExpressionStatement = ASTUtils.isNodeOfType( - AST_NODE_TYPES.ExpressionStatement -); -export const isVariableDeclaration = ASTUtils.isNodeOfType( - AST_NODE_TYPES.VariableDeclaration -); -export const isAssignmentExpression = ASTUtils.isNodeOfType( - AST_NODE_TYPES.AssignmentExpression -); -export const isChainExpression = ASTUtils.isNodeOfType( - AST_NODE_TYPES.ChainExpression -); -export const isSequenceExpression = ASTUtils.isNodeOfType( - AST_NODE_TYPES.SequenceExpression -); -export const isImportDeclaration = ASTUtils.isNodeOfType( - AST_NODE_TYPES.ImportDeclaration -); -export const isImportDefaultSpecifier = ASTUtils.isNodeOfType( - AST_NODE_TYPES.ImportDefaultSpecifier -); -export const isTSImportEqualsDeclaration = ASTUtils.isNodeOfType( - AST_NODE_TYPES.TSImportEqualsDeclaration -); -export const isImportExpression = ASTUtils.isNodeOfType( - AST_NODE_TYPES.ImportExpression -); -export const isImportNamespaceSpecifier = ASTUtils.isNodeOfType( - AST_NODE_TYPES.ImportNamespaceSpecifier -); -export const isImportSpecifier = ASTUtils.isNodeOfType( - AST_NODE_TYPES.ImportSpecifier -); -export const isJSXAttribute = ASTUtils.isNodeOfType( - AST_NODE_TYPES.JSXAttribute -); -export const isLiteral = ASTUtils.isNodeOfType(AST_NODE_TYPES.Literal); -export const isTemplateLiteral = ASTUtils.isNodeOfType( - AST_NODE_TYPES.TemplateLiteral -); -export const isMemberExpression = ASTUtils.isNodeOfType( - AST_NODE_TYPES.MemberExpression -); -export const isNewExpression = ASTUtils.isNodeOfType( - AST_NODE_TYPES.NewExpression -); -export const isObjectExpression = ASTUtils.isNodeOfType( - AST_NODE_TYPES.ObjectExpression -); -export const isObjectPattern = ASTUtils.isNodeOfType( - AST_NODE_TYPES.ObjectPattern -); -export const isProperty = ASTUtils.isNodeOfType(AST_NODE_TYPES.Property); -export const isReturnStatement = ASTUtils.isNodeOfType( - AST_NODE_TYPES.ReturnStatement -); -export const isFunctionExpression = ASTUtils.isNodeOfType( - AST_NODE_TYPES.FunctionExpression -); -export const isFunctionDeclaration = ASTUtils.isNodeOfType( - AST_NODE_TYPES.FunctionDeclaration -); diff --git a/lint-staged.config.mjs b/lint-staged.config.js similarity index 100% rename from lint-staged.config.mjs rename to lint-staged.config.js diff --git a/package.json b/package.json index c32eb1f7..9ceb9a3c 100644 --- a/package.json +++ b/package.json @@ -11,41 +11,41 @@ "testing" ], "homepage": "https://github.com/testing-library/eslint-plugin-testing-library", - "bugs": { - "url": "https://github.com/testing-library/eslint-plugin-testing-library/issues" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/testing-library/eslint-plugin-testing-library.git" - }, + "bugs": "testing-library/eslint-plugin-testing-library/issues", + "repository": "testing-library/eslint-plugin-testing-library", "license": "MIT", - "author": { - "name": "Mario Beltrán Alarcón", - "email": "me@mario.dev", - "url": "https://mario.dev/" - }, + "author": "Mario Beltrán (https://mario.dev)", "files": [ - "dist", - "README.md", - "LICENSE", - "index.d.ts" + "dist" ], - "main": "./dist/index.js", - "types": "index.d.ts", + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.cts", + "exports": { + ".": { + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + }, + "./package.json": "./package.json" + }, "scripts": { - "prebuild": "del-cli dist", - "build": "tsc -p ./tsconfig.build.json", + "build": "tsdown --format esm --format cjs", + "bundle-check": "pnpm run build && publint", "generate-all": "pnpm run --parallel \"/^generate:.*/\"", - "generate-all:check": "pnpm run generate-all && git diff --exit-code", - "generate:configs": "ts-node tools/generate-configs", - "generate:rules-doc": "pnpm run build && pnpm run rule-doc-generator", + "generate:configs": "jiti tools/generate-configs", + "generate:docs": "pnpm run build && pnpm run eslint-doc-generator", + "validate-gen-all": "pnpm run --parallel \"/^validate-gen:.*/\"", + "validate-gen:configs": "pnpm run generate:configs && git diff --exit-code src/configs", + "validate-gen:docs": "pnpm run build && pnpm run eslint-doc-generator --check", "format": "pnpm run prettier-base --write", "format:check": "pnpm run prettier-base --check", "lint": "eslint --max-warnings 0 .", "lint:fix": "pnpm run lint --fix", "prepare": "husky || true", "prettier-base": "prettier . --ignore-unknown --cache --log-level warn", - "rule-doc-generator": "eslint-doc-generator", + "eslint-doc-generator": "eslint-doc-generator", + "eslint-remote-tester": "eslint-remote-tester --config eslint-remote-tester.config.ts", "semantic-release": "semantic-release", "test": "vitest run", "test:ci": "vitest run --coverage", @@ -68,23 +68,24 @@ "@vitest/coverage-v8": "^3.2.4", "@vitest/eslint-plugin": "^1.5.2", "@vitest/ui": "3.2.4", - "del-cli": "^6.0.0", "eslint": "^9.35.0", "eslint-config-prettier": "^10.1.8", - "eslint-doc-generator": "^2.2.2", + "eslint-doc-generator": "^2.4.0", "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-import-x": "^4.16.1", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^7.1.0", - "eslint-remote-tester": "^3.0.1", - "eslint-remote-tester-repositories": "^1.0.1", + "eslint-remote-tester": "^4.0.3", + "eslint-remote-tester-repositories": "^2.0.2", "globals": "^16.3.0", "husky": "^9.1.7", + "jiti": "^2.6.1", "lint-staged": "^15.2.10", "prettier": "3.6.2", + "publint": "^0.3.16", "semantic-release": "^25.0.2", "semver": "^7.6.3", - "ts-node": "^10.9.2", + "tsdown": "^0.17.3", "typescript": "^5.7.2", "typescript-eslint": "^8.15.0", "vitest": "^3.2.4" @@ -95,5 +96,5 @@ "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "packageManager": "pnpm@9.14.2" + "packageManager": "pnpm@9.15.9" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 26691f93..b77556d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 8.43.0 '@typescript-eslint/utils': specifier: ^8.15.0 - version: 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) + version: 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) devDependencies: '@commitlint/cli': specifier: ^19.6.0 @@ -23,7 +23,7 @@ importers: version: 19.8.0 '@eslint/compat': specifier: ^1.3.2 - version: 1.3.2(eslint@9.35.0(jiti@2.5.1)) + version: 1.3.2(eslint@9.35.0(jiti@2.6.1)) '@eslint/eslintrc': specifier: ^3.3.1 version: 3.3.1 @@ -35,76 +35,79 @@ importers: version: 22.15.29 '@typescript-eslint/rule-tester': specifier: ^8.15.0 - version: 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) + version: 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) '@vitest/coverage-v8': specifier: ^3.2.4 version: 3.2.4(vitest@3.2.4) '@vitest/eslint-plugin': specifier: ^1.5.2 - version: 1.5.2(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2)(vitest@3.2.4) + version: 1.5.2(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)(vitest@3.2.4) '@vitest/ui': specifier: 3.2.4 version: 3.2.4(vitest@3.2.4) - del-cli: - specifier: ^6.0.0 - version: 6.0.0 eslint: specifier: ^9.35.0 - version: 9.35.0(jiti@2.5.1) + version: 9.35.0(jiti@2.6.1) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.35.0(jiti@2.5.1)) + version: 10.1.8(eslint@9.35.0(jiti@2.6.1)) eslint-doc-generator: - specifier: ^2.2.2 - version: 2.2.2(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) + specifier: ^2.4.0 + version: 2.4.0(eslint@9.35.0(jiti@2.6.1))(prettier@3.6.2)(typescript@5.7.2) eslint-import-resolver-typescript: specifier: ^4.4.4 - version: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.5.1)))(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)) + version: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.6.1)) eslint-plugin-import-x: specifier: ^4.16.1 - version: 4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.5.1)) + version: 4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)) eslint-plugin-node: specifier: ^11.1.0 - version: 11.1.0(eslint@9.35.0(jiti@2.5.1)) + version: 11.1.0(eslint@9.35.0(jiti@2.6.1)) eslint-plugin-promise: specifier: ^7.1.0 - version: 7.2.1(eslint@9.35.0(jiti@2.5.1)) + version: 7.2.1(eslint@9.35.0(jiti@2.6.1)) eslint-remote-tester: - specifier: ^3.0.1 - version: 3.0.1(eslint@9.35.0(jiti@2.5.1))(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.7.2)) + specifier: ^4.0.3 + version: 4.0.3(eslint@9.35.0(jiti@2.6.1))(jiti@2.6.1) eslint-remote-tester-repositories: - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^2.0.2 + version: 2.0.2 globals: specifier: ^16.3.0 version: 16.3.0 husky: specifier: ^9.1.7 version: 9.1.7 + jiti: + specifier: ^2.6.1 + version: 2.6.1 lint-staged: specifier: ^15.2.10 version: 15.4.3 prettier: specifier: 3.6.2 version: 3.6.2 + publint: + specifier: ^0.3.16 + version: 0.3.16 semantic-release: specifier: ^25.0.2 version: 25.0.2(typescript@5.7.2) semver: specifier: ^7.6.3 version: 7.7.2 - ts-node: - specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.7.2) + tsdown: + specifier: ^0.17.3 + version: 0.17.3(publint@0.3.16)(typescript@5.7.2) typescript: specifier: ^5.7.2 version: 5.7.2 typescript-eslint: specifier: ^8.15.0 - version: 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) + version: 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@22.15.29)(@vitest/ui@3.2.4)(jiti@2.5.1)(yaml@2.7.0) + version: 3.2.4(@types/node@22.15.29)(@vitest/ui@3.2.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0) packages: @@ -124,35 +127,44 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.27.1': resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.27.2': resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/types@7.27.1': resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@1.0.2': resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} @@ -234,16 +246,18 @@ packages: resolution: {integrity: sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==} engines: {node: '>=v18'} - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - '@emnapi/core@1.5.0': resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} + '@emnapi/core@1.7.1': + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} + '@emnapi/runtime@1.5.0': resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} @@ -253,156 +267,312 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.27.1': + resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.25.12': resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.27.1': + resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.25.12': resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.27.1': + resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.25.12': resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.27.1': + resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.25.12': resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.27.1': + resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.25.12': resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.27.1': + resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.25.12': resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.27.1': + resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.12': resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.27.1': + resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.25.12': resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.27.1': + resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.25.12': resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.27.1': + resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.25.12': resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.27.1': + resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.25.12': resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.27.1': + resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.25.12': resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.27.1': + resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.25.12': resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.27.1': + resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.25.12': resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.27.1': + resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.25.12': resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.27.1': + resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.25.12': resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.27.1': + resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.12': resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.27.1': + resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.12': resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.27.1': + resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.12': resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.27.1': + resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.12': resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.27.1': + resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.25.12': resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.27.1': + resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.25.12': resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.27.1': + resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.25.12': resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.27.1': + resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.25.12': resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.27.1': + resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.25.12': resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.27.1': + resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.1': resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -488,6 +658,9 @@ packages: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -512,9 +685,6 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@kwsites/file-exists@1.1.1': resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} @@ -524,6 +694,9 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + '@napi-rs/wasm-runtime@1.1.0': + resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -587,6 +760,9 @@ packages: '@one-ini/wasm@0.2.0': resolution: {integrity: sha512-n+L/BvrwKUn7q5O3wHGo+CJZAqfewh38+37sk+eBzv/39lM9pPgPRd4sOZRvSRzo0ukLxzyXso4WlGj2oKZ5hA==} + '@oxc-project/types@0.101.0': + resolution: {integrity: sha512-nuFhqlUzJX+gVIPPfuE6xurd4lST3mdcWOhyK/rZO0B9XWMKm79SuszIQEnSMmmDhq1DC8WWVYGVd+6F93o1gQ==} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -606,6 +782,93 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@publint/pack@0.1.2': + resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} + engines: {node: '>=18'} + + '@quansync/fs@1.0.0': + resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} + + '@rolldown/binding-android-arm64@1.0.0-beta.53': + resolution: {integrity: sha512-Ok9V8o7o6YfSdTTYA/uHH30r3YtOxLD6G3wih/U9DO0ucBBFq8WPt/DslU53OgfteLRHITZny9N/qCUxMf9kjQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-beta.53': + resolution: {integrity: sha512-yIsKqMz0CtRnVa6x3Pa+mzTihr4Ty+Z6HfPbZ7RVbk1Uxnco4+CUn7Qbm/5SBol1JD/7nvY8rphAgyAi7Lj6Vg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-beta.53': + resolution: {integrity: sha512-GTXe+mxsCGUnJOFMhfGWmefP7Q9TpYUseHvhAhr21nCTgdS8jPsvirb0tJwM3lN0/u/cg7bpFNa16fQrjKrCjQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-beta.53': + resolution: {integrity: sha512-9Tmp7bBvKqyDkMcL4e089pH3RsjD3SUungjmqWtyhNOxoQMh0fSmINTyYV8KXtE+JkxYMPWvnEt+/mfpVCkk8w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': + resolution: {integrity: sha512-a1y5fiB0iovuzdbjUxa7+Zcvgv+mTmlGGC4XydVIsyl48eoxgaYkA3l9079hyTyhECsPq+mbr0gVQsFU11OJAQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': + resolution: {integrity: sha512-bpIGX+ov9PhJYV+wHNXl9rzq4F0QvILiURn0y0oepbQx+7stmQsKA0DhPGwmhfvF856wq+gbM8L92SAa/CBcLg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': + resolution: {integrity: sha512-bGe5EBB8FVjHBR1mOLOPEFg1Lp3//7geqWkU5NIhxe+yH0W8FVrQ6WRYOap4SUTKdklD/dC4qPLREkMMQ855FA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': + resolution: {integrity: sha512-qL+63WKVQs1CMvFedlPt0U9PiEKJOAL/bsHMKUDS6Vp2Q+YAv/QLPu8rcvkfIMvQ0FPU2WL0aX4eWwF6e/GAnA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': + resolution: {integrity: sha512-VGl9JIGjoJh3H8Mb+7xnVqODajBmrdOOb9lxWXdcmxyI+zjB2sux69br0hZJDTyLJfvBoYm439zPACYbCjGRmw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': + resolution: {integrity: sha512-B4iIserJXuSnNzA5xBLFUIjTfhNy7d9sq4FUMQY3GhQWGVhS2RWWzzDnkSU6MUt7/aHUrep0CdQfXUJI9D3W7A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.53': + resolution: {integrity: sha512-BUjAEgpABEJXilGq/BPh7jeU3WAJ5o15c1ZEgHaDWSz3LB881LQZnbNJHmUiM4d1JQWMYYyR1Y490IBHi2FPJg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': + resolution: {integrity: sha512-s27uU7tpCWSjHBnxyVXHt3rMrQdJq5MHNv3BzsewCIroIw3DJFjMH1dzCPPMUFxnh1r52Nf9IJ/eWp6LDoyGcw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': + resolution: {integrity: sha512-cjWL/USPJ1g0en2htb4ssMjIycc36RvdQAx1WlXnS6DpULswiUTVXPDesTifSKYSyvx24E0YqQkEm0K/M2Z/AA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0-beta.53': + resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} + '@rollup/rollup-android-arm-eabi@4.53.3': resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} cpu: [arm] @@ -757,104 +1020,16 @@ packages: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - '@sindresorhus/merge-streams@4.0.0': resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@swc/core-darwin-arm64@1.13.5': - resolution: {integrity: sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.13.5': - resolution: {integrity: sha512-ILd38Fg/w23vHb0yVjlWvQBoE37ZJTdlLHa8LRCFDdX4WKfnVBiblsCU9ar4QTMNdeTBEX9iUF4IrbNWhaF1Ng==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.13.5': - resolution: {integrity: sha512-Q6eS3Pt8GLkXxqz9TAw+AUk9HpVJt8Uzm54MvPsqp2yuGmY0/sNaPPNVqctCX9fu/Nu8eaWUen0si6iEiCsazQ==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.13.5': - resolution: {integrity: sha512-aNDfeN+9af+y+M2MYfxCzCy/VDq7Z5YIbMqRI739o8Ganz6ST+27kjQFd8Y/57JN/hcnUEa9xqdS3XY7WaVtSw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.13.5': - resolution: {integrity: sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.13.5': - resolution: {integrity: sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.13.5': - resolution: {integrity: sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.13.5': - resolution: {integrity: sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.13.5': - resolution: {integrity: sha512-C5Yi/xIikrFUzZcyGj9L3RpKljFvKiDMtyDzPKzlsDrKIw2EYY+bF88gB6oGY5RGmv4DAX8dbnpRAqgFD0FMEw==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.13.5': - resolution: {integrity: sha512-YrKdMVxbYmlfybCSbRtrilc6UA8GF5aPmGKBdPvjrarvsmf4i7ZHGCEnLtfOMd3Lwbs2WUZq3WdMbozYeLU93Q==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.13.5': - resolution: {integrity: sha512-WezcBo8a0Dg2rnR82zhwoR6aRNxeTGfK5QCD6TQ+kg3xx/zNT02s/0o+81h/3zhvFSB24NtqEr8FTw88O5W/JQ==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': '>=0.5.17' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/types@0.1.24': - resolution: {integrity: sha512-tjTMh3V4vAORHtdTprLlfoMptu1WfTZG9Rsca6yOKyNYsRr+MUXutKmliB17orgSZk5DpnDxs8GUdd/qwYxOng==} - - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@tybys/wasm-util@0.10.0': resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} @@ -1144,15 +1319,6 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -1216,12 +1382,13 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} + ansis@4.2.0: + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} + engines: {node: '>=14'} + any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1259,6 +1426,10 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + ast-kit@2.2.0: + resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} + engines: {node: '>=20.19.0'} + ast-v8-to-istanbul@0.3.8: resolution: {integrity: sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==} @@ -1284,6 +1455,9 @@ packages: before-after-hook@4.0.0: resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} + birpc@3.0.0: + resolution: {integrity: sha512-by+04pHuxpCEQcucAXqzopqfhyI8TLK5Qg5MST0cB6MP+JhHna9ollrtK9moVh27aq6Q6MEJgebD0cVm//yBkg==} + bottleneck@2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} @@ -1423,8 +1597,8 @@ packages: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} - commander@14.0.0: - resolution: {integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==} + commander@14.0.2: + resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} engines: {node: '>=20'} comment-parser@1.4.1: @@ -1499,9 +1673,6 @@ packages: typescript: optional: true - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -1584,23 +1755,13 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - del-cli@6.0.0: - resolution: {integrity: sha512-9nitGV2W6KLFyya4qYt4+9AKQFL+c0Ehj5K7V7IwlxTc6RMCfQUGY9E9pLG6e8TQjtwXpuiWIGGZb3mfVxyZkw==} - engines: {node: '>=18'} - hasBin: true - - del@8.0.0: - resolution: {integrity: sha512-R6ep6JJ+eOBZsBr9esiNN1gxFbZE4Q2cULkUSFumGYecAiS6qodDvcPx/sFuWHMNul7DWmrtoEOpYSm7o6tbSA==} - engines: {node: '>=18'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -1617,6 +1778,15 @@ packages: resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} engines: {node: '>=18'} + dts-resolver@2.1.3: + resolution: {integrity: sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==} + engines: {node: '>=20.19.0'} + peerDependencies: + oxc-resolver: '>=11.0.0' + peerDependenciesMeta: + oxc-resolver: + optional: true + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -1627,9 +1797,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - editorconfig@2.0.1: - resolution: {integrity: sha512-jMVc7LbF/M13cSpBiVWGut+qhIyOddIhSXPAntMSboEigGFGaQmBow9ZrVog0VT2K89qm0cyGHa7FRhcOqP8hA==} - engines: {node: '>=18'} + editorconfig@3.0.1: + resolution: {integrity: sha512-k5NZM2XNIJfH/omUv0SRYaiLae4VRwg1ILW6xLOjuP4AQGAGcvzNij5imJ+m1rbzDIH0ov6EbH53BW96amFXpQ==} + engines: {node: '>=20'} hasBin: true emoji-regex@10.5.0: @@ -1644,6 +1814,10 @@ packages: emojilib@2.4.0: resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + empathic@2.0.0: + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} + engines: {node: '>=14'} + env-ci@11.2.0: resolution: {integrity: sha512-D5kWfzkmaOQDioPmiviWAVtKmpPT4/iJmMVQxWxMPJTFyTkdc5JQUfc5iXEeWxcOdsYTKSAiA/Age4NUOqKsRA==} engines: {node: ^18.17 || >=20.6.1} @@ -1662,8 +1836,8 @@ packages: error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - es-abstract@1.24.0: - resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + es-abstract@1.24.1: + resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -1698,6 +1872,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.27.1: + resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -1724,12 +1903,16 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-doc-generator@2.2.2: - resolution: {integrity: sha512-LBr0Nz1AZnkifkOMyE0sfx+IvS/V+TK1Sp8fCYDdk4Eb5gZCpEcK4t/ImT23oJAwso26rkHzBCRMrd/bc7bddQ==} + eslint-doc-generator@2.4.0: + resolution: {integrity: sha512-BPOGNzEsxyZkrqDlLXa4R1CtYOdlpehDK9x6BGaFuCwKBKrCZ9DFhhtj+wKRNZYHduRT5sup7jajk1jcrH8akw==} engines: {node: ^18.18.0 || ^20.9.0 || >=22.0.0} hasBin: true peerDependencies: eslint: '>= 8.57.1' + prettier: '>= 3.0.0' + peerDependenciesMeta: + prettier: + optional: true eslint-import-context@0.1.9: resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==} @@ -1818,18 +2001,22 @@ packages: peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-remote-tester-repositories@1.0.1: - resolution: {integrity: sha512-XL9PqGBDL4rORnQ74b/3tqbJUpMlPz9gzKSrmYFtakLBQ/ayBELB/HZvd6ZEl+mH0vBeSYtUH7E/rawBsf9Qzg==} + eslint-remote-tester-repositories@2.0.2: + resolution: {integrity: sha512-Oxp8SE5nsnrJvIdzjr35L8KmepmHgXyD/4Kjb3vhGgfukrI7FgsQM68o+05yxYSffmEDLoq3xBG+FfueXuxpdw==} + engines: {node: ^18.0.0 || >=20.0.0} - eslint-remote-tester@3.0.1: - resolution: {integrity: sha512-/jifRW0gJ5NmrWGD8mn2imvafO0fS6KBKLzv8ZIdI1uMHZ2EriYN7Fw4cyOR7rfbt6Ve2tUrluSvVptW1PxEvg==} - engines: {node: '>=12.11'} + eslint-remote-tester@4.0.3: + resolution: {integrity: sha512-kNPnimtZVBOWsnhpU38gsK+t26vg8fHoMd7jnVKr1WsnkhVyBRsXcEMk34scKSR+AV4+Xn6PjuELsJ9lqy7bZQ==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - eslint: '>=7' - ts-node: '>=9.0.0' + eslint: '>=9' + importx: '>=0.3.5' + jiti: '>=1' peerDependenciesMeta: - ts-node: + importx: + optional: true + jiti: optional: true eslint-scope@8.4.0: @@ -1906,10 +2093,6 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -2062,6 +2245,9 @@ packages: get-tsconfig@4.10.1: resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + git-log-parser@1.2.1: resolution: {integrity: sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==} @@ -2098,10 +2284,6 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globby@14.0.2: - resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} - engines: {node: '>=18'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -2158,6 +2340,9 @@ packages: resolution: {integrity: sha512-IHI4bEVOt3vRUDJ+bFA9VUJlo7SzvFARPNLw75pqSmAOP2HmTWfFJtPvLBrDrlgjEYXY9zs7SFdHPQaJShkSCQ==} engines: {node: '>=20'} + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + hosted-git-info@7.0.2: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} @@ -2209,6 +2394,10 @@ packages: import-meta-resolve@4.2.0: resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + import-without-cache@0.2.3: + resolution: {integrity: sha512-roCvX171VqJ7+7pQt1kSRfwaJvFAC2zhThJWXal1rN8EqzPS3iapkAoNpHh4lM8Na1BDen+n9rVfo73RN+Y87g==} + engines: {node: '>=20.19.0'} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -2347,14 +2536,6 @@ packages: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} - is-path-cwd@3.0.0: - resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-path-inside@4.0.0: - resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} - engines: {node: '>=12'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -2455,8 +2636,8 @@ packages: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jiti@2.5.1: - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true js-tokens@4.0.0: @@ -2469,6 +2650,11 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -2617,9 +2803,6 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} @@ -2692,6 +2875,10 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -2848,6 +3035,9 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -2908,10 +3098,6 @@ packages: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-map@7.0.2: - resolution: {integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==} - engines: {node: '>=18'} - p-map@7.0.4: resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} engines: {node: '>=18'} @@ -2931,6 +3117,9 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -2995,10 +3184,6 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} - pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} @@ -3061,10 +3246,18 @@ packages: proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + publint@0.3.16: + resolution: {integrity: sha512-MFqyfRLAExPVZdTQFwkAQELzA8idyXzROVOytg6nEJ/GEypXBUmMGrVaID8cTuzRS1U5L8yTOdOJtMXgFUJAeA==} + engines: {node: '>=18'} + hasBin: true + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + quansync@1.0.0: + resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -3166,6 +3359,30 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rolldown-plugin-dts@0.18.3: + resolution: {integrity: sha512-rd1LZ0Awwfyn89UndUF/HoFF4oH9a5j+2ZeuKSJYM80vmeN/p0gslYMnHTQHBEXPhUlvAlqGA3tVgXB/1qFNDg==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@ts-macro/tsc': ^0.3.6 + '@typescript/native-preview': '>=7.0.0-dev.20250601.1' + rolldown: ^1.0.0-beta.51 + typescript: ^5.0.0 + vue-tsc: ~3.1.0 + peerDependenciesMeta: + '@ts-macro/tsc': + optional: true + '@typescript/native-preview': + optional: true + typescript: + optional: true + vue-tsc: + optional: true + + rolldown@1.0.0-beta.53: + resolution: {integrity: sha512-Qd9c2p0XKZdgT5AYd+KgAMggJ8ZmCs3JnS9PTMWkyUfteKlfmKtxJbWTHkVakxwXs1Ub7jrRYVeFeF7N0sQxyw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup@4.53.3: resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -3174,6 +3391,10 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} @@ -3215,6 +3436,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -3235,8 +3461,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -3268,8 +3495,8 @@ packages: resolution: {integrity: sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==} engines: {node: '>=6'} - simple-git@3.27.0: - resolution: {integrity: sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==} + simple-git@3.30.0: + resolution: {integrity: sha512-q6lxyDsCmEal/MEGhP1aVyQ3oxnagGlBDOVSIB4XUVLl1iZh0Pah6ebC9V4xBap/RfgP2WlI8EKs0WS0rMEJHg==} sirv@3.0.2: resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} @@ -3279,10 +3506,6 @@ packages: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} @@ -3478,6 +3701,10 @@ packages: tinyexec@1.0.1: resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -3506,32 +3733,52 @@ packages: resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} engines: {node: '>= 0.4'} + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + ts-api-utils@2.1.0: resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tsdown@0.17.3: + resolution: {integrity: sha512-bgLgTog+oyadDTr9SZ57jZtb+A4aglCjo3xgJrkCDxbzcQl2l2iDDr4b06XHSQHwyDNIhYFDgPRhuu1wL3pNsw==} + engines: {node: '>=20.19.0'} hasBin: true peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' + '@arethetypeswrong/core': ^0.18.1 + '@vitejs/devtools': ^0.0.0-alpha.19 + publint: ^0.3.0 + typescript: ^5.0.0 + unplugin-lightningcss: ^0.4.0 + unplugin-unused: ^0.5.0 peerDependenciesMeta: - '@swc/core': + '@arethetypeswrong/core': optional: true - '@swc/wasm': + '@vitejs/devtools': + optional: true + publint: + optional: true + typescript: + optional: true + unplugin-lightningcss: + optional: true + unplugin-unused: optional: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + engines: {node: '>=18.0.0'} + hasBin: true + tunnel@0.0.6: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} @@ -3601,6 +3848,9 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} + unconfig-core@7.4.2: + resolution: {integrity: sha512-VgPCvLWugINbXvMQDf8Jh0mlbvNjNC6eSUziHsBCMpxR05OPrNrvDnyatdMjRgcHaaNsCqz+wjNXxNw1kRLHUg==} + undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -3638,6 +3888,16 @@ packages: unrs-resolver@1.11.1: resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + unrun@0.2.19: + resolution: {integrity: sha512-DbwbJ9BvPEb3BeZnIpP9S5tGLO/JIgPQ3JrpMRFIfZMZfMG19f26OlLbC2ml8RRdrI2ZA7z2t+at5tsIHbh6Qw==} + engines: {node: '>=20.19.0'} + hasBin: true + peerDependencies: + synckit: ^0.11.11 + peerDependenciesMeta: + synckit: + optional: true + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -3648,9 +3908,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -3836,10 +4093,6 @@ packages: resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -3879,33 +4132,44 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/helper-string-parser@7.27.1': {} + '@babel/generator@7.28.5': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 - '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-identifier@7.28.5': {} + '@babel/parser@7.27.2': dependencies: '@babel/types': 7.27.1 + '@babel/parser@7.28.5': + dependencies: + '@babel/types': 7.28.5 + '@babel/types@7.27.1': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.28.5': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@bcoe/v8-coverage@1.0.2': {} '@colors/colors@1.5.0': @@ -4026,11 +4290,13 @@ snapshots: '@types/conventional-commits-parser': 5.0.1 chalk: 5.6.0 - '@cspotcode/source-map-support@0.8.1': + '@emnapi/core@1.5.0': dependencies: - '@jridgewell/trace-mapping': 0.3.9 + '@emnapi/wasi-threads': 1.1.0 + tslib: 2.8.1 + optional: true - '@emnapi/core@1.5.0': + '@emnapi/core@1.7.1': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 @@ -4041,6 +4307,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.7.1': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.1.0': dependencies: tslib: 2.8.1 @@ -4049,96 +4320,174 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true + '@esbuild/aix-ppc64@0.27.1': + optional: true + '@esbuild/android-arm64@0.25.12': optional: true + '@esbuild/android-arm64@0.27.1': + optional: true + '@esbuild/android-arm@0.25.12': optional: true + '@esbuild/android-arm@0.27.1': + optional: true + '@esbuild/android-x64@0.25.12': optional: true + '@esbuild/android-x64@0.27.1': + optional: true + '@esbuild/darwin-arm64@0.25.12': optional: true + '@esbuild/darwin-arm64@0.27.1': + optional: true + '@esbuild/darwin-x64@0.25.12': optional: true + '@esbuild/darwin-x64@0.27.1': + optional: true + '@esbuild/freebsd-arm64@0.25.12': optional: true + '@esbuild/freebsd-arm64@0.27.1': + optional: true + '@esbuild/freebsd-x64@0.25.12': optional: true + '@esbuild/freebsd-x64@0.27.1': + optional: true + '@esbuild/linux-arm64@0.25.12': optional: true + '@esbuild/linux-arm64@0.27.1': + optional: true + '@esbuild/linux-arm@0.25.12': optional: true + '@esbuild/linux-arm@0.27.1': + optional: true + '@esbuild/linux-ia32@0.25.12': optional: true + '@esbuild/linux-ia32@0.27.1': + optional: true + '@esbuild/linux-loong64@0.25.12': optional: true + '@esbuild/linux-loong64@0.27.1': + optional: true + '@esbuild/linux-mips64el@0.25.12': optional: true + '@esbuild/linux-mips64el@0.27.1': + optional: true + '@esbuild/linux-ppc64@0.25.12': optional: true + '@esbuild/linux-ppc64@0.27.1': + optional: true + '@esbuild/linux-riscv64@0.25.12': optional: true + '@esbuild/linux-riscv64@0.27.1': + optional: true + '@esbuild/linux-s390x@0.25.12': optional: true + '@esbuild/linux-s390x@0.27.1': + optional: true + '@esbuild/linux-x64@0.25.12': optional: true + '@esbuild/linux-x64@0.27.1': + optional: true + '@esbuild/netbsd-arm64@0.25.12': optional: true + '@esbuild/netbsd-arm64@0.27.1': + optional: true + '@esbuild/netbsd-x64@0.25.12': optional: true + '@esbuild/netbsd-x64@0.27.1': + optional: true + '@esbuild/openbsd-arm64@0.25.12': optional: true + '@esbuild/openbsd-arm64@0.27.1': + optional: true + '@esbuild/openbsd-x64@0.25.12': optional: true + '@esbuild/openbsd-x64@0.27.1': + optional: true + '@esbuild/openharmony-arm64@0.25.12': optional: true + '@esbuild/openharmony-arm64@0.27.1': + optional: true + '@esbuild/sunos-x64@0.25.12': optional: true + '@esbuild/sunos-x64@0.27.1': + optional: true + '@esbuild/win32-arm64@0.25.12': optional: true + '@esbuild/win32-arm64@0.27.1': + optional: true + '@esbuild/win32-ia32@0.25.12': optional: true + '@esbuild/win32-ia32@0.27.1': + optional: true + '@esbuild/win32-x64@0.25.12': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.35.0(jiti@2.5.1))': + '@esbuild/win32-x64@0.27.1': + optional: true + + '@eslint-community/eslint-utils@4.4.1(eslint@9.35.0(jiti@2.6.1))': dependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.0(eslint@9.35.0(jiti@2.5.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.35.0(jiti@2.6.1))': dependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.3.2(eslint@9.35.0(jiti@2.5.1))': + '@eslint/compat@1.3.2(eslint@9.35.0(jiti@2.6.1))': optionalDependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) '@eslint/config-array@0.21.0': dependencies: @@ -4205,6 +4554,11 @@ snapshots: dependencies: '@sinclair/typebox': 0.27.8 + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -4229,14 +4583,9 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - '@kwsites/file-exists@1.1.1': dependencies: - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -4249,6 +4598,13 @@ snapshots: '@tybys/wasm-util': 0.10.0 optional: true + '@napi-rs/wasm-runtime@1.1.0': + dependencies: + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 + '@tybys/wasm-util': 0.10.1 + optional: true + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4322,6 +4678,8 @@ snapshots: '@one-ini/wasm@0.2.0': {} + '@oxc-project/types@0.101.0': {} + '@pkgjs/parseargs@0.11.0': optional: true @@ -4339,6 +4697,55 @@ snapshots: '@polka/url@1.0.0-next.29': {} + '@publint/pack@0.1.2': {} + + '@quansync/fs@1.0.0': + dependencies: + quansync: 1.0.0 + + '@rolldown/binding-android-arm64@1.0.0-beta.53': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-beta.53': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-beta.53': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-beta.53': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.53': + dependencies: + '@napi-rs/wasm-runtime': 1.1.0 + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': + optional: true + + '@rolldown/pluginutils@1.0.0-beta.53': {} + '@rollup/rollup-android-arm-eabi@4.53.3': optional: true @@ -4488,74 +4895,14 @@ snapshots: '@sindresorhus/is@4.6.0': {} - '@sindresorhus/merge-streams@2.3.0': {} - '@sindresorhus/merge-streams@4.0.0': {} - '@swc/core-darwin-arm64@1.13.5': - optional: true - - '@swc/core-darwin-x64@1.13.5': - optional: true - - '@swc/core-linux-arm-gnueabihf@1.13.5': - optional: true - - '@swc/core-linux-arm64-gnu@1.13.5': - optional: true - - '@swc/core-linux-arm64-musl@1.13.5': - optional: true - - '@swc/core-linux-x64-gnu@1.13.5': - optional: true - - '@swc/core-linux-x64-musl@1.13.5': - optional: true - - '@swc/core-win32-arm64-msvc@1.13.5': - optional: true - - '@swc/core-win32-ia32-msvc@1.13.5': - optional: true - - '@swc/core-win32-x64-msvc@1.13.5': - optional: true - - '@swc/core@1.13.5': - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.24 - optionalDependencies: - '@swc/core-darwin-arm64': 1.13.5 - '@swc/core-darwin-x64': 1.13.5 - '@swc/core-linux-arm-gnueabihf': 1.13.5 - '@swc/core-linux-arm64-gnu': 1.13.5 - '@swc/core-linux-arm64-musl': 1.13.5 - '@swc/core-linux-x64-gnu': 1.13.5 - '@swc/core-linux-x64-musl': 1.13.5 - '@swc/core-win32-arm64-msvc': 1.13.5 - '@swc/core-win32-ia32-msvc': 1.13.5 - '@swc/core-win32-x64-msvc': 1.13.5 - optional: true - - '@swc/counter@0.1.3': - optional: true - - '@swc/types@0.1.24': + '@tybys/wasm-util@0.10.0': dependencies: - '@swc/counter': 0.1.3 + tslib: 2.8.1 optional: true - '@tsconfig/node10@1.0.11': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - - '@tybys/wasm-util@0.10.0': + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 optional: true @@ -4586,15 +4933,15 @@ snapshots: '@types/yoga-layout@1.9.2': {} - '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) + '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.43.0 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -4603,14 +4950,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2)': + '@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)': dependencies: '@typescript-eslint/scope-manager': 8.43.0 '@typescript-eslint/types': 8.43.0 '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.43.0 debug: 4.4.1 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -4633,13 +4980,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/rule-tester@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2)': + '@typescript-eslint/rule-tester@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)': dependencies: - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) ajv: 6.12.6 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 semver: 7.7.2 @@ -4665,13 +5012,13 @@ snapshots: dependencies: typescript: 5.7.2 - '@typescript-eslint/type-utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)': dependencies: '@typescript-eslint/types': 8.43.0 '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) debug: 4.4.1 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: @@ -4712,24 +5059,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2)': + '@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.43.0 '@typescript-eslint/types': 8.43.0 '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.7.2) - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.49.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2)': + '@typescript-eslint/utils@8.49.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.49.0 '@typescript-eslint/types': 8.49.0 '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.7.2) - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -4818,18 +5165,18 @@ snapshots: std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@22.15.29)(@vitest/ui@3.2.4)(jiti@2.5.1)(yaml@2.7.0) + vitest: 3.2.4(@types/node@22.15.29)(@vitest/ui@3.2.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0) transitivePeerDependencies: - supports-color - '@vitest/eslint-plugin@1.5.2(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2)(vitest@3.2.4)': + '@vitest/eslint-plugin@1.5.2(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)(vitest@3.2.4)': dependencies: '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/utils': 8.49.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) - eslint: 9.35.0(jiti@2.5.1) + '@typescript-eslint/utils': 8.49.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + eslint: 9.35.0(jiti@2.6.1) optionalDependencies: typescript: 5.7.2 - vitest: 3.2.4(@types/node@22.15.29)(@vitest/ui@3.2.4)(jiti@2.5.1)(yaml@2.7.0) + vitest: 3.2.4(@types/node@22.15.29)(@vitest/ui@3.2.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0) transitivePeerDependencies: - supports-color @@ -4841,13 +5188,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.2.7(@types/node@22.15.29)(jiti@2.5.1)(yaml@2.7.0))': + '@vitest/mocker@3.2.4(vite@7.2.7(@types/node@22.15.29)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.7(@types/node@22.15.29)(jiti@2.5.1)(yaml@2.7.0) + vite: 7.2.7(@types/node@22.15.29)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -4878,7 +5225,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@22.15.29)(@vitest/ui@3.2.4)(jiti@2.5.1)(yaml@2.7.0) + vitest: 3.2.4(@types/node@22.15.29)(@vitest/ui@3.2.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0) '@vitest/utils@3.2.4': dependencies: @@ -4895,12 +5242,6 @@ snapshots: dependencies: acorn: 8.15.0 - acorn-walk@8.3.4: - dependencies: - acorn: 8.14.0 - - acorn@8.14.0: {} - acorn@8.15.0: {} agent-base@7.1.4: {} @@ -4956,9 +5297,9 @@ snapshots: ansi-styles@6.2.3: {} - any-promise@1.3.0: {} + ansis@4.2.0: {} - arg@4.1.3: {} + any-promise@1.3.0: {} argparse@2.0.1: {} @@ -4977,7 +5318,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 is-string: 1.1.1 @@ -4989,7 +5330,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -4999,7 +5340,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 optional: true @@ -5007,7 +5348,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 optional: true @@ -5016,7 +5357,7 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -5024,6 +5365,11 @@ snapshots: assertion-error@2.0.1: {} + ast-kit@2.2.0: + dependencies: + '@babel/parser': 7.28.5 + pathe: 2.0.3 + ast-v8-to-istanbul@0.3.8: dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -5046,6 +5392,8 @@ snapshots: before-after-hook@4.0.0: {} + birpc@3.0.0: {} + bottleneck@2.19.5: {} brace-expansion@1.1.12: @@ -5195,7 +5543,7 @@ snapshots: commander@13.1.0: {} - commander@14.0.0: {} + commander@14.0.2: {} comment-parser@1.4.1: {} @@ -5253,7 +5601,7 @@ snapshots: dependencies: '@types/node': 22.15.29 cosmiconfig: 9.0.0(typescript@5.7.2) - jiti: 2.5.1 + jiti: 2.6.1 typescript: 5.7.2 cosmiconfig@9.0.0(typescript@5.7.2): @@ -5265,8 +5613,6 @@ snapshots: optionalDependencies: typescript: 5.7.2 - create-require@1.1.1: {} - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -5339,24 +5685,10 @@ snapshots: object-keys: 1.1.1 optional: true - del-cli@6.0.0: - dependencies: - del: 8.0.0 - meow: 13.2.0 - - del@8.0.0: - dependencies: - globby: 14.0.2 - is-glob: 4.0.3 - is-path-cwd: 3.0.0 - is-path-inside: 4.0.0 - p-map: 7.0.2 - slash: 5.1.0 + defu@6.1.4: {} diff-sequences@29.6.3: {} - diff@4.0.2: {} - dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -5374,6 +5706,8 @@ snapshots: dependencies: type-fest: 4.41.0 + dts-resolver@2.1.3: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -5387,10 +5721,10 @@ snapshots: eastasianwidth@0.2.0: {} - editorconfig@2.0.1: + editorconfig@3.0.1: dependencies: '@one-ini/wasm': 0.2.0 - commander: 13.1.0 + commander: 14.0.2 minimatch: 10.0.1 semver: 7.7.2 @@ -5402,6 +5736,8 @@ snapshots: emojilib@2.4.0: {} + empathic@2.0.0: {} + env-ci@11.2.0: dependencies: execa: 8.0.1 @@ -5419,7 +5755,7 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.24.0: + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -5539,6 +5875,36 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 + esbuild@0.27.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.1 + '@esbuild/android-arm': 0.27.1 + '@esbuild/android-arm64': 0.27.1 + '@esbuild/android-x64': 0.27.1 + '@esbuild/darwin-arm64': 0.27.1 + '@esbuild/darwin-x64': 0.27.1 + '@esbuild/freebsd-arm64': 0.27.1 + '@esbuild/freebsd-x64': 0.27.1 + '@esbuild/linux-arm': 0.27.1 + '@esbuild/linux-arm64': 0.27.1 + '@esbuild/linux-ia32': 0.27.1 + '@esbuild/linux-loong64': 0.27.1 + '@esbuild/linux-mips64el': 0.27.1 + '@esbuild/linux-ppc64': 0.27.1 + '@esbuild/linux-riscv64': 0.27.1 + '@esbuild/linux-s390x': 0.27.1 + '@esbuild/linux-x64': 0.27.1 + '@esbuild/netbsd-arm64': 0.27.1 + '@esbuild/netbsd-x64': 0.27.1 + '@esbuild/openbsd-arm64': 0.27.1 + '@esbuild/openbsd-x64': 0.27.1 + '@esbuild/openharmony-arm64': 0.27.1 + '@esbuild/sunos-x64': 0.27.1 + '@esbuild/win32-arm64': 0.27.1 + '@esbuild/win32-ia32': 0.27.1 + '@esbuild/win32-x64': 0.27.1 + optional: true + escalade@3.2.0: {} escape-string-regexp@1.0.5: {} @@ -5549,26 +5915,28 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@10.1.8(eslint@9.35.0(jiti@2.5.1)): + eslint-config-prettier@10.1.8(eslint@9.35.0(jiti@2.6.1)): dependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) - eslint-doc-generator@2.2.2(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2): + eslint-doc-generator@2.4.0(eslint@9.35.0(jiti@2.6.1))(prettier@3.6.2)(typescript@5.7.2): dependencies: - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) ajv: 8.17.1 change-case: 5.4.4 - commander: 14.0.0 + commander: 14.0.2 cosmiconfig: 9.0.0(typescript@5.7.2) deepmerge: 4.3.1 dot-prop: 9.0.0 - editorconfig: 2.0.1 - eslint: 9.35.0(jiti@2.5.1) + editorconfig: 3.0.1 + eslint: 9.35.0(jiti@2.6.1) jest-diff: 29.7.0 json-schema: 0.4.0 json-schema-traverse: 1.0.0 markdown-table: 3.0.4 type-fest: 4.41.0 + optionalDependencies: + prettier: 3.6.2 transitivePeerDependencies: - supports-color - typescript @@ -5589,10 +5957,10 @@ snapshots: - supports-color optional: true - eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.5.1)))(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)): + eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.6.1)): dependencies: debug: 4.4.1 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 @@ -5600,35 +5968,35 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.5.1)) - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1)) + eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.5.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) - eslint: 9.35.0(jiti@2.5.1) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + eslint: 9.35.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.5.1)))(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color optional: true - eslint-plugin-es@3.0.1(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-es@3.0.1(eslint@9.35.0(jiti@2.6.1)): dependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)): dependencies: '@typescript-eslint/types': 8.43.0 comment-parser: 1.4.1 debug: 4.4.1 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) is-glob: 4.0.3 minimatch: 10.0.1 @@ -5636,12 +6004,12 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -5650,9 +6018,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.5.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -5664,42 +6032,42 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color optional: true - eslint-plugin-node@11.1.0(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-node@11.1.0(eslint@9.35.0(jiti@2.6.1)): dependencies: - eslint: 9.35.0(jiti@2.5.1) - eslint-plugin-es: 3.0.1(eslint@9.35.0(jiti@2.5.1)) + eslint: 9.35.0(jiti@2.6.1) + eslint-plugin-es: 3.0.1(eslint@9.35.0(jiti@2.6.1)) eslint-utils: 2.1.0 ignore: 5.3.2 minimatch: 3.1.2 resolve: 1.22.8 semver: 6.3.1 - eslint-plugin-promise@7.2.1(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-promise@7.2.1(eslint@9.35.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.35.0(jiti@2.5.1)) - eslint: 9.35.0(jiti@2.5.1) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.35.0(jiti@2.6.1)) + eslint: 9.35.0(jiti@2.6.1) - eslint-remote-tester-repositories@1.0.1: {} + eslint-remote-tester-repositories@2.0.2: {} - eslint-remote-tester@3.0.1(eslint@9.35.0(jiti@2.5.1))(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.7.2)): + eslint-remote-tester@4.0.3(eslint@9.35.0(jiti@2.6.1))(jiti@2.6.1): dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 JSONStream: 1.3.5 chalk: 4.1.2 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.6.1) ink: 3.2.0(react@17.0.2) object-hash: 3.0.0 react: 17.0.2 - simple-git: 3.27.0 + simple-git: 3.30.0 optionalDependencies: - ts-node: 10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.7.2) + jiti: 2.6.1 transitivePeerDependencies: - '@types/react' - bufferutil @@ -5721,9 +6089,9 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.35.0(jiti@2.5.1): + eslint@9.35.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.1 @@ -5759,7 +6127,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.5.1 + jiti: 2.6.1 transitivePeerDependencies: - supports-color @@ -5820,14 +6188,6 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -5989,6 +6349,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@4.13.0: + dependencies: + resolve-pkg-maps: 1.0.0 + git-log-parser@1.2.1: dependencies: argv-formatter: 1.0.0 @@ -6035,15 +6399,6 @@ snapshots: gopd: 1.2.0 optional: true - globby@14.0.2: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.2 - ignore: 5.3.2 - path-type: 5.0.0 - slash: 5.1.0 - unicorn-magic: 0.1.0 - gopd@1.2.0: optional: true @@ -6095,6 +6450,8 @@ snapshots: hook-std@4.0.0: {} + hookable@5.5.3: {} + hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 @@ -6143,6 +6500,8 @@ snapshots: import-meta-resolve@4.2.0: {} + import-without-cache@0.2.3: {} + imurmurhash@0.1.4: {} indent-string@4.0.0: {} @@ -6305,10 +6664,6 @@ snapshots: is-obj@2.0.0: {} - is-path-cwd@3.0.0: {} - - is-path-inside@4.0.0: {} - is-plain-obj@4.1.0: {} is-regex@1.2.1: @@ -6422,7 +6777,7 @@ snapshots: jest-get-type@29.6.3: {} - jiti@2.5.1: {} + jiti@2.6.1: {} js-tokens@4.0.0: {} @@ -6432,6 +6787,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsesc@3.1.0: {} + json-buffer@3.0.1: {} json-parse-better-errors@1.0.2: {} @@ -6584,8 +6941,6 @@ snapshots: dependencies: semver: 7.7.2 - make-error@1.3.6: {} - markdown-table@3.0.4: {} marked-terminal@7.3.0(marked@15.0.12): @@ -6641,6 +6996,8 @@ snapshots: minipass@7.1.2: {} + mri@1.2.0: {} + mrmime@2.0.1: {} ms@2.1.3: {} @@ -6717,7 +7074,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 optional: true @@ -6725,7 +7082,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 optional: true object.values@1.2.1: @@ -6736,6 +7093,8 @@ snapshots: es-object-atoms: 1.1.1 optional: true + obug@2.1.1: {} + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 @@ -6800,8 +7159,6 @@ snapshots: dependencies: p-limit: 4.0.0 - p-map@7.0.2: {} - p-map@7.0.4: {} p-reduce@3.0.0: {} @@ -6812,6 +7169,8 @@ snapshots: package-json-from-dist@1.0.1: {} + package-manager-detector@1.6.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -6865,8 +7224,6 @@ snapshots: path-type@4.0.0: {} - path-type@5.0.0: {} - pathe@2.0.3: {} pathval@2.0.1: {} @@ -6913,8 +7270,17 @@ snapshots: proto-list@1.2.4: {} + publint@0.3.16: + dependencies: + '@publint/pack': 0.1.2 + package-manager-detector: 1.6.0 + picocolors: 1.1.1 + sade: 1.8.1 + punycode@2.3.1: {} + quansync@1.0.0: {} + queue-microtask@1.2.3: {} rc@1.2.8: @@ -6926,7 +7292,7 @@ snapshots: react-devtools-core@4.28.5: dependencies: - shell-quote: 1.8.1 + shell-quote: 1.8.3 ws: 7.5.10 transitivePeerDependencies: - bufferutil @@ -6988,7 +7354,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -7049,6 +7415,42 @@ snapshots: rfdc@1.4.1: {} + rolldown-plugin-dts@0.18.3(rolldown@1.0.0-beta.53)(typescript@5.7.2): + dependencies: + '@babel/generator': 7.28.5 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + ast-kit: 2.2.0 + birpc: 3.0.0 + dts-resolver: 2.1.3 + get-tsconfig: 4.13.0 + magic-string: 0.30.21 + obug: 2.1.1 + rolldown: 1.0.0-beta.53 + optionalDependencies: + typescript: 5.7.2 + transitivePeerDependencies: + - oxc-resolver + + rolldown@1.0.0-beta.53: + dependencies: + '@oxc-project/types': 0.101.0 + '@rolldown/pluginutils': 1.0.0-beta.53 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-beta.53 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.53 + '@rolldown/binding-darwin-x64': 1.0.0-beta.53 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.53 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.53 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.53 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.53 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.53 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.53 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.53 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.53 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.53 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.53 + rollup@4.53.3: dependencies: '@types/estree': 1.0.8 @@ -7081,6 +7483,10 @@ snapshots: dependencies: queue-microtask: 1.2.3 + sade@1.8.1: + dependencies: + mri: 1.2.0 + safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 @@ -7155,6 +7561,8 @@ snapshots: semver@7.7.2: {} + semver@7.7.3: {} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -7186,7 +7594,7 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.1: {} + shell-quote@1.8.3: {} side-channel-list@1.0.0: dependencies: @@ -7232,11 +7640,11 @@ snapshots: figures: 2.0.0 pkg-conf: 2.1.0 - simple-git@3.27.0: + simple-git@3.30.0: dependencies: '@kwsites/file-exists': 1.1.1 '@kwsites/promise-deferred': 1.1.1 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -7250,8 +7658,6 @@ snapshots: dependencies: unicode-emoji-modifier-base: 1.0.0 - slash@5.1.0: {} - slice-ansi@3.0.0: dependencies: ansi-styles: 4.3.0 @@ -7341,7 +7747,7 @@ snapshots: call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 optional: true @@ -7456,6 +7862,8 @@ snapshots: tinyexec@1.0.1: {} + tinyexec@1.0.2: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -7475,29 +7883,11 @@ snapshots: traverse@0.6.8: {} - ts-api-utils@2.1.0(typescript@5.7.2): - dependencies: - typescript: 5.7.2 + tree-kill@1.2.2: {} - ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.7.2): + ts-api-utils@2.1.0(typescript@5.7.2): dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.15.29 - acorn: 8.14.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 typescript: 5.7.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.13.5 tsconfig-paths@3.15.0: dependencies: @@ -7507,9 +7897,44 @@ snapshots: strip-bom: 3.0.0 optional: true + tsdown@0.17.3(publint@0.3.16)(typescript@5.7.2): + dependencies: + ansis: 4.2.0 + cac: 6.7.14 + defu: 6.1.4 + empathic: 2.0.0 + hookable: 5.5.3 + import-without-cache: 0.2.3 + obug: 2.1.1 + rolldown: 1.0.0-beta.53 + rolldown-plugin-dts: 0.18.3(rolldown@1.0.0-beta.53)(typescript@5.7.2) + semver: 7.7.3 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + unconfig-core: 7.4.2 + unrun: 0.2.19 + optionalDependencies: + publint: 0.3.16 + typescript: 5.7.2 + transitivePeerDependencies: + - '@ts-macro/tsc' + - '@typescript/native-preview' + - oxc-resolver + - synckit + - vue-tsc + tslib@2.8.1: optional: true + tsx@4.21.0: + dependencies: + esbuild: 0.27.1 + get-tsconfig: 4.13.0 + optionalDependencies: + fsevents: 2.3.3 + optional: true + tunnel@0.0.6: {} type-check@0.4.0: @@ -7567,13 +7992,13 @@ snapshots: reflect.getprototypeof: 1.0.10 optional: true - typescript-eslint@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2): + typescript-eslint@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.7.2) - eslint: 9.35.0(jiti@2.5.1) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + eslint: 9.35.0(jiti@2.6.1) typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -7591,6 +8016,11 @@ snapshots: which-boxed-primitive: 1.1.1 optional: true + unconfig-core@7.4.2: + dependencies: + '@quansync/fs': 1.0.0 + quansync: 1.0.0 + undici-types@6.21.0: {} undici@5.29.0: @@ -7637,6 +8067,10 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + unrun@0.2.19: + dependencies: + rolldown: 1.0.0-beta.53 + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -7645,20 +8079,18 @@ snapshots: util-deprecate@1.0.2: {} - v8-compile-cache-lib@3.0.1: {} - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-node@3.2.4(@types/node@22.15.29)(jiti@2.5.1)(yaml@2.7.0): + vite-node@3.2.4(@types/node@22.15.29)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.2.7(@types/node@22.15.29)(jiti@2.5.1)(yaml@2.7.0) + vite: 7.2.7(@types/node@22.15.29)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0) transitivePeerDependencies: - '@types/node' - jiti @@ -7673,7 +8105,7 @@ snapshots: - tsx - yaml - vite@7.2.7(@types/node@22.15.29)(jiti@2.5.1)(yaml@2.7.0): + vite@7.2.7(@types/node@22.15.29)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -7684,14 +8116,15 @@ snapshots: optionalDependencies: '@types/node': 22.15.29 fsevents: 2.3.3 - jiti: 2.5.1 + jiti: 2.6.1 + tsx: 4.21.0 yaml: 2.7.0 - vitest@3.2.4(@types/node@22.15.29)(@vitest/ui@3.2.4)(jiti@2.5.1)(yaml@2.7.0): + vitest@3.2.4(@types/node@22.15.29)(@vitest/ui@3.2.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.2.7(@types/node@22.15.29)(jiti@2.5.1)(yaml@2.7.0)) + '@vitest/mocker': 3.2.4(vite@7.2.7(@types/node@22.15.29)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -7709,8 +8142,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.2.7(@types/node@22.15.29)(jiti@2.5.1)(yaml@2.7.0) - vite-node: 3.2.4(@types/node@22.15.29)(jiti@2.5.1)(yaml@2.7.0) + vite: 7.2.7(@types/node@22.15.29)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0) + vite-node: 3.2.4(@types/node@22.15.29)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.15.29 @@ -7866,8 +8299,6 @@ snapshots: y18n: 5.0.8 yargs-parser: 22.0.0 - yn@3.1.1: {} - yocto-queue@0.1.0: {} yocto-queue@1.2.1: {} diff --git a/.prettierrc.js b/prettier.config.js similarity index 76% rename from .prettierrc.js rename to prettier.config.js index d82995ee..1b10e9b3 100644 --- a/.prettierrc.js +++ b/prettier.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { trailingComma: 'es5', singleQuote: true, useTabs: true, diff --git a/release.config.js b/release.config.js new file mode 100644 index 00000000..a8220904 --- /dev/null +++ b/release.config.js @@ -0,0 +1,19 @@ +/** + * @type {import('semantic-release').GlobalConfig} + */ +export default { + branches: [ + '+([0-9])?(.{+([0-9]),x}).x', + 'main', + 'next', + 'next-major', + { + name: 'beta', + prerelease: true, + }, + { + name: 'alpha', + prerelease: true, + }, + ], +}; diff --git a/lib/configs/angular.ts b/src/configs/angular.ts similarity index 94% rename from lib/configs/angular.ts rename to src/configs/angular.ts index 841bb408..2cb7b9bc 100644 --- a/lib/configs/angular.ts +++ b/src/configs/angular.ts @@ -4,8 +4,7 @@ import type { Linter } from 'eslint'; -export = { - plugins: ['testing-library'], +export default { rules: { 'testing-library/await-async-events': [ 'error', @@ -34,4 +33,4 @@ export = { 'testing-library/prefer-screen-queries': 'error', 'testing-library/render-result-naming-convention': 'error', }, -} satisfies Linter.LegacyConfig; +} satisfies { rules: Linter.RulesRecord }; diff --git a/lib/configs/dom.ts b/src/configs/dom.ts similarity index 93% rename from lib/configs/dom.ts rename to src/configs/dom.ts index b8f2fdfc..8304c961 100644 --- a/lib/configs/dom.ts +++ b/src/configs/dom.ts @@ -4,8 +4,7 @@ import type { Linter } from 'eslint'; -export = { - plugins: ['testing-library'], +export default { rules: { 'testing-library/await-async-events': [ 'error', @@ -29,4 +28,4 @@ export = { 'testing-library/prefer-query-by-disappearance': 'error', 'testing-library/prefer-screen-queries': 'error', }, -} satisfies Linter.LegacyConfig; +} satisfies { rules: Linter.RulesRecord }; diff --git a/lib/configs/index.ts b/src/configs/index.ts similarity index 67% rename from lib/configs/index.ts rename to src/configs/index.ts index 5473a53d..ce11f06e 100644 --- a/lib/configs/index.ts +++ b/src/configs/index.ts @@ -8,13 +8,17 @@ import vue from './vue'; import type { SupportedTestingFramework } from '../utils'; import type { Linter } from 'eslint'; -const legacyConfigs: Record = { +type BaseConfig = { + rules: Linter.RulesRecord; +}; + +export const baseConfigs = { dom, angular, react, vue, svelte, marko, +} as const satisfies { + [TKey in SupportedTestingFramework]: BaseConfig; }; - -export { legacyConfigs }; diff --git a/lib/configs/marko.ts b/src/configs/marko.ts similarity index 94% rename from lib/configs/marko.ts rename to src/configs/marko.ts index ea889f1f..9f09d965 100644 --- a/lib/configs/marko.ts +++ b/src/configs/marko.ts @@ -4,8 +4,7 @@ import type { Linter } from 'eslint'; -export = { - plugins: ['testing-library'], +export default { rules: { 'testing-library/await-async-events': [ 'error', @@ -31,4 +30,4 @@ export = { 'testing-library/prefer-screen-queries': 'error', 'testing-library/render-result-naming-convention': 'error', }, -} satisfies Linter.LegacyConfig; +} satisfies { rules: Linter.RulesRecord }; diff --git a/lib/configs/react.ts b/src/configs/react.ts similarity index 94% rename from lib/configs/react.ts rename to src/configs/react.ts index e9d5ea6d..56aa05a5 100644 --- a/lib/configs/react.ts +++ b/src/configs/react.ts @@ -4,8 +4,7 @@ import type { Linter } from 'eslint'; -export = { - plugins: ['testing-library'], +export default { rules: { 'testing-library/await-async-events': [ 'error', @@ -36,4 +35,4 @@ export = { 'testing-library/prefer-screen-queries': 'error', 'testing-library/render-result-naming-convention': 'error', }, -} satisfies Linter.LegacyConfig; +} satisfies { rules: Linter.RulesRecord }; diff --git a/lib/configs/svelte.ts b/src/configs/svelte.ts similarity index 94% rename from lib/configs/svelte.ts rename to src/configs/svelte.ts index 2781514d..3fa2262e 100644 --- a/lib/configs/svelte.ts +++ b/src/configs/svelte.ts @@ -4,8 +4,7 @@ import type { Linter } from 'eslint'; -export = { - plugins: ['testing-library'], +export default { rules: { 'testing-library/await-async-events': [ 'error', @@ -31,4 +30,4 @@ export = { 'testing-library/prefer-screen-queries': 'error', 'testing-library/render-result-naming-convention': 'error', }, -} satisfies Linter.LegacyConfig; +} satisfies { rules: Linter.RulesRecord }; diff --git a/lib/configs/vue.ts b/src/configs/vue.ts similarity index 94% rename from lib/configs/vue.ts rename to src/configs/vue.ts index e91b68ac..4b22eaf7 100644 --- a/lib/configs/vue.ts +++ b/src/configs/vue.ts @@ -4,8 +4,7 @@ import type { Linter } from 'eslint'; -export = { - plugins: ['testing-library'], +export default { rules: { 'testing-library/await-async-events': [ 'error', @@ -31,4 +30,4 @@ export = { 'testing-library/prefer-screen-queries': 'error', 'testing-library/render-result-naming-convention': 'error', }, -} satisfies Linter.LegacyConfig; +} satisfies { rules: Linter.RulesRecord }; diff --git a/lib/create-testing-library-rule/detect-testing-library-utils.ts b/src/create-testing-library-rule/detect-testing-library-utils.ts similarity index 100% rename from lib/create-testing-library-rule/detect-testing-library-utils.ts rename to src/create-testing-library-rule/detect-testing-library-utils.ts diff --git a/lib/create-testing-library-rule/index.ts b/src/create-testing-library-rule/index.ts similarity index 100% rename from lib/create-testing-library-rule/index.ts rename to src/create-testing-library-rule/index.ts diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 00000000..7b96d293 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,70 @@ +import { baseConfigs } from './configs'; +import { rules } from './rules'; +import { + name as packageName, + version as packageVersion, +} from '../package.json'; + +import type { SupportedTestingFramework } from './utils'; +import type { ESLint, Rule, Linter } from 'eslint'; + +type ClassicConfigs = Record; +type FlatConfigs = Record<`flat/${SupportedTestingFramework}`, Linter.Config>; +type PluginConfigs = ClassicConfigs & FlatConfigs; + +const PLUGIN_NAME = 'testing-library' as const; + +function createPluginFlatConfigs() { + return Object.entries(baseConfigs).reduce( + (acc, [configName, configRecord]) => { + const flatName = `flat/${configName}`; + + return { + ...acc, + [flatName]: { + name: `${PLUGIN_NAME}/${configName}`, + plugins: { + get 'testing-library'(): ESLint.Plugin { + return testingLibraryPlugin; + }, + }, + rules: configRecord.rules, + }, + }; + }, + {} + ) as { + [TKey in SupportedTestingFramework as `flat/${SupportedTestingFramework}`]: Linter.Config; + }; +} + +function createPluginLegacyConfigs() { + return Object.entries(baseConfigs).reduce( + (acc, [configName, configRecord]) => { + return { + ...acc, + [configName]: { + plugins: [PLUGIN_NAME], + rules: configRecord.rules, + }, + }; + }, + {} + ) as { + [TLegacyKey in SupportedTestingFramework]: Linter.LegacyConfig; + }; +} + +const testingLibraryPlugin = { + meta: { + name: packageName, + version: packageVersion, + }, + rules: rules as unknown as Record, + configs: { + ...createPluginFlatConfigs(), + ...createPluginLegacyConfigs(), + } satisfies PluginConfigs, +} as const satisfies ESLint.Plugin; + +export default testingLibraryPlugin; diff --git a/lib/node-utils/accessors.ts b/src/node-utils/accessors.ts similarity index 100% rename from lib/node-utils/accessors.ts rename to src/node-utils/accessors.ts diff --git a/lib/node-utils/index.ts b/src/node-utils/index.ts similarity index 100% rename from lib/node-utils/index.ts rename to src/node-utils/index.ts diff --git a/src/node-utils/is-node-of-type.ts b/src/node-utils/is-node-of-type.ts new file mode 100644 index 00000000..62b04913 --- /dev/null +++ b/src/node-utils/is-node-of-type.ts @@ -0,0 +1,87 @@ +import { AST_NODE_TYPES, ASTUtils } from '@typescript-eslint/utils'; + +import type { TSESTree } from '@typescript-eslint/utils'; + +// Explicit type for all node-type guards to avoid leaking non-portable inferred types +type NodeGuard = ( + node: TSESTree.Node | null | undefined +) => node is T; + +export const isArrayExpression: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.ArrayExpression); + +export const isArrowFunctionExpression: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.ArrowFunctionExpression); + +export const isBlockStatement: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.BlockStatement); + +export const isCallExpression: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.CallExpression); + +export const isExpressionStatement: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.ExpressionStatement); + +export const isVariableDeclaration: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.VariableDeclaration); + +export const isAssignmentExpression: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.AssignmentExpression); + +export const isChainExpression: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.ChainExpression); + +export const isSequenceExpression: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.SequenceExpression); + +export const isImportDeclaration: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.ImportDeclaration); + +export const isImportDefaultSpecifier: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.ImportDefaultSpecifier); + +export const isTSImportEqualsDeclaration: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.TSImportEqualsDeclaration); + +export const isImportExpression: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.ImportExpression); + +export const isImportNamespaceSpecifier: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.ImportNamespaceSpecifier); + +export const isImportSpecifier: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.ImportSpecifier); + +export const isJSXAttribute: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.JSXAttribute); + +export const isLiteral: NodeGuard = ASTUtils.isNodeOfType( + AST_NODE_TYPES.Literal +); +export const isTemplateLiteral: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.TemplateLiteral); + +export const isMemberExpression: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.MemberExpression); + +export const isNewExpression: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.NewExpression); + +export const isObjectExpression: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.ObjectExpression); + +export const isObjectPattern: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.ObjectPattern); + +export const isProperty: NodeGuard = ASTUtils.isNodeOfType( + AST_NODE_TYPES.Property +); + +export const isReturnStatement: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.ReturnStatement); + +export const isFunctionExpression: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.FunctionExpression); + +export const isFunctionDeclaration: NodeGuard = + ASTUtils.isNodeOfType(AST_NODE_TYPES.FunctionDeclaration); diff --git a/lib/rules/await-async-events.ts b/src/rules/await-async-events.ts similarity index 100% rename from lib/rules/await-async-events.ts rename to src/rules/await-async-events.ts diff --git a/lib/rules/await-async-queries.ts b/src/rules/await-async-queries.ts similarity index 100% rename from lib/rules/await-async-queries.ts rename to src/rules/await-async-queries.ts diff --git a/lib/rules/await-async-utils.ts b/src/rules/await-async-utils.ts similarity index 100% rename from lib/rules/await-async-utils.ts rename to src/rules/await-async-utils.ts diff --git a/lib/rules/consistent-data-testid.ts b/src/rules/consistent-data-testid.ts similarity index 100% rename from lib/rules/consistent-data-testid.ts rename to src/rules/consistent-data-testid.ts diff --git a/lib/rules/index.ts b/src/rules/index.ts similarity index 98% rename from lib/rules/index.ts rename to src/rules/index.ts index 8dac8636..06a671c4 100644 --- a/lib/rules/index.ts +++ b/src/rules/index.ts @@ -28,7 +28,7 @@ import preferUserEvent from './prefer-user-event'; import preferUserEventSetup from './prefer-user-event-setup'; import renderResultNamingConvention from './render-result-naming-convention'; -export default { +export const rules = { 'await-async-events': awaitAsyncEvents, 'await-async-queries': awaitAsyncQueries, 'await-async-utils': awaitAsyncUtils, @@ -58,4 +58,4 @@ export default { 'prefer-user-event': preferUserEvent, 'prefer-user-event-setup': preferUserEventSetup, 'render-result-naming-convention': renderResultNamingConvention, -}; +} as const; diff --git a/lib/rules/no-await-sync-events.ts b/src/rules/no-await-sync-events.ts similarity index 100% rename from lib/rules/no-await-sync-events.ts rename to src/rules/no-await-sync-events.ts diff --git a/lib/rules/no-await-sync-queries.ts b/src/rules/no-await-sync-queries.ts similarity index 100% rename from lib/rules/no-await-sync-queries.ts rename to src/rules/no-await-sync-queries.ts diff --git a/lib/rules/no-container.ts b/src/rules/no-container.ts similarity index 100% rename from lib/rules/no-container.ts rename to src/rules/no-container.ts diff --git a/lib/rules/no-debugging-utils.ts b/src/rules/no-debugging-utils.ts similarity index 100% rename from lib/rules/no-debugging-utils.ts rename to src/rules/no-debugging-utils.ts diff --git a/lib/rules/no-dom-import.ts b/src/rules/no-dom-import.ts similarity index 100% rename from lib/rules/no-dom-import.ts rename to src/rules/no-dom-import.ts diff --git a/lib/rules/no-global-regexp-flag-in-query.ts b/src/rules/no-global-regexp-flag-in-query.ts similarity index 100% rename from lib/rules/no-global-regexp-flag-in-query.ts rename to src/rules/no-global-regexp-flag-in-query.ts diff --git a/lib/rules/no-manual-cleanup.ts b/src/rules/no-manual-cleanup.ts similarity index 100% rename from lib/rules/no-manual-cleanup.ts rename to src/rules/no-manual-cleanup.ts diff --git a/lib/rules/no-node-access.ts b/src/rules/no-node-access.ts similarity index 100% rename from lib/rules/no-node-access.ts rename to src/rules/no-node-access.ts diff --git a/lib/rules/no-promise-in-fire-event.ts b/src/rules/no-promise-in-fire-event.ts similarity index 100% rename from lib/rules/no-promise-in-fire-event.ts rename to src/rules/no-promise-in-fire-event.ts diff --git a/lib/rules/no-render-in-lifecycle.ts b/src/rules/no-render-in-lifecycle.ts similarity index 100% rename from lib/rules/no-render-in-lifecycle.ts rename to src/rules/no-render-in-lifecycle.ts diff --git a/lib/rules/no-test-id-queries.ts b/src/rules/no-test-id-queries.ts similarity index 100% rename from lib/rules/no-test-id-queries.ts rename to src/rules/no-test-id-queries.ts diff --git a/lib/rules/no-unnecessary-act.ts b/src/rules/no-unnecessary-act.ts similarity index 100% rename from lib/rules/no-unnecessary-act.ts rename to src/rules/no-unnecessary-act.ts diff --git a/lib/rules/no-wait-for-multiple-assertions.ts b/src/rules/no-wait-for-multiple-assertions.ts similarity index 100% rename from lib/rules/no-wait-for-multiple-assertions.ts rename to src/rules/no-wait-for-multiple-assertions.ts diff --git a/lib/rules/no-wait-for-side-effects.ts b/src/rules/no-wait-for-side-effects.ts similarity index 100% rename from lib/rules/no-wait-for-side-effects.ts rename to src/rules/no-wait-for-side-effects.ts diff --git a/lib/rules/no-wait-for-snapshot.ts b/src/rules/no-wait-for-snapshot.ts similarity index 100% rename from lib/rules/no-wait-for-snapshot.ts rename to src/rules/no-wait-for-snapshot.ts diff --git a/lib/rules/prefer-explicit-assert.ts b/src/rules/prefer-explicit-assert.ts similarity index 100% rename from lib/rules/prefer-explicit-assert.ts rename to src/rules/prefer-explicit-assert.ts diff --git a/lib/rules/prefer-find-by.ts b/src/rules/prefer-find-by.ts similarity index 100% rename from lib/rules/prefer-find-by.ts rename to src/rules/prefer-find-by.ts diff --git a/lib/rules/prefer-implicit-assert.ts b/src/rules/prefer-implicit-assert.ts similarity index 100% rename from lib/rules/prefer-implicit-assert.ts rename to src/rules/prefer-implicit-assert.ts diff --git a/lib/rules/prefer-presence-queries.ts b/src/rules/prefer-presence-queries.ts similarity index 100% rename from lib/rules/prefer-presence-queries.ts rename to src/rules/prefer-presence-queries.ts diff --git a/lib/rules/prefer-query-by-disappearance.ts b/src/rules/prefer-query-by-disappearance.ts similarity index 100% rename from lib/rules/prefer-query-by-disappearance.ts rename to src/rules/prefer-query-by-disappearance.ts diff --git a/lib/rules/prefer-query-matchers.ts b/src/rules/prefer-query-matchers.ts similarity index 100% rename from lib/rules/prefer-query-matchers.ts rename to src/rules/prefer-query-matchers.ts diff --git a/lib/rules/prefer-screen-queries.ts b/src/rules/prefer-screen-queries.ts similarity index 100% rename from lib/rules/prefer-screen-queries.ts rename to src/rules/prefer-screen-queries.ts diff --git a/lib/rules/prefer-user-event-setup.ts b/src/rules/prefer-user-event-setup.ts similarity index 100% rename from lib/rules/prefer-user-event-setup.ts rename to src/rules/prefer-user-event-setup.ts diff --git a/lib/rules/prefer-user-event.ts b/src/rules/prefer-user-event.ts similarity index 100% rename from lib/rules/prefer-user-event.ts rename to src/rules/prefer-user-event.ts diff --git a/lib/rules/render-result-naming-convention.ts b/src/rules/render-result-naming-convention.ts similarity index 100% rename from lib/rules/render-result-naming-convention.ts rename to src/rules/render-result-naming-convention.ts diff --git a/lib/utils/add-async-to-function-fix.ts b/src/utils/add-async-to-function-fix.ts similarity index 100% rename from lib/utils/add-async-to-function-fix.ts rename to src/utils/add-async-to-function-fix.ts diff --git a/lib/utils/compat.ts b/src/utils/compat.ts similarity index 100% rename from lib/utils/compat.ts rename to src/utils/compat.ts diff --git a/lib/utils/index.ts b/src/utils/index.ts similarity index 100% rename from lib/utils/index.ts rename to src/utils/index.ts diff --git a/lib/utils/is-testing-library-module.ts b/src/utils/is-testing-library-module.ts similarity index 100% rename from lib/utils/is-testing-library-module.ts rename to src/utils/is-testing-library-module.ts diff --git a/lib/utils/resolve-to-testing-library-fn.ts b/src/utils/resolve-to-testing-library-fn.ts similarity index 100% rename from lib/utils/resolve-to-testing-library-fn.ts rename to src/utils/resolve-to-testing-library-fn.ts diff --git a/lib/utils/types.ts b/src/utils/types.ts similarity index 99% rename from lib/utils/types.ts rename to src/utils/types.ts index c11335b2..d37ef85f 100644 --- a/lib/utils/types.ts +++ b/src/utils/types.ts @@ -34,5 +34,6 @@ export const SUPPORTED_TESTING_FRAMEWORKS = [ 'svelte', 'marko', ] as const; + export type SupportedTestingFramework = (typeof SUPPORTED_TESTING_FRAMEWORKS)[number]; diff --git a/tests/create-testing-library-rule.test.ts b/tests/create-testing-library-rule.test.ts index c6e72252..cde8f1f0 100644 --- a/tests/create-testing-library-rule.test.ts +++ b/tests/create-testing-library-rule.test.ts @@ -1,5 +1,5 @@ import rule, { RULE_NAME } from './fake-rule'; -import { createRuleTester } from './lib/test-utils'; +import { createRuleTester } from './test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/eslint-remote-tester.config.js b/tests/eslint-remote-tester.config.js deleted file mode 100644 index 5c27cf21..00000000 --- a/tests/eslint-remote-tester.config.js +++ /dev/null @@ -1,44 +0,0 @@ -const { rules } = require('eslint-plugin-testing-library'); -const { - getRepositories, - getPathIgnorePattern, -} = require('eslint-remote-tester-repositories'); - -module.exports = { - repositories: getRepositories({ randomize: true }), - pathIgnorePattern: getPathIgnorePattern(), - extensions: ['js', 'jsx', 'ts', 'tsx'], - concurrentTasks: 3, - cache: false, - logLevel: 'info', - eslintrc: { - root: true, - env: { - es6: true, - }, - parser: '@typescript-eslint/parser', - parserOptions: { - ecmaVersion: 2020, - sourceType: 'module', - ecmaFeatures: { - jsx: true, - }, - }, - plugins: ['testing-library'], - rules: { - ...Object.keys(rules).reduce( - (all, rule) => ({ - ...all, - [`testing-library/${rule}`]: 'error', - }), - {} - ), - - // Rules with required options without default values - 'testing-library/consistent-data-testid': [ - 'error', - { testIdPattern: '^{fileName}(__([A-Z]+[a-z]_?)+)_$' }, - ], - }, - }, -}; diff --git a/tests/fake-rule.ts b/tests/fake-rule.ts index e4c1e88e..868918e4 100644 --- a/tests/fake-rule.ts +++ b/tests/fake-rule.ts @@ -2,7 +2,7 @@ * @file Fake rule to be able to test createTestingLibraryRule and * detectTestingLibraryUtils properly */ -import { createTestingLibraryRule } from '../lib/create-testing-library-rule'; +import { createTestingLibraryRule } from '../src/create-testing-library-rule'; import type { TSESTree } from '@typescript-eslint/utils'; diff --git a/tests/index.test.ts b/tests/index.test.ts index dee5c035..9075aa9b 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -3,12 +3,12 @@ import { resolve } from 'node:path'; import { it, expect } from 'vitest'; -import plugin from '../lib'; +import plugin from '../src'; const ruleNames = Object.keys(plugin.rules); it('should export all existing rules', () => { - const rulesDirPath = resolve(__dirname, '../lib/rules'); + const rulesDirPath = resolve(__dirname, '../src/rules'); const rulesFiles = readdirSync(rulesDirPath) .filter((file) => file !== 'index.ts') @@ -32,7 +32,7 @@ it('should have a corresponding doc for each rule', () => { it('should have a corresponding test for each rule', () => { ruleNames.forEach((rule) => { - const testPath = resolve(__dirname, './lib/rules/', `${rule}.test.ts`); + const testPath = resolve(__dirname, './rules/', `${rule}.test.ts`); expect( existsSync(testPath), @@ -45,18 +45,18 @@ it('should export configs that refer to actual rules', () => { const allConfigs = plugin.configs; expect(Object.keys(allConfigs)).toEqual([ - 'dom', - 'angular', - 'react', - 'vue', - 'svelte', - 'marko', 'flat/dom', 'flat/angular', 'flat/react', 'flat/vue', 'flat/svelte', 'flat/marko', + 'dom', + 'angular', + 'react', + 'vue', + 'svelte', + 'marko', ]); const allConfigRules = Object.values(allConfigs) @@ -66,14 +66,13 @@ it('should export configs that refer to actual rules', () => { ...currentValue, ]); - allConfigRules.forEach((rule) => { - const ruleNamePrefix = 'testing-library/'; - const ruleName = rule.slice(ruleNamePrefix.length); + allConfigRules.forEach((configRuleName) => { + const ruleName = configRuleName.replace('testing-library/', ''); - expect(rule.startsWith(ruleNamePrefix)).toBe(true); + expect(configRuleName).toMatch(/^testing-library\/[a-z-]+$/); expect(ruleNames).toContain(ruleName); - const ruleFilePath = resolve(__dirname, '../lib/rules', `${ruleName}.ts`); + const ruleFilePath = resolve(__dirname, '../src/rules', `${ruleName}.ts`); expect(() => import(ruleFilePath)).not.toThrow(); }); diff --git a/tests/lib/rules/await-async-events.test.ts b/tests/rules/await-async-events.test.ts similarity index 99% rename from tests/lib/rules/await-async-events.test.ts rename to tests/rules/await-async-events.test.ts index 4690b008..a4092e67 100644 --- a/tests/lib/rules/await-async-events.test.ts +++ b/tests/rules/await-async-events.test.ts @@ -1,8 +1,8 @@ -import rule, { RULE_NAME } from '../../../lib/rules/await-async-events'; -import { USER_EVENT_METHODS } from '../../../lib/utils'; +import rule, { RULE_NAME } from '../../src/rules/await-async-events'; +import { USER_EVENT_METHODS } from '../../src/utils'; import { createRuleTester } from '../test-utils'; -import type { Options } from '../../../lib/rules/await-async-events'; +import type { Options } from '../../src/rules/await-async-events'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/await-async-queries.test.ts b/tests/rules/await-async-queries.test.ts similarity index 99% rename from tests/lib/rules/await-async-queries.test.ts rename to tests/rules/await-async-queries.test.ts index d7cb0d4f..084d9eec 100644 --- a/tests/lib/rules/await-async-queries.test.ts +++ b/tests/rules/await-async-queries.test.ts @@ -1,13 +1,13 @@ -import rule, { RULE_NAME } from '../../../lib/rules/await-async-queries'; +import rule, { RULE_NAME } from '../../src/rules/await-async-queries'; import { ASYNC_QUERIES_COMBINATIONS, ASYNC_QUERIES_VARIANTS, combineQueries, SYNC_QUERIES_COMBINATIONS, -} from '../../../lib/utils'; +} from '../../src/utils'; import { createRuleTester } from '../test-utils'; -import type { MessageIds } from '../../../lib/rules/await-async-queries'; +import type { MessageIds } from '../../src/rules/await-async-queries'; import type { InvalidTestCase, ValidTestCase, diff --git a/tests/lib/rules/await-async-utils.test.ts b/tests/rules/await-async-utils.test.ts similarity index 99% rename from tests/lib/rules/await-async-utils.test.ts rename to tests/rules/await-async-utils.test.ts index 884e83ec..a0348909 100644 --- a/tests/lib/rules/await-async-utils.test.ts +++ b/tests/rules/await-async-utils.test.ts @@ -1,8 +1,8 @@ -import rule, { RULE_NAME } from '../../../lib/rules/await-async-utils'; -import { ASYNC_UTILS } from '../../../lib/utils'; +import rule, { RULE_NAME } from '../../src/rules/await-async-utils'; +import { ASYNC_UTILS } from '../../src/utils'; import { createRuleTester } from '../test-utils'; -import type { MessageIds } from '../../../lib/rules/await-async-utils'; +import type { MessageIds } from '../../src/rules/await-async-utils'; import type { InvalidTestCase, ValidTestCase, diff --git a/tests/lib/rules/consistent-data-testid.test.ts b/tests/rules/consistent-data-testid.test.ts similarity index 98% rename from tests/lib/rules/consistent-data-testid.test.ts rename to tests/rules/consistent-data-testid.test.ts index 80e95fe6..fa9b7902 100644 --- a/tests/lib/rules/consistent-data-testid.test.ts +++ b/tests/rules/consistent-data-testid.test.ts @@ -1,10 +1,10 @@ -import rule, { RULE_NAME } from '../../../lib/rules/consistent-data-testid'; +import rule, { RULE_NAME } from '../../src/rules/consistent-data-testid'; import { createRuleTester } from '../test-utils'; import type { MessageIds, Options, -} from '../../../lib/rules/consistent-data-testid'; +} from '../../src/rules/consistent-data-testid'; import type { InvalidTestCase, ValidTestCase, diff --git a/tests/lib/rules/no-await-sync-events.test.ts b/tests/rules/no-await-sync-events.test.ts similarity index 99% rename from tests/lib/rules/no-await-sync-events.test.ts rename to tests/rules/no-await-sync-events.test.ts index da871acc..54026f5b 100644 --- a/tests/lib/rules/no-await-sync-events.test.ts +++ b/tests/rules/no-await-sync-events.test.ts @@ -1,4 +1,4 @@ -import rule, { RULE_NAME } from '../../../lib/rules/no-await-sync-events'; +import rule, { RULE_NAME } from '../../src/rules/no-await-sync-events'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/no-await-sync-queries.test.ts b/tests/rules/no-await-sync-queries.test.ts similarity index 97% rename from tests/lib/rules/no-await-sync-queries.test.ts rename to tests/rules/no-await-sync-queries.test.ts index 999f3262..698fe64b 100644 --- a/tests/lib/rules/no-await-sync-queries.test.ts +++ b/tests/rules/no-await-sync-queries.test.ts @@ -1,11 +1,11 @@ -import rule, { RULE_NAME } from '../../../lib/rules/no-await-sync-queries'; +import rule, { RULE_NAME } from '../../src/rules/no-await-sync-queries'; import { SYNC_QUERIES_COMBINATIONS, ASYNC_QUERIES_COMBINATIONS, -} from '../../../lib/utils'; +} from '../../src/utils'; import { createRuleTester } from '../test-utils'; -import type { MessageIds } from '../../../lib/rules/no-await-sync-queries'; +import type { MessageIds } from '../../src/rules/no-await-sync-queries'; import type { InvalidTestCase, ValidTestCase, diff --git a/tests/lib/rules/no-container.test.ts b/tests/rules/no-container.test.ts similarity index 98% rename from tests/lib/rules/no-container.test.ts rename to tests/rules/no-container.test.ts index 5f3596a6..31f83ffb 100644 --- a/tests/lib/rules/no-container.test.ts +++ b/tests/rules/no-container.test.ts @@ -1,4 +1,4 @@ -import rule, { RULE_NAME } from '../../../lib/rules/no-container'; +import rule, { RULE_NAME } from '../../src/rules/no-container'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/no-debugging-utils.test.ts b/tests/rules/no-debugging-utils.test.ts similarity index 99% rename from tests/lib/rules/no-debugging-utils.test.ts rename to tests/rules/no-debugging-utils.test.ts index 7d6f1045..eb21b452 100644 --- a/tests/lib/rules/no-debugging-utils.test.ts +++ b/tests/rules/no-debugging-utils.test.ts @@ -1,4 +1,4 @@ -import rule, { RULE_NAME } from '../../../lib/rules/no-debugging-utils'; +import rule, { RULE_NAME } from '../../src/rules/no-debugging-utils'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/no-dom-import.test.ts b/tests/rules/no-dom-import.test.ts similarity index 98% rename from tests/lib/rules/no-dom-import.test.ts rename to tests/rules/no-dom-import.test.ts index e5fbce0c..424cb1ac 100644 --- a/tests/lib/rules/no-dom-import.test.ts +++ b/tests/rules/no-dom-import.test.ts @@ -1,4 +1,4 @@ -import rule, { RULE_NAME } from '../../../lib/rules/no-dom-import'; +import rule, { RULE_NAME } from '../../src/rules/no-dom-import'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/no-global-regexp-flag-in-query.test.ts b/tests/rules/no-global-regexp-flag-in-query.test.ts similarity index 98% rename from tests/lib/rules/no-global-regexp-flag-in-query.test.ts rename to tests/rules/no-global-regexp-flag-in-query.test.ts index f885771d..1cbeec6e 100644 --- a/tests/lib/rules/no-global-regexp-flag-in-query.test.ts +++ b/tests/rules/no-global-regexp-flag-in-query.test.ts @@ -1,6 +1,6 @@ import rule, { RULE_NAME, -} from '../../../lib/rules/no-global-regexp-flag-in-query'; +} from '../../src/rules/no-global-regexp-flag-in-query'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/no-manual-cleanup.test.ts b/tests/rules/no-manual-cleanup.test.ts similarity index 98% rename from tests/lib/rules/no-manual-cleanup.test.ts rename to tests/rules/no-manual-cleanup.test.ts index 88fc87f6..ed1e1187 100644 --- a/tests/lib/rules/no-manual-cleanup.test.ts +++ b/tests/rules/no-manual-cleanup.test.ts @@ -1,4 +1,4 @@ -import rule, { RULE_NAME } from '../../../lib/rules/no-manual-cleanup'; +import rule, { RULE_NAME } from '../../src/rules/no-manual-cleanup'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/no-node-access.test.ts b/tests/rules/no-node-access.test.ts similarity index 99% rename from tests/lib/rules/no-node-access.test.ts rename to tests/rules/no-node-access.test.ts index 7bf6fcc3..ef572d50 100644 --- a/tests/lib/rules/no-node-access.test.ts +++ b/tests/rules/no-node-access.test.ts @@ -1,8 +1,8 @@ -import rule, { RULE_NAME } from '../../../lib/rules/no-node-access'; -import { EVENT_HANDLER_METHODS } from '../../../lib/utils'; +import rule, { RULE_NAME } from '../../src/rules/no-node-access'; +import { EVENT_HANDLER_METHODS } from '../../src/utils'; import { createRuleTester } from '../test-utils'; -import type { Options, MessageIds } from '../../../lib/rules/no-node-access'; +import type { Options, MessageIds } from '../../src/rules/no-node-access'; import type { InvalidTestCase, ValidTestCase, @@ -105,7 +105,7 @@ ruleTester.run(RULE_NAME, rule, { }, { code: `/* related to issue #386 fix - * now all node accessing properties (listed in lib/utils/index.ts, in PROPERTIES_RETURNING_NODES) + * now all node accessing properties (listed in src/utils/index.ts, in PROPERTIES_RETURNING_NODES) * will not be reported by this rule because anything props.something won't be reported. */ import { screen } from '${testingFramework}'; diff --git a/tests/lib/rules/no-promise-in-fire-event.test.ts b/tests/rules/no-promise-in-fire-event.test.ts similarity index 98% rename from tests/lib/rules/no-promise-in-fire-event.test.ts rename to tests/rules/no-promise-in-fire-event.test.ts index 82800e3f..8935d010 100644 --- a/tests/lib/rules/no-promise-in-fire-event.test.ts +++ b/tests/rules/no-promise-in-fire-event.test.ts @@ -1,4 +1,4 @@ -import rule, { RULE_NAME } from '../../../lib/rules/no-promise-in-fire-event'; +import rule, { RULE_NAME } from '../../src/rules/no-promise-in-fire-event'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/no-render-in-lifecycle.test.ts b/tests/rules/no-render-in-lifecycle.test.ts similarity index 97% rename from tests/lib/rules/no-render-in-lifecycle.test.ts rename to tests/rules/no-render-in-lifecycle.test.ts index 1561b394..77ee56fc 100644 --- a/tests/lib/rules/no-render-in-lifecycle.test.ts +++ b/tests/rules/no-render-in-lifecycle.test.ts @@ -1,5 +1,5 @@ -import rule, { RULE_NAME } from '../../../lib/rules/no-render-in-lifecycle'; -import { TESTING_FRAMEWORK_SETUP_HOOKS } from '../../../lib/utils'; +import rule, { RULE_NAME } from '../../src/rules/no-render-in-lifecycle'; +import { TESTING_FRAMEWORK_SETUP_HOOKS } from '../../src/utils'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/no-test-id-queries.test.ts b/tests/rules/no-test-id-queries.test.ts similarity index 95% rename from tests/lib/rules/no-test-id-queries.test.ts rename to tests/rules/no-test-id-queries.test.ts index 23ba3335..0a53cda6 100644 --- a/tests/lib/rules/no-test-id-queries.test.ts +++ b/tests/rules/no-test-id-queries.test.ts @@ -1,4 +1,4 @@ -import rule, { RULE_NAME } from '../../../lib/rules/no-test-id-queries'; +import rule, { RULE_NAME } from '../../src/rules/no-test-id-queries'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/no-unnecessary-act.test.ts b/tests/rules/no-unnecessary-act.test.ts similarity index 99% rename from tests/lib/rules/no-unnecessary-act.test.ts rename to tests/rules/no-unnecessary-act.test.ts index 7d02744d..7f0c1075 100644 --- a/tests/lib/rules/no-unnecessary-act.test.ts +++ b/tests/rules/no-unnecessary-act.test.ts @@ -1,10 +1,7 @@ -import rule, { RULE_NAME } from '../../../lib/rules/no-unnecessary-act'; +import rule, { RULE_NAME } from '../../src/rules/no-unnecessary-act'; import { createRuleTester } from '../test-utils'; -import type { - MessageIds, - Options, -} from '../../../lib/rules/no-unnecessary-act'; +import type { MessageIds, Options } from '../../src/rules/no-unnecessary-act'; import type { InvalidTestCase, ValidTestCase, diff --git a/tests/lib/rules/no-wait-for-multiple-assertions.test.ts b/tests/rules/no-wait-for-multiple-assertions.test.ts similarity index 98% rename from tests/lib/rules/no-wait-for-multiple-assertions.test.ts rename to tests/rules/no-wait-for-multiple-assertions.test.ts index e7edca6a..aca05510 100644 --- a/tests/lib/rules/no-wait-for-multiple-assertions.test.ts +++ b/tests/rules/no-wait-for-multiple-assertions.test.ts @@ -1,9 +1,9 @@ import rule, { RULE_NAME, -} from '../../../lib/rules/no-wait-for-multiple-assertions'; +} from '../../src/rules/no-wait-for-multiple-assertions'; import { createRuleTester } from '../test-utils'; -import type { MessageIds } from '../../../lib/rules/no-wait-for-multiple-assertions'; +import type { MessageIds } from '../../src/rules/no-wait-for-multiple-assertions'; import type { InvalidTestCase, ValidTestCase, diff --git a/tests/lib/rules/no-wait-for-side-effects.test.ts b/tests/rules/no-wait-for-side-effects.test.ts similarity index 99% rename from tests/lib/rules/no-wait-for-side-effects.test.ts rename to tests/rules/no-wait-for-side-effects.test.ts index 9d302f98..195ddb26 100644 --- a/tests/lib/rules/no-wait-for-side-effects.test.ts +++ b/tests/rules/no-wait-for-side-effects.test.ts @@ -1,7 +1,7 @@ import rule, { RULE_NAME, type MessageIds, -} from '../../../lib/rules/no-wait-for-side-effects'; +} from '../../src/rules/no-wait-for-side-effects'; import { createRuleTester } from '../test-utils'; import type { diff --git a/tests/lib/rules/no-wait-for-snapshot.test.ts b/tests/rules/no-wait-for-snapshot.test.ts similarity index 98% rename from tests/lib/rules/no-wait-for-snapshot.test.ts rename to tests/rules/no-wait-for-snapshot.test.ts index 03eff8f4..0e0919dc 100644 --- a/tests/lib/rules/no-wait-for-snapshot.test.ts +++ b/tests/rules/no-wait-for-snapshot.test.ts @@ -1,5 +1,5 @@ -import rule, { RULE_NAME } from '../../../lib/rules/no-wait-for-snapshot'; -import { ASYNC_UTILS } from '../../../lib/utils'; +import rule, { RULE_NAME } from '../../src/rules/no-wait-for-snapshot'; +import { ASYNC_UTILS } from '../../src/utils'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/prefer-explicit-assert.test.ts b/tests/rules/prefer-explicit-assert.test.ts similarity index 98% rename from tests/lib/rules/prefer-explicit-assert.test.ts rename to tests/rules/prefer-explicit-assert.test.ts index 8cc09614..e66bc457 100644 --- a/tests/lib/rules/prefer-explicit-assert.test.ts +++ b/tests/rules/prefer-explicit-assert.test.ts @@ -1,5 +1,5 @@ -import rule, { RULE_NAME } from '../../../lib/rules/prefer-explicit-assert'; -import { ALL_QUERIES_METHODS } from '../../../lib/utils'; +import rule, { RULE_NAME } from '../../src/rules/prefer-explicit-assert'; +import { ALL_QUERIES_METHODS } from '../../src/utils'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/prefer-find-by.test.ts b/tests/rules/prefer-find-by.test.ts similarity index 99% rename from tests/lib/rules/prefer-find-by.test.ts rename to tests/rules/prefer-find-by.test.ts index 6cc05e90..093f237b 100644 --- a/tests/lib/rules/prefer-find-by.test.ts +++ b/tests/rules/prefer-find-by.test.ts @@ -1,14 +1,14 @@ import rule, { RULE_NAME, getFindByQueryVariant, -} from '../../../lib/rules/prefer-find-by'; +} from '../../src/rules/prefer-find-by'; import { ASYNC_QUERIES_COMBINATIONS, SYNC_QUERIES_COMBINATIONS, -} from '../../../lib/utils'; +} from '../../src/utils'; import { createRuleTester } from '../test-utils'; -import type { MessageIds } from '../../../lib/rules/prefer-find-by'; +import type { MessageIds } from '../../src/rules/prefer-find-by'; import type { InvalidTestCase, ValidTestCase, diff --git a/tests/lib/rules/prefer-implicit-assert.test.ts b/tests/rules/prefer-implicit-assert.test.ts similarity index 98% rename from tests/lib/rules/prefer-implicit-assert.test.ts rename to tests/rules/prefer-implicit-assert.test.ts index c73ac0c7..f0d0968a 100644 --- a/tests/lib/rules/prefer-implicit-assert.test.ts +++ b/tests/rules/prefer-implicit-assert.test.ts @@ -1,5 +1,5 @@ -import rule, { RULE_NAME } from '../../../lib/rules/prefer-implicit-assert'; -import { ALL_QUERIES_METHODS } from '../../../lib/utils'; +import rule, { RULE_NAME } from '../../src/rules/prefer-implicit-assert'; +import { ALL_QUERIES_METHODS } from '../../src/utils'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/prefer-presence-queries.test.ts b/tests/rules/prefer-presence-queries.test.ts similarity index 99% rename from tests/lib/rules/prefer-presence-queries.test.ts rename to tests/rules/prefer-presence-queries.test.ts index b1756cd4..a73041f1 100644 --- a/tests/lib/rules/prefer-presence-queries.test.ts +++ b/tests/rules/prefer-presence-queries.test.ts @@ -1,11 +1,11 @@ -import rule, { RULE_NAME } from '../../../lib/rules/prefer-presence-queries'; -import { ALL_QUERIES_METHODS } from '../../../lib/utils'; +import rule, { RULE_NAME } from '../../src/rules/prefer-presence-queries'; +import { ALL_QUERIES_METHODS } from '../../src/utils'; import { createRuleTester } from '../test-utils'; import type { MessageIds, Options, -} from '../../../lib/rules/prefer-presence-queries'; +} from '../../src/rules/prefer-presence-queries'; import type { InvalidTestCase, ValidTestCase, diff --git a/tests/lib/rules/prefer-query-by-disappearance.test.ts b/tests/rules/prefer-query-by-disappearance.test.ts similarity index 99% rename from tests/lib/rules/prefer-query-by-disappearance.test.ts rename to tests/rules/prefer-query-by-disappearance.test.ts index 32eb2f3b..43eb3aab 100644 --- a/tests/lib/rules/prefer-query-by-disappearance.test.ts +++ b/tests/rules/prefer-query-by-disappearance.test.ts @@ -1,6 +1,4 @@ -import rule, { - RULE_NAME, -} from '../../../lib/rules/prefer-query-by-disappearance'; +import rule, { RULE_NAME } from '../../src/rules/prefer-query-by-disappearance'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/prefer-query-matchers.test.ts b/tests/rules/prefer-query-matchers.test.ts similarity index 98% rename from tests/lib/rules/prefer-query-matchers.test.ts rename to tests/rules/prefer-query-matchers.test.ts index 95358c34..a7c7128c 100644 --- a/tests/lib/rules/prefer-query-matchers.test.ts +++ b/tests/rules/prefer-query-matchers.test.ts @@ -1,11 +1,11 @@ -import rule, { RULE_NAME } from '../../../lib/rules/prefer-query-matchers'; -import { ALL_QUERIES_METHODS } from '../../../lib/utils'; +import rule, { RULE_NAME } from '../../src/rules/prefer-query-matchers'; +import { ALL_QUERIES_METHODS } from '../../src/utils'; import { createRuleTester } from '../test-utils'; import type { MessageIds, Options, -} from '../../../lib/rules/prefer-query-matchers'; +} from '../../src/rules/prefer-query-matchers'; import type { InvalidTestCase, ValidTestCase, diff --git a/tests/lib/rules/prefer-screen-queries.test.ts b/tests/rules/prefer-screen-queries.test.ts similarity index 99% rename from tests/lib/rules/prefer-screen-queries.test.ts rename to tests/rules/prefer-screen-queries.test.ts index a4a65302..22ba428e 100644 --- a/tests/lib/rules/prefer-screen-queries.test.ts +++ b/tests/rules/prefer-screen-queries.test.ts @@ -1,9 +1,9 @@ -import rule, { RULE_NAME } from '../../../lib/rules/prefer-screen-queries'; +import rule, { RULE_NAME } from '../../src/rules/prefer-screen-queries'; import { ALL_QUERIES_COMBINATIONS, ALL_QUERIES_VARIANTS, combineQueries, -} from '../../../lib/utils'; +} from '../../src/utils'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/prefer-user-event-setup.test.ts b/tests/rules/prefer-user-event-setup.test.ts similarity index 96% rename from tests/lib/rules/prefer-user-event-setup.test.ts rename to tests/rules/prefer-user-event-setup.test.ts index 1a50b40c..b18f7000 100644 --- a/tests/lib/rules/prefer-user-event-setup.test.ts +++ b/tests/rules/prefer-user-event-setup.test.ts @@ -1,8 +1,8 @@ -import rule, { RULE_NAME } from '../../../lib/rules/prefer-user-event-setup'; -import { USER_EVENT_METHODS } from '../../../lib/utils'; +import rule, { RULE_NAME } from '../../src/rules/prefer-user-event-setup'; +import { USER_EVENT_METHODS } from '../../src/utils'; import { createRuleTester } from '../test-utils'; -import type { MessageIds } from '../../../lib/rules/prefer-user-event-setup'; +import type { MessageIds } from '../../src/rules/prefer-user-event-setup'; const ruleTester = createRuleTester(); diff --git a/tests/lib/rules/prefer-user-event.test.ts b/tests/rules/prefer-user-event.test.ts similarity index 98% rename from tests/lib/rules/prefer-user-event.test.ts rename to tests/rules/prefer-user-event.test.ts index 24ee1f66..f3c1f9ad 100644 --- a/tests/lib/rules/prefer-user-event.test.ts +++ b/tests/rules/prefer-user-event.test.ts @@ -2,11 +2,11 @@ import rule, { MAPPING_TO_USER_EVENT, RULE_NAME, UserEventMethods, -} from '../../../lib/rules/prefer-user-event'; -import { LIBRARY_MODULES } from '../../../lib/utils'; +} from '../../src/rules/prefer-user-event'; +import { LIBRARY_MODULES } from '../../src/utils'; import { createRuleTester } from '../test-utils'; -import type { MessageIds, Options } from '../../../lib/rules/prefer-user-event'; +import type { MessageIds, Options } from '../../src/rules/prefer-user-event'; import type { InvalidTestCase, ValidTestCase, diff --git a/tests/lib/rules/render-result-naming-convention.test.ts b/tests/rules/render-result-naming-convention.test.ts similarity index 99% rename from tests/lib/rules/render-result-naming-convention.test.ts rename to tests/rules/render-result-naming-convention.test.ts index b2715300..b8c32177 100644 --- a/tests/lib/rules/render-result-naming-convention.test.ts +++ b/tests/rules/render-result-naming-convention.test.ts @@ -1,6 +1,6 @@ import rule, { RULE_NAME, -} from '../../../lib/rules/render-result-naming-convention'; +} from '../../src/rules/render-result-naming-convention'; import { createRuleTester } from '../test-utils'; const ruleTester = createRuleTester(); diff --git a/tests/lib/test-utils.ts b/tests/test-utils.ts similarity index 94% rename from tests/lib/test-utils.ts rename to tests/test-utils.ts index 398c52eb..66a0db26 100644 --- a/tests/lib/test-utils.ts +++ b/tests/test-utils.ts @@ -1,7 +1,7 @@ import { RuleTester } from '@typescript-eslint/rule-tester'; import { parser } from 'typescript-eslint'; -import type { TestingLibraryPluginRuleModule } from '../../lib/utils'; +import type { TestingLibraryPluginRuleModule } from '../src/utils'; import type { RunTests } from '@typescript-eslint/rule-tester'; const DEFAULT_TEST_CASE_CONFIG = { diff --git a/tests/lib/utils/add-async-to-function-fix.test.ts b/tests/utils/add-async-to-function-fix.test.ts similarity index 93% rename from tests/lib/utils/add-async-to-function-fix.test.ts rename to tests/utils/add-async-to-function-fix.test.ts index c13dc155..f2f1397d 100644 --- a/tests/lib/utils/add-async-to-function-fix.test.ts +++ b/tests/utils/add-async-to-function-fix.test.ts @@ -1,5 +1,5 @@ -import { createTestingLibraryRule } from '../../../lib/create-testing-library-rule'; -import { addAsyncToFunctionFix } from '../../../lib/utils/add-async-to-function-fix'; +import { createTestingLibraryRule } from '../../src/create-testing-library-rule'; +import { addAsyncToFunctionFix } from '../../src/utils/add-async-to-function-fix'; import { createRuleTester } from '../test-utils'; import type { TSESTree } from '@typescript-eslint/utils'; diff --git a/tests/lib/utils/is-testing-library-module.test.ts b/tests/utils/is-testing-library-module.test.ts similarity index 97% rename from tests/lib/utils/is-testing-library-module.test.ts rename to tests/utils/is-testing-library-module.test.ts index a83e48ad..84edc728 100644 --- a/tests/lib/utils/is-testing-library-module.test.ts +++ b/tests/utils/is-testing-library-module.test.ts @@ -4,7 +4,7 @@ import { isCustomTestingLibraryModule, isOfficialTestingLibraryModule, isTestingLibraryModule, -} from '../../../lib/utils/is-testing-library-module'; +} from '../../src/utils/is-testing-library-module'; const OLD_LIBRARY_MODULES = [ 'dom-testing-library', diff --git a/tests/lib/utils/resolve-to-testing-library-fn.test.ts b/tests/utils/resolve-to-testing-library-fn.test.ts similarity index 96% rename from tests/lib/utils/resolve-to-testing-library-fn.test.ts rename to tests/utils/resolve-to-testing-library-fn.test.ts index 604960c9..3a58617c 100644 --- a/tests/lib/utils/resolve-to-testing-library-fn.test.ts +++ b/tests/utils/resolve-to-testing-library-fn.test.ts @@ -1,6 +1,6 @@ -import { createTestingLibraryRule } from '../../../lib/create-testing-library-rule'; -import { LIBRARY_MODULES } from '../../../lib/utils'; -import { resolveToTestingLibraryFn } from '../../../lib/utils/resolve-to-testing-library-fn'; +import { createTestingLibraryRule } from '../../src/create-testing-library-rule'; +import { LIBRARY_MODULES } from '../../src/utils'; +import { resolveToTestingLibraryFn } from '../../src/utils/resolve-to-testing-library-fn'; import { createRuleTester } from '../test-utils'; import type { InvalidTestCase } from '@typescript-eslint/rule-tester'; diff --git a/tools/generate-configs/index.ts b/tools/generate-configs/index.ts index 6d0d06eb..350fc011 100644 --- a/tools/generate-configs/index.ts +++ b/tools/generate-configs/index.ts @@ -1,19 +1,15 @@ import { writeConfig } from './utils'; -import rules from '../../lib/rules'; -import { SUPPORTED_TESTING_FRAMEWORKS } from '../../lib/utils'; +import { rules } from '../../src/rules'; +import { SUPPORTED_TESTING_FRAMEWORKS } from '../../src/utils'; -import type { - SupportedTestingFramework, - TestingLibraryPluginRuleModule, -} from '../../lib/utils'; -import type { TSESLint } from '@typescript-eslint/utils'; +import type { SupportedTestingFramework } from '../../src/utils'; const RULE_NAME_PREFIX = 'testing-library/'; const getRecommendedRulesForTestingFramework = ( framework: SupportedTestingFramework -): Record => - Object.entries>(rules) +) => + Object.entries(rules) .filter(([_, { meta }]) => Boolean(meta.docs.recommendedConfig[framework])) .reduce((allRules, [ruleName, { meta }]) => { const name = `${RULE_NAME_PREFIX}${ruleName}`; @@ -27,8 +23,7 @@ const getRecommendedRulesForTestingFramework = ( (async () => { for (const framework of SUPPORTED_TESTING_FRAMEWORKS) { - const specificFrameworkConfig: TSESLint.Linter.ConfigType = { - plugins: ['testing-library'], + const specificFrameworkConfig = { rules: getRecommendedRulesForTestingFramework(framework), }; diff --git a/tools/generate-configs/utils.ts b/tools/generate-configs/utils.ts index fcaff1ee..f83481e7 100644 --- a/tools/generate-configs/utils.ts +++ b/tools/generate-configs/utils.ts @@ -1,11 +1,12 @@ -import { writeFile } from 'fs/promises'; -import { resolve } from 'path'; +import { writeFile } from 'node:fs/promises'; +import { resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; -import { format, resolveConfig } from 'prettier'; +import * as prettier from 'prettier'; import type { TSESLint } from '@typescript-eslint/utils'; -const prettierConfig = resolveConfig(__dirname); +const __dirname = fileURLToPath(new URL('.', import.meta.url)); const addAutoGeneratedComment = (code: string) => [ @@ -23,16 +24,17 @@ export const writeConfig = async ( config: TSESLint.Linter.ConfigType, configName: string ): Promise => { - // note: we use `export =` because ESLint will import these configs via a commonjs import const code = `import type { Linter } from 'eslint'; - export = ${JSON.stringify(config)} satisfies Linter.LegacyConfig; + export default ${JSON.stringify(config)} satisfies { rules: Linter.RulesRecord }; `; - const configStr = await format(addAutoGeneratedComment(code), { + + const prettierConfig = await prettier.resolveConfig(__dirname); + const configStr = await prettier.format(addAutoGeneratedComment(code), { parser: 'typescript', - ...(await prettierConfig), + ...prettierConfig, }); - const filePath = resolve(__dirname, `../../lib/configs/${configName}.ts`); + const filePath = resolve(__dirname, `../../src/configs/${configName}.ts`); await writeFile(filePath, configStr); }; diff --git a/tsconfig.build.json b/tsconfig.build.json deleted file mode 100644 index 5a4a2c06..00000000 --- a/tsconfig.build.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig.json", - "exclude": ["./tests", "./tools", "./vitest.*"] -} diff --git a/tsconfig.json b/tsconfig.json index 324aa648..aa22e7ac 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,20 +1,14 @@ { "compilerOptions": { "strict": true, - "target": "ES2019", - "module": "NodeNext", - "moduleResolution": "NodeNext", - "lib": ["ES2019"], - "esModuleInterop": true, + "target": "ES2023", + "module": "preserve", + // "moduleResolution": "Bundler", <-- this is implied by "module": "preserve" + "noEmit": true, + "lib": ["ES2023"], "skipLibCheck": true, - "resolveJsonModule": true, - "moduleDetection": "force", "isolatedModules": true, - "removeComments": true, // TODO: turn it on - "noUncheckedIndexedAccess": false, - "outDir": "dist", - "sourceMap": false - }, - "include": ["**/*.ts", "**/*.mts"] + "noUncheckedIndexedAccess": false + } } diff --git a/vitest.config.mts b/vitest.config.ts similarity index 88% rename from vitest.config.mts rename to vitest.config.ts index c8e1b190..1fbcc658 100644 --- a/vitest.config.mts +++ b/vitest.config.ts @@ -3,10 +3,10 @@ import { defineConfig, configDefaults } from 'vitest/config'; export default defineConfig({ test: { include: ['**/tests/**/*.test.ts'], - setupFiles: ['./vitest.setup.mts'], + setupFiles: ['./vitest.setup.ts'], clearMocks: true, coverage: { - include: ['lib/**'], + include: ['src/**'], thresholds: { branches: 90, functions: 90, diff --git a/vitest.setup.mts b/vitest.setup.ts similarity index 100% rename from vitest.setup.mts rename to vitest.setup.ts