From 00d0dfa107c4da60f0463024efcca18907fddf95 Mon Sep 17 00:00:00 2001 From: Alex <8125011+alex-kinokon@users.noreply.github.com> Date: Wed, 16 Oct 2024 00:29:26 -0400 Subject: [PATCH] Upgrade to ESLint 9 --- .eslint.ts | 51 + .eslintrc.js | 195 - .gitignore | 2 + .npmrc | 3 +- .vscode/settings.json | 1 + dist/config/index.d.ts | 44 + dist/eslint-plugin-jsx-a11y/index.d.ts | 8 - dist/eslint-plugin-react-hooks/index.d.ts | 12 - dist/index.d.ts | 87 +- dist/package.json | 50 +- dist/print-config.sh | 2 +- eslint.config.cjs | 3 + package.json | 71 +- .../ExhaustiveDeps.ts | 253 +- .../eslint-plugin-react-hooks/RulesOfHooks.ts | 56 +- packages/eslint-plugin-react-hooks/index.ts | 27 +- .../eslint-plugin-react-hooks/package.json | 3 + patch/eslint-import-resolver-typescript.patch | 10 - patch/eslint-plugin-jsx-a11y.patch | 72 +- patches/@typescript-eslint__utils@8.2.0.patch | 13 + patches/dts-bundle-generator.patch | 11 + pnpm-lock.yaml | 3993 ++++++++++++----- scripts/build-local-rules.ts | 31 - scripts/build.ts | 56 +- scripts/check-imports.ts | 3 +- scripts/dts.ts | 2 +- scripts/modifier.ts | 36 +- scripts/save_patch.sh | 1 - src/commits.json | 18 +- src/config.d.ts | 44 + src/custom/index.ts | 43 +- src/custom/restrict-template-expressions.ts | 17 +- src/{env.ts => environment.ts} | 21 +- src/index.ts | 259 +- src/install.ts | 4 +- src/local/index.ts | 83 - src/middleware.ts | 35 +- src/modules.d.ts | 32 +- src/presets/custom.ts | 30 +- src/presets/graphql.ts | 11 +- src/presets/jsdoc.ts | 12 +- src/presets/misc.ts | 24 +- src/presets/react.ts | 47 +- src/presets/stylistic.ts | 24 +- src/presets/tailwind.ts | 11 +- src/presets/testing-library.ts | 16 +- src/presets/typescript.ts | 48 +- src/presets/unicorn.ts | 35 +- src/redirect.ts | 24 - src/types.ts | 9 +- src/types/eslint-plugin-react-refresh.d.ts | 18 + src/types/eslint-plugin-testing-library.d.ts | 55 + tsconfig.json | 4 +- 53 files changed, 3813 insertions(+), 2207 deletions(-) create mode 100644 .eslint.ts delete mode 100644 .eslintrc.js create mode 100644 dist/config/index.d.ts delete mode 100644 dist/eslint-plugin-jsx-a11y/index.d.ts delete mode 100644 dist/eslint-plugin-react-hooks/index.d.ts mode change 100644 => 100755 dist/print-config.sh create mode 100644 eslint.config.cjs delete mode 100644 patch/eslint-import-resolver-typescript.patch create mode 100644 patches/@typescript-eslint__utils@8.2.0.patch create mode 100644 patches/dts-bundle-generator.patch delete mode 100755 scripts/build-local-rules.ts create mode 100644 src/config.d.ts rename src/{env.ts => environment.ts} (75%) delete mode 100644 src/local/index.ts delete mode 100644 src/redirect.ts create mode 100644 src/types/eslint-plugin-react-refresh.d.ts create mode 100644 src/types/eslint-plugin-testing-library.d.ts diff --git a/.eslint.ts b/.eslint.ts new file mode 100644 index 0000000..d79d68e --- /dev/null +++ b/.eslint.ts @@ -0,0 +1,51 @@ +import type { FlatESLintConfig } from '@aet/eslint-define-config'; +import js from '@eslint/js'; +import * as tsParser from '@typescript-eslint/parser'; +import importPlugin from 'eslint-plugin-import-x'; +import unicorn from 'eslint-plugin-unicorn'; +import tsEslint from 'typescript-eslint'; + +import { importRules } from './src/presets/typescript'; + +export default [ + js.configs.recommended, // + ...tsEslint.configs.recommendedTypeChecked, + unicorn.configs['flat/recommended'], + importPlugin.flatConfigs.recommended, + importPlugin.flatConfigs.react, + importPlugin.flatConfigs.typescript, + { + files: ['**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}'], + languageOptions: { + parserOptions: { + parser: tsParser, + projectService: true, + ecmaVersion: 'latest', + // https://github.com/unjs/jiti/issues/167 import.meta.dirname + tsconfigRootDir: __dirname, + sourceType: 'module', + }, + }, + settings: { + 'import-x/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx', '.mts', '.cts'], + }, + 'import-x/resolver': { + typescript: true, + node: true, + }, + }, + ignores: ['eslint.config.cjs'], + rules: { + ...importRules, + }, + }, + { + rules: { + 'unicorn/prevent-abbreviations': 'off', + 'unicorn/import-style': 'off', + 'unicorn/switch-case-braces': ['error', 'avoid'], + 'unicorn/no-null': 'off', + }, + }, +] as FlatESLintConfig[]; diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index b412e79..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,195 +0,0 @@ -module.exports = { - root: true, - plugins: ['unicorn', 'jsdoc', 'import-x'], - env: { node: true, browser: true, es2023: true }, - reportUnusedDisableDirectives: true, - parserOptions: { - project: true, - }, - ignorePatterns: [], - globals: {}, - extends: [ - 'eslint:recommended', - 'prettier', - 'plugin:@typescript-eslint/recommended-type-checked', - 'plugin:jsdoc/recommended-typescript', - ], - overrides: [ - { - files: ['repl.ts', 'scripts/**/*.ts'], - rules: { 'no-console': 'off' }, - }, - { - files: ['.eslintrc.js', '.eslintrc.cjs', '*.config.js', 'index.js'], - extends: ['plugin:@typescript-eslint/disable-type-checked'], - rules: { 'rules/restrict-template-expressions': 'off' }, - }, - { - files: ['*.d.ts'], - rules: { '@typescript-eslint/consistent-type-imports': 'off' }, - }, - ], - rules: { - 'import-x/order': [ - 'error', - { - groups: [ - 'builtin', - 'external', - 'internal', - 'parent', - 'sibling', - 'index', - 'object', - ], - 'newlines-between': 'always-and-inside-groups', - alphabetize: { order: 'asc', caseInsensitive: true }, - }, - ], - 'arrow-body-style': ['error', 'as-needed'], - 'class-methods-use-this': 'warn', - 'func-style': ['error', 'declaration', { allowArrowFunctions: true }], - 'no-async-promise-executor': 'off', - 'no-case-declarations': 'off', - 'no-console': 'warn', - 'no-constant-condition': ['error', { checkLoops: false }], - 'no-debugger': 'warn', - 'no-duplicate-imports': 'off', - 'no-empty': ['error', { allowEmptyCatch: true }], - 'no-inner-declarations': 'off', - 'no-lonely-if': 'error', - 'no-restricted-imports': [ - 'error', - { - paths: [ - { - name: 'crypto', - importNames: ['webcrypto'], - message: 'Use global `crypto` instead', - }, - ], - }, - ], - 'no-template-curly-in-string': 'error', - 'no-var': 'error', - 'object-shorthand': ['error', 'always', { ignoreConstructors: true }], - 'one-var': ['error', { var: 'never', let: 'never', const: 'never' }], - 'prefer-arrow-callback': 'off', - 'prefer-const': ['error', { destructuring: 'all' }], - 'prefer-destructuring': [ - 'warn', - { AssignmentExpression: { array: false, object: false } }, - ], - 'prefer-object-spread': 'error', - 'prefer-rest-params': 'warn', - 'prefer-spread': 'warn', - 'quote-props': ['error', 'as-needed'], - 'sort-imports': ['warn', { ignoreDeclarationSort: true }], - 'spaced-comment': [ - 'error', - 'always', - { markers: ['/', '#', '@'], block: { exceptions: ['@'] } }, - ], - complexity: ['warn', { max: 100 }], - curly: ['error', 'multi-line', 'consistent'], - eqeqeq: ['error', 'smart'], - yoda: ['error', 'never', { exceptRange: true }], - 'jsdoc/require-jsdoc': 'off', - '@typescript-eslint/ban-ts-comment': [ - 'error', - { - 'ts-expect-error': 'allow-with-description', - 'ts-check': false, - 'ts-ignore': 'allow-with-description', - 'ts-nocheck': 'allow-with-description', - }, - ], - '@typescript-eslint/consistent-type-imports': [ - 'error', - { - disallowTypeAnnotations: false, - fixStyle: 'inline-type-imports', - }, - ], - '@typescript-eslint/explicit-member-accessibility': [ - 'warn', - { accessibility: 'no-public' }, - ], - '@typescript-eslint/no-empty-interface': ['error', { allowSingleExtends: true }], - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-misused-promises': ['error', { checksVoidReturn: false }], - '@typescript-eslint/no-namespace': 'off', - '@typescript-eslint/no-unnecessary-type-assertion': 'error', - '@typescript-eslint/no-unsafe-argument': 'off', - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - '@typescript-eslint/no-unsafe-return': 'off', - '@typescript-eslint/no-unused-vars': 'off', - '@typescript-eslint/no-use-before-define': 'off', - '@typescript-eslint/no-var-requires': 'off', - '@typescript-eslint/restrict-template-expressions': 'off', - '@typescript-eslint/triple-slash-reference': 'off', - '@typescript-eslint/unbound-method': 'off', - 'unicorn/better-regex': 'error', - 'unicorn/consistent-function-scoping': 'warn', - 'unicorn/escape-case': 'error', - 'unicorn/no-array-for-each': 'warn', - 'unicorn/no-array-method-this-argument': 'error', - 'unicorn/no-array-push-push': 'warn', - 'unicorn/no-console-spaces': 'warn', - 'unicorn/no-for-loop': 'warn', - 'unicorn/no-instanceof-array': 'error', - 'unicorn/no-lonely-if': 'warn', - 'unicorn/no-static-only-class': 'error', - 'unicorn/no-typeof-undefined': 'error', - 'unicorn/no-useless-fallback-in-spread': 'error', - 'unicorn/no-useless-promise-resolve-reject': 'error', - 'unicorn/no-useless-spread': 'error', - 'unicorn/no-useless-switch-case': 'error', - 'unicorn/prefer-array-find': 'error', - 'unicorn/prefer-array-flat-map': 'error', - 'unicorn/prefer-array-some': 'error', - 'unicorn/prefer-at': 'error', - 'unicorn/prefer-blob-reading-methods': 'error', - 'unicorn/prefer-date-now': 'error', - 'unicorn/prefer-default-parameters': 'warn', - 'unicorn/prefer-dom-node-dataset': 'error', - 'unicorn/prefer-dom-node-remove': 'error', - 'unicorn/prefer-export-from': ['error', { ignoreUsedVariables: false }], - 'unicorn/prefer-includes': 'error', - 'unicorn/prefer-keyboard-event-key': 'warn', - 'unicorn/prefer-logical-operator-over-ternary': 'warn', - 'unicorn/prefer-math-trunc': 'error', - 'unicorn/prefer-modern-math-apis': 'error', - 'unicorn/prefer-negative-index': 'error', - 'unicorn/prefer-node-protocol': 'error', - 'unicorn/prefer-object-from-entries': 'error', - 'unicorn/prefer-optional-catch-binding': 'error', - 'unicorn/prefer-reflect-apply': 'error', - 'unicorn/prefer-regexp-test': 'error', - 'unicorn/prefer-set-has': 'warn', - 'unicorn/prefer-string-slice': 'error', - 'unicorn/prefer-string-starts-ends-with': 'warn', - 'unicorn/prefer-string-trim-start-end': 'error', - 'unicorn/prefer-ternary': 'warn', - 'unicorn/string-content': [ - 'warn', - { - patterns: { - '->': { suggest: '→', fix: false }, - '=>': { suggest: '⇒', fix: false }, - '<-': { suggest: '←', fix: false }, - '<=': { suggest: '≤', fix: false }, - '>=': { suggest: '≥', fix: false }, - '!=': { suggest: '≠', fix: false }, - '<=>': { suggest: '⇔', fix: false }, - '\\.\\.\\.': { suggest: '…', fix: false }, - "'s ": { suggest: '’s ', fix: false }, - }, - }, - ], - 'unicorn/template-indent': 'warn', - }, - parser: '@typescript-eslint/parser', -}; diff --git a/.gitignore b/.gitignore index 6e58df4..2846a0f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,8 +2,10 @@ drafts !/packages/eslint-plugin-react-hooks /packages/eslint-define-config /react +/test src/types/rules +dist2 dist/**/*.js dist/**/*.js.map diff --git a/.npmrc b/.npmrc index 9d6d6f4..9fff169 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,3 @@ registry http://raspberrypi.local:4873 -always-auth=true \ No newline at end of file +always-auth=true +ignore-scripts=true diff --git a/.vscode/settings.json b/.vscode/settings.json index ef5152b..3e7799e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,7 @@ { "editor.formatOnSave": true, "eslint.runtime": "node", + "eslint.useFlatConfig": true, "search.exclude": { "**/node_modules": true, "**/bower_components": true, diff --git a/dist/config/index.d.ts b/dist/config/index.d.ts new file mode 100644 index 0000000..c36c87c --- /dev/null +++ b/dist/config/index.d.ts @@ -0,0 +1,44 @@ +import type { FlatESLintConfig } from '@aet/eslint-define-config'; +import type { Linter } from 'eslint'; + +type MiddlewareResult = Linter.Config | Linter.Config[]; + +export type Middleware = + | (() => Promise) + | (() => Promise<{ default: MiddlewareResult }>); + +/** + * Returns a ESLint config object. + * + * By default, it includes `["@typescript-eslint", "import-x", "prettier", "unicorn"]` configs. + * Additional bundled plugins include: + * + * 1. [`react`](https://github.com/jsx-eslint/eslint-plugin-react#list-of-supported-rules) + * (automatically enables + * [`react-hooks`](https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks)) + * 2. [`react-refresh`](https://github.com/ArnaudBarre/eslint-plugin-react-refresh) + * 3. [`jsx-a11y`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y#supported-rules) + * 4. [`unicorn`](https://github.com/sindresorhus/eslint-plugin-unicorn#rules) + * 5. [`n`](https://github.com/eslint-community/eslint-plugin-n#-rules) (Node.js specific, + * requires `minimatch`) + * 6. [`jsdoc`](https://github.com/gajus/eslint-plugin-jsdoc#rules) + * + * Non bundled: + * 1. [`graphql`](https://the-guild.dev/graphql/eslint/rules) + * + * @param of Configuration options. + * @returns ESLint configuration object. + */ +export function extendConfig({ + auto, + middlewares: addMiddlewares, + configs, +}: { + auto?: boolean; + middlewares?: Middleware[]; + configs: FlatESLintConfig[]; +}): Promise; + +export const error = 'error'; +export const warn = 'warn'; +export const off = 'off'; diff --git a/dist/eslint-plugin-jsx-a11y/index.d.ts b/dist/eslint-plugin-jsx-a11y/index.d.ts deleted file mode 100644 index 7cae938..0000000 --- a/dist/eslint-plugin-jsx-a11y/index.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { Linter } from 'eslint'; - -export const rules: Readonly; - -export const configs: { - recommended: Linter.BaseConfig; - strict: Linter.BaseConfig; -}; diff --git a/dist/eslint-plugin-react-hooks/index.d.ts b/dist/eslint-plugin-react-hooks/index.d.ts deleted file mode 100644 index 6aa35e9..0000000 --- a/dist/eslint-plugin-react-hooks/index.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { Linter, Rule } from 'eslint'; - -export const __EXPERIMENTAL__: false; - -export const configs: { - recommended: Linter.BaseConfig; -}; - -export const rules: { - 'rules-of-hooks': Rule.RuleModule; - 'exhaustive-deps': Rule.RuleModule; -}; diff --git a/dist/index.d.ts b/dist/index.d.ts index 9df2920..1ec7593 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,81 +1,12 @@ // Generated by dts-bundle-generator v9.4.0 -import { ESLintConfig, KnownExtends, Rules, Settings } from '@aet/eslint-define-config'; -import { ESLintUtils } from '@typescript-eslint/utils'; -import { Rule } from 'eslint'; -import { Merge, SetRequired } from 'type-fest'; +import { FlatESLintConfig } from '@aet/eslint-define-config'; +import { Linter } from 'eslint'; -export type OptionalObjectKey = Exclude<{ - [Key in keyof T]: undefined | any[] extends T[Key] ? Key : undefined | Record extends T[Key] ? Key : never; -}[keyof T], undefined>; -export type MiddlewareConfig = Merge>, { - extends: KnownExtends[]; -}>; -export interface MiddlewareFunctions { - addRules(rules: Partial): void; - addSettings(settings: Partial): void; -} -export type Middleware = (config: MiddlewareConfig, helpers: MiddlewareFunctions) => void; -export declare const graphql: Middleware; -export declare const jsdoc: Middleware; -export declare const storybook: Middleware; -export declare const react: Middleware; -export declare const reactRefresh: Middleware; -export declare const tailwind: Middleware; -export declare const error = "error"; -export declare const warn = "warn"; -export declare const off = "off"; -export type RuleLevel = "error" | "warn" | "off" | 0 | 1 | 2; -export type RuleEntry = RuleLevel | [ - RuleLevel, - Partial -]; -export interface LocalRuleOptions { - /** Bans import from the specifier '.' and '..' and replaces it with '.+/index' */ - "custom/no-import-dot": RuleEntry; - /** - * Enforce template literal expressions to be of `string` type - * @see [restrict-template-expressions](https://typescript-eslint.io/rules/restrict-template-expressions) - */ - "custom/restrict-template-expressions": RuleEntry<{ - allow: string[]; - }>; - /** Ban assignment of empty object literals `{}` and replace them with `Object.create(null)` */ - "custom/no-empty-object-literal": RuleEntry; - /** Ban useless import alias */ - "custom/no-useless-import-alias": RuleEntry; -} -export type RuleOptions = Rules & Partial; -export interface CustomRule { - rule: () => Promise<{ - default: Rule.RuleModule | ESLintUtils.RuleModule; - }>; - options?: RuleLevel; -} -/** - * ESLint Configuration. - * @see [ESLint Configuration](https://eslint.org/docs/latest/user-guide/configuring/) - */ -export type InputConfig = Omit & { - /** - * Rules. - * @see [Rules](https://eslint.org/docs/latest/user-guide/configuring/rules) - */ - rules?: Partial; - /** - * Glob pattern to find paths to custom rule files in JavaScript or TypeScript. - * Note this must be a string literal or an array of string literals since - * this is statically analyzed. - * - * Rules are prefixed with `custom/` and the file name is used as the rule name. - */ - customRuleFiles?: string | string[]; - /** - * Automatically detect project types, dependencies and deduct the plugins. - * @default true - */ - auto?: boolean; -}; +export type MiddlewareResult = Linter.Config | Linter.Config[]; +export type Middleware = (() => Promise) | (() => Promise<{ + default: MiddlewareResult; +}>); /** * Returns a ESLint config object. * @@ -98,8 +29,10 @@ export type InputConfig = Omit & { * @param of Configuration options. * @returns ESLint configuration object. */ -export declare function extendConfig(of?: InputConfig & { +export declare function extendConfig({ auto, middlewares: addMiddlewares, configs, }: { + auto?: boolean; middlewares?: Middleware[]; -}): ESLintConfig; + configs: FlatESLintConfig[]; +}): Promise; export {}; diff --git a/dist/package.json b/dist/package.json index 1120826..c7ade1b 100644 --- a/dist/package.json +++ b/dist/package.json @@ -1,56 +1,58 @@ { "name": "@aet/eslint-rules", - "version": "1.0.1-beta.42", + "version": "2.0.1-beta.1", "license": "UNLICENSED", "bin": { "eslint-install": "install.js", "eslint-print": "print-config.sh" }, + "main": "./config/index.js", "peerDependencies": { - "eslint": "^8.57.0", + "eslint": "^9.12.0", "typescript": "^5.4.4" }, "optionalDependencies": { "@tanstack/eslint-plugin-query": "^5.52.0" }, "dependencies": { - "@antfu/install-pkg": "^0.4.0", + "@antfu/install-pkg": "^0.4.1", "@nolyfill/is-core-module": "^1.0.39", - "@aet/eslint-define-config": "^0.1.0-beta.24", + "@aet/eslint-define-config": "^0.1.0-beta.28", + "@eslint/js": "^9.12.0", "@eslint-community/eslint-utils": "^4.4.0", - "@types/eslint": "^9.6.0", - "@typescript-eslint/eslint-plugin": "^8.2.0", - "@typescript-eslint/parser": "^8.2.0", - "@typescript-eslint/type-utils": "^8.2.0", - "@typescript-eslint/utils": "^8.2.0", - "@eslint-react/eslint-plugin": "1.12.1", - "@stylistic/eslint-plugin": "^2.6.4", - "aria-query": "^5.3.0", + "@types/eslint": "^9.6.1", + "@typescript-eslint/eslint-plugin": "^8.9.0", + "@typescript-eslint/parser": "^8.9.0", + "@eslint-react/eslint-plugin": "1.15.0", + "@stylistic/eslint-plugin": "^2.9.0", + "@typescript-eslint/type-utils": "^8.9.0", + "@typescript-eslint/utils": "^8.9.0", + "aria-query": "^5.3.2", "axe-core": "^4.10.0", "axobject-query": "4.1.0", "damerau-levenshtein": "1.0.8", - "debug": "^4.3.6", + "debug": "^4.3.7", "doctrine": "^3.0.0", - "emoji-regex": "^10.3.0", + "emoji-regex": "^10.4.0", "enhanced-resolve": "^5.17.1", + "typescript-eslint": "^8.9.0", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.1", + "eslint-module-utils": "^2.12.0", "eslint-plugin-es-x": "^8.0.0", - "eslint-plugin-import-x": "^3.1.0", - "eslint-plugin-jsdoc": "^50.2.2", - "eslint-plugin-react-refresh": "^0.4.11", - "eslint-plugin-unicorn": "^55.0.0", + "eslint-plugin-import-x": "^4.3.1", + "eslint-plugin-unicorn": "^56.0.0", "esprima": "^4.0.1", "esquery": "^1.6.0", "estraverse": "^5.3.0", "fast-glob": "^3.3.2", - "get-tsconfig": "^4.7.6", - "is-bun-module": "^1.1.0", - "ignore": "^5.3.2", + "get-tsconfig": "^4.8.1", + "globals": "^15.11.0", + "ignore": "^6.0.2", + "is-bun-module": "^1.2.1", "is-glob": "^4.0.3", "language-tags": "^1.0.9", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "minimatch": "^10.0.1", "semver": "^7.6.3" }, @@ -68,4 +70,4 @@ "**/is-core-module": "file:./overrides/is-core-module", "**/supports-preserve-symlinks-flag": "file:./overrides/supports-preserve-symlinks-flag" } -} \ No newline at end of file +} diff --git a/dist/print-config.sh b/dist/print-config.sh old mode 100644 new mode 100755 index 55f6ad4..e6f08fd --- a/dist/print-config.sh +++ b/dist/print-config.sh @@ -1,2 +1,2 @@ #!/bin/bash -node -e "console.dir(require('./.eslintrc.js'), { depth: null })" +node -e "import('./eslint.config.mjs').then(config => console.dir(config, { depth: null }))" diff --git a/eslint.config.cjs b/eslint.config.cjs new file mode 100644 index 0000000..b41d8db --- /dev/null +++ b/eslint.config.cjs @@ -0,0 +1,3 @@ +/* eslint-disable */ +require('@swc-node/register'); +module.exports = require('./.eslint.ts').default; diff --git a/package.json b/package.json index f8f4d95..0243caa 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "name": "@aet/eslint-configs", + "type": "module", "scripts": { "build": "./scripts/build.ts", "check-import": "./scripts/check-imports.ts", @@ -8,48 +9,67 @@ }, "private": true, "devDependencies": { - "@aet/eslint-define-config": "^0.1.0-beta.24", - "@antfu/install-pkg": "^0.4.0", - "@babel/core": "^7.25.2", + "@aet/eslint-define-config": "^0.1.0-beta.28", + "@antfu/install-pkg": "^0.4.1", + "@babel/core": "^7.25.8", "@babel/plugin-transform-flow-strip-types": "^7.25.2", - "@babel/preset-env": "^7.25.4", + "@babel/preset-env": "^7.25.8", + "@eslint-react/eslint-plugin": "^1.15.0", + "@eslint/js": "^9.12.0", + "@graphql-eslint/eslint-plugin": "^3.20.1", + "@stylistic/eslint-plugin": "^2.9.0", + "@swc-node/register": "^1.10.9", + "@tanstack/eslint-plugin-query": "^5.59.7", "@types/babel-plugin-macros": "^3.1.3", "@types/babel__core": "^7.20.5", - "@types/eslint": "^9.6.0", + "@types/eslint": "^9.6.1", + "@types/eslint-plugin-tailwindcss": "^3.17.0", + "@types/eslint__js": "^8.42.3", "@types/esprima": "^4.0.6", "@types/esquery": "^1.5.4", - "@types/estree": "^1.0.5", + "@types/estree": "^1.0.6", "@types/estree-jsx": "^1.0.5", - "@types/lodash": "^4.17.7", - "@types/node": "^22.5.0", - "@typescript-eslint/eslint-plugin": "^8.2.0", - "@typescript-eslint/type-utils": "^8.2.0", - "@typescript-eslint/types": "^8.2.0", - "@typescript-eslint/typescript-estree": "^8.2.0", - "@typescript-eslint/utils": "^8.2.0", + "@types/lodash-es": "^4.17.12", + "@types/node": "^22.7.5", + "@types/react-refresh": "^0.14.6", + "@typescript-eslint/eslint-plugin": "^8.9.0", + "@typescript-eslint/parser": "^8.9.0", + "@typescript-eslint/type-utils": "^8.9.0", + "@typescript-eslint/types": "^8.9.0", + "@typescript-eslint/typescript-estree": "^8.9.0", + "@typescript-eslint/utils": "^8.9.0", "babel-plugin-macros": "^3.1.0", "dts-bundle-generator": "9.4.0", - "esbuild": "0.23.1", + "esbuild": "0.24.0", "esbuild-plugin-alias": "^0.2.1", - "eslint": "8.57.0", + "eslint": "9.12.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-import-x": "^3.1.0", - "eslint-plugin-jsdoc": "^50.2.2", - "eslint-plugin-unicorn": "^55.0.0", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import-x": "^4.3.1", + "eslint-plugin-jsdoc": "^50.4.1", + "eslint-plugin-react-refresh": "^0.4.12", + "eslint-plugin-storybook": "canary", + "eslint-plugin-testing-library": "^6.3.0", + "eslint-plugin-unicorn": "^56.0.0", + "eslint-plugin-vitest": "^0.5.4", "esprima": "^4.0.1", "esquery": "^1.6.0", "fast-glob": "^3.3.2", "find-cache-dir": "^5.0.0", - "json-schema-to-ts": "^3.1.0", - "lodash": "^4.17.21", + "globals": "^15.11.0", + "graphql": "^16.9.0", + "jiti": "^1.21.6", + "json-schema-to-ts": "^3.1.1", + "lodash-es": "^4.17.21", "nolyfill": "^1.0.39", "patch-package": "^8.0.0", - "picocolors": "^1.0.1", + "picocolors": "^1.1.0", "prettier": "^3.3.3", "prop-types": "^15.8.1", - "terser": "^5.31.6", - "type-fest": "^4.25.0", - "typescript": "^5.5.4" + "terser": "^5.34.1", + "type-fest": "^4.26.1", + "typescript": "^5.6.3", + "typescript-eslint": "^8.9.0" }, "prettier": { "arrowParens": "avoid", @@ -75,7 +95,8 @@ "json-stable-stringify": "npm:@nolyfill/json-stable-stringify@^1" }, "patchedDependencies": { - "@typescript-eslint/typescript-estree@8.0.0": "patches/@typescript-eslint__typescript-estree@8.0.0.patch" + "@typescript-eslint/typescript-estree@8.0.0": "patches/@typescript-eslint__typescript-estree@8.0.0.patch", + "dts-bundle-generator": "patches/dts-bundle-generator.patch" } } } diff --git a/packages/eslint-plugin-react-hooks/ExhaustiveDeps.ts b/packages/eslint-plugin-react-hooks/ExhaustiveDeps.ts index 122469d..9a974ea 100644 --- a/packages/eslint-plugin-react-hooks/ExhaustiveDeps.ts +++ b/packages/eslint-plugin-react-hooks/ExhaustiveDeps.ts @@ -22,8 +22,11 @@ import type { ChainExpression, Pattern, OptionalMemberExpression, + ArrayExpression, + VariableDeclaration, } from 'estree'; import type { FromSchema } from 'json-schema-to-ts'; + import { __EXPERIMENTAL__ } from './index'; const schema = { @@ -81,7 +84,23 @@ const rule: Rule.RuleModule = { context.report(problem); } - const scopeManager = context.sourceCode.scopeManager; + /** + * SourceCode#getText that also works down to ESLint 3.0.0 + */ + const getSource = + typeof context.getSource === 'function' + ? (node: Node) => context.getSource(node) + : (node: Node) => context.sourceCode.getText(node); + + /** + * SourceCode#getScope that also works down to ESLint 3.0.0 + */ + const getScope = + typeof context.getScope === 'function' + ? () => context.getScope() + : (node: Node) => context.sourceCode.getScope(node); + + const scopeManager = context.getSourceCode().scopeManager; // Should be shared between visitors. const setStateCallSites = new WeakMap(); @@ -128,7 +147,7 @@ const rule: Rule.RuleModule = { ' }\n' + ' fetchData();\n' + `}, [someId]); // Or [] if effect doesn't need props or state\n\n` + - 'Learn more about data fetching with Hooks: https://reactjs.org/link/hooks-data-fetching', + 'Learn more about data fetching with Hooks: https://react.dev/link/hooks-data-fetching', }); } @@ -173,6 +192,8 @@ const rule: Rule.RuleModule = { // ^^^ true for this reference // const [state, dispatch] = useReducer() / React.useReducer() // ^^^ true for this reference + // const [state, dispatch] = useActionState() / React.useActionState() + // ^^^ true for this reference // const ref = useRef() // ^^^ true for this reference // const onStuff = useEffectEvent(() => {}) @@ -187,31 +208,32 @@ const rule: Rule.RuleModule = { return false; } // Look for `let stuff = ...` - if (def.node.type !== 'VariableDeclarator') { + const node = def.node as Node; + if (node.type !== 'VariableDeclarator') { return false; } - let init = (def.node as VariableDeclarator).init; + let init = node.init; if (init == null) { return false; } - while (init.type === 'TSAsExpression') { + while (init.type === 'TSAsExpression' || init.type === 'AsExpression') { init = init.expression; } // Detect primitive constants // const foo = 42 - let declaration = def.node.parent; + let declaration = node.parent; if (declaration == null) { // This might happen if variable is declared after the callback. // In that case ESLint won't set up .parent refs. // So we'll set them up manually. - fastFindReferenceWithParent(componentScope.block, def.node.id); - declaration = def.node.parent; + fastFindReferenceWithParent(componentScope.block, node.id); + declaration = node.parent; if (declaration == null) { return false; } } if ( - declaration.kind === 'const' && + (declaration as VariableDeclaration).kind === 'const' && init.type === 'Literal' && (typeof init.value === 'string' || typeof init.value === 'number' || @@ -252,7 +274,11 @@ const rule: Rule.RuleModule = { } // useEffectEvent() return value is always unstable. return true; - } else if (name === 'useState' || name === 'useReducer') { + } else if ( + name === 'useState' || + name === 'useReducer' || + name === 'useActionState' + ) { // Only consider second value in initializing tuple stable. if ( id.type === 'ArrayPattern' && @@ -264,14 +290,14 @@ const rule: Rule.RuleModule = { if (name === 'useState') { const references = resolved.references; let writeCount = 0; - for (let i = 0; i < references.length; i++) { - if (references[i].isWrite()) { + for (const reference of references) { + if (reference.isWrite()) { writeCount++; } if (writeCount > 1) { return false; } - setStateCallSites.set(references[i].identifier, id.elements[0]!); + setStateCallSites.set(reference.identifier, id.elements[0]!); } } // Setter is stable. @@ -279,27 +305,25 @@ const rule: Rule.RuleModule = { } else if (id.elements[0] === resolved.identifiers[0]) { if (name === 'useState') { const references = resolved.references; - for (let i = 0; i < references.length; i++) { - stateVariables.add(references[i].identifier); + for (const reference of references) { + stateVariables.add(reference.identifier); } } // State variable itself is dynamic. return false; } } - } else if (name === 'useTransition') { + } else if ( // Only consider second value in initializing tuple stable. - if ( - id.type === 'ArrayPattern' && - id.elements.length === 2 && - Array.isArray(resolved.identifiers) - ) { - // Is second tuple value the same reference we're checking? - if (id.elements[1] === resolved.identifiers[0]) { - // Setter is stable. - return true; - } - } + name === 'useTransition' && + id.type === 'ArrayPattern' && + id.elements.length === 2 && + Array.isArray(resolved.identifiers) && + // Is second tuple value the same reference we're checking? + id.elements[1] === resolved.identifiers[0] + ) { + // Setter is stable. + return true; } // By default assume it's dynamic. return false; @@ -319,7 +343,7 @@ const rule: Rule.RuleModule = { } // Search the direct component subscopes for // top-level function definitions matching this reference. - const fnNode = def.node; + const fnNode = def.node as Node; const childScopes = componentScope.childScopes; let fnScope = null; let i; @@ -424,9 +448,9 @@ const rule: Rule.RuleModule = { dependencyNode.type === 'Identifier' && (dependencyNode.parent!.type === 'MemberExpression' || dependencyNode.parent!.type === 'OptionalMemberExpression') && - !dependencyNode.parent!.computed && - dependencyNode.parent!.property.type === 'Identifier' && - dependencyNode.parent!.property.name === 'current' && + !dependencyNode.parent.computed && + dependencyNode.parent.property.type === 'Identifier' && + dependencyNode.parent.property.name === 'current' && // ...in a cleanup function or below... isInsideEffectCleanup(reference) ) { @@ -479,12 +503,11 @@ const rule: Rule.RuleModule = { // Warn about accessing .current in cleanup effects. currentRefsInEffectCleanup.forEach(({ reference, dependencyNode }, dependency) => { - const references: Scope.Reference[] = reference.resolved!.references; + const references: Scope.Reference[] = reference.resolved.references; // Is React managing this ref or us? // Let's see if we can find a .current assignment. let foundCurrentAssignment = false; - for (let i = 0; i < references.length; i++) { - const { identifier } = references[i]; + for (const { identifier } of references) { const { parent } = identifier; if ( parent != null && @@ -496,7 +519,7 @@ const rule: Rule.RuleModule = { parent.property.name === 'current' && // ref.current = parent.parent!.type === 'AssignmentExpression' && - parent.parent!.left === parent + parent.parent.left === parent ) { foundCurrentAssignment = true; break; @@ -529,11 +552,11 @@ const rule: Rule.RuleModule = { node: writeExpr, message: `Assignments to the '${key}' variable from inside React Hook ` + - `${context.getSource(reactiveHook)} will be lost after each ` + + `${getSource(reactiveHook)} will be lost after each ` + `render. To preserve the value over time, store it in a useRef ` + `Hook and keep the mutable value in the '.current' property. ` + `Otherwise, you can move this variable directly inside ` + - `${context.getSource(reactiveHook)}.`, + `${getSource(reactiveHook)}.`, }); } @@ -543,11 +566,11 @@ const rule: Rule.RuleModule = { if (isStable) { stableDependencies.add(key); } - references.forEach(reference => { + for (const reference of references) { if (reference.writeExpr) { reportStaleAssignment(reference.writeExpr, key); } - }); + } }); if (staleAssignments.size > 0) { @@ -563,15 +586,15 @@ const rule: Rule.RuleModule = { if (setStateInsideEffectWithoutDeps) { return; } - references.forEach(reference => { + for (const reference of references) { if (setStateInsideEffectWithoutDeps) { - return; + continue; } const id = reference.identifier; const isSetState: boolean = setStateCallSites.has(id); if (!isSetState) { - return; + continue; } let fnScope: Scope.Scope = reference.from; @@ -583,9 +606,8 @@ const rule: Rule.RuleModule = { // TODO: we could potentially ignore early returns. setStateInsideEffectWithoutDeps = key; } - }); + } }); - if (setStateInsideEffectWithoutDeps) { const { suggestedDependencies } = collectRecommendations({ dependencies, @@ -620,49 +642,56 @@ const rule: Rule.RuleModule = { const declaredDependencies: DeclaredDependency[] = []; const externalDependencies = new Set(); - if (declaredDependenciesNode.type !== 'ArrayExpression') { + const isArrayExpression = declaredDependenciesNode.type === 'ArrayExpression'; + const isTSAsArrayExpression = + declaredDependenciesNode.type === 'TSAsExpression' && + declaredDependenciesNode.expression.type === 'ArrayExpression'; + if (!isArrayExpression && !isTSAsArrayExpression) { // If the declared dependencies are not an array expression then we // can't verify that the user provided the correct dependencies. Tell // the user this in an error. reportProblem({ node: declaredDependenciesNode, message: - `React Hook ${context.getSource(reactiveHook)} was passed a ` + + `React Hook ${getSource(reactiveHook)} was passed a ` + 'dependency list that is not an array literal. This means we ' + "can't statically verify whether you've passed the correct " + 'dependencies.', }); } else { - declaredDependenciesNode.elements.forEach(declaredDependencyNode => { + const arrayExpression = isTSAsArrayExpression + ? declaredDependenciesNode.expression + : declaredDependenciesNode; + + for (const declaredDependencyNode of (arrayExpression as ArrayExpression) + .elements) { // Skip elided elements. if (declaredDependencyNode === null) { - return; + continue; } // If we see a spread element then add a special warning. if (declaredDependencyNode.type === 'SpreadElement') { reportProblem({ node: declaredDependencyNode, message: - `React Hook ${context.getSource(reactiveHook)} has a spread ` + + `React Hook ${getSource(reactiveHook)} has a spread ` + "element in its dependency array. This means we can't " + "statically verify whether you've passed the " + 'correct dependencies.', }); - return; + continue; } if (useEffectEventVariables.has(declaredDependencyNode)) { reportProblem({ node: declaredDependencyNode, message: 'Functions returned from `useEffectEvent` must not be included in the dependency array. ' + - `Remove \`${context.getSource(declaredDependencyNode)}\` from the list.`, + `Remove \`${getSource(declaredDependencyNode)}\` from the list.`, suggest: [ { - desc: `Remove the dependency \`${context.getSource( - declaredDependencyNode, - )}\``, + desc: `Remove the dependency \`${getSource(declaredDependencyNode)}\``, fix(fixer) { - return fixer.removeRange(declaredDependencyNode.range!); + return fixer.removeRange(declaredDependencyNode.range); }, }, ], @@ -696,13 +725,13 @@ const rule: Rule.RuleModule = { reportProblem({ node: declaredDependencyNode, message: - `React Hook ${context.getSource(reactiveHook)} has a ` + + `React Hook ${getSource(reactiveHook)} has a ` + `complex expression in the dependency array. ` + 'Extract it to a separate variable so it can be statically checked.', }); } - return; + continue; } else { throw error; } @@ -731,7 +760,7 @@ const rule: Rule.RuleModule = { if (!isDeclaredInComponent) { externalDependencies.add(declaredDependency); } - }); + } } const { @@ -782,9 +811,7 @@ const rule: Rule.RuleModule = { const message = `The '${construction.name.name}' ${depType} ${causation} the dependencies of ` + - `${reactiveHookName} Hook (at line ${ - declaredDependenciesNode.loc!.start.line - }) ` + + `${reactiveHookName} Hook (at line ${declaredDependenciesNode.loc!.start.line}) ` + `change on every render. ${advice}`; let suggest: Rule.SuggestionReportDescriptor[] | undefined; @@ -838,7 +865,7 @@ const rule: Rule.RuleModule = { // in some extra deduplication. We can't do this // for effects though because those have legit // use cases for over-specifying deps. - if (!isEffect && missingDependencies.size) { + if (!isEffect && missingDependencies.size > 0) { suggestedDeps = collectRecommendations({ dependencies, declaredDependencies: [], // Pretend we don't know @@ -854,7 +881,7 @@ const rule: Rule.RuleModule = { return true; } const declaredDepKeys = declaredDependencies.map(dep => dep.key); - const sortedDeclaredDepKeys = declaredDepKeys.slice().sort(); + const sortedDeclaredDepKeys = [...declaredDepKeys].sort(); return declaredDepKeys.join(',') === sortedDeclaredDepKeys.join(','); } @@ -895,11 +922,7 @@ const rule: Rule.RuleModule = { ' ' + (deps.size > 1 ? 'dependencies' : 'dependency') + ': ' + - joinEnglish( - Array.from(deps) - .sort() - .map(name => "'" + formatDependency(name) + "'"), - ) + + joinEnglish([...deps].sort().map(name => "'" + formatDependency(name) + "'")) + `. Either ${fixVerb} ${ deps.size > 1 ? 'them' : 'it' } or remove the dependency array.` @@ -909,20 +932,20 @@ const rule: Rule.RuleModule = { let extraWarning = ''; if (unnecessaryDependencies.size > 0) { let badRef: string | null = null; - Array.from(unnecessaryDependencies.keys()).forEach(key => { + for (const key of unnecessaryDependencies.keys()) { if (badRef !== null) { - return; + continue; } if (key.endsWith('.current')) { badRef = key; } - }); + } if (badRef !== null) { extraWarning = ` Mutable values like '${badRef}' aren't valid dependencies ` + "because mutating them doesn't re-render the component."; } else if (externalDependencies.size > 0) { - const dep = Array.from(externalDependencies)[0]; + const dep = [...externalDependencies][0]; // Don't show this warning for things that likely just got moved *inside* the callback // because in that case they're clearly not referring to globals. if (!scope.set.has(dep)) { @@ -971,11 +994,11 @@ const rule: Rule.RuleModule = { ` However, 'props' will change when *any* prop changes, so the ` + `preferred fix is to destructure the 'props' object outside of ` + `the ${reactiveHookName} call and refer to those specific props ` + - `inside ${context.getSource(reactiveHook)}.`; + `inside ${getSource(reactiveHook)}.`; } } - if (!extraWarning && missingDependencies.size) { + if (!extraWarning && missingDependencies.size > 0) { // See if the user is trying to avoid specifying a callable prop. // This usually means they're unaware of useCallback. let missingCallbackDep: string | null = null; @@ -1041,7 +1064,7 @@ const rule: Rule.RuleModule = { let id: Identifier; let maybeCall: Node | null; for (let i = 0; i < references.length; i++) { - id = references[i].identifier as Identifier; + id = references[i].identifier; maybeCall = id.parent!; // Try to see if we have setState(someExpr(missingDep)). while (maybeCall != null && maybeCall !== componentScope.block) { @@ -1125,7 +1148,7 @@ const rule: Rule.RuleModule = { reportProblem({ node: declaredDependenciesNode, message: - `React Hook ${context.getSource(reactiveHook)} has ` + + `React Hook ${getSource(reactiveHook)} has ` + // To avoid a long message, show the next actionable item. (getWarningMessage(missingDependencies, 'a', 'missing', 'include') || getWarningMessage(unnecessaryDependencies, 'an', 'unnecessary', 'exclude') || @@ -1158,7 +1181,11 @@ const rule: Rule.RuleModule = { const reactiveHook = node.callee as Identifier | MemberExpression; const reactiveHookName = (getNodeWithoutReactNamespace(reactiveHook) as Identifier) .name; - const declaredDependenciesNode = node.arguments[callbackIndex + 1]; + const maybeNode = node.arguments[callbackIndex + 1]; + const declaredDependenciesNode = + maybeNode && !(maybeNode.type === 'Identifier' && maybeNode.name === 'undefined') + ? maybeNode + : undefined; const isEffect = /Effect($|[^a-z])/g.test(reactiveHookName); // Check whether a callback is supplied. If there is no callback supplied @@ -1203,7 +1230,16 @@ const rule: Rule.RuleModule = { isEffect, ); return; // Handled - case 'Identifier': + case 'TSAsExpression': + visitFunctionWithDependencies( + callback.expression, + declaredDependenciesNode, + reactiveHook, + reactiveHookName, + isEffect, + ); + return; // Handled + case 'Identifier': { if (!declaredDependenciesNode) { // No deps, no problems. return; // Handled @@ -1221,7 +1257,7 @@ const rule: Rule.RuleModule = { return; // Handled } // We'll do our best effort to find it, complain otherwise. - const variable = context.getScope().set.get(callback.name); + const variable = getScope(callback).set.get(callback.name); if (variable == null || variable.defs == null) { // If it's not in scope, we don't care. return; // Handled @@ -1271,6 +1307,7 @@ const rule: Rule.RuleModule = { break; // Unhandled } break; // Unhandled + } default: // useEffect(generateEffectBody(), []); reportProblem({ @@ -1358,33 +1395,33 @@ function collectRecommendations({ function createDepTree(): DepTree { return { - isUsed: false, - isSatisfiedRecursively: false, - isSubtreeUsed: false, - children: new Map(), + isUsed: false, // True if used in code + isSatisfiedRecursively: false, // True if specified in deps + isSubtreeUsed: false, // True if something deeper is used by code + children: new Map(), // Nodes for properties }; } // Mark all required nodes first. // Imagine exclamation marks next to each used deep property. - dependencies.forEach((_, key) => { + for (const key of dependencies.keys()) { const node = getOrCreateNodeByPath(depTree, key); node.isUsed = true; markAllParentsByPath(depTree, key, parent => { parent.isSubtreeUsed = true; }); - }); + } // Mark all satisfied nodes. // Imagine checkmarks next to each declared dependency. - declaredDependencies.forEach(({ key }) => { + for (const { key } of declaredDependencies) { const node = getOrCreateNodeByPath(depTree, key); node.isSatisfiedRecursively = true; - }); - stableDependencies.forEach(key => { + } + for (const key of stableDependencies) { const node = getOrCreateNodeByPath(depTree, key); node.isSatisfiedRecursively = true; - }); + } // Tree manipulation helpers. function getOrCreateNodeByPath(rootNode: DepTree, path: string): DepTree { @@ -1460,15 +1497,15 @@ function collectRecommendations({ const suggestedDependencies: string[] = []; const unnecessaryDependencies = new Set(); const duplicateDependencies = new Set(); - declaredDependencies.forEach(({ key }) => { + for (const { key } of declaredDependencies) { // Does this declared dep satisfy a real need? if (satisfyingDependencies.has(key)) { - if (!suggestedDependencies.includes(key)) { - // Good one. - suggestedDependencies.push(key); - } else { + if (suggestedDependencies.includes(key)) { // Duplicate. duplicateDependencies.add(key); + } else { + // Good one. + suggestedDependencies.push(key); } } else { if (isEffect && !key.endsWith('.current') && !externalDependencies.has(key)) { @@ -1476,7 +1513,7 @@ function collectRecommendations({ // Such as resetting scroll when ID changes. // Consider them legit. // The exception is ref.current which is always wrong. - if (suggestedDependencies.indexOf(key) === -1) { + if (!suggestedDependencies.includes(key)) { suggestedDependencies.push(key); } } else { @@ -1484,12 +1521,12 @@ function collectRecommendations({ unnecessaryDependencies.add(key); } } - }); + } // Then add the missing ones at the end. - missingDependencies.forEach(key => { + for (const key of missingDependencies) { suggestedDependencies.push(key); - }); + } return { suggestedDependencies, @@ -1545,7 +1582,7 @@ function getConstructionExpressionType(node: Node) { } return null; case 'TypeCastExpression': - return getConstructionExpressionType(node.expression); + case 'AsExpression': case 'TSAsExpression': return getConstructionExpressionType(node.expression); } @@ -1623,12 +1660,13 @@ function scanForConstructions({ while (currentScope !== scope && currentScope != null) { currentScope = currentScope.upper!; } - if (currentScope !== scope) { + if ( + currentScope !== scope && // This reference is outside the Hook callback. // It can only be legit if it's the deps array. - if (!isAncestorNodeOf(declaredDependenciesNode, reference.identifier)) { - return true; - } + !isAncestorNodeOf(declaredDependenciesNode, reference.identifier) + ) { + return true; } } return false; @@ -1653,7 +1691,6 @@ function getDependency(node: Node): Node { if ( (parent.type === 'MemberExpression' || parent.type === 'OptionalMemberExpression') && parent.object === node && - parent.property.type === 'Identifier' && parent.property.name !== 'current' && !parent.computed && !( @@ -1796,7 +1833,7 @@ function getReactiveHookCallbackIndex( try { name = analyzePropertyChain(node, null); } catch (error) { - if (/Unsupported node type/.test(error.message)) { + if (/Unsupported node type/.test((error as Error).message)) { return 0; } else { throw error; @@ -1842,12 +1879,12 @@ function fastFindReferenceWithParent(start: Node, target: Node): Node | null { value.parent = item; queue.push(value); } else if (Array.isArray(value)) { - value.forEach(val => { + for (const val of value) { if (isNodeLike(val)) { val.parent = item; queue.push(val); } - }); + } } } } @@ -1870,7 +1907,7 @@ function joinEnglish(arr: string[]): string { return s; } -function isNodeLike(val: any): boolean { +function isNodeLike(val: unknown): val is Node { return ( typeof val === 'object' && val !== null && diff --git a/packages/eslint-plugin-react-hooks/RulesOfHooks.ts b/packages/eslint-plugin-react-hooks/RulesOfHooks.ts index 4366eb2..3e3dce0 100644 --- a/packages/eslint-plugin-react-hooks/RulesOfHooks.ts +++ b/packages/eslint-plugin-react-hooks/RulesOfHooks.ts @@ -6,7 +6,6 @@ */ /* global BigInt */ -/* eslint-disable no-for-of-loops/no-for-of-loops */ import type { Rule, Scope } from 'eslint'; import type { CallExpression, @@ -16,6 +15,7 @@ import type { Identifier, BaseFunction, } from 'estree'; + import { __EXPERIMENTAL__ } from './index'; /** @@ -24,10 +24,7 @@ import { __EXPERIMENTAL__ } from './index'; */ function isHookName(s: string) { - if (__EXPERIMENTAL__) { - return s === 'use' || /^use[A-Z0-9]/.test(s); - } - return /^use[A-Z0-9]/.test(s); + return s === 'use' || /^use[\dA-Z]/.test(s); } /** @@ -94,10 +91,8 @@ function isMemoCallback(node: Rule.Node) { function isInsideComponentOrHook(node: Rule.Node) { while (node) { const functionName = getFunctionName(node); - if (functionName) { - if (isComponentName(functionName) || isHook(functionName)) { - return true; - } + if (functionName && (isComponentName(functionName) || isHook(functionName))) { + return true; } if (isForwardRefCallback(node) || isMemoCallback(node)) { return true; @@ -115,10 +110,7 @@ function isUseEffectEventIdentifier(node: Node) { } function isUseIdentifier(node: Node) { - if (__EXPERIMENTAL__) { - return node.type === 'Identifier' && node.name === 'use'; - } - return false; + return isReactFunction(node as Expression, 'use'); } const rule: Rule.RuleModule = { @@ -161,6 +153,22 @@ const rule: Rule.RuleModule = { } } + /** + * SourceCode#getText that also works down to ESLint 3.0.0 + */ + const getSource = + typeof context.getSource === 'function' + ? (node: Node) => context.getSource(node) + : (node: Node) => context.sourceCode.getText(node); + + /** + * SourceCode#getScope that also works down to ESLint 3.0.0 + */ + const getScope = + typeof context.getScope === 'function' + ? () => context.getScope() + : (node: Node) => context.sourceCode.getScope(node); + return { // Maintain code segment path stack as we traverse. onCodePathSegmentStart: segment => codePathSegmentStack.push(segment), @@ -479,7 +487,7 @@ const rule: Rule.RuleModule = { context.report({ node: hook, message: - `React Hook "${context.getSource(hook)}" may be executed ` + + `React Hook "${getSource(hook)}" may be executed ` + 'more than once. Possibly because it is called in a loop. ' + 'React Hooks must be called in the exact same order in ' + 'every component render.', @@ -498,7 +506,7 @@ const rule: Rule.RuleModule = { context.report({ node: hook, message: - `React Hook "${context.getSource(hook)}" cannot be ` + + `React Hook "${getSource(hook)}" cannot be ` + 'called in an async function.', }); } @@ -513,7 +521,7 @@ const rule: Rule.RuleModule = { !isUseIdentifier(hook) // `use(...)` can be called conditionally. ) { const message = - `React Hook "${context.getSource(hook)}" is called ` + + `React Hook "${getSource(hook)}" is called ` + 'conditionally. React Hooks must be called in the exact ' + 'same order in every component render.' + (possiblyHasEarlyReturn @@ -530,15 +538,15 @@ const rule: Rule.RuleModule = { ) { // Custom message for hooks inside a class const message = - `React Hook "${context.getSource(hook)}" cannot be called ` + + `React Hook "${getSource(hook)}" cannot be called ` + 'in a class component. React Hooks must be called in a ' + 'React function component or a custom React Hook function.'; context.report({ node: hook, message }); } else if (codePathFunctionName) { // Custom message if we found an invalid function name. const message = - `React Hook "${context.getSource(hook)}" is called in ` + - `function "${context.getSource(codePathFunctionName)}" ` + + `React Hook "${getSource(hook)}" is called in ` + + `function "${getSource(codePathFunctionName)}" ` + 'that is neither a React function component nor a custom ' + 'React Hook function.' + ' React component names must start with an uppercase letter.' + @@ -547,7 +555,7 @@ const rule: Rule.RuleModule = { } else if (codePathNode.type === 'Program') { // These are dangerous if you have inline requires enabled. const message = - `React Hook "${context.getSource(hook)}" cannot be called ` + + `React Hook "${getSource(hook)}" cannot be called ` + 'at the top level. React Hooks must be called in a ' + 'React function component or a custom React Hook function.'; context.report({ node: hook, message }); @@ -560,7 +568,7 @@ const rule: Rule.RuleModule = { // `use(...)` can be called in callbacks. if (isSomewhereInsideComponentOrHook && !isUseIdentifier(hook)) { const message = - `React Hook "${context.getSource(hook)}" cannot be called ` + + `React Hook "${getSource(hook)}" cannot be called ` + 'inside a callback. React Hooks must be called in a ' + 'React function component or a custom React Hook function.'; context.report({ node: hook, message }); @@ -612,7 +620,7 @@ const rule: Rule.RuleModule = { context.report({ node, message: - `\`${context.getSource( + `\`${getSource( node, )}\` is a function created with React Hook "useEffectEvent", and can only be called from ` + 'the same component. They cannot be assigned to variables or passed down.', @@ -629,14 +637,14 @@ const rule: Rule.RuleModule = { FunctionDeclaration(node) { // function MyComponent() { const onClick = useEffectEvent(...) } if (isInsideComponentOrHook(node)) { - recordAllUseEffectEventFunctions(context.getScope()); + recordAllUseEffectEventFunctions(getScope(node)); } }, ArrowFunctionExpression(node) { // const MyComponent = () => { const onClick = useEffectEvent(...) } if (isInsideComponentOrHook(node)) { - recordAllUseEffectEventFunctions(context.getScope()); + recordAllUseEffectEventFunctions(getScope(node)); } }, }; diff --git a/packages/eslint-plugin-react-hooks/index.ts b/packages/eslint-plugin-react-hooks/index.ts index 7b7df4a..ed1b200 100644 --- a/packages/eslint-plugin-react-hooks/index.ts +++ b/packages/eslint-plugin-react-hooks/index.ts @@ -4,23 +4,30 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -import type { Linter } from 'eslint'; -import RulesOfHooks from './RulesOfHooks'; + +import { Linter } from 'eslint'; + import ExhaustiveDeps from './ExhaustiveDeps'; +import { name, version } from './package.json'; +import RulesOfHooks from './RulesOfHooks'; export const __EXPERIMENTAL__ = false; -export const configs = { +export const flatConfigs = { recommended: { - plugins: ['react-hooks'], + name: 'react-hooks/recommended', + plugins: { + 'react-hooks': { + meta: { name, version }, + rules: { + 'rules-of-hooks': RulesOfHooks, + 'exhaustive-deps': ExhaustiveDeps, + }, + }, + }, rules: { 'react-hooks/rules-of-hooks': 'error', 'react-hooks/exhaustive-deps': 'warn', }, - } as Linter.BaseConfig, -}; - -export const rules = { - 'rules-of-hooks': RulesOfHooks, - 'exhaustive-deps': ExhaustiveDeps, + } satisfies Linter.Config, }; diff --git a/packages/eslint-plugin-react-hooks/package.json b/packages/eslint-plugin-react-hooks/package.json index 0e80d74..5ad1006 100644 --- a/packages/eslint-plugin-react-hooks/package.json +++ b/packages/eslint-plugin-react-hooks/package.json @@ -1,6 +1,9 @@ { + "name": "eslint-plugin-react-hooks", + "version": "4.2.0", "upstream": { "version": 1, + "comment": "https://github.com/facebook/react/pull/30774", "sources": { "main": { "repository": "git@github.com:facebook/react.git", diff --git a/patch/eslint-import-resolver-typescript.patch b/patch/eslint-import-resolver-typescript.patch deleted file mode 100644 index 6691663..0000000 --- a/patch/eslint-import-resolver-typescript.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff --git a/tsconfig.json b/tsconfig.json -index 39c6900..6fd8822 100644 ---- a/tsconfig.json -+++ b/tsconfig.json -@@ -1,5 +1,4 @@ - { -- "extends": "@1stg/tsconfig/node16", - "compilerOptions": { - "module": "Node16", - "outDir": "./lib", diff --git a/patch/eslint-plugin-jsx-a11y.patch b/patch/eslint-plugin-jsx-a11y.patch index a58e8cd..e89def6 100644 --- a/patch/eslint-plugin-jsx-a11y.patch +++ b/patch/eslint-plugin-jsx-a11y.patch @@ -1,5 +1,5 @@ diff --git a/src/index.js b/src/index.js -index 2fa185f..29d65d0 100644 +index 2fa185f..3cf8018 100644 --- a/src/index.js +++ b/src/index.js @@ -1,48 +1,90 @@ @@ -135,7 +135,13 @@ index 2fa185f..29d65d0 100644 }; const recommendedRules = { -@@ -299,10 +341,10 @@ const jsxA11y = { +@@ -294,15 +336,15 @@ const jsxA11y = { + * Given a ruleset and optionally a flat config name, generate a config. + * @param {object} rules - ruleset for this config + * @param {string} flatConfigName - name for the config if flat +- * @returns Config for this set of rules. ++ * @returns {import('eslint').Linter.Config} Config for this set of rules. + */ const createConfig = (rules, flatConfigName) => ({ ...(flatConfigName ? { @@ -150,6 +156,55 @@ index 2fa185f..29d65d0 100644 : { ...legacyConfigBase, plugins: ['jsx-a11y'] }), rules: { ...rules }, }); +@@ -317,4 +359,4 @@ const flatConfigs = { + strict: createConfig(strictRules, 'strict'), + }; + +-module.exports = { ...jsxA11y, configs, flatConfigs }; ++export default { ...jsxA11y, configs, flatConfigs }; +diff --git a/src/rules/autocomplete-valid.js b/src/rules/autocomplete-valid.js +index df7b6b8..c4d0da1 100644 +--- a/src/rules/autocomplete-valid.js ++++ b/src/rules/autocomplete-valid.js +@@ -6,7 +6,7 @@ + // ---------------------------------------------------------------------------- + // Rule Definition + // ---------------------------------------------------------------------------- +-import { runVirtualRule } from 'axe-core'; ++import axe from 'axe-core'; + import { getLiteralPropValue, getProp } from 'jsx-ast-utils'; + import { generateObjSchema, arraySchema } from '../util/schemas'; + import getElementType from '../util/getElementType'; +@@ -24,23 +24,25 @@ export default { + schema: [schema], + }, + +- create: (context) => { ++ create: context => { + const elementType = getElementType(context); + return { +- JSXOpeningElement: (node) => { ++ JSXOpeningElement: node => { + const options = context.options[0] || {}; + const { inputComponents = [] } = options; + const inputTypes = ['input'].concat(inputComponents); + + const elType = elementType(node); +- const autocomplete = getLiteralPropValue(getProp(node.attributes, 'autocomplete')); ++ const autocomplete = getLiteralPropValue( ++ getProp(node.attributes, 'autocomplete'), ++ ); + + if (typeof autocomplete !== 'string' || !inputTypes.includes(elType)) { + return; + } + + const type = getLiteralPropValue(getProp(node.attributes, 'type')); +- const { violations } = runVirtualRule('autocomplete-valid', { ++ const { violations } = axe.runVirtualRule('autocomplete-valid', { + nodeName: 'input', + attributes: { + autocomplete, diff --git a/src/util/mayContainChildComponent.js b/src/util/mayContainChildComponent.js index 43a03ef..5e1035e 100644 --- a/src/util/mayContainChildComponent.js @@ -163,3 +218,16 @@ index 43a03ef..5e1035e 100644 export default function mayContainChildComponent( root: Node, +diff --git a/src/util/mayHaveAccessibleLabel.js b/src/util/mayHaveAccessibleLabel.js +index 186ef5e..3dd7d4d 100644 +--- a/src/util/mayHaveAccessibleLabel.js ++++ b/src/util/mayHaveAccessibleLabel.js +@@ -11,7 +11,7 @@ + import includes from 'array-includes'; + import { getPropValue, propName, elementType as rawElementType } from 'jsx-ast-utils'; + import type { JSXOpeningElement, Node } from 'ast-types-flow'; +-import minimatch from 'minimatch'; ++import { minimatch } from 'minimatch'; + + function tryTrim(value: any) { + return typeof value === 'string' ? value.trim() : value; diff --git a/patches/@typescript-eslint__utils@8.2.0.patch b/patches/@typescript-eslint__utils@8.2.0.patch new file mode 100644 index 0000000..9e91494 --- /dev/null +++ b/patches/@typescript-eslint__utils@8.2.0.patch @@ -0,0 +1,13 @@ +diff --git a/dist/eslint-utils/getParserServices.js b/dist/eslint-utils/getParserServices.js +index 3b3020f601ba9cc92fdaf643ee3a8bdc44d1291a..730fccd5838b388b496a8861705e0d9883fc2fcb 100644 +--- a/dist/eslint-utils/getParserServices.js ++++ b/dist/eslint-utils/getParserServices.js +@@ -24,7 +24,7 @@ function getParserServices(context, allowWithoutFullTypeInformation = false) { + // this forces the user to supply parserOptions.project + if (context.sourceCode.parserServices.program == null && + !allowWithoutFullTypeInformation) { +- throwError(parser); ++ // throwError(parser); + } + return context.sourceCode.parserServices; + } diff --git a/patches/dts-bundle-generator.patch b/patches/dts-bundle-generator.patch new file mode 100644 index 0000000..7b35e00 --- /dev/null +++ b/patches/dts-bundle-generator.patch @@ -0,0 +1,11 @@ +diff --git a/dist/helpers/check-diagnostics-errors.js b/dist/helpers/check-diagnostics-errors.js +index 3ff0a59509fe381189764a253e6b668241e3b921..9b1eadf36278cea8dadc6cb5cfed4c4a89e91609 100644 +--- a/dist/helpers/check-diagnostics-errors.js ++++ b/dist/helpers/check-diagnostics-errors.js +@@ -20,6 +20,5 @@ function checkDiagnosticsErrors(diagnostics, failMessage) { + return; + } + (0, logger_1.errorLog)(ts.formatDiagnostics(diagnostics, formatDiagnosticsHost).trim()); +- throw new Error(failMessage); + } + exports.checkDiagnosticsErrors = checkDiagnosticsErrors; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ff074da..fcbe685 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,26 +22,47 @@ patchedDependencies: '@typescript-eslint/typescript-estree@8.0.0': hash: zlal42evfhopemboiioznx3k3i path: patches/@typescript-eslint__typescript-estree@8.0.0.patch + dts-bundle-generator: + hash: 3kshr7c3ovng23wh5dalj55oha + path: patches/dts-bundle-generator.patch importers: .: devDependencies: '@aet/eslint-define-config': - specifier: ^0.1.0-beta.24 - version: 0.1.0-beta.24 + specifier: ^0.1.0-beta.28 + version: 0.1.0-beta.28 '@antfu/install-pkg': - specifier: ^0.3.5 - version: 0.3.5 + specifier: ^0.4.1 + version: 0.4.1 '@babel/core': - specifier: ^7.25.2 - version: 7.25.2 + specifier: ^7.25.8 + version: 7.25.8 '@babel/plugin-transform-flow-strip-types': specifier: ^7.25.2 - version: 7.25.2(@babel/core@7.25.2) + version: 7.25.2(@babel/core@7.25.8) '@babel/preset-env': - specifier: ^7.25.3 - version: 7.25.3(@babel/core@7.25.2) + specifier: ^7.25.8 + version: 7.25.8(@babel/core@7.25.8) + '@eslint-react/eslint-plugin': + specifier: ^1.15.0 + version: 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint/js': + specifier: ^9.12.0 + version: 9.12.0 + '@graphql-eslint/eslint-plugin': + specifier: ^3.20.1 + version: 3.20.1(@babel/core@7.25.8)(@types/node@22.7.5)(graphql@16.9.0) + '@stylistic/eslint-plugin': + specifier: ^2.9.0 + version: 2.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@swc-node/register': + specifier: ^1.10.9 + version: 1.10.9(@swc/core@1.7.23)(@swc/types@0.1.12)(typescript@5.6.3) + '@tanstack/eslint-plugin-query': + specifier: ^5.59.7 + version: 5.59.7(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) '@types/babel-plugin-macros': specifier: ^3.1.3 version: 3.1.3 @@ -49,8 +70,14 @@ importers: specifier: ^7.20.5 version: 7.20.5 '@types/eslint': - specifier: ^9.6.0 - version: 9.6.0 + specifier: ^9.6.1 + version: 9.6.1 + '@types/eslint-plugin-tailwindcss': + specifier: ^3.17.0 + version: 3.17.0 + '@types/eslint__js': + specifier: ^8.42.3 + version: 8.42.3 '@types/esprima': specifier: ^4.0.6 version: 4.0.6 @@ -58,59 +85,80 @@ importers: specifier: ^1.5.4 version: 1.5.4 '@types/estree': - specifier: ^1.0.5 - version: 1.0.5 + specifier: ^1.0.6 + version: 1.0.6 '@types/estree-jsx': specifier: ^1.0.5 version: 1.0.5 - '@types/lodash': - specifier: ^4.17.7 - version: 4.17.7 + '@types/lodash-es': + specifier: ^4.17.12 + version: 4.17.12 '@types/node': - specifier: ^22.4.0 - version: 22.4.0 + specifier: ^22.7.5 + version: 22.7.5 + '@types/react-refresh': + specifier: ^0.14.6 + version: 0.14.6 '@typescript-eslint/eslint-plugin': - specifier: ^8.1.0 - version: 8.1.0(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + specifier: ^8.9.0 + version: 8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/parser': + specifier: ^8.9.0 + version: 8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) '@typescript-eslint/type-utils': - specifier: ^8.1.0 - version: 8.1.0(eslint@8.57.0)(typescript@5.5.4) + specifier: ^8.9.0 + version: 8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) '@typescript-eslint/types': - specifier: ^8.1.0 - version: 8.1.0 + specifier: ^8.9.0 + version: 8.9.0 '@typescript-eslint/typescript-estree': - specifier: ^8.1.0 - version: 8.1.0(typescript@5.5.4) + specifier: ^8.9.0 + version: 8.9.0(typescript@5.6.3) '@typescript-eslint/utils': specifier: 8.0.0 - version: 8.0.0(eslint@8.57.0)(typescript@5.5.4) + version: 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) babel-plugin-macros: specifier: ^3.1.0 version: 3.1.0 dts-bundle-generator: specifier: 9.4.0 - version: 9.4.0 + version: 9.4.0(patch_hash=3kshr7c3ovng23wh5dalj55oha) esbuild: - specifier: 0.23.1 - version: 0.23.1 + specifier: 0.24.0 + version: 0.24.0 esbuild-plugin-alias: specifier: ^0.2.1 version: 0.2.1 eslint: - specifier: 8.57.0 - version: 8.57.0 + specifier: 9.12.0 + version: 9.12.0(jiti@1.21.6) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) + version: 9.1.0(eslint@9.12.0(jiti@1.21.6)) + eslint-import-resolver-typescript: + specifier: ^3.6.3 + version: 3.6.3(@typescript-eslint/parser@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6)) eslint-plugin-import-x: - specifier: ^3.1.0 - version: 3.1.0(eslint@8.57.0)(typescript@5.5.4) + specifier: ^4.3.1 + version: 4.3.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) eslint-plugin-jsdoc: - specifier: ^50.2.2 - version: 50.2.2(eslint@8.57.0) + specifier: ^50.4.1 + version: 50.4.1(eslint@9.12.0(jiti@1.21.6)) + eslint-plugin-react-refresh: + specifier: ^0.4.12 + version: 0.4.12(eslint@9.12.0(jiti@1.21.6)) + eslint-plugin-storybook: + specifier: canary + version: 0.9.0--canary.165.991522a.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint-plugin-testing-library: + specifier: ^6.3.0 + version: 6.3.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) eslint-plugin-unicorn: - specifier: ^55.0.0 - version: 55.0.0(eslint@8.57.0) + specifier: ^56.0.0 + version: 56.0.0(eslint@9.12.0(jiti@1.21.6)) + eslint-plugin-vitest: + specifier: ^0.5.4 + version: 0.5.4(@typescript-eslint/eslint-plugin@8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) esprima: specifier: ^4.0.1 version: 4.0.1 @@ -123,10 +171,19 @@ importers: find-cache-dir: specifier: ^5.0.0 version: 5.0.0 + globals: + specifier: ^15.11.0 + version: 15.11.0 + graphql: + specifier: ^16.9.0 + version: 16.9.0 + jiti: + specifier: ^1.21.6 + version: 1.21.6 json-schema-to-ts: - specifier: ^3.1.0 - version: 3.1.0 - lodash: + specifier: ^3.1.1 + version: 3.1.1 + lodash-es: specifier: ^4.17.21 version: 4.17.21 nolyfill: @@ -136,8 +193,8 @@ importers: specifier: ^8.0.0 version: 8.0.0 picocolors: - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.1.0 + version: 1.1.0 prettier: specifier: ^3.3.3 version: 3.3.3 @@ -145,58 +202,77 @@ importers: specifier: ^15.8.1 version: 15.8.1 terser: - specifier: ^5.31.6 - version: 5.31.6 + specifier: ^5.34.1 + version: 5.34.1 type-fest: - specifier: ^4.24.0 - version: 4.24.0 + specifier: ^4.26.1 + version: 4.26.1 typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.6.3 + version: 5.6.3 + typescript-eslint: + specifier: ^8.9.0 + version: 8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) packages: - '@aet/eslint-define-config@0.1.0-beta.24': - resolution: {integrity: sha512-eFVYlxL0ORnucuaW3lDHzTmHOQKSb42QuvoO3PBokAAXRgmknGJUibprko0FDenA2rpLPReXfU5kwOvre+U3BA==} + '@aet/eslint-define-config@0.1.0-beta.28': + resolution: {integrity: sha512-qQy+nMhUFChwfSaScJ/dY2oPY2X0EAGk9d+DbmJu9zCYA4GPeb/W7nLLw7tKQr95188a6LlN9mBirQiJYOCWIg==} engines: {node: '>=18.0.0', npm: '>=9.0.0'} '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@antfu/install-pkg@0.3.5': - resolution: {integrity: sha512-HwIACY0IzrM7FGafMbWZOqEDBSfCwPcylu+GacaRcxJm4Yvvuh3Dy2vZwqdJAzXponc6aLO9FaH4l75pq8/ZSA==} + '@antfu/install-pkg@0.4.1': + resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} + + '@ardatan/sync-fetch@0.0.1': + resolution: {integrity: sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==} + engines: {node: '>=14'} '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.2': - resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + '@babel/code-frame@7.25.7': + resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} engines: {node: '>=6.9.0'} - '@babel/core@7.25.2': - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + '@babel/compat-data@7.25.8': + resolution: {integrity: sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.25.0': - resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + '@babel/core@7.25.8': + resolution: {integrity: sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.6': + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.7': + resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} - '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': - resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} + '@babel/helper-annotate-as-pure@7.25.7': + resolution: {integrity: sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.2': - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.7': + resolution: {integrity: sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.25.0': - resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} + '@babel/helper-compilation-targets@7.25.7': + resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.25.7': + resolution: {integrity: sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -207,51 +283,61 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.25.7': + resolution: {integrity: sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-define-polyfill-provider@0.6.2': resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-member-expression-to-functions@7.24.8': - resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + '@babel/helper-member-expression-to-functions@7.25.7': + resolution: {integrity: sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + '@babel/helper-module-imports@7.25.7': + resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.25.2': - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + '@babel/helper-module-transforms@7.25.7': + resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.24.7': - resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + '@babel/helper-optimise-call-expression@7.25.7': + resolution: {integrity: sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==} engines: {node: '>=6.9.0'} '@babel/helper-plugin-utils@7.24.8': resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.25.0': - resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} + '@babel/helper-plugin-utils@7.25.7': + resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.25.7': + resolution: {integrity: sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.25.0': - resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + '@babel/helper-replace-supers@7.25.7': + resolution: {integrity: sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.24.7': - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + '@babel/helper-simple-access@7.25.7': + resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==} engines: {node: '>=6.9.0'} - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': - resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + '@babel/helper-skip-transparent-expression-wrappers@7.25.7': + resolution: {integrity: sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.24.8': @@ -262,53 +348,66 @@ packages: resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.24.8': - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + '@babel/helper-validator-identifier@7.25.7': + resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.25.0': - resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} + '@babel/helper-validator-option@7.25.7': + resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.25.0': - resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + '@babel/helper-wrap-function@7.25.7': + resolution: {integrity: sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.25.7': + resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} engines: {node: '>=6.9.0'} '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.25.3': - resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + '@babel/highlight@7.25.7': + resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3': - resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} + '@babel/parser@7.25.8': + resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7': + resolution: {integrity: sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0': - resolution: {integrity: sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==} + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7': + resolution: {integrity: sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0': - resolution: {integrity: sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==} + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.7': + resolution: {integrity: sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7': - resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.7': + resolution: {integrity: sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0': - resolution: {integrity: sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.7': + resolution: {integrity: sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -319,98 +418,26 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-export-namespace-from@7.8.3': - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-flow@7.24.7': resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.24.7': - resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} + '@babel/plugin-syntax-import-assertions@7.25.6': + resolution: {integrity: sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.24.7': - resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} + '@babel/plugin-syntax-import-assertions@7.25.7': + resolution: {integrity: sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + '@babel/plugin-syntax-import-attributes@7.25.7': + resolution: {integrity: sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -421,98 +448,98 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-arrow-functions@7.24.7': - resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} + '@babel/plugin-transform-arrow-functions@7.25.7': + resolution: {integrity: sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.25.0': - resolution: {integrity: sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==} + '@babel/plugin-transform-async-generator-functions@7.25.8': + resolution: {integrity: sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.24.7': - resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} + '@babel/plugin-transform-async-to-generator@7.25.7': + resolution: {integrity: sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.24.7': - resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} + '@babel/plugin-transform-block-scoped-functions@7.25.7': + resolution: {integrity: sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.25.0': - resolution: {integrity: sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==} + '@babel/plugin-transform-block-scoping@7.25.7': + resolution: {integrity: sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.24.7': - resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} + '@babel/plugin-transform-class-properties@7.25.7': + resolution: {integrity: sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.24.7': - resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} + '@babel/plugin-transform-class-static-block@7.25.8': + resolution: {integrity: sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.25.0': - resolution: {integrity: sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==} + '@babel/plugin-transform-classes@7.25.7': + resolution: {integrity: sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-computed-properties@7.24.7': - resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} + '@babel/plugin-transform-computed-properties@7.25.7': + resolution: {integrity: sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.24.8': - resolution: {integrity: sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==} + '@babel/plugin-transform-destructuring@7.25.7': + resolution: {integrity: sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.24.7': - resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} + '@babel/plugin-transform-dotall-regex@7.25.7': + resolution: {integrity: sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-keys@7.24.7': - resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} + '@babel/plugin-transform-duplicate-keys@7.25.7': + resolution: {integrity: sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0': - resolution: {integrity: sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==} + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7': + resolution: {integrity: sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-dynamic-import@7.24.7': - resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} + '@babel/plugin-transform-dynamic-import@7.25.8': + resolution: {integrity: sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.24.7': - resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} + '@babel/plugin-transform-exponentiation-operator@7.25.7': + resolution: {integrity: sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.24.7': - resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} + '@babel/plugin-transform-export-namespace-from@7.25.8': + resolution: {integrity: sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -523,206 +550,206 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-for-of@7.24.7': - resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} + '@babel/plugin-transform-for-of@7.25.7': + resolution: {integrity: sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-function-name@7.25.1': - resolution: {integrity: sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==} + '@babel/plugin-transform-function-name@7.25.7': + resolution: {integrity: sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.24.7': - resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} + '@babel/plugin-transform-json-strings@7.25.8': + resolution: {integrity: sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.25.2': - resolution: {integrity: sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==} + '@babel/plugin-transform-literals@7.25.7': + resolution: {integrity: sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.24.7': - resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} + '@babel/plugin-transform-logical-assignment-operators@7.25.8': + resolution: {integrity: sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-member-expression-literals@7.24.7': - resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} + '@babel/plugin-transform-member-expression-literals@7.25.7': + resolution: {integrity: sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-amd@7.24.7': - resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} + '@babel/plugin-transform-modules-amd@7.25.7': + resolution: {integrity: sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.24.8': - resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} + '@babel/plugin-transform-modules-commonjs@7.25.7': + resolution: {integrity: sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.25.0': - resolution: {integrity: sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==} + '@babel/plugin-transform-modules-systemjs@7.25.7': + resolution: {integrity: sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-umd@7.24.7': - resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} + '@babel/plugin-transform-modules-umd@7.25.7': + resolution: {integrity: sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7': - resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} + '@babel/plugin-transform-named-capturing-groups-regex@7.25.7': + resolution: {integrity: sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-new-target@7.24.7': - resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} + '@babel/plugin-transform-new-target@7.25.7': + resolution: {integrity: sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7': - resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} + '@babel/plugin-transform-nullish-coalescing-operator@7.25.8': + resolution: {integrity: sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-numeric-separator@7.24.7': - resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} + '@babel/plugin-transform-numeric-separator@7.25.8': + resolution: {integrity: sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.24.7': - resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} + '@babel/plugin-transform-object-rest-spread@7.25.8': + resolution: {integrity: sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-super@7.24.7': - resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} + '@babel/plugin-transform-object-super@7.25.7': + resolution: {integrity: sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.24.7': - resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} + '@babel/plugin-transform-optional-catch-binding@7.25.8': + resolution: {integrity: sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.24.8': - resolution: {integrity: sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==} + '@babel/plugin-transform-optional-chaining@7.25.8': + resolution: {integrity: sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-parameters@7.24.7': - resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} + '@babel/plugin-transform-parameters@7.25.7': + resolution: {integrity: sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.24.7': - resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} + '@babel/plugin-transform-private-methods@7.25.7': + resolution: {integrity: sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.24.7': - resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} + '@babel/plugin-transform-private-property-in-object@7.25.8': + resolution: {integrity: sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-property-literals@7.24.7': - resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} + '@babel/plugin-transform-property-literals@7.25.7': + resolution: {integrity: sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.24.7': - resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} + '@babel/plugin-transform-regenerator@7.25.7': + resolution: {integrity: sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-reserved-words@7.24.7': - resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} + '@babel/plugin-transform-reserved-words@7.25.7': + resolution: {integrity: sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-shorthand-properties@7.24.7': - resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} + '@babel/plugin-transform-shorthand-properties@7.25.7': + resolution: {integrity: sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.24.7': - resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} + '@babel/plugin-transform-spread@7.25.7': + resolution: {integrity: sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-sticky-regex@7.24.7': - resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} + '@babel/plugin-transform-sticky-regex@7.25.7': + resolution: {integrity: sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-template-literals@7.24.7': - resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} + '@babel/plugin-transform-template-literals@7.25.7': + resolution: {integrity: sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typeof-symbol@7.24.8': - resolution: {integrity: sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==} + '@babel/plugin-transform-typeof-symbol@7.25.7': + resolution: {integrity: sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-escapes@7.24.7': - resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} + '@babel/plugin-transform-unicode-escapes@7.25.7': + resolution: {integrity: sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-property-regex@7.24.7': - resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} + '@babel/plugin-transform-unicode-property-regex@7.25.7': + resolution: {integrity: sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-regex@7.24.7': - resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} + '@babel/plugin-transform-unicode-regex@7.25.7': + resolution: {integrity: sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-sets-regex@7.24.7': - resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} + '@babel/plugin-transform-unicode-sets-regex@7.25.7': + resolution: {integrity: sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.25.3': - resolution: {integrity: sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==} + '@babel/preset-env@7.25.8': + resolution: {integrity: sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -735,166 +762,183 @@ packages: '@babel/regjsgen@0.8.0': resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - '@babel/runtime@7.25.0': - resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} + '@babel/runtime@7.25.6': + resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} engines: {node: '>=6.9.0'} '@babel/template@7.25.0': resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.3': - resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + '@babel/template@7.25.7': + resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.6': + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.7': + resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} engines: {node: '>=6.9.0'} '@babel/types@7.25.2': resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} - '@es-joy/jsdoccomment@0.48.0': - resolution: {integrity: sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==} + '@emnapi/core@1.2.0': + resolution: {integrity: sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==} + + '@emnapi/runtime@1.2.0': + resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} + + '@emnapi/wasi-threads@1.0.1': + resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} + + '@es-joy/jsdoccomment@0.49.0': + resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} engines: {node: '>=16'} - '@esbuild/aix-ppc64@0.23.1': - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + '@esbuild/aix-ppc64@0.24.0': + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.23.1': - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + '@esbuild/android-arm64@0.24.0': + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.23.1': - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + '@esbuild/android-arm@0.24.0': + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.23.1': - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + '@esbuild/android-x64@0.24.0': + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.23.1': - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + '@esbuild/darwin-arm64@0.24.0': + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.23.1': - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + '@esbuild/darwin-x64@0.24.0': + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.23.1': - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + '@esbuild/freebsd-arm64@0.24.0': + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.23.1': - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + '@esbuild/freebsd-x64@0.24.0': + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.23.1': - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + '@esbuild/linux-arm64@0.24.0': + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.23.1': - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + '@esbuild/linux-arm@0.24.0': + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.23.1': - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + '@esbuild/linux-ia32@0.24.0': + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.23.1': - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + '@esbuild/linux-loong64@0.24.0': + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.23.1': - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + '@esbuild/linux-mips64el@0.24.0': + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.23.1': - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + '@esbuild/linux-ppc64@0.24.0': + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.23.1': - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + '@esbuild/linux-riscv64@0.24.0': + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.23.1': - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + '@esbuild/linux-s390x@0.24.0': + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.23.1': - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + '@esbuild/linux-x64@0.24.0': + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.23.1': - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + '@esbuild/netbsd-x64@0.24.0': + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.23.1': - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + '@esbuild/openbsd-arm64@0.24.0': + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.1': - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + '@esbuild/openbsd-x64@0.24.0': + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.23.1': - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + '@esbuild/sunos-x64@0.24.0': + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.23.1': - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + '@esbuild/win32-arm64@0.24.0': + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.23.1': - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + '@esbuild/win32-ia32@0.24.0': + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.23.1': - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + '@esbuild/win32-x64@0.24.0': + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -909,26 +953,172 @@ packages: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint-react/ast@1.15.0': + resolution: {integrity: sha512-7rOLLfGER82FQJy7pCFNs4j/47RYTEiPDfMFGAu4W7yerJrvU2rRNqjSwwm1Iq0DrrasBV8a3IVtPYQoDOqycg==} - '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint-react/core@1.15.0': + resolution: {integrity: sha512-T7KirkdempegOxQznW1xclZtv5hQRChgbeYqisPRENkNg90w3uY7ia5iPf6FEZntkja/NF00VUnUetIw4rO0og==} - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@eslint-react/eslint-plugin@1.15.0': + resolution: {integrity: sha512-5cuu7gNBgwQwgDX1YJugL7ujay0NT27g3UN0qtJAON9WLBv/ESq+qLMxddGwPSljV/XGxhwbbys09Jgww/fy8A==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + '@eslint-react/jsx@1.15.0': + resolution: {integrity: sha512-VZy8RWPx+2PUuBKaXPtu2qWnWN9SpkdgY3ohkZoGdoqkEYkYaXjvABNByQLwvk2+Ewqt0K+1f8r7QoQi47pQmw==} + + '@eslint-react/shared@1.15.0': + resolution: {integrity: sha512-LRgcKKhNePEJzuwICe3rgUC5KVd4ZhlKys91gMxmUob3RCiUj4BjfAURJMqzwsPGF32WQeHkipw1hWNGpQNdlw==} + + '@eslint-react/tools@1.15.0': + resolution: {integrity: sha512-zdd2K3EV2tWaCzNH60wD159HuX904kWzv+X87yqzZ0Nf2OBUDJ4a561NoDX3Pn8A3E6hFdu666zpIGdeaej9eg==} + + '@eslint-react/types@1.15.0': + resolution: {integrity: sha512-bajL6xIUxZp36fezn5HEhQpL0eJM923hwfRj6cym2Xl0Jn2YgahSztHorsOpId71MYBgn9ERy9yXItcnrz0rsQ==} + + '@eslint-react/var@1.15.0': + resolution: {integrity: sha512-/QycKnbgZRygM/lhHtUFQrvvrswdOyaXfVxwtIFVEYoPHP9q7NaUn0mrBu4VWkXQC9zPk1nWQeC3rZMUxzretg==} + + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.6.0': + resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.12.0': + resolution: {integrity: sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.0': + resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@graphql-eslint/eslint-plugin@3.20.1': + resolution: {integrity: sha512-RbwVlz1gcYG62sECR1u0XqMh8w5e5XMCCZoMvPQ3nJzEBCTfXLGX727GBoRmSvY1x4gJmqNZ1lsOX7lZY14RIw==} + engines: {node: '>=12'} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + '@graphql-tools/batch-execute@8.5.22': + resolution: {integrity: sha512-hcV1JaY6NJQFQEwCKrYhpfLK8frSXDbtNMoTur98u10Cmecy1zrqNKSqhEyGetpgHxaJRqszGzKeI3RuroDN6A==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/code-file-loader@7.3.23': + resolution: {integrity: sha512-8Wt1rTtyTEs0p47uzsPJ1vAtfAx0jmxPifiNdmo9EOCuUPyQGEbMaik/YkqZ7QUFIEYEQu+Vgfo8tElwOPtx5Q==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/delegate@9.0.35': + resolution: {integrity: sha512-jwPu8NJbzRRMqi4Vp/5QX1vIUeUPpWmlQpOkXQD2r1X45YsVceyUUBnktCrlJlDB4jPRVy7JQGwmYo3KFiOBMA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/executor-graphql-ws@0.0.14': + resolution: {integrity: sha512-P2nlkAsPZKLIXImFhj0YTtny5NQVGSsKnhi7PzXiaHSXc6KkzqbWZHKvikD4PObanqg+7IO58rKFpGXP7eeO+w==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/executor-http@0.1.10': + resolution: {integrity: sha512-hnAfbKv0/lb9s31LhWzawQ5hghBfHS+gYWtqxME6Rl0Aufq9GltiiLBcl7OVVOnkLF0KhwgbYP1mB5VKmgTGpg==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/executor-legacy-ws@0.0.11': + resolution: {integrity: sha512-4ai+NnxlNfvIQ4c70hWFvOZlSUN8lt7yc+ZsrwtNFbFPH/EroIzFMapAxM9zwyv9bH38AdO3TQxZ5zNxgBdvUw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/executor@0.0.20': + resolution: {integrity: sha512-GdvNc4vszmfeGvUqlcaH1FjBoguvMYzxAfT6tDd4/LgwymepHhinqLNA5otqwVLW+JETcDaK7xGENzFomuE6TA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/graphql-file-loader@7.5.17': + resolution: {integrity: sha512-hVwwxPf41zOYgm4gdaZILCYnKB9Zap7Ys9OhY1hbwuAuC4MMNY9GpUjoTU3CQc3zUiPoYStyRtUGkHSJZ3HxBw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/graphql-tag-pluck@7.5.2': + resolution: {integrity: sha512-RW+H8FqOOLQw0BPXaahYepVSRjuOHw+7IL8Opaa5G5uYGOBxoXR7DceyQ7BcpMgktAOOmpDNQ2WtcboChOJSRA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/import@6.7.18': + resolution: {integrity: sha512-XQDdyZTp+FYmT7as3xRWH/x8dx0QZA2WZqfMF5EWb36a0PiH7WwlRQYIdyYXj8YCLpiWkeBXgBRHmMnwEYR8iQ==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/json-file-loader@7.4.18': + resolution: {integrity: sha512-AJ1b6Y1wiVgkwsxT5dELXhIVUPs/u3VZ8/0/oOtpcoyO/vAeM5rOvvWegzicOOnQw8G45fgBRMkkRfeuwVt6+w==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/load@7.8.14': + resolution: {integrity: sha512-ASQvP+snHMYm+FhIaLxxFgVdRaM0vrN9wW2BKInQpktwWTXVyk+yP5nQUCEGmn0RTdlPKrffBaigxepkEAJPrg==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/merge@8.4.2': + resolution: {integrity: sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/schema@9.0.19': + resolution: {integrity: sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/url-loader@7.17.18': + resolution: {integrity: sha512-ear0CiyTj04jCVAxi7TvgbnGDIN2HgqzXzwsfcqiVg9cvjT40NcMlZ2P1lZDgqMkZ9oyLTV8Bw6j+SyG6A+xPw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/utils@9.2.1': + resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/wrap@9.4.2': + resolution: {integrity: sha512-DFcd9r51lmcEKn0JW43CWkkI2D6T9XI1juW/Yo86i04v43O9w2/k4/nx2XTJv4Yv+iXwUw7Ok81PGltwGJSDSA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-typed-document-node/core@3.2.0': + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@humanfs/core@0.19.0': + resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.5': + resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==} + engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} @@ -951,9 +1141,8 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@jsdevtools/ez-spawn@3.0.4': - resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} - engines: {node: '>=10'} + '@napi-rs/wasm-runtime@0.2.4': + resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -975,10 +1164,190 @@ packages: resolution: {integrity: sha512-o1iEMo6ad7T2cKxZTzAb3u+Q3/H21SSsKFf5oAVn7PjmT7MJ0Ek2SeVcEdgVUmLmj31/jKo7U5zJWcTaC10Qow==} engines: {node: '>=12.4.0'} + '@oxc-resolver/binding-darwin-arm64@1.11.0': + resolution: {integrity: sha512-jjhTgaTMhJ5lpE/OiqF5eX7Nhy5gPZBjZNqwmZstbHmqujfVs1MGiTEXHWgKUrcFdLnENWtuoIR3Kmdp3/vuqw==} + cpu: [arm64] + os: [darwin] + + '@oxc-resolver/binding-darwin-x64@1.11.0': + resolution: {integrity: sha512-w/svTRKnuRinojYAVsWRozVoPar7XUPlJhpfnsYlReRjls6A53/ziTzHfpmcKjdBrP/AXPcDVJDnM4pOSsvWvA==} + cpu: [x64] + os: [darwin] + + '@oxc-resolver/binding-freebsd-x64@1.11.0': + resolution: {integrity: sha512-thGp8g8maYUx7vYJqD0vSsuUO95vWNJwKS2AXchq212J5dQ0Dybq4gjt2O2N9iU+lxj1QzmIDXGw7q5HCagOiw==} + cpu: [x64] + os: [freebsd] + + '@oxc-resolver/binding-linux-arm-gnueabihf@1.11.0': + resolution: {integrity: sha512-8G99bs4cnwpJRjRK2cEJXiJVyLogzPJq4JgLlcMEKSGhdkoMV1Ia0dghLk9lAFog33U4lWIwKmPgqQzTO6JM8g==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-gnu@1.11.0': + resolution: {integrity: sha512-hNcB/wbuCFbsspg4h9+Nz5gSL8PbRW7zG/eVvmEpzGhmVubzDFuNmlYtmaUaZ6b9jzOrrqTkYCt9t7Q2TDHnBA==} + cpu: [arm64] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-musl@1.11.0': + resolution: {integrity: sha512-H9rjqCcNQT9aip1VLrtsiyj9So0DEKUoutMNu1oL9UuD3H5lWIaxhDlHTAFsobWeUHCnuaCbizhGb9wyLRHSuA==} + cpu: [arm64] + os: [linux] + + '@oxc-resolver/binding-linux-x64-gnu@1.11.0': + resolution: {integrity: sha512-6hdv/kmaGysK3/hUaGTYG07yX+nvk6hGoWombmOuc0vBnGLRtSjqvvgDBdAs9/iIcOSQI2YNUEiJvTyy6eb5GA==} + cpu: [x64] + os: [linux] + + '@oxc-resolver/binding-linux-x64-musl@1.11.0': + resolution: {integrity: sha512-AYUvI4VwQkBq0rcYI3Z7a9+BpllbllbxQCD30ZRgHghvqXvDECWfP8r98iynz7u0oKGO8ZPf15d/l9VrkRtiuQ==} + cpu: [x64] + os: [linux] + + '@oxc-resolver/binding-wasm32-wasi@1.11.0': + resolution: {integrity: sha512-vhXnOs34q8p7QhqQ04bIGy7ZzLEHBaBTsqh2wpAzSBCmjL7MmTpM8KWwXFPFB+Wj0P7/parjGDHzbZG20pEePg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-resolver/binding-win32-arm64-msvc@1.11.0': + resolution: {integrity: sha512-5XMm8EELDkAVQoMGv4QKqi+SjWnhcU1aq5B9q59iqiXIBNAs72f0d3LAldLrqE2XomP2QweorpsoxuGuIk2Cnw==} + cpu: [arm64] + os: [win32] + + '@oxc-resolver/binding-win32-x64-msvc@1.11.0': + resolution: {integrity: sha512-rVKiZSTgao4SBWyqWvStxDhKmwbKEN/E8+H3CJzIP4FcsL7MQtWH2HT86bmoefkyRe1yO+m2/mG7j3TfADh/Fg==} + cpu: [x64] + os: [win32] + + '@peculiar/asn1-schema@2.3.13': + resolution: {integrity: sha512-3Xq3a01WkHRZL8X04Zsfg//mGaA21xlL4tlVn4v2xGT0JStiztATRkMwa5b+f/HXmY2smsiLXYK46Gwgzvfg3g==} + + '@peculiar/json-schema@1.1.12': + resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} + engines: {node: '>=8.0.0'} + + '@peculiar/webcrypto@1.5.0': + resolution: {integrity: sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==} + engines: {node: '>=10.12.0'} + '@pkgr/core@0.1.1': resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@repeaterjs/repeater@3.0.4': + resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} + + '@repeaterjs/repeater@3.0.6': + resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} + + '@storybook/csf@0.0.1': + resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} + + '@stylistic/eslint-plugin@2.9.0': + resolution: {integrity: sha512-OrDyFAYjBT61122MIY1a3SfEgy3YCMgt2vL4eoPmvTwDBwyQhAXurxNQznlRD/jESNfYWfID8Ej+31LljvF7Xg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.40.0' + + '@swc-node/core@1.13.3': + resolution: {integrity: sha512-OGsvXIid2Go21kiNqeTIn79jcaX4l0G93X2rAnas4LFoDyA9wAwVK7xZdm+QsKoMn5Mus2yFLCc4OtX2dD/PWA==} + engines: {node: '>= 10'} + peerDependencies: + '@swc/core': '>= 1.4.13' + '@swc/types': '>= 0.1' + + '@swc-node/register@1.10.9': + resolution: {integrity: sha512-iXy2sjP0phPEpK2yivjRC3PAgoLaT4sjSk0LDWCTdcTBJmR4waEog0E6eJbvoOkLkOtWw37SB8vCkl/bbh4+8A==} + peerDependencies: + '@swc/core': '>= 1.4.13' + typescript: '>= 4.3' + + '@swc-node/sourcemap-support@0.5.1': + resolution: {integrity: sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==} + + '@swc/core-darwin-arm64@1.7.23': + resolution: {integrity: sha512-yyOHPfti6yKlQulfVWMt7BVKst+SyEZYCWuQSGMn1KgmNCH/bYufRWfQXIhkGSj44ZkEepJmsJ8tDyIb4k5WyA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.7.23': + resolution: {integrity: sha512-GzqHwQ0Y1VyjdI/bBKFX2GKm5HD3PIB6OhuAQtWZMTtEr2yIrlT0YK2T+XKh7oIg31JwxGBeQdBk3KTI7DARmQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.7.23': + resolution: {integrity: sha512-qwX4gB41OS6/OZkHcpTqLFGsdmvoZyffnJIlgB/kZKwH3lfeJWzv6vx57zXtNpM/t7GoQEe0VZUVdmNjxSxBZw==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.7.23': + resolution: {integrity: sha512-TsrbUZdMaUwzI7+g/8rHPLWbntMKYSu5Bn5IBSqVKPeyqaXxNnlIUnWXgXcUcRAc+T+Y8ADfr7EiFz9iz5DuSA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.7.23': + resolution: {integrity: sha512-JEdtwdthazKq4PBz53KSubwwK8MvqODAihGSAzc8u3Unq4ojcvaS8b0CwLBeD+kTQ78HpxOXTt3DsFIxpgaCAA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.7.23': + resolution: {integrity: sha512-V51gFPWaVAHbI1yg9ahsoya3aB4uawye3SZ5uQWgcP7wdCdiv60dw4F5nuPJf5Z1oXD3U/BslXuamv8Oh9vXqQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.7.23': + resolution: {integrity: sha512-BBqQi4+UdeRqag3yM4IJjaHG4yc1o3l9ksENHToE0o/u2DT0FY5+K/DiYGZLC1JHbSFzNqRCYsa7DIzRtZ0A1A==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.7.23': + resolution: {integrity: sha512-JPk6pvCKncL6bXG7p+NLZf8PWx4FakVvKNdwGeMrYunb+yk1IZf7qf9LJk8+GDGF5QviDXPs8opZrTrfsW80fA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.7.23': + resolution: {integrity: sha512-2Whxi8d+bLQBzJcQ5qYPHlk02YYVGsMVav0fWk+FnX2z1QRREIu1L1xvrpi7gBpjXp6BIU40ya8GiKeekNT2bg==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.7.23': + resolution: {integrity: sha512-82fARk4/yJ40kwWKY/gdKDisPdtgJE9jgpl/vkNG3alyJxrCzuNM7+CtiKoYbXLeqM8GQTS3wlvCaJu9oQ8dag==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.7.23': + resolution: {integrity: sha512-VDNkpDvDlreGh2E3tlDj8B3piiuLhhQA/7rIVZpiLUvG1YpucAa6N7iDXA7Gc/+Hah8spaCg/qvEaBkCmcIYCQ==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.12': + resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} + + '@tanstack/eslint-plugin-query@5.59.7': + resolution: {integrity: sha512-txQGX5yC+4gmbR81EXaum2tOxeDQkRCWnaLmaP/pSrbIVCUkbMbrxxsaoOgN+fBqqqGo9V3LoCVL6ez1tRUF7Q==} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + '@types/babel-plugin-macros@3.1.3': resolution: {integrity: sha512-JU+MgpsHK3taY18mBETy5XlwY6LVngte7QXYzUuXEaaX0CN8dBqbjXtADe+gJmkSQE1FJHufzPj++OWZlhRmGw==} @@ -994,8 +1363,14 @@ packages: '@types/babel__traverse@7.20.6': resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - '@types/eslint@9.6.0': - resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==} + '@types/eslint-plugin-tailwindcss@3.17.0': + resolution: {integrity: sha512-ucQGf2YIdTcndYcxRU3UdZgmhUHsOlbIF4BaRtl0op+7k2JmqM2i3aXZ6XIcfZgVq1ZKov7VM5c/BR81ukmkyg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/eslint__js@8.42.3': + resolution: {integrity: sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==} '@types/esprima@4.0.6': resolution: {integrity: sha512-lIk+kSt9lGv5hxK6aZNjiUEGZqKmOTpmg0tKiJQI+Ow98fLillxsiZNik5+RcP7mXL929KiTH/D9jGtpDlMbVw==} @@ -1006,17 +1381,20 @@ packages: '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + '@types/lodash@4.17.7': resolution: {integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==} - '@types/node@22.4.0': - resolution: {integrity: sha512-49AbMDwYUz7EXxKU/r7mXOsxwFr4BYbvB7tWYxVuLdb2ibd30ijjXINSMAHiEEZk5PCRBmW1gUeisn2VMKt3cQ==} + '@types/node@22.7.5': + resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1024,8 +1402,14 @@ packages: '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - '@typescript-eslint/eslint-plugin@8.1.0': - resolution: {integrity: sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw==} + '@types/react-refresh@0.14.6': + resolution: {integrity: sha512-iVwjB4ge9LCpuLnPxCW9hjMX32zLLcdiB2gasCgzCMxPdDxEiqZ/5DuVGicDluLbvZRb7u1PYDmgbQmWMuxiLg==} + + '@types/ws@8.5.12': + resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} + + '@typescript-eslint/eslint-plugin@8.9.0': + resolution: {integrity: sha512-Y1n621OCy4m7/vTXNlCbMVp87zSd7NH0L9cXD8aIpOaNlzeWxIK4+Q19A68gSmTNRZn92UjocVUWDthGxtqHFg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -1035,8 +1419,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.0.0': - resolution: {integrity: sha512-pS1hdZ+vnrpDIxuFXYQpLTILglTjSYJ9MbetZctrUawogUsPdz31DIIRZ9+rab0LhYNTsk88w4fIzVheiTbWOQ==} + '@typescript-eslint/parser@8.9.0': + resolution: {integrity: sha512-U+BLn2rqTTHnc4FL3FJjxaXptTxmf9sNftJK62XLz4+GxG3hLHm/SUNaaXP5Y4uTiuYoL5YLy4JBCJe3+t8awQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1049,12 +1433,12 @@ packages: resolution: {integrity: sha512-V0aa9Csx/ZWWv2IPgTfY7T4agYwJyILESu/PVqFtTFz9RIS823mAze+NbnBI8xiwdX3iqeQbcTYlvB04G9wyQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.1.0': - resolution: {integrity: sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==} + '@typescript-eslint/scope-manager@8.9.0': + resolution: {integrity: sha512-bZu9bUud9ym1cabmOYH9S6TnbWRzpklVmwqICeOulTCZ9ue2/pczWzQvt/cGj2r2o1RdKoZbuEMalJJSYw3pHQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.1.0': - resolution: {integrity: sha512-oLYvTxljVvsMnldfl6jIKxTaU7ok7km0KDrwOt1RHYu6nxlhN3TIx8k5Q52L6wR33nOwDgM7VwW1fT1qMNfFIA==} + '@typescript-eslint/type-utils@8.9.0': + resolution: {integrity: sha512-JD+/pCqlKqAk5961vxCluK+clkppHY07IbV3vett97KOV+8C6l+CPEPwpUuiMwgbOz/qrN3Ke4zzjqbT+ls+1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1066,8 +1450,8 @@ packages: resolution: {integrity: sha512-wgdSGs9BTMWQ7ooeHtu5quddKKs5Z5dS+fHLbrQI+ID0XWJLODGMHRfhwImiHoeO2S5Wir2yXuadJN6/l4JRxw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.1.0': - resolution: {integrity: sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==} + '@typescript-eslint/types@8.9.0': + resolution: {integrity: sha512-SjgkvdYyt1FAPhU9c6FiYCXrldwYYlIQLkuc+LfAhCna6ggp96ACncdtlbn8FmnG72tUkXclrDExOpEYf1nfJQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.0.0': @@ -1079,8 +1463,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.1.0': - resolution: {integrity: sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==} + '@typescript-eslint/typescript-estree@8.9.0': + resolution: {integrity: sha512-9iJYTgKLDG6+iqegehc5+EqE6sqaee7kb8vWpmHZ86EqwDjmlqNNHeqDVqb9duh+BY6WCNHfIGvuVU3Tf9Db0g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1098,12 +1482,18 @@ packages: resolution: {integrity: sha512-oN0K4nkHuOyF3PVMyETbpP5zp6wfyOvm7tWhTMfoqxSSsPmJIh6JNASuZDlODE8eE+0EB9uar+6+vxr9DBTYOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.1.0': - resolution: {integrity: sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==} + '@typescript-eslint/visitor-keys@8.9.0': + resolution: {integrity: sha512-Ht4y38ubk4L5/U8xKUBfKNYGmvKvA1CANoxiTRMM+tOLk3lbF3DvzZCxJCRSE+2GdCMSh6zq9VZJc3asc1XuAA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@whatwg-node/events@0.0.3': + resolution: {integrity: sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA==} + + '@whatwg-node/fetch@0.8.8': + resolution: {integrity: sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg==} + + '@whatwg-node/node-fetch@0.3.6': + resolution: {integrity: sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA==} '@yarnpkg/lockfile@1.1.0': resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} @@ -1144,6 +1534,14 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + asn1js@3.0.5: + resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} + engines: {node: '>=12.0.0'} + at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} @@ -1157,8 +1555,8 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.10.4: - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + babel-plugin-polyfill-corejs3@0.10.6: + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -1170,6 +1568,9 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + birecord@0.1.1: + resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} + brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -1185,6 +1586,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.24.0: + resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -1192,15 +1598,19 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - call-me-maybe@1.0.2: - resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001646: - resolution: {integrity: sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==} + caniuse-lite@1.0.30001655: + resolution: {integrity: sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==} + + caniuse-lite@1.0.30001668: + resolution: {integrity: sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -1239,6 +1649,9 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -1255,17 +1668,27 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - core-js-compat@3.37.1: - resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} + core-js-compat@3.38.1: + resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} + cosmiconfig@8.0.0: + resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} + engines: {node: '>=14'} + cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + dataloader@2.2.2: + resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} + debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -1294,17 +1717,28 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} + dset@3.1.4: + resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} + engines: {node: '>=4'} + dts-bundle-generator@9.4.0: resolution: {integrity: sha512-XncfIDd3QMZLAQcXqHUd1GrNHFzPSSwJBVmsY7cyrSIgY2K+vr46Nrjw5x9jmvxivR7YNFUWrPMLn8OD0OEwAg==} engines: {node: '>=14.0.0'} hasBin: true - electron-to-chromium@1.5.4: - resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} + electron-to-chromium@1.5.13: + resolution: {integrity: sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==} + + electron-to-chromium@1.5.39: + resolution: {integrity: sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -1314,13 +1748,13 @@ packages: esbuild-plugin-alias@0.2.1: resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} - esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} engines: {node: '>=18'} hasBin: true - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} escape-string-regexp@1.0.5: @@ -1340,27 +1774,151 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-plugin-import-x@3.1.0: - resolution: {integrity: sha512-/UbPA+bYY7nIxcjL3kpcDY3UNdoLHFhyBFzHox2M0ypcUoueTn6woZUUmzzi5et/dXChksasYYFeKE2wshOrhg==} - engines: {node: '>=16'} + eslint-import-resolver-typescript@3.6.3: + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: ^8.56.0 || ^9.0.0-0 + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true - eslint-plugin-jsdoc@50.2.2: - resolution: {integrity: sha512-i0ZMWA199DG7sjxlzXn5AeYZxpRfMJjDPUl7lL9eJJX8TPRoIaxJU4ys/joP5faM5AXE1eqW/dslCj3uj4Nqpg==} + eslint-module-utils@2.9.0: + resolution: {integrity: sha512-McVbYmwA3NEKwRQY5g4aWMdcZE5xZxV8i8l7CqJSrameuGSQJtSWaL/LxTEzSKKaCcOhlpDR8XEfYXWPrdo/ZQ==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import-x@4.3.1: + resolution: {integrity: sha512-5TriWkXulDl486XnYYRgsL+VQoS/7mhN/2ci02iLCuL7gdhbiWxnsuL/NTcaKY9fpMgsMFjWZBtIGW7pb+RX0g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + eslint-plugin-jsdoc@50.4.1: + resolution: {integrity: sha512-OXIq+JJQPCLAKL473/esioFOwbXyRE5MAQ4HbZjcp3e+K3zdxt2uDpGs3FR+WezUXNStzEtTfgx15T+JFrVwBA==} engines: {node: '>=18'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-plugin-unicorn@55.0.0: - resolution: {integrity: sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==} + eslint-plugin-react-debug@1.15.0: + resolution: {integrity: sha512-zD5WOVPwKNnO4897gz2yjZZcvdGIObKEi4QURDammVEc3sCU0evHcAPEknTC1WEd7T8A4Zu7Vt7sDaUz/DALnA==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-dom@1.15.0: + resolution: {integrity: sha512-P8IdPfiEpDR8SHZdnYJzfdSkV++0hHzOJQhLW9eACyuGCBuzLj2gglmPR5gH2RG44R+Iq5+hsUVNv7sklThvRg==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-hooks-extra@1.15.0: + resolution: {integrity: sha512-guIcax3c4Z/iWyDwZdo5b0qzqpJrhH4svYIfj+wEpfjRdIwpAvL0xM1uqJKdz8Hbgw1D+6dePSau4zmVkuaMqA==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-naming-convention@1.15.0: + resolution: {integrity: sha512-XjbkBFEsaGvhDUKCxDCdJ34dsr/XnQu5a7hq6h2aNpnu05VGCAW6CXf3VuyI/sKfj3Em+aX/9eHdcRi12+dmLg==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-refresh@0.4.12: + resolution: {integrity: sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg==} + peerDependencies: + eslint: '>=7' + + eslint-plugin-react-web-api@1.15.0: + resolution: {integrity: sha512-LUwzKumBApdKzUgl+9F5/TyJbYGQIOy450s6kr3rLPrc9tk8GQrBmSQKmWh2g7C1x7DIoMNFXeUuAD1q/1AKnw==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-x@1.15.0: + resolution: {integrity: sha512-TIZVElFYVXvybmMBVzHPF2hmsaG7greytHd80efUPopxlr+JGjKba6zA3cJAURn+yzN1x2zPJzss2BkB8/48aQ==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-storybook@0.9.0--canary.165.991522a.0: + resolution: {integrity: sha512-vxd2pQ1UY8XJDHClzXJ5WjZojKSZSIOwK8dZuT1As5UfQDAC+gMWmGwF8IxrS0FwvoEaHSdekTPWLzphsfuSZA==} + engines: {node: '>= 18'} + peerDependencies: + eslint: '>=6' + + eslint-plugin-testing-library@6.3.0: + resolution: {integrity: sha512-GYcEErTt6EGwE0bPDY+4aehfEBpB2gDBFKohir8jlATSUvzStEyzCx8QWB/14xeKc/AwyXkzScSzMHnFojkWrA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + + eslint-plugin-unicorn@56.0.0: + resolution: {integrity: sha512-aXpddVz/PQMmd69uxO98PA4iidiVNvA0xOtbpUoz1WhBd4RxOQQYqN618v68drY0hmy5uU2jy1bheKEVWBjlPw==} engines: {node: '>=18.18'} peerDependencies: eslint: '>=8.56.0' - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-plugin-vitest@0.5.4: + resolution: {integrity: sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ==} + engines: {node: ^18.0.0 || >= 20.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': '*' + eslint: ^8.57.0 || ^9.0.0 + vitest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + vitest: + optional: true + + eslint-scope@8.1.0: + resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} @@ -1370,18 +1928,27 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-visitor-keys@4.1.0: + resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.12.0: + resolution: {integrity: sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true espree@10.1.0: resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@10.2.0: + resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -1404,6 +1971,13 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + extract-files@11.0.0: + resolution: {integrity: sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==} + engines: {node: ^12.20 || >= 14.13} + + fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1417,12 +1991,18 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-querystring@1.1.2: + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + + fast-url-parser@1.1.3: + resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} + fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} @@ -1447,9 +2027,9 @@ packages: find-yarn-workspace-root@2.0.0: resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} @@ -1469,8 +2049,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-tsconfig@4.7.6: - resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} + get-tsconfig@4.8.0: + resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==} glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -1488,12 +2068,12 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} - globals@15.9.0: - resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} + globals@15.11.0: + resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==} engines: {node: '>=18'} globby@11.1.0: @@ -1506,6 +2086,32 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + graphql-config@4.5.0: + resolution: {integrity: sha512-x6D0/cftpLUJ0Ch1e5sj1TZn6Wcxx4oMfmhaG9shM0DKajA9iR+j1z86GSTQ19fShbGvrSSvbIQsHku6aQ6BBw==} + engines: {node: '>= 10.0.0'} + peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true + + graphql-depth-limit@1.1.0: + resolution: {integrity: sha512-+3B2BaG8qQ8E18kzk9yiSdAa75i/hnnOwgSeAxVJctGQPvmeiLtqKOYF6HETCyRjiF7Xfsyal0HbLlxCQkgkrw==} + engines: {node: '>=6.0.0'} + peerDependencies: + graphql: '*' + + graphql-ws@5.12.1: + resolution: {integrity: sha512-umt4f5NnMK46ChM2coO36PTFhHouBrK9stWWBczERguwYrGnPNxJ9dimU6IyOBfOkC6Izhkg4H8+F51W/8CYDg==} + engines: {node: '>=10'} + peerDependencies: + graphql: '>=0.11 <=16' + + graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -1517,8 +2123,8 @@ packages: hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} import-fresh@3.3.0: @@ -1547,6 +2153,9 @@ packages: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} + is-bun-module@1.1.0: + resolution: {integrity: sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==} + is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -1564,14 +2173,16 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-immutable-type@5.0.0: + resolution: {integrity: sha512-mcvHasqbRBWJznuPqqHRKiJgYAz60sZ0mvO3bN70JbkuK7ksfmgc489aKZYxMEjIbRvyOseaTjaRZLRF/xFeRA==} + peerDependencies: + eslint: '*' + typescript: '>=4.7.4' + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -1579,6 +2190,19 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isomorphic-ws@5.0.0: + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + + jiti@1.17.1: + resolution: {integrity: sha512-NZIITw8uZQFuzQimqjUxIrIcEdxYDFIe/0xYfIlVXTkiBjjyBEvgasj5bb0/cHtPRD/NziPbT312sFrkI5ALpw==} + hasBin: true + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1610,8 +2234,8 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-schema-to-ts@3.1.0: - resolution: {integrity: sha512-UeVN/ery4/JeXI8h4rM8yZPxsH+KqPi/84qFxHfTGHZnWnK9D0UU9ZGYO+6XAaJLqCWMiks+ARuFOKAiSxJCHA==} + json-schema-to-ts@3.1.1: + resolution: {integrity: sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==} engines: {node: '>=16'} json-schema-traverse@0.4.1: @@ -1653,9 +2277,15 @@ packages: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.lowercase@4.3.0: + resolution: {integrity: sha512-UcvP1IZYyDKyEL64mmrwoA1AbFu5ahojhTtkOUr1K9dbuxzS9ev8i4TxMMGCqRC9TE8uDaSoufNAXxRPNTseVA==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -1673,17 +2303,34 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + meros@1.3.0: + resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} + engines: {node: '>=13'} + peerDependencies: + '@types/node': '>=13' + peerDependenciesMeta: + '@types/node': + optional: true + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@4.2.3: + resolution: {integrity: sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng==} + engines: {node: '>=10'} + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -1700,6 +2347,15 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} @@ -1711,6 +2367,10 @@ packages: normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -1730,6 +2390,9 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} + oxc-resolver@1.11.0: + resolution: {integrity: sha512-N3qMse2AM7uST8PaiUMXZkcACyGAMN073tomyvzHTICSzaOqKHvVS0IZ3vj/OqoE140QP4CyOiWmgC1Hw5Urmg==} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -1758,6 +2421,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-manager-detector@0.2.0: + resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -1798,13 +2464,21 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + pkg-dir@7.0.0: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} @@ -1825,10 +2499,20 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + pvtsutils@1.3.5: + resolution: {integrity: sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==} + + pvutils@1.1.3: + resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} + engines: {node: '>=6.0.0'} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -1847,6 +2531,10 @@ packages: resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} engines: {node: '>=4'} + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} + regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} @@ -1864,22 +2552,44 @@ packages: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} + regexpu-core@6.1.1: + resolution: {integrity: sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + regjsparser@0.10.0: resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} hasBin: true + regjsparser@0.11.1: + resolution: {integrity: sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==} + hasBin: true + regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true + remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + requireindex@1.2.0: + resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} + engines: {node: '>=0.10.5'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -1896,11 +2606,6 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -1925,6 +2630,10 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + short-unique-id@5.2.0: + resolution: {integrity: sha512-cMGfwNyfDZ/nzJ2k2M+ClthBIh//GlZl1JEf47Uoa9XR11bz8Pa2T2wQO4bVrRdH48LrIDWJahQziKo3MjhsWg==} + hasBin: true + slash@2.0.0: resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} engines: {node: '>=6'} @@ -1955,15 +2664,21 @@ packages: spdx-expression-parse@4.0.0: resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} - spdx-license-ids@3.0.18: - resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} stable-hash@0.0.4: resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + string-env-interpolation@1.0.1: + resolution: {integrity: sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==} + + string-ts@2.2.0: + resolution: {integrity: sha512-VTP0LLZo4Jp9Gz5IiDVMS9WyLx/3IeYh0PXUn0NdPqusUFNgkHPWiEdbB9TU2Iv3myUskraD5WtYEdHUrQEIlQ==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -1997,14 +2712,21 @@ packages: resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} engines: {node: ^14.18.0 || >=16.0.0} - terser@5.31.6: - resolution: {integrity: sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==} + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + terser@5.34.1: + resolution: {integrity: sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==} engines: {node: '>=10'} hasBin: true text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + tinyexec@0.3.0: + resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -2017,6 +2739,9 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + ts-algebra@2.0.0: resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==} @@ -2026,21 +2751,25 @@ packages: peerDependencies: typescript: '>=4.2.0' - tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + ts-declaration-location@1.0.4: + resolution: {integrity: sha512-r4JoxYhKULbZuH81Pjrp9OEG5St7XWk7zXwGkLKhmVcjiBVHTJXV5wK6dEa9JKW5QGSTW6b1lOjxAKp8R1SQhg==} + peerDependencies: + typescript: '>=4.0.0' + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + ts-pattern@5.5.0: + resolution: {integrity: sha512-jqbIpTsa/KKTJYWgPNsFNbLVpwCgzXfFJ1ukNn4I8hMwyQzHMJnk/BqWzggB0xpkILuKzaO/aMYhS0SkaJyKXg==} + + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} @@ -2049,17 +2778,26 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} - type-fest@4.24.0: - resolution: {integrity: sha512-spAaHzc6qre0TlZQQ2aA/nGMe+2Z/wyGk5Z+Ru2VUfdNwT6kWO6TjevOlpebsATEG1EIQ2sOiDszud3lO5mt/Q==} + type-fest@4.26.1: + resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} engines: {node: '>=16'} - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + typescript-eslint@8.9.0: + resolution: {integrity: sha512-AuD/FXGYRQyqyOBCpNLldMlsCGvmDNxptQ3Dp58/NXeB+FqyvTfXmMyba3PYa0Vi9ybnj7G8S/yd/4Cw8y47eA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} hasBin: true - undici-types@6.19.6: - resolution: {integrity: sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} @@ -2081,6 +2819,10 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unixify@1.0.0: + resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} + engines: {node: '>=0.10.0'} + update-browserslist-db@1.1.0: resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} hasBin: true @@ -2090,9 +2832,29 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + urlpattern-polyfill@8.0.2: + resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + value-or-promise@1.0.12: + resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} + engines: {node: '>=12'} + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + webcrypto-core@1.8.0: + resolution: {integrity: sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -2109,6 +2871,30 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -2143,35 +2929,47 @@ packages: snapshots: - '@aet/eslint-define-config@0.1.0-beta.24': {} + '@aet/eslint-define-config@0.1.0-beta.28': {} '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/install-pkg@0.3.5': + '@antfu/install-pkg@0.4.1': dependencies: - '@jsdevtools/ez-spawn': 3.0.4 + package-manager-detector: 0.2.0 + tinyexec: 0.3.0 + + '@ardatan/sync-fetch@0.0.1': + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 - picocolors: 1.0.1 + picocolors: 1.1.0 - '@babel/compat-data@7.25.2': {} + '@babel/code-frame@7.25.7': + dependencies: + '@babel/highlight': 7.25.7 + picocolors: 1.1.0 - '@babel/core@7.25.2': + '@babel/compat-data@7.25.8': {} + + '@babel/core@7.25.8': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.3 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 + '@babel/code-frame': 7.25.7 + '@babel/generator': 7.25.7 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) + '@babel/helpers': 7.25.7 + '@babel/parser': 7.25.8 + '@babel/template': 7.25.7 + '@babel/traverse': 7.25.7 '@babel/types': 7.25.2 convert-source-map: 2.0.0 debug: 4.3.6 @@ -2181,121 +2979,141 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.25.0': + '@babel/generator@7.25.6': dependencies: '@babel/types': 7.25.2 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 + '@babel/generator@7.25.7': + dependencies: + '@babel/types': 7.25.2 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + '@babel/helper-annotate-as-pure@7.24.7': dependencies: '@babel/types': 7.25.2 - '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': + '@babel/helper-annotate-as-pure@7.25.7': dependencies: - '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.7': + dependencies: + '@babel/traverse': 7.25.7 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/helper-compilation-targets@7.25.2': + '@babel/helper-compilation-targets@7.25.7': dependencies: - '@babel/compat-data': 7.25.2 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.3 + '@babel/compat-data': 7.25.8 + '@babel/helper-validator-option': 7.25.7 + browserslist: 4.24.0 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.2)': + '@babel/helper-create-class-features-plugin@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/core': 7.25.8 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-member-expression-to-functions': 7.25.7 + '@babel/helper-optimise-call-expression': 7.25.7 + '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.8) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/traverse': 7.25.7 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.25.2)': + '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.25.8 '@babel/helper-annotate-as-pure': 7.24.7 regexpu-core: 5.3.2 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': + '@babel/helper-create-regexp-features-plugin@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-annotate-as-pure': 7.25.7 + regexpu-core: 6.1.1 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 debug: 4.3.6 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: - supports-color - '@babel/helper-member-expression-to-functions@7.24.8': + '@babel/helper-member-expression-to-functions@7.25.7': dependencies: - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.7 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.24.7': + '@babel/helper-module-imports@7.25.7': dependencies: - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.7 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + '@babel/helper-module-transforms@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/core': 7.25.8 + '@babel/helper-module-imports': 7.25.7 + '@babel/helper-simple-access': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.24.7': + '@babel/helper-optimise-call-expression@7.25.7': dependencies: '@babel/types': 7.25.2 '@babel/helper-plugin-utils@7.24.8': {} - '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2)': + '@babel/helper-plugin-utils@7.25.7': {} + + '@babel/helper-remap-async-to-generator@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-wrap-function': 7.25.0 - '@babel/traverse': 7.25.3 + '@babel/core': 7.25.8 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-wrap-function': 7.25.7 + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': + '@babel/helper-replace-supers@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/core': 7.25.8 + '@babel/helper-member-expression-to-functions': 7.25.7 + '@babel/helper-optimise-call-expression': 7.25.7 + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/helper-simple-access@7.24.7': + '@babel/helper-simple-access@7.25.7': dependencies: - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.7 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + '@babel/helper-skip-transparent-expression-wrappers@7.25.7': dependencies: - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.7 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color @@ -2304,19 +3122,21 @@ snapshots: '@babel/helper-validator-identifier@7.24.7': {} - '@babel/helper-validator-option@7.24.8': {} + '@babel/helper-validator-identifier@7.25.7': {} - '@babel/helper-wrap-function@7.25.0': + '@babel/helper-validator-option@7.25.7': {} + + '@babel/helper-wrap-function@7.25.7': dependencies: - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 + '@babel/template': 7.25.7 + '@babel/traverse': 7.25.7 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/helpers@7.25.0': + '@babel/helpers@7.25.7': dependencies: - '@babel/template': 7.25.0 + '@babel/template': 7.25.7 '@babel/types': 7.25.2 '@babel/highlight@7.24.7': @@ -2324,595 +3144,515 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.1 + picocolors: 1.1.0 - '@babel/parser@7.25.3': + '@babel/highlight@7.25.7': + dependencies: + '@babel/helper-validator-identifier': 7.25.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.0 + + '@babel/parser@7.25.6': dependencies: '@babel/types': 7.25.2 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.25.2)': + '@babel/parser@7.25.8': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/plugin-transform-optional-chaining': 7.25.8(@babel/core@7.25.8) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.3 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.25.8 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-assertions@7.25.6(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-assertions@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-attributes@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-arrow-functions@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-async-generator-functions@7.25.8(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-async-generator-functions@7.25.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/traverse': 7.25.3 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.25.8) + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-async-to-generator@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-module-imports': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.25.8) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-block-scoped-functions@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-block-scoping@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-class-properties@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-class-static-block@7.25.8(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-classes@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/traverse': 7.25.3 + '@babel/core': 7.25.8 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.8) + '@babel/traverse': 7.25.7 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-computed-properties@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/template': 7.25.0 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/template': 7.25.7 - '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.25.2)': + '@babel/plugin-transform-destructuring@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-dotall-regex@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-duplicate-keys@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-dynamic-import@7.25.8(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-exponentiation-operator@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-export-namespace-from@7.25.8(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.25.2)': + '@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-for-of@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.25.2)': + '@babel/plugin-transform-function-name@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.3 + '@babel/core': 7.25.8 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-json-strings@7.25.8(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-literals@7.25.2(@babel/core@7.25.2)': + '@babel/plugin-transform-literals@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-logical-assignment-operators@7.25.8(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-member-expression-literals@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-amd@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-simple-access': 7.24.7 + '@babel/core': 7.25.8 + '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-simple-access': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-systemjs@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/core': 7.25.8 + '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + '@babel/traverse': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-umd@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-named-capturing-groups-regex@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-new-target@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-nullish-coalescing-operator@7.25.8(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-numeric-separator@7.25.8(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-object-rest-spread@7.25.8(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-object-super@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.8) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-optional-catch-binding@7.25.8(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.25.2)': + '@babel/plugin-transform-optional-chaining@7.25.8(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-parameters@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-private-methods@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-private-property-in-object@7.25.8(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-property-literals@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-regenerator@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 regenerator-transform: 0.15.2 - '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-reserved-words@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-shorthand-properties@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-spread@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-sticky-regex@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-template-literals@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.25.2)': + '@babel/plugin-transform-typeof-symbol@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-escapes@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-property-regex@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-regex@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-sets-regex@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 - '@babel/preset-env@7.25.3(@babel/core@7.25.2)': + '@babel/preset-env@7.25.8(@babel/core@7.25.8)': dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.3(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-generator-functions': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.2) - '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-modules-systemjs': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.25.2) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.37.1 + '@babel/compat-data': 7.25.8 + '@babel/core': 7.25.8 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-validator-option': 7.25.7 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.8) + '@babel/plugin-syntax-import-assertions': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-syntax-import-attributes': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.8) + '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-async-generator-functions': 7.25.8(@babel/core@7.25.8) + '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-block-scoped-functions': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-class-properties': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-class-static-block': 7.25.8(@babel/core@7.25.8) + '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-dotall-regex': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-duplicate-keys': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-dynamic-import': 7.25.8(@babel/core@7.25.8) + '@babel/plugin-transform-exponentiation-operator': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-export-namespace-from': 7.25.8(@babel/core@7.25.8) + '@babel/plugin-transform-for-of': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-json-strings': 7.25.8(@babel/core@7.25.8) + '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-logical-assignment-operators': 7.25.8(@babel/core@7.25.8) + '@babel/plugin-transform-member-expression-literals': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-modules-amd': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-modules-systemjs': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-modules-umd': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-new-target': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.8(@babel/core@7.25.8) + '@babel/plugin-transform-numeric-separator': 7.25.8(@babel/core@7.25.8) + '@babel/plugin-transform-object-rest-spread': 7.25.8(@babel/core@7.25.8) + '@babel/plugin-transform-object-super': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-optional-catch-binding': 7.25.8(@babel/core@7.25.8) + '@babel/plugin-transform-optional-chaining': 7.25.8(@babel/core@7.25.8) + '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-private-property-in-object': 7.25.8(@babel/core@7.25.8) + '@babel/plugin-transform-property-literals': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-regenerator': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-reserved-words': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-template-literals': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-typeof-symbol': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-unicode-escapes': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-unicode-property-regex': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-unicode-sets-regex': 7.25.7(@babel/core@7.25.8) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.8) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.8) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.8) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.8) + core-js-compat: 3.38.1 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 '@babel/types': 7.25.2 esutils: 2.0.3 '@babel/regjsgen@0.8.0': {} - '@babel/runtime@7.25.0': + '@babel/runtime@7.25.6': dependencies: regenerator-runtime: 0.14.1 '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.3 + '@babel/parser': 7.25.6 '@babel/types': 7.25.2 - '@babel/traverse@7.25.3': + '@babel/template@7.25.7': + dependencies: + '@babel/code-frame': 7.25.7 + '@babel/parser': 7.25.8 + '@babel/types': 7.25.2 + + '@babel/traverse@7.25.6': dependencies: '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 '@babel/template': 7.25.0 '@babel/types': 7.25.2 debug: 4.3.6 @@ -2920,104 +3660,249 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.25.7': + dependencies: + '@babel/code-frame': 7.25.7 + '@babel/generator': 7.25.7 + '@babel/parser': 7.25.8 + '@babel/template': 7.25.7 + '@babel/types': 7.25.2 + debug: 4.3.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.25.2': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - '@es-joy/jsdoccomment@0.48.0': + '@emnapi/core@1.2.0': + dependencies: + '@emnapi/wasi-threads': 1.0.1 + tslib: 2.7.0 + optional: true + + '@emnapi/runtime@1.2.0': + dependencies: + tslib: 2.7.0 + optional: true + + '@emnapi/wasi-threads@1.0.1': + dependencies: + tslib: 2.7.0 + optional: true + + '@es-joy/jsdoccomment@0.49.0': dependencies: comment-parser: 1.4.1 esquery: 1.6.0 jsdoc-type-pratt-parser: 4.1.0 - '@esbuild/aix-ppc64@0.23.1': + '@esbuild/aix-ppc64@0.24.0': optional: true - '@esbuild/android-arm64@0.23.1': + '@esbuild/android-arm64@0.24.0': optional: true - '@esbuild/android-arm@0.23.1': + '@esbuild/android-arm@0.24.0': optional: true - '@esbuild/android-x64@0.23.1': + '@esbuild/android-x64@0.24.0': optional: true - '@esbuild/darwin-arm64@0.23.1': + '@esbuild/darwin-arm64@0.24.0': optional: true - '@esbuild/darwin-x64@0.23.1': + '@esbuild/darwin-x64@0.24.0': optional: true - '@esbuild/freebsd-arm64@0.23.1': + '@esbuild/freebsd-arm64@0.24.0': optional: true - '@esbuild/freebsd-x64@0.23.1': + '@esbuild/freebsd-x64@0.24.0': optional: true - '@esbuild/linux-arm64@0.23.1': + '@esbuild/linux-arm64@0.24.0': optional: true - '@esbuild/linux-arm@0.23.1': + '@esbuild/linux-arm@0.24.0': optional: true - '@esbuild/linux-ia32@0.23.1': + '@esbuild/linux-ia32@0.24.0': optional: true - '@esbuild/linux-loong64@0.23.1': + '@esbuild/linux-loong64@0.24.0': optional: true - '@esbuild/linux-mips64el@0.23.1': + '@esbuild/linux-mips64el@0.24.0': optional: true - '@esbuild/linux-ppc64@0.23.1': + '@esbuild/linux-ppc64@0.24.0': optional: true - '@esbuild/linux-riscv64@0.23.1': + '@esbuild/linux-riscv64@0.24.0': optional: true - '@esbuild/linux-s390x@0.23.1': + '@esbuild/linux-s390x@0.24.0': optional: true - '@esbuild/linux-x64@0.23.1': + '@esbuild/linux-x64@0.24.0': optional: true - '@esbuild/netbsd-x64@0.23.1': + '@esbuild/netbsd-x64@0.24.0': optional: true - '@esbuild/openbsd-arm64@0.23.1': + '@esbuild/openbsd-arm64@0.24.0': optional: true - '@esbuild/openbsd-x64@0.23.1': + '@esbuild/openbsd-x64@0.24.0': optional: true - '@esbuild/sunos-x64@0.23.1': + '@esbuild/sunos-x64@0.24.0': optional: true - '@esbuild/win32-arm64@0.23.1': + '@esbuild/win32-arm64@0.24.0': optional: true - '@esbuild/win32-ia32@0.23.1': + '@esbuild/win32-ia32@0.24.0': optional: true - '@esbuild/win32-x64@0.23.1': + '@esbuild/win32-x64@0.24.0': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.12.0(jiti@1.21.6))': dependencies: - eslint: 8.57.0 + eslint: 9.12.0(jiti@1.21.6) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} - '@eslint/eslintrc@2.1.4': + '@eslint-react/ast@1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@eslint-react/tools': 1.15.0 + '@eslint-react/types': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/typescript-estree': 8.9.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + birecord: 0.1.1 + string-ts: 2.2.0 + ts-pattern: 5.5.0 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/core@1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@eslint-react/ast': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/jsx': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/shared': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/tools': 1.15.0 + '@eslint-react/types': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/var': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.9.0 + '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + birecord: 0.1.1 + short-unique-id: 5.2.0 + ts-pattern: 5.5.0 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/eslint-plugin@1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@eslint-react/shared': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/tools': 1.15.0 + '@eslint-react/types': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.9.0 + '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.12.0(jiti@1.21.6) + eslint-plugin-react-debug: 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint-plugin-react-dom: 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint-plugin-react-hooks-extra: 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint-plugin-react-naming-convention: 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint-plugin-react-web-api: 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint-plugin-react-x: 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@eslint-react/jsx@1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@eslint-react/ast': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/tools': 1.15.0 + '@eslint-react/types': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/var': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.9.0 + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + ts-pattern: 5.5.0 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/shared@1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@eslint-react/tools': 1.15.0 + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + picomatch: 4.0.2 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/tools@1.15.0': {} + + '@eslint-react/types@1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@eslint-react/tools': 1.15.0 + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/var@1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@eslint-react/ast': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/tools': 1.15.0 + '@eslint-react/types': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.9.0 + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + ts-pattern: 5.5.0 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint/config-array@0.18.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.6 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.6.0': {} + + '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 debug: 4.3.6 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 + espree: 10.2.0 + globals: 14.0.0 + ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -3025,19 +3910,227 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.0': {} + '@eslint/js@9.12.0': {} - '@humanwhocodes/config-array@0.11.14': + '@eslint/object-schema@2.1.4': {} + + '@eslint/plugin-kit@0.2.0': dependencies: - '@humanwhocodes/object-schema': 2.0.3 + levn: 0.4.1 + + '@graphql-eslint/eslint-plugin@3.20.1(@babel/core@7.25.8)(@types/node@22.7.5)(graphql@16.9.0)': + dependencies: + '@babel/code-frame': 7.24.7 + '@graphql-tools/code-file-loader': 7.3.23(@babel/core@7.25.8)(graphql@16.9.0) + '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.25.8)(graphql@16.9.0) + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + chalk: 4.1.2 debug: 4.3.6 - minimatch: 3.1.2 + fast-glob: 3.3.2 + graphql: 16.9.0 + graphql-config: 4.5.0(@types/node@22.7.5)(graphql@16.9.0) + graphql-depth-limit: 1.1.0(graphql@16.9.0) + lodash.lowercase: 4.3.0 + tslib: 2.7.0 transitivePeerDependencies: + - '@babel/core' + - '@types/node' + - bufferutil + - cosmiconfig-toml-loader + - encoding - supports-color + - utf-8-validate + + '@graphql-tools/batch-execute@8.5.22(graphql@16.9.0)': + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + dataloader: 2.2.2 + graphql: 16.9.0 + tslib: 2.7.0 + value-or-promise: 1.0.12 + + '@graphql-tools/code-file-loader@7.3.23(@babel/core@7.25.8)(graphql@16.9.0)': + dependencies: + '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.25.8)(graphql@16.9.0) + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + globby: 11.1.0 + graphql: 16.9.0 + tslib: 2.7.0 + unixify: 1.0.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + + '@graphql-tools/delegate@9.0.35(graphql@16.9.0)': + dependencies: + '@graphql-tools/batch-execute': 8.5.22(graphql@16.9.0) + '@graphql-tools/executor': 0.0.20(graphql@16.9.0) + '@graphql-tools/schema': 9.0.19(graphql@16.9.0) + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + dataloader: 2.2.2 + graphql: 16.9.0 + tslib: 2.7.0 + value-or-promise: 1.0.12 + + '@graphql-tools/executor-graphql-ws@0.0.14(graphql@16.9.0)': + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + '@repeaterjs/repeater': 3.0.4 + '@types/ws': 8.5.12 + graphql: 16.9.0 + graphql-ws: 5.12.1(graphql@16.9.0) + isomorphic-ws: 5.0.0(ws@8.13.0) + tslib: 2.7.0 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@graphql-tools/executor-http@0.1.10(@types/node@22.7.5)(graphql@16.9.0)': + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + '@repeaterjs/repeater': 3.0.6 + '@whatwg-node/fetch': 0.8.8 + dset: 3.1.4 + extract-files: 11.0.0 + graphql: 16.9.0 + meros: 1.3.0(@types/node@22.7.5) + tslib: 2.7.0 + value-or-promise: 1.0.12 + transitivePeerDependencies: + - '@types/node' + + '@graphql-tools/executor-legacy-ws@0.0.11(graphql@16.9.0)': + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + '@types/ws': 8.5.12 + graphql: 16.9.0 + isomorphic-ws: 5.0.0(ws@8.13.0) + tslib: 2.7.0 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@graphql-tools/executor@0.0.20(graphql@16.9.0)': + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + '@repeaterjs/repeater': 3.0.6 + graphql: 16.9.0 + tslib: 2.7.0 + value-or-promise: 1.0.12 + + '@graphql-tools/graphql-file-loader@7.5.17(graphql@16.9.0)': + dependencies: + '@graphql-tools/import': 6.7.18(graphql@16.9.0) + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + globby: 11.1.0 + graphql: 16.9.0 + tslib: 2.7.0 + unixify: 1.0.0 + + '@graphql-tools/graphql-tag-pluck@7.5.2(@babel/core@7.25.8)(graphql@16.9.0)': + dependencies: + '@babel/parser': 7.25.6 + '@babel/plugin-syntax-import-assertions': 7.25.6(@babel/core@7.25.8) + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.2 + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + graphql: 16.9.0 + tslib: 2.7.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + + '@graphql-tools/import@6.7.18(graphql@16.9.0)': + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + graphql: 16.9.0 + resolve-from: 5.0.0 + tslib: 2.7.0 + + '@graphql-tools/json-file-loader@7.4.18(graphql@16.9.0)': + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + globby: 11.1.0 + graphql: 16.9.0 + tslib: 2.7.0 + unixify: 1.0.0 + + '@graphql-tools/load@7.8.14(graphql@16.9.0)': + dependencies: + '@graphql-tools/schema': 9.0.19(graphql@16.9.0) + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + graphql: 16.9.0 + p-limit: 3.1.0 + tslib: 2.7.0 + + '@graphql-tools/merge@8.4.2(graphql@16.9.0)': + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + graphql: 16.9.0 + tslib: 2.7.0 + + '@graphql-tools/schema@9.0.19(graphql@16.9.0)': + dependencies: + '@graphql-tools/merge': 8.4.2(graphql@16.9.0) + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + graphql: 16.9.0 + tslib: 2.7.0 + value-or-promise: 1.0.12 + + '@graphql-tools/url-loader@7.17.18(@types/node@22.7.5)(graphql@16.9.0)': + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/delegate': 9.0.35(graphql@16.9.0) + '@graphql-tools/executor-graphql-ws': 0.0.14(graphql@16.9.0) + '@graphql-tools/executor-http': 0.1.10(@types/node@22.7.5)(graphql@16.9.0) + '@graphql-tools/executor-legacy-ws': 0.0.11(graphql@16.9.0) + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + '@graphql-tools/wrap': 9.4.2(graphql@16.9.0) + '@types/ws': 8.5.12 + '@whatwg-node/fetch': 0.8.8 + graphql: 16.9.0 + isomorphic-ws: 5.0.0(ws@8.18.0) + tslib: 2.7.0 + value-or-promise: 1.0.12 + ws: 8.18.0 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - utf-8-validate + + '@graphql-tools/utils@9.2.1(graphql@16.9.0)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + graphql: 16.9.0 + tslib: 2.7.0 + + '@graphql-tools/wrap@9.4.2(graphql@16.9.0)': + dependencies: + '@graphql-tools/delegate': 9.0.35(graphql@16.9.0) + '@graphql-tools/schema': 9.0.19(graphql@16.9.0) + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + graphql: 16.9.0 + tslib: 2.7.0 + value-or-promise: 1.0.12 + + '@graphql-typed-document-node/core@3.2.0(graphql@16.9.0)': + dependencies: + graphql: 16.9.0 + + '@humanfs/core@0.19.0': {} + + '@humanfs/node@0.16.5': + dependencies: + '@humanfs/core': 0.19.0 + '@humanwhocodes/retry': 0.3.1 '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.3.1': {} '@jridgewell/gen-mapping@0.3.5': dependencies: @@ -3061,12 +4154,12 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@jsdevtools/ez-spawn@3.0.4': + '@napi-rs/wasm-runtime@0.2.4': dependencies: - call-me-maybe: 1.0.2 - cross-spawn: 7.0.3 - string-argv: 0.3.2 - type-detect: 4.1.0 + '@emnapi/core': 1.2.0 + '@emnapi/runtime': 1.2.0 + '@tybys/wasm-util': 0.9.0 + optional: true '@nodelib/fs.scandir@2.1.5': dependencies: @@ -3084,15 +4177,178 @@ snapshots: '@nolyfill/json-stable-stringify@1.0.30': {} + '@oxc-resolver/binding-darwin-arm64@1.11.0': + optional: true + + '@oxc-resolver/binding-darwin-x64@1.11.0': + optional: true + + '@oxc-resolver/binding-freebsd-x64@1.11.0': + optional: true + + '@oxc-resolver/binding-linux-arm-gnueabihf@1.11.0': + optional: true + + '@oxc-resolver/binding-linux-arm64-gnu@1.11.0': + optional: true + + '@oxc-resolver/binding-linux-arm64-musl@1.11.0': + optional: true + + '@oxc-resolver/binding-linux-x64-gnu@1.11.0': + optional: true + + '@oxc-resolver/binding-linux-x64-musl@1.11.0': + optional: true + + '@oxc-resolver/binding-wasm32-wasi@1.11.0': + dependencies: + '@napi-rs/wasm-runtime': 0.2.4 + optional: true + + '@oxc-resolver/binding-win32-arm64-msvc@1.11.0': + optional: true + + '@oxc-resolver/binding-win32-x64-msvc@1.11.0': + optional: true + + '@peculiar/asn1-schema@2.3.13': + dependencies: + asn1js: 3.0.5 + pvtsutils: 1.3.5 + tslib: 2.7.0 + + '@peculiar/json-schema@1.1.12': + dependencies: + tslib: 2.7.0 + + '@peculiar/webcrypto@1.5.0': + dependencies: + '@peculiar/asn1-schema': 2.3.13 + '@peculiar/json-schema': 1.1.12 + pvtsutils: 1.3.5 + tslib: 2.7.0 + webcrypto-core: 1.8.0 + '@pkgr/core@0.1.1': {} + '@repeaterjs/repeater@3.0.4': {} + + '@repeaterjs/repeater@3.0.6': {} + + '@storybook/csf@0.0.1': + dependencies: + lodash: 4.17.21 + + '@stylistic/eslint-plugin@2.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.12.0(jiti@1.21.6) + eslint-visitor-keys: 4.1.0 + espree: 10.2.0 + estraverse: 5.3.0 + picomatch: 4.0.2 + transitivePeerDependencies: + - supports-color + - typescript + + '@swc-node/core@1.13.3(@swc/core@1.7.23)(@swc/types@0.1.12)': + dependencies: + '@swc/core': 1.7.23 + '@swc/types': 0.1.12 + + '@swc-node/register@1.10.9(@swc/core@1.7.23)(@swc/types@0.1.12)(typescript@5.6.3)': + dependencies: + '@swc-node/core': 1.13.3(@swc/core@1.7.23)(@swc/types@0.1.12) + '@swc-node/sourcemap-support': 0.5.1 + '@swc/core': 1.7.23 + colorette: 2.0.20 + debug: 4.3.6 + oxc-resolver: 1.11.0 + pirates: 4.0.6 + tslib: 2.7.0 + typescript: 5.6.3 + transitivePeerDependencies: + - '@swc/types' + - supports-color + + '@swc-node/sourcemap-support@0.5.1': + dependencies: + source-map-support: 0.5.21 + tslib: 2.7.0 + + '@swc/core-darwin-arm64@1.7.23': + optional: true + + '@swc/core-darwin-x64@1.7.23': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.7.23': + optional: true + + '@swc/core-linux-arm64-gnu@1.7.23': + optional: true + + '@swc/core-linux-arm64-musl@1.7.23': + optional: true + + '@swc/core-linux-x64-gnu@1.7.23': + optional: true + + '@swc/core-linux-x64-musl@1.7.23': + optional: true + + '@swc/core-win32-arm64-msvc@1.7.23': + optional: true + + '@swc/core-win32-ia32-msvc@1.7.23': + optional: true + + '@swc/core-win32-x64-msvc@1.7.23': + optional: true + + '@swc/core@1.7.23': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.12 + optionalDependencies: + '@swc/core-darwin-arm64': 1.7.23 + '@swc/core-darwin-x64': 1.7.23 + '@swc/core-linux-arm-gnueabihf': 1.7.23 + '@swc/core-linux-arm64-gnu': 1.7.23 + '@swc/core-linux-arm64-musl': 1.7.23 + '@swc/core-linux-x64-gnu': 1.7.23 + '@swc/core-linux-x64-musl': 1.7.23 + '@swc/core-win32-arm64-msvc': 1.7.23 + '@swc/core-win32-ia32-msvc': 1.7.23 + '@swc/core-win32-x64-msvc': 1.7.23 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.12': + dependencies: + '@swc/counter': 0.1.3 + + '@tanstack/eslint-plugin-query@5.59.7(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.12.0(jiti@1.21.6) + transitivePeerDependencies: + - supports-color + - typescript + + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.7.0 + optional: true + '@types/babel-plugin-macros@3.1.3': dependencies: '@types/babel__core': 7.20.5 '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.25.3 + '@babel/parser': 7.25.6 '@babel/types': 7.25.2 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 @@ -3104,72 +4360,93 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.25.3 + '@babel/parser': 7.25.6 '@babel/types': 7.25.2 '@types/babel__traverse@7.20.6': dependencies: '@babel/types': 7.25.2 - '@types/eslint@9.6.0': + '@types/eslint-plugin-tailwindcss@3.17.0': dependencies: - '@types/estree': 1.0.5 + '@types/eslint': 9.6.1 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 + '@types/eslint__js@8.42.3': + dependencies: + '@types/eslint': 9.6.1 + '@types/esprima@4.0.6': dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/esquery@1.5.4': dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/estree-jsx@1.0.5': dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 - '@types/estree@1.0.5': {} + '@types/estree@1.0.6': {} '@types/json-schema@7.0.15': {} + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.7 + '@types/lodash@4.17.7': {} - '@types/node@22.4.0': + '@types/node@22.7.5': dependencies: - undici-types: 6.19.6 + undici-types: 6.19.8 '@types/normalize-package-data@2.4.4': {} '@types/parse-json@4.0.2': {} - '@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': + '@types/react-refresh@0.14.6': + dependencies: + '@types/babel__core': 7.20.5 + csstype: 3.1.3 + + '@types/ws@8.5.12': + dependencies: + '@types/node': 22.7.5 + + '@typescript-eslint/eslint-plugin@8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.0.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 8.1.0 - '@typescript-eslint/type-utils': 8.1.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.1.0 - eslint: 8.57.0 + '@typescript-eslint/parser': 8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.9.0 + '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.9.0 + eslint: 9.12.0(jiti@1.21.6) graphemer: 1.4.0 - ignore: 5.3.1 + ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/parser@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/typescript-estree': 8.0.0(patch_hash=zlal42evfhopemboiioznx3k3i)(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.0.0 + '@typescript-eslint/scope-manager': 8.9.0 + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/typescript-estree': 8.9.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.9.0 debug: 4.3.6 - eslint: 8.57.0 + eslint: 9.12.0(jiti@1.21.6) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - supports-color @@ -3178,28 +4455,28 @@ snapshots: '@typescript-eslint/types': 8.0.0 '@typescript-eslint/visitor-keys': 8.0.0 - '@typescript-eslint/scope-manager@8.1.0': + '@typescript-eslint/scope-manager@8.9.0': dependencies: - '@typescript-eslint/types': 8.1.0 - '@typescript-eslint/visitor-keys': 8.1.0 + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/visitor-keys': 8.9.0 - '@typescript-eslint/type-utils@8.1.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.9.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) debug: 4.3.6 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - eslint - supports-color '@typescript-eslint/types@8.0.0': {} - '@typescript-eslint/types@8.1.0': {} + '@typescript-eslint/types@8.9.0': {} - '@typescript-eslint/typescript-estree@8.0.0(patch_hash=zlal42evfhopemboiioznx3k3i)(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.0.0(patch_hash=zlal42evfhopemboiioznx3k3i)(typescript@5.6.3)': dependencies: '@typescript-eslint/types': 8.0.0 '@typescript-eslint/visitor-keys': 8.0.0 @@ -3208,34 +4485,34 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.1.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.9.0(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.1.0 - '@typescript-eslint/visitor-keys': 8.1.0 + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/visitor-keys': 8.9.0 debug: 4.3.6 - globby: 11.1.0 + fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.0.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/utils@8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.6)) '@typescript-eslint/scope-manager': 8.0.0 '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/typescript-estree': 8.0.0(patch_hash=zlal42evfhopemboiioznx3k3i)(typescript@5.5.4) - eslint: 8.57.0 + '@typescript-eslint/typescript-estree': 8.0.0(patch_hash=zlal42evfhopemboiioznx3k3i)(typescript@5.6.3) + eslint: 9.12.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript @@ -3245,12 +4522,28 @@ snapshots: '@typescript-eslint/types': 8.0.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.1.0': + '@typescript-eslint/visitor-keys@8.9.0': dependencies: - '@typescript-eslint/types': 8.1.0 + '@typescript-eslint/types': 8.9.0 eslint-visitor-keys: 3.4.3 - '@ungap/structured-clone@1.2.0': {} + '@whatwg-node/events@0.0.3': {} + + '@whatwg-node/fetch@0.8.8': + dependencies: + '@peculiar/webcrypto': 1.5.0 + '@whatwg-node/node-fetch': 0.3.6 + busboy: 1.6.0 + urlpattern-polyfill: 8.0.2 + web-streams-polyfill: 3.3.3 + + '@whatwg-node/node-fetch@0.3.6': + dependencies: + '@whatwg-node/events': 0.0.3 + busboy: 1.6.0 + fast-querystring: 1.1.2 + fast-url-parser: 1.1.3 + tslib: 2.7.0 '@yarnpkg/lockfile@1.1.0': {} @@ -3283,40 +4576,50 @@ snapshots: array-union@2.1.0: {} + arrify@1.0.1: {} + + asn1js@3.0.5: + dependencies: + pvtsutils: 1.3.5 + pvutils: 1.1.3 + tslib: 2.7.0 + at-least-node@1.0.0: {} babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.6 cosmiconfig: 7.1.0 resolve: 1.22.8 - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.8): dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + '@babel/compat-data': 7.25.8 + '@babel/core': 7.25.8 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.8) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.25.2): + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.25.8): dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.37.1 + '@babel/core': 7.25.8 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.8) + core-js-compat: 3.38.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.8): dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + '@babel/core': 7.25.8 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.8) transitivePeerDependencies: - supports-color balanced-match@1.0.2: {} + birecord@0.1.1: {} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -3332,20 +4635,31 @@ snapshots: browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001646 - electron-to-chromium: 1.5.4 + caniuse-lite: 1.0.30001655 + electron-to-chromium: 1.5.13 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) + browserslist@4.24.0: + dependencies: + caniuse-lite: 1.0.30001668 + electron-to-chromium: 1.5.39 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.24.0) + buffer-from@1.1.2: {} builtin-modules@3.3.0: {} - call-me-maybe@1.0.2: {} + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 callsites@3.1.0: {} - caniuse-lite@1.0.30001646: {} + caniuse-lite@1.0.30001655: {} + + caniuse-lite@1.0.30001668: {} chalk@2.4.2: dependencies: @@ -3384,6 +4698,8 @@ snapshots: color-name@1.1.4: {} + colorette@2.0.20: {} + commander@2.20.3: {} comment-parser@1.4.1: {} @@ -3394,7 +4710,7 @@ snapshots: convert-source-map@2.0.0: {} - core-js-compat@3.37.1: + core-js-compat@3.38.1: dependencies: browserslist: 4.23.3 @@ -3406,12 +4722,23 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 + cosmiconfig@8.0.0: + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + csstype@3.1.3: {} + + dataloader@2.2.2: {} + debug@3.2.7: dependencies: ms: 2.1.3 @@ -3430,15 +4757,24 @@ snapshots: dependencies: esutils: 2.0.3 - dts-bundle-generator@9.4.0: + dset@3.1.4: {} + + dts-bundle-generator@9.4.0(patch_hash=3kshr7c3ovng23wh5dalj55oha): dependencies: - typescript: 5.5.4 + typescript: 5.6.3 yargs: 17.7.2 - electron-to-chromium@1.5.4: {} + electron-to-chromium@1.5.13: {} + + electron-to-chromium@1.5.39: {} emoji-regex@8.0.0: {} + enhanced-resolve@5.17.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -3447,42 +4783,42 @@ snapshots: esbuild-plugin-alias@0.2.1: {} - esbuild@0.23.1: + esbuild@0.24.0: optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 - escalade@3.1.2: {} + escalade@3.2.0: {} escape-string-regexp@1.0.5: {} escape-string-regexp@4.0.0: {} - eslint-config-prettier@9.1.0(eslint@8.57.0): + eslint-config-prettier@9.1.0(eslint@9.12.0(jiti@1.21.6)): dependencies: - eslint: 8.57.0 + eslint: 9.12.0(jiti@1.21.6) eslint-import-resolver-node@0.3.9: dependencies: @@ -3492,31 +4828,60 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import-x@3.1.0(eslint@8.57.0)(typescript@5.5.4): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6)): dependencies: - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.4) + '@nolyfill/is-core-module': 1.0.39 + debug: 4.3.6 + enhanced-resolve: 5.17.1 + eslint: 9.12.0(jiti@1.21.6) + eslint-module-utils: 2.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6)))(eslint@9.12.0(jiti@1.21.6)) + fast-glob: 3.3.2 + get-tsconfig: 4.8.0 + is-bun-module: 1.1.0 + is-glob: 4.0.3 + optionalDependencies: + eslint-plugin-import-x: 4.3.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + + eslint-module-utils@2.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6)))(eslint@9.12.0(jiti@1.21.6)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.12.0(jiti@1.21.6) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint-plugin-import-x@4.3.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6)) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import-x@4.3.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) debug: 4.3.6 doctrine: 3.0.0 - eslint: 8.57.0 + eslint: 9.12.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - get-tsconfig: 4.7.6 + get-tsconfig: 4.8.0 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 stable-hash: 0.0.4 - tslib: 2.6.3 + tslib: 2.7.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jsdoc@50.2.2(eslint@8.57.0): + eslint-plugin-jsdoc@50.4.1(eslint@9.12.0(jiti@1.21.6)): dependencies: - '@es-joy/jsdoccomment': 0.48.0 + '@es-joy/jsdoccomment': 0.49.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.3.6 escape-string-regexp: 4.0.0 - eslint: 8.57.0 + eslint: 9.12.0(jiti@1.21.6) espree: 10.1.0 esquery: 1.6.0 parse-imports: 2.1.1 @@ -3526,16 +4891,159 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@55.0.0(eslint@8.57.0): + eslint-plugin-react-debug@1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@eslint-react/ast': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/core': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/jsx': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/shared': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/tools': 1.15.0 + '@eslint-react/types': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/var': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.9.0 + '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.12.0(jiti@1.21.6) + string-ts: 2.2.0 + ts-pattern: 5.5.0 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-dom@1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@eslint-react/ast': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/core': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/jsx': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/shared': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/tools': 1.15.0 + '@eslint-react/types': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/var': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.9.0 + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.12.0(jiti@1.21.6) + ts-pattern: 5.5.0 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-hooks-extra@1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@eslint-react/ast': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/core': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/jsx': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/shared': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/tools': 1.15.0 + '@eslint-react/types': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/var': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.9.0 + '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.12.0(jiti@1.21.6) + ts-pattern: 5.5.0 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-naming-convention@1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@eslint-react/ast': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/core': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/jsx': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/shared': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/tools': 1.15.0 + '@eslint-react/types': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.9.0 + '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.12.0(jiti@1.21.6) + ts-pattern: 5.5.0 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-refresh@0.4.12(eslint@9.12.0(jiti@1.21.6)): + dependencies: + eslint: 9.12.0(jiti@1.21.6) + + eslint-plugin-react-web-api@1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@eslint-react/ast': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/core': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/jsx': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/shared': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/tools': 1.15.0 + '@eslint-react/types': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/var': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.9.0 + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + birecord: 0.1.1 + eslint: 9.12.0(jiti@1.21.6) + ts-pattern: 5.5.0 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-x@1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@eslint-react/ast': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/core': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/jsx': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/shared': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/tools': 1.15.0 + '@eslint-react/types': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@eslint-react/var': 1.15.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.9.0 + '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/types': 8.9.0 + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.12.0(jiti@1.21.6) + is-immutable-type: 5.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + ts-pattern: 5.5.0 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + eslint-plugin-storybook@0.9.0--canary.165.991522a.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@storybook/csf': 0.0.1 + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.12.0(jiti@1.21.6) + requireindex: 1.2.0 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-testing-library@6.3.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.12.0(jiti@1.21.6) + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-unicorn@56.0.0(eslint@9.12.0(jiti@1.21.6)): dependencies: '@babel/helper-validator-identifier': 7.24.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.6)) ci-info: 4.0.0 clean-regexp: 1.0.0 - core-js-compat: 3.37.1 - eslint: 8.57.0 + core-js-compat: 3.38.1 + eslint: 9.12.0(jiti@1.21.6) esquery: 1.6.0 - globals: 15.9.0 + globals: 15.11.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 jsesc: 3.0.2 @@ -3546,7 +5054,17 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-scope@7.2.2: + eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.12.0(jiti@1.21.6) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + transitivePeerDependencies: + - supports-color + - typescript + + eslint-scope@8.1.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 @@ -3555,46 +5073,47 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@8.57.0: + eslint-visitor-keys@4.1.0: {} + + eslint@9.12.0(jiti@1.21.6): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.6)) '@eslint-community/regexpp': 4.11.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint/config-array': 0.18.0 + '@eslint/core': 0.6.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.12.0 + '@eslint/plugin-kit': 0.2.0 + '@humanfs/node': 0.16.5 '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 + '@humanwhocodes/retry': 0.3.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.6 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.1.0 + eslint-visitor-keys: 4.1.0 + espree: 10.2.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.1 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - strip-ansi: 6.0.1 text-table: 0.2.0 + optionalDependencies: + jiti: 1.21.6 transitivePeerDependencies: - supports-color @@ -3604,11 +5123,11 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 4.0.0 - espree@9.6.1: + espree@10.2.0: dependencies: acorn: 8.12.1 acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 3.4.3 + eslint-visitor-keys: 4.1.0 esprima@4.0.1: {} @@ -3624,6 +5143,10 @@ snapshots: esutils@2.0.3: {} + extract-files@11.0.0: {} + + fast-decode-uri-component@1.0.1: {} + fast-deep-equal@3.1.3: {} fast-glob@3.3.2: @@ -3632,19 +5155,27 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.7 + micromatch: 4.0.8 fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} + fast-querystring@1.1.2: + dependencies: + fast-decode-uri-component: 1.0.1 + + fast-url-parser@1.1.3: + dependencies: + punycode: 1.4.1 + fastq@1.17.1: dependencies: reusify: 1.0.4 - file-entry-cache@6.0.1: + file-entry-cache@8.0.0: dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 fill-range@7.1.1: dependencies: @@ -3672,13 +5203,12 @@ snapshots: find-yarn-workspace-root@2.0.0: dependencies: - micromatch: 4.0.7 + micromatch: 4.0.8 - flat-cache@3.2.0: + flat-cache@4.0.1: dependencies: flatted: 3.3.1 keyv: 4.5.4 - rimraf: 3.0.2 flatted@3.3.1: {} @@ -3695,7 +5225,7 @@ snapshots: get-caller-file@2.0.5: {} - get-tsconfig@4.7.6: + get-tsconfig@4.8.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -3718,18 +5248,16 @@ snapshots: globals@11.12.0: {} - globals@13.24.0: - dependencies: - type-fest: 0.20.2 + globals@14.0.0: {} - globals@15.9.0: {} + globals@15.11.0: {} globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.1 + ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 @@ -3737,13 +5265,44 @@ snapshots: graphemer@1.4.0: {} + graphql-config@4.5.0(@types/node@22.7.5)(graphql@16.9.0): + dependencies: + '@graphql-tools/graphql-file-loader': 7.5.17(graphql@16.9.0) + '@graphql-tools/json-file-loader': 7.4.18(graphql@16.9.0) + '@graphql-tools/load': 7.8.14(graphql@16.9.0) + '@graphql-tools/merge': 8.4.2(graphql@16.9.0) + '@graphql-tools/url-loader': 7.17.18(@types/node@22.7.5)(graphql@16.9.0) + '@graphql-tools/utils': 9.2.1(graphql@16.9.0) + cosmiconfig: 8.0.0 + graphql: 16.9.0 + jiti: 1.17.1 + minimatch: 4.2.3 + string-env-interpolation: 1.0.1 + tslib: 2.7.0 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - utf-8-validate + + graphql-depth-limit@1.1.0(graphql@16.9.0): + dependencies: + arrify: 1.0.1 + graphql: 16.9.0 + + graphql-ws@5.12.1(graphql@16.9.0): + dependencies: + graphql: 16.9.0 + + graphql@16.9.0: {} + has-flag@3.0.0: {} has-flag@4.0.0: {} hosted-git-info@2.8.9: {} - ignore@5.3.1: {} + ignore@5.3.2: {} import-fresh@3.3.0: dependencies: @@ -3767,6 +5326,10 @@ snapshots: dependencies: builtin-modules: 3.3.0 + is-bun-module@1.1.0: + dependencies: + semver: 7.6.3 + is-docker@2.2.1: {} is-extglob@2.1.1: {} @@ -3777,9 +5340,17 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-number@7.0.0: {} + is-immutable-type@5.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.12.0(jiti@1.21.6) + ts-api-utils: 1.3.0(typescript@5.6.3) + ts-declaration-location: 1.0.4(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color - is-path-inside@3.0.3: {} + is-number@7.0.0: {} is-wsl@2.2.0: dependencies: @@ -3787,6 +5358,18 @@ snapshots: isexe@2.0.0: {} + isomorphic-ws@5.0.0(ws@8.13.0): + dependencies: + ws: 8.13.0 + + isomorphic-ws@5.0.0(ws@8.18.0): + dependencies: + ws: 8.18.0 + + jiti@1.17.1: {} + + jiti@1.21.6: {} + js-tokens@4.0.0: {} js-yaml@4.1.0: @@ -3805,9 +5388,9 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-schema-to-ts@3.1.0: + json-schema-to-ts@3.1.1: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.6 ts-algebra: 2.0.0 json-schema-traverse@0.4.1: {} @@ -3849,8 +5432,12 @@ snapshots: dependencies: p-locate: 6.0.0 + lodash-es@4.17.21: {} + lodash.debounce@4.0.8: {} + lodash.lowercase@4.3.0: {} + lodash.merge@4.6.2: {} lodash@4.17.21: {} @@ -3865,17 +5452,29 @@ snapshots: merge2@1.4.1: {} - micromatch@4.0.7: + meros@1.3.0(@types/node@22.7.5): + optionalDependencies: + '@types/node': 22.7.5 + + micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 min-indent@1.0.1: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 + minimatch@4.2.3: + dependencies: + brace-expansion: 1.1.11 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -3888,6 +5487,10 @@ snapshots: natural-compare@1.4.0: {} + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + node-releases@2.0.18: {} nolyfill@1.0.39: {} @@ -3899,6 +5502,10 @@ snapshots: semver: 5.7.2 validate-npm-package-license: 3.0.4 + normalize-path@2.1.1: + dependencies: + remove-trailing-separator: 1.1.0 + object-assign@4.1.1: {} once@1.4.0: @@ -3921,6 +5528,20 @@ snapshots: os-tmpdir@1.0.2: {} + oxc-resolver@1.11.0: + optionalDependencies: + '@oxc-resolver/binding-darwin-arm64': 1.11.0 + '@oxc-resolver/binding-darwin-x64': 1.11.0 + '@oxc-resolver/binding-freebsd-x64': 1.11.0 + '@oxc-resolver/binding-linux-arm-gnueabihf': 1.11.0 + '@oxc-resolver/binding-linux-arm64-gnu': 1.11.0 + '@oxc-resolver/binding-linux-arm64-musl': 1.11.0 + '@oxc-resolver/binding-linux-x64-gnu': 1.11.0 + '@oxc-resolver/binding-linux-x64-musl': 1.11.0 + '@oxc-resolver/binding-wasm32-wasi': 1.11.0 + '@oxc-resolver/binding-win32-arm64-msvc': 1.11.0 + '@oxc-resolver/binding-win32-x64-msvc': 1.11.0 + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -3947,6 +5568,8 @@ snapshots: p-try@2.2.0: {} + package-manager-detector@0.2.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -3993,10 +5616,14 @@ snapshots: path-type@4.0.0: {} - picocolors@1.0.1: {} + picocolors@1.1.0: {} picomatch@2.3.1: {} + picomatch@4.0.2: {} + + pirates@4.0.6: {} + pkg-dir@7.0.0: dependencies: find-up: 6.3.0 @@ -4013,8 +5640,16 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 + punycode@1.4.1: {} + punycode@2.3.1: {} + pvtsutils@1.3.5: + dependencies: + tslib: 2.7.0 + + pvutils@1.1.3: {} + queue-microtask@1.2.3: {} react-is@16.13.1: {} @@ -4036,13 +5671,17 @@ snapshots: dependencies: regenerate: 1.4.2 + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 + regenerate@1.4.2: {} regenerator-runtime@0.14.1: {} regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.6 regexp-tree@0.1.27: {} @@ -4055,18 +5694,39 @@ snapshots: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 + regexpu-core@6.1.1: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.11.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + + regjsgen@0.8.0: {} + regjsparser@0.10.0: dependencies: jsesc: 0.5.0 + regjsparser@0.11.1: + dependencies: + jsesc: 3.0.2 + regjsparser@0.9.1: dependencies: jsesc: 0.5.0 + remove-trailing-separator@1.1.0: {} + require-directory@2.1.1: {} + requireindex@1.2.0: {} + resolve-from@4.0.0: {} + resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} resolve@1.22.8: @@ -4081,10 +5741,6 @@ snapshots: dependencies: glob: 7.2.3 - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -4101,6 +5757,8 @@ snapshots: shebang-regex@3.0.0: {} + short-unique-id@5.2.0: {} + slash@2.0.0: {} slash@3.0.0: {} @@ -4117,25 +5775,29 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.18 + spdx-license-ids: 3.0.20 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.18 + spdx-license-ids: 3.0.20 spdx-expression-parse@4.0.0: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.18 + spdx-license-ids: 3.0.20 - spdx-license-ids@3.0.18: {} + spdx-license-ids@3.0.20: {} stable-hash@0.0.4: {} - string-argv@0.3.2: {} + streamsearch@1.1.0: {} + + string-env-interpolation@1.0.1: {} + + string-ts@2.2.0: {} string-width@4.2.3: dependencies: @@ -4166,9 +5828,11 @@ snapshots: synckit@0.9.1: dependencies: '@pkgr/core': 0.1.1 - tslib: 2.6.3 + tslib: 2.7.0 - terser@5.31.6: + tapable@2.2.1: {} + + terser@5.34.1: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.12.1 @@ -4177,6 +5841,8 @@ snapshots: text-table@0.2.0: {} + tinyexec@0.3.0: {} + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -4187,31 +5853,49 @@ snapshots: dependencies: is-number: 7.0.0 + tr46@0.0.3: {} + ts-algebra@2.0.0: {} - ts-api-utils@1.3.0(typescript@5.5.4): + ts-api-utils@1.3.0(typescript@5.6.3): dependencies: - typescript: 5.5.4 + typescript: 5.6.3 - tslib@2.6.3: {} + ts-declaration-location@1.0.4(typescript@5.6.3): + dependencies: + minimatch: 10.0.1 + typescript: 5.6.3 + + ts-dedent@2.2.0: {} + + ts-pattern@5.5.0: {} + + tslib@2.7.0: {} type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - type-detect@4.1.0: {} - - type-fest@0.20.2: {} - type-fest@0.6.0: {} type-fest@0.8.1: {} - type-fest@4.24.0: {} + type-fest@4.26.1: {} - typescript@5.5.4: {} + typescript-eslint@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/parser': 8.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/utils': 8.0.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - eslint + - supports-color - undici-types@6.19.6: {} + typescript@5.6.3: {} + + undici-types@6.19.8: {} unicode-canonical-property-names-ecmascript@2.0.0: {} @@ -4226,21 +5910,52 @@ snapshots: universalify@2.0.1: {} + unixify@1.0.0: + dependencies: + normalize-path: 2.1.1 + update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: browserslist: 4.23.3 - escalade: 3.1.2 - picocolors: 1.0.1 + escalade: 3.2.0 + picocolors: 1.1.0 + + update-browserslist-db@1.1.0(browserslist@4.24.0): + dependencies: + browserslist: 4.24.0 + escalade: 3.2.0 + picocolors: 1.1.0 uri-js@4.4.1: dependencies: punycode: 2.3.1 + urlpattern-polyfill@8.0.2: {} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + value-or-promise@1.0.12: {} + + web-streams-polyfill@3.3.3: {} + + webcrypto-core@1.8.0: + dependencies: + '@peculiar/asn1-schema': 2.3.13 + '@peculiar/json-schema': 1.1.12 + asn1js: 3.0.5 + pvtsutils: 1.3.5 + tslib: 2.7.0 + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -4255,6 +5970,10 @@ snapshots: wrappy@1.0.2: {} + ws@8.13.0: {} + + ws@8.18.0: {} + y18n@5.0.8: {} yallist@3.1.1: {} @@ -4268,7 +5987,7 @@ snapshots: yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 diff --git a/scripts/build-local-rules.ts b/scripts/build-local-rules.ts deleted file mode 100755 index 248750f..0000000 --- a/scripts/build-local-rules.ts +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env tsx -import { promises as fs } from 'node:fs'; - -import { camelCase } from 'lodash'; - -export async function buildLocalRules() { - const files = (await fs.readdir('./src/custom')) - .filter(file => file.endsWith('.ts')) - .filter(file => file !== 'index.ts') - .map(file => file.slice(0, -3)); - - const entryFile = /* js */ ` -import type { ESLintUtils } from '@typescript-eslint/utils'; -import type { Rule } from 'eslint'; - -${files.map(file => `import ${camelCase(file)} from './${file}';`).join('\n')} - -export const rules: Record< - string, - Rule.RuleModule | ESLintUtils.RuleModule -> = { - ${files.map(file => `'${file}': ${camelCase(file)},`).join('\n ')} -}; -`.trim(); - - await fs.writeFile('./src/custom/index.ts', entryFile + '\n'); -} - -if (require.main === module) { - void buildLocalRules(); -} diff --git a/scripts/build.ts b/scripts/build.ts index c2f88ec..0b0ec08 100755 --- a/scripts/build.ts +++ b/scripts/build.ts @@ -5,19 +5,20 @@ import { relative, resolve } from 'node:path'; import esbuild from 'esbuild'; import type { Plugin } from 'esbuild'; -import { memoize } from 'lodash'; -import { gray, green } from 'picocolors'; +import { memoize } from 'lodash-es'; +import c from 'picocolors'; import { minify_sync } from 'terser'; import { dependencies } from '../dist/package.json'; -import { buildLocalRules } from './build-local-rules'; import { dts } from './dts'; import { babelPlugin } from './modifier'; const ENV = (process.env.NODE_ENV ??= 'production'); const PROD = ENV === 'production'; +const { gray, green } = c; + declare global { interface Array { filter( @@ -71,10 +72,7 @@ if (process.env.DEBUG) { async function bundle( entry: string, - outfile = entry - .replace('./packages/', './dist/') - .replace('src/', '') - .replace('.ts', '.js'), + outfile: string, options?: esbuild.BuildOptions & { treeShaking?: boolean }, ) { const output = await esbuild.build({ @@ -140,25 +138,31 @@ async function editPackageJson() { } async function useText(path: string) { - const state = await fs.readFile(path, 'utf-8'); + const state = await fs.readFile(path, 'utf8'); const setState = (text: string) => fs.writeFile(path, text); return [state, setState] as const; } function bundleType(source: string, output: string) { - return dts({ - source, - dist: output, - project: './tsconfig.build.json', - }); + try { + return dts({ + source, + dist: output, + project: './tsconfig.build.json', + }); + } catch { + // noop + } } async function main() { - console.log('Building local rules…'); - await buildLocalRules(); - console.log('Building type definitions…'); - bundleType('./src/index.ts', './dist/index.d.ts'); + try { + await fs.rm('dist/config', { recursive: true }); + } catch { + // noop + } + bundleType('./src/prettier.ts', './dist/prettier.d.ts'); bundleType('./src/types.ts', './dist/types.d.ts'); @@ -166,13 +170,12 @@ async function main() { console.log('Building packages…'); await Promise.all([ - bundle('./packages/eslint-plugin-jsx-a11y/src/index.js'), - bundle('./packages/eslint-plugin-react-hooks/index.ts'), - bundle('./packages/eslint-plugin-n/lib/index.js', './dist/eslint-plugin-n/index.js'), - bundle('./packages/eslint-import-resolver-typescript/src/index.ts'), - bundle('./src/custom/index.ts', './dist/eslint-plugin-custom/index.js'), - bundle('./src/local/index.ts', './dist/eslint-plugin-local/index.js'), - bundle('./src/index.ts', './dist/index.js', unminify), + bundle('./src/index.ts', undefined!, { + format: 'esm', + splitting: true, + outdir: './dist/config', + ...unminify, + }), bundle('./src/types.ts', './dist/types.js', unminify), bundle('./src/prettier.ts', './dist/prettier.js', unminify), bundle('./src/install.ts', './dist/install.js', { @@ -185,9 +188,8 @@ async function main() { editPackageJson(), ]); - console.log('Removing redirect…'); - const [distIndex, setDistIndex] = await useText('./dist/index.js'); - await setDistIndex(distIndex.replace(/import.*redirect.*;/g, '')); + // bundleType('./src/index.ts', './dist/config/index.d.ts'); + await fs.copyFile('./src/config.d.ts', './dist/config/index.d.ts'); } void main(); diff --git a/scripts/check-imports.ts b/scripts/check-imports.ts index a20acf4..2e68209 100755 --- a/scripts/check-imports.ts +++ b/scripts/check-imports.ts @@ -3,8 +3,7 @@ import fs from 'node:fs'; import { builtinModules } from 'node:module'; import glob from 'fast-glob'; - -import { uniq } from 'lodash'; +import { uniq } from 'lodash-es'; import { dependencies, peerDependencies } from '../dist/package.json'; diff --git a/scripts/dts.ts b/scripts/dts.ts index 15d802e..1bd1240 100644 --- a/scripts/dts.ts +++ b/scripts/dts.ts @@ -1,9 +1,9 @@ #!/usr/bin/env node -import * as ts from 'typescript'; import { type EntryPointConfig, generateDtsBundle, } from 'dts-bundle-generator/dist/bundle-generator'; +import * as ts from 'typescript'; export function dts({ source, diff --git a/scripts/modifier.ts b/scripts/modifier.ts index 924cc34..b77474f 100644 --- a/scripts/modifier.ts +++ b/scripts/modifier.ts @@ -1,11 +1,14 @@ #!/usr/bin/env tsx import assert from 'node:assert'; import { readFileSync } from 'node:fs'; -import { resolve, extname } from 'node:path'; -import type { Loader, Plugin } from 'esbuild'; +import { extname, resolve } from 'node:path'; + import * as babel from '@babel/core'; import type { types as t, types } from '@babel/core'; -import { createMacro, type MacroHandler } from 'babel-plugin-macros'; +import babelMacros, { type MacroHandler } from 'babel-plugin-macros'; +import type { Loader, Plugin } from 'esbuild'; +import PropTypes from 'prop-types'; + import * as polyfill from '../src/polyfill'; const polyfills = Object.keys(polyfill); @@ -15,7 +18,7 @@ class HandlerMap { set(names: string | string[], handler: MacroHandler) { names = Array.isArray(names) ? names : [names]; - const macro = createMacro(handler); + const macro = babelMacros.createMacro(handler); for (const name of names) { this.map.set(name, macro); } @@ -23,7 +26,7 @@ class HandlerMap { } get keys() { - return Array.from(this.map.keys()); + return [...this.map.keys()]; } resolvePath = (module: string) => module; @@ -96,14 +99,14 @@ const map = new HandlerMap() 'object.groupby', replace(t => t.memberExpression( - t.callExpression(t.identifier('require'), [t.stringLiteral('lodash')]), + t.callExpression(t.identifier('require'), [t.stringLiteral('lodash-es')]), t.identifier('groupBy'), ), ), ); // es-iterator-helpers/Iterator.prototype.* -const polyfillPath = resolve(__dirname, '../src/polyfill.ts'); +const polyfillPath = resolve(import.meta.dirname, '../src/polyfill.ts'); const requirePolyfill = (t: typeof types, name: string) => t.memberExpression( t.callExpression(t.identifier('require'), [t.stringLiteral(polyfillPath)]), @@ -127,15 +130,15 @@ map.set( function replace(getReplacement: (types: typeof t) => t.Expression): MacroHandler { return ({ references, babel: { types: t } }) => { - references.default.forEach(referencePath => { + for (const referencePath of references.default) { referencePath.replaceWith(getReplacement(t)); - }); + } }; } function proto(getProperty: (types: typeof t) => t.Expression): MacroHandler { return ({ references, babel: { types: t } }) => { - references.default.forEach(referencePath => { + for (const referencePath of references.default) { const { parent, parentPath } = referencePath; assert(t.isCallExpression(parent)); const [callee, ...rest] = parent.arguments; @@ -145,7 +148,7 @@ function proto(getProperty: (types: typeof t) => t.Expression): MacroHandler { rest, ), ); - }); + } }; } @@ -160,21 +163,14 @@ export const babelPlugin: Plugin = { return null; } - let source = readFileSync(path, 'utf-8') + const source = readFileSync(path, 'utf8') .replaceAll("require('object.hasown/polyfill')()", 'Object.hasOwn') .replaceAll("require('object.fromentries/polyfill')()", 'Object.fromEntries') .replaceAll( "Object.keys(require('prop-types'))", - JSON.stringify(Object.keys(require('prop-types'))), + JSON.stringify(Object.keys(PropTypes)), ); - if ( - path.includes('packages/eslint-plugin-import/src/rules/') || - path.includes('packages/eslint-plugin-import/config/') - ) { - source = source.replace('\nmodule.exports = {', '\nexport default {'); - } - const isFlow = source.includes('@flow'); const loader = extname(path).slice(1) as Loader; diff --git a/scripts/save_patch.sh b/scripts/save_patch.sh index eec9af7..2f86994 100755 --- a/scripts/save_patch.sh +++ b/scripts/save_patch.sh @@ -3,7 +3,6 @@ sync() ( cd "packages/$1" && git diff HEAD > "../../patch/$1.patch" ) -sync eslint-import-resolver-typescript sync eslint-plugin-jsx-a11y sync eslint-plugin-n sync jsx-ast-utils diff --git a/src/commits.json b/src/commits.json index 653ec36..538ff21 100644 --- a/src/commits.json +++ b/src/commits.json @@ -6,22 +6,22 @@ "subject": "[meta] add `repository.directory` field" }, "eslint-import-resolver-typescript": { - "hash": "3dfad602a05b4b3812a4d3fc681051932f86e838", - "date": "2024-08-01T01:15:59+00:00", + "hash": "5ee5879b4428f42edbc262d66e192c76202b7f47", + "date": "2024-10-01T03:12:28+00:00", "committer": "GitHub", - "subject": "chore(deps): update dependency node to v18.20.4 (#309)" + "subject": "fix(deps): update dependency debug to ^4.3.7 (#316)" }, "eslint-plugin-jsx-a11y": { - "hash": "a08fbcc502d6a6fa7d01a48c5f0b895c61e8cdd5", - "date": "2024-08-22T20:21:57+01:00", + "hash": "4925ba8d0bf80a4b1d8e8645d310590bf1b40b64", + "date": "2024-09-20T14:09:27-07:00", "committer": "Jordan Harband", - "subject": "[Fix] `label-has-associated-control`: ignore undetermined label text" + "subject": "[Fix] handle interactive/noninteractive changes from aria-query" }, "eslint-plugin-n": { - "hash": "e5e758ea0cd238220127ae7bcbd967f1d8920f28", - "date": "2024-08-06T04:22:42+12:00", + "hash": "23d0e846e9dbfb68ccf7f410a83457514d432263", + "date": "2024-10-09T13:49:20+02:00", "committer": "GitHub", - "subject": "docs(process-exit-as-throw): update wording (#323)" + "subject": "chore(master): release 17.11.1 (#352)" }, "eslint-plugin-react": { "hash": "983b88dd3cb5e07919517d3fde4085f60883ded7", diff --git a/src/config.d.ts b/src/config.d.ts new file mode 100644 index 0000000..c36c87c --- /dev/null +++ b/src/config.d.ts @@ -0,0 +1,44 @@ +import type { FlatESLintConfig } from '@aet/eslint-define-config'; +import type { Linter } from 'eslint'; + +type MiddlewareResult = Linter.Config | Linter.Config[]; + +export type Middleware = + | (() => Promise) + | (() => Promise<{ default: MiddlewareResult }>); + +/** + * Returns a ESLint config object. + * + * By default, it includes `["@typescript-eslint", "import-x", "prettier", "unicorn"]` configs. + * Additional bundled plugins include: + * + * 1. [`react`](https://github.com/jsx-eslint/eslint-plugin-react#list-of-supported-rules) + * (automatically enables + * [`react-hooks`](https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks)) + * 2. [`react-refresh`](https://github.com/ArnaudBarre/eslint-plugin-react-refresh) + * 3. [`jsx-a11y`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y#supported-rules) + * 4. [`unicorn`](https://github.com/sindresorhus/eslint-plugin-unicorn#rules) + * 5. [`n`](https://github.com/eslint-community/eslint-plugin-n#-rules) (Node.js specific, + * requires `minimatch`) + * 6. [`jsdoc`](https://github.com/gajus/eslint-plugin-jsdoc#rules) + * + * Non bundled: + * 1. [`graphql`](https://the-guild.dev/graphql/eslint/rules) + * + * @param of Configuration options. + * @returns ESLint configuration object. + */ +export function extendConfig({ + auto, + middlewares: addMiddlewares, + configs, +}: { + auto?: boolean; + middlewares?: Middleware[]; + configs: FlatESLintConfig[]; +}): Promise; + +export const error = 'error'; +export const warn = 'warn'; +export const off = 'off'; diff --git a/src/custom/index.ts b/src/custom/index.ts index 3ae609d..26019d8 100644 --- a/src/custom/index.ts +++ b/src/custom/index.ts @@ -1,17 +1,40 @@ -import type { ESLintUtils } from '@typescript-eslint/utils'; -import type { Rule } from 'eslint'; +import type { ESLint } from 'eslint'; import noEmptyObjectLiteral from './no-empty-object-literal'; import noImportDot from './no-import-dot'; import noUselessImportAlias from './no-useless-import-alias'; import restrictTemplateExpressions from './restrict-template-expressions'; -export const rules: Record< - string, - Rule.RuleModule | ESLintUtils.RuleModule -> = { - 'no-empty-object-literal': noEmptyObjectLiteral, - 'no-import-dot': noImportDot, - 'no-useless-import-alias': noUselessImportAlias, - 'restrict-template-expressions': restrictTemplateExpressions, +type RuleLevel = 'error' | 'warn' | 'off' | 0 | 1 | 2; +type RuleEntry = RuleLevel | [RuleLevel, Partial]; + +export interface LocalRuleOptions { + /** Bans import from the specifier '.' and '..' and replaces it with '.+/index' */ + 'custom/no-import-dot': RuleEntry; + /** + * Enforce template literal expressions to be of `string` type + * @see [restrict-template-expressions](https://typescript-eslint.io/rules/restrict-template-expressions) + */ + 'typed-custom/restrict-template-expressions': RuleEntry<{ allow: string[] }>; + /** Ban assignment of empty object literals `{}` and replace them with `Object.create(null)` */ + 'custom/no-empty-object-literal': RuleEntry; + /** Ban useless import alias */ + 'custom/no-useless-import-alias': RuleEntry; +} + +export const plugin: ESLint.Plugin = { + name: 'custom', + rules: { + 'no-empty-object-literal': noEmptyObjectLiteral, + 'no-import-dot': noImportDot, + 'no-useless-import-alias': noUselessImportAlias, + }, +}; + +export const typedPlugin: ESLint.Plugin = { + name: 'typed-custom', + rules: { + // @ts-expect-error type mismatch + 'restrict-template-expressions': restrictTemplateExpressions, + }, }; diff --git a/src/custom/restrict-template-expressions.ts b/src/custom/restrict-template-expressions.ts index faf6720..b536a03 100644 --- a/src/custom/restrict-template-expressions.ts +++ b/src/custom/restrict-template-expressions.ts @@ -6,7 +6,12 @@ import { isTypeFlagSet, isTypeNeverType, } from '@typescript-eslint/type-utils'; -import { AST_NODE_TYPES, ESLintUtils, type TSESTree } from '@typescript-eslint/utils'; +import { + AST_NODE_TYPES, + ESLintUtils, + ParserServicesWithTypeInformation, + type TSESTree, +} from '@typescript-eslint/utils'; import { getParserServices } from '@typescript-eslint/utils/eslint-utils'; import * as ts from 'typescript'; @@ -52,8 +57,14 @@ export default createRule({ }, defaultOptions: [defaultOption], create(context, [options]) { - const services = getParserServices(context); - if (!services.program) return {}; + let services: ParserServicesWithTypeInformation | undefined; + try { + services = getParserServices(context); + } catch (error) { + console.error(error); + } + + if (!services?.program) return {}; const checker = services.program.getTypeChecker(); const allowed = new Set(options.allow); diff --git a/src/env.ts b/src/environment.ts similarity index 75% rename from src/env.ts rename to src/environment.ts index 5b4dd66..abb967c 100644 --- a/src/env.ts +++ b/src/environment.ts @@ -1,12 +1,13 @@ -import * as fs from 'node:fs'; -import { resolve } from 'node:path'; +import fs from 'node:fs'; +import path from 'node:path'; import type { Middleware } from './middleware'; -import { jsdoc } from './presets/jsdoc'; import { reactQuery, storybook, vitest } from './presets/misc'; import { react, reactRefresh } from './presets/react'; -import { tailwind } from './presets/tailwind'; -import { testingLibrary } from './presets/testing-library'; + +const jsdoc = () => import('./presets/jsdoc'); +const tailwind = () => import('./presets/tailwind'); +const testingLibrary = () => import('./presets/testing-library'); const middlewares = { react, @@ -17,6 +18,8 @@ const middlewares = { testingLibrary, jsdoc, vitest, +} satisfies { + [key: string]: Middleware; }; export const envs: { @@ -62,9 +65,13 @@ export const envs: { export function getProjectDependencies() { const rootDir = process.cwd(); - const pkgJsonPath = resolve(rootDir, 'package.json'); + const pkgJsonPath = path.resolve(rootDir, 'package.json'); const pkgJson = fs.existsSync(pkgJsonPath) - ? JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8')) + ? (JSON.parse(fs.readFileSync(pkgJsonPath, 'utf8')) as { + dependencies?: Record; + devDependencies?: Record; + peerDependencies?: Record; + }) : {}; return new Set( diff --git a/src/index.ts b/src/index.ts index 175d803..42c3867 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,191 +1,104 @@ -/// -import './redirect'; -import type { ESLintConfig, Extends, Plugin, Rules } from '@aet/eslint-define-config'; -import type { ESLintUtils } from '@typescript-eslint/utils'; -import type { Rule } from 'eslint'; -import { uniq } from 'lodash'; +import type { FlatESLintConfig } from '@aet/eslint-define-config'; +import * as tsParser from '@typescript-eslint/parser'; +import importPlugin from 'eslint-plugin-import-x'; +import { uniq } from 'lodash-es'; +import tseslint from 'typescript-eslint'; import { off } from './constants'; -import { checkEnv } from './env'; -import type { Middleware, MiddlewareConfig, MiddlewareFunctions } from './middleware'; -import { custom } from './presets/custom'; +import { checkEnv } from './environment'; +import { Middleware } from './middleware'; import { eslintRules } from './presets/eslint'; -import { stylistic } from './presets/stylistic'; -import { importTypeScript } from './presets/typescript'; -import { unicorn } from './presets/unicorn'; - -export { graphql } from './presets/graphql'; -export { jsdoc } from './presets/jsdoc'; -export { storybook } from './presets/misc'; -export { react, reactRefresh } from './presets/react'; -export { tailwind } from './presets/tailwind'; +import stylistic from './presets/stylistic'; +import { importRules, typescriptRules } from './presets/typescript'; +import unicorn from './presets/unicorn'; export { error, warn, off } from './constants'; -declare global { - interface Array { - filter( - predicate: BooleanConstructor, - ): Exclude[]; - } -} - -const unique = (...arr: (false | undefined | string | string[])[]): string[] => [ - ...new Set(arr.flat(1).filter(Boolean)), -]; - -const ensureArray = (value?: T | T[]): T[] => - value == null ? [] : Array.isArray(value) ? value : [value]; - -type RuleLevel = 'error' | 'warn' | 'off' | 0 | 1 | 2; -type RuleEntry = RuleLevel | [RuleLevel, Partial]; - -export interface LocalRuleOptions { - /** Bans import from the specifier '.' and '..' and replaces it with '.+/index' */ - 'custom/no-import-dot': RuleEntry; - /** - * Enforce template literal expressions to be of `string` type - * @see [restrict-template-expressions](https://typescript-eslint.io/rules/restrict-template-expressions) - */ - 'custom/restrict-template-expressions': RuleEntry<{ allow: string[] }>; - /** Ban assignment of empty object literals `{}` and replace them with `Object.create(null)` */ - 'custom/no-empty-object-literal': RuleEntry; - /** Ban useless import alias */ - 'custom/no-useless-import-alias': RuleEntry; -} - -export type RuleOptions = Rules & Partial; - -export interface CustomRule { - rule: () => Promise<{ - default: Rule.RuleModule | ESLintUtils.RuleModule; - }>; - options?: RuleLevel; -} - -/** - * ESLint Configuration. - * @see [ESLint Configuration](https://eslint.org/docs/latest/user-guide/configuring/) - */ -export type InputConfig = Omit & { - /** - * Rules. - * @see [Rules](https://eslint.org/docs/latest/user-guide/configuring/rules) - */ - rules?: Partial; - - /** - * Glob pattern to find paths to custom rule files in JavaScript or TypeScript. - * Note this must be a string literal or an array of string literals since - * this is statically analyzed. - * - * Rules are prefixed with `custom/` and the file name is used as the rule name. - */ - customRuleFiles?: string | string[]; - - /** - * Automatically detect project types, dependencies and deduct the plugins. - * @default true - */ +export async function extendConfig({ + auto = true, + middlewares: addMiddlewares = [], + configs = [], +}: { auto?: boolean; -}; - -/** - * Returns a ESLint config object. - * - * By default, it includes `["@typescript-eslint", "import-x", "prettier", "unicorn"]` configs. - * Additional bundled plugins include: - * - * 1. [`react`](https://github.com/jsx-eslint/eslint-plugin-react#list-of-supported-rules) - * (automatically enables - * [`react-hooks`](https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks)) - * 2. [`react-refresh`](https://github.com/ArnaudBarre/eslint-plugin-react-refresh) - * 3. [`jsx-a11y`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y#supported-rules) - * 4. [`unicorn`](https://github.com/sindresorhus/eslint-plugin-unicorn#rules) - * 5. [`n`](https://github.com/eslint-community/eslint-plugin-n#-rules) (Node.js specific, - * requires `minimatch`) - * 6. [`jsdoc`](https://github.com/gajus/eslint-plugin-jsdoc#rules) - * - * Non bundled: - * 1. [`graphql`](https://the-guild.dev/graphql/eslint/rules) - * - * @param of Configuration options. - * @returns ESLint configuration object. - */ -export function extendConfig( - of: InputConfig & { - middlewares?: Middleware[]; - } = { - middlewares: [], - }, -): ESLintConfig { - const { - auto = true, - plugins: _plugins = [], - settings = {}, - rules, - extends: _extends, - overrides, - customRuleFiles, - parserOptions, - middlewares: _middlewares = [], - ...rest - } = of; - - const plugins: Plugin[] = [..._plugins]; - const extend: Extends[] = ensureArray(_extends); - - if (customRuleFiles != null) { - plugins.push('local'); - } - + middlewares?: Middleware[]; + configs: FlatESLintConfig[]; +}): Promise { const middlewares: Middleware[] = uniq([ - importTypeScript, - unicorn, - custom, - stylistic, + () => import('./presets/custom'), ...(auto ? checkEnv() : []), - ..._middlewares, + ...addMiddlewares, ]); - const result: MiddlewareConfig = { - root: true, - plugins: unique('custom', plugins), - env: { node: true, browser: true, es2023: true }, - reportUnusedDisableDirectives: true, - parserOptions: { - project: true, - ...parserOptions, + const result: FlatESLintConfig[] = [ + { rules: eslintRules }, // + ...tseslint.configs.recommendedTypeChecked, + importPlugin.flatConfigs.recommended, + importPlugin.flatConfigs.react, + importPlugin.flatConfigs.typescript, + ...unicorn, + stylistic, + { + files: ['**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}'], + languageOptions: { + parserOptions: { + parser: tsParser, + projectService: true, + ecmaVersion: 'latest', + tsconfigRootDir: import.meta.dirname, + sourceType: 'module', + }, + }, + settings: { + 'import-x/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx', '.mts', '.cts'], + }, + 'import-x/resolver': { + typescript: true, + node: true, + }, + 'import-x/core-modules': ['node:sqlite'], + }, + ignores: ['eslint.config.cjs'], + rules: { + ...importRules, + ...typescriptRules, + }, }, - ignorePatterns: [], - globals: {}, - extends: ['eslint:recommended', 'prettier', ...(extend as string[])], - settings, - overrides: [ - { files: ['repl.ts', 'scripts/**/*.ts'], rules: { 'no-console': off } }, - ...(overrides ?? []), - ], - rules: { ...eslintRules }, - ...rest, - }; + { + files: ['*.js', '*.mjs', '*.cjs', '*.jsx'], + ...tseslint.configs.disableTypeChecked, + rules: { + 'import-x/no-commonjs': off, + 'import-x/unambiguous': off, + '@typescript-eslint/no-require-imports': off, + 'typed-custom/restrict-template-expressions': off, + ...tseslint.configs.disableTypeChecked.rules, + }, + }, + { + files: ['*.d.ts'], + rules: { + '@typescript-eslint/consistent-type-imports': off, + 'import-x/unambiguous': off, + }, + }, + ] as FlatESLintConfig[]; - const functions: MiddlewareFunctions = { - addRules(newRules) { - Object.assign(result.rules, newRules); - }, - addSettings(newSettings) { - Object.assign(result.settings, newSettings); - }, - }; - - for (const fn of middlewares) { - fn(result, functions); + for (const middleware of middlewares) { + let fn = await middleware(); + if ('default' in fn) { + fn = fn.default; + } + if (Array.isArray(fn)) { + result.push(...(fn as FlatESLintConfig[]).flat(Infinity)); + } else { + result.push(fn as unknown as FlatESLintConfig); + } } - result.plugins = unique(result.plugins); - result.extends = unique(result.extends); - - Object.assign(result.rules, rules); + if (configs) { + result.push(...configs); + } return result; } diff --git a/src/install.ts b/src/install.ts index 46b54cb..a5602cd 100644 --- a/src/install.ts +++ b/src/install.ts @@ -1,7 +1,7 @@ import { installPackage } from '@antfu/install-pkg'; -import { uniq } from 'lodash'; +import { uniq } from 'lodash-es'; -import { envs, getProjectDependencies } from './env'; +import { envs, getProjectDependencies } from './environment'; const deps = getProjectDependencies(); const packages = uniq( diff --git a/src/local/index.ts b/src/local/index.ts deleted file mode 100644 index bb860d7..0000000 --- a/src/local/index.ts +++ /dev/null @@ -1,83 +0,0 @@ -import * as fs from 'node:fs'; -import { basename, extname, isAbsolute, resolve } from 'node:path'; - -import type { ESLint } from 'eslint'; -import { parseModule } from 'esprima'; -import query from 'esquery'; -import type { Node, Property } from 'estree'; -import { glob } from 'fast-glob'; - -// https://github.com/gulpjs/interpret -const transpilers = [ - 'esbuild-register', - 'tsx', - 'ts-node/register/transpile-only', - '@swc/register', - 'sucrase/register', - '@babel/register', - 'coffeescript/register', -]; - -function tryRequire() { - for (const candidate of transpilers) { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - require(candidate); - return; - } catch {} - } -} - -const unwrapDefault = (module: any): T => module.default ?? module; - -const plugin: ESLint.Plugin = { - rules: {}, -}; - -function hydrateESTreeNode(n: Node): any { - switch (n.type) { - case 'Literal': - return n.value; - case 'ArrayExpression': - return n.elements.filter(Boolean).map(hydrateESTreeNode); - default: - throw new Error(`Unsupported node type: ${n.type}`); - } -} - -function parseConfigFile(js: string) { - const [node] = query( - parseModule(js), - 'CallExpression[callee.name="extendConfig"] > ObjectExpression > Property[key.name="customRuleFiles"]', - ); - return hydrateESTreeNode((node as Property).value); -} - -function main() { - const rootDir = process.cwd(); - - const eslintConfigFile = ['.eslintrc.js', '.eslintrc.cjs'] - .map(file => resolve(rootDir, file)) - .find(file => fs.existsSync(file)); - - if (!eslintConfigFile) return; - - const eslintConfig = fs.readFileSync(eslintConfigFile, 'utf8'); - const customRuleFiles = parseConfigFile(eslintConfig); - if (!customRuleFiles?.length) return; - - tryRequire(); - for (let file of glob.sync(customRuleFiles)) { - if (!isAbsolute(file)) { - file = resolve(rootDir, file); - } - // eslint-disable-next-line @typescript-eslint/no-require-imports - const module = unwrapDefault(require(file)); - const name = module.name ?? basename(file, extname(file)); - plugin.rules![name] = module; - } -} - -main(); - -export = plugin; diff --git a/src/middleware.ts b/src/middleware.ts index af5c616..2d1b3c7 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -1,31 +1,10 @@ -import type { ESLintConfig, KnownExtends, Settings } from '@aet/eslint-define-config'; -import type { Merge, SetRequired } from 'type-fest'; +import type { Linter } from 'eslint'; -import type { RuleOptions } from './index'; +type MiddlewareResult = Linter.Config | Linter.Config[]; -type OptionalObjectKey = Exclude< - { - [Key in keyof T]: undefined | any[] extends T[Key] - ? Key - : undefined | Record extends T[Key] - ? Key - : never; - }[keyof T], - undefined ->; +export type Middleware = + | (() => Promise) + | (() => Promise<{ default: MiddlewareResult }>); -export type MiddlewareConfig = Merge< - SetRequired>, - { extends: KnownExtends[] } ->; - -export interface MiddlewareFunctions { - addRules(rules: Partial): void; - addSettings(settings: Partial): void; -} - -export type Middleware = (config: MiddlewareConfig, helpers: MiddlewareFunctions) => void; - -export function defineMiddleware(middleware: Middleware): Middleware { - return middleware; -} +// eslint-disable-next-line unicorn/prevent-abbreviations +export const def = (module: { default: T }): T => module.default; diff --git a/src/modules.d.ts b/src/modules.d.ts index b2f1126..e04d3e3 100644 --- a/src/modules.d.ts +++ b/src/modules.d.ts @@ -1,25 +1,4 @@ -declare module '@typescript-eslint/utils' { - export * from '@typescript-eslint/utils/dist/index'; -} -declare module '@typescript-eslint/typescript-estree' { - export * from '@typescript-eslint/typescript-estree/dist/index'; -} -declare module '@typescript-eslint/type-utils' { - export * from '@typescript-eslint/type-utils/dist/index'; -} -declare module '@typescript-eslint/utils/eslint-utils' { - export * from '@typescript-eslint/utils/dist/eslint-utils'; -} -declare module '@typescript-eslint/utils/json-schema' { - export * from '@typescript-eslint/utils/dist/json-schema'; -} -declare module '@typescript-eslint/scope-manager' { - export * from '@typescript-eslint/scope-manager/dist/index'; -} -declare module '@typescript-eslint/types' { - export * from '@typescript-eslint/types/dist/index'; -} - +// eslint-disable-next-line import-x/unambiguous declare module 'module' { export function _resolveFilename( request: string, @@ -34,3 +13,12 @@ declare module 'module' { options?: Record, ): string; } + +declare module 'eslint-plugin-storybook' { + import type { Linter } from 'eslint'; + + export const configs: { + csf: Linter.Config; + recommended: Linter.Config; + }; +} diff --git a/src/presets/custom.ts b/src/presets/custom.ts index c1323ab..c838027 100644 --- a/src/presets/custom.ts +++ b/src/presets/custom.ts @@ -1,18 +1,20 @@ import { error } from '../constants'; -import type { LocalRuleOptions } from '../index'; -import { defineMiddleware } from '../middleware'; +import { plugin, typedPlugin, LocalRuleOptions } from '../custom/index'; +import { defineConfig } from '../types'; -const customRules: Partial = { - 'custom/no-import-dot': error, - 'custom/no-useless-import-alias': error, -}; - -export const custom = defineMiddleware((config, { addRules }) => { - addRules(customRules); - config.overrides.push({ +export default defineConfig([ + { + plugins: { custom: plugin }, + rules: { + 'custom/no-import-dot': error, + 'custom/no-useless-import-alias': error, + } satisfies Partial, + }, + { + plugins: { 'typed-custom': typedPlugin }, files: ['*.ts', '!*.d.ts'], rules: { - 'custom/restrict-template-expressions': error, - }, - }); -}); + 'typed-custom/restrict-template-expressions': error, + } satisfies Partial, + }, +]); diff --git a/src/presets/graphql.ts b/src/presets/graphql.ts index 0f2ace9..e8378ef 100644 --- a/src/presets/graphql.ts +++ b/src/presets/graphql.ts @@ -1,12 +1,13 @@ +// Not usable. https://github.com/dimaMachina/graphql-eslint/issues/2178 import type { GraphQLRulesObject } from '@aet/eslint-define-config/src/rules/graphql-eslint'; +import * as graphql from '@graphql-eslint/eslint-plugin'; -import { defineMiddleware } from '../middleware'; +import { defineConfig } from '../types'; // https://the-guild.dev/graphql/eslint/rules const graphqlRules: Partial = {}; -export const graphql = defineMiddleware((config, { addRules }) => { - config.plugins.push('@graphql-eslint'); - config.extends.push('plugin:@graphql-eslint/recommended'); - addRules(graphqlRules); +export default defineConfig({ + processor: graphql.processors.graphql, + rules: graphqlRules, }); diff --git a/src/presets/jsdoc.ts b/src/presets/jsdoc.ts index 543fd18..704f567 100644 --- a/src/presets/jsdoc.ts +++ b/src/presets/jsdoc.ts @@ -1,14 +1,14 @@ import type { JSDocRulesObject } from '@aet/eslint-define-config/src/rules/jsdoc'; +import module from 'eslint-plugin-jsdoc'; import { off } from '../constants'; -import { defineMiddleware } from '../middleware'; +import { defineConfig } from '../types'; const jsdocRules: Partial = { 'jsdoc/require-jsdoc': off, }; -export const jsdoc = defineMiddleware((config, { addRules }) => { - config.plugins.push('jsdoc'); - config.extends.push('plugin:jsdoc/recommended-typescript'); - addRules(jsdocRules); -}); +export default defineConfig([ + module.configs['flat/recommended-typescript'], + { rules: jsdocRules }, +]); diff --git a/src/presets/misc.ts b/src/presets/misc.ts index 6d29b00..017b2d8 100644 --- a/src/presets/misc.ts +++ b/src/presets/misc.ts @@ -1,13 +1,17 @@ -import { defineMiddleware } from '../middleware'; +import { def } from '../middleware'; +import { defineConfig } from '../types'; -export const storybook = defineMiddleware(config => { - config.extends.push('plugin:storybook/recommended'); -}); +export async function storybook() { + const { configs } = await import('eslint-plugin-storybook'); + return defineConfig([configs.recommended]); +} -export const reactQuery = defineMiddleware(config => { - config.extends.push('plugin:@tanstack/eslint-plugin-query/recommended'); -}); +export async function reactQuery() { + const { configs } = def(await import('@tanstack/eslint-plugin-query')); + return defineConfig(configs['flat/recommended']); +} -export const vitest = defineMiddleware(config => { - config.extends.push('plugin:vitest/recommended'); -}); +export async function vitest() { + const { configs } = def(await import('eslint-plugin-vitest')); + return defineConfig([configs.recommended]); +} diff --git a/src/presets/react.ts b/src/presets/react.ts index 7d0537c..da0395c 100644 --- a/src/presets/react.ts +++ b/src/presets/react.ts @@ -2,35 +2,42 @@ import type { ReactRulesObject } from '@aet/eslint-define-config/src/rules/react import type { ReactRefreshRulesObject } from '@aet/eslint-define-config/src/rules/react-refresh'; import { error, off, warn } from '../constants'; -import { defineMiddleware } from '../middleware'; +import { def } from '../middleware'; +import { defineConfig } from '../types'; const reactRules: Partial = { '@eslint-react/no-missing-component-display-name': off, '@eslint-react/no-children-prop': error, + '@eslint-react/no-leaked-conditional-rendering': error, }; -export const react = defineMiddleware((config, { addRules }) => { - config.plugins.push('@eslint-react/eslint-plugin', 'react-hooks'); - config.extends.push( - 'plugin:@eslint-react/recommended-legacy', - 'plugin:@eslint-react/dom-legacy', - 'plugin:react-hooks/recommended', - 'plugin:jsx-a11y/recommended', - ); - config.overrides.push({ - files: ['*.tsx'], - rules: { - '@eslint-react/no-leaked-conditional-rendering': error, +export async function react() { + const reactPlugin = def(await import('@eslint-react/eslint-plugin')); + const a11y = def(await import('../../packages/eslint-plugin-jsx-a11y/src/index')); + const hooks = await import('../../packages/eslint-plugin-react-hooks'); + + return defineConfig([ + reactPlugin.configs['recommended-type-checked'] as any, + hooks.flatConfigs.recommended, + a11y.flatConfigs.recommended, + { + files: ['*.tsx'], + rules: reactRules, }, - }); - addRules(reactRules); -}); + ]); +} const refreshRules: Partial = { 'react-refresh/only-export-components': [warn, { allowConstantExport: true }], }; -export const reactRefresh = defineMiddleware((config, { addRules }) => { - config.plugins.push('react-refresh'); - addRules(refreshRules); -}); +export async function reactRefresh() { + const refreshPlugin = def(await import('eslint-plugin-react-refresh')); + return defineConfig({ + plugins: { + // @ts-expect-error no types + 'react-refresh': refreshPlugin, + }, + rules: refreshRules, + }); +} diff --git a/src/presets/stylistic.ts b/src/presets/stylistic.ts index 85f2929..6edd0a9 100644 --- a/src/presets/stylistic.ts +++ b/src/presets/stylistic.ts @@ -1,21 +1,25 @@ import type { StylisticRulesObject } from '@aet/eslint-define-config/src/rules/stylistic'; +import stylistic from '@stylistic/eslint-plugin'; import { error } from '../constants'; -import { defineMiddleware } from '../middleware'; +import { defineConfig } from '../types'; const stylisticRules: Partial = { - '@stylistic/spaced-comment': [ + 'stylistic/spaced-comment': [ error, 'always', - { - markers: ['/', '#', '@'], - // allow /*@__PURE__*/ - block: { exceptions: ['@'] }, - }, + // allow /*@__PURE__*/ + { markers: ['/', '#', '@'], block: { exceptions: ['@'] } }, + ], + 'stylistic/jsx-sort-props': [ + error, + { callbacksLast: true, shorthandFirst: true, multiline: 'last' }, ], }; -export const stylistic = defineMiddleware((config, { addRules }) => { - config.plugins.push('@stylistic'); - addRules(stylisticRules); +export default defineConfig({ + plugins: { + stylistic, + }, + rules: stylisticRules, }); diff --git a/src/presets/tailwind.ts b/src/presets/tailwind.ts index 9f9f3cc..3d57d83 100644 --- a/src/presets/tailwind.ts +++ b/src/presets/tailwind.ts @@ -1,13 +1,14 @@ import type { TailwindRulesObject } from '@aet/eslint-define-config/src/rules/tailwind'; +import tailwind from 'eslint-plugin-tailwindcss'; import { off } from '../constants'; -import { defineMiddleware } from '../middleware'; +import { defineConfig } from '../types'; const tailwindRules: Partial = { 'tailwindcss/no-custom-classname': off, } as const; -export const tailwind = defineMiddleware((config, { addRules }) => { - config.extends.push('plugin:tailwindcss/recommended'); - addRules(tailwindRules); -}); +export default defineConfig([ + ...tailwind.configs['flat/recommended'], + { rules: tailwindRules }, +]); diff --git a/src/presets/testing-library.ts b/src/presets/testing-library.ts index 6650613..7c08518 100644 --- a/src/presets/testing-library.ts +++ b/src/presets/testing-library.ts @@ -1,13 +1,15 @@ import type { TestingLibraryRulesObject } from '@aet/eslint-define-config/src/rules/testing-library'; +import testingLibrary from 'eslint-plugin-testing-library'; -import { defineMiddleware } from '../middleware'; +import { defineConfig } from '../types'; const testingLibraryRules: Partial = {}; -export const testingLibrary = defineMiddleware((config, { addRules }) => { - config.overrides.push({ - files: ['**/*.(spec|test).{ts,tsx}'], - plugins: ['plugin:testing-library/react'], - }); - addRules(testingLibraryRules); +export default defineConfig({ + files: ['**/*.(spec|test).{ts,tsx}'], + ...testingLibrary.configs['flat/react'], + rules: { + ...testingLibrary.configs['flat/react'].rules, + ...testingLibraryRules, + }, }); diff --git a/src/presets/typescript.ts b/src/presets/typescript.ts index f77d020..3ba8581 100644 --- a/src/presets/typescript.ts +++ b/src/presets/typescript.ts @@ -2,9 +2,8 @@ import type { ImportXRulesObject } from '@aet/eslint-define-config/src/rules/imp import type { TypeScriptRulesObject } from '@aet/eslint-define-config/src/rules/typescript-eslint'; import { error, off, warn } from '../constants'; -import { defineMiddleware } from '../middleware'; -const importRules: Partial = { +export const importRules: Partial = { 'import-x/first': error, 'import-x/no-absolute-path': error, 'import-x/no-duplicates': warn, @@ -20,7 +19,7 @@ const importRules: Partial = { 'import-x/unambiguous': error, }; -const typescriptRules: Partial = { +export const typescriptRules: Partial = { '@typescript-eslint/ban-ts-comment': [ error, { @@ -38,6 +37,10 @@ const typescriptRules: Partial = { warn, { accessibility: 'no-public' }, ], + '@typescript-eslint/no-empty-object-type': [ + error, + { allowInterfaces: 'with-single-extends' }, + ], '@typescript-eslint/no-empty-interface': [error, { allowSingleExtends: true }], '@typescript-eslint/no-explicit-any': off, '@typescript-eslint/no-misused-promises': [error, { checksVoidReturn: false }], @@ -55,42 +58,3 @@ const typescriptRules: Partial = { '@typescript-eslint/triple-slash-reference': off, '@typescript-eslint/unbound-method': off, }; - -export const importTypeScript = defineMiddleware((config, { addRules, addSettings }) => { - config.parser = '@typescript-eslint/parser'; - config.plugins.push('@typescript-eslint', 'import-x'); - config.extends.push( - 'plugin:@typescript-eslint/recommended-type-checked', - 'plugin:import-x/errors', - 'plugin:import-x/typescript', - ); - addSettings({ - 'import-x/parsers': { - '@typescript-eslint/parser': ['.ts', '.tsx', '.mts', '.cts'], - }, - 'import-x/resolver': { - typescript: true, - }, - }); - config.overrides.push( - { - files: ['.eslintrc.js', '*.config.js', '*.cjs', '*.mjs'], - extends: ['plugin:@typescript-eslint/disable-type-checked'], - rules: { - 'import-x/no-commonjs': off, - 'import-x/unambiguous': off, - '@typescript-eslint/no-require-imports': off, - }, - }, - { - files: ['*.d.ts'], - rules: { - '@typescript-eslint/consistent-type-imports': off, - 'import-x/unambiguous': off, - }, - }, - ); - - addRules(importRules); - addRules(typescriptRules); -}); diff --git a/src/presets/unicorn.ts b/src/presets/unicorn.ts index e63a3cd..519a966 100644 --- a/src/presets/unicorn.ts +++ b/src/presets/unicorn.ts @@ -1,8 +1,9 @@ -/* eslint-disable unicorn/string-content */ import type { UnicornRulesObject } from '@aet/eslint-define-config/src/rules/unicorn'; +import unicorn from 'eslint-plugin-unicorn'; +import globals from 'globals'; import { error, off, warn } from '../constants'; -import { defineMiddleware } from '../middleware'; +import { defineConfig } from '../types'; const suggest = (suggest: string) => ({ suggest, fix: false }); @@ -99,13 +100,31 @@ const unicornRules: Partial = { 'unicorn/template-indent': warn, }; -export const unicorn = defineMiddleware((config, { addRules }) => { - config.plugins.push('unicorn'); - addRules(unicornRules); - config.overrides.push({ +// export const unicorn = defineMiddleware((config, { addRules }) => { +// config.plugins.push('unicorn'); +// addRules(unicornRules); +// config.overrides.push({ +// files: ['*.test.ts', '*.test.tsx'], +// rules: { +// 'unicorn/no-useless-undefined': off, +// }, +// }); +// }); + +export default defineConfig([ + { + languageOptions: { + globals: globals.builtin, + }, + plugins: { + unicorn, + }, + rules: unicornRules, + }, + { files: ['*.test.ts', '*.test.tsx'], rules: { 'unicorn/no-useless-undefined': off, }, - }); -}); + }, +]); diff --git a/src/redirect.ts b/src/redirect.ts deleted file mode 100644 index 06c8b57..0000000 --- a/src/redirect.ts +++ /dev/null @@ -1,24 +0,0 @@ -import Module from 'node:module'; -const { name } = [require][0]('./package.json'); - -const _resolveFilename = Module._resolveFilename; -const alias = new Set([ - 'eslint-import-resolver-typescript', - 'eslint-plugin-jsx-a11y', - 'eslint-plugin-local', - 'eslint-plugin-n', - 'eslint-plugin-react-hooks', - 'eslint-plugin-custom', -]); - -type CDR = T extends [any, ...infer R] ? R : []; - -Module._resolveFilename = function ( - request: string, - ...args: CDR> -) { - if (alias.has(request)) { - request = `${name}/${request}`; - } - return _resolveFilename(request, ...args); -}; diff --git a/src/types.ts b/src/types.ts index a318eb4..fda1763 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,5 +1,5 @@ -import type { Rule } from 'eslint'; import type { ESLintUtils } from '@typescript-eslint/utils'; +import type { Rule, Linter } from 'eslint'; export function defineRules(rules: { [ruleName: string]: Rule.RuleModule | ESLintUtils.RuleModule; @@ -7,6 +7,13 @@ export function defineRules(rules: { return rules; } +export function defineConfig(config: Linter.Config): Linter.Config; +export function defineConfig(config: Linter.Config[]): Linter.Config[]; + +export function defineConfig(config: Linter.Config | Linter.Config[]) { + return config; +} + export function defineRule({ name, create, diff --git a/src/types/eslint-plugin-react-refresh.d.ts b/src/types/eslint-plugin-react-refresh.d.ts new file mode 100644 index 0000000..a5459d9 --- /dev/null +++ b/src/types/eslint-plugin-react-refresh.d.ts @@ -0,0 +1,18 @@ +// eslint-disable-next-line import-x/unambiguous +declare module 'eslint-plugin-react-refresh' { + import type { TSESLint } from '@typescript-eslint/utils'; + + export const rules: { + 'only-export-components': TSESLint.RuleModule< + 'exportAll' | 'namedExport' | 'anonymousExport' | 'noExport' | 'localComponents', + | [] + | [ + { + allowConstantExport?: boolean; + checkJS?: boolean; + allowExportNames?: string[]; + }, + ] + >; + }; +} diff --git a/src/types/eslint-plugin-testing-library.d.ts b/src/types/eslint-plugin-testing-library.d.ts new file mode 100644 index 0000000..9a81338 --- /dev/null +++ b/src/types/eslint-plugin-testing-library.d.ts @@ -0,0 +1,55 @@ +// eslint-disable-next-line import-x/unambiguous +declare module 'eslint-plugin-testing-library' { + import type { Rule, Linter } from 'eslint'; + + // 6.3.0 + const plugin: { + meta: { + name: 'eslint-plugin-testing-library'; + version: '6.3.0'; + }; + configs: { + dom: Linter.BaseConfig; + angular: Linter.BaseConfig; + react: Linter.BaseConfig; + vue: Linter.BaseConfig; + marko: Linter.BaseConfig; + 'flat/dom': Linter.Config; + 'flat/angular': Linter.Config; + 'flat/react': Linter.Config; + 'flat/vue': Linter.Config; + 'flat/marko': Linter.Config; + }; + rules: { + 'await-async-events': Rule.RuleModule; + 'await-async-queries': Rule.RuleModule; + 'await-async-utils': Rule.RuleModule; + 'consistent-data-testid': Rule.RuleModule; + 'no-await-sync-events': Rule.RuleModule; + 'no-await-sync-queries': Rule.RuleModule; + 'no-container': Rule.RuleModule; + 'no-debugging-utils': Rule.RuleModule; + 'no-dom-import': Rule.RuleModule; + 'no-global-regexp-flag-in-query': Rule.RuleModule; + 'no-manual-cleanup': Rule.RuleModule; + 'no-node-access': Rule.RuleModule; + 'no-promise-in-fire-event': Rule.RuleModule; + 'no-render-in-lifecycle': Rule.RuleModule; + 'no-unnecessary-act': Rule.RuleModule; + 'no-wait-for-multiple-assertions': Rule.RuleModule; + 'no-wait-for-side-effects': Rule.RuleModule; + 'no-wait-for-snapshot': Rule.RuleModule; + 'prefer-explicit-assert': Rule.RuleModule; + 'prefer-find-by': Rule.RuleModule; + 'prefer-implicit-assert': Rule.RuleModule; + 'prefer-presence-queries': Rule.RuleModule; + 'prefer-query-by-disappearance': Rule.RuleModule; + 'prefer-query-matchers': Rule.RuleModule; + 'prefer-screen-queries': Rule.RuleModule; + 'prefer-user-event': Rule.RuleModule; + 'render-result-naming-convention': Rule.RuleModule; + }; + }; + + export = plugin; +} diff --git a/tsconfig.json b/tsconfig.json index 75f5949..4fdbb05 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,8 +6,8 @@ "esModuleInterop": true, "experimentalDecorators": true, "jsx": "react-jsx", - "module": "commonjs", - "moduleResolution": "node", + "module": "ESNext", + "moduleResolution": "Bundler", "noEmit": true, "noImplicitOverride": true, "noUnusedLocals": true,