diff --git a/.codesandbox/ci.json b/.codesandbox/ci.json index cdc33c0d9..b1a912570 100644 --- a/.codesandbox/ci.json +++ b/.codesandbox/ci.json @@ -1,4 +1,5 @@ { "sandboxes": ["vanilla", "vanilla-ts"], - "node": "20" + "node": "20", + "packages": [".", "/codemods"] } diff --git a/.github/workflows/test-reselect-codemods.yml b/.github/workflows/test-reselect-codemods.yml new file mode 100644 index 000000000..62e607494 --- /dev/null +++ b/.github/workflows/test-reselect-codemods.yml @@ -0,0 +1,46 @@ +name: Test Reselect Codemods + +on: [push, pull_request, workflow_dispatch] + +defaults: + run: + working-directory: codemods + +jobs: + test: + name: Run test Suite + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + node-version: [18, 20, lts/*] + os: [ubuntu-latest] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'yarn' + + - name: Check folder contents + run: ls -l . + + - name: Install dependencies + run: yarn install + + - name: Lint Files + run: yarn lint + + - name: Check formatting + run: yarn format-check + + - name: Check for duplicate dependencies + run: yarn dedupe --strategy highest --check + + - name: Run test suite + run: yarn test diff --git a/codemods/.gitignore b/codemods/.gitignore new file mode 100644 index 000000000..150ac976b --- /dev/null +++ b/codemods/.gitignore @@ -0,0 +1,45 @@ +# Dependencies +node_modules/ + +# Production +build/ + +# Generated files +.docusaurus/ +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.cache/ +.yarnrc +.yarn/* +!.yarn/patches +!.yarn/releases +!.yarn/plugins +!.yarn/sdks +!.yarn/versions +.pnp.* +*.tgz + +tsconfig.vitest-temp.json +.eslintcache +*.tsbuildinfo + +.yalc/ +.yalc.lock +.vscode/ +coverage/ +build/ +lib/ +dist/ +temp/ +.tmp/ +.temp/ diff --git a/codemods/.prettierignore b/codemods/.prettierignore new file mode 100644 index 000000000..eb05d160f --- /dev/null +++ b/codemods/.prettierignore @@ -0,0 +1 @@ +**/__testfixtures__/ diff --git a/codemods/.release-it.json b/codemods/.release-it.json new file mode 100644 index 000000000..1a38df893 --- /dev/null +++ b/codemods/.release-it.json @@ -0,0 +1,9 @@ +{ + "hooks": { + "after:bump": "yarn && git add -u" + }, + "git": { + "commitMessage": "Release reselect-codemods ${version}", + "tagName": "reselect-codemods@${version}" + } +} diff --git a/codemods/README.md b/codemods/README.md new file mode 100644 index 000000000..a2cd51147 --- /dev/null +++ b/codemods/README.md @@ -0,0 +1,42 @@ +# Reselect Codemods + +A collection of codemods for updating legacy Reselect API usage patterns to modern patterns. + +## Usage + +To run a specific codemod from this project, you would run the following: + +```bash +npx reselect-codemods path/of/files/ or/some**/*glob.js + +# or + +yarn global add reselect-codemods +reselect-codemods path/of/files/ or/some**/*glob.js +``` + +## Local Usage + +``` +node ./bin/cli.mjs path/of/files/ or/some**/*glob.js +``` + +## Transforms + + + +- [convertInputSelectorsToArray](transforms/convertInputSelectorsToArray/README.md) + + + +## Contributing + +### Installation + +- clone the repo +- change into the repo directory +- `yarn` + +### Running tests + +- `yarn test` diff --git a/codemods/eslint.config.mts b/codemods/eslint.config.mts new file mode 100644 index 000000000..0d96e3c8e --- /dev/null +++ b/codemods/eslint.config.mts @@ -0,0 +1,169 @@ +import js from '@eslint/js' +import vitestPlugin from '@vitest/eslint-plugin' +import prettierConfig from 'eslint-config-prettier/flat' +import type { ConfigArray } from 'typescript-eslint' +import { config, configs, parser } from 'typescript-eslint' + +const eslintConfig: ConfigArray = config( + { + name: 'global-ignores', + ignores: [ + '**/dist/', + '**/.yalc/', + '**/build/', + '**/lib/', + '**/temp/', + '**/.temp/', + '**/.tmp/', + '**/.yarn/', + '**/coverage/', + '**/__testfixtures__/', + ], + }, + { name: `${js.meta.name}/recommended`, ...js.configs.recommended }, + ...configs.recommended, + ...configs.stylistic, + { name: 'vitest/recommended', ...vitestPlugin.configs.recommended }, + { + name: 'main', + languageOptions: { + parser, + parserOptions: { + projectService: { + defaultProject: './tsconfig.json', + }, + tsconfigRootDir: import.meta.dirname, + ecmaVersion: 'latest', + }, + }, + rules: { + '@typescript-eslint/consistent-type-imports': [ + 2, + { + prefer: 'type-imports', + fixStyle: 'separate-type-imports', + disallowTypeAnnotations: true, + }, + ], + '@typescript-eslint/consistent-type-exports': [ + 2, + { fixMixedExportsWithInlineTypeSpecifier: false }, + ], + '@typescript-eslint/no-explicit-any': [ + 2, + { fixToUnknown: false, ignoreRestArgs: false }, + ], + '@typescript-eslint/no-empty-object-type': [ + 2, + { allowInterfaces: 'never', allowObjectTypes: 'never' }, + ], + '@typescript-eslint/no-restricted-types': [ + 2, + { + types: { + '{}': { + message: ` +- If you want to represent an empty object, use \`type EmptyObject = Record\`. +- If you want to represent an object literal, use either \`type AnyObject = Record\` or \`object\`. +- If you want to represent any non-nullish value, use \`type AnyNonNullishValue = NonNullable\`.`, + suggest: [ + 'AnyNonNullishValue', + 'EmptyObject', + 'AnyObject', + 'object', + 'Record', + 'Record', + 'NonNullable', + ], + }, + }, + }, + ], + '@typescript-eslint/no-namespace': [ + 2, + { allowDeclarations: false, allowDefinitionFiles: true }, + ], + '@typescript-eslint/consistent-type-definitions': [2, 'type'], + 'sort-imports': [ + 2, + { + ignoreCase: false, + ignoreDeclarationSort: true, + ignoreMemberSort: false, + memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'], + allowSeparatedGroups: true, + }, + ], + '@typescript-eslint/unified-signatures': [2], + '@typescript-eslint/no-unnecessary-type-parameters': [2], + '@typescript-eslint/no-invalid-void-type': [2], + '@typescript-eslint/no-confusing-void-expression': [2], + '@typescript-eslint/no-duplicate-type-constituents': [2], + '@typescript-eslint/require-await': [2], + '@typescript-eslint/no-redundant-type-constituents': [2], + '@typescript-eslint/no-unnecessary-type-arguments': [2], + '@typescript-eslint/no-unnecessary-type-assertion': [2], + '@typescript-eslint/prefer-nullish-coalescing': [2], + '@typescript-eslint/no-inferrable-types': [2], + 'object-shorthand': [2], + + 'no-undef': [0], + '@typescript-eslint/no-unused-vars': [ + 0, + { + vars: 'all', + args: 'after-used', + caughtErrors: 'all', + ignoreRestSiblings: false, + reportUsedIgnorePattern: false, + }, + ], + '@typescript-eslint/ban-ts-comment': [ + 0, + [ + { + 'ts-expect-error': 'allow-with-description', + 'ts-ignore': true, + 'ts-nocheck': true, + 'ts-check': false, + minimumDescriptionLength: 3, + }, + ], + ], + 'vitest/valid-title': [0], + 'vitest/no-alias-methods': [2], + 'vitest/no-disabled-tests': [2], + 'vitest/no-focused-tests': [2], + 'vitest/no-test-prefixes': [2], + 'vitest/no-test-return-statement': [2], + 'vitest/prefer-each': [2], + 'vitest/prefer-spy-on': [2], + 'vitest/prefer-to-be': [2], + 'vitest/prefer-to-contain': [2], + 'vitest/prefer-to-have-length': [2], + }, + + settings: { + vitest: { + typecheck: true, + }, + }, + + linterOptions: { reportUnusedDisableDirectives: 2 }, + }, + { + name: 'commonjs', + files: ['**/*.c[jt]s'], + languageOptions: { sourceType: 'commonjs' }, + rules: { + '@typescript-eslint/no-require-imports': [ + 0, + [{ allow: [], allowAsImport: false }], + ], + }, + }, + + prettierConfig, +) + +export default eslintConfig diff --git a/codemods/package.json b/codemods/package.json new file mode 100644 index 000000000..de20d5c6b --- /dev/null +++ b/codemods/package.json @@ -0,0 +1,99 @@ +{ + "name": "reselect-codemods", + "version": "0.0.1", + "description": "A collection of codemods for the reselect library", + "keywords": [ + "redux", + "redux-toolkit", + "reselect", + "codemod" + ], + "homepage": "https://github.com/reduxjs/reselect/tree/master/codemods#readme", + "bugs": { + "url": "https://github.com/reduxjs/reselect/issues" + }, + "repository": { + "directory": "codemods", + "type": "git", + "url": "git+https://github.com/reduxjs/reselect.git" + }, + "bin": "./dist/bin.js", + "scripts": { + "build": "tsup --config=$INIT_CWD/tsup.config.mts", + "check-exports": "attw --pack $INIT_CWD", + "check-package-json": "publint --pack=yarn --strict $INIT_CWD", + "clean": "rimraf -g $INIT_CWD/'{dist,coverage,?(.)temp}'/", + "format-check": "prettier --ignore-path=$INIT_CWD/.prettierignore --config=$INIT_CWD/prettier.config.mjs -c $INIT_CWD", + "format": "prettier --ignore-path=$INIT_CWD/.prettierignore --config=$INIT_CWD/prettier.config.mjs -w $INIT_CWD", + "lint-fix": "eslint --config=$INIT_CWD/eslint.config.mts --fix $INIT_CWD", + "lint": "eslint --config=$INIT_CWD/eslint.config.mts $INIT_CWD", + "prepack": "yarn clean && yarn build", + "test-types": "tsc -p $INIT_CWD/tsconfig.json", + "test": "vitest --run --config=$INIT_CWD/vitest.config.mts" + }, + "dependencies": { + "globby": "^14.1.0", + "jscodeshift": "^17.3.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.4", + "@eslint/js": "^9.23.0", + "@types/jscodeshift": "^17.3.0", + "@types/node": "^22.14.0", + "@typescript-eslint/utils": "^8.29.0", + "@vitest/eslint-plugin": "^1.1.39", + "eslint": "^9.23.0", + "eslint-config-prettier": "^10.1.1", + "jiti": "^2.4.2", + "prettier": "^3.5.3", + "publint": "^0.3.10", + "reselect": "workspace:^", + "rimraf": "^6.0.1", + "tsup": "^8.4.0", + "typescript": "^5.8.2", + "typescript-eslint": "^8.29.0", + "vitest": "^3.1.1" + }, + "sideEffects": false, + "type": "module", + "exports": { + ".": { + "bun": { + "types": "./dist/index.d.ts", + "default": "./src/index.ts" + }, + "module-sync": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "module": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "default": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist", + "src" + ], + "engines": { + "node": ">= 16" + }, + "publishConfig": { + "access": "public", + "provenance": true + } +} diff --git a/codemods/prettier.config.mjs b/codemods/prettier.config.mjs new file mode 100644 index 000000000..37f94445a --- /dev/null +++ b/codemods/prettier.config.mjs @@ -0,0 +1,10 @@ +/** + * @satisfies {import('prettier').Config} + */ +const prettierConfig = { + arrowParens: 'avoid', + semi: false, + singleQuote: true, +} + +export default prettierConfig diff --git a/codemods/src/bin.ts b/codemods/src/bin.ts new file mode 100644 index 000000000..102133076 --- /dev/null +++ b/codemods/src/bin.ts @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +import { globby } from 'globby' +import * as child_process from 'node:child_process' +import * as path from 'node:path' +import { fileURLToPath } from 'node:url' +import { promisify } from 'node:util' + +const __filename = fileURLToPath(import.meta.url) +const __dirname = path.dirname(__filename) + +const execFile = promisify(child_process.execFile) + +const extensions = 'ts,tsx,js,jsx,mts,cts,mjs,cjs' + +const transformerDirectory = path.join(__dirname, '..', 'dist', 'transforms') +const transformerFilePath = path.join( + transformerDirectory, + `${process.argv[2]}.js`, +) + +const runCodemod = async () => { + const targetedFiles = await globby(process.argv.slice(3)) + + await execFile( + 'jscodeshift', + ['-t', transformerFilePath, '--extensions', extensions, ...targetedFiles], + { shell: true }, + ) +} + +void runCodemod() diff --git a/codemods/src/index.ts b/codemods/src/index.ts new file mode 100644 index 000000000..66a112f6e --- /dev/null +++ b/codemods/src/index.ts @@ -0,0 +1 @@ +export { convertInputSelectorsToArrayTransform } from './transforms/convertInputSelectorsToArray.js' diff --git a/codemods/src/transforms/README.md b/codemods/src/transforms/README.md new file mode 100644 index 000000000..eb90c2428 --- /dev/null +++ b/codemods/src/transforms/README.md @@ -0,0 +1,70 @@ +# convertInputSelectorsToArray + +Transforms the usage of Reselect's `createSelector` API by consolidating multiple inline input selector arguments into a single array. + +It should work with both JavaScript and TypeScript files. + +## Usage + +``` +npx reselect-codemods convertInputSelectorsToArray path/of/files/ or/some**/*glob.js + +# or + +yarn global add reselect-codemods +reselect-codemods convertInputSelectorsToArray path/of/files/ or/some**/*glob.js +``` + +## Local Usage + +``` +node ./bin/cli.mjs convertInputSelectorsToArray path/of/files/ or/some**/*glob.js +``` + +## Input / Output + + + +- [separate-inline-arguments.input.ts](#separate-inline-arguments.ts) +- [withTypes.input.ts](#withTypes.ts) + + + +## + +**separate-inline-arguments.ts** + +**Input** ([separate-inline-arguments.input.ts](transforms\convertInputSelectorsToArray__testfixtures__\separate-inline-arguments.input.ts)): + +```ts +import { createSelector } from 'reselect' + +export interface RootState { + todos: { id: number; completed: boolean }[] + alerts: { id: number; read: boolean }[] +} + +const selectTodoById = createSelector( + (state: RootState) => state.todos, + (state: RootState, id: number) => id, + (todos, id) => todos.find(todo => todo.id === id), +) +``` + +**Output** ([separate-inline-arguments.output.ts](transforms\convertInputSelectorsToArray__testfixtures__\separate-inline-arguments.output.ts)): + +```ts +import { createSelector } from 'reselect' + +export interface RootState { + todos: { id: number; completed: boolean }[] + alerts: { id: number; read: boolean }[] +} + +const selectTodoById = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.find(todo => todo.id === id), +) +``` + + diff --git a/codemods/src/transforms/convertInputSelectorsToArray.ts b/codemods/src/transforms/convertInputSelectorsToArray.ts new file mode 100644 index 000000000..2d1c7c990 --- /dev/null +++ b/codemods/src/transforms/convertInputSelectorsToArray.ts @@ -0,0 +1,224 @@ +import type { + ASTPath, + CallExpression, + Collection, + Identifier, + JSCodeshift, + Transform, + VariableDeclaration, + VariableDeclarator, +} from 'jscodeshift' +import type { TestOptions } from 'jscodeshift/src/testUtils.js' + +type NamedFunctionCallExpression = { + callee: Identifier +} & CallExpression + +type NamedVariableDeclarator = { + id: Identifier +} & VariableDeclarator + +type NamedVariableDeclaration = { + declarations: NamedVariableDeclarator[] +} & VariableDeclaration + +const CREATE_SELECTOR_CREATOR = 'createSelectorCreator' + +const CREATE_SELECTOR = 'createSelector' + +const WITH_TYPES = 'withTypes' + +const collectSelectorCreators = (j: JSCodeshift, root: Collection) => { + const isNamedVariableDeclaration = ( + path: ASTPath, + ): path is ASTPath => { + const [selectorCreatorDeclarator] = path.value.declarations + + return ( + j.VariableDeclarator.check(selectorCreatorDeclarator) && + j.Identifier.check(selectorCreatorDeclarator.id) + ) + } + + return root + .find(j.VariableDeclaration) + .filter(isNamedVariableDeclaration) + .filter( + namedVariableDeclaration => + j.CallExpression.check( + namedVariableDeclaration.value.declarations[0]?.init, + ) && + j.Identifier.check( + namedVariableDeclaration.value.declarations[0]?.init.callee, + ) && + namedVariableDeclaration.value.declarations[0].init.callee.name === + CREATE_SELECTOR_CREATOR, + ) +} + +const collectSelectorCreatorsNames = (j: JSCodeshift, root: Collection) => { + const selectorCreatorsNames: string[] = [CREATE_SELECTOR] + + const selectorCreators = collectSelectorCreators(j, root) + + selectorCreators.forEach(path => { + const [namedVariableDeclarator] = path.value.declarations + + if (namedVariableDeclarator) { + selectorCreatorsNames.push(namedVariableDeclarator.id.name) + } + }) + + return selectorCreatorsNames +} + +const collectSelectorCreatorsNamesWithTypes = ( + j: JSCodeshift, + root: Collection, +) => { + const selectorCreatorsNamesWithTypes: string[] = [] + const selectorCreatorsNames = collectSelectorCreatorsNames(j, root) + + root.find(j.VariableDeclarator).forEach(path => { + const { init, id } = path.value + + if ( + !j.CallExpression.check(init) || + !j.Identifier.check(id) || + !j.MemberExpression.check(init.callee) + ) { + return + } + + const memberExpression = init.callee + + const { object, property } = memberExpression + + const isWithTypes = + j.Identifier.check(property) && property.name === WITH_TYPES + + const isDirectSelectorCreator = + j.Identifier.check(object) && selectorCreatorsNames.includes(object.name) + + const isCreateSelectorCreatorCall = + j.CallExpression.check(object) && + j.Identifier.check(object.callee) && + object.callee.name === CREATE_SELECTOR_CREATOR + + if ( + isWithTypes && + (isDirectSelectorCreator || isCreateSelectorCreatorCall) + ) { + selectorCreatorsNamesWithTypes.push(id.name) + } + }) + + return selectorCreatorsNamesWithTypes.concat(selectorCreatorsNames) +} + +const getIdentifierVariableDeclarator = ( + root: Collection, + identifier: Identifier, +) => root.findVariableDeclarators(identifier.name).nodes()[0] + +const isLastArgumentObject = ( + j: JSCodeshift, + path: ASTPath, +) => { + const lastArgument = path.value.arguments[path.value.arguments.length - 1] + + return j.ObjectExpression.check(lastArgument) +} + +export const convertInputSelectorsToArrayTransform: Transform = ( + fileInfo, + api, +) => { + const { j } = api + + const root = j(fileInfo.source) + + const isNamedFunctionCallExpression = ( + path: ASTPath, + ): path is ASTPath => + j.Identifier.check(path.value.callee) + + const allNamedFunctionCallExpressions = root + .find(j.CallExpression) + .filter(isNamedFunctionCallExpression) + + const selectorCreatorsNames = collectSelectorCreatorsNamesWithTypes(j, root) + + const isFirstArgumentArray = (path: ASTPath) => { + if (path.value.arguments.length < 2) return true + + const [firstArgument] = path.value.arguments + + if (j.ArrayExpression.check(firstArgument)) return true + + if (!j.Identifier.check(firstArgument)) return false + + const firstArgumentVariableDeclarator = getIdentifierVariableDeclarator( + root, + firstArgument, + ) + + if ( + firstArgumentVariableDeclarator?.init == null || + j.ArrayExpression.check(firstArgumentVariableDeclarator.init) + ) { + return true + } + + const firstArgumentVariableInitializer = + firstArgumentVariableDeclarator.init + + const isFirstArgumentInitializedWithArray = + ('expression' in firstArgumentVariableInitializer && + typeof firstArgumentVariableInitializer.expression === 'object' && + 'type' in firstArgumentVariableInitializer.expression && + j.ArrayExpression.check(firstArgumentVariableInitializer.expression)) || + (j.VariableDeclarator.check(firstArgumentVariableDeclarator) && + j.ArrayExpression.check(firstArgumentVariableInitializer)) + + if (isFirstArgumentInitializedWithArray) { + return true + } + + return false + } + + const needsToBeTransformed = allNamedFunctionCallExpressions.filter( + path => + selectorCreatorsNames.includes(path.value.callee.name) && + !isFirstArgumentArray(path), + ) + + if (needsToBeTransformed.length === 0) { + return fileInfo.source + } + + needsToBeTransformed.replaceWith(path => { + const { arguments: args, callee } = path.value + + const transformedArguments = ( + isLastArgumentObject(j, path) + ? [ + j.arrayExpression(args.slice(0, -2)), + args[args.length - 2], + args[args.length - 1], + ] + : [j.arrayExpression(args.slice(0, -1)), args[args.length - 1]] + ).filter((path): path is NamedFunctionCallExpression => path != null) + + return j.callExpression(j.identifier(callee.name), transformedArguments) + }) + + return root.toSource({ + lineTerminator: '\n', + }) +} + +export const parser = 'tsx' satisfies TestOptions['parser'] + +export default convertInputSelectorsToArrayTransform diff --git a/codemods/tests/__testfixtures__/convertInputSelectorsToArray/separate-inline-arguments-ts.input.ts b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/separate-inline-arguments-ts.input.ts new file mode 100644 index 000000000..e01d40164 --- /dev/null +++ b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/separate-inline-arguments-ts.input.ts @@ -0,0 +1,229 @@ +import { + unstable_autotrackMemoize as autotrackMemoize, + createSelector, + createSelectorCreator, + lruMemoize, + weakMapMemoize +} from 'reselect' + +interface RootState { + todos: { + id: number + completed: boolean + }[] +} + +const state: RootState = { + todos: [ + { id: 0, completed: false }, + { id: 1, completed: false } + ] +} + +const selectorDefault = createSelector( + (state: RootState) => state.todos, + (todos) => todos.map((t) => t.id) +) + +const selectorDefaultParametric = createSelector( + (state: RootState, id: number) => id, + (state: RootState) => state.todos, + (id, todos) => todos.filter((t) => t.id === id) +) + +const selectorLodashFunc = createSelector( + (state: RootState) => state.todos, + (todos) => todos.map((t) => t.id), + { + memoizeOptions: [] + } +) + +const createSelectorWeakMap = createSelectorCreator(weakMapMemoize) + +const selector1 = createSelectorWeakMap( + [(state: RootState) => state.todos], + (todos) => todos.map((t) => t.id) +) + +const selector2 = createSelectorWeakMap( + [(state: RootState, id: number) => id, (state: RootState) => state.todos], + (id, todos) => todos.filter((t) => t.id === id) +) + +const selector3 = createSelectorWeakMap( + [(state: RootState, id: number) => id, (state: RootState) => state.todos], + (id, todos) => todos.filter((t) => t.id === id), + { memoizeOptions: [] } +) + +const selectorDefault2 = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id) +) + +const selectorDefaultWithCacheSize = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { memoize: lruMemoize, memoizeOptions: { maxSize: 30 } } +) + +const selectorDefaultWithArgsCacheSize = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: lruMemoize, argsMemoizeOptions: { maxSize: 30 } } +) + +const selectorDefaultWithBothCacheSize = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { + memoize: lruMemoize, + argsMemoize: lruMemoize, + memoizeOptions: { maxSize: 30 }, + argsMemoizeOptions: { maxSize: 30 } + } +) + +const selectorWeakMap = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { memoize: weakMapMemoize } +) + +const selectorAutotrack = createSelector( + (state: RootState) => state.todos, + (state: RootState, id: number) => id, + (todos, id) => todos.map((todo) => todo.id === id), + { memoize: autotrackMemoize } +) + +const selectorArgsAutotrack = createSelector( + (state: RootState) => state.todos, + (state: RootState, id: number) => id, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: autotrackMemoize } +) + +const selectorBothAutotrack = createSelector( + (state: RootState) => state.todos, + (state: RootState, id: number) => id, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: autotrackMemoize, memoize: autotrackMemoize } +) + +const selectorArgsWeakMap = createSelector( + (state: RootState) => state.todos, + (state: RootState, id: number) => id, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize } +) + +const selectorBothWeakMap = createSelector( + (state: RootState) => state.todos, + (state: RootState, id: number) => id, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const arr = [ + (state: RootState) => state.todos, + (state: RootState, id: number) => id +] as [ + (state: RootState) => { + id: number + completed: boolean + }[], + (state: RootState, id: number) => number +] + +const selectorBothWeakMap1 = createSelector( + arr, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const arr3 = [ + function (state: RootState) { + return state.todos + }, + function (state: RootState, id: number) { + return id + } +] as [ + (state: RootState) => { + id: number + completed: boolean + }[], + (state: RootState, id: number) => number +] + +const selectorBothWeakMap4 = createSelector( + arr3, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const selectTodoIds = createSelector( + function selectTodos(state: RootState) { + return state.todos + }, + function selectId(state: RootState, id: number) { + return id + }, + (todos, id) => todos.map((todo) => todo.id) +) + +const arr4 = [ + function (state: RootState) { + return state.todos + }, + function (state: RootState, id: number) { + return id + } +] satisfies [ + (state: RootState) => { + id: number + completed: boolean + }[], + (state: RootState, id: number) => number +] + +const selectorBothWeakMap5 = createSelector( + arr4, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const arr5: [ + (state: RootState) => { + id: number + completed: boolean + }[], + (state: RootState, id: number) => number +] = [ + function (state: RootState) { + return state.todos + }, + function (state: RootState, id: number) { + return id + } +] + +const selectorBothWeakMap6 = createSelector( + arr5, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const inputSelector = (state: RootState) => state.todos + +const selector = createSelector(inputSelector, (todos) => + todos.map(({ id }) => id) +) + +const selectTodoById = createSelector( + (state: RootState) => state.todos, + (state: RootState, id: number) => id, + (todos, id) => todos.find((todo) => todo.id === id) +) \ No newline at end of file diff --git a/codemods/tests/__testfixtures__/convertInputSelectorsToArray/separate-inline-arguments-ts.output.ts b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/separate-inline-arguments-ts.output.ts new file mode 100644 index 000000000..495e16fff --- /dev/null +++ b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/separate-inline-arguments-ts.output.ts @@ -0,0 +1,210 @@ +import { + unstable_autotrackMemoize as autotrackMemoize, + createSelector, + createSelectorCreator, + lruMemoize, + weakMapMemoize +} from 'reselect' + +interface RootState { + todos: { + id: number + completed: boolean + }[] +} + +const state: RootState = { + todos: [ + { id: 0, completed: false }, + { id: 1, completed: false } + ] +} + +const selectorDefault = createSelector([(state: RootState) => state.todos], (todos) => todos.map((t) => t.id)) + +const selectorDefaultParametric = createSelector( + [(state: RootState, id: number) => id, (state: RootState) => state.todos], + (id, todos) => todos.filter((t) => t.id === id) +) + +const selectorLodashFunc = createSelector([(state: RootState) => state.todos], (todos) => todos.map((t) => t.id), { + memoizeOptions: [] +}) + +const createSelectorWeakMap = createSelectorCreator(weakMapMemoize) + +const selector1 = createSelectorWeakMap( + [(state: RootState) => state.todos], + (todos) => todos.map((t) => t.id) +) + +const selector2 = createSelectorWeakMap( + [(state: RootState, id: number) => id, (state: RootState) => state.todos], + (id, todos) => todos.filter((t) => t.id === id) +) + +const selector3 = createSelectorWeakMap( + [(state: RootState, id: number) => id, (state: RootState) => state.todos], + (id, todos) => todos.filter((t) => t.id === id), + { memoizeOptions: [] } +) + +const selectorDefault2 = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id) +) + +const selectorDefaultWithCacheSize = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { memoize: lruMemoize, memoizeOptions: { maxSize: 30 } } +) + +const selectorDefaultWithArgsCacheSize = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: lruMemoize, argsMemoizeOptions: { maxSize: 30 } } +) + +const selectorDefaultWithBothCacheSize = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { + memoize: lruMemoize, + argsMemoize: lruMemoize, + memoizeOptions: { maxSize: 30 }, + argsMemoizeOptions: { maxSize: 30 } + } +) + +const selectorWeakMap = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { memoize: weakMapMemoize } +) + +const selectorAutotrack = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { memoize: autotrackMemoize } +) + +const selectorArgsAutotrack = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: autotrackMemoize } +) + +const selectorBothAutotrack = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: autotrackMemoize, memoize: autotrackMemoize } +) + +const selectorArgsWeakMap = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize } +) + +const selectorBothWeakMap = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const arr = [ + (state: RootState) => state.todos, + (state: RootState, id: number) => id +] as [ + (state: RootState) => { + id: number + completed: boolean + }[], + (state: RootState, id: number) => number +] + +const selectorBothWeakMap1 = createSelector( + arr, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const arr3 = [ + function (state: RootState) { + return state.todos + }, + function (state: RootState, id: number) { + return id + } +] as [ + (state: RootState) => { + id: number + completed: boolean + }[], + (state: RootState, id: number) => number +] + +const selectorBothWeakMap4 = createSelector( + arr3, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const selectTodoIds = createSelector([function selectTodos(state: RootState) { + return state.todos +}, function selectId(state: RootState, id: number) { + return id +}], (todos, id) => todos.map((todo) => todo.id)) + +const arr4 = [ + function (state: RootState) { + return state.todos + }, + function (state: RootState, id: number) { + return id + } +] satisfies [ + (state: RootState) => { + id: number + completed: boolean + }[], + (state: RootState, id: number) => number +] + +const selectorBothWeakMap5 = createSelector( + arr4, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const arr5: [ + (state: RootState) => { + id: number + completed: boolean + }[], + (state: RootState, id: number) => number +] = [ + function (state: RootState) { + return state.todos + }, + function (state: RootState, id: number) { + return id + } +] + +const selectorBothWeakMap6 = createSelector( + arr5, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const inputSelector = (state: RootState) => state.todos + +const selector = createSelector([inputSelector], (todos) => + todos.map(({ id }) => id)) + +const selectTodoById = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.find((todo) => todo.id === id) +) \ No newline at end of file diff --git a/codemods/tests/__testfixtures__/convertInputSelectorsToArray/separate-inline-arguments.input.js b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/separate-inline-arguments.input.js new file mode 100644 index 000000000..075f2bda7 --- /dev/null +++ b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/separate-inline-arguments.input.js @@ -0,0 +1,188 @@ +import { + unstable_autotrackMemoize as autotrackMemoize, + createSelector, + createSelectorCreator, + lruMemoize, + weakMapMemoize +} from 'reselect' + +const state = { + todos: [ + { id: 0, completed: false }, + { id: 1, completed: false } + ] +} + +const selectorDefault = createSelector( + (state) => state.todos, + (todos) => todos.map((t) => t.id) +) + +const selectorDefaultParametric = createSelector( + (state, id) => id, + (state) => state.todos, + (id, todos) => todos.filter((t) => t.id === id) +) + +const selectorLodashFunc = createSelector( + (state) => state.todos, + (todos) => todos.map((t) => t.id), + { + memoizeOptions: [] + } +) + +const createSelectorWeakMap = createSelectorCreator(weakMapMemoize) + +const selector1 = createSelectorWeakMap([(state) => state.todos], (todos) => + todos.map((t) => t.id) +) + +const selector2 = createSelectorWeakMap( + [(state, id) => id, (state) => state.todos], + (id, todos) => todos.filter((t) => t.id === id) +) + +const selector3 = createSelectorWeakMap( + [(state, id) => id, (state) => state.todos], + (id, todos) => todos.filter((t) => t.id === id), + { memoizeOptions: [] } +) + +const selectorDefault2 = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id) +) + +const selectorDefaultWithCacheSize = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { memoize: lruMemoize, memoizeOptions: { maxSize: 30 } } +) + +const selectorDefaultWithArgsCacheSize = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: lruMemoize, argsMemoizeOptions: { maxSize: 30 } } +) + +const selectorDefaultWithBothCacheSize = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { + memoize: lruMemoize, + argsMemoize: lruMemoize, + memoizeOptions: { maxSize: 30 }, + argsMemoizeOptions: { maxSize: 30 } + } +) + +const selectorWeakMap = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { memoize: weakMapMemoize } +) + +const selectorAutotrack = createSelector( + (state) => state.todos, + (state, id) => id, + (todos, id) => todos.map((todo) => todo.id === id), + { memoize: autotrackMemoize } +) + +const selectorArgsAutotrack = createSelector( + (state) => state.todos, + (state, id) => id, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: autotrackMemoize } +) + +const selectorBothAutotrack = createSelector( + (state) => state.todos, + (state, id) => id, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: autotrackMemoize, memoize: autotrackMemoize } +) + +const selectorArgsWeakMap = createSelector( + (state) => state.todos, + (state, id) => id, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize } +) + +const selectorBothWeakMap = createSelector( + (state) => state.todos, + (state, id) => id, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const arr = [(state) => state.todos, (state, id) => id] + +const selectorBothWeakMap1 = createSelector( + arr, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const arr3 = [ + function (state) { + return state.todos + }, + function (state, id) { + return id + } +] + +const selectorBothWeakMap4 = createSelector( + arr3, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const selectTodoIds = createSelector( + function selectTodos(state) { + return state.todos + }, + function selectId(state, id) { + return id + }, + (todos, id) => todos.map((todo) => todo.id) +) + +const arr4 = [ + function (state) { + return state.todos + }, + function (state, id) { + return id + } +] + +const selectorBothWeakMap5 = createSelector( + arr4, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const arr5 = [ + function (state) { + return state.todos + }, + function (state, id) { + return id + } +] + +const selectorBothWeakMap6 = createSelector( + arr5, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const inputSelector = (state) => state.todos + +const selector = createSelector(inputSelector, (todos) => + todos.map(({ id }) => id) +) diff --git a/codemods/tests/__testfixtures__/convertInputSelectorsToArray/separate-inline-arguments.output.js b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/separate-inline-arguments.output.js new file mode 100644 index 000000000..da502daf8 --- /dev/null +++ b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/separate-inline-arguments.output.js @@ -0,0 +1,170 @@ +import { + unstable_autotrackMemoize as autotrackMemoize, + createSelector, + createSelectorCreator, + lruMemoize, + weakMapMemoize +} from 'reselect' + +const state = { + todos: [ + { id: 0, completed: false }, + { id: 1, completed: false } + ] +} + +const selectorDefault = createSelector([(state) => state.todos], (todos) => todos.map((t) => t.id)) + +const selectorDefaultParametric = createSelector( + [(state, id) => id, (state) => state.todos], + (id, todos) => todos.filter((t) => t.id === id) +) + +const selectorLodashFunc = createSelector([(state) => state.todos], (todos) => todos.map((t) => t.id), { + memoizeOptions: [] +}) + +const createSelectorWeakMap = createSelectorCreator(weakMapMemoize) + +const selector1 = createSelectorWeakMap([(state) => state.todos], (todos) => + todos.map((t) => t.id) +) + +const selector2 = createSelectorWeakMap( + [(state, id) => id, (state) => state.todos], + (id, todos) => todos.filter((t) => t.id === id) +) + +const selector3 = createSelectorWeakMap( + [(state, id) => id, (state) => state.todos], + (id, todos) => todos.filter((t) => t.id === id), + { memoizeOptions: [] } +) + +const selectorDefault2 = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id) +) + +const selectorDefaultWithCacheSize = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { memoize: lruMemoize, memoizeOptions: { maxSize: 30 } } +) + +const selectorDefaultWithArgsCacheSize = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: lruMemoize, argsMemoizeOptions: { maxSize: 30 } } +) + +const selectorDefaultWithBothCacheSize = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { + memoize: lruMemoize, + argsMemoize: lruMemoize, + memoizeOptions: { maxSize: 30 }, + argsMemoizeOptions: { maxSize: 30 } + } +) + +const selectorWeakMap = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { memoize: weakMapMemoize } +) + +const selectorAutotrack = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { memoize: autotrackMemoize } +) + +const selectorArgsAutotrack = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: autotrackMemoize } +) + +const selectorBothAutotrack = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: autotrackMemoize, memoize: autotrackMemoize } +) + +const selectorArgsWeakMap = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize } +) + +const selectorBothWeakMap = createSelector( + [(state) => state.todos, (state, id) => id], + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const arr = [(state) => state.todos, (state, id) => id] + +const selectorBothWeakMap1 = createSelector( + arr, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const arr3 = [ + function (state) { + return state.todos + }, + function (state, id) { + return id + } +] + +const selectorBothWeakMap4 = createSelector( + arr3, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const selectTodoIds = createSelector([function selectTodos(state) { + return state.todos +}, function selectId(state, id) { + return id +}], (todos, id) => todos.map((todo) => todo.id)) + +const arr4 = [ + function (state) { + return state.todos + }, + function (state, id) { + return id + } +] + +const selectorBothWeakMap5 = createSelector( + arr4, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const arr5 = [ + function (state) { + return state.todos + }, + function (state, id) { + return id + } +] + +const selectorBothWeakMap6 = createSelector( + arr5, + (todos, id) => todos.map((todo) => todo.id === id), + { argsMemoize: weakMapMemoize, memoize: weakMapMemoize } +) + +const inputSelector = (state) => state.todos + +const selector = createSelector([inputSelector], (todos) => + todos.map(({ id }) => id)) diff --git a/codemods/tests/__testfixtures__/convertInputSelectorsToArray/withTypes-ts.input.ts b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/withTypes-ts.input.ts new file mode 100644 index 000000000..83693e68a --- /dev/null +++ b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/withTypes-ts.input.ts @@ -0,0 +1,46 @@ +import { createSelector, createSelectorCreator, lruMemoize } from 'reselect' + +interface RootState { + todos: { + id: number + completed: boolean + }[] +} + +const createAppSelector = createSelector.withTypes() + +const createSelectorLru = createSelectorCreator({ + memoize: lruMemoize, + argsMemoize: lruMemoize +}) + +const createAppSelectorLru = createSelectorLru.withTypes() + +const createStateSelector = createSelectorCreator({ + memoize: lruMemoize, + argsMemoize: lruMemoize +}).withTypes() + +const selectTodoIds = createAppSelector( + (state) => state.todos, + (todos) => todos.map(({ id }) => id) +) + +const selectTodoIds2 = createAppSelectorLru( + (state) => state.todos, + (todos) => todos.map(({ id }) => id) +) + +const selectTodoIds3 = createStateSelector( + (state) => state.todos, + (todos) => todos.map(({ id }) => id) +) + +const selectTodoIdsWithOptions = createAppSelector( + (state) => state.todos, + (todos) => todos.map(({ id }) => id), + { + argsMemoize: lruMemoize, + memoize: lruMemoize + } +) diff --git a/codemods/tests/__testfixtures__/convertInputSelectorsToArray/withTypes-ts.output.ts b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/withTypes-ts.output.ts new file mode 100644 index 000000000..d7916ee2d --- /dev/null +++ b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/withTypes-ts.output.ts @@ -0,0 +1,33 @@ +import { createSelector, createSelectorCreator, lruMemoize } from 'reselect' + +interface RootState { + todos: { + id: number + completed: boolean + }[] +} + +const createAppSelector = createSelector.withTypes() + +const createSelectorLru = createSelectorCreator({ + memoize: lruMemoize, + argsMemoize: lruMemoize +}) + +const createAppSelectorLru = createSelectorLru.withTypes() + +const createStateSelector = createSelectorCreator({ + memoize: lruMemoize, + argsMemoize: lruMemoize +}).withTypes() + +const selectTodoIds = createAppSelector([(state) => state.todos], (todos) => todos.map(({ id }) => id)) + +const selectTodoIds2 = createAppSelectorLru([(state) => state.todos], (todos) => todos.map(({ id }) => id)) + +const selectTodoIds3 = createStateSelector([(state) => state.todos], (todos) => todos.map(({ id }) => id)) + +const selectTodoIdsWithOptions = createAppSelector([(state) => state.todos], (todos) => todos.map(({ id }) => id), { + argsMemoize: lruMemoize, + memoize: lruMemoize +}) diff --git a/codemods/tests/__testfixtures__/convertInputSelectorsToArray/withTypes.input.js b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/withTypes.input.js new file mode 100644 index 000000000..1d2e687be --- /dev/null +++ b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/withTypes.input.js @@ -0,0 +1,26 @@ +import { createSelector, createSelectorCreator, lruMemoize } from 'reselect' + +const createAppSelector = createSelector.withTypes() + +const createSelectorLru = createSelectorCreator({ + memoize: lruMemoize, + argsMemoize: lruMemoize +}) + +const createAppSelectorLru = createSelectorLru.withTypes() + +const createStateSelector = createSelectorCreator({ + memoize: lruMemoize, + argsMemoize: lruMemoize +}).withTypes() + +const selectTodoIds = createAppSelector((state) => state.todos, (todos) => todos.map(({ id }) => id)) + +const selectTodoIds2 = createAppSelectorLru((state) => state.todos, (todos) => todos.map(({ id }) => id)) + +const selectTodoIds3 = createStateSelector((state) => state.todos, (todos) => todos.map(({ id }) => id)) + +const selectTodoIdsWithOptions = createAppSelector((state) => state.todos, (todos) => todos.map(({ id }) => id), { + argsMemoize: lruMemoize, + memoize: lruMemoize +}) diff --git a/codemods/tests/__testfixtures__/convertInputSelectorsToArray/withTypes.output.js b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/withTypes.output.js new file mode 100644 index 000000000..bb9f6fc3f --- /dev/null +++ b/codemods/tests/__testfixtures__/convertInputSelectorsToArray/withTypes.output.js @@ -0,0 +1,26 @@ +import { createSelector, createSelectorCreator, lruMemoize } from 'reselect' + +const createAppSelector = createSelector.withTypes() + +const createSelectorLru = createSelectorCreator({ + memoize: lruMemoize, + argsMemoize: lruMemoize +}) + +const createAppSelectorLru = createSelectorLru.withTypes() + +const createStateSelector = createSelectorCreator({ + memoize: lruMemoize, + argsMemoize: lruMemoize +}).withTypes() + +const selectTodoIds = createAppSelector([(state) => state.todos], (todos) => todos.map(({ id }) => id)) + +const selectTodoIds2 = createAppSelectorLru([(state) => state.todos], (todos) => todos.map(({ id }) => id)) + +const selectTodoIds3 = createStateSelector([(state) => state.todos], (todos) => todos.map(({ id }) => id)) + +const selectTodoIdsWithOptions = createAppSelector([(state) => state.todos], (todos) => todos.map(({ id }) => id), { + argsMemoize: lruMemoize, + memoize: lruMemoize +}) diff --git a/codemods/tests/convertInputSelectorsToArray.test.ts b/codemods/tests/convertInputSelectorsToArray.test.ts new file mode 100644 index 000000000..24b985bc1 --- /dev/null +++ b/codemods/tests/convertInputSelectorsToArray.test.ts @@ -0,0 +1,134 @@ +import { globby } from 'globby' +import { applyTransform } from 'jscodeshift/src/testUtils.js' +import * as fs from 'node:fs/promises' +import * as path from 'node:path' +import { + convertInputSelectorsToArrayTransform, + parser, +} from '../src/transforms/convertInputSelectorsToArray.js' +import { + fixtureParentDirectoryPath, + runCodemodCLI, + tempParentDirectoryPath, +} from './test-utils.js' + +const transformerName = path.basename(import.meta.filename, '.test.ts') + +const fixtureDirectoryPath = path.join( + fixtureParentDirectoryPath, + transformerName, +) + +const tempDirectoryPath = path.join(tempParentDirectoryPath, transformerName) + +describe(convertInputSelectorsToArrayTransform, () => { + describe(transformerName, async () => { + const entries = await globby('**/*.input.*', { + cwd: fixtureDirectoryPath, + absolute: true, + objectMode: true, + }) + + await Promise.all( + entries.map(async ({ name: fileName, path: testInputPath }) => { + const extension = path.extname(fileName) + + const testName = path.basename(fileName, `.input${extension}`) + + const inputFilePath = path.join( + fixtureDirectoryPath, + `${testName}.input${extension}`, + ) + + const outputFilePath = path.join( + fixtureDirectoryPath, + `${testName}.output${extension}`, + ) + + const inputFileContent = await fs.readFile(inputFilePath, { + encoding: 'utf-8', + }) + + const expectedOutput = await fs.readFile(outputFilePath, { + encoding: 'utf-8', + }) + + describe(`${testName}${extension}`, () => { + it('transforms correctly', () => { + const actualOutput = applyTransform( + { default: convertInputSelectorsToArrayTransform, parser }, + {}, + { + path: testInputPath, + source: inputFileContent, + }, + { parser }, + ) + + expect(actualOutput).toBe(expectedOutput.trim()) + }) + + it('is idempotent', () => { + const actualOutput = applyTransform( + { default: convertInputSelectorsToArrayTransform, parser }, + {}, + { + path: testInputPath, + source: inputFileContent, + }, + { parser }, + ) + + expect(actualOutput).toBe(expectedOutput.trim()) + }) + }) + }), + ) + }) +}) + +describe('cli test', { todo: true }, () => { + test('glob patterns work', async () => { + await expect( + runCodemodCLI([transformerName, './**/*-*.*.{m,c,}ts{x,}'], { + cwd: tempDirectoryPath, + }), + ).resolves.not.toThrow() + + const outputFileNames = await globby('**/*.output.ts', { + cwd: fixtureDirectoryPath, + absolute: true, + }) + + const expectedContents = Object.fromEntries( + await Promise.all( + outputFileNames.map( + async outputFile => + [ + `${path.basename(outputFile, '.ts')}.*`, + await fs.readFile(outputFile, { encoding: 'utf-8' }), + ] as const, + ), + ), + ) + + const outputFiles = await globby(Object.keys(expectedContents), { + absolute: true, + cwd: tempDirectoryPath, + }) + + const outputContents = await Promise.all( + outputFiles.map(async filePath => + fs.readFile(filePath, { encoding: 'utf-8' }), + ), + ) + + const values = Object.entries(expectedContents) + + values.forEach(([key, value]) => { + expect(outputContents).toStrictEqual( + Array(outputContents.length).fill(expectedContents[key]), + ) + }) + }) +}) diff --git a/codemods/tests/test-utils.ts b/codemods/tests/test-utils.ts new file mode 100644 index 000000000..f941c9852 --- /dev/null +++ b/codemods/tests/test-utils.ts @@ -0,0 +1,69 @@ +import type { ExecFileOptionsWithOtherEncoding } from 'node:child_process' +import * as child_process from 'node:child_process' +import * as path from 'node:path' +import { promisify } from 'node:util' +import packageJson from '../package.json' with { type: 'json' } + +const execFile = promisify(child_process.execFile) + +export const fixtureParentDirectoryPath = path.join( + import.meta.dirname, + '__testfixtures__', +) + +export const tempParentDirectoryPath = path.join( + import.meta.dirname, + '..', + '.temp', +) + +export const extensionsToTest = [ + 'ts', + 'tsx', + 'js', + 'jsx', + 'mts', + 'cts', + 'mjs', + 'cjs', +] as const + +export const TSExtensions = ['ts', 'tsx', 'mts', 'cts'] as const + +export const JSExtensions = ['js', 'jsx', 'mjs', 'cjs'] as const + +const defaultCLICommand = packageJson.name + +const defaultCLIArguments = [] as const satisfies string[] + +const defaultExecFileOptions = { + encoding: 'utf-8', + shell: true, +} as const satisfies ExecFileOptionsWithOtherEncoding + +export const runCodemodCLI = async ( + CLIArguments: readonly string[] = [], + execFileOptions?: Partial, +): Promise<{ + stderr: string + stdout: string +}> => { + const { stderr, stdout } = await execFile( + defaultCLICommand, + [...defaultCLIArguments, ...CLIArguments], + { + ...defaultExecFileOptions, + ...execFileOptions, + }, + ) + + if (stderr) { + console.log(stderr.trim()) + } + + if (stdout) { + console.log(stdout.trim()) + } + + return { stderr, stdout } +} diff --git a/codemods/transformTestUtils.ts b/codemods/transformTestUtils.ts new file mode 100644 index 000000000..6755b6fc6 --- /dev/null +++ b/codemods/transformTestUtils.ts @@ -0,0 +1,77 @@ +import { globby } from 'globby' +import type { Transform } from 'jscodeshift' +import type { TestOptions } from 'jscodeshift/src/testUtils.js' +import { applyTransform } from 'jscodeshift/src/testUtils.js' +import * as fs from 'node:fs/promises' +import * as path from 'node:path' + +export const runTransformTest = ( + transformName: string, + transform: Transform, + parser: TestOptions['parser'], + fixturePath: string, +) => { + describe(transformName, async () => { + const entries = await globby('**/*.input.*', { + cwd: fixturePath, + absolute: true, + objectMode: true, + }) + + await Promise.all( + entries.map(async ({ name: fileName, path: testInputPath }) => { + const extension = path.extname(fileName) + + const testName = path.basename(fileName, `.input${extension}`) + + const inputFilePath = path.join( + fixturePath, + `${testName}.input${extension}`, + ) + + const outputFilePath = path.join( + fixturePath, + `${testName}.output${extension}`, + ) + + const inputFileContent = await fs.readFile(inputFilePath, 'utf8') + + const expectedOutput = await fs.readFile(outputFilePath, 'utf8') + + describe(`${testName}${extension}`, () => { + it('transforms correctly', () => { + const actualOutput = applyTransform( + transform, + {}, + { + path: testInputPath, + source: inputFileContent, + }, + { parser }, + ) + + expect(actualOutput).toBe( + expectedOutput.trim().replace('\r\n', '\n'), + ) + }) + + it('is idempotent', () => { + const actualOutput = applyTransform( + transform, + {}, + { + path: testInputPath, + source: inputFileContent, + }, + { parser }, + ) + + expect(actualOutput).toBe( + expectedOutput.trim().replace('\r\n', '\n'), + ) + }) + }) + }), + ) + }) +} diff --git a/codemods/tsconfig.build.json b/codemods/tsconfig.build.json new file mode 100644 index 000000000..326163cf0 --- /dev/null +++ b/codemods/tsconfig.build.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "declarationMap": true, + "rootDir": "./src" + }, + "include": ["src"] +} diff --git a/codemods/tsconfig.json b/codemods/tsconfig.json new file mode 100644 index 000000000..2e1fcdea6 --- /dev/null +++ b/codemods/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "allowJs": true, + "allowSyntheticDefaultImports": true, + "checkJs": true, + "declaration": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "jsx": "react", + "lib": ["DOM", "ESNext"], + "module": "NodeNext", + "moduleResolution": "NodeNext", + "noEmit": true, + "noErrorTruncation": true, + "noFallthroughCasesInSwitch": true, + "noImplicitOverride": true, + "noImplicitReturns": true, + "outDir": "./dist", + "resolveJsonModule": true, + "rootDir": "./", + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "target": "ESNext", + "types": ["vitest/globals", "vitest/importMeta"], + "useDefineForClassFields": true, + "useUnknownInCatchVariables": true, + "verbatimModuleSyntax": true + }, + "exclude": ["dist", "**/__testfixtures__/**"] +} diff --git a/codemods/tsup.config.mts b/codemods/tsup.config.mts new file mode 100644 index 000000000..f33eb6b84 --- /dev/null +++ b/codemods/tsup.config.mts @@ -0,0 +1,62 @@ +import * as path from 'node:path' +import { fileURLToPath } from 'node:url' +import type { Options } from 'tsup' +import { defineConfig } from 'tsup' +import packageJson from './package.json' with { type: 'json' } + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) + +const tsupConfig = defineConfig((overrideOptions): Options[] => { + const commonOptions = { + clean: true, + entry: ['src/index.ts', 'src/transforms/**/*.ts'], + removeNodeProtocol: false, + shims: true, + sourcemap: true, + splitting: false, + target: ['esnext', 'node20'], + tsconfig: path.join(__dirname, 'tsconfig.build.json'), + ...overrideOptions, + } satisfies Options + + return [ + { + ...commonOptions, + name: `${packageJson.name} Modern ESM`, + format: ['esm'], + }, + { + ...commonOptions, + name: `${packageJson.name} CJS Development`, + format: ['cjs'], + }, + { + ...commonOptions, + name: `${packageJson.name} CLI Development`, + entry: { + bin: path.join(__dirname, 'src', 'bin.ts'), + }, + external: [packageJson.name], + format: ['cjs', 'esm'], + minify: true, + }, + { + ...commonOptions, + name: `${packageJson.name} ESM Type definitions`, + dts: { + only: true, + }, + format: ['esm'], + }, + { + ...commonOptions, + name: `${packageJson.name} CJS Type definitions`, + dts: { + only: true, + }, + format: ['cjs'], + }, + ] +}) + +export default tsupConfig diff --git a/codemods/vitest.config.mts b/codemods/vitest.config.mts new file mode 100644 index 000000000..6a0ecc99f --- /dev/null +++ b/codemods/vitest.config.mts @@ -0,0 +1,44 @@ +import * as path from 'path' +import { defineConfig } from 'vitest/config' +import packageJson from './package.json' with { type: 'json' } + +const vitestConfig = defineConfig({ + test: { + dir: path.join(import.meta.dirname, 'tests'), + name: packageJson.name, + root: import.meta.dirname, + + coverage: { + include: ['src'], + extension: ['.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs', '.cts', '.cjs'], + }, + + reporters: process.env.GITHUB_ACTIONS + ? [['github-actions'], ['verbose']] + : [['verbose']], + + typecheck: { + enabled: true, + tsconfig: path.join(import.meta.dirname, 'tsconfig.json'), + }, + + clearMocks: true, + unstubEnvs: true, + unstubGlobals: true, + + globals: true, + watch: false, + + chaiConfig: { + truncateThreshold: 10_000, + }, + + globalSetup: ['./vitest.global.setup.ts'], + }, + + define: { + 'import.meta.vitest': 'undefined', + }, +}) + +export default vitestConfig diff --git a/codemods/vitest.global.setup.ts b/codemods/vitest.global.setup.ts new file mode 100644 index 000000000..b95df9cc1 --- /dev/null +++ b/codemods/vitest.global.setup.ts @@ -0,0 +1,108 @@ +import * as fs from 'node:fs/promises' +import path from 'node:path' +import type { TestProject } from 'vitest/node' +import { + JSExtensions, + TSExtensions, + fixtureParentDirectoryPath, + tempParentDirectoryPath, +} from './tests/test-utils.js' + +export async function setup(_testProject: TestProject): Promise { + await fs.rm(tempParentDirectoryPath, { force: true, recursive: true }) + + await fs.mkdir(tempParentDirectoryPath, { recursive: true }) + + await fs.cp(fixtureParentDirectoryPath, tempParentDirectoryPath, { + recursive: true, + filter: source => + !source.endsWith('.output.ts') && !source.endsWith('.output.js'), + }) + + const directoryEntries = await Promise.all( + ( + await fs.readdir(tempParentDirectoryPath, { + recursive: true, + encoding: 'utf-8', + withFileTypes: true, + }) + ) + .filter(directoryEntry => directoryEntry.isFile()) + .map(async directoryEntry => { + const pathExtension = path.extname(directoryEntry.name) + + const basename = path.basename( + directoryEntry.name, + `.input${pathExtension}`, + ) + + const newPath = path.join( + directoryEntry.parentPath, + `${basename}.output${pathExtension}`, + ) + + const oldPath = path.join( + directoryEntry.parentPath, + directoryEntry.name, + ) + + await fs.rename(oldPath, newPath) + + return newPath + }), + ) + + directoryEntries + .filter(directoryEntry => directoryEntry.endsWith('.ts')) + .map(async directoryEntry => { + await Promise.all( + TSExtensions.map(extensionToTest => + fs.copyFile( + directoryEntry, + path.join( + path.dirname(directoryEntry), + `${path.basename(directoryEntry, '.ts')}.${extensionToTest}`, + ), + ), + ), + ) + }) + + directoryEntries + .filter(directoryEntry => directoryEntry.endsWith('.js')) + .map(async directoryEntry => { + await Promise.all( + JSExtensions.map(extensionToTest => + fs.copyFile( + directoryEntry, + path.join( + path.dirname(directoryEntry), + `${path.basename(directoryEntry, '.js')}.${extensionToTest}`, + ), + ), + ), + ) + }) + + // await Promise.all( + // directoryEntries.map(async directoryEntry => { + // await Promise.all( + // extensionsToTest.map(extensionToTest => + // fs.copyFile( + // directoryEntry, + // path.join( + // path.dirname(directoryEntry), + // `${path.basename(directoryEntry, '.ts')}.${extensionToTest}`, + // ), + // ), + // ), + // ) + // }), + // ) +} + +export async function teardown(): Promise { + if (process.env.KEEP_TEMP_DIR !== 'true') { + await fs.rm(tempParentDirectoryPath, { force: true, recursive: true }) + } +} diff --git a/docs/examples/codemods/convertInputSelectorsToArray/after.ts b/docs/examples/codemods/convertInputSelectorsToArray/after.ts new file mode 100644 index 000000000..567fe2b19 --- /dev/null +++ b/docs/examples/codemods/convertInputSelectorsToArray/after.ts @@ -0,0 +1,11 @@ +import { createSelector } from 'reselect' + +export interface RootState { + todos: { id: number; completed: boolean }[] + alerts: { id: number; read: boolean }[] +} + +const selectTodoById = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.find(todo => todo.id === id) +) diff --git a/docs/examples/codemods/convertInputSelectorsToArray/before.ts b/docs/examples/codemods/convertInputSelectorsToArray/before.ts new file mode 100644 index 000000000..0f44db46a --- /dev/null +++ b/docs/examples/codemods/convertInputSelectorsToArray/before.ts @@ -0,0 +1,12 @@ +import { createSelector } from 'reselect' + +export interface RootState { + todos: { id: number; completed: boolean }[] + alerts: { id: number; read: boolean }[] +} + +const selectTodoById = createSelector( + (state: RootState) => state.todos, + (state: RootState, id: number) => id, + (todos, id) => todos.find(todo => todo.id === id) +) diff --git a/package.json b/package.json index 83e3b9cb1..c6528d50c 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,9 @@ "url": "https://github.com/reduxjs/reselect.git" }, "license": "MIT", + "workspaces": [ + "codemods" + ], "devDependencies": { "@reduxjs/toolkit": "^2.0.1", "@testing-library/react": "^14.1.2", diff --git a/website/docs/api/createSelector.mdx b/website/docs/api/createSelector.mdx index ced43047e..229ce8572 100644 --- a/website/docs/api/createSelector.mdx +++ b/website/docs/api/createSelector.mdx @@ -6,9 +6,8 @@ hide_title: true description: 'createSelector' --- -import Tabs from '@theme/Tabs' import TabItem from '@theme/TabItem' - +import Tabs from '@theme/Tabs' import { InternalLinks } from '@site/src/components/InternalLinks' # `createSelector` @@ -211,6 +210,8 @@ const selectTodoIds = createAppSelector( {/* END: createSelector/annotateResultFunction.ts */} +3. Use the codemod to convert your inline input selectors to an array. + ::: :::tip diff --git a/website/docs/codemods.mdx b/website/docs/codemods.mdx new file mode 100644 index 000000000..69e7a6716 --- /dev/null +++ b/website/docs/codemods.mdx @@ -0,0 +1,109 @@ +--- +id: codemods +title: Codemods +sidebar_label: Codemods +hide_title: true +description: Codemods +--- + +import TabItem from '@theme/TabItem' +import Tabs from '@theme/Tabs' +import { InternalLinks } from '@site/src/components/InternalLinks' + +# Codemods + +## `convertInputSelectorsToArray` + +Transforms the usage of Reselect's API by consolidating multiple inline input selector arguments into a single array. + +It should work with both JavaScript and TypeScript files. + +**Before**: + +{/* START: codemods/convertInputSelectorsToArray/before.ts */} + + + + +```ts title="codemods/convertInputSelectorsToArray/before.ts" +import { createSelector } from 'reselect' + +export interface RootState { + todos: { id: number; completed: boolean }[] + alerts: { id: number; read: boolean }[] +} + +const selectTodoById = createSelector( + (state: RootState) => state.todos, + (state: RootState, id: number) => id, + (todos, id) => todos.find(todo => todo.id === id) +) +``` + + + + +```js title="codemods/convertInputSelectorsToArray/before.js" +import { createSelector } from 'reselect' + +const selectTodoById = createSelector( + state => state.todos, + (state, id) => id, + (todos, id) => todos.find(todo => todo.id === id) +) +``` + + + + +{/* END: codemods/convertInputSelectorsToArray/before.ts */} + +**After**: + +{/* START: codemods/convertInputSelectorsToArray/after.ts */} + + + + +```ts title="codemods/convertInputSelectorsToArray/after.ts" +import { createSelector } from 'reselect' + +export interface RootState { + todos: { id: number; completed: boolean }[] + alerts: { id: number; read: boolean }[] +} + +const selectTodoById = createSelector( + [(state: RootState) => state.todos, (state: RootState, id: number) => id], + (todos, id) => todos.find(todo => todo.id === id) +) +``` + + + + +```js title="codemods/convertInputSelectorsToArray/after.js" +import { createSelector } from 'reselect' + +const selectTodoById = createSelector( + [state => state.todos, (state, id) => id], + (todos, id) => todos.find(todo => todo.id === id) +) +``` + + + + +{/* END: codemods/convertInputSelectorsToArray/after.ts */} diff --git a/website/sidebars.ts b/website/sidebars.ts index eceea148f..d9da3b005 100644 --- a/website/sidebars.ts +++ b/website/sidebars.ts @@ -57,7 +57,8 @@ const sidebars: SidebarsConfig = { }, 'FAQ', 'external-references', - 'related-projects' + 'related-projects', + 'codemods' ] } diff --git a/website/src/components/InternalLinks.tsx b/website/src/components/InternalLinks.tsx index 4c30b2427..57e386e86 100644 --- a/website/src/components/InternalLinks.tsx +++ b/website/src/components/InternalLinks.tsx @@ -89,5 +89,13 @@ export const InternalLinks = { createStructuredSelector + )), + ConvertInputSelectorsToArray: memo(() => ( + + convertInputSelectorsToArray + )) } as const satisfies Record> diff --git a/yarn.lock b/yarn.lock index c9f4677c9..dd740e381 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,56 @@ __metadata: version: 8 cacheKey: 10 +"@ampproject/remapping@npm:^2.2.0": + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10/f3451525379c68a73eb0a1e65247fbf28c0cccd126d93af21c75fceff77773d43c0d4a2d51978fb131aff25b5f2cb41a9fe48cc296e61ae65e679c4f6918b0ab + languageName: node + linkType: hard + +"@andrewbranch/untar.js@npm:^1.0.3": + version: 1.0.3 + resolution: "@andrewbranch/untar.js@npm:1.0.3" + checksum: 10/a32de53839fc61af90a394cf93d4368aacd167c9c80f0b3ba0c268460942a6ce2bfe257b6d3f03986b9dcb7368f10b9dc7f66c2f94254d2662da8278454e7d12 + languageName: node + linkType: hard + +"@arethetypeswrong/cli@npm:^0.17.4": + version: 0.17.4 + resolution: "@arethetypeswrong/cli@npm:0.17.4" + dependencies: + "@arethetypeswrong/core": "npm:0.17.4" + chalk: "npm:^4.1.2" + cli-table3: "npm:^0.6.3" + commander: "npm:^10.0.1" + marked: "npm:^9.1.2" + marked-terminal: "npm:^7.1.0" + semver: "npm:^7.5.4" + bin: + attw: dist/index.js + checksum: 10/5309b7f0a35d8d9118f0bc658448112bfcc76e36a5bf1f237acc492cab56446902b3bdbb2f7b37506521edc722ac2a3c4e16227c8e4eece7c837573122f6c4bb + languageName: node + linkType: hard + +"@arethetypeswrong/core@npm:0.17.4": + version: 0.17.4 + resolution: "@arethetypeswrong/core@npm:0.17.4" + dependencies: + "@andrewbranch/untar.js": "npm:^1.0.3" + "@loaderkit/resolve": "npm:^1.0.2" + cjs-module-lexer: "npm:^1.2.3" + fflate: "npm:^0.8.2" + lru-cache: "npm:^10.4.3" + semver: "npm:^7.5.4" + typescript: "npm:5.6.1-rc" + validate-npm-package-name: "npm:^5.0.0" + checksum: 10/0aa5d8c21de977fdca3b79d25b07e9346b4b8f45ea95146c2b08961c8e0842326fb8879e9e1f001fadf132d9bede78a13df7974ca15cfb0a2e08000369b75c43 + languageName: node + linkType: hard + "@asamuzakjp/css-color@npm:^3.1.1": version: 3.1.1 resolution: "@asamuzakjp/css-color@npm:3.1.1" @@ -29,7 +79,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.10.4": +"@babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.26.2": version: 7.26.2 resolution: "@babel/code-frame@npm:7.26.2" dependencies: @@ -40,6 +90,167 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.26.8": + version: 7.26.8 + resolution: "@babel/compat-data@npm:7.26.8" + checksum: 10/bdddf577f670e0e12996ef37e134856c8061032edb71a13418c3d4dae8135da28910b7cd6dec6e668ab3a41e42089ef7ee9c54ef52fe0860b54cb420b0d14948 + languageName: node + linkType: hard + +"@babel/core@npm:^7.24.7": + version: 7.26.10 + resolution: "@babel/core@npm:7.26.10" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.26.2" + "@babel/generator": "npm:^7.26.10" + "@babel/helper-compilation-targets": "npm:^7.26.5" + "@babel/helper-module-transforms": "npm:^7.26.0" + "@babel/helpers": "npm:^7.26.10" + "@babel/parser": "npm:^7.26.10" + "@babel/template": "npm:^7.26.9" + "@babel/traverse": "npm:^7.26.10" + "@babel/types": "npm:^7.26.10" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10/68f6707eebd6bb8beed7ceccf5153e35b86c323e40d11d796d75c626ac8f1cc4e1f795584c5ab5f886bc64150c22d5088123d68c069c63f29984c4fc054d1dab + languageName: node + linkType: hard + +"@babel/generator@npm:^7.26.10, @babel/generator@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/generator@npm:7.27.0" + dependencies: + "@babel/parser": "npm:^7.27.0" + "@babel/types": "npm:^7.27.0" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^3.0.2" + checksum: 10/5447c402b1d841132534a0a9715e89f4f28b6f2886a23e70aaa442150dba4a1e29e4e2351814f439ee1775294dccdef9ab0a4192b6e6a5ad44e24233b3611da2 + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-annotate-as-pure@npm:7.25.9" + dependencies: + "@babel/types": "npm:^7.25.9" + checksum: 10/41edda10df1ae106a9b4fe617bf7c6df77db992992afd46192534f5cff29f9e49a303231733782dd65c5f9409714a529f215325569f14282046e9d3b7a1ffb6c + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.26.5": + version: 7.27.0 + resolution: "@babel/helper-compilation-targets@npm:7.27.0" + dependencies: + "@babel/compat-data": "npm:^7.26.8" + "@babel/helper-validator-option": "npm:^7.25.9" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10/32224b512e813fc808539b4ca7fca8c224849487c365abcef8cb8b0eea635c65375b81429f82d076e9ec1f3f3b3db1d0d56aac4d482a413f58d5ad608f912155 + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.25.9, @babel/helper-create-class-features-plugin@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/helper-create-class-features-plugin@npm:7.27.0" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-member-expression-to-functions": "npm:^7.25.9" + "@babel/helper-optimise-call-expression": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.26.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/traverse": "npm:^7.27.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/5db70126719ad12773a06a7ae50872c597a2a401ac73906ade3f5c1cf91d62ad6ed5fd5397320ec9b0d8bb2c5623aefda35352469abc8e42a5797dd7e9da0675 + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-member-expression-to-functions@npm:7.25.9" + dependencies: + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10/ef8cc1c1e600b012b312315f843226545a1a89f25d2f474ce2503fd939ca3f8585180f291a3a13efc56cf13eddc1d41a3a040eae9a521838fd59a6d04cc82490 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-module-imports@npm:7.25.9" + dependencies: + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10/e090be5dee94dda6cd769972231b21ddfae988acd76b703a480ac0c96f3334557d70a965bf41245d6ee43891e7571a8b400ccf2b2be5803351375d0f4e5bcf08 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helper-module-transforms@npm:7.26.0" + dependencies: + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/9841d2a62f61ad52b66a72d08264f23052d533afc4ce07aec2a6202adac0bfe43014c312f94feacb3291f4c5aafe681955610041ece2c276271adce3f570f2f5 + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-optimise-call-expression@npm:7.25.9" + dependencies: + "@babel/types": "npm:^7.25.9" + checksum: 10/f09d0ad60c0715b9a60c31841b3246b47d67650c512ce85bbe24a3124f1a4d66377df793af393273bc6e1015b0a9c799626c48e53747581c1582b99167cc65dc + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.26.5": + version: 7.26.5 + resolution: "@babel/helper-plugin-utils@npm:7.26.5" + checksum: 10/1cc0fd8514da3bb249bed6c27227696ab5e84289749d7258098701cffc0c599b7f61ec40dd332f8613030564b79899d9826813c96f966330bcfc7145a8377857 + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.26.5": + version: 7.26.5 + resolution: "@babel/helper-replace-supers@npm:7.26.5" + dependencies: + "@babel/helper-member-expression-to-functions": "npm:^7.25.9" + "@babel/helper-optimise-call-expression": "npm:^7.25.9" + "@babel/traverse": "npm:^7.26.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/cfb911d001a8c3d2675077dbb74ee8d7d5533b22d74f8d775cefabf19c604f6cbc22cfeb94544fe8efa626710d920f04acb22923017e68f46f5fdb1cb08b32ad + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.9" + dependencies: + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10/fdbb5248932198bc26daa6abf0d2ac42cab9c2dbb75b7e9f40d425c8f28f09620b886d40e7f9e4e08ffc7aaa2cefe6fc2c44be7c20e81f7526634702fb615bdc + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 10/c28656c52bd48e8c1d9f3e8e68ecafd09d949c57755b0d353739eb4eae7ba4f7e67e92e4036f1cd43378cc1397a2c943ed7bcaf5949b04ab48607def0258b775 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-validator-identifier@npm:7.25.9" @@ -47,12 +258,252 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-option@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-option@npm:7.25.9" + checksum: 10/9491b2755948ebbdd68f87da907283698e663b5af2d2b1b02a2765761974b1120d5d8d49e9175b167f16f72748ffceec8c9cf62acfbee73f4904507b246e2b3d + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.26.10": + version: 7.27.0 + resolution: "@babel/helpers@npm:7.27.0" + dependencies: + "@babel/template": "npm:^7.27.0" + "@babel/types": "npm:^7.27.0" + checksum: 10/0dd40ba1e5ba4b72d1763bb381384585a56f21a61a19dc1b9a03381fe8e840207fdaa4da645d14dc028ad768087d41aad46347cc6573bd69d82f597f5a12dc6f + languageName: node + linkType: hard + +"@babel/parser@npm:^7.24.7, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/parser@npm:7.27.0" + dependencies: + "@babel/types": "npm:^7.27.0" + bin: + parser: ./bin/babel-parser.js + checksum: 10/0fee9f05c6db753882ca9d10958301493443da9f6986d7020ebd7a696b35886240016899bc0b47d871aea2abcafd64632343719742e87432c8145e0ec2af2a03 + languageName: node + linkType: hard + +"@babel/plugin-syntax-flow@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-syntax-flow@npm:7.26.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/fdc0d0a7b512e00d933e12cf93c785ea4645a193f4b539230b7601cfaa8c704410199318ce9ea14e5fca7d13e9027822f7d81a7871d3e854df26b6af04cc3c6c + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-jsx@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/bb609d1ffb50b58f0c1bac8810d0e46a4f6c922aa171c458f3a19d66ee545d36e782d3bffbbc1fed0dc65a558bdce1caf5279316583c0fff5a2c1658982a8563 + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-typescript@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/0e9821e8ba7d660c36c919654e4144a70546942ae184e85b8102f2322451eae102cbfadbcadd52ce077a2b44b400ee52394c616feab7b5b9f791b910e933fd33 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-properties@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-class-properties@npm:7.25.9" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/a8d69e2c285486b63f49193cbcf7a15e1d3a5f632c1c07d7a97f65306df7f554b30270b7378dde143f8b557d1f8f6336c643377943dec8ec405e4cd11e90b9ea + languageName: node + linkType: hard + +"@babel/plugin-transform-flow-strip-types@npm:^7.25.9": + version: 7.26.5 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.26.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/plugin-syntax-flow": "npm:^7.26.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/01ffdf56f0cbf26d222311cd69be4e5997182dbe6fee217f241c8d67f5e5b115b70efa4acd27d850f0a242b0d36b062d255d763984416155d0237c3ee9e9b8ea + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.24.7, @babel/plugin-transform-modules-commonjs@npm:^7.26.3": + version: 7.26.3 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.26.3" + dependencies: + "@babel/helper-module-transforms": "npm:^7.26.0" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/f817f02fa04d13f1578f3026239b57f1003bebcf9f9b8d854714bed76a0e4986c79bd6d2e0ac14282c5d309454a8dab683c179709ca753b0152a69c69f3a78e3 + languageName: node + linkType: hard + +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7": + version: 7.26.6 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.26.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.26.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/3832609f043dd1cd8076ab6a00a201573ef3f95bb2144d57787e4a973b3189884c16b4e77ff8e84a6ca47bc3b65bb7df10dca2f6163dfffc316ac96c37b0b5a6 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/bc838a499fd9892e163b8bc9bfbc4bf0b28cc3232ee0a6406ae078257c8096518f871d09b4a32c11f4a2d6953c3bc1984619ef748f7ad45aed0b0d9689a8eb36 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-methods@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-private-methods@npm:7.25.9" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/6e3671b352c267847c53a170a1937210fa8151764d70d25005e711ef9b21969aaf422acc14f9f7fb86bc0e4ec43e7aefcc0ad9196ae02d262ec10f509f126a58 + languageName: node + linkType: hard + +"@babel/plugin-transform-typescript@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/plugin-transform-typescript@npm:7.27.0" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.27.0" + "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/plugin-syntax-typescript": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/61f866967d0aa1b64d28f11687bfa517e47829baab294fe42f9eae4020767f96ab4c44029af9a445b6a1ac66bc3b3e4ff24048d833812ce81eec9a9bece90b11 + languageName: node + linkType: hard + +"@babel/preset-flow@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/preset-flow@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-transform-flow-strip-types": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/b1591ea63a7ace7e34bcefa6deba9e2814d7f082e3c074e2648efb68a1a49016ccefbea024156ba28bd3042a4e768e3eb8b5ecfe433978144fdaaadd36203ba2 + languageName: node + linkType: hard + +"@babel/preset-typescript@npm:^7.24.7": + version: 7.27.0 + resolution: "@babel/preset-typescript@npm:7.27.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-syntax-jsx": "npm:^7.25.9" + "@babel/plugin-transform-modules-commonjs": "npm:^7.26.3" + "@babel/plugin-transform-typescript": "npm:^7.27.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/3b7b44bff0ed5dec49cb056e9a3a3dbf55e51dc5f85baa98336785b2d99670a12b7f9741b8c74ae061f2942d13a9dc7ac4ae0bcaecaff04f9db934c6ab6d9f30 + languageName: node + linkType: hard + +"@babel/register@npm:^7.24.6": + version: 7.25.9 + resolution: "@babel/register@npm:7.25.9" + dependencies: + clone-deep: "npm:^4.0.1" + find-cache-dir: "npm:^2.0.0" + make-dir: "npm:^2.1.0" + pirates: "npm:^4.0.6" + source-map-support: "npm:^0.5.16" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/eb0192c2e83566043b9777062c50567c869bbe9ed65cbeece25a3f0c07c7763199d8008b7b860cb0090d6f4f2ab1b590adf29b539115c260566e44296e0559fb + languageName: node + linkType: hard + "@babel/runtime@npm:^7.12.5": - version: 7.26.10 - resolution: "@babel/runtime@npm:7.26.10" + version: 7.27.0 + resolution: "@babel/runtime@npm:7.27.0" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: 10/9d7ff8e96abe3791047c1138789c742411e3ef19c4d7ca18ce916f83cec92c06ec5dc64401759f6dd1e377cf8a01bbd2c62e033eb7550f435cf6579768d0d4a5 + checksum: 10/e6966e03b695feb4c0ac0856a4355231c2580bf9ebd0298f47739f85c0ea658679dd84409daf26378d42c86c1cbe7e33feab709b14e784254b6c441d91606465 + languageName: node + linkType: hard + +"@babel/template@npm:^7.26.9, @babel/template@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/template@npm:7.27.0" + dependencies: + "@babel/code-frame": "npm:^7.26.2" + "@babel/parser": "npm:^7.27.0" + "@babel/types": "npm:^7.27.0" + checksum: 10/7159ca1daea287ad34676d45a7146675444d42c7664aca3e617abc9b1d9548c8f377f35a36bb34cf956e1d3610dcb7acfcfe890aebf81880d35f91a7bd273ee5 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.10, @babel/traverse@npm:^7.26.5, @babel/traverse@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/traverse@npm:7.27.0" + dependencies: + "@babel/code-frame": "npm:^7.26.2" + "@babel/generator": "npm:^7.27.0" + "@babel/parser": "npm:^7.27.0" + "@babel/template": "npm:^7.27.0" + "@babel/types": "npm:^7.27.0" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10/b0675bc16bd87187e8b090557b0650135de56a621692ad8614b20f32621350ae0fc2e1129b73b780d64a9ed4beab46849a17f90d5267b6ae6ce09ec8412a12c7 + languageName: node + linkType: hard + +"@babel/types@npm:^7.25.9, @babel/types@npm:^7.26.10, @babel/types@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/types@npm:7.27.0" + dependencies: + "@babel/helper-string-parser": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + checksum: 10/2c322bce107c8a534dc4a23be60d570e6a4cc7ca2e44d4f0eee08c0b626104eb7e60ab8de03463bc5da1773a2f69f1e6edec1648d648d65461d6520a7f3b0770 + languageName: node + linkType: hard + +"@braidai/lang@npm:^1.0.0": + version: 1.1.0 + resolution: "@braidai/lang@npm:1.1.0" + checksum: 10/e6fde83701da73aefadf2a7a5d1906348203ae6a913764f72895d0f98093da2a58ac4b9a71d0058c38869f9ce630e362168b8a6708da051a9b92f80ca7b0b686 + languageName: node + linkType: hard + +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: 10/9d226461c1e91e95f067be2bdc5e6f99cfe55a721f45afb44122e23e4b8602eeac4ff7325af6b5a369f36396ee1514d3809af3f57769066d80d83790d8e53339 languageName: node linkType: hard @@ -271,23 +722,59 @@ __metadata: linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.5.0 - resolution: "@eslint-community/eslint-utils@npm:4.5.0" + version: 4.5.1 + resolution: "@eslint-community/eslint-utils@npm:4.5.1" dependencies: eslint-visitor-keys: "npm:^3.4.3" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10/f926c6a1510ae94ab5ce8ee0d5d8e245e0067e8ef7b25e4a430020e82ba9462a4a15b15187bffb2c45eebaa8b2591d5ac31e06a85dffd6292ccd6eaa17f23952 + checksum: 10/336b85150cf1828cba5b1fcf694233b947e635654c33aa2c1692dc9522d617218dff5abf3aaa6410b92fcb7fd1f0bf5393ec5b588987ac8835860465f8808ec5 languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": version: 4.12.1 resolution: "@eslint-community/regexpp@npm:4.12.1" checksum: 10/c08f1dd7dd18fbb60bdd0d85820656d1374dd898af9be7f82cb00451313402a22d5e30569c150315b4385907cdbca78c22389b2a72ab78883b3173be317620cc languageName: node linkType: hard +"@eslint/config-array@npm:^0.19.2": + version: 0.19.2 + resolution: "@eslint/config-array@npm:0.19.2" + dependencies: + "@eslint/object-schema": "npm:^2.1.6" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10/a6809720908f7dd8536e1a73b2369adf802fe61335536ed0592bca9543c476956e0c0a20fef8001885da8026e2445dc9bf3e471bb80d32c3be7bcdabb7628fd1 + languageName: node + linkType: hard + +"@eslint/config-helpers@npm:^0.2.0": + version: 0.2.1 + resolution: "@eslint/config-helpers@npm:0.2.1" + checksum: 10/7627d01a654c61a71387edd235e663fea50a23f0f521a174b77d94e3d1f6834a5da9205a101ffbe4ee5cf6fab1f384693c7b47080f059debdf338dd9b590aadf + languageName: node + linkType: hard + +"@eslint/core@npm:^0.12.0": + version: 0.12.0 + resolution: "@eslint/core@npm:0.12.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10/ee8a2c65ee49af727e167b180a8672739e468ad0b1b9ac52558e61bb120f1a93af23f9e723e0e58f273adfe30ccd98167b59598c7be07440489fa38f669b59ae + languageName: node + linkType: hard + +"@eslint/core@npm:^0.13.0": + version: 0.13.0 + resolution: "@eslint/core@npm:0.13.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10/737fd1c237405b62592e8daa4b7e25b45ab22108bfec65258cabd091d5717b7c9573acea1f27c4ee7198cefc5a0874f5caefe3d9636851227b1f12d28ef52cf2 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^2.1.4": version: 2.1.4 resolution: "@eslint/eslintrc@npm:2.1.4" @@ -305,6 +792,23 @@ __metadata: languageName: node linkType: hard +"@eslint/eslintrc@npm:^3.3.1": + version: 3.3.1 + resolution: "@eslint/eslintrc@npm:3.3.1" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^10.0.1" + globals: "npm:^14.0.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10/cc240addbab3c5fceaa65b2c8d5d4fd77ddbbf472c2f74f0270b9d33263dc9116840b6099c46b64c9680301146250439b044ed79278a1bcc557da412a4e3c1bb + languageName: node + linkType: hard + "@eslint/js@npm:8.57.1": version: 8.57.1 resolution: "@eslint/js@npm:8.57.1" @@ -312,6 +816,47 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:9.23.0, @eslint/js@npm:^9.23.0": + version: 9.23.0 + resolution: "@eslint/js@npm:9.23.0" + checksum: 10/d1d38fa2c4234f6ebed8e202530c9dccf565c47283f4e3c53955a47fed2bf8c59988f535672a32b53c14fed72e456c1c5cb050cd98a45474086b9693cbfa97d6 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.6": + version: 2.1.6 + resolution: "@eslint/object-schema@npm:2.1.6" + checksum: 10/266085c8d3fa6cd99457fb6350dffb8ee39db9c6baf28dc2b86576657373c92a568aec4bae7d142978e798b74c271696672e103202d47a0c148da39154351ed6 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.2.7": + version: 0.2.8 + resolution: "@eslint/plugin-kit@npm:0.2.8" + dependencies: + "@eslint/core": "npm:^0.13.0" + levn: "npm:^0.4.1" + checksum: 10/2e7fe7a88ebdbbf805e9e7265347b7dcfb6bf50beec314def997572b2e8ae4a7b9504fb67b1698a70c348a0dd87251d1e9028292a96fd49b58cb5277d88bdea7 + languageName: node + linkType: hard + +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 10/270d936be483ab5921702623bc74ce394bf12abbf57d9145a69e8a0d1c87eb1c768bd2d93af16c5705041e257e6d9cc7529311f63a1349f3678abc776fc28523 + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.6 + resolution: "@humanfs/node@npm:0.16.6" + dependencies: + "@humanfs/core": "npm:^0.19.1" + "@humanwhocodes/retry": "npm:^0.3.0" + checksum: 10/6d43c6727463772d05610aa05c83dab2bfbe78291022ee7a92cb50999910b8c720c76cc312822e2dea2b497aa1b3fef5fe9f68803fc45c9d4ed105874a65e339 + languageName: node + linkType: hard + "@humanwhocodes/config-array@npm:^0.13.0": version: 0.13.0 resolution: "@humanwhocodes/config-array@npm:0.13.0" @@ -337,6 +882,20 @@ __metadata: languageName: node linkType: hard +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1" + checksum: 10/eb457f699529de7f07649679ec9e0353055eebe443c2efe71c6dd950258892475a038e13c6a8c5e13ed1fb538cdd0a8794faa96b24b6ffc4c87fb1fc9f70ad7f + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.2": + version: 0.4.2 + resolution: "@humanwhocodes/retry@npm:0.4.2" + checksum: 10/8910c4cdf8d46ce406e6f0cb4407ff6cfef70b15039bd5713cc059f32e02fe5119d833cfe2ebc5f522eae42fdd453b6d88f3fa7a1d8c4275aaad6eb3d3e9b117 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -369,7 +928,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.2": +"@jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.8 resolution: "@jridgewell/gen-mapping@npm:0.3.8" dependencies: @@ -401,7 +960,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.24": +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -411,6 +970,15 @@ __metadata: languageName: node linkType: hard +"@loaderkit/resolve@npm:^1.0.2": + version: 1.0.4 + resolution: "@loaderkit/resolve@npm:1.0.4" + dependencies: + "@braidai/lang": "npm:^1.0.0" + checksum: 10/e999f0fc289c2e3f9f80ec92db69c123a5a74b5db7c4bc10292658fc9ef2e1afe6430346ca6cd52d941d7fc407bf28188c95bbbe0aa212c02c8716b5c4b03316 + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -467,6 +1035,13 @@ __metadata: languageName: node linkType: hard +"@publint/pack@npm:^0.1.2": + version: 0.1.2 + resolution: "@publint/pack@npm:0.1.2" + checksum: 10/83e1de31ae29a0e651f7f91ebe6ad1fdf8cbb61d1eb056476586a234d05fa6fde9f34d3a0e36fbf18a2e9affa1082f758833242fd285637d303130f1a286b928 + languageName: node + linkType: hard + "@reduxjs/toolkit@npm:^2.0.1": version: 2.6.1 resolution: "@reduxjs/toolkit@npm:2.6.1" @@ -487,135 +1062,142 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.35.0" +"@rollup/rollup-android-arm-eabi@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.39.0" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-android-arm64@npm:4.35.0" +"@rollup/rollup-android-arm64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-android-arm64@npm:4.39.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.35.0" +"@rollup/rollup-darwin-arm64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.39.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.35.0" +"@rollup/rollup-darwin-x64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.39.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.35.0" +"@rollup/rollup-freebsd-arm64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.39.0" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-freebsd-x64@npm:4.35.0" +"@rollup/rollup-freebsd-x64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-freebsd-x64@npm:4.39.0" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.35.0" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.39.0" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.35.0" +"@rollup/rollup-linux-arm-musleabihf@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.39.0" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.35.0" +"@rollup/rollup-linux-arm64-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.39.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.35.0" +"@rollup/rollup-linux-arm64-musl@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.39.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-loongarch64-gnu@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.35.0" +"@rollup/rollup-linux-loongarch64-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.39.0" conditions: os=linux & cpu=loong64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.35.0" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.39.0" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.35.0" +"@rollup/rollup-linux-riscv64-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.39.0" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.35.0" +"@rollup/rollup-linux-riscv64-musl@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.39.0" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.39.0" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.35.0" +"@rollup/rollup-linux-x64-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.39.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.35.0" +"@rollup/rollup-linux-x64-musl@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.39.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.35.0" +"@rollup/rollup-win32-arm64-msvc@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.39.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.35.0" +"@rollup/rollup-win32-ia32-msvc@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.39.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.35.0": - version: 4.35.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.35.0" +"@rollup/rollup-win32-x64-msvc@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.39.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -627,6 +1209,20 @@ __metadata: languageName: node linkType: hard +"@sindresorhus/is@npm:^4.6.0": + version: 4.6.0 + resolution: "@sindresorhus/is@npm:4.6.0" + checksum: 10/e7f36ed72abfcd5e0355f7423a72918b9748bb1ef370a59f3e5ad8d40b728b85d63b272f65f63eec1faf417cda89dcb0aeebe94015647b6054659c1442fe5ce0 + languageName: node + linkType: hard + +"@sindresorhus/merge-streams@npm:^2.1.0": + version: 2.3.0 + resolution: "@sindresorhus/merge-streams@npm:2.3.0" + checksum: 10/798bcb53cd1ace9df84fcdd1ba86afdc9e0cd84f5758d26ae9b1eefd8e8887e5fc30051132b9e74daf01bb41fa5a2faf1369361f83d76a3b3d7ee938058fd71c + languageName: node + linkType: hard + "@testing-library/dom@npm:^9.0.0": version: 9.3.4 resolution: "@testing-library/dom@npm:9.3.4" @@ -664,10 +1260,10 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:1.0.6, @types/estree@npm:^1.0.0": - version: 1.0.6 - resolution: "@types/estree@npm:1.0.6" - checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d +"@types/estree@npm:1.0.7, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": + version: 1.0.7 + resolution: "@types/estree@npm:1.0.7" + checksum: 10/419c845ece767ad4b21171e6e5b63dabb2eb46b9c0d97361edcd9cabbf6a95fcadb91d89b5fa098d1336fa0b8fceaea82fca97a2ef3971f5c86e53031e157b21 languageName: node linkType: hard @@ -681,7 +1277,17 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.12": +"@types/jscodeshift@npm:^17.3.0": + version: 17.3.0 + resolution: "@types/jscodeshift@npm:17.3.0" + dependencies: + ast-types: "npm:^0.16.1" + recast: "npm:^0.23.11" + checksum: 10/aa608bb08042a6afe52a4bee855088620ceba9239c45934fa372259b952320a29a11f54f79240fbb1ce0fe1b97331c743467766deb3f58b42dbb3f1cfc58303b + languageName: node + linkType: hard + +"@types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.15": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 @@ -702,12 +1308,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*": - version: 22.13.10 - resolution: "@types/node@npm:22.13.10" +"@types/node@npm:*, @types/node@npm:^22.14.0": + version: 22.14.0 + resolution: "@types/node@npm:22.14.0" dependencies: - undici-types: "npm:~6.20.0" - checksum: 10/57dc6a5e0110ca9edea8d7047082e649fa7fa813f79e4a901653b9174141c622f4336435648baced5b38d9f39843f404fa2d8d7a10981610da26066bc8caab48 + undici-types: "npm:~6.21.0" + checksum: 10/d0669a8a37a18532c886ccfa51eb3fe1e46088deb4d3d27ebcd5d7d68bd6343ad1c7a3fcb85164780a57629359c33a6c917ecff748ea232bceac7692acc96537 languageName: node linkType: hard @@ -719,28 +1325,28 @@ __metadata: linkType: hard "@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.2.17": - version: 18.3.5 - resolution: "@types/react-dom@npm:18.3.5" + version: 18.3.6 + resolution: "@types/react-dom@npm:18.3.6" peerDependencies: "@types/react": ^18.0.0 - checksum: 10/02095b326f373867498e0eb2b5ebb60f9bd9535db0d757ea13504c4b7d75e16605cf1d43ce7a2e67893d177b51db4357cabb2842fb4257c49427d02da1a14e09 + checksum: 10/ae179355401c64423d39946eda22c5f7f74c94ce61c21505024d4d82c33853ec40bc9b370f75e4a7750b0524aba4d95a43fcc328d8d14684dc2abb41ba529de8 languageName: node linkType: hard "@types/react@npm:^18.2.38": - version: 18.3.18 - resolution: "@types/react@npm:18.3.18" + version: 18.3.20 + resolution: "@types/react@npm:18.3.20" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.0.2" - checksum: 10/7fdd8b853e0d291d4138133f93f8d5c333da918e5804afcea61a923aab4bdfc9bb15eb21a5640959b452972b8715ddf10ffb12b3bd071898b9e37738636463f2 + checksum: 10/020c51e63b60862e6d772f0cdea0b9441182eedab6289dabd8add0708ded62003834c4e7c6f23a1ccd3ca9486b46296057c3f881c34261a0483765351f8d0bc3 languageName: node linkType: hard "@types/semver@npm:^7.5.0": - version: 7.5.8 - resolution: "@types/semver@npm:7.5.8" - checksum: 10/3496808818ddb36deabfe4974fd343a78101fa242c4690044ccdc3b95dcf8785b494f5d628f2f47f38a702f8db9c53c67f47d7818f2be1b79f2efb09692e1178 + version: 7.7.0 + resolution: "@types/semver@npm:7.7.0" + checksum: 10/ee4514c6c852b1c38f951239db02f9edeea39f5310fad9396a00b51efa2a2d96b3dfca1ae84c88181ea5b7157c57d32d7ef94edacee36fbf975546396b85ba5b languageName: node linkType: hard @@ -774,6 +1380,27 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.29.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.10.0" + "@typescript-eslint/scope-manager": "npm:8.29.0" + "@typescript-eslint/type-utils": "npm:8.29.0" + "@typescript-eslint/utils": "npm:8.29.0" + "@typescript-eslint/visitor-keys": "npm:8.29.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.3.1" + natural-compare: "npm:^1.4.0" + ts-api-utils: "npm:^2.0.1" + peerDependencies: + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10/1df4b43c209e40a00ec77e572b575760a9ac93967b6ebcc13f36587bf2881fc891c158f62cf25e8c2b8ca1ecd05b3eb583b30869ba6c2fa558435f0574773df8 + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:^6": version: 6.21.0 resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" @@ -799,6 +1426,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/parser@npm:8.29.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:8.29.0" + "@typescript-eslint/types": "npm:8.29.0" + "@typescript-eslint/typescript-estree": "npm:8.29.0" + "@typescript-eslint/visitor-keys": "npm:8.29.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10/d71fec12e78ac31a2faf076720c39f0e004a26672ebda4fc2f3b6f36306ff2362917dc6e0445746586f2911b4b2dd86622399dd578f002006f6c75cc9dfac013 + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^6": version: 6.21.0 resolution: "@typescript-eslint/parser@npm:6.21.0" @@ -827,6 +1470,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/scope-manager@npm:8.29.0" + dependencies: + "@typescript-eslint/types": "npm:8.29.0" + "@typescript-eslint/visitor-keys": "npm:8.29.0" + checksum: 10/23ce9962d57607f91a8a4a9bc43e64bd91cd933b53e61765924704614e52f39e8ccb28276b60b7472fb6dffe52fa681f114b73e4561fb4dcb74910a4e6a3629f + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:6.21.0": version: 6.21.0 resolution: "@typescript-eslint/type-utils@npm:6.21.0" @@ -844,6 +1497,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/type-utils@npm:8.29.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:8.29.0" + "@typescript-eslint/utils": "npm:8.29.0" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^2.0.1" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10/3b18caf6d3d16461d462b8960e1fa7fdb94f0eb2aa8afb9c95e2e458af32ffc82b14f1d26bb635b5e751bd0a7ff5c10fa1754377fff0dea760d1a96848705f88 + languageName: node + linkType: hard + "@typescript-eslint/types@npm:6.21.0": version: 6.21.0 resolution: "@typescript-eslint/types@npm:6.21.0" @@ -851,6 +1519,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/types@npm:8.29.0" + checksum: 10/d65b9f2f6d87a3744788b09d9112c4a0298f1215138d8677240aae3bfa37ddc24a59315536cd9aab63c7608909ae2c5f436924c889b98986b78003b6028b5c35 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:6.21.0": version: 6.21.0 resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" @@ -870,6 +1545,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.29.0" + dependencies: + "@typescript-eslint/types": "npm:8.29.0" + "@typescript-eslint/visitor-keys": "npm:8.29.0" + debug: "npm:^4.3.4" + fast-glob: "npm:^3.3.2" + is-glob: "npm:^4.0.3" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^2.0.1" + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 10/276e6ea97857ef0fd940578d4b8f1677fd68d2bb62603c85d7aa97fcf86c1f66c5da962393254b605c7025f0cda74395904053891088cbe405b899afc1180e9c + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:6.21.0": version: 6.21.0 resolution: "@typescript-eslint/utils@npm:6.21.0" @@ -887,6 +1580,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:8.29.0, @typescript-eslint/utils@npm:^8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/utils@npm:8.29.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:8.29.0" + "@typescript-eslint/types": "npm:8.29.0" + "@typescript-eslint/typescript-estree": "npm:8.29.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10/1fd17a28b8b57fc73c0455dea43a8185d3a4421f4a21ece01009b5e6a2974c8d4113f90d27993f668fa97077891b4464588d380c25116d351eb12ad7ef0d468d + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:6.21.0": version: 6.21.0 resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" @@ -897,6 +1605,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.29.0" + dependencies: + "@typescript-eslint/types": "npm:8.29.0" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10/02e0e86ab112849a31b7d06c767be0ca7802385bf953d3b75f4ba6d06741d9492773325bc69d4c2a1c191b08f1c4c4b33f8e062d6d5d9f0f4f78f1b8b3cc2d41 + languageName: node + linkType: hard + "@typescript/analyze-trace@npm:^0.10.1": version: 0.10.1 resolution: "@typescript/analyze-trace@npm:0.10.1" @@ -924,6 +1642,23 @@ __metadata: languageName: node linkType: hard +"@vitest/eslint-plugin@npm:^1.1.39": + version: 1.1.39 + resolution: "@vitest/eslint-plugin@npm:1.1.39" + peerDependencies: + "@typescript-eslint/utils": ^8.24.0 + eslint: ">= 8.57.0" + typescript: ">= 5.0.0" + vitest: "*" + peerDependenciesMeta: + typescript: + optional: true + vitest: + optional: true + checksum: 10/67edb46db8202400985b8fbc516edaa12bd1e3d24668ea78a8ba5bd90ebbe9c4e77fc4cfda8d7aa27ac51668a1e3445fe27f937128711d26cd5c2d562987e7a1 + languageName: node + linkType: hard + "@vitest/expect@npm:1.6.1": version: 1.6.1 resolution: "@vitest/expect@npm:1.6.1" @@ -935,6 +1670,46 @@ __metadata: languageName: node linkType: hard +"@vitest/expect@npm:3.1.1": + version: 3.1.1 + resolution: "@vitest/expect@npm:3.1.1" + dependencies: + "@vitest/spy": "npm:3.1.1" + "@vitest/utils": "npm:3.1.1" + chai: "npm:^5.2.0" + tinyrainbow: "npm:^2.0.0" + checksum: 10/79754e35fb505f6ee9636e49f78961299b99b12cebf6fd7ea6455a05d9a9589a65fa5d4537a7b4f6b837a41988ab629a6ff76252a4a5accf77f9462dbf3570c8 + languageName: node + linkType: hard + +"@vitest/mocker@npm:3.1.1": + version: 3.1.1 + resolution: "@vitest/mocker@npm:3.1.1" + dependencies: + "@vitest/spy": "npm:3.1.1" + estree-walker: "npm:^3.0.3" + magic-string: "npm:^0.30.17" + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + checksum: 10/18b72593071b4416b096c2c09899e9213804ec5e0fc90f6c5464ebd9645f34de9c2d0ecb09cbc7f3d44fbcf897fca2921ba114b185fc86a70050ccee1c6d6cc8 + languageName: node + linkType: hard + +"@vitest/pretty-format@npm:3.1.1, @vitest/pretty-format@npm:^3.1.1": + version: 3.1.1 + resolution: "@vitest/pretty-format@npm:3.1.1" + dependencies: + tinyrainbow: "npm:^2.0.0" + checksum: 10/d1bc6a6c687d686194ef19ebc748894c543bc520d79db5e86d53ac97f004d13d5b364592a21e151031bf76bf8865ce25e60fc71cc02ca0d513d20bc0c600a63f + languageName: node + linkType: hard + "@vitest/runner@npm:1.6.1": version: 1.6.1 resolution: "@vitest/runner@npm:1.6.1" @@ -946,6 +1721,16 @@ __metadata: languageName: node linkType: hard +"@vitest/runner@npm:3.1.1": + version: 3.1.1 + resolution: "@vitest/runner@npm:3.1.1" + dependencies: + "@vitest/utils": "npm:3.1.1" + pathe: "npm:^2.0.3" + checksum: 10/652a351e59d2f615f3b3de0bb47bfb7875117dd3e57a62c031d8f385614513dbe77847a39037aedb79818a3fde1d957bb82e2f3a5c74651d27721553ed8b4668 + languageName: node + linkType: hard + "@vitest/snapshot@npm:1.6.1": version: 1.6.1 resolution: "@vitest/snapshot@npm:1.6.1" @@ -957,6 +1742,17 @@ __metadata: languageName: node linkType: hard +"@vitest/snapshot@npm:3.1.1": + version: 3.1.1 + resolution: "@vitest/snapshot@npm:3.1.1" + dependencies: + "@vitest/pretty-format": "npm:3.1.1" + magic-string: "npm:^0.30.17" + pathe: "npm:^2.0.3" + checksum: 10/517ad76c35bd55d2908349a9a5749f874927971c2d6f4ffb3a6f6345acb7a393fac4cc9778119a215caf9ee0c96c75dc27c9f9227a51bd3907c36da946652d43 + languageName: node + linkType: hard + "@vitest/spy@npm:1.6.1": version: 1.6.1 resolution: "@vitest/spy@npm:1.6.1" @@ -966,6 +1762,15 @@ __metadata: languageName: node linkType: hard +"@vitest/spy@npm:3.1.1": + version: 3.1.1 + resolution: "@vitest/spy@npm:3.1.1" + dependencies: + tinyspy: "npm:^3.0.2" + checksum: 10/2b2c8cb2f13fe4ea48779b91c69140c596c8fe3a3ef283ef8b19c025cfdb59a60db7c65a320c84fa28b26655877570860bb44bc2d0e99639d097a7e042e3c604 + languageName: node + linkType: hard + "@vitest/utils@npm:1.6.1": version: 1.6.1 resolution: "@vitest/utils@npm:1.6.1" @@ -978,6 +1783,17 @@ __metadata: languageName: node linkType: hard +"@vitest/utils@npm:3.1.1": + version: 3.1.1 + resolution: "@vitest/utils@npm:3.1.1" + dependencies: + "@vitest/pretty-format": "npm:3.1.1" + loupe: "npm:^3.1.3" + tinyrainbow: "npm:^2.0.0" + checksum: 10/05f28d3e6636966803d60d4867200d6a3a5b7bc2ebaf1583bc3d5a2fc024e024c4958237eca73e420349faf326a8f62c3ae00b2cc2edb42d601b79a759f21b8f + languageName: node + linkType: hard + "abbrev@npm:^3.0.0": version: 3.0.0 resolution: "abbrev@npm:3.0.0" @@ -1031,6 +1847,15 @@ __metadata: languageName: node linkType: hard +"ansi-escapes@npm:^7.0.0": + version: 7.0.0 + resolution: "ansi-escapes@npm:7.0.0" + dependencies: + environment: "npm:^1.0.0" + checksum: 10/2d0e2345087bd7ae6bf122b9cc05ee35560d40dcc061146edcdc02bc2d7c7c50143cd12a22e69a0b5c0f62b948b7bc9a4539ee888b80f5bd33cdfd82d01a70ab + languageName: node + linkType: hard + "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -1038,7 +1863,7 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^6.0.1": +"ansi-regex@npm:^6.0.1, ansi-regex@npm:^6.1.0": version: 6.1.0 resolution: "ansi-regex@npm:6.1.0" checksum: 10/495834a53b0856c02acd40446f7130cb0f8284f4a39afdab20d5dc42b2e198b1196119fe887beed8f9055c4ff2055e3b2f6d4641d0be018cdfb64fedf6fc1aac @@ -1195,6 +2020,22 @@ __metadata: languageName: node linkType: hard +"assertion-error@npm:^2.0.1": + version: 2.0.1 + resolution: "assertion-error@npm:2.0.1" + checksum: 10/a0789dd882211b87116e81e2648ccb7f60340b34f19877dd020b39ebb4714e475eb943e14ba3e22201c221ef6645b7bfe10297e76b6ac95b48a9898c1211ce66 + languageName: node + linkType: hard + +"ast-types@npm:^0.16.1": + version: 0.16.1 + resolution: "ast-types@npm:0.16.1" + dependencies: + tslib: "npm:^2.0.1" + checksum: 10/f569b475eb1c8cb93888cb6e7b7e36dc43fa19a77e4eb132cbff6e3eb1598ca60f850db6e60b070e5a0ee8c1559fca921dac0916e576f2f104e198793b0bdd8d + languageName: node + linkType: hard + "async-function@npm:^1.0.0": version: 1.0.0 resolution: "async-function@npm:1.0.0" @@ -1262,6 +2103,27 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.24.0": + version: 4.24.4 + resolution: "browserslist@npm:4.24.4" + dependencies: + caniuse-lite: "npm:^1.0.30001688" + electron-to-chromium: "npm:^1.5.73" + node-releases: "npm:^2.0.19" + update-browserslist-db: "npm:^1.1.1" + bin: + browserslist: cli.js + checksum: 10/11fda105e803d891311a21a1f962d83599319165faf471c2d70e045dff82a12128f5b50b1fcba665a2352ad66147aaa248a9d2355a80aadc3f53375eb3de2e48 + languageName: node + linkType: hard + +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 10/0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb + languageName: node + linkType: hard + "bundle-require@npm:^5.1.0": version: 5.1.0 resolution: "bundle-require@npm:5.1.0" @@ -1339,6 +2201,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001688": + version: 1.0.30001709 + resolution: "caniuse-lite@npm:1.0.30001709" + checksum: 10/e48c245d3f2024df8bf89924c3717938912577772219e3a34d7f0e13a379900c07bcdf204129654cfe60988f3e7136bf7f62eeb2e263f47744740bfbb61ec317 + languageName: node + linkType: hard + "chai@npm:^4.3.10": version: 4.5.0 resolution: "chai@npm:4.5.0" @@ -1354,6 +2223,19 @@ __metadata: languageName: node linkType: hard +"chai@npm:^5.2.0": + version: 5.2.0 + resolution: "chai@npm:5.2.0" + dependencies: + assertion-error: "npm:^2.0.1" + check-error: "npm:^2.1.1" + deep-eql: "npm:^5.0.1" + loupe: "npm:^3.1.0" + pathval: "npm:^2.0.0" + checksum: 10/2ce03671c159c6a567bf1912756daabdbb7c075f3c0078f1b59d61da8d276936367ee696dfe093b49e1479d9ba93a6074c8e55d49791dddd8061728cdcad249e + languageName: node + linkType: hard + "chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" @@ -1364,6 +2246,20 @@ __metadata: languageName: node linkType: hard +"chalk@npm:^5.4.1": + version: 5.4.1 + resolution: "chalk@npm:5.4.1" + checksum: 10/29df3ffcdf25656fed6e95962e2ef86d14dfe03cd50e7074b06bad9ffbbf6089adbb40f75c00744d843685c8d008adaf3aed31476780312553caf07fa86e5bc7 + languageName: node + linkType: hard + +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: 10/1ec5c2906adb9f84e7f6732a40baef05d7c85401b82ffcbc44b85fbd0f7a2b0c2a96f2eb9cf55cae3235dc12d4023003b88f09bcae8be9ae894f52ed746f4d48 + languageName: node + linkType: hard + "check-error@npm:^1.0.3": version: 1.0.3 resolution: "check-error@npm:1.0.3" @@ -1373,6 +2269,13 @@ __metadata: languageName: node linkType: hard +"check-error@npm:^2.1.1": + version: 2.1.1 + resolution: "check-error@npm:2.1.1" + checksum: 10/d785ed17b1d4a4796b6e75c765a9a290098cf52ff9728ce0756e8ffd4293d2e419dd30c67200aee34202463b474306913f2fcfaf1890641026d9fc6966fea27a + languageName: node + linkType: hard + "chokidar@npm:^4.0.3": version: 4.0.3 resolution: "chokidar@npm:4.0.3" @@ -1389,6 +2292,42 @@ __metadata: languageName: node linkType: hard +"cjs-module-lexer@npm:^1.2.3": + version: 1.4.3 + resolution: "cjs-module-lexer@npm:1.4.3" + checksum: 10/d2b92f919a2dedbfd61d016964fce8da0035f827182ed6839c97cac56e8a8077cfa6a59388adfe2bc588a19cef9bbe830d683a76a6e93c51f65852062cfe2591 + languageName: node + linkType: hard + +"cli-highlight@npm:^2.1.11": + version: 2.1.11 + resolution: "cli-highlight@npm:2.1.11" + dependencies: + chalk: "npm:^4.0.0" + highlight.js: "npm:^10.7.1" + mz: "npm:^2.4.0" + parse5: "npm:^5.1.1" + parse5-htmlparser2-tree-adapter: "npm:^6.0.0" + yargs: "npm:^16.0.0" + bin: + highlight: bin/highlight + checksum: 10/05d2b5beb8a4d3259f693517d013bf53d04ad20f470b77c3d02e051963092fae388388e3127f67d3679884a0c32cb855bf590292017c5e68c0f8d86f4b8e146e + languageName: node + linkType: hard + +"cli-table3@npm:^0.6.3, cli-table3@npm:^0.6.5": + version: 0.6.5 + resolution: "cli-table3@npm:0.6.5" + dependencies: + "@colors/colors": "npm:1.5.0" + string-width: "npm:^4.2.0" + dependenciesMeta: + "@colors/colors": + optional: true + checksum: 10/8dca71256f6f1367bab84c33add3f957367c7c43750a9828a4212ebd31b8df76bd7419d386e3391ac7419698a8540c25f1a474584028f35b170841cde2e055c5 + languageName: node + linkType: hard + "cliui@npm:^7.0.2": version: 7.0.4 resolution: "cliui@npm:7.0.4" @@ -1400,6 +2339,17 @@ __metadata: languageName: node linkType: hard +"clone-deep@npm:^4.0.1": + version: 4.0.1 + resolution: "clone-deep@npm:4.0.1" + dependencies: + is-plain-object: "npm:^2.0.4" + kind-of: "npm:^6.0.2" + shallow-clone: "npm:^3.0.0" + checksum: 10/770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2 + languageName: node + linkType: hard + "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -1425,6 +2375,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^10.0.1": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 10/8799faa84a30da985802e661cc9856adfaee324d4b138413013ef7f087e8d7924b144c30a1f1405475f0909f467665cd9e1ce13270a2f41b141dab0b7a58f3fb + languageName: node + linkType: hard + "commander@npm:^4.0.0": version: 4.1.1 resolution: "commander@npm:4.1.1" @@ -1432,6 +2389,13 @@ __metadata: languageName: node linkType: hard +"commondir@npm:^1.0.1": + version: 1.0.1 + resolution: "commondir@npm:1.0.1" + checksum: 10/4620bc4936a4ef12ce7dfcd272bb23a99f2ad68889a4e4ad766c9f8ad21af982511934d6f7050d4a8bde90011b1c15d56e61a1b4576d9913efbf697a20172d6c + languageName: node + linkType: hard + "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -1447,9 +2411,16 @@ __metadata: linkType: hard "consola@npm:^3.4.0": - version: 3.4.0 - resolution: "consola@npm:3.4.0" - checksum: 10/99d4a8131f4cc42ff6bb8e4fd8c9dbd428d6b949f3ec25d9d24892a7b0603b0aabeee8213e13ad74439b5078fdb204f9377bcdd401949c33fff672d91f05c4ec + version: 3.4.2 + resolution: "consola@npm:3.4.2" + checksum: 10/32192c9f50d7cac27c5d7c4ecd3ff3679aea863e6bf5bd6a9cc2b05d1cd78addf5dae71df08c54330c142be8e7fbd46f051030129b57c6aacdd771efe409c4b2 + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10/c987be3ec061348cdb3c2bfb924bec86dea1eacad10550a85ca23edb0fe3556c3a61c7399114f3331ccb3499d7fd0285ab24566e5745929412983494c3926e15 languageName: node linkType: hard @@ -1534,7 +2505,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.4.0": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.4.0": version: 4.4.0 resolution: "debug@npm:4.4.0" dependencies: @@ -1562,6 +2533,13 @@ __metadata: languageName: node linkType: hard +"deep-eql@npm:^5.0.1": + version: 5.0.2 + resolution: "deep-eql@npm:5.0.2" + checksum: 10/a529b81e2ef8821621d20a36959a0328873a3e49d393ad11f8efe8559f31239494c2eb889b80342808674c475802ba95b9d6c4c27641b9a029405104c1b59fcf + languageName: node + linkType: hard + "deep-equal@npm:^2.0.5": version: 2.2.3 resolution: "deep-equal@npm:2.2.3" @@ -1683,6 +2661,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.5.73": + version: 1.5.130 + resolution: "electron-to-chromium@npm:1.5.130" + checksum: 10/ccca4d64fb687e9cb91105fd23a3cd27dce22a9a934b12a829b8258fb38b2138d805fb14256fcf9be6bee8b29bdbb14773441ac4e2a8c811369edb8431c0d356 + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -1697,6 +2682,13 @@ __metadata: languageName: node linkType: hard +"emojilib@npm:^2.4.0": + version: 2.4.0 + resolution: "emojilib@npm:2.4.0" + checksum: 10/bef767eca49acaa881388d91bee6936ea57ae367d603d5227ff0a9da3e2d1e774a61c447e5f2f4901797d023c4b5239bc208285b6172a880d3655024a0f44980 + languageName: node + linkType: hard + "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -1720,6 +2712,13 @@ __metadata: languageName: node linkType: hard +"environment@npm:^1.0.0": + version: 1.1.0 + resolution: "environment@npm:1.1.0" + checksum: 10/dd3c1b9825e7f71f1e72b03c2344799ac73f2e9ef81b78ea8b373e55db021786c6b9f3858ea43a436a2c4611052670ec0afe85bc029c384cc71165feee2f4ba6 + languageName: node + linkType: hard + "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" @@ -1841,6 +2840,13 @@ __metadata: languageName: node linkType: hard +"es-module-lexer@npm:^1.6.0": + version: 1.6.0 + resolution: "es-module-lexer@npm:1.6.0" + checksum: 10/807ee7020cc46a9c970c78cad1f2f3fc139877e5ebad7f66dbfbb124d451189ba1c48c1c632bd5f8ce1b8af2caef3fca340ba044a410fa890d17b080a59024bb + languageName: node + linkType: hard + "es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": version: 1.1.1 resolution: "es-object-atoms@npm:1.1.1" @@ -1965,7 +2971,7 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1": +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" checksum: 10/9d7169e3965b2f9ae46971afa392f6e5a25545ea30f2e2dd99c9b0a95a3f52b5653681a84f5b2911a413ddad2d7a93d3514165072f349b5ffc59c75a899970d6 @@ -1979,6 +2985,17 @@ __metadata: languageName: node linkType: hard +"eslint-config-prettier@npm:^10.1.1": + version: 10.1.1 + resolution: "eslint-config-prettier@npm:10.1.1" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10/e78e195a4f19e0de9bf655648bb3433877d6a5368537f1b1049976b74180844a00dd7c1ba3144e3da6e8b6864f8dcdfcda6c7338a537883fcf5b212ef6dcd0e0 + languageName: node + linkType: hard + "eslint-plugin-react@npm:^7.26.1": version: 7.37.4 resolution: "eslint-plugin-react@npm:7.37.4" @@ -2026,6 +3043,16 @@ __metadata: languageName: node linkType: hard +"eslint-scope@npm:^8.3.0": + version: 8.3.0 + resolution: "eslint-scope@npm:8.3.0" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10/ee1ff009e949423639a8b53453c0cb189967d9142c5d94dc3752bed9880140a0760007148ac6b0bd03557d70ede9cd7c3b1e66f9a7f3427b2dbeca2a5be22c91 + languageName: node + linkType: hard + "eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" @@ -2033,6 +3060,13 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^4.2.0": + version: 4.2.0 + resolution: "eslint-visitor-keys@npm:4.2.0" + checksum: 10/9651b3356b01760e586b4c631c5268c0e1a85236e3292bf754f0472f465bf9a856c0ddc261fceace155334118c0151778effafbab981413dbf9288349343fa25 + languageName: node + linkType: hard + "eslint@npm:^8.0.1": version: 8.57.1 resolution: "eslint@npm:8.57.1" @@ -2081,6 +3115,67 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^9.23.0": + version: 9.23.0 + resolution: "eslint@npm:9.23.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.19.2" + "@eslint/config-helpers": "npm:^0.2.0" + "@eslint/core": "npm:^0.12.0" + "@eslint/eslintrc": "npm:^3.3.1" + "@eslint/js": "npm:9.23.0" + "@eslint/plugin-kit": "npm:^0.2.7" + "@humanfs/node": "npm:^0.16.6" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@humanwhocodes/retry": "npm:^0.4.2" + "@types/estree": "npm:^1.0.6" + "@types/json-schema": "npm:^7.0.15" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.6" + debug: "npm:^4.3.2" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^8.3.0" + eslint-visitor-keys: "npm:^4.2.0" + espree: "npm:^10.3.0" + esquery: "npm:^1.5.0" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^8.0.0" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + bin: + eslint: bin/eslint.js + checksum: 10/fed63151adea5e4c732bc945dd8d30e6b670d0191b8aa4baff13a0826e29153499f7a59cb88a5a634f31d61c2bea2339ca4b9ff5976e9a61b2222abfb7431e4d + languageName: node + linkType: hard + +"espree@npm:^10.0.1, espree@npm:^10.3.0": + version: 10.3.0 + resolution: "espree@npm:10.3.0" + dependencies: + acorn: "npm:^8.14.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10/3412d44d4204c9e29d6b5dd0277400cfa0cd68495dc09eae1b9ce79d0c8985c1c5cc09cb9ba32a1cd963f48a49b0c46bdb7736afe395a300aa6bb1c0d86837e8 + languageName: node + linkType: hard + "espree@npm:^9.6.0, espree@npm:^9.6.1": version: 9.6.1 resolution: "espree@npm:9.6.1" @@ -2092,7 +3187,17 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.2": +"esprima@npm:~4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10/f1d3c622ad992421362294f7acf866aa9409fbad4eb2e8fa230bd33944ce371d32279667b242d8b8907ec2b6ad7353a717f3c0e60e748873a34a7905174bc0eb + languageName: node + linkType: hard + +"esquery@npm:^1.4.2, esquery@npm:^1.5.0": version: 1.6.0 resolution: "esquery@npm:1.6.0" dependencies: @@ -2157,6 +3262,13 @@ __metadata: languageName: node linkType: hard +"expect-type@npm:^1.2.0": + version: 1.2.1 + resolution: "expect-type@npm:1.2.1" + checksum: 10/d121d90f4f3f705ca0b656e36f28c0ba91483d0cddf2876e64e23c3dea2f2d5853e9c0c9a4e90eb4b3e4663bf09c2c02e9729c339dcd308c70b2107188e6b286 + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": version: 3.1.2 resolution: "exponential-backoff@npm:3.1.2" @@ -2171,7 +3283,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.9": +"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2, fast-glob@npm:^3.3.3": version: 3.3.3 resolution: "fast-glob@npm:3.3.3" dependencies: @@ -2219,6 +3331,13 @@ __metadata: languageName: node linkType: hard +"fflate@npm:^0.8.2": + version: 0.8.2 + resolution: "fflate@npm:0.8.2" + checksum: 10/2bd26ba6d235d428de793c6a0cd1aaa96a06269ebd4e21b46c8fd1bd136abc631acf27e188d47c3936db090bf3e1ede11d15ce9eae9bffdc4bfe1b9dc66ca9cb + languageName: node + linkType: hard + "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" @@ -2228,6 +3347,15 @@ __metadata: languageName: node linkType: hard +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" + dependencies: + flat-cache: "npm:^4.0.0" + checksum: 10/afe55c4de4e0d226a23c1eae62a7219aafb390859122608a89fa4df6addf55c7fd3f1a2da6f5b41e7cdff496e4cf28bbd215d53eab5c817afa96d2b40c81bfb0 + languageName: node + linkType: hard + "fill-range@npm:^7.1.1": version: 7.1.1 resolution: "fill-range@npm:7.1.1" @@ -2237,6 +3365,26 @@ __metadata: languageName: node linkType: hard +"find-cache-dir@npm:^2.0.0": + version: 2.1.0 + resolution: "find-cache-dir@npm:2.1.0" + dependencies: + commondir: "npm:^1.0.1" + make-dir: "npm:^2.0.0" + pkg-dir: "npm:^3.0.0" + checksum: 10/60ad475a6da9f257df4e81900f78986ab367d4f65d33cf802c5b91e969c28a8762f098693d7a571b6e4dd4c15166c2da32ae2d18b6766a18e2071079448fdce4 + languageName: node + linkType: hard + +"find-up@npm:^3.0.0": + version: 3.0.0 + resolution: "find-up@npm:3.0.0" + dependencies: + locate-path: "npm:^3.0.0" + checksum: 10/38eba3fe7a66e4bc7f0f5a1366dc25508b7cfc349f852640e3678d26ad9a6d7e2c43eff0a472287de4a9753ef58f066a0ea892a256fa3636ad51b3fe1e17fae9 + languageName: node + linkType: hard + "find-up@npm:^5.0.0": version: 5.0.0 resolution: "find-up@npm:5.0.0" @@ -2258,6 +3406,16 @@ __metadata: languageName: node linkType: hard +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.4" + checksum: 10/58ce851d9045fffc7871ce2bd718bc485ad7e777bf748c054904b87c351ff1080c2c11da00788d78738bfb51b71e4d5ea12d13b98eb36e3358851ffe495b62dc + languageName: node + linkType: hard + "flatted@npm:^3.2.9": version: 3.3.3 resolution: "flatted@npm:3.3.3" @@ -2265,6 +3423,13 @@ __metadata: languageName: node linkType: hard +"flow-parser@npm:0.*": + version: 0.266.1 + resolution: "flow-parser@npm:0.266.1" + checksum: 10/179d16b296f44e2a076fcef502fcf768b3e59749e715cdbfb192d6cfbe874e9ccd846fb2e171a13432f787185f4541cbbb8a61937e0124b59edb4c4896353a76 + languageName: node + linkType: hard + "for-each@npm:^0.3.3, for-each@npm:^0.3.5": version: 0.3.5 resolution: "for-each@npm:0.3.5" @@ -2359,6 +3524,13 @@ __metadata: languageName: node linkType: hard +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10/17d8333460204fbf1f9160d067e1e77f908a5447febb49424b8ab043026049835c9ef3974445c57dbd39161f4d2b04356d7de12b2eecaa27a7a7ea7d871cbedd + languageName: node + linkType: hard + "get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" @@ -2437,7 +3609,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": +"glob@npm:^10.2.2, glob@npm:^10.3.10": version: 10.4.5 resolution: "glob@npm:10.4.5" dependencies: @@ -2453,6 +3625,22 @@ __metadata: languageName: node linkType: hard +"glob@npm:^11.0.0": + version: 11.0.1 + resolution: "glob@npm:11.0.1" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^4.0.1" + minimatch: "npm:^10.0.0" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^2.0.0" + bin: + glob: dist/esm/bin.mjs + checksum: 10/57b12a05cc25f1c38f3b24cf6ea7a8bacef11e782c4b9a8c5b0bef3e6c5bcb8c4548cb31eb4115592e0490a024c1bde7359c470565608dd061d3b21179740457 + languageName: node + linkType: hard + "glob@npm:^7.0.0, glob@npm:^7.1.3": version: 7.2.3 resolution: "glob@npm:7.2.3" @@ -2467,6 +3655,13 @@ __metadata: languageName: node linkType: hard +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10/9f054fa38ff8de8fa356502eb9d2dae0c928217b8b5c8de1f09f5c9b6c8a96d8b9bd3afc49acbcd384a98a81fea713c859e1b09e214c60509517bb8fc2bc13c2 + languageName: node + linkType: hard + "globals@npm:^13.19.0": version: 13.24.0 resolution: "globals@npm:13.24.0" @@ -2476,6 +3671,13 @@ __metadata: languageName: node linkType: hard +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10/03939c8af95c6df5014b137cac83aa909090c3a3985caef06ee9a5a669790877af8698ab38007e4c0186873adc14c0b13764acc754b16a754c216cc56aa5f021 + languageName: node + linkType: hard + "globalthis@npm:^1.0.4": version: 1.0.4 resolution: "globalthis@npm:1.0.4" @@ -2500,6 +3702,20 @@ __metadata: languageName: node linkType: hard +"globby@npm:^14.1.0": + version: 14.1.0 + resolution: "globby@npm:14.1.0" + dependencies: + "@sindresorhus/merge-streams": "npm:^2.1.0" + fast-glob: "npm:^3.3.3" + ignore: "npm:^7.0.3" + path-type: "npm:^6.0.0" + slash: "npm:^5.1.0" + unicorn-magic: "npm:^0.3.0" + checksum: 10/e527ff54f0dddf60abfabd0d9e799768619d957feecd8b13ef60481f270bfdce0d28f6b09267c60f8064798fb3003b8ec991375f7fe0233fbce5304e1741368c + languageName: node + linkType: hard + "gopd@npm:^1.0.1, gopd@npm:^1.2.0": version: 1.2.0 resolution: "gopd@npm:1.2.0" @@ -2507,7 +3723,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2 @@ -2578,6 +3794,13 @@ __metadata: languageName: node linkType: hard +"highlight.js@npm:^10.7.1": + version: 10.7.3 + resolution: "highlight.js@npm:10.7.3" + checksum: 10/db8d10a541936b058e221dbde77869664b2b45bca75d660aa98065be2cd29f3924755fbc7348213f17fd931aefb6e6597448ba6fe82afba6d8313747a91983ee + languageName: node + linkType: hard + "html-encoding-sniffer@npm:^4.0.0": version: 4.0.0 resolution: "html-encoding-sniffer@npm:4.0.0" @@ -2630,13 +3853,20 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0, ignore@npm:^5.2.4": +"ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.1": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 10/cceb6a457000f8f6a50e1196429750d782afce5680dd878aa4221bd79972d68b3a55b4b1458fc682be978f4d3c6a249046aa0880637367216444ab7b014cfc98 languageName: node linkType: hard +"ignore@npm:^7.0.3": + version: 7.0.3 + resolution: "ignore@npm:7.0.3" + checksum: 10/ce5e812af3acd6607a3fe0a9f9b5f01d53f009a5ace8cbf5b6491d05a481b55d65186e6a7eaa13126e93f15276bcf3d1e8d6ff3ce5549c312f9bb313fff33365 + languageName: node + linkType: hard + "immer@npm:^10.0.3": version: 10.1.1 resolution: "immer@npm:10.1.1" @@ -2871,6 +4101,15 @@ __metadata: languageName: node linkType: hard +"is-plain-object@npm:^2.0.4": + version: 2.0.4 + resolution: "is-plain-object@npm:2.0.4" + dependencies: + isobject: "npm:^3.0.1" + checksum: 10/2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca + languageName: node + linkType: hard + "is-potential-custom-element-name@npm:^1.0.1": version: 1.0.1 resolution: "is-potential-custom-element-name@npm:1.0.1" @@ -2990,6 +4229,13 @@ __metadata: languageName: node linkType: hard +"isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: 10/db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 + languageName: node + linkType: hard + "iterator.prototype@npm:^1.1.4": version: 1.1.5 resolution: "iterator.prototype@npm:1.1.5" @@ -3017,6 +4263,24 @@ __metadata: languageName: node linkType: hard +"jackspeak@npm:^4.0.1": + version: 4.1.0 + resolution: "jackspeak@npm:4.1.0" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + checksum: 10/d3ad964e87a3d66ec86b6d466ff150cf3472bbda738a9c4f882ece96c7fb59f0013be1f6cad17cbedd36260741db6cf8912b8e037cd7c7eb72b3532246e54f77 + languageName: node + linkType: hard + +"jiti@npm:^2.4.2": + version: 2.4.2 + resolution: "jiti@npm:2.4.2" + bin: + jiti: lib/jiti-cli.mjs + checksum: 10/e2b07eb2e3fbb245e29ad288dddecab31804967fc84d5e01d39858997d2743b5e248946defcecf99272275a00284ecaf7ec88b8c841331324f0c946d8274414b + languageName: node + linkType: hard + "joycon@npm:^3.1.1": version: 3.1.1 resolution: "joycon@npm:3.1.1" @@ -3056,6 +4320,39 @@ __metadata: languageName: node linkType: hard +"jscodeshift@npm:^17.3.0": + version: 17.3.0 + resolution: "jscodeshift@npm:17.3.0" + dependencies: + "@babel/core": "npm:^7.24.7" + "@babel/parser": "npm:^7.24.7" + "@babel/plugin-transform-class-properties": "npm:^7.24.7" + "@babel/plugin-transform-modules-commonjs": "npm:^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.24.7" + "@babel/plugin-transform-optional-chaining": "npm:^7.24.7" + "@babel/plugin-transform-private-methods": "npm:^7.24.7" + "@babel/preset-flow": "npm:^7.24.7" + "@babel/preset-typescript": "npm:^7.24.7" + "@babel/register": "npm:^7.24.6" + flow-parser: "npm:0.*" + graceful-fs: "npm:^4.2.4" + micromatch: "npm:^4.0.7" + neo-async: "npm:^2.5.0" + picocolors: "npm:^1.0.1" + recast: "npm:^0.23.11" + tmp: "npm:^0.2.3" + write-file-atomic: "npm:^5.0.1" + peerDependencies: + "@babel/preset-env": ^7.1.6 + peerDependenciesMeta: + "@babel/preset-env": + optional: true + bin: + jscodeshift: bin/jscodeshift.js + checksum: 10/bafd2b296d545ce363b594499d18a2165532463ebf16d5be2ea65206c0a486da3dc07ab410f0fefc32f232c2a51ade790b9f28f52916db690a9edf1fd4b34966 + languageName: node + linkType: hard + "jsdom@npm:^23.0.0": version: 23.2.0 resolution: "jsdom@npm:23.2.0" @@ -3090,6 +4387,15 @@ __metadata: languageName: node linkType: hard +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" + bin: + jsesc: bin/jsesc + checksum: 10/20bd37a142eca5d1794f354db8f1c9aeb54d85e1f5c247b371de05d23a9751ecd7bd3a9c4fc5298ea6fa09a100dafb4190fa5c98c6610b75952c3487f3ce7967 + languageName: node + linkType: hard + "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" @@ -3111,6 +4417,15 @@ __metadata: languageName: node linkType: hard +"json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10/1db67b853ff0de3534085d630691d3247de53a2ed1390ba0ddff681ea43e9b3e30ecbdb65c5e9aab49435e44059c23dbd6fee8ee619419ba37465bb0dd7135da + languageName: node + linkType: hard + "jsonparse@npm:^1.2.0, jsonparse@npm:^1.3.1": version: 1.3.1 resolution: "jsonparse@npm:1.3.1" @@ -3142,7 +4457,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.5.3": +"keyv@npm:^4.5.3, keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" dependencies: @@ -3151,6 +4466,13 @@ __metadata: languageName: node linkType: hard +"kind-of@npm:^6.0.2": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 10/5873d303fb36aad875b7538798867da2ae5c9e328d67194b0162a3659a627d22f742fc9c4ae95cd1704132a24b00cae5041fc00c0f6ef937dc17080dc4dbb962 + languageName: node + linkType: hard + "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -3192,6 +4514,16 @@ __metadata: languageName: node linkType: hard +"locate-path@npm:^3.0.0": + version: 3.0.0 + resolution: "locate-path@npm:3.0.0" + dependencies: + p-locate: "npm:^3.0.0" + path-exists: "npm:^3.0.0" + checksum: 10/53db3996672f21f8b0bf2a2c645ae2c13ffdae1eeecfcd399a583bce8516c0b88dcb4222ca6efbbbeb6949df7e46860895be2c02e8d3219abd373ace3bfb4e11 + languageName: node + linkType: hard + "locate-path@npm:^6.0.0": version: 6.0.0 resolution: "locate-path@npm:6.0.0" @@ -3249,6 +4581,13 @@ __metadata: languageName: node linkType: hard +"loupe@npm:^3.1.0, loupe@npm:^3.1.3": + version: 3.1.3 + resolution: "loupe@npm:3.1.3" + checksum: 10/9e98c34daf0eba48ccc603595e51f2ae002110982d84879cf78c51de2c632f0c571dfe82ce4210af60c32203d06b443465c269bda925076fe6d9b612cc65c321 + languageName: node + linkType: hard + "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" @@ -3256,6 +4595,22 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^11.0.0": + version: 11.1.0 + resolution: "lru-cache@npm:11.1.0" + checksum: 10/5011011675ca98428902de774d0963b68c3a193cd959347cb63b781dad4228924124afab82159fd7b8b4db18285d9aff462b877b8f6efd2b41604f806c1d9db4 + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10/951d2673dcc64a7fb888bf3d13bc2fdf923faca97d89cdb405ba3dfff77e2b26e5798d405e78fcd7094c9e7b8b4dab2ddc5a4f8a11928af24a207b7c738ca3f8 + languageName: node + linkType: hard + "lz-string@npm:^1.5.0": version: 1.5.0 resolution: "lz-string@npm:1.5.0" @@ -3265,7 +4620,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.5": +"magic-string@npm:^0.30.17, magic-string@npm:^0.30.5": version: 0.30.17 resolution: "magic-string@npm:0.30.17" dependencies: @@ -3274,6 +4629,16 @@ __metadata: languageName: node linkType: hard +"make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": + version: 2.1.0 + resolution: "make-dir@npm:2.1.0" + dependencies: + pify: "npm:^4.0.1" + semver: "npm:^5.6.0" + checksum: 10/043548886bfaf1820323c6a2997e6d2fa51ccc2586ac14e6f14634f7458b4db2daf15f8c310e2a0abd3e0cddc64df1890d8fc7263033602c47bb12cbfcf86aab + languageName: node + linkType: hard + "make-fetch-happen@npm:^14.0.3": version: 14.0.3 resolution: "make-fetch-happen@npm:14.0.3" @@ -3293,6 +4658,32 @@ __metadata: languageName: node linkType: hard +"marked-terminal@npm:^7.1.0": + version: 7.3.0 + resolution: "marked-terminal@npm:7.3.0" + dependencies: + ansi-escapes: "npm:^7.0.0" + ansi-regex: "npm:^6.1.0" + chalk: "npm:^5.4.1" + cli-highlight: "npm:^2.1.11" + cli-table3: "npm:^0.6.5" + node-emoji: "npm:^2.2.0" + supports-hyperlinks: "npm:^3.1.0" + peerDependencies: + marked: ">=1 <16" + checksum: 10/1dfdfe752a4ebe6aec8de4a51180612a5f29982026b104a86215efb46b82b2a1942531a6bb840163c8d827e3eadc5cf93272e6eb29ec549f72b73b8b2eb97cfe + languageName: node + linkType: hard + +"marked@npm:^9.1.2": + version: 9.1.6 + resolution: "marked@npm:9.1.6" + bin: + marked: bin/marked.js + checksum: 10/29d073500c70b6b53cd35a8d19f5e43df6e2819ddeca8848a31901b87b82ca0ea46a8a831920c656c69c33ad5dce4b75654c4c4ced34a67f4e4e4a31c7620cfe + languageName: node + linkType: hard + "math-intrinsics@npm:^1.1.0": version: 1.1.0 resolution: "math-intrinsics@npm:1.1.0" @@ -3335,7 +4726,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.8": +"micromatch@npm:^4.0.7, micromatch@npm:^4.0.8": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -3377,6 +4768,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^10.0.0": + version: 10.0.1 + resolution: "minimatch@npm:10.0.1" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10/082e7ccbc090d5f8c4e4e029255d5a1d1e3af37bda837da2b8b0085b1503a1210c91ac90d9ebfe741d8a5f286ece820a1abb4f61dc1f82ce602a055d461d93f3 + languageName: node + linkType: hard + "minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -3463,12 +4863,11 @@ __metadata: linkType: hard "minizlib@npm:^3.0.1": - version: 3.0.1 - resolution: "minizlib@npm:3.0.1" + version: 3.0.2 + resolution: "minizlib@npm:3.0.2" dependencies: - minipass: "npm:^7.0.4" - rimraf: "npm:^5.0.5" - checksum: 10/622cb85f51e5c206a080a62d20db0d7b4066f308cb6ce82a9644da112367c3416ae7062017e631eb7ac8588191cfa4a9a279b8651c399265202b298e98c4acef + minipass: "npm:^7.1.2" + checksum: 10/c075bed1594f68dcc8c35122333520112daefd4d070e5d0a228bd4cf5580e9eed3981b96c0ae1d62488e204e80fd27b2b9d0068ca9a5ef3993e9565faf63ca41 languageName: node linkType: hard @@ -3493,6 +4892,13 @@ __metadata: languageName: node linkType: hard +"mri@npm:^1.1.0": + version: 1.2.0 + resolution: "mri@npm:1.2.0" + checksum: 10/6775a1d2228bb9d191ead4efc220bd6be64f943ad3afd4dcb3b3ac8fc7b87034443f666e38805df38e8d047b29f910c3cc7810da0109af83e42c82c73bd3f6bc + languageName: node + linkType: hard + "ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" @@ -3500,7 +4906,7 @@ __metadata: languageName: node linkType: hard -"mz@npm:^2.7.0": +"mz@npm:^2.4.0, mz@npm:^2.7.0": version: 2.7.0 resolution: "mz@npm:2.7.0" dependencies: @@ -3512,11 +4918,11 @@ __metadata: linkType: hard "nanoid@npm:^3.3.8": - version: 3.3.9 - resolution: "nanoid@npm:3.3.9" + version: 3.3.11 + resolution: "nanoid@npm:3.3.11" bin: nanoid: bin/nanoid.cjs - checksum: 10/80ec0f2f7fe0f472f459fbeab6afd88f6739e3da94cf2c2307bc83ef0203ec3b72e6113a9e3196ac4be79540440184136ee96e77c10a965e37d8347f43b265fa + checksum: 10/73b5afe5975a307aaa3c95dfe3334c52cdf9ae71518176895229b8d65ab0d1c0417dd081426134eb7571c055720428ea5d57c645138161e7d10df80815527c48 languageName: node linkType: hard @@ -3534,6 +4940,13 @@ __metadata: languageName: node linkType: hard +"neo-async@npm:^2.5.0": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: 10/1a7948fea86f2b33ec766bc899c88796a51ba76a4afc9026764aedc6e7cde692a09067031e4a1bf6db4f978ccd99e7f5b6c03fe47ad9865c3d4f99050d67e002 + languageName: node + linkType: hard + "netlify-plugin-cache@npm:^1.0.3": version: 1.0.3 resolution: "netlify-plugin-cache@npm:1.0.3" @@ -3541,23 +4954,42 @@ __metadata: languageName: node linkType: hard +"node-emoji@npm:^2.2.0": + version: 2.2.0 + resolution: "node-emoji@npm:2.2.0" + dependencies: + "@sindresorhus/is": "npm:^4.6.0" + char-regex: "npm:^1.0.2" + emojilib: "npm:^2.4.0" + skin-tone: "npm:^2.0.0" + checksum: 10/2548668f5cc9f781c94dc39971a630b2887111e0970c29fc523e924819d1b39b53a2694a4d1046861adf538c4462d06ee0269c48717ccad30336a918d9a911d5 + languageName: node + linkType: hard + "node-gyp@npm:latest": - version: 11.1.0 - resolution: "node-gyp@npm:11.1.0" + version: 11.2.0 + resolution: "node-gyp@npm:11.2.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" - glob: "npm:^10.3.10" graceful-fs: "npm:^4.2.6" make-fetch-happen: "npm:^14.0.3" nopt: "npm:^8.0.0" proc-log: "npm:^5.0.0" semver: "npm:^7.3.5" tar: "npm:^7.4.3" + tinyglobby: "npm:^0.2.12" which: "npm:^5.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10/3314ebfeb99dbcdf9e8c810df1ee52294045399873d4ab1e6740608c4fbe63adaf6580c0610b23c6eda125e298536553f5bb6fb0df714016a5c721ed31095e42 + checksum: 10/806fd8e3adc9157e17bf0d4a2c899cf6b98a0bbe9f453f630094ce791866271f6cddcaf2133e6513715d934fcba2014d287c7053d5d7934937b3a34d5a3d84ad + languageName: node + linkType: hard + +"node-releases@npm:^2.0.19": + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 10/c2b33b4f0c40445aee56141f13ca692fa6805db88510e5bbb3baadb2da13e1293b738e638e15e4a8eb668bb9e97debb08e7a35409b477b5cc18f171d35a83045 languageName: node linkType: hard @@ -3627,13 +5059,14 @@ __metadata: linkType: hard "object.entries@npm:^1.1.8": - version: 1.1.8 - resolution: "object.entries@npm:1.1.8" + version: 1.1.9 + resolution: "object.entries@npm:1.1.9" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10/2301918fbd1ee697cf6ff7cd94f060c738c0a7d92b22fd24c7c250e9b593642c9707ad2c44d339303c1439c5967d8964251cdfc855f7f6ec55db2dd79e8dc2a7 + es-object-atoms: "npm:^1.1.1" + checksum: 10/24163ab1e1e013796693fc5f5d349e8b3ac0b6a34a7edb6c17d3dd45c6a8854145780c57d302a82512c1582f63720f4b4779d6c1cfba12cbb1420b978802d8a3 languageName: node linkType: hard @@ -3704,6 +5137,15 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:^2.0.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10/84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 + languageName: node + linkType: hard + "p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": version: 3.1.0 resolution: "p-limit@npm:3.1.0" @@ -3722,6 +5164,15 @@ __metadata: languageName: node linkType: hard +"p-locate@npm:^3.0.0": + version: 3.0.0 + resolution: "p-locate@npm:3.0.0" + dependencies: + p-limit: "npm:^2.0.0" + checksum: 10/83991734a9854a05fe9dbb29f707ea8a0599391f52daac32b86f08e21415e857ffa60f0e120bfe7ce0cc4faf9274a50239c7895fc0d0579d08411e513b83a4ae + languageName: node + linkType: hard + "p-locate@npm:^5.0.0": version: 5.0.0 resolution: "p-locate@npm:5.0.0" @@ -3738,6 +5189,13 @@ __metadata: languageName: node linkType: hard +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10/f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae + languageName: node + linkType: hard + "package-json-from-dist@npm:^1.0.0": version: 1.0.1 resolution: "package-json-from-dist@npm:1.0.1" @@ -3745,12 +5203,42 @@ __metadata: languageName: node linkType: hard -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: "npm:^3.0.0" - checksum: 10/6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff +"package-manager-detector@npm:^1.1.0": + version: 1.1.0 + resolution: "package-manager-detector@npm:1.1.0" + checksum: 10/c72162e11dd2ec89588541d74e2814f5b0a92f05e25f44e74b1c3556c0232ea6873c6ca5417c12baeb86d54622979b2858e8696d2dcb25fe0242574a7438e377 + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10/6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff + languageName: node + linkType: hard + +"parse5-htmlparser2-tree-adapter@npm:^6.0.0": + version: 6.0.1 + resolution: "parse5-htmlparser2-tree-adapter@npm:6.0.1" + dependencies: + parse5: "npm:^6.0.1" + checksum: 10/3400a2cd1ad450b2fe148544154f86ea53d3ed6b6eab56c78bb43b9629d3dfe9f580dffd75bbf32be134ffef645b68081fc764bf75c210f236ab9c5c8c38c252 + languageName: node + linkType: hard + +"parse5@npm:^5.1.1": + version: 5.1.1 + resolution: "parse5@npm:5.1.1" + checksum: 10/5b509744cfe81488a33be05578df490c460690e64519fa67f0a0acb9c1bca05914e8acad17a977e2cf5964a000e43959b40024f0c243dd6595dd0cca8a32f71b + languageName: node + linkType: hard + +"parse5@npm:^6.0.1": + version: 6.0.1 + resolution: "parse5@npm:6.0.1" + checksum: 10/dfb110581f62bd1425725a7c784ae022a24669bd0efc24b58c71fc731c4d868193e2ebd85b74cde2dbb965e4dcf07059b1e651adbec1b3b5267531bd132fdb75 languageName: node linkType: hard @@ -3763,6 +5251,13 @@ __metadata: languageName: node linkType: hard +"path-exists@npm:^3.0.0": + version: 3.0.0 + resolution: "path-exists@npm:3.0.0" + checksum: 10/96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a + languageName: node + linkType: hard + "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" @@ -3808,6 +5303,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^2.0.0": + version: 2.0.0 + resolution: "path-scurry@npm:2.0.0" + dependencies: + lru-cache: "npm:^11.0.0" + minipass: "npm:^7.1.2" + checksum: 10/285ae0c2d6c34ae91dc1d5378ede21981c9a2f6de1ea9ca5a88b5a270ce9763b83dbadc7a324d512211d8d36b0c540427d3d0817030849d97a60fa840a2c59ec + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -3815,6 +5320,13 @@ __metadata: languageName: node linkType: hard +"path-type@npm:^6.0.0": + version: 6.0.0 + resolution: "path-type@npm:6.0.0" + checksum: 10/b9f6eaf7795c48d5c9bc4c6bc3ac61315b8d36975a73497ab2e02b764c0836b71fb267ea541863153f633a069a1c2ed3c247cb781633842fc571c655ac57c00e + languageName: node + linkType: hard + "pathe@npm:^1.1.1": version: 1.1.2 resolution: "pathe@npm:1.1.2" @@ -3822,7 +5334,7 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^2.0.1": +"pathe@npm:^2.0.1, pathe@npm:^2.0.3": version: 2.0.3 resolution: "pathe@npm:2.0.3" checksum: 10/01e9a69928f39087d96e1751ce7d6d50da8c39abf9a12e0ac2389c42c83bc76f78c45a475bd9026a02e6a6f79be63acc75667df855862fe567d99a00a540d23d @@ -3836,7 +5348,14 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.1.1": +"pathval@npm:^2.0.0": + version: 2.0.0 + resolution: "pathval@npm:2.0.0" + checksum: 10/b91575bf9cdf01757afd7b5e521eb8a0b874a49bc972d08e0047cfea0cd3c019f5614521d4bc83d2855e3fcc331db6817dfd533dd8f3d90b16bc76fad2450fc1 + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" checksum: 10/e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 @@ -3857,10 +5376,26 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.1": - version: 4.0.6 - resolution: "pirates@npm:4.0.6" - checksum: 10/d02dda76f4fec1cbdf395c36c11cf26f76a644f9f9a1bfa84d3167d0d3154d5289aacc72677aa20d599bb4a6937a471de1b65c995e2aea2d8687cbcd7e43ea5f +"pify@npm:^4.0.1": + version: 4.0.1 + resolution: "pify@npm:4.0.1" + checksum: 10/8b97cbf9dc6d4c1320cc238a2db0fc67547f9dc77011729ff353faf34f1936ea1a4d7f3c63b2f4980b253be77bcc72ea1e9e76ee3fd53cce2aafb6a8854d07ec + languageName: node + linkType: hard + +"pirates@npm:^4.0.1, pirates@npm:^4.0.6": + version: 4.0.7 + resolution: "pirates@npm:4.0.7" + checksum: 10/2427f371366081ae42feb58214f04805d6b41d6b84d74480ebcc9e0ddbd7105a139f7c653daeaf83ad8a1a77214cf07f64178e76de048128fec501eab3305a96 + languageName: node + linkType: hard + +"pkg-dir@npm:^3.0.0": + version: 3.0.0 + resolution: "pkg-dir@npm:3.0.0" + dependencies: + find-up: "npm:^3.0.0" + checksum: 10/70c9476ffefc77552cc6b1880176b71ad70bfac4f367604b2b04efd19337309a4eec985e94823271c7c0e83946fa5aeb18cd360d15d10a5d7533e19344bfa808 languageName: node linkType: hard @@ -3905,7 +5440,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.43": +"postcss@npm:^8.4.43, postcss@npm:^8.5.3": version: 8.5.3 resolution: "postcss@npm:8.5.3" dependencies: @@ -3932,6 +5467,15 @@ __metadata: languageName: node linkType: hard +"prettier@npm:^3.5.3": + version: 3.5.3 + resolution: "prettier@npm:3.5.3" + bin: + prettier: bin/prettier.cjs + checksum: 10/7050c08f674d9e49fbd9a4c008291d0715471f64e94cc5e4b01729affce221dfc6875c8de7e66b728c64abc9352eefb7eaae071b5f79d30081be207b53774b78 + languageName: node + linkType: hard + "pretty-format@npm:^27.0.2": version: 27.5.1 resolution: "pretty-format@npm:27.5.1" @@ -3991,6 +5535,20 @@ __metadata: languageName: node linkType: hard +"publint@npm:^0.3.10": + version: 0.3.10 + resolution: "publint@npm:0.3.10" + dependencies: + "@publint/pack": "npm:^0.1.2" + package-manager-detector: "npm:^1.1.0" + picocolors: "npm:^1.1.1" + sade: "npm:^1.8.1" + bin: + publint: src/cli.js + checksum: 10/204bad3fbc9ed58aa82c1595eb1355c6cb6148d6ffb912935aaa0746a73be970474c575e20470b133a002c0231fa8551e9ab0012a39b4832a7ec2bb7dff8d7e4 + languageName: node + linkType: hard + "punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" @@ -4091,6 +5649,19 @@ __metadata: languageName: node linkType: hard +"recast@npm:^0.23.11": + version: 0.23.11 + resolution: "recast@npm:0.23.11" + dependencies: + ast-types: "npm:^0.16.1" + esprima: "npm:~4.0.0" + source-map: "npm:~0.6.1" + tiny-invariant: "npm:^1.3.3" + tslib: "npm:^2.0.1" + checksum: 10/a622b7848efe13a59a40c9a1a3a8178433eae1048780e04d7392406e2d67fc29e3efa84b3aa8cfda28fd58989f4b59fa968bed295b739987a666bd11cc57a5b2 + languageName: node + linkType: hard + "rechoir@npm:^0.6.2": version: 0.6.2 resolution: "rechoir@npm:0.6.2" @@ -4181,6 +5752,34 @@ __metadata: languageName: node linkType: hard +"reselect-codemods@workspace:codemods": + version: 0.0.0-use.local + resolution: "reselect-codemods@workspace:codemods" + dependencies: + "@arethetypeswrong/cli": "npm:^0.17.4" + "@eslint/js": "npm:^9.23.0" + "@types/jscodeshift": "npm:^17.3.0" + "@types/node": "npm:^22.14.0" + "@typescript-eslint/utils": "npm:^8.29.0" + "@vitest/eslint-plugin": "npm:^1.1.39" + eslint: "npm:^9.23.0" + eslint-config-prettier: "npm:^10.1.1" + globby: "npm:^14.1.0" + jiti: "npm:^2.4.2" + jscodeshift: "npm:^17.3.0" + prettier: "npm:^3.5.3" + publint: "npm:^0.3.10" + reselect: "workspace:^" + rimraf: "npm:^6.0.1" + tsup: "npm:^8.4.0" + typescript: "npm:^5.8.2" + typescript-eslint: "npm:^8.29.0" + vitest: "npm:^3.1.1" + bin: + reselect-codemods: ./dist/bin.js + languageName: unknown + linkType: soft + "reselect@npm:^5.1.0": version: 5.1.1 resolution: "reselect@npm:5.1.1" @@ -4188,7 +5787,7 @@ __metadata: languageName: node linkType: hard -"reselect@workspace:.": +"reselect@workspace:., reselect@workspace:^": version: 0.0.0-use.local resolution: "reselect@workspace:." dependencies: @@ -4314,41 +5913,43 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^5.0.5": - version: 5.0.10 - resolution: "rimraf@npm:5.0.10" +"rimraf@npm:^6.0.1": + version: 6.0.1 + resolution: "rimraf@npm:6.0.1" dependencies: - glob: "npm:^10.3.7" + glob: "npm:^11.0.0" + package-json-from-dist: "npm:^1.0.0" bin: rimraf: dist/esm/bin.mjs - checksum: 10/f3b8ce81eecbde4628b07bdf9e2fa8b684e0caea4999acb1e3b0402c695cd41f28cd075609a808e61ce2672f528ca079f675ab1d8e8d5f86d56643a03e0b8d2e - languageName: node - linkType: hard - -"rollup@npm:^4.20.0, rollup@npm:^4.34.8": - version: 4.35.0 - resolution: "rollup@npm:4.35.0" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.35.0" - "@rollup/rollup-android-arm64": "npm:4.35.0" - "@rollup/rollup-darwin-arm64": "npm:4.35.0" - "@rollup/rollup-darwin-x64": "npm:4.35.0" - "@rollup/rollup-freebsd-arm64": "npm:4.35.0" - "@rollup/rollup-freebsd-x64": "npm:4.35.0" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.35.0" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.35.0" - "@rollup/rollup-linux-arm64-gnu": "npm:4.35.0" - "@rollup/rollup-linux-arm64-musl": "npm:4.35.0" - "@rollup/rollup-linux-loongarch64-gnu": "npm:4.35.0" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.35.0" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.35.0" - "@rollup/rollup-linux-s390x-gnu": "npm:4.35.0" - "@rollup/rollup-linux-x64-gnu": "npm:4.35.0" - "@rollup/rollup-linux-x64-musl": "npm:4.35.0" - "@rollup/rollup-win32-arm64-msvc": "npm:4.35.0" - "@rollup/rollup-win32-ia32-msvc": "npm:4.35.0" - "@rollup/rollup-win32-x64-msvc": "npm:4.35.0" - "@types/estree": "npm:1.0.6" + checksum: 10/0eb7edf08aa39017496c99ba675552dda11a20811ba78f8232da2ba945308c91e9cd673f95998b1a8202bc7436d33390831d23ea38ae52751038d56373ad99e2 + languageName: node + linkType: hard + +"rollup@npm:^4.20.0, rollup@npm:^4.30.1, rollup@npm:^4.34.8": + version: 4.39.0 + resolution: "rollup@npm:4.39.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.39.0" + "@rollup/rollup-android-arm64": "npm:4.39.0" + "@rollup/rollup-darwin-arm64": "npm:4.39.0" + "@rollup/rollup-darwin-x64": "npm:4.39.0" + "@rollup/rollup-freebsd-arm64": "npm:4.39.0" + "@rollup/rollup-freebsd-x64": "npm:4.39.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.39.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.39.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.39.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.39.0" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.39.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.39.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.39.0" + "@rollup/rollup-linux-riscv64-musl": "npm:4.39.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.39.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.39.0" + "@rollup/rollup-linux-x64-musl": "npm:4.39.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.39.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.39.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.39.0" + "@types/estree": "npm:1.0.7" fsevents: "npm:~2.3.2" dependenciesMeta: "@rollup/rollup-android-arm-eabi": @@ -4377,6 +5978,8 @@ __metadata: optional: true "@rollup/rollup-linux-riscv64-gnu": optional: true + "@rollup/rollup-linux-riscv64-musl": + optional: true "@rollup/rollup-linux-s390x-gnu": optional: true "@rollup/rollup-linux-x64-gnu": @@ -4393,7 +5996,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10/1fd13b8cb874106727cc4241e7b09167b835247185f52a0ac0d4b302df6dd01feec32e53ee3fead757c0c033f8b15ae6f0e093854de1878ae9e5dee37ec52579 + checksum: 10/d3b106efb71cd501b71e3a56e3257ccad4d969a201d59aa2e74d9b91ad5f44c508ddebfbe3de82d4324e9b0977420d35d6cce8e45f784a91080acea66c1c1ce8 languageName: node linkType: hard @@ -4420,6 +6023,15 @@ __metadata: languageName: node linkType: hard +"sade@npm:^1.8.1": + version: 1.8.1 + resolution: "sade@npm:1.8.1" + dependencies: + mri: "npm:^1.1.0" + checksum: 10/1c67ba03c94083e0ae307ff5564ecb86c2104c0f558042fdaa40ea0054f91a63a9783f14069870f2f784336adabb70f90f22a84dc457b5a25e859aaadefe0910 + languageName: node + linkType: hard + "safe-array-concat@npm:^1.1.3": version: 1.1.3 resolution: "safe-array-concat@npm:1.1.3" @@ -4486,6 +6098,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^5.6.0": + version: 5.7.2 + resolution: "semver@npm:5.7.2" + bin: + semver: bin/semver + checksum: 10/fca14418a174d4b4ef1fecb32c5941e3412d52a4d3d85165924ce3a47fbc7073372c26faf7484ceb4bbc2bde25880c6b97e492473dc7e9708fdfb1c6a02d546e + languageName: node + linkType: hard + "semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" @@ -4495,7 +6116,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.5.4": +"semver@npm:^7.3.5, semver@npm:^7.5.4, semver@npm:^7.6.0": version: 7.7.1 resolution: "semver@npm:7.7.1" bin: @@ -4541,6 +6162,15 @@ __metadata: languageName: node linkType: hard +"shallow-clone@npm:^3.0.0": + version: 3.0.1 + resolution: "shallow-clone@npm:3.0.1" + dependencies: + kind-of: "npm:^6.0.2" + checksum: 10/e066bd540cfec5e1b0f78134853e0d892d1c8945fb9a926a579946052e7cb0c70ca4fc34f875a8083aa7910d751805d36ae64af250a6de6f3d28f9fa7be6c21b + languageName: node + linkType: hard + "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -4632,6 +6262,15 @@ __metadata: languageName: node linkType: hard +"skin-tone@npm:^2.0.0": + version: 2.0.0 + resolution: "skin-tone@npm:2.0.0" + dependencies: + unicode-emoji-modifier-base: "npm:^1.0.0" + checksum: 10/19de157586b8019cacc55eb25d9d640f00fc02415761f3e41a4527142970fd4e7f6af0333bc90e879858766c20a976107bb386ffd4c812289c01d51f2c8d182c + languageName: node + linkType: hard + "slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" @@ -4639,6 +6278,13 @@ __metadata: languageName: node linkType: hard +"slash@npm:^5.1.0": + version: 5.1.0 + resolution: "slash@npm:5.1.0" + checksum: 10/2c41ec6fb1414cd9bba0fa6b1dd00e8be739e3fe85d079c69d4b09ca5f2f86eafd18d9ce611c0c0f686428638a36c272a6ac14799146a8295f259c10cc45cde4 + languageName: node + linkType: hard + "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -4674,6 +6320,16 @@ __metadata: languageName: node linkType: hard +"source-map-support@npm:^0.5.16": + version: 0.5.21 + resolution: "source-map-support@npm:0.5.21" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10/8317e12d84019b31e34b86d483dd41d6f832f389f7417faf8fc5c75a66a12d9686e47f589a0554a868b8482f037e23df9d040d29387eb16fa14cb85f091ba207 + languageName: node + linkType: hard + "source-map@npm:0.8.0-beta.0": version: 0.8.0-beta.0 resolution: "source-map@npm:0.8.0-beta.0" @@ -4683,6 +6339,13 @@ __metadata: languageName: node linkType: hard +"source-map@npm:^0.6.0, source-map@npm:~0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10/59ef7462f1c29d502b3057e822cdbdae0b0e565302c4dd1a95e11e793d8d9d62006cdc10e0fd99163ca33ff2071360cf50ee13f90440806e7ed57d81cba2f7ff + languageName: node + linkType: hard + "split2@npm:^3.2.2": version: 3.2.2 resolution: "split2@npm:3.2.2" @@ -4715,7 +6378,7 @@ __metadata: languageName: node linkType: hard -"std-env@npm:^3.5.0": +"std-env@npm:^3.5.0, std-env@npm:^3.8.1": version: 3.8.1 resolution: "std-env@npm:3.8.1" checksum: 10/ee119570e2e449be86aa4972f119f9086a918307cc524f6e891b7a7c1327a5c970cf1b7d5898c881777845292a7e3380cf7d80ad34aee355d2c22ac5eb628542 @@ -4891,7 +6554,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^7.1.0": +"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" dependencies: @@ -4900,6 +6563,16 @@ __metadata: languageName: node linkType: hard +"supports-hyperlinks@npm:^3.1.0": + version: 3.2.0 + resolution: "supports-hyperlinks@npm:3.2.0" + dependencies: + has-flag: "npm:^4.0.0" + supports-color: "npm:^7.0.0" + checksum: 10/f7924de6049fc30bc808f98d3561318c1a4e3d55d786f9fede5e23dc5a7b0f625485bd1143135b496d521ccd0110463f2c077eb71a4ce0cf783b8b31f7909242 + languageName: node + linkType: hard + "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -4962,7 +6635,14 @@ __metadata: languageName: node linkType: hard -"tinybench@npm:^2.5.1": +"tiny-invariant@npm:^1.3.3": + version: 1.3.3 + resolution: "tiny-invariant@npm:1.3.3" + checksum: 10/5e185c8cc2266967984ce3b352a4e57cb89dad5a8abb0dea21468a6ecaa67cd5bb47a3b7a85d08041008644af4f667fb8b6575ba38ba5fb00b3b5068306e59fe + languageName: node + linkType: hard + +"tinybench@npm:^2.5.1, tinybench@npm:^2.9.0": version: 2.9.0 resolution: "tinybench@npm:2.9.0" checksum: 10/cfa1e1418e91289219501703c4693c70708c91ffb7f040fd318d24aef419fb5a43e0c0160df9471499191968b2451d8da7f8087b08c3133c251c40d24aced06c @@ -4976,7 +6656,7 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.11": +"tinyglobby@npm:^0.2.11, tinyglobby@npm:^0.2.12": version: 0.2.12 resolution: "tinyglobby@npm:0.2.12" dependencies: @@ -4993,6 +6673,20 @@ __metadata: languageName: node linkType: hard +"tinypool@npm:^1.0.2": + version: 1.0.2 + resolution: "tinypool@npm:1.0.2" + checksum: 10/6109322f14b3763f65c8fa49fddab72cd3edd96b82dd50e05e63de74867329ff5353bff4377281ec963213d9314f37f4a353e9ee34bbac85fd4c1e4a568d6076 + languageName: node + linkType: hard + +"tinyrainbow@npm:^2.0.0": + version: 2.0.0 + resolution: "tinyrainbow@npm:2.0.0" + checksum: 10/94d4e16246972614a5601eeb169ba94f1d49752426312d3cf8cc4f2cc663a2e354ffc653aa4de4eebccbf9eeebdd0caef52d1150271fdfde65d7ae7f3dcb9eb5 + languageName: node + linkType: hard + "tinyspy@npm:^2.2.0": version: 2.2.1 resolution: "tinyspy@npm:2.2.1" @@ -5000,6 +6694,20 @@ __metadata: languageName: node linkType: hard +"tinyspy@npm:^3.0.2": + version: 3.0.2 + resolution: "tinyspy@npm:3.0.2" + checksum: 10/5db671b2ff5cd309de650c8c4761ca945459d7204afb1776db9a04fb4efa28a75f08517a8620c01ee32a577748802231ad92f7d5b194dc003ee7f987a2a06337 + languageName: node + linkType: hard + +"tmp@npm:^0.2.3": + version: 0.2.3 + resolution: "tmp@npm:0.2.3" + checksum: 10/7b13696787f159c9754793a83aa79a24f1522d47b87462ddb57c18ee93ff26c74cbb2b8d9138f571d2e0e765c728fb2739863a672b280528512c6d83d511c6fa + languageName: node + linkType: hard + "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -5030,12 +6738,12 @@ __metadata: languageName: node linkType: hard -"tr46@npm:^5.0.0": - version: 5.0.0 - resolution: "tr46@npm:5.0.0" +"tr46@npm:^5.1.0": + version: 5.1.0 + resolution: "tr46@npm:5.1.0" dependencies: punycode: "npm:^2.3.1" - checksum: 10/29155adb167d048d3c95d181f7cb5ac71948b4e8f3070ec455986e1f34634acae50ae02a3c8d448121c3afe35b76951cd46ed4c128fd80264280ca9502237a3e + checksum: 10/2f0249354018432250bc31287f857cb7a73c43a1753b0ddccc97d140d261fe5deddeb1bf1d77afbdb29f867721f46238e3f32e97b473ba0c7e29bc5c34ccc08f languageName: node linkType: hard @@ -5064,6 +6772,15 @@ __metadata: languageName: node linkType: hard +"ts-api-utils@npm:^2.0.1": + version: 2.1.0 + resolution: "ts-api-utils@npm:2.1.0" + peerDependencies: + typescript: ">=4.8.4" + checksum: 10/02e55b49d9617c6eebf8aadfa08d3ca03ca0cd2f0586ad34117fdfc7aa3cd25d95051843fde9df86665ad907f99baed179e7a117b11021417f379e4d2614eacd + languageName: node + linkType: hard + "ts-interface-checker@npm:^0.1.9": version: 0.1.13 resolution: "ts-interface-checker@npm:0.1.13" @@ -5071,7 +6788,14 @@ __metadata: languageName: node linkType: hard -"tsup@npm:^8.2.4": +"tslib@npm:^2.0.1": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10/3e2e043d5c2316461cb54e5c7fe02c30ef6dccb3384717ca22ae5c6b5bc95232a6241df19c622d9c73b809bea33b187f6dbc73030963e29950c2141bc32a79f7 + languageName: node + linkType: hard + +"tsup@npm:^8.2.4, tsup@npm:^8.4.0": version: 8.4.0 resolution: "tsup@npm:8.4.0" dependencies: @@ -5188,6 +6912,30 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.29.0": + version: 8.29.0 + resolution: "typescript-eslint@npm:8.29.0" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.29.0" + "@typescript-eslint/parser": "npm:8.29.0" + "@typescript-eslint/utils": "npm:8.29.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10/c4ca331261302c72bf83c1c128d5f20a7974f5472db8a554fabdd741c0eb9eda60c72fcf94d45a8633109a4c295b81cc5d1965aedac1022a739388f3b3fac871 + languageName: node + linkType: hard + +"typescript@npm:5.6.1-rc": + version: 5.6.1-rc + resolution: "typescript@npm:5.6.1-rc" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/5716659d5baf142b5c84b96209b30730a5e9dcc0202f879349f9974823f7452ec4ef3904397b6d89d861c688acdbb1dad0a449d753163519fae2ee06ea4a68be + languageName: node + linkType: hard + "typescript@npm:^5.8.2": version: 5.8.2 resolution: "typescript@npm:5.8.2" @@ -5198,6 +6946,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@npm%3A5.6.1-rc#optional!builtin": + version: 5.6.1-rc + resolution: "typescript@patch:typescript@npm%3A5.6.1-rc#optional!builtin::version=5.6.1-rc&hash=8c6c40" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/462e0bb46c63abfc5bfc43f2bb00b9777a4228f3ed52d8930b46404dce71dbada63c27a99262ff4570b5ff7d01455701bfd36823bd3c766e443b6fa33cd31dea + languageName: node + linkType: hard + "typescript@patch:typescript@npm%3A^5.8.2#optional!builtin": version: 5.8.2 resolution: "typescript@patch:typescript@npm%3A5.8.2#optional!builtin::version=5.8.2&hash=8c6c40" @@ -5227,10 +6985,24 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.20.0": - version: 6.20.0 - resolution: "undici-types@npm:6.20.0" - checksum: 10/583ac7bbf4ff69931d3985f4762cde2690bb607844c16a5e2fbb92ed312fe4fa1b365e953032d469fa28ba8b224e88a595f0b10a449332f83fa77c695e567dbe +"undici-types@npm:~6.21.0": + version: 6.21.0 + resolution: "undici-types@npm:6.21.0" + checksum: 10/ec8f41aa4359d50f9b59fa61fe3efce3477cc681908c8f84354d8567bb3701fafdddf36ef6bff307024d3feb42c837cf6f670314ba37fc8145e219560e473d14 + languageName: node + linkType: hard + +"unicode-emoji-modifier-base@npm:^1.0.0": + version: 1.0.0 + resolution: "unicode-emoji-modifier-base@npm:1.0.0" + checksum: 10/6e1521d35fa69493207eb8b41f8edb95985d8b3faf07c01d820a1830b5e8403e20002563e2f84683e8e962a49beccae789f0879356bf92a4ec7a4dd8e2d16fdb + languageName: node + linkType: hard + +"unicorn-magic@npm:^0.3.0": + version: 0.3.0 + resolution: "unicorn-magic@npm:0.3.0" + checksum: 10/bdd7d7c522f9456f32a0b77af23f8854f9a7db846088c3868ec213f9550683ab6a2bdf3803577eacbafddb4e06900974385841ccb75338d17346ccef45f9cb01 languageName: node linkType: hard @@ -5259,6 +7031,20 @@ __metadata: languageName: node linkType: hard +"update-browserslist-db@npm:^1.1.1": + version: 1.1.3 + resolution: "update-browserslist-db@npm:1.1.3" + dependencies: + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.1" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10/87af2776054ffb9194cf95e0201547d041f72ee44ce54b144da110e65ea7ca01379367407ba21de5c9edd52c74d95395366790de67f3eb4cc4afa0fe4424e76f + languageName: node + linkType: hard + "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -5279,11 +7065,11 @@ __metadata: linkType: hard "use-sync-external-store@npm:^1.4.0": - version: 1.4.0 - resolution: "use-sync-external-store@npm:1.4.0" + version: 1.5.0 + resolution: "use-sync-external-store@npm:1.5.0" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10/08bf581a8a2effaefc355e9d18ed025d436230f4cc973db2f593166df357cf63e47b9097b6e5089b594758bde322e1737754ad64905e030d70f8ff7ee671fd01 + checksum: 10/ddae7c4572511f7f641d6977bd0725340aa7dbeda8250418b54c1a57ec285083d96cf50d1a1acbd6cf729f7a87071b2302c6fbd29310432bf1b21a961a313279 languageName: node linkType: hard @@ -5294,6 +7080,13 @@ __metadata: languageName: node linkType: hard +"validate-npm-package-name@npm:^5.0.0": + version: 5.0.1 + resolution: "validate-npm-package-name@npm:5.0.1" + checksum: 10/0d583a1af23aeffea7748742cf22b6802458736fb8b60323ba5949763824d46f796474b0e1b9206beb716f9d75269e19dbd7795d6b038b29d561be95dd827381 + languageName: node + linkType: hard + "vite-node@npm:1.6.1": version: 1.6.1 resolution: "vite-node@npm:1.6.1" @@ -5309,9 +7102,24 @@ __metadata: languageName: node linkType: hard +"vite-node@npm:3.1.1": + version: 3.1.1 + resolution: "vite-node@npm:3.1.1" + dependencies: + cac: "npm:^6.7.14" + debug: "npm:^4.4.0" + es-module-lexer: "npm:^1.6.0" + pathe: "npm:^2.0.3" + vite: "npm:^5.0.0 || ^6.0.0" + bin: + vite-node: vite-node.mjs + checksum: 10/8243cbc2d83f7862d7882c982e85f3e45a654908de380591edd419338c4c75a7991bd22d12b290ad892b9ea102419e81fde92c87296ec7554f89d2ff2034d5e3 + languageName: node + linkType: hard + "vite@npm:^5.0.0": - version: 5.4.14 - resolution: "vite@npm:5.4.14" + version: 5.4.16 + resolution: "vite@npm:5.4.16" dependencies: esbuild: "npm:^0.21.3" fsevents: "npm:~2.3.3" @@ -5348,7 +7156,59 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10/ce382f4059eb6c939823b8f62163794752243755d84c71a4b73ad0f7d4d9f4c7a557a6ef4c78e0640f4bcf5ae5ec6b20c7ee4816419af3c81ba275f478b73468 + checksum: 10/c5010e3962b0a33d50b25296ae9c2f5a45b4b46977b67b9a4016918d932817bb8e46fa14b88d75f752641d4a89f1545966139b58b07dc2d6e3196250a0b239cd + languageName: node + linkType: hard + +"vite@npm:^5.0.0 || ^6.0.0": + version: 6.2.4 + resolution: "vite@npm:6.2.4" + dependencies: + esbuild: "npm:^0.25.0" + fsevents: "npm:~2.3.3" + postcss: "npm:^8.5.3" + rollup: "npm:^4.30.1" + peerDependencies: + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: ">=1.21.0" + less: "*" + lightningcss: ^1.21.0 + sass: "*" + sass-embedded: "*" + stylus: "*" + sugarss: "*" + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + bin: + vite: bin/vite.js + checksum: 10/3734c8695b4d35a5b3ea617159594835e370b428745f37e90d9c1daf82b53af5248578c1f1d9977fc1460320c0cdd4aef135095d378b2eba2736c03e2cfa019e languageName: node linkType: hard @@ -5402,6 +7262,59 @@ __metadata: languageName: node linkType: hard +"vitest@npm:^3.1.1": + version: 3.1.1 + resolution: "vitest@npm:3.1.1" + dependencies: + "@vitest/expect": "npm:3.1.1" + "@vitest/mocker": "npm:3.1.1" + "@vitest/pretty-format": "npm:^3.1.1" + "@vitest/runner": "npm:3.1.1" + "@vitest/snapshot": "npm:3.1.1" + "@vitest/spy": "npm:3.1.1" + "@vitest/utils": "npm:3.1.1" + chai: "npm:^5.2.0" + debug: "npm:^4.4.0" + expect-type: "npm:^1.2.0" + magic-string: "npm:^0.30.17" + pathe: "npm:^2.0.3" + std-env: "npm:^3.8.1" + tinybench: "npm:^2.9.0" + tinyexec: "npm:^0.3.2" + tinypool: "npm:^1.0.2" + tinyrainbow: "npm:^2.0.0" + vite: "npm:^5.0.0 || ^6.0.0" + vite-node: "npm:3.1.1" + why-is-node-running: "npm:^2.3.0" + peerDependencies: + "@edge-runtime/vm": "*" + "@types/debug": ^4.1.12 + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + "@vitest/browser": 3.1.1 + "@vitest/ui": 3.1.1 + happy-dom: "*" + jsdom: "*" + peerDependenciesMeta: + "@edge-runtime/vm": + optional: true + "@types/debug": + optional: true + "@types/node": + optional: true + "@vitest/browser": + optional: true + "@vitest/ui": + optional: true + happy-dom: + optional: true + jsdom: + optional: true + bin: + vitest: vitest.mjs + checksum: 10/9dc54ef6854f877ad524667a0f3798b6c97c8138bee15a3dbad76557a45e3a3e42d438140df7a9eeaa10e5da7b5eb74ba854f06ffd233fa3c9e5936f6ae42e97 + languageName: node + linkType: hard + "w3c-xmlserializer@npm:^5.0.0": version: 5.0.0 resolution: "w3c-xmlserializer@npm:5.0.0" @@ -5442,12 +7355,12 @@ __metadata: linkType: hard "whatwg-url@npm:^14.0.0": - version: 14.1.1 - resolution: "whatwg-url@npm:14.1.1" + version: 14.2.0 + resolution: "whatwg-url@npm:14.2.0" dependencies: - tr46: "npm:^5.0.0" + tr46: "npm:^5.1.0" webidl-conversions: "npm:^7.0.0" - checksum: 10/803bede3ec6c8f14de0d84ac6032479646b5a2b08f5a7289366c3461caed9d7888d171e2846b59798869191037562c965235c2eed6ff2e266c05a2b4a6ce0160 + checksum: 10/f0a95b0601c64f417c471536a2d828b4c16fe37c13662483a32f02f183ed0f441616609b0663fb791e524e8cd56d9a86dd7366b1fc5356048ccb09b576495e7c languageName: node linkType: hard @@ -5545,7 +7458,7 @@ __metadata: languageName: node linkType: hard -"why-is-node-running@npm:^2.2.2": +"why-is-node-running@npm:^2.2.2, why-is-node-running@npm:^2.3.0": version: 2.3.0 resolution: "why-is-node-running@npm:2.3.0" dependencies: @@ -5593,6 +7506,16 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^5.0.1": + version: 5.0.1 + resolution: "write-file-atomic@npm:5.0.1" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^4.0.1" + checksum: 10/648efddba54d478d0e4330ab6f239976df3b9752b123db5dc9405d9b5af768fa9d70ce60c52fdbe61d1200d24350bc4fbcbaf09288496c2be050de126bd95b7e + languageName: node + linkType: hard + "ws@npm:^8.16.0": version: 8.18.1 resolution: "ws@npm:8.18.1" @@ -5629,6 +7552,13 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10/9af0a4329c3c6b779ac4736c69fae4190ac03029fa27c1aef4e6bcc92119b73dea6fe5db5fe881fb0ce2a0e9539a42cdf60c7c21eda04d1a0b8c082e38509efb + languageName: node + linkType: hard + "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" @@ -5650,7 +7580,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^16.2.0": +"yargs@npm:^16.0.0, yargs@npm:^16.2.0": version: 16.2.0 resolution: "yargs@npm:16.2.0" dependencies: @@ -5673,8 +7603,8 @@ __metadata: linkType: hard "yocto-queue@npm:^1.0.0": - version: 1.2.0 - resolution: "yocto-queue@npm:1.2.0" - checksum: 10/6154113e60285f75c9d59c65056ea3842d3d5c999a4c692568155dcc5b9c038850374eae1f04507090eeee8129b8110d9c7259d1aa9fe323957fd46892b655fc + version: 1.2.1 + resolution: "yocto-queue@npm:1.2.1" + checksum: 10/0843d6c2c0558e5c06e98edf9c17942f25c769e21b519303a5c2adefd5b738c9b2054204dc856ac0cd9d134b1bc27d928ce84fd23c9e2423b7e013d5a6f50577 languageName: node linkType: hard