diff --git a/.codesandbox/ci.json b/.codesandbox/ci.json index cdc33c0d..b1a91257 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 00000000..62e60749 --- /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 00000000..150ac976 --- /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 00000000..eb05d160 --- /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 00000000..1a38df89 --- /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 00000000..a2cd5114 --- /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 00000000..ac48466d --- /dev/null +++ b/codemods/eslint.config.mts @@ -0,0 +1,263 @@ +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/', + '**/build/', + '**/lib/', + '**/coverage/', + '**/__snapshots__/', + '**/temp/', + '**/.temp/', + '**/.tmp/', + '**/.yalc/', + '**/.yarn/', + '**/.docusaurus/', + '**/.next/', + '**/__testfixtures__/', + ], + }, + { + name: `${js.meta.name}/recommended`, + ...js.configs.recommended, + }, + + configs.recommended, + configs.stylistic, + + vitestPlugin.configs.recommended, + vitestPlugin.configs.env, + + { + name: 'main', + languageOptions: { + parser, + parserOptions: { + ecmaVersion: 'latest', + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + rules: { + '@typescript-eslint/consistent-type-imports': [ + 2, + { + disallowTypeAnnotations: true, + fixStyle: 'separate-type-imports', + prefer: 'type-imports', + }, + ], + '@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, + { + allowSeparatedGroups: true, + ignoreCase: false, + ignoreDeclarationSort: true, + ignoreMemberSort: false, + memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'], + }, + ], + '@typescript-eslint/unified-signatures': [ + 2, + { + ignoreDifferentlyNamedParameters: false, + ignoreOverloadsWithDifferentJSDoc: false, + }, + ], + '@typescript-eslint/no-unnecessary-type-parameters': [2], + '@typescript-eslint/no-invalid-void-type': [ + 2, + { + allowAsThisParameter: false, + allowInGenericTypeArguments: true, + }, + ], + '@typescript-eslint/no-confusing-void-expression': [ + 2, + { + ignoreArrowShorthand: false, + ignoreVoidOperator: false, + ignoreVoidReturningFunctions: false, + }, + ], + '@typescript-eslint/no-duplicate-type-constituents': [ + 2, + { + ignoreIntersections: false, + ignoreUnions: false, + }, + ], + '@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, + { typesToIgnore: [] }, + ], + '@typescript-eslint/prefer-nullish-coalescing': [ + 2, + { + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing: false, + ignoreBooleanCoercion: false, + ignoreConditionalTests: true, + ignoreIfStatements: false, + ignoreMixedLogicalExpressions: false, + ignorePrimitives: { + bigint: false, + boolean: false, + number: false, + string: false, + }, + ignoreTernaryTests: false, + }, + ], + '@typescript-eslint/no-inferrable-types': [ + 2, + { + ignoreParameters: false, + ignoreProperties: false, + }, + ], + '@typescript-eslint/no-require-imports': [ + 2, + { + allow: [], + allowAsImport: true, + }, + ], + 'object-shorthand': [ + 2, + 'always', + { + avoidQuotes: true, + ignoreConstructors: true, + methodsIgnorePattern: '', + avoidExplicitReturnArrows: true, + }, + ], + + 'no-undef': [0, { typeof: false }], + '@typescript-eslint/no-unused-vars': [ + 0, + { + args: 'all', + argsIgnorePattern: '^_', + caughtErrors: 'all', + caughtErrorsIgnorePattern: '^_', + destructuredArrayIgnorePattern: '^_', + varsIgnorePattern: '^_', + ignoreRestSiblings: true, + }, + ], + '@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], + 'vitest/prefer-describe-function-title': [2], + }, + + settings: { + vitest: { + typecheck: true, + }, + }, + + linterOptions: { + reportUnusedDisableDirectives: 2, + }, + }, + + { + name: 'commonjs-files', + files: ['**/*.cjs'], + 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 00000000..6a7a64a2 --- /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.25.1", + "@types/jscodeshift": "^17.3.0", + "@types/node": "^22.15.2", + "@typescript-eslint/utils": "^8.31.0", + "@vitest/eslint-plugin": "^1.1.43", + "eslint": "^9.25.1", + "eslint-config-prettier": "^10.1.2", + "jiti": "^2.4.2", + "prettier": "^3.5.3", + "publint": "^0.3.12", + "reselect": "workspace:^", + "rimraf": "^6.0.1", + "tsup": "^8.4.0", + "typescript": "^5.8.3", + "typescript-eslint": "^8.31.0", + "vitest": "^3.1.2" + }, + "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 00000000..37f94445 --- /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 00000000..10213307 --- /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 00000000..66a112f6 --- /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 00000000..eb90c242 --- /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 00000000..2d1c7c99 --- /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 00000000..e01d4016 --- /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 00000000..495e16ff --- /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 00000000..075f2bda --- /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 00000000..da502daf --- /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 00000000..83693e68 --- /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 00000000..d7916ee2 --- /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 00000000..1d2e687b --- /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 00000000..bb9f6fc3 --- /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 00000000..24b985bc --- /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 00000000..f941c985 --- /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 00000000..6755b6fc --- /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 00000000..326163cf --- /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 00000000..2e1fcdea --- /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 00000000..f33eb6b8 --- /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 00000000..6a0ecc99 --- /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 00000000..2c27f742 --- /dev/null +++ b/codemods/vitest.global.setup.ts @@ -0,0 +1,92 @@ +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}`, + ), + ), + ), + ) + }) +} + +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 00000000..567fe2b1 --- /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 00000000..0f44db46 --- /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 83e3b9cb..c6528d50 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 ced43047..229ce857 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 00000000..69e7a671 --- /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 eceea148..d9da3b00 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 4c30b242..57e386e8 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 c9f4677c..fc26995d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,16 +5,66 @@ __metadata: version: 8 cacheKey: 10 -"@asamuzakjp/css-color@npm:^3.1.1": - version: 3.1.1 - resolution: "@asamuzakjp/css-color@npm:3.1.1" +"@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: - "@csstools/css-calc": "npm:^2.1.2" - "@csstools/css-color-parser": "npm:^3.0.8" + "@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.2": + version: 3.1.5 + resolution: "@asamuzakjp/css-color@npm:3.1.5" + dependencies: + "@csstools/css-calc": "npm:^2.1.3" + "@csstools/css-color-parser": "npm:^3.0.9" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" lru-cache: "npm:^10.4.3" - checksum: 10/42dd131c3f6297259b353b6a226e782800babe64003e41f3598e3fe98543eecea2a5d9c1869ed1c853b639ed9e259c685c6b7c96d1e0b5c0d154f874a8a8c3d9 + checksum: 10/a7818c84c13a8b7bf586f7ab5160435c55de54399cef54592971177211ea062b771b7d42f893e608228d21981aad9b0ecbe72f45b890af9f7e60ae43cb615561 languageName: node linkType: hard @@ -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.1 + resolution: "@braidai/lang@npm:1.1.1" + checksum: 10/3d6b1827aabe8b4b39d938e1fecb747d3d45ea621958f8366d48b97e18b6b1edf68328ae57b8c0fb3d4b9757757a86761f911d9e15cde69bdbd28482952e43d6 + 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 @@ -63,26 +514,26 @@ __metadata: languageName: node linkType: hard -"@csstools/css-calc@npm:^2.1.2": - version: 2.1.2 - resolution: "@csstools/css-calc@npm:2.1.2" +"@csstools/css-calc@npm:^2.1.3": + version: 2.1.3 + resolution: "@csstools/css-calc@npm:2.1.3" peerDependencies: "@csstools/css-parser-algorithms": ^3.0.4 "@csstools/css-tokenizer": ^3.0.3 - checksum: 10/23ba633b15ba733f9da6d65e6a97a34116d10add7df15f6b05df93f00bb47b335a2268fcfd93c442da5d4678706f7bb26ffcc26a74621e34fe0d399bb27e53d3 + checksum: 10/0c20165f13135bb51ef397c4ea8e185c75ff379378212952af57052de96890a1eda056b2c6a2d573ea69e56c9dae79a906a2e4cac9d731dfbf19defaf943fd55 languageName: node linkType: hard -"@csstools/css-color-parser@npm:^3.0.8": - version: 3.0.8 - resolution: "@csstools/css-color-parser@npm:3.0.8" +"@csstools/css-color-parser@npm:^3.0.9": + version: 3.0.9 + resolution: "@csstools/css-color-parser@npm:3.0.9" dependencies: "@csstools/color-helpers": "npm:^5.0.2" - "@csstools/css-calc": "npm:^2.1.2" + "@csstools/css-calc": "npm:^2.1.3" peerDependencies: "@csstools/css-parser-algorithms": ^3.0.4 "@csstools/css-tokenizer": ^3.0.3 - checksum: 10/935d0d6b484ee3b38390c765c66b0bb6632ca4172f211ef87f259a193bdae7f818732e8ef214fcce06016d5cf8fa1d917c24e4ff42f7359f589a979acc7e4511 + checksum: 10/634ee3c5424e21bda414015d20e906a620d06186fe38957479a5266ded435ae14675e3085a259cec75cd7138df081357aba58a2626592d61335228a451db3eca languageName: node linkType: hard @@ -271,23 +722,50 @@ __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.6.1 + resolution: "@eslint-community/eslint-utils@npm:4.6.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/9f1a91bddf0a68b2b8bb71b3390d0e665e842770ff4a0188d38199e8a66ac050608da14eb614d211535ed312633d9dc237bd297857bf0e78abac927029909e50 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.20.0": + version: 0.20.0 + resolution: "@eslint/config-array@npm:0.20.0" + dependencies: + "@eslint/object-schema": "npm:^2.1.6" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10/9db7f6cbb5363f2f98ee4805ce09d1a95c4349e86f3f456f2c23a0849b7a6aa8d2be4c25e376ee182af062762e15a101844881c89b566eea0856c481ffcb2090 + languageName: node + linkType: hard + +"@eslint/config-helpers@npm:^0.2.1": + version: 0.2.1 + resolution: "@eslint/config-helpers@npm:0.2.1" + checksum: 10/7627d01a654c61a71387edd235e663fea50a23f0f521a174b77d94e3d1f6834a5da9205a101ffbe4ee5cf6fab1f384693c7b47080f059debdf338dd9b590aadf + 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 +783,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 +807,47 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:9.25.1, @eslint/js@npm:^9.25.1": + version: 9.25.1 + resolution: "@eslint/js@npm:9.25.1" + checksum: 10/ad5812889598de32d674ef60c0e61468ac5c7f3b6ecf98b0e29d1e88d7af8ba3aab255b8c0a46bbaf654047bbd2ee5aa033db9b53e330f97615093fcccde4cbb + 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.8": + 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 +873,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 +919,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 +951,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 +961,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,10 +1026,19 @@ __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" + version: 2.7.0 + resolution: "@reduxjs/toolkit@npm:2.7.0" dependencies: + "@standard-schema/spec": "npm:^1.0.0" + "@standard-schema/utils": "npm:^0.3.0" immer: "npm:^10.0.3" redux: "npm:^5.0.1" redux-thunk: "npm:^3.1.0" @@ -483,139 +1051,146 @@ __metadata: optional: true react-redux: optional: true - checksum: 10/62ad00b875115eb2fb5b776665d2dbe71b1ad98f4342f409c67dfb27bd0cd7a13dffd7343bee6f232d0498429361f95541993bb2ecd747ad09a55069bc43303e + checksum: 10/cc264efc95f9ebeafa469bf1040d106a33768a802e6f46aa678bf9f26822d049c18b5f10864aa8badb2e62febe58e242860256174528e62b09e8f897d32cd182 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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-android-arm64@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-freebsd-x64@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.40.0" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.40.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.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.40.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -627,6 +1202,34 @@ __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 + +"@standard-schema/spec@npm:^1.0.0": + version: 1.0.0 + resolution: "@standard-schema/spec@npm:1.0.0" + checksum: 10/aee780cc1431888ca4b9aba9b24ffc8f3073fc083acc105e3951481478a2f4dc957796931b2da9e2d8329584cf211e4542275f188296c1cdff3ed44fd93a8bc8 + languageName: node + linkType: hard + +"@standard-schema/utils@npm:^0.3.0": + version: 0.3.0 + resolution: "@standard-schema/utils@npm:0.3.0" + checksum: 10/7084f875d322792f2e0a5904009434c8374b9345b09ba89828b68fd56fa3c2b366d35bf340d9e8c72736ef01793c2f70d350c372ed79845dc3566c58d34b4b51 + 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 +1267,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 +1284,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 +1315,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.15.2": + version: 22.15.2 + resolution: "@types/node@npm:22.15.2" dependencies: - undici-types: "npm:~6.20.0" - checksum: 10/57dc6a5e0110ca9edea8d7047082e649fa7fa813f79e4a901653b9174141c622f4336435648baced5b38d9f39843f404fa2d8d7a10981610da26066bc8caab48 + undici-types: "npm:~6.21.0" + checksum: 10/e22071571205413518aa3710644ed9603d8f4a417fc59f0e180240e1c05aaf7fb8feecdf553a2da305247b3533d03b58eab6e333115f01f581b9139a6b1dcd47 languageName: node linkType: hard @@ -719,28 +1332,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 +1387,27 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.31.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.10.0" + "@typescript-eslint/scope-manager": "npm:8.31.0" + "@typescript-eslint/type-utils": "npm:8.31.0" + "@typescript-eslint/utils": "npm:8.31.0" + "@typescript-eslint/visitor-keys": "npm:8.31.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/183ae3bdd56b7d87822a573c3312bca1e53c17956b618c2e84bf1e83f8015248251e85500370a80f2fec221e0dccf224e30a641edf138b42fe9be9362dd6476d + 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 +1433,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/parser@npm:8.31.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:8.31.0" + "@typescript-eslint/types": "npm:8.31.0" + "@typescript-eslint/typescript-estree": "npm:8.31.0" + "@typescript-eslint/visitor-keys": "npm:8.31.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10/468f9f9cc6e4685f88b8924bddd104ce940d48b63782a70682d46996c041676ba21d99b6561cac1dfbdcd9f57da9c80369283fec6c240c936b9d7948ac76d98e + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^6": version: 6.21.0 resolution: "@typescript-eslint/parser@npm:6.21.0" @@ -827,6 +1477,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/scope-manager@npm:8.31.0" + dependencies: + "@typescript-eslint/types": "npm:8.31.0" + "@typescript-eslint/visitor-keys": "npm:8.31.0" + checksum: 10/4ca30db2e6186415bcfa5bba24f55f3508c383d755cc3599c08087b04587276620b5d094439cd3df3e88bce25ad0f5bd2a4a7473ae59410c8ff9e72f87d7648e + 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 +1504,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/type-utils@npm:8.31.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:8.31.0" + "@typescript-eslint/utils": "npm:8.31.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/b17aba3e9a7a2b4d7135345ce56a1dc4a3592335ba0ed956111abc9044bedb02a8382a2d3fc064f4a2f1ffe6023555db1930cf836bce447a1ac08c496212fabe + 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 +1526,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/types@npm:8.31.0" + checksum: 10/937eca69241850ad94a5c93221191f2cbc448951f1672e913d106efe2bdd30d188c54d2502cbff5d4d9b3a95becf16387a20644239b1fee7458198cbdac4f923 + 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 +1552,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.31.0" + dependencies: + "@typescript-eslint/types": "npm:8.31.0" + "@typescript-eslint/visitor-keys": "npm:8.31.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/e2155504e2231e69c909e0268b63979e3829d4e5b3845c4272b72de3cb855d225c26639d9dc23b2753464a9f6c5c8a31665640a90e10da20eb9462eff9115261 + 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 +1587,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:8.31.0, @typescript-eslint/utils@npm:^8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/utils@npm:8.31.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:8.31.0" + "@typescript-eslint/types": "npm:8.31.0" + "@typescript-eslint/typescript-estree": "npm:8.31.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10/9e8fcef36bff920ba4eacc4289efc74a9aa65462849061d37d3014286948c8318b031a852555c7a7fe9cdf646458a2f82f7138171f7072ac595293979d5fd3a4 + 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 +1612,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.31.0": + version: 8.31.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.31.0" + dependencies: + "@typescript-eslint/types": "npm:8.31.0" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10/85417c4fb44735ace29201afa446e71bbdef074bf4543701c149eda22d51bf7b01c4da3ffc574dd9ef8b33ac4b5dea35a50326e413f223d2f5e73e4dc8e3c8ee + 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 +1649,23 @@ __metadata: languageName: node linkType: hard +"@vitest/eslint-plugin@npm:^1.1.43": + version: 1.1.43 + resolution: "@vitest/eslint-plugin@npm:1.1.43" + 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/a133bb0b5ea2c740801e9c9ed992e83ee3dc19c2a2e7348e3096137cf7cb4293f59cbf26079d14d235e13f2ce68eed11e79a7899387516853c0893fa617dc3c2 + languageName: node + linkType: hard + "@vitest/expect@npm:1.6.1": version: 1.6.1 resolution: "@vitest/expect@npm:1.6.1" @@ -935,6 +1677,46 @@ __metadata: languageName: node linkType: hard +"@vitest/expect@npm:3.1.2": + version: 3.1.2 + resolution: "@vitest/expect@npm:3.1.2" + dependencies: + "@vitest/spy": "npm:3.1.2" + "@vitest/utils": "npm:3.1.2" + chai: "npm:^5.2.0" + tinyrainbow: "npm:^2.0.0" + checksum: 10/3c414e376154c8095f40efe409bb5f2c9380ba05a15b20552ee2e29f73197ab73068177e3da298ac135ef72673d1ea92090c466c78443ee69a7438bc8ab65f4f + languageName: node + linkType: hard + +"@vitest/mocker@npm:3.1.2": + version: 3.1.2 + resolution: "@vitest/mocker@npm:3.1.2" + dependencies: + "@vitest/spy": "npm:3.1.2" + 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/e6d730400daa7a97fb277159733df1366a932b5b06ac83d72e094e5383191c2597b4a5ae3538b28de6112b9e5d314cb50b44e031e79522f43f3dfc8ab022a584 + languageName: node + linkType: hard + +"@vitest/pretty-format@npm:3.1.2, @vitest/pretty-format@npm:^3.1.2": + version: 3.1.2 + resolution: "@vitest/pretty-format@npm:3.1.2" + dependencies: + tinyrainbow: "npm:^2.0.0" + checksum: 10/454d0a8c250dbe52f7ec9dab4968e7c769fa10c8318eb5c54cb4b6d5b524772c04856e1990279f2c6e76705ffa107fddcbc1973560ed3b88167c231ccfeada16 + languageName: node + linkType: hard + "@vitest/runner@npm:1.6.1": version: 1.6.1 resolution: "@vitest/runner@npm:1.6.1" @@ -946,6 +1728,16 @@ __metadata: languageName: node linkType: hard +"@vitest/runner@npm:3.1.2": + version: 3.1.2 + resolution: "@vitest/runner@npm:3.1.2" + dependencies: + "@vitest/utils": "npm:3.1.2" + pathe: "npm:^2.0.3" + checksum: 10/b09c1ff3a556f318585307e6bb8954d219d0d35d1e17708fdd5d5ae1a230e6f29eba4f37a86faa71192f72406bb96b576c1b620d49d686def87bc5dcb8bf5737 + languageName: node + linkType: hard + "@vitest/snapshot@npm:1.6.1": version: 1.6.1 resolution: "@vitest/snapshot@npm:1.6.1" @@ -957,6 +1749,17 @@ __metadata: languageName: node linkType: hard +"@vitest/snapshot@npm:3.1.2": + version: 3.1.2 + resolution: "@vitest/snapshot@npm:3.1.2" + dependencies: + "@vitest/pretty-format": "npm:3.1.2" + magic-string: "npm:^0.30.17" + pathe: "npm:^2.0.3" + checksum: 10/dda969b697bdcd8616f17e98c74ad5e95a5f3c2284140aa72390ce668db34e70936ee0b8ebe89adb2e0dea332500689d54c8ff03f8adf1e00be70639ec9032bf + languageName: node + linkType: hard + "@vitest/spy@npm:1.6.1": version: 1.6.1 resolution: "@vitest/spy@npm:1.6.1" @@ -966,6 +1769,15 @@ __metadata: languageName: node linkType: hard +"@vitest/spy@npm:3.1.2": + version: 3.1.2 + resolution: "@vitest/spy@npm:3.1.2" + dependencies: + tinyspy: "npm:^3.0.2" + checksum: 10/c2c638368fa4130f903901fdf4e86da6f90d5d6a8cf7ce880cdd24768a1f8e6b726ea3428501c97e00c34ac2e8e39ac09b3a03606dffd8081559e0a35c892ddc + languageName: node + linkType: hard + "@vitest/utils@npm:1.6.1": version: 1.6.1 resolution: "@vitest/utils@npm:1.6.1" @@ -978,10 +1790,21 @@ __metadata: languageName: node linkType: hard +"@vitest/utils@npm:3.1.2": + version: 3.1.2 + resolution: "@vitest/utils@npm:3.1.2" + dependencies: + "@vitest/pretty-format": "npm:3.1.2" + loupe: "npm:^3.1.3" + tinyrainbow: "npm:^2.0.0" + checksum: 10/221faaaf6c69ef24eacdcf68581c833cb99bf3e5125945b5dec928af7ef1af4359aa520b90c42413a128b308037bf3217d8c41a41f44ca4aee3ac44e3f0d56b5 + languageName: node + linkType: hard + "abbrev@npm:^3.0.0": - version: 3.0.0 - resolution: "abbrev@npm:3.0.0" - checksum: 10/2ceee14efdeda42ef7355178c1069499f183546ff7112b3efe79c1edef09d20ad9c17939752215fb8f7fcf48d10e6a7c0aa00136dc9cf4d293d963718bb1d200 + version: 3.0.1 + resolution: "abbrev@npm:3.0.1" + checksum: 10/ebd2c149dda6f543b66ce3779ea612151bb3aa9d0824f169773ee9876f1ca5a4e0adbcccc7eed048c04da7998e1825e2aa76fcca92d9e67dea50ac2b0a58dc2e languageName: node linkType: hard @@ -1031,6 +1854,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 +1870,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 +2027,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 +2110,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 +2208,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001688": + version: 1.0.30001715 + resolution: "caniuse-lite@npm:1.0.30001715" + checksum: 10/5608cdaf609eb5fe3a86ab6c1c2f3943dbdab813041725f4747f5432b05e6e19fc606faa8a9b75c329b37b772c91c47e8db483e76a6b715b59c289ce53dcba68 + languageName: node + linkType: hard + "chai@npm:^4.3.10": version: 4.5.0 resolution: "chai@npm:4.5.0" @@ -1354,6 +2230,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 +2253,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 +2276,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 +2299,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 +2346,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 +2382,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 +2396,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 +2418,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 @@ -1475,12 +2453,12 @@ __metadata: linkType: hard "cssstyle@npm:^4.0.1": - version: 4.3.0 - resolution: "cssstyle@npm:4.3.0" + version: 4.3.1 + resolution: "cssstyle@npm:4.3.1" dependencies: - "@asamuzakjp/css-color": "npm:^3.1.1" + "@asamuzakjp/css-color": "npm:^3.1.2" rrweb-cssom: "npm:^0.8.0" - checksum: 10/81e0634b1905080a4f07a117a345c773f531c01cb6dd408077b46d03e2c5b5b5f0b88ab36eba5fb82ce35ef2c5ddb02a3fd57f99b54e7ab0bd06d8708c319080 + checksum: 10/e74b2636067c3fd912a16d8d979a7975e5a5c8b3ce9386298d75a82478bb6c8bc03b261b92575348f471b3eb7534d2594a0c4b47d6fc8c03605b2628dce992ff languageName: node linkType: hard @@ -1534,7 +2512,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 +2540,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 +2668,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.5.73": + version: 1.5.143 + resolution: "electron-to-chromium@npm:1.5.143" + checksum: 10/91a7980f96da5ad33b77e95c7e628f468e6bb53eac41437612882810a7552514132728f7c34ee5c967c599557af491fcc4f75e9138f82d22c1b1cdfc63fb8d6b + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -1697,6 +2689,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" @@ -1706,10 +2705,10 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.5.0": - version: 4.5.0 - resolution: "entities@npm:4.5.0" - checksum: 10/ede2a35c9bce1aeccd055a1b445d41c75a14a2bb1cd22e242f20cf04d236cdcd7f9c859eb83f76885327bfae0c25bf03303665ee1ce3d47c5927b98b0e3e3d48 +"entities@npm:^6.0.0": + version: 6.0.0 + resolution: "entities@npm:6.0.0" + checksum: 10/cf37a4aad887ba8573532346da1c78349dccd5b510a9bbddf92fe59b36b18a8b26fe619a862de4e7fd3b8addc6d5e0969261198bbeb690da87297011a61b7066 languageName: node linkType: hard @@ -1720,6 +2719,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 +2847,13 @@ __metadata: languageName: node linkType: hard +"es-module-lexer@npm:^1.6.0": + version: 1.7.0 + resolution: "es-module-lexer@npm:1.7.0" + checksum: 10/b6f3e576a3fed4d82b0d0ad4bbf6b3a5ad694d2e7ce8c4a069560da3db6399381eaba703616a182b16dde50ce998af64e07dcf49f2ae48153b9e07be3f107087 + 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 +2978,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,9 +2992,20 @@ __metadata: languageName: node linkType: hard +"eslint-config-prettier@npm:^10.1.2": + version: 10.1.2 + resolution: "eslint-config-prettier@npm:10.1.2" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10/7b096cbb75ff57cee933451e9c8bd2926688bc603a7d74c3d89b2bd57324cb0346c7e95ac24b17ef2dd2050bb870602c032368f11bf57c2962210418a99caf3f + languageName: node + linkType: hard + "eslint-plugin-react@npm:^7.26.1": - version: 7.37.4 - resolution: "eslint-plugin-react@npm:7.37.4" + version: 7.37.5 + resolution: "eslint-plugin-react@npm:7.37.5" dependencies: array-includes: "npm:^3.1.8" array.prototype.findlast: "npm:^1.2.5" @@ -1993,7 +3017,7 @@ __metadata: hasown: "npm:^2.0.2" jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" minimatch: "npm:^3.1.2" - object.entries: "npm:^1.1.8" + object.entries: "npm:^1.1.9" object.fromentries: "npm:^2.0.8" object.values: "npm:^1.2.1" prop-types: "npm:^15.8.1" @@ -2003,7 +3027,7 @@ __metadata: string.prototype.repeat: "npm:^1.0.0" peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - checksum: 10/c538c10665c87cb90a0bcc4efe53a758570db10997d079d31474a9760116ef5584648fa22403d889ca672df8071bda10b40434ea0499e5ee8360bc5c8aba1679 + checksum: 10/ee1bd4e0ec64f29109d5a625bb703d179c82e0159c86c3f1b52fc1209d2994625a137dae303c333fb308a2e38315e44066d5204998177e31974382f9fda25d5c languageName: node linkType: hard @@ -2026,6 +3050,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 +3067,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 +3122,67 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^9.25.1": + version: 9.25.1 + resolution: "eslint@npm:9.25.1" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.20.0" + "@eslint/config-helpers": "npm:^0.2.1" + "@eslint/core": "npm:^0.13.0" + "@eslint/eslintrc": "npm:^3.3.1" + "@eslint/js": "npm:9.25.1" + "@eslint/plugin-kit": "npm:^0.2.8" + "@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/037bbdc5cba6f72199976dcdce115b1b479b9425ee1116c08bcaf25e0de4a74a0ffe696d48610ade79c91b04ef3e707a7215a42dfba9c7d3a0b85747d5902e67 + 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 +3194,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 +3269,13 @@ __metadata: languageName: node linkType: hard +"expect-type@npm:^1.2.1": + 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 +3290,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: @@ -2207,15 +3326,22 @@ __metadata: languageName: node linkType: hard -"fdir@npm:^6.4.3": - version: 6.4.3 - resolution: "fdir@npm:6.4.3" +"fdir@npm:^6.4.4": + version: 6.4.4 + resolution: "fdir@npm:6.4.4" peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: picomatch: optional: true - checksum: 10/8e6d20f4590dc168de1374a9cadaa37e20ca6e0b822aa247c230e7ea1d9e9674a68cd816146435e4ecc98f9285091462ab7e5e56eebc9510931a1794e4db68b2 + checksum: 10/d0000d6b790059b35f4ed19acc8847a66452e0bc68b28766c929ffd523e5ec2083811fc8a545e4a1d4945ce70e887b3a610c145c681073b506143ae3076342ed + 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 @@ -2228,6 +3354,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 +3372,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 +3413,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 +3430,13 @@ __metadata: languageName: node linkType: hard +"flow-parser@npm:0.*": + version: 0.268.0 + resolution: "flow-parser@npm:0.268.0" + checksum: 10/24f16cf312f70c28fa6aa2471f8e30d5a47f0a3fdb3f5d1bafbd47c6f706766953ebc28d4d57b7031e4a0a8d54e1d29f9d63381fb8841448f7fa28311f7d20e3 + 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 +3531,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 +3616,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 +3632,22 @@ __metadata: languageName: node linkType: hard +"glob@npm:^11.0.0": + version: 11.0.2 + resolution: "glob@npm:11.0.2" + 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/53501530240150fdceb9ace47ab856acd1e0d598f8101b0760b665fc11dae2160d366563b89232ae4f5df7ddba8f7c92294719268fe932bd3a32d16cc58c3d02 + 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 +3662,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 +3678,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 +3709,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 +3730,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 +3801,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 +3860,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.4 + resolution: "ignore@npm:7.0.4" + checksum: 10/01ee59df2ffd14b0844efc17f5ab3642c848e45efdb7cc757928da5e076cb74313748f77f5ffe362a6407c5e7cc71f10fad5e8eb9d91c1a17c4e7ef2c1f8e40e + languageName: node + linkType: hard + "immer@npm:^10.0.3": version: 10.1.1 resolution: "immer@npm:10.1.1" @@ -2871,6 +4108,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 +4236,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 +4270,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 +4327,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 +4394,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 +4424,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 +4464,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 +4473,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 +4521,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 +4588,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 +4602,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 +4627,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 +4636,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 +4665,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 +4733,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 +4775,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 +4870,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 +4899,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 +4913,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 +4925,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 +4947,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 +4961,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 @@ -3626,14 +5065,15 @@ __metadata: languageName: node linkType: hard -"object.entries@npm:^1.1.8": - version: 1.1.8 - resolution: "object.entries@npm:1.1.8" +"object.entries@npm:^1.1.9": + 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 +5144,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 +5171,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 +5196,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,21 +5210,58 @@ __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.2.0 + resolution: "package-manager-detector@npm:1.2.0" + checksum: 10/f0492cc8334813910bd65f83b669a180c4cc23c788face2d753210694a230dc5309fa230a895ba34d3e9a83569df5ac554e3f2a9a983a165e3773cce7f2e0ffb + 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 "parse5@npm:^7.1.2": - version: 7.2.1 - resolution: "parse5@npm:7.2.1" + version: 7.3.0 + resolution: "parse5@npm:7.3.0" dependencies: - entities: "npm:^4.5.0" - checksum: 10/fd1a8ad1540d871e1ad6ca9bf5b67e30280886f1ce4a28052c0cb885723aa984d8cb1ec3da998349a6146960c8a84aa87b1a42600eb3b94495c7303476f2f88e + entities: "npm:^6.0.0" + checksum: 10/b0e48be20b820c655b138b86fa6fb3a790de6c891aa2aba536524f8027b4dca4fe538f11a0e5cf2f6f847d120dbb9e4822dcaeb933ff1e10850a2ef0154d1d88 + 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 @@ -3808,6 +5310,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 +5327,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 +5341,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 +5355,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 +5383,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 +5447,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 +5474,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 +5542,20 @@ __metadata: languageName: node linkType: hard +"publint@npm:^0.3.12": + version: 0.3.12 + resolution: "publint@npm:0.3.12" + 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/77153a20821b58fbe57e3d90e2ddd7c014c4a7dd4b506f8919ef0ecbb1e14745514c89be9d72623dcad014f0c11dbc0b204c05f713297c4435b695ba9f874c21 + 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 +5656,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 +5759,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.25.1" + "@types/jscodeshift": "npm:^17.3.0" + "@types/node": "npm:^22.15.2" + "@typescript-eslint/utils": "npm:^8.31.0" + "@vitest/eslint-plugin": "npm:^1.1.43" + eslint: "npm:^9.25.1" + eslint-config-prettier: "npm:^10.1.2" + globby: "npm:^14.1.0" + jiti: "npm:^2.4.2" + jscodeshift: "npm:^17.3.0" + prettier: "npm:^3.5.3" + publint: "npm:^0.3.12" + reselect: "workspace:^" + rimraf: "npm:^6.0.1" + tsup: "npm:^8.4.0" + typescript: "npm:^5.8.3" + typescript-eslint: "npm:^8.31.0" + vitest: "npm:^3.1.2" + 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 +5794,7 @@ __metadata: languageName: node linkType: hard -"reselect@workspace:.": +"reselect@workspace:., reselect@workspace:^": version: 0.0.0-use.local resolution: "reselect@workspace:." dependencies: @@ -4314,41 +5920,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.34.8, rollup@npm:^4.34.9": + version: 4.40.0 + resolution: "rollup@npm:4.40.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.40.0" + "@rollup/rollup-android-arm64": "npm:4.40.0" + "@rollup/rollup-darwin-arm64": "npm:4.40.0" + "@rollup/rollup-darwin-x64": "npm:4.40.0" + "@rollup/rollup-freebsd-arm64": "npm:4.40.0" + "@rollup/rollup-freebsd-x64": "npm:4.40.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.40.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.40.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.40.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.40.0" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.40.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.40.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.40.0" + "@rollup/rollup-linux-riscv64-musl": "npm:4.40.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.40.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.40.0" + "@rollup/rollup-linux-x64-musl": "npm:4.40.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.40.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.40.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.40.0" + "@types/estree": "npm:1.0.7" fsevents: "npm:~2.3.2" dependenciesMeta: "@rollup/rollup-android-arm-eabi": @@ -4377,6 +5985,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 +6003,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10/1fd13b8cb874106727cc4241e7b09167b835247185f52a0ac0d4b302df6dd01feec32e53ee3fead757c0c033f8b15ae6f0e093854de1878ae9e5dee37ec52579 + checksum: 10/59976247cd855bc48b7192c82a6751bd04213e5a265109c652a6c43bde9056038c6399c0cf50ea3001edd5c11bb878a59e1055bb651b3bd6bbd0373c0345ed0c languageName: node linkType: hard @@ -4420,6 +6030,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 +6105,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 +6123,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 +6169,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 +6269,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 +6285,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 +6327,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 +6346,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,10 +6385,10 @@ __metadata: languageName: node linkType: hard -"std-env@npm:^3.5.0": - version: 3.8.1 - resolution: "std-env@npm:3.8.1" - checksum: 10/ee119570e2e449be86aa4972f119f9086a918307cc524f6e891b7a7c1327a5c970cf1b7d5898c881777845292a7e3380cf7d80ad34aee355d2c22ac5eb628542 +"std-env@npm:^3.5.0, std-env@npm:^3.9.0": + version: 3.9.0 + resolution: "std-env@npm:3.9.0" + checksum: 10/3044b2c54a74be4f460db56725571241ab3ac89a91f39c7709519bc90fa37148784bc4cd7d3a301aa735f43bd174496f263563f76703ce3e81370466ab7c235b languageName: node linkType: hard @@ -4891,7 +6561,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 +6570,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 +6642,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,13 +6663,13 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.11": - version: 0.2.12 - resolution: "tinyglobby@npm:0.2.12" +"tinyglobby@npm:^0.2.11, tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.13": + version: 0.2.13 + resolution: "tinyglobby@npm:0.2.13" dependencies: - fdir: "npm:^6.4.3" + fdir: "npm:^6.4.4" picomatch: "npm:^4.0.2" - checksum: 10/4ad28701fa9118b32ef0e27f409e0a6c5741e8b02286d50425c1f6f71e6d6c6ded9dd5bbbbb714784b08623c4ec4d150151f1d3d996cfabe0495f908ab4f7002 + checksum: 10/b04557ee58ad2be5f2d2cbb4b441476436c92bb45ba2e1fc464d686b793392b305ed0bcb8b877429e9b5036bdd46770c161a08384c0720b6682b7cd6ac80e403 languageName: node linkType: hard @@ -4993,6 +6680,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 +6701,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 +6745,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.1 + resolution: "tr46@npm:5.1.1" dependencies: punycode: "npm:^2.3.1" - checksum: 10/29155adb167d048d3c95d181f7cb5ac71948b4e8f3070ec455986e1f34634acae50ae02a3c8d448121c3afe35b76951cd46ed4c128fd80264280ca9502237a3e + checksum: 10/833a0e1044574da5790148fd17866d4ddaea89e022de50279967bcd6b28b4ce0d30d59eb3acf9702b60918975b3bad481400337e3a2e6326cffa5c77b874753d languageName: node linkType: hard @@ -5064,6 +6779,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 +6795,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,30 +6919,64 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.8.2": - version: 5.8.2 - resolution: "typescript@npm:5.8.2" +"typescript-eslint@npm:^8.31.0": + version: 8.31.0 + resolution: "typescript-eslint@npm:8.31.0" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.31.0" + "@typescript-eslint/parser": "npm:8.31.0" + "@typescript-eslint/utils": "npm:8.31.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10/2984699104cacae4f553314c393b8c90bf31c9f327ebade848daa46eec93acf182ae54b87e2e319188eccf0a712d5f2e96bb82fc6aa4d2af24bc89c6919a424f + 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, typescript@npm:^5.8.3": + version: 5.8.3 + resolution: "typescript@npm:5.8.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/65c40944c51b513b0172c6710ee62e951b70af6f75d5a5da745cb7fab132c09ae27ffdf7838996e3ed603bb015dadd099006658046941bd0ba30340cc563ae92 + 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/dbc2168a55d56771f4d581997be52bab5cbc09734fec976cfbaabd787e61fb4c6cf9125fd48c6f98054ce549c77ecedefc7f64252a830dd8e9c3381f61fbeb78 + 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" +"typescript@patch:typescript@npm%3A^5.8.2#optional!builtin, typescript@patch:typescript@npm%3A^5.8.3#optional!builtin": + version: 5.8.3 + resolution: "typescript@patch:typescript@npm%3A5.8.3#optional!builtin::version=5.8.3&hash=8c6c40" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/6ae9b2c4d3254ec2eaee6f26ed997e19c02177a212422993209f81e87092b2bb0a4738085549c5b0164982a5609364c047c72aeb281f6c8d802cd0d1c6f0d353 + checksum: 10/98470634034ec37fd9ea61cc82dcf9a27950d0117a4646146b767d085a2ec14b137aae9642a83d1c62732d7fdcdac19bb6288b0bb468a72f7a06ae4e1d2c72c9 languageName: node linkType: hard "ufo@npm:^1.5.4": - version: 1.5.4 - resolution: "ufo@npm:1.5.4" - checksum: 10/a885ed421e656aea6ca64e9727b8118a9488715460b6f1a0f0427118adfe2f2830fe7c1d5bd9c5c754a332e6807516551cd663ea67ce9ed6a4e3edc739916335 + version: 1.6.1 + resolution: "ufo@npm:1.6.1" + checksum: 10/088a68133b93af183b093e5a8730a40fe7fd675d3dc0656ea7512f180af45c92300c294f14d4d46d4b2b553e3e52d3b13d4856b9885e620e7001edf85531234e languageName: node linkType: hard @@ -5227,10 +6992,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 +7038,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 +7072,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 +7087,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 +7109,24 @@ __metadata: languageName: node linkType: hard +"vite-node@npm:3.1.2": + version: 3.1.2 + resolution: "vite-node@npm:3.1.2" + 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/8af0465810c6f27200dc899792002320995f3d85c432aaa411bf7ff15580c0b93c4a5153d8a93c7af89b496a6e1a7979a7777984e37ebd7311851ea7572eaac7 + languageName: node + linkType: hard + "vite@npm:^5.0.0": - version: 5.4.14 - resolution: "vite@npm:5.4.14" + version: 5.4.18 + resolution: "vite@npm:5.4.18" dependencies: esbuild: "npm:^0.21.3" fsevents: "npm:~2.3.3" @@ -5348,7 +7163,62 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10/ce382f4059eb6c939823b8f62163794752243755d84c71a4b73ad0f7d4d9f4c7a557a6ef4c78e0640f4bcf5ae5ec6b20c7ee4816419af3c81ba275f478b73468 + checksum: 10/491f0d047695a4bb3aafdb30822a3638ac41c23b022c1599bf51beab26a7cffe3ef1617bdf014592da48864079f217da5bf144a6c3238d2d74dea688ba3a549a + languageName: node + linkType: hard + +"vite@npm:^5.0.0 || ^6.0.0": + version: 6.3.3 + resolution: "vite@npm:6.3.3" + dependencies: + esbuild: "npm:^0.25.0" + fdir: "npm:^6.4.4" + fsevents: "npm:~2.3.3" + picomatch: "npm:^4.0.2" + postcss: "npm:^8.5.3" + rollup: "npm:^4.34.9" + tinyglobby: "npm:^0.2.13" + 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/442e518d9da847db80bd19a9792d1d9a106a31d18f74bfd06574776932dd0907f7205b99e34d455ba505a7dd9e57a807354633b90acd46a11db849a15ae26ad4 languageName: node linkType: hard @@ -5402,6 +7272,60 @@ __metadata: languageName: node linkType: hard +"vitest@npm:^3.1.2": + version: 3.1.2 + resolution: "vitest@npm:3.1.2" + dependencies: + "@vitest/expect": "npm:3.1.2" + "@vitest/mocker": "npm:3.1.2" + "@vitest/pretty-format": "npm:^3.1.2" + "@vitest/runner": "npm:3.1.2" + "@vitest/snapshot": "npm:3.1.2" + "@vitest/spy": "npm:3.1.2" + "@vitest/utils": "npm:3.1.2" + chai: "npm:^5.2.0" + debug: "npm:^4.4.0" + expect-type: "npm:^1.2.1" + magic-string: "npm:^0.30.17" + pathe: "npm:^2.0.3" + std-env: "npm:^3.9.0" + tinybench: "npm:^2.9.0" + tinyexec: "npm:^0.3.2" + tinyglobby: "npm:^0.2.13" + tinypool: "npm:^1.0.2" + tinyrainbow: "npm:^2.0.0" + vite: "npm:^5.0.0 || ^6.0.0" + vite-node: "npm:3.1.2" + 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.2 + "@vitest/ui": 3.1.2 + 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/aa5638bf37b2811b01ad8ff0563cdec09202f7a28d9dbcb8eabb2e51cadefc57309cba4f5ff2bac4a72edda44055a844236fc4a09eb72127ef1bd34eb25d0808 + languageName: node + linkType: hard + "w3c-xmlserializer@npm:^5.0.0": version: 5.0.0 resolution: "w3c-xmlserializer@npm:5.0.0" @@ -5442,12 +7366,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 +7469,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 +7517,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 +7563,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 +7591,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 +7614,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