From 7186c99de1ae20551648d9f202bc1342fa5ac084 Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Tue, 27 Aug 2024 14:46:15 -0500 Subject: [PATCH 1/4] Add `configs` to `workspaces` --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 0d8def5126..ff09d19dbc 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "website", "examples/query/react/*", "examples/action-listener/*", + "packages/configs/*", "examples/type-portability/*" ], "devDependencies": { From 9c45afdbaf91876f5bcef031e244b26ebfa44f28 Mon Sep 17 00:00:00 2001 From: Ben Durrant Date: Thu, 8 Feb 2024 21:07:37 +0000 Subject: [PATCH 2/4] use foreach so publish doesn't fail if package doesn't have tests, and add config packages to publish job --- .github/workflows/publish.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 703b68cb09..3ed8da42b7 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -14,6 +14,10 @@ on: - '@rtk-query/codegen-openapi' - '@rtk-query/graphql-request-base-query' - '@reduxjs/rtk-codemods' + - '@reduxjs/eslint-config' + - '@reduxjs/prettier-config' + - '@reduxjs/tsconfig' + - '@reduxjs/vitest-config' jobs: publish: runs-on: ubuntu-latest @@ -28,7 +32,7 @@ jobs: registry-url: 'https://registry.npmjs.org' cache: 'yarn' - run: yarn install --frozen-lockfile - - run: yarn workspace ${{ inputs.package }} test + - run: yarn workspaces foreach --include "${{ inputs.package }}" run test - run: yarn workspace ${{ inputs.package }} exec npm publish --access public --provenance env: NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }} From 8131aaa8e5ceeb4901edf5b34fe494b57652371a Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Tue, 27 Aug 2024 15:39:12 -0500 Subject: [PATCH 3/4] Build `config` packages on `postinstall` --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index ff09d19dbc..298ae37ca2 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,8 @@ "scripts": { "build": "yarn build:packages", "test": "yarn test:packages", + "postinstall": "yarn build-configs", + "build-configs": "yarn workspaces foreach -Atip --include='packages/configs/*' run build", "build:examples": "yarn workspaces foreach -A --include '@reduxjs/*' --include '@examples-query-react/*' --include '@examples-action-listener/*' -vtp run build", "build:docs": "yarn workspace website run build", "build:packages": "yarn workspaces foreach -A --include '@reduxjs/*' --include '@rtk-query/*' --topological-dev run build", From a47e12189e2ee762e64b32a6ab6611e2044169a1 Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Tue, 27 Aug 2024 14:33:13 -0500 Subject: [PATCH 4/4] Initialize all the `config` packages --- .github/workflows/test-configs.yml | 117 + packages/configs/eslint/.gitignore | 31 + packages/configs/eslint/README.md | 133 + packages/configs/eslint/package.json | 102 + packages/configs/eslint/src/disabledRules.ts | 92 + packages/configs/eslint/src/globalIgnores.ts | 67 + packages/configs/eslint/src/globals.ts | 2444 +++++++++++++++++ packages/configs/eslint/src/index.ts | 12 + packages/configs/eslint/src/packageName.ts | 9 + .../configs/eslint/src/shareableConfigs.ts | 248 ++ packages/configs/eslint/src/utils.ts | 93 + packages/configs/eslint/tsconfig.build.json | 9 + packages/configs/eslint/tsconfig.json | 8 + packages/configs/eslint/tsup.config.mts | 54 + packages/configs/prettier/.gitignore | 31 + packages/configs/prettier/README.md | 88 + packages/configs/prettier/package.json | 91 + packages/configs/prettier/src/defaults.ts | 38 + packages/configs/prettier/src/index.ts | 2 + packages/configs/prettier/src/utils.ts | 53 + packages/configs/prettier/tsconfig.build.json | 9 + packages/configs/prettier/tsconfig.json | 8 + packages/configs/prettier/tsup.config.mts | 54 + packages/configs/typescript/.gitignore | 31 + packages/configs/typescript/README.md | 43 + .../configs/typescript/base/tsconfig.json | 29 + .../typescript/bundler/esnext/tsconfig.json | 8 + .../typescript/bundler/preserve/tsconfig.json | 9 + .../typescript/create-react-app/tsconfig.json | 13 + .../configs/typescript/node-10/tsconfig.json | 8 + .../configs/typescript/node-16/tsconfig.json | 9 + .../typescript/node-next/tsconfig.json | 9 + .../node-next/with-js/tsconfig.json | 9 + packages/configs/typescript/package.json | 73 + packages/configs/vitest/.gitignore | 31 + packages/configs/vitest/README.md | 210 ++ packages/configs/vitest/package.json | 100 + packages/configs/vitest/src/defaults.ts | 164 ++ packages/configs/vitest/src/index.ts | 7 + packages/configs/vitest/src/plugins.ts | 15 + .../configs/vitest/src/shareableConfigs.ts | 95 + packages/configs/vitest/src/utils.ts | 145 + packages/configs/vitest/tsconfig.build.json | 9 + packages/configs/vitest/tsconfig.json | 8 + packages/configs/vitest/tsup.config.mts | 61 + yarn.lock | 1949 ++++++++++--- 46 files changed, 6432 insertions(+), 396 deletions(-) create mode 100644 .github/workflows/test-configs.yml create mode 100644 packages/configs/eslint/.gitignore create mode 100644 packages/configs/eslint/README.md create mode 100644 packages/configs/eslint/package.json create mode 100644 packages/configs/eslint/src/disabledRules.ts create mode 100644 packages/configs/eslint/src/globalIgnores.ts create mode 100644 packages/configs/eslint/src/globals.ts create mode 100644 packages/configs/eslint/src/index.ts create mode 100644 packages/configs/eslint/src/packageName.ts create mode 100644 packages/configs/eslint/src/shareableConfigs.ts create mode 100644 packages/configs/eslint/src/utils.ts create mode 100644 packages/configs/eslint/tsconfig.build.json create mode 100644 packages/configs/eslint/tsconfig.json create mode 100644 packages/configs/eslint/tsup.config.mts create mode 100644 packages/configs/prettier/.gitignore create mode 100644 packages/configs/prettier/README.md create mode 100644 packages/configs/prettier/package.json create mode 100644 packages/configs/prettier/src/defaults.ts create mode 100644 packages/configs/prettier/src/index.ts create mode 100644 packages/configs/prettier/src/utils.ts create mode 100644 packages/configs/prettier/tsconfig.build.json create mode 100644 packages/configs/prettier/tsconfig.json create mode 100644 packages/configs/prettier/tsup.config.mts create mode 100644 packages/configs/typescript/.gitignore create mode 100644 packages/configs/typescript/README.md create mode 100644 packages/configs/typescript/base/tsconfig.json create mode 100644 packages/configs/typescript/bundler/esnext/tsconfig.json create mode 100644 packages/configs/typescript/bundler/preserve/tsconfig.json create mode 100644 packages/configs/typescript/create-react-app/tsconfig.json create mode 100644 packages/configs/typescript/node-10/tsconfig.json create mode 100644 packages/configs/typescript/node-16/tsconfig.json create mode 100644 packages/configs/typescript/node-next/tsconfig.json create mode 100644 packages/configs/typescript/node-next/with-js/tsconfig.json create mode 100644 packages/configs/typescript/package.json create mode 100644 packages/configs/vitest/.gitignore create mode 100644 packages/configs/vitest/README.md create mode 100644 packages/configs/vitest/package.json create mode 100644 packages/configs/vitest/src/defaults.ts create mode 100644 packages/configs/vitest/src/index.ts create mode 100644 packages/configs/vitest/src/plugins.ts create mode 100644 packages/configs/vitest/src/shareableConfigs.ts create mode 100644 packages/configs/vitest/src/utils.ts create mode 100644 packages/configs/vitest/tsconfig.build.json create mode 100644 packages/configs/vitest/tsconfig.json create mode 100644 packages/configs/vitest/tsup.config.mts diff --git a/.github/workflows/test-configs.yml b/.github/workflows/test-configs.yml new file mode 100644 index 0000000000..baa9908dac --- /dev/null +++ b/.github/workflows/test-configs.yml @@ -0,0 +1,117 @@ +name: Test Configs + +on: [push, pull_request, workflow_dispatch] + +jobs: + test-types: + name: Test types with TypeScript ${{ matrix.ts }} on ${{ matrix.os }} and Node.js ${{ matrix.node }} + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + + matrix: + package: + [ + '@reduxjs/eslint-config', + '@reduxjs/prettier-config', + '@reduxjs/vitest-config', + ] + node: ['22.x'] + os: [ubuntu-latest] + ts: ['5.3', '5.4', '5.5', '5.6', '5.7', '5.8'] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Use node ${{ matrix.node }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node }} + cache: 'yarn' + + - name: Install dependencies + run: yarn install + + - name: Install TypeScript ${{ matrix.ts }} + run: yarn up typescript@${{ matrix.ts }} + + - name: Run type tests + run: yarn workspace ${{ matrix.package }} run test-types + + are-the-types-wrong: + name: Check if the type definitions for ${{ matrix.package }} are correct with Node.js ${{ matrix.node }} on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + + matrix: + node: ['22.x'] + package: + [ + '@reduxjs/eslint-config', + '@reduxjs/prettier-config', + '@reduxjs/tsconfig', + '@reduxjs/vitest-config', + ] + os: [ubuntu-latest] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Use node ${{ matrix.node }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node }} + cache: 'yarn' + + - name: Install dependencies + run: yarn install + + - name: Run are-the-types-wrong for ${{ matrix.package }} with Node.js ${{ matrix.node }} on ${{ matrix.os }} + run: yarn workspace ${{ matrix.package }} run check-exports --format table + + - name: Did we fail? + if: failure() + run: ls -R + + publint: + name: Check if the package.json for ${{ matrix.package }} is correct with Node.js ${{ matrix.node }} on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + + matrix: + node: ['22.x'] + package: + [ + '@reduxjs/eslint-config', + '@reduxjs/prettier-config', + '@reduxjs/tsconfig', + '@reduxjs/vitest-config', + ] + os: [ubuntu-latest] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Use node ${{ matrix.node }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node }} + cache: 'yarn' + + - name: Install dependencies + run: yarn install + + - name: Run publint for ${{ matrix.package }} with Node.js ${{ matrix.node }} on ${{ matrix.os }} + run: yarn workspace ${{ matrix.package }} run check-package-json + + - name: Did we fail? + if: failure() + run: ls -R diff --git a/packages/configs/eslint/.gitignore b/packages/configs/eslint/.gitignore new file mode 100644 index 0000000000..707d144012 --- /dev/null +++ b/packages/configs/eslint/.gitignore @@ -0,0 +1,31 @@ +.DS_Store +*.log +node_modules/ +dist/ +build/ +lib/ +.yalc/ +yalc.lock +.idea/ +.vscode/ +temp/ +.temp/ +.tmp/ +.tmp-projections +.rts2* +coverage/ +.cache/ +.yarnrc +.yarn/ +!.yarn/patches/ +!.yarn/releases/ +!.yarn/plugins/ +!.yarn/sdks/ +!.yarn/versions/ +.pnp.* +*.tgz +tsconfig*.vitest-temp.json +.vitest-reports/ +.eslintcache +tsconfig*.tsbuildinfo +.docusaurus/ diff --git a/packages/configs/eslint/README.md b/packages/configs/eslint/README.md new file mode 100644 index 0000000000..b75aa1f976 --- /dev/null +++ b/packages/configs/eslint/README.md @@ -0,0 +1,133 @@ +# ESLint Config + +ESLint configuration tailored for Redux projects. + +## Installation + +#### NPM + +```bash +npm install --save-dev @reduxjs/eslint-config +``` + +#### Yarn + +```bash +yarn add --dev @reduxjs/eslint-config +``` + +#### PNPM + +```bash +pnpm add --save-dev @reduxjs/eslint-config +``` + +#### Bun + +```bash +bun add --dev @reduxjs/eslint-config +``` + +## Usage + +**ECMAScript Modules (ESM) usage inside a file like `eslint.config.mts` or `eslint.config.mjs`**: + +```ts +import { flatESLintConfig } from '@reduxjs/eslint-config' + +export default flatESLintConfig +``` + +**CommonJS (CJS) usage inside a file like `eslint.config.cts` or `eslint.config.cjs` (using `require`)**: + +```ts +const { flatESLintConfig } = require('@reduxjs/eslint-config') + +module.exports = flatESLintConfig +``` + +**CommonJS (CJS) usage inside a file like `eslint.config.cjs` or `eslint.config.cts` (using dynamic import)**: + +```ts +module.exports = (async () => + (await import('@reduxjs/eslint-config')).flatESLintConfig)() +``` + +**CommonJS (CJS) usage inside a file like `eslint.config.cts` (using import and export assignment)**: + +```ts +import eslintConfigModule = require('@reduxjs/eslint-config') +import flatESLintConfig = eslintConfigModule.flatESLintConfig + +export = flatESLintConfig +``` + +Navigating ESLint's configuration options can occasionally feel overwhelming, especially when trying to take advantage of TypeScript's strong typing for better IntelliSense support. To alleviate this complexity and enhance your development experience, we also provide a function called `createESLintConfig` that you can import and use to create your own ESLint configuration. This function already includes the default `flatESLintConfig` and you can pass in an array of flat configs as additional overrides. + +**ECMAScript Modules (ESM) usage inside a file like `eslint.config.mts` or `eslint.config.mjs`**: + +```ts +import { createESLintConfig } from '@reduxjs/eslint-config' + +export default createESLintConfig([ + { + rules: { + 'no-console': [0], + }, + }, + { + // ...Other additional overrides + }, +]) +``` + +**CommonJS (CJS) usage inside a file like `eslint.config.cts` or `eslint.config.cjs` (using `require`)**: + +```ts +const { createESLintConfig } = require('@reduxjs/eslint-config') + +module.exports = createESLintConfig([ + { + rules: { + 'no-console': [0], + }, + }, + { + // ...Other additional overrides + }, +]) +``` + +**CommonJS (CJS) usage inside a file like `eslint.config.cts` or `eslint.config.cjs` (using dynamic import)**: + +```ts +module.exports = (async () => + (await import('@reduxjs/eslint-config')).createESLintConfig([ + { + rules: { + 'no-console': [0], + }, + }, + { + // ...Other additional overrides + }, + ]))() +``` + +**CommonJS (CJS) usage inside a file like `eslint.config.cts` (using import and export assignment)**: + +```ts +import eslintConfigModule = require('@reduxjs/eslint-config') +import createESLintConfig = eslintConfigModule.createESLintConfig + +export = createESLintConfig([ + { + rules: { + 'no-console': [0], + }, + }, + { + // ...Other additional overrides + }, +]) +``` diff --git a/packages/configs/eslint/package.json b/packages/configs/eslint/package.json new file mode 100644 index 0000000000..6771490df9 --- /dev/null +++ b/packages/configs/eslint/package.json @@ -0,0 +1,102 @@ +{ + "name": "@reduxjs/eslint-config", + "version": "0.0.1", + "description": "ESLint configuration for Redux projects", + "keywords": [ + "eslint", + "config", + "eslint-config", + "reduxjs", + "redux-toolkit", + "configuration" + ], + "homepage": "https://github.com/reduxjs/redux-toolkit/tree/master/packages/configs/eslint#readme", + "bugs": { + "url": "https://github.com/reduxjs/redux-toolkit/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/reduxjs/redux-toolkit.git", + "directory": "packages/configs/eslint" + }, + "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" + ], + "scripts": { + "build": "tsup --config=$INIT_CWD/tsup.config.mts", + "check-exports": "attw --pack $INIT_CWD", + "check-package-json": "publint --strict $INIT_CWD", + "clean": "rimraf $INIT_CWD/dist/", + "format-check": "yarn run -T format-check", + "format": "yarn run -T format", + "lint-fix": "yarn run -T lint-fix", + "lint": "yarn run -T lint", + "prepack": "yarn clean && yarn build", + "test-types": "tsc -p $INIT_CWD/tsconfig.json" + }, + "dependencies": { + "@eslint/js": "^9.26.0", + "@typescript-eslint/utils": "^8.32.0", + "eslint-config-prettier": "^10.1.3", + "globals": "^16.1.0", + "typescript-eslint": "^8.32.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.18.0", + "@reduxjs/tsconfig": "workspace:^", + "@types/node": "^22.15.15", + "eslint": "^9.26.0", + "publint": "^0.3.12", + "rimraf": "^6.0.1", + "tsup": "^8.4.0", + "typescript": "^5.8.3" + }, + "peerDependencies": { + "eslint": ">=8.56.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "typescript": { + "optional": true + } + }, + "publishConfig": { + "access": "public", + "provenance": true + } +} diff --git a/packages/configs/eslint/src/disabledRules.ts b/packages/configs/eslint/src/disabledRules.ts new file mode 100644 index 0000000000..9e2c8dc86e --- /dev/null +++ b/packages/configs/eslint/src/disabledRules.ts @@ -0,0 +1,92 @@ +import type { Linter } from 'eslint' + +/** + * An object comprised of ESLint rules to disable. + * These rules are disabled in {@linkcode flatESLintConfig}. + * + * @since 0.0.1 + * @public + */ +export const disabledRules = { + '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, + }, + ], +} as const satisfies Linter.RulesRecord satisfies { + readonly 'no-undef': [ + 0, + { + readonly typeof: false + }, + ] + readonly '@typescript-eslint/no-unused-vars': [ + 0, + { + readonly args: 'all' + readonly argsIgnorePattern: '^_' + readonly caughtErrors: 'all' + readonly caughtErrorsIgnorePattern: '^_' + readonly destructuredArrayIgnorePattern: '^_' + readonly varsIgnorePattern: '^_' + readonly ignoreRestSiblings: true + }, + ] + readonly '@typescript-eslint/ban-ts-comment': [ + 0, + { + readonly 'ts-expect-error': 'allow-with-description' + readonly 'ts-ignore': true + readonly 'ts-nocheck': true + readonly 'ts-check': false + readonly minimumDescriptionLength: 3 + }, + ] +} as { + readonly 'no-undef': [ + 0, + { + readonly typeof: false + }, + ] + readonly '@typescript-eslint/no-unused-vars': [ + 0, + { + readonly args: 'all' + readonly argsIgnorePattern: '^_' + readonly caughtErrors: 'all' + readonly caughtErrorsIgnorePattern: '^_' + readonly destructuredArrayIgnorePattern: '^_' + readonly varsIgnorePattern: '^_' + readonly ignoreRestSiblings: true + }, + ] + readonly '@typescript-eslint/ban-ts-comment': [ + 0, + { + readonly 'ts-expect-error': 'allow-with-description' + readonly 'ts-ignore': true + readonly 'ts-nocheck': true + readonly 'ts-check': false + readonly minimumDescriptionLength: 3 + }, + ] +} diff --git a/packages/configs/eslint/src/globalIgnores.ts b/packages/configs/eslint/src/globalIgnores.ts new file mode 100644 index 0000000000..d4d7e45870 --- /dev/null +++ b/packages/configs/eslint/src/globalIgnores.ts @@ -0,0 +1,67 @@ +import type { TSESLint } from '@typescript-eslint/utils' +import type { Linter } from 'eslint' +import { packageName } from './packageName.js' + +/** + * An object representing + * {@link https://eslint.org/docs/latest/use/configure/ignore#ignoring-files | **global ignore patterns**} + * for ESLint configuration. + * + * @since 0.0.1 + * @public + */ +export const globalIgnores = { + name: `${packageName}/global-ignores`, + ignores: [ + '**/dist/', + '**/build/', + '**/lib/', + '**/coverage/', + '**/__snapshots__/', + '**/temp/', + '**/.temp/', + '**/.tmp/', + '**/.yalc/', + '**/.yarn/', + '**/.docusaurus/', + '**/.next/', + '**/.expo/', + '**/*.snap', + ], +} as const satisfies TSESLint.FlatConfig.Config satisfies Linter.Config satisfies { + readonly name: '@reduxjs/eslint-config/global-ignores' + readonly ignores: [ + '**/dist/', + '**/build/', + '**/lib/', + '**/coverage/', + '**/__snapshots__/', + '**/temp/', + '**/.temp/', + '**/.tmp/', + '**/.yalc/', + '**/.yarn/', + '**/.docusaurus/', + '**/.next/', + '**/.expo/', + '**/*.snap', + ] +} as { + readonly name: '@reduxjs/eslint-config/global-ignores' + readonly ignores: [ + '**/dist/', + '**/build/', + '**/lib/', + '**/coverage/', + '**/__snapshots__/', + '**/temp/', + '**/.temp/', + '**/.tmp/', + '**/.yalc/', + '**/.yarn/', + '**/.docusaurus/', + '**/.next/', + '**/.expo/', + '**/*.snap', + ] +} diff --git a/packages/configs/eslint/src/globals.ts b/packages/configs/eslint/src/globals.ts new file mode 100644 index 0000000000..bb82b0faab --- /dev/null +++ b/packages/configs/eslint/src/globals.ts @@ -0,0 +1,2444 @@ +import type { Linter } from 'eslint' +import globalIdentifiers from 'globals' + +const { browser, node, nodeBuiltin, vitest } = globalIdentifiers + +/** + * An object representing the + * {@link https://vitest.dev/config/#globals | globals} provided by + * {@link https://vitest.dev | **Vitest**} for use in testing. + * + * @since 0.0.1 + * @public + */ +export const vitestGlobals = { + suite: 'writable', + test: 'writable', + chai: 'writable', + describe: 'writable', + it: 'writable', + expectTypeOf: 'writable', + assertType: 'writable', + expect: 'writable', + assert: 'writable', + vitest: 'writable', + vi: 'writable', + beforeAll: 'writable', + afterAll: 'writable', + beforeEach: 'writable', + afterEach: 'writable', + onTestFailed: 'writable', + onTestFinished: 'writable', +} as const satisfies Linter.Globals satisfies { + readonly suite: 'writable' + readonly test: 'writable' + readonly chai: 'writable' + readonly describe: 'writable' + readonly it: 'writable' + readonly expectTypeOf: 'writable' + readonly assertType: 'writable' + readonly expect: 'writable' + readonly assert: 'writable' + readonly vitest: 'writable' + readonly vi: 'writable' + readonly beforeAll: 'writable' + readonly afterAll: 'writable' + readonly beforeEach: 'writable' + readonly afterEach: 'writable' + readonly onTestFailed: 'writable' + readonly onTestFinished: 'writable' +} as { + readonly suite: 'writable' + readonly test: 'writable' + readonly chai: 'writable' + readonly describe: 'writable' + readonly it: 'writable' + readonly expectTypeOf: 'writable' + readonly assertType: 'writable' + readonly expect: 'writable' + readonly assert: 'writable' + readonly vitest: 'writable' + readonly vi: 'writable' + readonly beforeAll: 'writable' + readonly afterAll: 'writable' + readonly beforeEach: 'writable' + readonly afterEach: 'writable' + readonly onTestFailed: 'writable' + readonly onTestFinished: 'writable' +} + +/** + * An object that specifies which global + * variables are available during linting. + * + * @since 0.0.1 + * @public + */ +export const globals = + /* @__PURE__ */ + Object.assign( + { + ...browser, + ...node, + ...nodeBuiltin, + } as const satisfies Linter.Globals, + + { + ...vitest, + ...vitestGlobals, + } as const satisfies Linter.Globals, + ) satisfies Linter.Globals satisfies { + readonly AbortController: false + readonly AbortSignal: false + readonly AsyncDisposableStack: false + readonly atob: false + readonly Blob: false + readonly BroadcastChannel: false + readonly btoa: false + readonly Buffer: false + readonly ByteLengthQueuingStrategy: false + readonly clearImmediate: false + readonly clearInterval: false + readonly clearTimeout: false + readonly CloseEvent: false + readonly CompressionStream: false + readonly console: false + readonly CountQueuingStrategy: false + readonly crypto: false + readonly Crypto: false + readonly CryptoKey: false + readonly CustomEvent: false + readonly DecompressionStream: false + readonly DisposableStack: false + readonly DOMException: false + readonly Event: false + readonly EventTarget: false + readonly fetch: false + readonly File: false + readonly FormData: false + readonly global: false + readonly Headers: false + readonly MessageChannel: false + readonly MessageEvent: false + readonly MessagePort: false + readonly navigator: false + readonly Navigator: false + readonly performance: false + readonly Performance: false + readonly PerformanceEntry: false + readonly PerformanceMark: false + readonly PerformanceMeasure: false + readonly PerformanceObserver: false + readonly PerformanceObserverEntryList: false + readonly PerformanceResourceTiming: false + readonly process: false + readonly queueMicrotask: false + readonly ReadableByteStreamController: false + readonly ReadableStream: false + readonly ReadableStreamBYOBReader: false + readonly ReadableStreamBYOBRequest: false + readonly ReadableStreamDefaultController: false + readonly ReadableStreamDefaultReader: false + readonly Request: false + readonly Response: false + readonly setImmediate: false + readonly setInterval: false + readonly setTimeout: false + readonly structuredClone: false + readonly SubtleCrypto: false + readonly SuppressedError: false + readonly TextDecoder: false + readonly TextDecoderStream: false + readonly TextEncoder: false + readonly TextEncoderStream: false + readonly TransformStream: false + readonly TransformStreamDefaultController: false + readonly URL: false + readonly URLPattern: false + readonly URLSearchParams: false + readonly WebAssembly: false + readonly WebSocket: false + readonly WritableStream: false + readonly WritableStreamDefaultController: false + readonly WritableStreamDefaultWriter: false + readonly __dirname: false + readonly __filename: false + readonly exports: true + readonly module: false + readonly require: false + readonly AbsoluteOrientationSensor: false + readonly AbstractRange: false + readonly Accelerometer: false + readonly addEventListener: false + readonly ai: false + readonly AI: false + readonly AICreateMonitor: false + readonly AITextSession: false + readonly alert: false + readonly AnalyserNode: false + readonly Animation: false + readonly AnimationEffect: false + readonly AnimationEvent: false + readonly AnimationPlaybackEvent: false + readonly AnimationTimeline: false + readonly Attr: false + readonly Audio: false + readonly AudioBuffer: false + readonly AudioBufferSourceNode: false + readonly AudioContext: false + readonly AudioData: false + readonly AudioDecoder: false + readonly AudioDestinationNode: false + readonly AudioEncoder: false + readonly AudioListener: false + readonly AudioNode: false + readonly AudioParam: false + readonly AudioParamMap: false + readonly AudioProcessingEvent: false + readonly AudioScheduledSourceNode: false + readonly AudioSinkInfo: false + readonly AudioWorklet: false + readonly AudioWorkletGlobalScope: false + readonly AudioWorkletNode: false + readonly AudioWorkletProcessor: false + readonly AuthenticatorAssertionResponse: false + readonly AuthenticatorAttestationResponse: false + readonly AuthenticatorResponse: false + readonly BackgroundFetchManager: false + readonly BackgroundFetchRecord: false + readonly BackgroundFetchRegistration: false + readonly BarcodeDetector: false + readonly BarProp: false + readonly BaseAudioContext: false + readonly BatteryManager: false + readonly BeforeUnloadEvent: false + readonly BiquadFilterNode: false + readonly BlobEvent: false + readonly Bluetooth: false + readonly BluetoothCharacteristicProperties: false + readonly BluetoothDevice: false + readonly BluetoothRemoteGATTCharacteristic: false + readonly BluetoothRemoteGATTDescriptor: false + readonly BluetoothRemoteGATTServer: false + readonly BluetoothRemoteGATTService: false + readonly BluetoothUUID: false + readonly blur: false + readonly BrowserCaptureMediaStreamTrack: false + readonly Cache: false + readonly caches: false + readonly CacheStorage: false + readonly cancelAnimationFrame: false + readonly cancelIdleCallback: false + readonly CanvasCaptureMediaStream: false + readonly CanvasCaptureMediaStreamTrack: false + readonly CanvasGradient: false + readonly CanvasPattern: false + readonly CanvasRenderingContext2D: false + readonly CaptureController: false + readonly CaretPosition: false + readonly CDATASection: false + readonly ChannelMergerNode: false + readonly ChannelSplitterNode: false + readonly ChapterInformation: false + readonly CharacterBoundsUpdateEvent: false + readonly CharacterData: false + readonly clientInformation: false + readonly Clipboard: false + readonly ClipboardEvent: false + readonly ClipboardItem: false + readonly close: false + readonly closed: false + readonly CloseWatcher: false + readonly CommandEvent: false + readonly Comment: false + readonly CompositionEvent: false + readonly confirm: false + readonly ConstantSourceNode: false + readonly ContentVisibilityAutoStateChangeEvent: false + readonly ConvolverNode: false + readonly CookieChangeEvent: false + readonly CookieDeprecationLabel: false + readonly cookieStore: false + readonly CookieStore: false + readonly CookieStoreManager: false + readonly createImageBitmap: false + readonly Credential: false + readonly credentialless: false + readonly CredentialsContainer: false + readonly CropTarget: false + readonly crossOriginIsolated: false + readonly CSPViolationReportBody: false + readonly CSS: false + readonly CSSAnimation: false + readonly CSSConditionRule: false + readonly CSSContainerRule: false + readonly CSSCounterStyleRule: false + readonly CSSFontFaceRule: false + readonly CSSFontFeatureValuesRule: false + readonly CSSFontPaletteValuesRule: false + readonly CSSGroupingRule: false + readonly CSSImageValue: false + readonly CSSImportRule: false + readonly CSSKeyframeRule: false + readonly CSSKeyframesRule: false + readonly CSSKeywordValue: false + readonly CSSLayerBlockRule: false + readonly CSSLayerStatementRule: false + readonly CSSMarginRule: false + readonly CSSMathClamp: false + readonly CSSMathInvert: false + readonly CSSMathMax: false + readonly CSSMathMin: false + readonly CSSMathNegate: false + readonly CSSMathProduct: false + readonly CSSMathSum: false + readonly CSSMathValue: false + readonly CSSMatrixComponent: false + readonly CSSMediaRule: false + readonly CSSNamespaceRule: false + readonly CSSNestedDeclarations: false + readonly CSSNumericArray: false + readonly CSSNumericValue: false + readonly CSSPageDescriptors: false + readonly CSSPageRule: false + readonly CSSPerspective: false + readonly CSSPositionTryDescriptors: false + readonly CSSPositionTryRule: false + readonly CSSPositionValue: false + readonly CSSPropertyRule: false + readonly CSSRotate: false + readonly CSSRule: false + readonly CSSRuleList: false + readonly CSSScale: false + readonly CSSScopeRule: false + readonly CSSSkew: false + readonly CSSSkewX: false + readonly CSSSkewY: false + readonly CSSStartingStyleRule: false + readonly CSSStyleDeclaration: false + readonly CSSStyleRule: false + readonly CSSStyleSheet: false + readonly CSSStyleValue: false + readonly CSSSupportsRule: false + readonly CSSTransformComponent: false + readonly CSSTransformValue: false + readonly CSSTransition: false + readonly CSSTranslate: false + readonly CSSUnitValue: false + readonly CSSUnparsedValue: false + readonly CSSVariableReferenceValue: false + readonly CSSViewTransitionRule: false + readonly currentFrame: false + readonly currentTime: false + readonly CustomElementRegistry: false + readonly customElements: false + readonly CustomStateSet: false + readonly DataTransfer: false + readonly DataTransferItem: false + readonly DataTransferItemList: false + readonly DelayNode: false + readonly DelegatedInkTrailPresenter: false + readonly DeviceMotionEvent: false + readonly DeviceMotionEventAcceleration: false + readonly DeviceMotionEventRotationRate: false + readonly DeviceOrientationEvent: false + readonly devicePixelRatio: false + readonly DevicePosture: false + readonly dispatchEvent: false + readonly document: false + readonly Document: false + readonly DocumentFragment: false + readonly documentPictureInPicture: false + readonly DocumentPictureInPicture: false + readonly DocumentPictureInPictureEvent: false + readonly DocumentTimeline: false + readonly DocumentType: false + readonly DOMError: false + readonly DOMImplementation: false + readonly DOMMatrix: false + readonly DOMMatrixReadOnly: false + readonly DOMParser: false + readonly DOMPoint: false + readonly DOMPointReadOnly: false + readonly DOMQuad: false + readonly DOMRect: false + readonly DOMRectList: false + readonly DOMRectReadOnly: false + readonly DOMStringList: false + readonly DOMStringMap: false + readonly DOMTokenList: false + readonly DragEvent: false + readonly DynamicsCompressorNode: false + readonly EditContext: false + readonly Element: false + readonly ElementInternals: false + readonly EncodedAudioChunk: false + readonly EncodedVideoChunk: false + readonly ErrorEvent: false + readonly event: false + readonly EventCounts: false + readonly EventSource: false + readonly external: false + readonly External: false + readonly EyeDropper: false + readonly FeaturePolicy: false + readonly FederatedCredential: false + readonly fence: false + readonly Fence: false + readonly FencedFrameConfig: false + readonly fetchLater: false + readonly FetchLaterResult: false + readonly FileList: false + readonly FileReader: false + readonly FileSystem: false + readonly FileSystemDirectoryEntry: false + readonly FileSystemDirectoryHandle: false + readonly FileSystemDirectoryReader: false + readonly FileSystemEntry: false + readonly FileSystemFileEntry: false + readonly FileSystemFileHandle: false + readonly FileSystemHandle: false + readonly FileSystemObserver: false + readonly FileSystemWritableFileStream: false + readonly find: false + readonly focus: false + readonly FocusEvent: false + readonly FontData: false + readonly FontFace: false + readonly FontFaceSet: false + readonly FontFaceSetLoadEvent: false + readonly FormDataEvent: false + readonly FragmentDirective: false + readonly frameElement: false + readonly frames: false + readonly GainNode: false + readonly Gamepad: false + readonly GamepadAxisMoveEvent: false + readonly GamepadButton: false + readonly GamepadButtonEvent: false + readonly GamepadEvent: false + readonly GamepadHapticActuator: false + readonly GamepadPose: false + readonly Geolocation: false + readonly GeolocationCoordinates: false + readonly GeolocationPosition: false + readonly GeolocationPositionError: false + readonly getComputedStyle: false + readonly getScreenDetails: false + readonly getSelection: false + readonly GPU: false + readonly GPUAdapter: false + readonly GPUAdapterInfo: false + readonly GPUBindGroup: false + readonly GPUBindGroupLayout: false + readonly GPUBuffer: false + readonly GPUBufferUsage: false + readonly GPUCanvasContext: false + readonly GPUColorWrite: false + readonly GPUCommandBuffer: false + readonly GPUCommandEncoder: false + readonly GPUCompilationInfo: false + readonly GPUCompilationMessage: false + readonly GPUComputePassEncoder: false + readonly GPUComputePipeline: false + readonly GPUDevice: false + readonly GPUDeviceLostInfo: false + readonly GPUError: false + readonly GPUExternalTexture: false + readonly GPUInternalError: false + readonly GPUMapMode: false + readonly GPUOutOfMemoryError: false + readonly GPUPipelineError: false + readonly GPUPipelineLayout: false + readonly GPUQuerySet: false + readonly GPUQueue: false + readonly GPURenderBundle: false + readonly GPURenderBundleEncoder: false + readonly GPURenderPassEncoder: false + readonly GPURenderPipeline: false + readonly GPUSampler: false + readonly GPUShaderModule: false + readonly GPUShaderStage: false + readonly GPUSupportedFeatures: false + readonly GPUSupportedLimits: false + readonly GPUTexture: false + readonly GPUTextureUsage: false + readonly GPUTextureView: false + readonly GPUUncapturedErrorEvent: false + readonly GPUValidationError: false + readonly GravitySensor: false + readonly Gyroscope: false + readonly HashChangeEvent: false + readonly HID: false + readonly HIDConnectionEvent: false + readonly HIDDevice: false + readonly HIDInputReportEvent: false + readonly Highlight: false + readonly HighlightRegistry: false + readonly history: false + readonly History: false + readonly HTMLAllCollection: false + readonly HTMLAnchorElement: false + readonly HTMLAreaElement: false + readonly HTMLAudioElement: false + readonly HTMLBaseElement: false + readonly HTMLBodyElement: false + readonly HTMLBRElement: false + readonly HTMLButtonElement: false + readonly HTMLCanvasElement: false + readonly HTMLCollection: false + readonly HTMLDataElement: false + readonly HTMLDataListElement: false + readonly HTMLDetailsElement: false + readonly HTMLDialogElement: false + readonly HTMLDirectoryElement: false + readonly HTMLDivElement: false + readonly HTMLDListElement: false + readonly HTMLDocument: false + readonly HTMLElement: false + readonly HTMLEmbedElement: false + readonly HTMLFencedFrameElement: false + readonly HTMLFieldSetElement: false + readonly HTMLFontElement: false + readonly HTMLFormControlsCollection: false + readonly HTMLFormElement: false + readonly HTMLFrameElement: false + readonly HTMLFrameSetElement: false + readonly HTMLHeadElement: false + readonly HTMLHeadingElement: false + readonly HTMLHRElement: false + readonly HTMLHtmlElement: false + readonly HTMLIFrameElement: false + readonly HTMLImageElement: false + readonly HTMLInputElement: false + readonly HTMLLabelElement: false + readonly HTMLLegendElement: false + readonly HTMLLIElement: false + readonly HTMLLinkElement: false + readonly HTMLMapElement: false + readonly HTMLMarqueeElement: false + readonly HTMLMediaElement: false + readonly HTMLMenuElement: false + readonly HTMLMetaElement: false + readonly HTMLMeterElement: false + readonly HTMLModElement: false + readonly HTMLObjectElement: false + readonly HTMLOListElement: false + readonly HTMLOptGroupElement: false + readonly HTMLOptionElement: false + readonly HTMLOptionsCollection: false + readonly HTMLOutputElement: false + readonly HTMLParagraphElement: false + readonly HTMLParamElement: false + readonly HTMLPictureElement: false + readonly HTMLPreElement: false + readonly HTMLProgressElement: false + readonly HTMLQuoteElement: false + readonly HTMLScriptElement: false + readonly HTMLSelectedContentElement: false + readonly HTMLSelectElement: false + readonly HTMLSlotElement: false + readonly HTMLSourceElement: false + readonly HTMLSpanElement: false + readonly HTMLStyleElement: false + readonly HTMLTableCaptionElement: false + readonly HTMLTableCellElement: false + readonly HTMLTableColElement: false + readonly HTMLTableElement: false + readonly HTMLTableRowElement: false + readonly HTMLTableSectionElement: false + readonly HTMLTemplateElement: false + readonly HTMLTextAreaElement: false + readonly HTMLTimeElement: false + readonly HTMLTitleElement: false + readonly HTMLTrackElement: false + readonly HTMLUListElement: false + readonly HTMLUnknownElement: false + readonly HTMLVideoElement: false + readonly IDBCursor: false + readonly IDBCursorWithValue: false + readonly IDBDatabase: false + readonly IDBFactory: false + readonly IDBIndex: false + readonly IDBKeyRange: false + readonly IDBObjectStore: false + readonly IDBOpenDBRequest: false + readonly IDBRequest: false + readonly IDBTransaction: false + readonly IDBVersionChangeEvent: false + readonly IdentityCredential: false + readonly IdentityCredentialError: false + readonly IdentityProvider: false + readonly IdleDeadline: false + readonly IdleDetector: false + readonly IIRFilterNode: false + readonly Image: false + readonly ImageBitmap: false + readonly ImageBitmapRenderingContext: false + readonly ImageCapture: false + readonly ImageData: false + readonly ImageDecoder: false + readonly ImageTrack: false + readonly ImageTrackList: false + readonly indexedDB: false + readonly Ink: false + readonly innerHeight: false + readonly innerWidth: false + readonly InputDeviceCapabilities: false + readonly InputDeviceInfo: false + readonly InputEvent: false + readonly IntersectionObserver: false + readonly IntersectionObserverEntry: false + readonly isSecureContext: false + readonly Keyboard: false + readonly KeyboardEvent: false + readonly KeyboardLayoutMap: false + readonly KeyframeEffect: false + readonly LanguageDetector: false + readonly LargestContentfulPaint: false + readonly LaunchParams: false + readonly launchQueue: false + readonly LaunchQueue: false + readonly LayoutShift: false + readonly LayoutShiftAttribution: false + readonly length: false + readonly LinearAccelerationSensor: false + readonly localStorage: false + readonly location: true + readonly Location: false + readonly locationbar: false + readonly Lock: false + readonly LockManager: false + readonly matchMedia: false + readonly MathMLElement: false + readonly MediaCapabilities: false + readonly MediaCapabilitiesInfo: false + readonly MediaDeviceInfo: false + readonly MediaDevices: false + readonly MediaElementAudioSourceNode: false + readonly MediaEncryptedEvent: false + readonly MediaError: false + readonly MediaKeyError: false + readonly MediaKeyMessageEvent: false + readonly MediaKeys: false + readonly MediaKeySession: false + readonly MediaKeyStatusMap: false + readonly MediaKeySystemAccess: false + readonly MediaList: false + readonly MediaMetadata: false + readonly MediaQueryList: false + readonly MediaQueryListEvent: false + readonly MediaRecorder: false + readonly MediaRecorderErrorEvent: false + readonly MediaSession: false + readonly MediaSource: false + readonly MediaSourceHandle: false + readonly MediaStream: false + readonly MediaStreamAudioDestinationNode: false + readonly MediaStreamAudioSourceNode: false + readonly MediaStreamEvent: false + readonly MediaStreamTrack: false + readonly MediaStreamTrackAudioSourceNode: false + readonly MediaStreamTrackAudioStats: false + readonly MediaStreamTrackEvent: false + readonly MediaStreamTrackGenerator: false + readonly MediaStreamTrackProcessor: false + readonly MediaStreamTrackVideoStats: false + readonly menubar: false + readonly MIDIAccess: false + readonly MIDIConnectionEvent: false + readonly MIDIInput: false + readonly MIDIInputMap: false + readonly MIDIMessageEvent: false + readonly MIDIOutput: false + readonly MIDIOutputMap: false + readonly MIDIPort: false + readonly MimeType: false + readonly MimeTypeArray: false + readonly model: false + readonly ModelGenericSession: false + readonly ModelManager: false + readonly MouseEvent: false + readonly moveBy: false + readonly moveTo: false + readonly MutationEvent: false + readonly MutationObserver: false + readonly MutationRecord: false + readonly name: false + readonly NamedNodeMap: false + readonly NavigateEvent: false + readonly navigation: false + readonly Navigation: false + readonly NavigationActivation: false + readonly NavigationCurrentEntryChangeEvent: false + readonly NavigationDestination: false + readonly NavigationHistoryEntry: false + readonly NavigationPreloadManager: false + readonly NavigationTransition: false + readonly NavigatorLogin: false + readonly NavigatorManagedData: false + readonly NavigatorUAData: false + readonly NetworkInformation: false + readonly Node: false + readonly NodeFilter: false + readonly NodeIterator: false + readonly NodeList: false + readonly Notification: false + readonly NotifyPaintEvent: false + readonly NotRestoredReasonDetails: false + readonly NotRestoredReasons: false + readonly Observable: false + readonly OfflineAudioCompletionEvent: false + readonly OfflineAudioContext: false + readonly offscreenBuffering: false + readonly OffscreenCanvas: false + readonly OffscreenCanvasRenderingContext2D: false + readonly onabort: true + readonly onafterprint: true + readonly onanimationcancel: true + readonly onanimationend: true + readonly onanimationiteration: true + readonly onanimationstart: true + readonly onappinstalled: true + readonly onauxclick: true + readonly onbeforeinput: true + readonly onbeforeinstallprompt: true + readonly onbeforematch: true + readonly onbeforeprint: true + readonly onbeforetoggle: true + readonly onbeforeunload: true + readonly onbeforexrselect: true + readonly onblur: true + readonly oncancel: true + readonly oncanplay: true + readonly oncanplaythrough: true + readonly onchange: true + readonly onclick: true + readonly onclose: true + readonly oncommand: true + readonly oncontentvisibilityautostatechange: true + readonly oncontextlost: true + readonly oncontextmenu: true + readonly oncontextrestored: true + readonly oncopy: true + readonly oncuechange: true + readonly oncut: true + readonly ondblclick: true + readonly ondevicemotion: true + readonly ondeviceorientation: true + readonly ondeviceorientationabsolute: true + readonly ondrag: true + readonly ondragend: true + readonly ondragenter: true + readonly ondragleave: true + readonly ondragover: true + readonly ondragstart: true + readonly ondrop: true + readonly ondurationchange: true + readonly onemptied: true + readonly onended: true + readonly onerror: true + readonly onfocus: true + readonly onformdata: true + readonly ongamepadconnected: true + readonly ongamepaddisconnected: true + readonly ongotpointercapture: true + readonly onhashchange: true + readonly oninput: true + readonly oninvalid: true + readonly onkeydown: true + readonly onkeypress: true + readonly onkeyup: true + readonly onlanguagechange: true + readonly onload: true + readonly onloadeddata: true + readonly onloadedmetadata: true + readonly onloadstart: true + readonly onlostpointercapture: true + readonly onmessage: true + readonly onmessageerror: true + readonly onmousedown: true + readonly onmouseenter: true + readonly onmouseleave: true + readonly onmousemove: true + readonly onmouseout: true + readonly onmouseover: true + readonly onmouseup: true + readonly onmousewheel: true + readonly onoffline: true + readonly ononline: true + readonly onpagehide: true + readonly onpagereveal: true + readonly onpageshow: true + readonly onpageswap: true + readonly onpaste: true + readonly onpause: true + readonly onplay: true + readonly onplaying: true + readonly onpointercancel: true + readonly onpointerdown: true + readonly onpointerenter: true + readonly onpointerleave: true + readonly onpointermove: true + readonly onpointerout: true + readonly onpointerover: true + readonly onpointerrawupdate: true + readonly onpointerup: true + readonly onpopstate: true + readonly onprogress: true + readonly onratechange: true + readonly onrejectionhandled: true + readonly onreset: true + readonly onresize: true + readonly onscroll: true + readonly onscrollend: true + readonly onscrollsnapchange: true + readonly onscrollsnapchanging: true + readonly onsearch: true + readonly onsecuritypolicyviolation: true + readonly onseeked: true + readonly onseeking: true + readonly onselect: true + readonly onselectionchange: true + readonly onselectstart: true + readonly onslotchange: true + readonly onstalled: true + readonly onstorage: true + readonly onsubmit: true + readonly onsuspend: true + readonly ontimeupdate: true + readonly ontoggle: true + readonly ontransitioncancel: true + readonly ontransitionend: true + readonly ontransitionrun: true + readonly ontransitionstart: true + readonly onunhandledrejection: true + readonly onunload: true + readonly onvolumechange: true + readonly onwaiting: true + readonly onwheel: true + readonly open: false + readonly opener: false + readonly Option: false + readonly OrientationSensor: false + readonly origin: false + readonly originAgentCluster: false + readonly OscillatorNode: false + readonly OTPCredential: false + readonly outerHeight: false + readonly outerWidth: false + readonly OverconstrainedError: false + readonly PageRevealEvent: false + readonly PageSwapEvent: false + readonly PageTransitionEvent: false + readonly pageXOffset: false + readonly pageYOffset: false + readonly PannerNode: false + readonly parent: false + readonly PasswordCredential: false + readonly Path2D: false + readonly PaymentAddress: false + readonly PaymentManager: false + readonly PaymentMethodChangeEvent: false + readonly PaymentRequest: false + readonly PaymentRequestUpdateEvent: false + readonly PaymentResponse: false + readonly PerformanceElementTiming: false + readonly PerformanceEventTiming: false + readonly PerformanceLongAnimationFrameTiming: false + readonly PerformanceLongTaskTiming: false + readonly PerformanceNavigation: false + readonly PerformanceNavigationTiming: false + readonly PerformancePaintTiming: false + readonly PerformanceScriptTiming: false + readonly PerformanceServerTiming: false + readonly PerformanceTiming: false + readonly PeriodicSyncManager: false + readonly PeriodicWave: false + readonly Permissions: false + readonly PermissionStatus: false + readonly PERSISTENT: false + readonly personalbar: false + readonly PictureInPictureEvent: false + readonly PictureInPictureWindow: false + readonly Plugin: false + readonly PluginArray: false + readonly PointerEvent: false + readonly PopStateEvent: false + readonly postMessage: false + readonly Presentation: false + readonly PresentationAvailability: false + readonly PresentationConnection: false + readonly PresentationConnectionAvailableEvent: false + readonly PresentationConnectionCloseEvent: false + readonly PresentationConnectionList: false + readonly PresentationReceiver: false + readonly PresentationRequest: false + readonly PressureObserver: false + readonly PressureRecord: false + readonly print: false + readonly ProcessingInstruction: false + readonly Profiler: false + readonly ProgressEvent: false + readonly PromiseRejectionEvent: false + readonly prompt: false + readonly ProtectedAudience: false + readonly PublicKeyCredential: false + readonly PushManager: false + readonly PushSubscription: false + readonly PushSubscriptionOptions: false + readonly queryLocalFonts: false + readonly RadioNodeList: false + readonly Range: false + readonly registerProcessor: false + readonly RelativeOrientationSensor: false + readonly RemotePlayback: false + readonly removeEventListener: false + readonly ReportBody: false + readonly reportError: false + readonly ReportingObserver: false + readonly requestAnimationFrame: false + readonly requestIdleCallback: false + readonly resizeBy: false + readonly ResizeObserver: false + readonly ResizeObserverEntry: false + readonly ResizeObserverSize: false + readonly resizeTo: false + readonly RestrictionTarget: false + readonly RTCCertificate: false + readonly RTCDataChannel: false + readonly RTCDataChannelEvent: false + readonly RTCDtlsTransport: false + readonly RTCDTMFSender: false + readonly RTCDTMFToneChangeEvent: false + readonly RTCEncodedAudioFrame: false + readonly RTCEncodedVideoFrame: false + readonly RTCError: false + readonly RTCErrorEvent: false + readonly RTCIceCandidate: false + readonly RTCIceTransport: false + readonly RTCPeerConnection: false + readonly RTCPeerConnectionIceErrorEvent: false + readonly RTCPeerConnectionIceEvent: false + readonly RTCRtpReceiver: false + readonly RTCRtpScriptTransform: false + readonly RTCRtpSender: false + readonly RTCRtpTransceiver: false + readonly RTCSctpTransport: false + readonly RTCSessionDescription: false + readonly RTCStatsReport: false + readonly RTCTrackEvent: false + readonly sampleRate: false + readonly scheduler: false + readonly Scheduler: false + readonly Scheduling: false + readonly screen: false + readonly Screen: false + readonly ScreenDetailed: false + readonly ScreenDetails: false + readonly screenLeft: false + readonly ScreenOrientation: false + readonly screenTop: false + readonly screenX: false + readonly screenY: false + readonly ScriptProcessorNode: false + readonly scroll: false + readonly scrollbars: false + readonly scrollBy: false + readonly ScrollTimeline: false + readonly scrollTo: false + readonly scrollX: false + readonly scrollY: false + readonly SecurityPolicyViolationEvent: false + readonly Selection: false + readonly self: false + readonly Sensor: false + readonly SensorErrorEvent: false + readonly Serial: false + readonly SerialPort: false + readonly ServiceWorker: false + readonly ServiceWorkerContainer: false + readonly ServiceWorkerRegistration: false + readonly sessionStorage: false + readonly ShadowRoot: false + readonly sharedStorage: false + readonly SharedStorage: false + readonly SharedStorageAppendMethod: false + readonly SharedStorageClearMethod: false + readonly SharedStorageDeleteMethod: false + readonly SharedStorageModifierMethod: false + readonly SharedStorageSetMethod: false + readonly SharedStorageWorklet: false + readonly SharedWorker: false + readonly showDirectoryPicker: false + readonly showOpenFilePicker: false + readonly showSaveFilePicker: false + readonly SnapEvent: false + readonly SourceBuffer: false + readonly SourceBufferList: false + readonly speechSynthesis: false + readonly SpeechSynthesis: false + readonly SpeechSynthesisErrorEvent: false + readonly SpeechSynthesisEvent: false + readonly SpeechSynthesisUtterance: false + readonly SpeechSynthesisVoice: false + readonly StaticRange: false + readonly status: false + readonly statusbar: false + readonly StereoPannerNode: false + readonly stop: false + readonly Storage: false + readonly StorageBucket: false + readonly StorageBucketManager: false + readonly StorageEvent: false + readonly StorageManager: false + readonly styleMedia: false + readonly StylePropertyMap: false + readonly StylePropertyMapReadOnly: false + readonly StyleSheet: false + readonly StyleSheetList: false + readonly SubmitEvent: false + readonly Subscriber: false + readonly SVGAElement: false + readonly SVGAngle: false + readonly SVGAnimatedAngle: false + readonly SVGAnimatedBoolean: false + readonly SVGAnimatedEnumeration: false + readonly SVGAnimatedInteger: false + readonly SVGAnimatedLength: false + readonly SVGAnimatedLengthList: false + readonly SVGAnimatedNumber: false + readonly SVGAnimatedNumberList: false + readonly SVGAnimatedPreserveAspectRatio: false + readonly SVGAnimatedRect: false + readonly SVGAnimatedString: false + readonly SVGAnimatedTransformList: false + readonly SVGAnimateElement: false + readonly SVGAnimateMotionElement: false + readonly SVGAnimateTransformElement: false + readonly SVGAnimationElement: false + readonly SVGCircleElement: false + readonly SVGClipPathElement: false + readonly SVGComponentTransferFunctionElement: false + readonly SVGDefsElement: false + readonly SVGDescElement: false + readonly SVGElement: false + readonly SVGEllipseElement: false + readonly SVGFEBlendElement: false + readonly SVGFEColorMatrixElement: false + readonly SVGFEComponentTransferElement: false + readonly SVGFECompositeElement: false + readonly SVGFEConvolveMatrixElement: false + readonly SVGFEDiffuseLightingElement: false + readonly SVGFEDisplacementMapElement: false + readonly SVGFEDistantLightElement: false + readonly SVGFEDropShadowElement: false + readonly SVGFEFloodElement: false + readonly SVGFEFuncAElement: false + readonly SVGFEFuncBElement: false + readonly SVGFEFuncGElement: false + readonly SVGFEFuncRElement: false + readonly SVGFEGaussianBlurElement: false + readonly SVGFEImageElement: false + readonly SVGFEMergeElement: false + readonly SVGFEMergeNodeElement: false + readonly SVGFEMorphologyElement: false + readonly SVGFEOffsetElement: false + readonly SVGFEPointLightElement: false + readonly SVGFESpecularLightingElement: false + readonly SVGFESpotLightElement: false + readonly SVGFETileElement: false + readonly SVGFETurbulenceElement: false + readonly SVGFilterElement: false + readonly SVGForeignObjectElement: false + readonly SVGGElement: false + readonly SVGGeometryElement: false + readonly SVGGradientElement: false + readonly SVGGraphicsElement: false + readonly SVGImageElement: false + readonly SVGLength: false + readonly SVGLengthList: false + readonly SVGLinearGradientElement: false + readonly SVGLineElement: false + readonly SVGMarkerElement: false + readonly SVGMaskElement: false + readonly SVGMatrix: false + readonly SVGMetadataElement: false + readonly SVGMPathElement: false + readonly SVGNumber: false + readonly SVGNumberList: false + readonly SVGPathElement: false + readonly SVGPatternElement: false + readonly SVGPoint: false + readonly SVGPointList: false + readonly SVGPolygonElement: false + readonly SVGPolylineElement: false + readonly SVGPreserveAspectRatio: false + readonly SVGRadialGradientElement: false + readonly SVGRect: false + readonly SVGRectElement: false + readonly SVGScriptElement: false + readonly SVGSetElement: false + readonly SVGStopElement: false + readonly SVGStringList: false + readonly SVGStyleElement: false + readonly SVGSVGElement: false + readonly SVGSwitchElement: false + readonly SVGSymbolElement: false + readonly SVGTextContentElement: false + readonly SVGTextElement: false + readonly SVGTextPathElement: false + readonly SVGTextPositioningElement: false + readonly SVGTitleElement: false + readonly SVGTransform: false + readonly SVGTransformList: false + readonly SVGTSpanElement: false + readonly SVGUnitTypes: false + readonly SVGUseElement: false + readonly SVGViewElement: false + readonly SyncManager: false + readonly TaskAttributionTiming: false + readonly TaskController: false + readonly TaskPriorityChangeEvent: false + readonly TaskSignal: false + readonly TEMPORARY: false + readonly Text: false + readonly TextEvent: false + readonly TextFormat: false + readonly TextFormatUpdateEvent: false + readonly TextMetrics: false + readonly TextTrack: false + readonly TextTrackCue: false + readonly TextTrackCueList: false + readonly TextTrackList: false + readonly TextUpdateEvent: false + readonly TimeEvent: false + readonly TimeRanges: false + readonly ToggleEvent: false + readonly toolbar: false + readonly top: false + readonly Touch: false + readonly TouchEvent: false + readonly TouchList: false + readonly TrackEvent: false + readonly TransitionEvent: false + readonly TreeWalker: false + readonly TrustedHTML: false + readonly TrustedScript: false + readonly TrustedScriptURL: false + readonly TrustedTypePolicy: false + readonly TrustedTypePolicyFactory: false + readonly trustedTypes: false + readonly UIEvent: false + readonly USB: false + readonly USBAlternateInterface: false + readonly USBConfiguration: false + readonly USBConnectionEvent: false + readonly USBDevice: false + readonly USBEndpoint: false + readonly USBInterface: false + readonly USBInTransferResult: false + readonly USBIsochronousInTransferPacket: false + readonly USBIsochronousInTransferResult: false + readonly USBIsochronousOutTransferPacket: false + readonly USBIsochronousOutTransferResult: false + readonly USBOutTransferResult: false + readonly UserActivation: false + readonly ValidityState: false + readonly VideoColorSpace: false + readonly VideoDecoder: false + readonly VideoEncoder: false + readonly VideoFrame: false + readonly VideoPlaybackQuality: false + readonly ViewTimeline: false + readonly ViewTransition: false + readonly ViewTransitionTypeSet: false + readonly VirtualKeyboard: false + readonly VirtualKeyboardGeometryChangeEvent: false + readonly VisibilityStateEntry: false + readonly visualViewport: false + readonly VisualViewport: false + readonly VTTCue: false + readonly VTTRegion: false + readonly WakeLock: false + readonly WakeLockSentinel: false + readonly WaveShaperNode: false + readonly WebGL2RenderingContext: false + readonly WebGLActiveInfo: false + readonly WebGLBuffer: false + readonly WebGLContextEvent: false + readonly WebGLFramebuffer: false + readonly WebGLObject: false + readonly WebGLProgram: false + readonly WebGLQuery: false + readonly WebGLRenderbuffer: false + readonly WebGLRenderingContext: false + readonly WebGLSampler: false + readonly WebGLShader: false + readonly WebGLShaderPrecisionFormat: false + readonly WebGLSync: false + readonly WebGLTexture: false + readonly WebGLTransformFeedback: false + readonly WebGLUniformLocation: false + readonly WebGLVertexArrayObject: false + readonly WebSocketError: false + readonly WebSocketStream: false + readonly WebTransport: false + readonly WebTransportBidirectionalStream: false + readonly WebTransportDatagramDuplexStream: false + readonly WebTransportError: false + readonly WebTransportReceiveStream: false + readonly WebTransportSendStream: false + readonly WGSLLanguageFeatures: false + readonly WheelEvent: false + readonly when: false + readonly window: false + readonly Window: false + readonly WindowControlsOverlay: false + readonly WindowControlsOverlayGeometryChangeEvent: false + readonly Worker: false + readonly Worklet: false + readonly WorkletGlobalScope: false + readonly XMLDocument: false + readonly XMLHttpRequest: false + readonly XMLHttpRequestEventTarget: false + readonly XMLHttpRequestUpload: false + readonly XMLSerializer: false + readonly XPathEvaluator: false + readonly XPathExpression: false + readonly XPathResult: false + readonly XRAnchor: false + readonly XRAnchorSet: false + readonly XRBoundedReferenceSpace: false + readonly XRCamera: false + readonly XRCPUDepthInformation: false + readonly XRDepthInformation: false + readonly XRDOMOverlayState: false + readonly XRFrame: false + readonly XRHand: false + readonly XRHitTestResult: false + readonly XRHitTestSource: false + readonly XRInputSource: false + readonly XRInputSourceArray: false + readonly XRInputSourceEvent: false + readonly XRInputSourcesChangeEvent: false + readonly XRJointPose: false + readonly XRJointSpace: false + readonly XRLayer: false + readonly XRLightEstimate: false + readonly XRLightProbe: false + readonly XRPose: false + readonly XRRay: false + readonly XRReferenceSpace: false + readonly XRReferenceSpaceEvent: false + readonly XRRenderState: false + readonly XRRigidTransform: false + readonly XRSession: false + readonly XRSessionEvent: false + readonly XRSpace: false + readonly XRSystem: false + readonly XRTransientInputHitTestResult: false + readonly XRTransientInputHitTestSource: false + readonly XRView: false + readonly XRViewerPose: false + readonly XRViewport: false + readonly XRWebGLBinding: false + readonly XRWebGLDepthInformation: false + readonly XRWebGLLayer: false + readonly XSLTProcessor: false + } & { + readonly suite: 'writable' + readonly test: 'writable' + readonly chai: 'writable' + readonly describe: 'writable' + readonly it: 'writable' + readonly expectTypeOf: 'writable' + readonly assertType: 'writable' + readonly expect: 'writable' + readonly assert: 'writable' + readonly vitest: 'writable' + readonly vi: 'writable' + readonly beforeAll: 'writable' + readonly afterAll: 'writable' + readonly beforeEach: 'writable' + readonly afterEach: 'writable' + readonly onTestFailed: 'writable' + readonly onTestFinished: 'writable' + } as { + readonly AbortController: false + readonly AbortSignal: false + readonly AsyncDisposableStack: false + readonly atob: false + readonly Blob: false + readonly BroadcastChannel: false + readonly btoa: false + readonly Buffer: false + readonly ByteLengthQueuingStrategy: false + readonly clearImmediate: false + readonly clearInterval: false + readonly clearTimeout: false + readonly CloseEvent: false + readonly CompressionStream: false + readonly console: false + readonly CountQueuingStrategy: false + readonly crypto: false + readonly Crypto: false + readonly CryptoKey: false + readonly CustomEvent: false + readonly DecompressionStream: false + readonly DisposableStack: false + readonly DOMException: false + readonly Event: false + readonly EventTarget: false + readonly fetch: false + readonly File: false + readonly FormData: false + readonly global: false + readonly Headers: false + readonly MessageChannel: false + readonly MessageEvent: false + readonly MessagePort: false + readonly navigator: false + readonly Navigator: false + readonly performance: false + readonly Performance: false + readonly PerformanceEntry: false + readonly PerformanceMark: false + readonly PerformanceMeasure: false + readonly PerformanceObserver: false + readonly PerformanceObserverEntryList: false + readonly PerformanceResourceTiming: false + readonly process: false + readonly queueMicrotask: false + readonly ReadableByteStreamController: false + readonly ReadableStream: false + readonly ReadableStreamBYOBReader: false + readonly ReadableStreamBYOBRequest: false + readonly ReadableStreamDefaultController: false + readonly ReadableStreamDefaultReader: false + readonly Request: false + readonly Response: false + readonly setImmediate: false + readonly setInterval: false + readonly setTimeout: false + readonly structuredClone: false + readonly SubtleCrypto: false + readonly SuppressedError: false + readonly TextDecoder: false + readonly TextDecoderStream: false + readonly TextEncoder: false + readonly TextEncoderStream: false + readonly TransformStream: false + readonly TransformStreamDefaultController: false + readonly URL: false + readonly URLPattern: false + readonly URLSearchParams: false + readonly WebAssembly: false + readonly WebSocket: false + readonly WritableStream: false + readonly WritableStreamDefaultController: false + readonly WritableStreamDefaultWriter: false + readonly __dirname: false + readonly __filename: false + readonly exports: true + readonly module: false + readonly require: false + readonly AbsoluteOrientationSensor: false + readonly AbstractRange: false + readonly Accelerometer: false + readonly addEventListener: false + readonly ai: false + readonly AI: false + readonly AICreateMonitor: false + readonly AITextSession: false + readonly alert: false + readonly AnalyserNode: false + readonly Animation: false + readonly AnimationEffect: false + readonly AnimationEvent: false + readonly AnimationPlaybackEvent: false + readonly AnimationTimeline: false + readonly Attr: false + readonly Audio: false + readonly AudioBuffer: false + readonly AudioBufferSourceNode: false + readonly AudioContext: false + readonly AudioData: false + readonly AudioDecoder: false + readonly AudioDestinationNode: false + readonly AudioEncoder: false + readonly AudioListener: false + readonly AudioNode: false + readonly AudioParam: false + readonly AudioParamMap: false + readonly AudioProcessingEvent: false + readonly AudioScheduledSourceNode: false + readonly AudioSinkInfo: false + readonly AudioWorklet: false + readonly AudioWorkletGlobalScope: false + readonly AudioWorkletNode: false + readonly AudioWorkletProcessor: false + readonly AuthenticatorAssertionResponse: false + readonly AuthenticatorAttestationResponse: false + readonly AuthenticatorResponse: false + readonly BackgroundFetchManager: false + readonly BackgroundFetchRecord: false + readonly BackgroundFetchRegistration: false + readonly BarcodeDetector: false + readonly BarProp: false + readonly BaseAudioContext: false + readonly BatteryManager: false + readonly BeforeUnloadEvent: false + readonly BiquadFilterNode: false + readonly BlobEvent: false + readonly Bluetooth: false + readonly BluetoothCharacteristicProperties: false + readonly BluetoothDevice: false + readonly BluetoothRemoteGATTCharacteristic: false + readonly BluetoothRemoteGATTDescriptor: false + readonly BluetoothRemoteGATTServer: false + readonly BluetoothRemoteGATTService: false + readonly BluetoothUUID: false + readonly blur: false + readonly BrowserCaptureMediaStreamTrack: false + readonly Cache: false + readonly caches: false + readonly CacheStorage: false + readonly cancelAnimationFrame: false + readonly cancelIdleCallback: false + readonly CanvasCaptureMediaStream: false + readonly CanvasCaptureMediaStreamTrack: false + readonly CanvasGradient: false + readonly CanvasPattern: false + readonly CanvasRenderingContext2D: false + readonly CaptureController: false + readonly CaretPosition: false + readonly CDATASection: false + readonly ChannelMergerNode: false + readonly ChannelSplitterNode: false + readonly ChapterInformation: false + readonly CharacterBoundsUpdateEvent: false + readonly CharacterData: false + readonly clientInformation: false + readonly Clipboard: false + readonly ClipboardEvent: false + readonly ClipboardItem: false + readonly close: false + readonly closed: false + readonly CloseWatcher: false + readonly CommandEvent: false + readonly Comment: false + readonly CompositionEvent: false + readonly confirm: false + readonly ConstantSourceNode: false + readonly ContentVisibilityAutoStateChangeEvent: false + readonly ConvolverNode: false + readonly CookieChangeEvent: false + readonly CookieDeprecationLabel: false + readonly cookieStore: false + readonly CookieStore: false + readonly CookieStoreManager: false + readonly createImageBitmap: false + readonly Credential: false + readonly credentialless: false + readonly CredentialsContainer: false + readonly CropTarget: false + readonly crossOriginIsolated: false + readonly CSPViolationReportBody: false + readonly CSS: false + readonly CSSAnimation: false + readonly CSSConditionRule: false + readonly CSSContainerRule: false + readonly CSSCounterStyleRule: false + readonly CSSFontFaceRule: false + readonly CSSFontFeatureValuesRule: false + readonly CSSFontPaletteValuesRule: false + readonly CSSGroupingRule: false + readonly CSSImageValue: false + readonly CSSImportRule: false + readonly CSSKeyframeRule: false + readonly CSSKeyframesRule: false + readonly CSSKeywordValue: false + readonly CSSLayerBlockRule: false + readonly CSSLayerStatementRule: false + readonly CSSMarginRule: false + readonly CSSMathClamp: false + readonly CSSMathInvert: false + readonly CSSMathMax: false + readonly CSSMathMin: false + readonly CSSMathNegate: false + readonly CSSMathProduct: false + readonly CSSMathSum: false + readonly CSSMathValue: false + readonly CSSMatrixComponent: false + readonly CSSMediaRule: false + readonly CSSNamespaceRule: false + readonly CSSNestedDeclarations: false + readonly CSSNumericArray: false + readonly CSSNumericValue: false + readonly CSSPageDescriptors: false + readonly CSSPageRule: false + readonly CSSPerspective: false + readonly CSSPositionTryDescriptors: false + readonly CSSPositionTryRule: false + readonly CSSPositionValue: false + readonly CSSPropertyRule: false + readonly CSSRotate: false + readonly CSSRule: false + readonly CSSRuleList: false + readonly CSSScale: false + readonly CSSScopeRule: false + readonly CSSSkew: false + readonly CSSSkewX: false + readonly CSSSkewY: false + readonly CSSStartingStyleRule: false + readonly CSSStyleDeclaration: false + readonly CSSStyleRule: false + readonly CSSStyleSheet: false + readonly CSSStyleValue: false + readonly CSSSupportsRule: false + readonly CSSTransformComponent: false + readonly CSSTransformValue: false + readonly CSSTransition: false + readonly CSSTranslate: false + readonly CSSUnitValue: false + readonly CSSUnparsedValue: false + readonly CSSVariableReferenceValue: false + readonly CSSViewTransitionRule: false + readonly currentFrame: false + readonly currentTime: false + readonly CustomElementRegistry: false + readonly customElements: false + readonly CustomStateSet: false + readonly DataTransfer: false + readonly DataTransferItem: false + readonly DataTransferItemList: false + readonly DelayNode: false + readonly DelegatedInkTrailPresenter: false + readonly DeviceMotionEvent: false + readonly DeviceMotionEventAcceleration: false + readonly DeviceMotionEventRotationRate: false + readonly DeviceOrientationEvent: false + readonly devicePixelRatio: false + readonly DevicePosture: false + readonly dispatchEvent: false + readonly document: false + readonly Document: false + readonly DocumentFragment: false + readonly documentPictureInPicture: false + readonly DocumentPictureInPicture: false + readonly DocumentPictureInPictureEvent: false + readonly DocumentTimeline: false + readonly DocumentType: false + readonly DOMError: false + readonly DOMImplementation: false + readonly DOMMatrix: false + readonly DOMMatrixReadOnly: false + readonly DOMParser: false + readonly DOMPoint: false + readonly DOMPointReadOnly: false + readonly DOMQuad: false + readonly DOMRect: false + readonly DOMRectList: false + readonly DOMRectReadOnly: false + readonly DOMStringList: false + readonly DOMStringMap: false + readonly DOMTokenList: false + readonly DragEvent: false + readonly DynamicsCompressorNode: false + readonly EditContext: false + readonly Element: false + readonly ElementInternals: false + readonly EncodedAudioChunk: false + readonly EncodedVideoChunk: false + readonly ErrorEvent: false + readonly event: false + readonly EventCounts: false + readonly EventSource: false + readonly external: false + readonly External: false + readonly EyeDropper: false + readonly FeaturePolicy: false + readonly FederatedCredential: false + readonly fence: false + readonly Fence: false + readonly FencedFrameConfig: false + readonly fetchLater: false + readonly FetchLaterResult: false + readonly FileList: false + readonly FileReader: false + readonly FileSystem: false + readonly FileSystemDirectoryEntry: false + readonly FileSystemDirectoryHandle: false + readonly FileSystemDirectoryReader: false + readonly FileSystemEntry: false + readonly FileSystemFileEntry: false + readonly FileSystemFileHandle: false + readonly FileSystemHandle: false + readonly FileSystemObserver: false + readonly FileSystemWritableFileStream: false + readonly find: false + readonly focus: false + readonly FocusEvent: false + readonly FontData: false + readonly FontFace: false + readonly FontFaceSet: false + readonly FontFaceSetLoadEvent: false + readonly FormDataEvent: false + readonly FragmentDirective: false + readonly frameElement: false + readonly frames: false + readonly GainNode: false + readonly Gamepad: false + readonly GamepadAxisMoveEvent: false + readonly GamepadButton: false + readonly GamepadButtonEvent: false + readonly GamepadEvent: false + readonly GamepadHapticActuator: false + readonly GamepadPose: false + readonly Geolocation: false + readonly GeolocationCoordinates: false + readonly GeolocationPosition: false + readonly GeolocationPositionError: false + readonly getComputedStyle: false + readonly getScreenDetails: false + readonly getSelection: false + readonly GPU: false + readonly GPUAdapter: false + readonly GPUAdapterInfo: false + readonly GPUBindGroup: false + readonly GPUBindGroupLayout: false + readonly GPUBuffer: false + readonly GPUBufferUsage: false + readonly GPUCanvasContext: false + readonly GPUColorWrite: false + readonly GPUCommandBuffer: false + readonly GPUCommandEncoder: false + readonly GPUCompilationInfo: false + readonly GPUCompilationMessage: false + readonly GPUComputePassEncoder: false + readonly GPUComputePipeline: false + readonly GPUDevice: false + readonly GPUDeviceLostInfo: false + readonly GPUError: false + readonly GPUExternalTexture: false + readonly GPUInternalError: false + readonly GPUMapMode: false + readonly GPUOutOfMemoryError: false + readonly GPUPipelineError: false + readonly GPUPipelineLayout: false + readonly GPUQuerySet: false + readonly GPUQueue: false + readonly GPURenderBundle: false + readonly GPURenderBundleEncoder: false + readonly GPURenderPassEncoder: false + readonly GPURenderPipeline: false + readonly GPUSampler: false + readonly GPUShaderModule: false + readonly GPUShaderStage: false + readonly GPUSupportedFeatures: false + readonly GPUSupportedLimits: false + readonly GPUTexture: false + readonly GPUTextureUsage: false + readonly GPUTextureView: false + readonly GPUUncapturedErrorEvent: false + readonly GPUValidationError: false + readonly GravitySensor: false + readonly Gyroscope: false + readonly HashChangeEvent: false + readonly HID: false + readonly HIDConnectionEvent: false + readonly HIDDevice: false + readonly HIDInputReportEvent: false + readonly Highlight: false + readonly HighlightRegistry: false + readonly history: false + readonly History: false + readonly HTMLAllCollection: false + readonly HTMLAnchorElement: false + readonly HTMLAreaElement: false + readonly HTMLAudioElement: false + readonly HTMLBaseElement: false + readonly HTMLBodyElement: false + readonly HTMLBRElement: false + readonly HTMLButtonElement: false + readonly HTMLCanvasElement: false + readonly HTMLCollection: false + readonly HTMLDataElement: false + readonly HTMLDataListElement: false + readonly HTMLDetailsElement: false + readonly HTMLDialogElement: false + readonly HTMLDirectoryElement: false + readonly HTMLDivElement: false + readonly HTMLDListElement: false + readonly HTMLDocument: false + readonly HTMLElement: false + readonly HTMLEmbedElement: false + readonly HTMLFencedFrameElement: false + readonly HTMLFieldSetElement: false + readonly HTMLFontElement: false + readonly HTMLFormControlsCollection: false + readonly HTMLFormElement: false + readonly HTMLFrameElement: false + readonly HTMLFrameSetElement: false + readonly HTMLHeadElement: false + readonly HTMLHeadingElement: false + readonly HTMLHRElement: false + readonly HTMLHtmlElement: false + readonly HTMLIFrameElement: false + readonly HTMLImageElement: false + readonly HTMLInputElement: false + readonly HTMLLabelElement: false + readonly HTMLLegendElement: false + readonly HTMLLIElement: false + readonly HTMLLinkElement: false + readonly HTMLMapElement: false + readonly HTMLMarqueeElement: false + readonly HTMLMediaElement: false + readonly HTMLMenuElement: false + readonly HTMLMetaElement: false + readonly HTMLMeterElement: false + readonly HTMLModElement: false + readonly HTMLObjectElement: false + readonly HTMLOListElement: false + readonly HTMLOptGroupElement: false + readonly HTMLOptionElement: false + readonly HTMLOptionsCollection: false + readonly HTMLOutputElement: false + readonly HTMLParagraphElement: false + readonly HTMLParamElement: false + readonly HTMLPictureElement: false + readonly HTMLPreElement: false + readonly HTMLProgressElement: false + readonly HTMLQuoteElement: false + readonly HTMLScriptElement: false + readonly HTMLSelectedContentElement: false + readonly HTMLSelectElement: false + readonly HTMLSlotElement: false + readonly HTMLSourceElement: false + readonly HTMLSpanElement: false + readonly HTMLStyleElement: false + readonly HTMLTableCaptionElement: false + readonly HTMLTableCellElement: false + readonly HTMLTableColElement: false + readonly HTMLTableElement: false + readonly HTMLTableRowElement: false + readonly HTMLTableSectionElement: false + readonly HTMLTemplateElement: false + readonly HTMLTextAreaElement: false + readonly HTMLTimeElement: false + readonly HTMLTitleElement: false + readonly HTMLTrackElement: false + readonly HTMLUListElement: false + readonly HTMLUnknownElement: false + readonly HTMLVideoElement: false + readonly IDBCursor: false + readonly IDBCursorWithValue: false + readonly IDBDatabase: false + readonly IDBFactory: false + readonly IDBIndex: false + readonly IDBKeyRange: false + readonly IDBObjectStore: false + readonly IDBOpenDBRequest: false + readonly IDBRequest: false + readonly IDBTransaction: false + readonly IDBVersionChangeEvent: false + readonly IdentityCredential: false + readonly IdentityCredentialError: false + readonly IdentityProvider: false + readonly IdleDeadline: false + readonly IdleDetector: false + readonly IIRFilterNode: false + readonly Image: false + readonly ImageBitmap: false + readonly ImageBitmapRenderingContext: false + readonly ImageCapture: false + readonly ImageData: false + readonly ImageDecoder: false + readonly ImageTrack: false + readonly ImageTrackList: false + readonly indexedDB: false + readonly Ink: false + readonly innerHeight: false + readonly innerWidth: false + readonly InputDeviceCapabilities: false + readonly InputDeviceInfo: false + readonly InputEvent: false + readonly IntersectionObserver: false + readonly IntersectionObserverEntry: false + readonly isSecureContext: false + readonly Keyboard: false + readonly KeyboardEvent: false + readonly KeyboardLayoutMap: false + readonly KeyframeEffect: false + readonly LanguageDetector: false + readonly LargestContentfulPaint: false + readonly LaunchParams: false + readonly launchQueue: false + readonly LaunchQueue: false + readonly LayoutShift: false + readonly LayoutShiftAttribution: false + readonly length: false + readonly LinearAccelerationSensor: false + readonly localStorage: false + readonly location: true + readonly Location: false + readonly locationbar: false + readonly Lock: false + readonly LockManager: false + readonly matchMedia: false + readonly MathMLElement: false + readonly MediaCapabilities: false + readonly MediaCapabilitiesInfo: false + readonly MediaDeviceInfo: false + readonly MediaDevices: false + readonly MediaElementAudioSourceNode: false + readonly MediaEncryptedEvent: false + readonly MediaError: false + readonly MediaKeyError: false + readonly MediaKeyMessageEvent: false + readonly MediaKeys: false + readonly MediaKeySession: false + readonly MediaKeyStatusMap: false + readonly MediaKeySystemAccess: false + readonly MediaList: false + readonly MediaMetadata: false + readonly MediaQueryList: false + readonly MediaQueryListEvent: false + readonly MediaRecorder: false + readonly MediaRecorderErrorEvent: false + readonly MediaSession: false + readonly MediaSource: false + readonly MediaSourceHandle: false + readonly MediaStream: false + readonly MediaStreamAudioDestinationNode: false + readonly MediaStreamAudioSourceNode: false + readonly MediaStreamEvent: false + readonly MediaStreamTrack: false + readonly MediaStreamTrackAudioSourceNode: false + readonly MediaStreamTrackAudioStats: false + readonly MediaStreamTrackEvent: false + readonly MediaStreamTrackGenerator: false + readonly MediaStreamTrackProcessor: false + readonly MediaStreamTrackVideoStats: false + readonly menubar: false + readonly MIDIAccess: false + readonly MIDIConnectionEvent: false + readonly MIDIInput: false + readonly MIDIInputMap: false + readonly MIDIMessageEvent: false + readonly MIDIOutput: false + readonly MIDIOutputMap: false + readonly MIDIPort: false + readonly MimeType: false + readonly MimeTypeArray: false + readonly model: false + readonly ModelGenericSession: false + readonly ModelManager: false + readonly MouseEvent: false + readonly moveBy: false + readonly moveTo: false + readonly MutationEvent: false + readonly MutationObserver: false + readonly MutationRecord: false + readonly name: false + readonly NamedNodeMap: false + readonly NavigateEvent: false + readonly navigation: false + readonly Navigation: false + readonly NavigationActivation: false + readonly NavigationCurrentEntryChangeEvent: false + readonly NavigationDestination: false + readonly NavigationHistoryEntry: false + readonly NavigationPreloadManager: false + readonly NavigationTransition: false + readonly NavigatorLogin: false + readonly NavigatorManagedData: false + readonly NavigatorUAData: false + readonly NetworkInformation: false + readonly Node: false + readonly NodeFilter: false + readonly NodeIterator: false + readonly NodeList: false + readonly Notification: false + readonly NotifyPaintEvent: false + readonly NotRestoredReasonDetails: false + readonly NotRestoredReasons: false + readonly Observable: false + readonly OfflineAudioCompletionEvent: false + readonly OfflineAudioContext: false + readonly offscreenBuffering: false + readonly OffscreenCanvas: false + readonly OffscreenCanvasRenderingContext2D: false + readonly onabort: true + readonly onafterprint: true + readonly onanimationcancel: true + readonly onanimationend: true + readonly onanimationiteration: true + readonly onanimationstart: true + readonly onappinstalled: true + readonly onauxclick: true + readonly onbeforeinput: true + readonly onbeforeinstallprompt: true + readonly onbeforematch: true + readonly onbeforeprint: true + readonly onbeforetoggle: true + readonly onbeforeunload: true + readonly onbeforexrselect: true + readonly onblur: true + readonly oncancel: true + readonly oncanplay: true + readonly oncanplaythrough: true + readonly onchange: true + readonly onclick: true + readonly onclose: true + readonly oncommand: true + readonly oncontentvisibilityautostatechange: true + readonly oncontextlost: true + readonly oncontextmenu: true + readonly oncontextrestored: true + readonly oncopy: true + readonly oncuechange: true + readonly oncut: true + readonly ondblclick: true + readonly ondevicemotion: true + readonly ondeviceorientation: true + readonly ondeviceorientationabsolute: true + readonly ondrag: true + readonly ondragend: true + readonly ondragenter: true + readonly ondragleave: true + readonly ondragover: true + readonly ondragstart: true + readonly ondrop: true + readonly ondurationchange: true + readonly onemptied: true + readonly onended: true + readonly onerror: true + readonly onfocus: true + readonly onformdata: true + readonly ongamepadconnected: true + readonly ongamepaddisconnected: true + readonly ongotpointercapture: true + readonly onhashchange: true + readonly oninput: true + readonly oninvalid: true + readonly onkeydown: true + readonly onkeypress: true + readonly onkeyup: true + readonly onlanguagechange: true + readonly onload: true + readonly onloadeddata: true + readonly onloadedmetadata: true + readonly onloadstart: true + readonly onlostpointercapture: true + readonly onmessage: true + readonly onmessageerror: true + readonly onmousedown: true + readonly onmouseenter: true + readonly onmouseleave: true + readonly onmousemove: true + readonly onmouseout: true + readonly onmouseover: true + readonly onmouseup: true + readonly onmousewheel: true + readonly onoffline: true + readonly ononline: true + readonly onpagehide: true + readonly onpagereveal: true + readonly onpageshow: true + readonly onpageswap: true + readonly onpaste: true + readonly onpause: true + readonly onplay: true + readonly onplaying: true + readonly onpointercancel: true + readonly onpointerdown: true + readonly onpointerenter: true + readonly onpointerleave: true + readonly onpointermove: true + readonly onpointerout: true + readonly onpointerover: true + readonly onpointerrawupdate: true + readonly onpointerup: true + readonly onpopstate: true + readonly onprogress: true + readonly onratechange: true + readonly onrejectionhandled: true + readonly onreset: true + readonly onresize: true + readonly onscroll: true + readonly onscrollend: true + readonly onscrollsnapchange: true + readonly onscrollsnapchanging: true + readonly onsearch: true + readonly onsecuritypolicyviolation: true + readonly onseeked: true + readonly onseeking: true + readonly onselect: true + readonly onselectionchange: true + readonly onselectstart: true + readonly onslotchange: true + readonly onstalled: true + readonly onstorage: true + readonly onsubmit: true + readonly onsuspend: true + readonly ontimeupdate: true + readonly ontoggle: true + readonly ontransitioncancel: true + readonly ontransitionend: true + readonly ontransitionrun: true + readonly ontransitionstart: true + readonly onunhandledrejection: true + readonly onunload: true + readonly onvolumechange: true + readonly onwaiting: true + readonly onwheel: true + readonly open: false + readonly opener: false + readonly Option: false + readonly OrientationSensor: false + readonly origin: false + readonly originAgentCluster: false + readonly OscillatorNode: false + readonly OTPCredential: false + readonly outerHeight: false + readonly outerWidth: false + readonly OverconstrainedError: false + readonly PageRevealEvent: false + readonly PageSwapEvent: false + readonly PageTransitionEvent: false + readonly pageXOffset: false + readonly pageYOffset: false + readonly PannerNode: false + readonly parent: false + readonly PasswordCredential: false + readonly Path2D: false + readonly PaymentAddress: false + readonly PaymentManager: false + readonly PaymentMethodChangeEvent: false + readonly PaymentRequest: false + readonly PaymentRequestUpdateEvent: false + readonly PaymentResponse: false + readonly PerformanceElementTiming: false + readonly PerformanceEventTiming: false + readonly PerformanceLongAnimationFrameTiming: false + readonly PerformanceLongTaskTiming: false + readonly PerformanceNavigation: false + readonly PerformanceNavigationTiming: false + readonly PerformancePaintTiming: false + readonly PerformanceScriptTiming: false + readonly PerformanceServerTiming: false + readonly PerformanceTiming: false + readonly PeriodicSyncManager: false + readonly PeriodicWave: false + readonly Permissions: false + readonly PermissionStatus: false + readonly PERSISTENT: false + readonly personalbar: false + readonly PictureInPictureEvent: false + readonly PictureInPictureWindow: false + readonly Plugin: false + readonly PluginArray: false + readonly PointerEvent: false + readonly PopStateEvent: false + readonly postMessage: false + readonly Presentation: false + readonly PresentationAvailability: false + readonly PresentationConnection: false + readonly PresentationConnectionAvailableEvent: false + readonly PresentationConnectionCloseEvent: false + readonly PresentationConnectionList: false + readonly PresentationReceiver: false + readonly PresentationRequest: false + readonly PressureObserver: false + readonly PressureRecord: false + readonly print: false + readonly ProcessingInstruction: false + readonly Profiler: false + readonly ProgressEvent: false + readonly PromiseRejectionEvent: false + readonly prompt: false + readonly ProtectedAudience: false + readonly PublicKeyCredential: false + readonly PushManager: false + readonly PushSubscription: false + readonly PushSubscriptionOptions: false + readonly queryLocalFonts: false + readonly RadioNodeList: false + readonly Range: false + readonly registerProcessor: false + readonly RelativeOrientationSensor: false + readonly RemotePlayback: false + readonly removeEventListener: false + readonly ReportBody: false + readonly reportError: false + readonly ReportingObserver: false + readonly requestAnimationFrame: false + readonly requestIdleCallback: false + readonly resizeBy: false + readonly ResizeObserver: false + readonly ResizeObserverEntry: false + readonly ResizeObserverSize: false + readonly resizeTo: false + readonly RestrictionTarget: false + readonly RTCCertificate: false + readonly RTCDataChannel: false + readonly RTCDataChannelEvent: false + readonly RTCDtlsTransport: false + readonly RTCDTMFSender: false + readonly RTCDTMFToneChangeEvent: false + readonly RTCEncodedAudioFrame: false + readonly RTCEncodedVideoFrame: false + readonly RTCError: false + readonly RTCErrorEvent: false + readonly RTCIceCandidate: false + readonly RTCIceTransport: false + readonly RTCPeerConnection: false + readonly RTCPeerConnectionIceErrorEvent: false + readonly RTCPeerConnectionIceEvent: false + readonly RTCRtpReceiver: false + readonly RTCRtpScriptTransform: false + readonly RTCRtpSender: false + readonly RTCRtpTransceiver: false + readonly RTCSctpTransport: false + readonly RTCSessionDescription: false + readonly RTCStatsReport: false + readonly RTCTrackEvent: false + readonly sampleRate: false + readonly scheduler: false + readonly Scheduler: false + readonly Scheduling: false + readonly screen: false + readonly Screen: false + readonly ScreenDetailed: false + readonly ScreenDetails: false + readonly screenLeft: false + readonly ScreenOrientation: false + readonly screenTop: false + readonly screenX: false + readonly screenY: false + readonly ScriptProcessorNode: false + readonly scroll: false + readonly scrollbars: false + readonly scrollBy: false + readonly ScrollTimeline: false + readonly scrollTo: false + readonly scrollX: false + readonly scrollY: false + readonly SecurityPolicyViolationEvent: false + readonly Selection: false + readonly self: false + readonly Sensor: false + readonly SensorErrorEvent: false + readonly Serial: false + readonly SerialPort: false + readonly ServiceWorker: false + readonly ServiceWorkerContainer: false + readonly ServiceWorkerRegistration: false + readonly sessionStorage: false + readonly ShadowRoot: false + readonly sharedStorage: false + readonly SharedStorage: false + readonly SharedStorageAppendMethod: false + readonly SharedStorageClearMethod: false + readonly SharedStorageDeleteMethod: false + readonly SharedStorageModifierMethod: false + readonly SharedStorageSetMethod: false + readonly SharedStorageWorklet: false + readonly SharedWorker: false + readonly showDirectoryPicker: false + readonly showOpenFilePicker: false + readonly showSaveFilePicker: false + readonly SnapEvent: false + readonly SourceBuffer: false + readonly SourceBufferList: false + readonly speechSynthesis: false + readonly SpeechSynthesis: false + readonly SpeechSynthesisErrorEvent: false + readonly SpeechSynthesisEvent: false + readonly SpeechSynthesisUtterance: false + readonly SpeechSynthesisVoice: false + readonly StaticRange: false + readonly status: false + readonly statusbar: false + readonly StereoPannerNode: false + readonly stop: false + readonly Storage: false + readonly StorageBucket: false + readonly StorageBucketManager: false + readonly StorageEvent: false + readonly StorageManager: false + readonly styleMedia: false + readonly StylePropertyMap: false + readonly StylePropertyMapReadOnly: false + readonly StyleSheet: false + readonly StyleSheetList: false + readonly SubmitEvent: false + readonly Subscriber: false + readonly SVGAElement: false + readonly SVGAngle: false + readonly SVGAnimatedAngle: false + readonly SVGAnimatedBoolean: false + readonly SVGAnimatedEnumeration: false + readonly SVGAnimatedInteger: false + readonly SVGAnimatedLength: false + readonly SVGAnimatedLengthList: false + readonly SVGAnimatedNumber: false + readonly SVGAnimatedNumberList: false + readonly SVGAnimatedPreserveAspectRatio: false + readonly SVGAnimatedRect: false + readonly SVGAnimatedString: false + readonly SVGAnimatedTransformList: false + readonly SVGAnimateElement: false + readonly SVGAnimateMotionElement: false + readonly SVGAnimateTransformElement: false + readonly SVGAnimationElement: false + readonly SVGCircleElement: false + readonly SVGClipPathElement: false + readonly SVGComponentTransferFunctionElement: false + readonly SVGDefsElement: false + readonly SVGDescElement: false + readonly SVGElement: false + readonly SVGEllipseElement: false + readonly SVGFEBlendElement: false + readonly SVGFEColorMatrixElement: false + readonly SVGFEComponentTransferElement: false + readonly SVGFECompositeElement: false + readonly SVGFEConvolveMatrixElement: false + readonly SVGFEDiffuseLightingElement: false + readonly SVGFEDisplacementMapElement: false + readonly SVGFEDistantLightElement: false + readonly SVGFEDropShadowElement: false + readonly SVGFEFloodElement: false + readonly SVGFEFuncAElement: false + readonly SVGFEFuncBElement: false + readonly SVGFEFuncGElement: false + readonly SVGFEFuncRElement: false + readonly SVGFEGaussianBlurElement: false + readonly SVGFEImageElement: false + readonly SVGFEMergeElement: false + readonly SVGFEMergeNodeElement: false + readonly SVGFEMorphologyElement: false + readonly SVGFEOffsetElement: false + readonly SVGFEPointLightElement: false + readonly SVGFESpecularLightingElement: false + readonly SVGFESpotLightElement: false + readonly SVGFETileElement: false + readonly SVGFETurbulenceElement: false + readonly SVGFilterElement: false + readonly SVGForeignObjectElement: false + readonly SVGGElement: false + readonly SVGGeometryElement: false + readonly SVGGradientElement: false + readonly SVGGraphicsElement: false + readonly SVGImageElement: false + readonly SVGLength: false + readonly SVGLengthList: false + readonly SVGLinearGradientElement: false + readonly SVGLineElement: false + readonly SVGMarkerElement: false + readonly SVGMaskElement: false + readonly SVGMatrix: false + readonly SVGMetadataElement: false + readonly SVGMPathElement: false + readonly SVGNumber: false + readonly SVGNumberList: false + readonly SVGPathElement: false + readonly SVGPatternElement: false + readonly SVGPoint: false + readonly SVGPointList: false + readonly SVGPolygonElement: false + readonly SVGPolylineElement: false + readonly SVGPreserveAspectRatio: false + readonly SVGRadialGradientElement: false + readonly SVGRect: false + readonly SVGRectElement: false + readonly SVGScriptElement: false + readonly SVGSetElement: false + readonly SVGStopElement: false + readonly SVGStringList: false + readonly SVGStyleElement: false + readonly SVGSVGElement: false + readonly SVGSwitchElement: false + readonly SVGSymbolElement: false + readonly SVGTextContentElement: false + readonly SVGTextElement: false + readonly SVGTextPathElement: false + readonly SVGTextPositioningElement: false + readonly SVGTitleElement: false + readonly SVGTransform: false + readonly SVGTransformList: false + readonly SVGTSpanElement: false + readonly SVGUnitTypes: false + readonly SVGUseElement: false + readonly SVGViewElement: false + readonly SyncManager: false + readonly TaskAttributionTiming: false + readonly TaskController: false + readonly TaskPriorityChangeEvent: false + readonly TaskSignal: false + readonly TEMPORARY: false + readonly Text: false + readonly TextEvent: false + readonly TextFormat: false + readonly TextFormatUpdateEvent: false + readonly TextMetrics: false + readonly TextTrack: false + readonly TextTrackCue: false + readonly TextTrackCueList: false + readonly TextTrackList: false + readonly TextUpdateEvent: false + readonly TimeEvent: false + readonly TimeRanges: false + readonly ToggleEvent: false + readonly toolbar: false + readonly top: false + readonly Touch: false + readonly TouchEvent: false + readonly TouchList: false + readonly TrackEvent: false + readonly TransitionEvent: false + readonly TreeWalker: false + readonly TrustedHTML: false + readonly TrustedScript: false + readonly TrustedScriptURL: false + readonly TrustedTypePolicy: false + readonly TrustedTypePolicyFactory: false + readonly trustedTypes: false + readonly UIEvent: false + readonly USB: false + readonly USBAlternateInterface: false + readonly USBConfiguration: false + readonly USBConnectionEvent: false + readonly USBDevice: false + readonly USBEndpoint: false + readonly USBInterface: false + readonly USBInTransferResult: false + readonly USBIsochronousInTransferPacket: false + readonly USBIsochronousInTransferResult: false + readonly USBIsochronousOutTransferPacket: false + readonly USBIsochronousOutTransferResult: false + readonly USBOutTransferResult: false + readonly UserActivation: false + readonly ValidityState: false + readonly VideoColorSpace: false + readonly VideoDecoder: false + readonly VideoEncoder: false + readonly VideoFrame: false + readonly VideoPlaybackQuality: false + readonly ViewTimeline: false + readonly ViewTransition: false + readonly ViewTransitionTypeSet: false + readonly VirtualKeyboard: false + readonly VirtualKeyboardGeometryChangeEvent: false + readonly VisibilityStateEntry: false + readonly visualViewport: false + readonly VisualViewport: false + readonly VTTCue: false + readonly VTTRegion: false + readonly WakeLock: false + readonly WakeLockSentinel: false + readonly WaveShaperNode: false + readonly WebGL2RenderingContext: false + readonly WebGLActiveInfo: false + readonly WebGLBuffer: false + readonly WebGLContextEvent: false + readonly WebGLFramebuffer: false + readonly WebGLObject: false + readonly WebGLProgram: false + readonly WebGLQuery: false + readonly WebGLRenderbuffer: false + readonly WebGLRenderingContext: false + readonly WebGLSampler: false + readonly WebGLShader: false + readonly WebGLShaderPrecisionFormat: false + readonly WebGLSync: false + readonly WebGLTexture: false + readonly WebGLTransformFeedback: false + readonly WebGLUniformLocation: false + readonly WebGLVertexArrayObject: false + readonly WebSocketError: false + readonly WebSocketStream: false + readonly WebTransport: false + readonly WebTransportBidirectionalStream: false + readonly WebTransportDatagramDuplexStream: false + readonly WebTransportError: false + readonly WebTransportReceiveStream: false + readonly WebTransportSendStream: false + readonly WGSLLanguageFeatures: false + readonly WheelEvent: false + readonly when: false + readonly window: false + readonly Window: false + readonly WindowControlsOverlay: false + readonly WindowControlsOverlayGeometryChangeEvent: false + readonly Worker: false + readonly Worklet: false + readonly WorkletGlobalScope: false + readonly XMLDocument: false + readonly XMLHttpRequest: false + readonly XMLHttpRequestEventTarget: false + readonly XMLHttpRequestUpload: false + readonly XMLSerializer: false + readonly XPathEvaluator: false + readonly XPathExpression: false + readonly XPathResult: false + readonly XRAnchor: false + readonly XRAnchorSet: false + readonly XRBoundedReferenceSpace: false + readonly XRCamera: false + readonly XRCPUDepthInformation: false + readonly XRDepthInformation: false + readonly XRDOMOverlayState: false + readonly XRFrame: false + readonly XRHand: false + readonly XRHitTestResult: false + readonly XRHitTestSource: false + readonly XRInputSource: false + readonly XRInputSourceArray: false + readonly XRInputSourceEvent: false + readonly XRInputSourcesChangeEvent: false + readonly XRJointPose: false + readonly XRJointSpace: false + readonly XRLayer: false + readonly XRLightEstimate: false + readonly XRLightProbe: false + readonly XRPose: false + readonly XRRay: false + readonly XRReferenceSpace: false + readonly XRReferenceSpaceEvent: false + readonly XRRenderState: false + readonly XRRigidTransform: false + readonly XRSession: false + readonly XRSessionEvent: false + readonly XRSpace: false + readonly XRSystem: false + readonly XRTransientInputHitTestResult: false + readonly XRTransientInputHitTestSource: false + readonly XRView: false + readonly XRViewerPose: false + readonly XRViewport: false + readonly XRWebGLBinding: false + readonly XRWebGLDepthInformation: false + readonly XRWebGLLayer: false + readonly XSLTProcessor: false + } & { + readonly suite: 'writable' + readonly test: 'writable' + readonly chai: 'writable' + readonly describe: 'writable' + readonly it: 'writable' + readonly expectTypeOf: 'writable' + readonly assertType: 'writable' + readonly expect: 'writable' + readonly assert: 'writable' + readonly vitest: 'writable' + readonly vi: 'writable' + readonly beforeAll: 'writable' + readonly afterAll: 'writable' + readonly beforeEach: 'writable' + readonly afterEach: 'writable' + readonly onTestFailed: 'writable' + readonly onTestFinished: 'writable' + } diff --git a/packages/configs/eslint/src/index.ts b/packages/configs/eslint/src/index.ts new file mode 100644 index 0000000000..8347c3cba5 --- /dev/null +++ b/packages/configs/eslint/src/index.ts @@ -0,0 +1,12 @@ +export { config, configs, parser, plugin } from 'typescript-eslint' +export type { + Config, + ConfigArray, + ConfigWithExtends, + InfiniteDepthConfigWithExtends, +} from 'typescript-eslint' +export { disabledRules } from './disabledRules.js' +export { globalIgnores } from './globalIgnores.js' +export { globals, vitestGlobals } from './globals.js' +export { flatESLintConfig } from './shareableConfigs.js' +export { createESLintConfig } from './utils.js' diff --git a/packages/configs/eslint/src/packageName.ts b/packages/configs/eslint/src/packageName.ts new file mode 100644 index 0000000000..a4f8a70d28 --- /dev/null +++ b/packages/configs/eslint/src/packageName.ts @@ -0,0 +1,9 @@ +/** + * This is used because if we import the package name from the + * `package.json` file, it will be bundled into the final output, + * which is not desired. + * + * @since 0.0.1 + * @internal + */ +export const packageName = '@reduxjs/eslint-config' diff --git a/packages/configs/eslint/src/shareableConfigs.ts b/packages/configs/eslint/src/shareableConfigs.ts new file mode 100644 index 0000000000..c89abaa8b0 --- /dev/null +++ b/packages/configs/eslint/src/shareableConfigs.ts @@ -0,0 +1,248 @@ +import js from '@eslint/js' +import type { TSESLint } from '@typescript-eslint/utils' +import type { Linter } from 'eslint' +import prettierConfig from 'eslint-config-prettier/flat' +import { config, configs } from 'typescript-eslint' +import { disabledRules } from './disabledRules.js' +import { globalIgnores } from './globalIgnores.js' +import { globals } from './globals.js' +import { packageName } from './packageName.js' + +/** + * Flat ESLint configuration tailored for projects using TypeScript. + * + * @example + * #### __ECMAScript Modules (ESM) usage inside a file like `eslint.config.mts` or `eslint.config.mjs`__ + * + * ```ts + * import { flatESLintConfig } from '@reduxjs/eslint-config' + * + * export default flatESLintConfig + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `eslint.config.cts` or `eslint.config.cjs` (using `require`)__ + * + * ```ts + * const { flatESLintConfig } = require('@reduxjs/eslint-config') + * + * module.exports = flatESLintConfig + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `eslint.config.cjs` or `eslint.config.cts` (using dynamic import)__ + * + * ```ts + * module.exports = (async () => + * (await import('@reduxjs/eslint-config')).flatESLintConfig)() + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `eslint.config.cts` (using import and export assignment)__ + * + * ```ts + * import eslintConfigModule = require('@reduxjs/eslint-config') + * import flatESLintConfig = eslintConfigModule.flatESLintConfig + * + * export = flatESLintConfig + * ``` + * + * @since 0.0.1 + * @public + */ +export const flatESLintConfig: TSESLint.FlatConfig.Config[] = + /* @__PURE__ */ config( + // `ignores` must be first. + // config with just `ignores` is the replacement for `.eslintignore` + globalIgnores, + + { + name: `${js.meta.name}/recommended`, + ...js.configs.recommended, + } as const satisfies TSESLint.FlatConfig.Config satisfies Linter.Config, + + configs.recommended, + configs.stylistic, + + { + name: `${packageName}/defaults/overrides`, + languageOptions: { + globals, + parserOptions: { + ecmaVersion: 'latest', + projectService: true, + }, + }, + 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, + }, + ], + + ...disabledRules, + }, + + linterOptions: { + reportUnusedDisableDirectives: 2, + }, + } as const satisfies TSESLint.FlatConfig.Config satisfies Linter.Config, + + { + name: `${packageName}/commonjs-files`, + files: ['**/*.cjs'], + languageOptions: { + sourceType: 'commonjs', + }, + rules: { + '@typescript-eslint/no-require-imports': [ + 0, + { + allow: [], + allowAsImport: false, + }, + ], + }, + } as const satisfies TSESLint.FlatConfig.Config satisfies Linter.Config, + + prettierConfig, + ) diff --git a/packages/configs/eslint/src/utils.ts b/packages/configs/eslint/src/utils.ts new file mode 100644 index 0000000000..b0d47a481e --- /dev/null +++ b/packages/configs/eslint/src/utils.ts @@ -0,0 +1,93 @@ +import type { TSESLint } from '@typescript-eslint/utils' +import type { ConfigWithExtends } from 'typescript-eslint' +import { config } from 'typescript-eslint' +import { flatESLintConfig } from './shareableConfigs.js' + +/** + * A function that returns {@linkcode flatESLintConfig} + * along with optional additional overrides. + * It's made mainly to provide intellisense and eliminate + * the need for manual type annotations using JSDoc comments. + * + * @param additionalOverrides - **Optional** additional overrides to apply to the configuration. + * @returns An augmented version of the default {@linkcode flatESLintConfig}, incorporating any provided overrides. + * + * @example + * #### __ECMAScript Modules (ESM) usage inside a file like `eslint.config.mts` or `eslint.config.mjs`__ + * + * ```ts + * import { createESLintConfig } from '@reduxjs/eslint-config' + * + * export default createESLintConfig([ + * { + * rules: { + * 'no-console': [0], + * }, + * }, + * { + * // ...Other additional overrides + * }, + * ]) + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `eslint.config.cts` or `eslint.config.cjs` (using `require`)__ + * + * ```ts + * const { createESLintConfig } = require('@reduxjs/eslint-config') + * + * module.exports = createESLintConfig([ + * { + * rules: { + * 'no-console': [0], + * }, + * }, + * { + * // ...Other additional overrides + * }, + * ]) + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `eslint.config.cts` or `eslint.config.cjs` (using dynamic import)__ + * + * ```ts + * module.exports = (async () => + * (await import('@reduxjs/eslint-config')).createESLintConfig([ + * { + * rules: { + * 'no-console': [0], + * }, + * }, + * { + * // ...Other additional overrides + * }, + * ]))() + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `eslint.config.cts` (using import and export assignment)__ + * + * ```ts + * import eslintConfigModule = require('@reduxjs/eslint-config') + * import createESLintConfig = eslintConfigModule.createESLintConfig + * + * export = createESLintConfig([ + * { + * rules: { + * 'no-console': [0], + * }, + * }, + * { + * // ...Other additional overrides + * }, + * ]) + * ``` + * + * @since 0.0.1 + * @public + */ +export const createESLintConfig = ( + additionalOverrides: ConfigWithExtends[] = [], +): TSESLint.FlatConfig.Config[] => + /* @__PURE__ */ config(...flatESLintConfig, ...additionalOverrides) diff --git a/packages/configs/eslint/tsconfig.build.json b/packages/configs/eslint/tsconfig.build.json new file mode 100644 index 0000000000..076c5a0afe --- /dev/null +++ b/packages/configs/eslint/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "declarationMap": true, + "isolatedDeclarations": true, + "rootDir": "./src" + }, + "include": ["src"] +} diff --git a/packages/configs/eslint/tsconfig.json b/packages/configs/eslint/tsconfig.json new file mode 100644 index 0000000000..c37998ed98 --- /dev/null +++ b/packages/configs/eslint/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@reduxjs/tsconfig/node-next", + "compilerOptions": { + "noEmit": true, + "outDir": "./dist", + "rootDir": "./" + } +} diff --git a/packages/configs/eslint/tsup.config.mts b/packages/configs/eslint/tsup.config.mts new file mode 100644 index 0000000000..c37c80c09e --- /dev/null +++ b/packages/configs/eslint/tsup.config.mts @@ -0,0 +1,54 @@ +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: { + index: path.join(__dirname, 'src', 'index.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} 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/packages/configs/prettier/.gitignore b/packages/configs/prettier/.gitignore new file mode 100644 index 0000000000..707d144012 --- /dev/null +++ b/packages/configs/prettier/.gitignore @@ -0,0 +1,31 @@ +.DS_Store +*.log +node_modules/ +dist/ +build/ +lib/ +.yalc/ +yalc.lock +.idea/ +.vscode/ +temp/ +.temp/ +.tmp/ +.tmp-projections +.rts2* +coverage/ +.cache/ +.yarnrc +.yarn/ +!.yarn/patches/ +!.yarn/releases/ +!.yarn/plugins/ +!.yarn/sdks/ +!.yarn/versions/ +.pnp.* +*.tgz +tsconfig*.vitest-temp.json +.vitest-reports/ +.eslintcache +tsconfig*.tsbuildinfo +.docusaurus/ diff --git a/packages/configs/prettier/README.md b/packages/configs/prettier/README.md new file mode 100644 index 0000000000..104014c128 --- /dev/null +++ b/packages/configs/prettier/README.md @@ -0,0 +1,88 @@ +# Prettier Config + +Prettier configuration tailored for Redux projects. + +## Installation + +#### NPM + +```bash +npm install --save-dev @reduxjs/prettier-config +``` + +#### Yarn + +```bash +yarn add --dev @reduxjs/prettier-config +``` + +#### PNPM + +```bash +pnpm add --save-dev @reduxjs/prettier-config +``` + +#### Bun + +```bash +bun add --dev @reduxjs/prettier-config +``` + +## Usage + +**ECMAScript Modules (ESM) usage inside a file like `prettier.config.mjs`**: + +```js +import { prettierConfig } from '@reduxjs/prettier-config' + +export default prettierConfig +``` + +**CommonJS (CJS) usage inside a file like `prettier.config.cjs` (using `require`)**: + +```js +const { prettierConfig } = require('@reduxjs/prettier-config') + +module.exports = prettierConfig +``` + +**CommonJS (CJS) usage inside a file like `prettier.config.cjs` (using dynamic import)**: + +```js +module.exports = (async () => + (await import('@reduxjs/prettier-config')).prettierConfig)() +``` + +To avoid having to write JSDocs we also provide a `createPrettierConfig` function. This function already includes the default `prettierConfig` and you can pass in additional overrides as an argument. + +**ECMAScript Modules (ESM) usage inside a file like `prettier.config.mjs`**: + +```js +import { createPrettierConfig } from '@reduxjs/prettier-config' + +export default createPrettierConfig({ + arrowParens: 'avoid', + // ...Other additional overrides +}) +``` + +**CommonJS (CJS) usage inside a file like `prettier.config.cjs` (using `require`)**: + +```js +const { createPrettierConfig } = require('@reduxjs/prettier-config') + +module.exports = createPrettierConfig({ + arrowParens: 'avoid', + // ...Other additional overrides +}) +``` + +**CommonJS (CJS) usage inside a file like `prettier.config.cjs` (using dynamic import)**: + +```js +module.exports = (async () => + (await import('@reduxjs/prettier-config')).createPrettierConfig({ + arrowParens: 'avoid', + // ...Other additional overrides + }))() +``` diff --git a/packages/configs/prettier/package.json b/packages/configs/prettier/package.json new file mode 100644 index 0000000000..0a63244b3f --- /dev/null +++ b/packages/configs/prettier/package.json @@ -0,0 +1,91 @@ +{ + "name": "@reduxjs/prettier-config", + "version": "0.0.1", + "description": "Prettier configuration for Redux projects", + "keywords": [ + "prettier", + "config", + "prettier-config", + "reduxjs", + "redux-toolkit", + "configuration" + ], + "homepage": "https://github.com/reduxjs/redux-toolkit/tree/master/packages/configs/prettier#readme", + "bugs": { + "url": "https://github.com/reduxjs/redux-toolkit/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/reduxjs/redux-toolkit.git", + "directory": "packages/configs/prettier" + }, + "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" + ], + "scripts": { + "build": "tsup --config=$INIT_CWD/tsup.config.mts", + "check-exports": "attw --pack $INIT_CWD", + "check-package-json": "publint --strict $INIT_CWD", + "clean": "rimraf $INIT_CWD/dist/", + "format-check": "yarn run -T format-check", + "format": "yarn run -T format", + "lint-fix": "yarn run -T lint-fix", + "lint": "yarn run -T lint", + "prepack": "yarn clean && yarn build", + "test-types": "tsc -p $INIT_CWD/tsconfig.json" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.18.0", + "@reduxjs/tsconfig": "workspace:^", + "@types/node": "^22.15.15", + "prettier": "^3.5.3", + "publint": "^0.3.12", + "rimraf": "^6.0.1", + "tsup": "^8.4.0", + "typescript": "^5.8.3" + }, + "peerDependencies": { + "prettier": ">=3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } + }, + "publishConfig": { + "access": "public", + "provenance": true + } +} diff --git a/packages/configs/prettier/src/defaults.ts b/packages/configs/prettier/src/defaults.ts new file mode 100644 index 0000000000..029e4c387d --- /dev/null +++ b/packages/configs/prettier/src/defaults.ts @@ -0,0 +1,38 @@ +import type { Config } from 'prettier' + +/** + * Prettier configuration. + * + * @example + * #### __ECMAScript Modules (ESM) usage inside a file like `prettier.config.mjs`__ + * + * ```js + * import { prettierConfig } from '@reduxjs/prettier-config' + * + * export default prettierConfig + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `prettier.config.cjs` (using `require`)__ + * + * ```js + * const { prettierConfig } = require('@reduxjs/prettier-config') + * + * module.exports = prettierConfig + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `prettier.config.cjs` (using dynamic import)__ + * + * ```js + * module.exports = (async () => + * (await import('@reduxjs/prettier-config')).prettierConfig)() + * ``` + * + * @public + * @since 0.0.1 + */ +export const prettierConfig: Config = { + semi: false, + singleQuote: true, +} diff --git a/packages/configs/prettier/src/index.ts b/packages/configs/prettier/src/index.ts new file mode 100644 index 0000000000..c035179265 --- /dev/null +++ b/packages/configs/prettier/src/index.ts @@ -0,0 +1,2 @@ +export { prettierConfig } from './defaults.js' +export { createPrettierConfig } from './utils.js' diff --git a/packages/configs/prettier/src/utils.ts b/packages/configs/prettier/src/utils.ts new file mode 100644 index 0000000000..80b47e42c0 --- /dev/null +++ b/packages/configs/prettier/src/utils.ts @@ -0,0 +1,53 @@ +import type { Config } from 'prettier' +import { prettierConfig } from './defaults.js' + +/** + * A function that returns {@linkcode prettierConfig} + * along with optional additional overrides. + * It's made mainly to provide intellisense and eliminate + * the need for manual type annotations using JSDoc comments. + * + * @param additionalOverrides - Optional additional overrides to apply to the configuration. + * @returns An augmented version of the default {@linkcode prettierConfig}, incorporating any provided overrides. + * + * @example + * #### __ECMAScript Modules (ESM) usage inside a file like `prettier.config.mjs`__ + * + * ```js + * import { createPrettierConfig } from '@reduxjs/prettier-config' + * + * export default createPrettierConfig({ + * arrowParens: 'avoid', + * // ...Other additional overrides + * }) + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `prettier.config.cjs` (using `require`)__ + * + * ```js + * const { createPrettierConfig } = require('@reduxjs/prettier-config') + * + * module.exports = createPrettierConfig({ + * arrowParens: 'avoid', + * // ...Other additional overrides + * }) + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `prettier.config.cjs` (using dynamic import)__ + * + * ```js + * module.exports = (async () => + * (await import('@reduxjs/prettier-config')).createPrettierConfig({ + * arrowParens: 'avoid', + * // ...Other additional overrides + * }))() + * ``` + * + * @public + * @since 0.0.1 + */ +export const createPrettierConfig = ( + additionalOverrides: Config = {}, +): Config => ({ ...prettierConfig, ...additionalOverrides }) diff --git a/packages/configs/prettier/tsconfig.build.json b/packages/configs/prettier/tsconfig.build.json new file mode 100644 index 0000000000..076c5a0afe --- /dev/null +++ b/packages/configs/prettier/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "declarationMap": true, + "isolatedDeclarations": true, + "rootDir": "./src" + }, + "include": ["src"] +} diff --git a/packages/configs/prettier/tsconfig.json b/packages/configs/prettier/tsconfig.json new file mode 100644 index 0000000000..c37998ed98 --- /dev/null +++ b/packages/configs/prettier/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@reduxjs/tsconfig/node-next", + "compilerOptions": { + "noEmit": true, + "outDir": "./dist", + "rootDir": "./" + } +} diff --git a/packages/configs/prettier/tsup.config.mts b/packages/configs/prettier/tsup.config.mts new file mode 100644 index 0000000000..c37c80c09e --- /dev/null +++ b/packages/configs/prettier/tsup.config.mts @@ -0,0 +1,54 @@ +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: { + index: path.join(__dirname, 'src', 'index.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} 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/packages/configs/typescript/.gitignore b/packages/configs/typescript/.gitignore new file mode 100644 index 0000000000..707d144012 --- /dev/null +++ b/packages/configs/typescript/.gitignore @@ -0,0 +1,31 @@ +.DS_Store +*.log +node_modules/ +dist/ +build/ +lib/ +.yalc/ +yalc.lock +.idea/ +.vscode/ +temp/ +.temp/ +.tmp/ +.tmp-projections +.rts2* +coverage/ +.cache/ +.yarnrc +.yarn/ +!.yarn/patches/ +!.yarn/releases/ +!.yarn/plugins/ +!.yarn/sdks/ +!.yarn/versions/ +.pnp.* +*.tgz +tsconfig*.vitest-temp.json +.vitest-reports/ +.eslintcache +tsconfig*.tsbuildinfo +.docusaurus/ diff --git a/packages/configs/typescript/README.md b/packages/configs/typescript/README.md new file mode 100644 index 0000000000..6690be3b6b --- /dev/null +++ b/packages/configs/typescript/README.md @@ -0,0 +1,43 @@ +# TypeScript Config + +A collection of different TypeScript configurations tailored for Redux projects. + +## Installation + +#### NPM + +```bash +npm install --save-dev @reduxjs/tsconfig +``` + +#### Yarn + +```bash +yarn add --dev @reduxjs/tsconfig +``` + +#### PNPM + +```bash +pnpm add --save-dev @reduxjs/tsconfig +``` + +#### Bun + +```bash +bun add --dev @reduxjs/tsconfig +``` + +## Usage + +**Inside a file like `tsconfig.json`**: + +```json +{ + "extends": "@reduxjs/tsconfig/base", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src" + } +} +``` diff --git a/packages/configs/typescript/base/tsconfig.json b/packages/configs/typescript/base/tsconfig.json new file mode 100644 index 0000000000..9d0caef21b --- /dev/null +++ b/packages/configs/typescript/base/tsconfig.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "declaration": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "jsx": "react", + "lib": ["DOM", "ESNext"], + "module": "ESNext", + "moduleResolution": "Node", + "noErrorTruncation": true, + "noFallthroughCasesInSwitch": true, + "noImplicitOverride": true, + "noImplicitReturns": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "target": "ESNext", + "types": ["vitest/globals", "vitest/importMeta"], + "useDefineForClassFields": true, + "useUnknownInCatchVariables": true + }, + "display": "Redux Base TSConfig" +} diff --git a/packages/configs/typescript/bundler/esnext/tsconfig.json b/packages/configs/typescript/bundler/esnext/tsconfig.json new file mode 100644 index 0000000000..acdbe804ac --- /dev/null +++ b/packages/configs/typescript/bundler/esnext/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@reduxjs/tsconfig/base", + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "moduleResolution": "Bundler" + }, + "display": "Redux TSConfig with Bundler Resolution and ESNext Module" +} diff --git a/packages/configs/typescript/bundler/preserve/tsconfig.json b/packages/configs/typescript/bundler/preserve/tsconfig.json new file mode 100644 index 0000000000..e59d1337c1 --- /dev/null +++ b/packages/configs/typescript/bundler/preserve/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@reduxjs/tsconfig/bundler/esnext", + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "module": "Preserve", + "moduleResolution": "Bundler" + }, + "display": "Redux TSConfig with Bundler Resolution and Preserve Modules" +} diff --git a/packages/configs/typescript/create-react-app/tsconfig.json b/packages/configs/typescript/create-react-app/tsconfig.json new file mode 100644 index 0000000000..170203a1b7 --- /dev/null +++ b/packages/configs/typescript/create-react-app/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "@reduxjs/tsconfig/base", + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "allowJs": true, + "jsx": "react-jsx", + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "noEmit": true, + "target": "ES5", + "types": null + }, + "display": "TypeScript Config for Create React App" +} diff --git a/packages/configs/typescript/node-10/tsconfig.json b/packages/configs/typescript/node-10/tsconfig.json new file mode 100644 index 0000000000..080b2f7fb3 --- /dev/null +++ b/packages/configs/typescript/node-10/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@reduxjs/tsconfig/base", + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "moduleResolution": "Node10" + }, + "display": "TypeScript configuration with `Node10` module resolution. It serves as a backwards compatible replacement for the deprecated `Node` module resolution." +} diff --git a/packages/configs/typescript/node-16/tsconfig.json b/packages/configs/typescript/node-16/tsconfig.json new file mode 100644 index 0000000000..20578f7d32 --- /dev/null +++ b/packages/configs/typescript/node-16/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@reduxjs/tsconfig/base", + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "module": "Node16", + "moduleResolution": "Node16" + }, + "display": "TypeScript configuration with `Node16` module resolution" +} diff --git a/packages/configs/typescript/node-next/tsconfig.json b/packages/configs/typescript/node-next/tsconfig.json new file mode 100644 index 0000000000..4065192a7e --- /dev/null +++ b/packages/configs/typescript/node-next/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@reduxjs/tsconfig/base", + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "module": "NodeNext", + "moduleResolution": "NodeNext" + }, + "display": "Redux TSConfig with NodeNext Module and Resolution" +} diff --git a/packages/configs/typescript/node-next/with-js/tsconfig.json b/packages/configs/typescript/node-next/with-js/tsconfig.json new file mode 100644 index 0000000000..a5f73fbe1a --- /dev/null +++ b/packages/configs/typescript/node-next/with-js/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@reduxjs/tsconfig/node-next", + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "allowJs": true, + "checkJs": true + }, + "display": "TypeScript configuration with `NodeNext` module resolution and JavaScript support" +} diff --git a/packages/configs/typescript/package.json b/packages/configs/typescript/package.json new file mode 100644 index 0000000000..6ca80b0961 --- /dev/null +++ b/packages/configs/typescript/package.json @@ -0,0 +1,73 @@ +{ + "name": "@reduxjs/tsconfig", + "version": "0.0.1", + "description": "TypeScript configuration for Redux projects", + "keywords": [ + "config", + "reduxjs", + "redux-toolkit", + "tsconfig", + "typescript", + "ts", + "configuration" + ], + "homepage": "https://github.com/reduxjs/redux-toolkit/tree/master/packages/configs/typescript#readme", + "bugs": { + "url": "https://github.com/reduxjs/redux-toolkit/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/reduxjs/redux-toolkit.git", + "directory": "packages/configs/typescript" + }, + "sideEffects": false, + "type": "module", + "exports": { + ".": "./base/tsconfig.json", + "./tsconfig.json": "./base/tsconfig.json", + "./base": "./base/tsconfig.json", + "./Base": "./base/tsconfig.json", + "./bundler": "./bundler/esnext/tsconfig.json", + "./Bundler": "./bundler/esnext/tsconfig.json", + "./bundler/esnext": "./bundler/esnext/tsconfig.json", + "./Bundler/esnext": "./bundler/esnext/tsconfig.json", + "./Bundler/ESNext": "./bundler/esnext/tsconfig.json", + "./bundler/preserve": "./bundler/preserve/tsconfig.json", + "./Bundler/preserve": "./bundler/preserve/tsconfig.json", + "./Bundler/Preserve": "./bundler/preserve/tsconfig.json", + "./cra": "./create-react-app/tsconfig.json", + "./create-react-app": "./create-react-app/tsconfig.json", + "./node": "./base/tsconfig.json", + "./Node": "./base/tsconfig.json", + "./node-10": "./node-10/tsconfig.json", + "./node10": "./node-10/tsconfig.json", + "./Node10": "./node-10/tsconfig.json", + "./node-16": "./node-16/tsconfig.json", + "./node16": "./node-16/tsconfig.json", + "./Node16": "./node-16/tsconfig.json", + "./node-next": "./node-next/tsconfig.json", + "./nodenext": "./node-next/tsconfig.json", + "./NodeNext": "./node-next/tsconfig.json", + "./node-next/with-js": "./node-next/with-js/tsconfig.json", + "./nodenext/with-js": "./node-next/with-js/tsconfig.json", + "./NodeNext/with-js": "./node-next/with-js/tsconfig.json", + "./package.json": "./package.json" + }, + "main": "./base/tsconfig.json", + "scripts": { + "check-exports": "attw --pack $INIT_CWD", + "check-package-json": "publint --strict $INIT_CWD", + "format-check": "yarn run -T format-check", + "format": "yarn run -T format", + "lint-fix": "yarn run -T lint-fix", + "lint": "yarn run -T lint" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.18.0", + "publint": "^0.3.12" + }, + "publishConfig": { + "access": "public", + "provenance": true + } +} diff --git a/packages/configs/vitest/.gitignore b/packages/configs/vitest/.gitignore new file mode 100644 index 0000000000..707d144012 --- /dev/null +++ b/packages/configs/vitest/.gitignore @@ -0,0 +1,31 @@ +.DS_Store +*.log +node_modules/ +dist/ +build/ +lib/ +.yalc/ +yalc.lock +.idea/ +.vscode/ +temp/ +.temp/ +.tmp/ +.tmp-projections +.rts2* +coverage/ +.cache/ +.yarnrc +.yarn/ +!.yarn/patches/ +!.yarn/releases/ +!.yarn/plugins/ +!.yarn/sdks/ +!.yarn/versions/ +.pnp.* +*.tgz +tsconfig*.vitest-temp.json +.vitest-reports/ +.eslintcache +tsconfig*.tsbuildinfo +.docusaurus/ diff --git a/packages/configs/vitest/README.md b/packages/configs/vitest/README.md new file mode 100644 index 0000000000..96c1e8a660 --- /dev/null +++ b/packages/configs/vitest/README.md @@ -0,0 +1,210 @@ +# Vitest Config + +Vitest configuration tailored for Redux projects. + +## Installation + +#### NPM + +```bash +npm install --save-dev @reduxjs/vitest-config +``` + +#### Yarn + +```bash +yarn add --dev @reduxjs/vitest-config +``` + +#### PNPM + +```bash +pnpm add --save-dev @reduxjs/vitest-config +``` + +#### Bun + +```bash +bun add --dev @reduxjs/vitest-config +``` + +## Usage + +### **`vitestConfig`** + +Shareable [**Vitest**](https://vitest.dev) configuration tailored for projects using TypeScript. + +**ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`**: + +```ts +import { vitestConfig } from '@reduxjs/vitest-config' + +export default vitestConfig +``` + +**CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)**: + +```ts +const { vitestConfig } = require('@reduxjs/vitest-config') + +module.exports = vitestConfig +``` + +**CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)**: + +```ts +module.exports = (async () => + (await import('@reduxjs/vitest-config')).vitestConfig)() +``` + +**CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)**: + +```ts +import vitestConfigModule = require('@reduxjs/vitest-config') +import vitestConfig = vitestConfigModule.vitestConfig + +export = vitestConfig +``` + +### **`vitestProject`** + +Shareable [**Vitest**](https://vitest.dev) configuration tailored for projects using TypeScript. + +**ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`** + +```ts +import { vitestProject } from '@reduxjs/vitest-config' +export default vitestProject +``` + +**CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)** + +```ts +const { vitestProject } = require('@reduxjs/vitest-config') +module.exports = vitestProject +``` + +**CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)** + +```ts +module.exports = (async () => + (await import('@reduxjs/vitest-config')).vitestProject)() +``` + +**CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)** + +```ts +import vitestConfigModule = require('@reduxjs/vitest-config') +import vitestProject = vitestConfigModule.vitestProject +export = vitestProject +``` + +### **`createVitestConfig`** + +To avoid having to write JSDocs we also provide a `createVitestConfig` function. This function already includes the default **`vitestConfig`** and you can pass in additional overrides as an argument. + +**ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`**: + +```ts +import { createVitestConfig } from '@reduxjs/vitest-config' + +export default createVitestConfig({ + test: { + environment: 'jsdom', + // Other additional overrides + }, +}) +``` + +**CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)**: + +```ts +const { createVitestConfig } = require('@reduxjs/vitest-config') + +module.exports = createVitestConfig({ + test: { + environment: 'jsdom', + // Other additional overrides + }, +}) +``` + +**CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)**: + +```ts +module.exports = (async () => + (await import('@reduxjs/vitest-config')).createVitestConfig({ + test: { + environment: 'jsdom', + // Other additional overrides + }, + }))() +``` + +**CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)**: + +```ts +import vitestConfigModule = require('@reduxjs/vitest-config') +import createVitestConfig = vitestConfigModule.createVitestConfig + +export = createVitestConfig({ + test: { + environment: 'jsdom', + // Other additional overrides + }, +}) +``` + +### **`createVitestProject`** + +A function that returns **`vitestProject`** +along with optional additional overrides. + +**ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`** + +```ts +import { createVitestProject } from '@reduxjs/vitest-config' +export default createVitestProject({ + test: { + environment: 'jsdom', + // Other additional overrides + }, +}) +``` + +**CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)** + +```ts +const { createVitestProject } = require('@reduxjs/vitest-config') +module.exports = createVitestProject({ + test: { + environment: 'jsdom', + // Other additional overrides + }, +}) +``` + +**CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)** + +```ts +module.exports = (async () => + (await import('@reduxjs/vitest-config')).createVitestProject({ + test: { + environment: 'jsdom', + // Other additional overrides + }, + }))() +``` + +**CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)** + +```ts +import vitestConfigModule = require('@reduxjs/vitest-config') +import createVitestProject = vitestConfigModule.createVitestProject +export = createVitestProject({ + test: { + environment: 'jsdom', + // Other additional overrides + }, +}) +``` diff --git a/packages/configs/vitest/package.json b/packages/configs/vitest/package.json new file mode 100644 index 0000000000..77b26b05c8 --- /dev/null +++ b/packages/configs/vitest/package.json @@ -0,0 +1,100 @@ +{ + "name": "@reduxjs/vitest-config", + "version": "0.0.1", + "description": "Vitest configuration for Redux projects", + "keywords": [ + "config", + "reduxjs", + "redux-toolkit", + "vitest-config", + "vitest", + "vite", + "configuration" + ], + "homepage": "https://github.com/reduxjs/redux-toolkit/tree/master/packages/configs/vitest#readme", + "bugs": { + "url": "https://github.com/reduxjs/redux-toolkit/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/reduxjs/redux-toolkit.git", + "directory": "packages/configs/vitest" + }, + "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" + ], + "scripts": { + "build": "tsup --config=$INIT_CWD/tsup.config.mts", + "check-exports": "attw --pack $INIT_CWD", + "check-package-json": "publint --strict $INIT_CWD", + "clean": "rimraf $INIT_CWD/dist/", + "format-check": "yarn run -T format-check", + "format": "yarn run -T format", + "lint-fix": "yarn run -T lint-fix", + "lint": "yarn run -T lint", + "prepack": "yarn clean && yarn build", + "test-types": "tsc -p $INIT_CWD/tsconfig.json" + }, + "dependencies": { + "vite-tsconfig-paths": "^5.1.4" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.18.0", + "@reduxjs/tsconfig": "workspace:^", + "@types/node": "^22.15.15", + "publint": "^0.3.12", + "rimraf": "^6.0.1", + "tsup": "^8.4.0", + "typescript": "^5.8.3", + "vite": "^6.3.5", + "vitest": "^3.1.3" + }, + "peerDependencies": { + "vite": "*", + "vitest": ">=1" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + }, + "vitest": { + "optional": true + } + }, + "publishConfig": { + "access": "public", + "provenance": true + } +} diff --git a/packages/configs/vitest/src/defaults.ts b/packages/configs/vitest/src/defaults.ts new file mode 100644 index 0000000000..7ed3b5fb5e --- /dev/null +++ b/packages/configs/vitest/src/defaults.ts @@ -0,0 +1,164 @@ +import type { Plugin, UserWorkspaceConfig, ViteUserConfig } from 'vitest/config' +import { plugins } from './plugins.js' + +/** + * Default configuration for {@linkcode vitestProject}. + * + * @since 0.0.1 + * @public + */ +export const vitestProjectDefaults = { + define: { + 'import.meta.vitest': 'undefined', + }, + + plugins, + + test: { + clearMocks: true, + globals: true, + + typecheck: { + enabled: true, + tsconfig: './tsconfig.json', + }, + + unstubEnvs: true, + unstubGlobals: true, + }, +} as const satisfies UserWorkspaceConfig satisfies { + readonly define: { + readonly 'import.meta.vitest': 'undefined' + } + readonly plugins: [Plugin] + readonly test: { + readonly clearMocks: true + readonly globals: true + readonly typecheck: { + readonly enabled: true + readonly tsconfig: './tsconfig.json' + } + readonly unstubEnvs: true + readonly unstubGlobals: true + } +} as { + readonly define: { + readonly 'import.meta.vitest': 'undefined' + } + readonly plugins: [Plugin] + readonly test: { + readonly clearMocks: true + readonly globals: true + readonly typecheck: { + readonly enabled: true + readonly tsconfig: './tsconfig.json' + } + readonly unstubEnvs: true + readonly unstubGlobals: true + } +} + +/** + * Default configuration for {@linkcode vitestConfig}. + * + * @since 0.0.1 + * @public + */ +export const vitestConfigDefaults = { + ...vitestProjectDefaults, + + test: { + ...vitestProjectDefaults.test, + + coverage: { + extension: ['.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs', '.cts', '.cjs'], + include: ['src'], + }, + + reporters: process.env.GITHUB_ACTIONS + ? ([['default', { summary: false }], ['github-actions']] as const) + : ([['default']] as const), + + watch: false, + }, +} as const satisfies ViteUserConfig satisfies { + readonly test: { + readonly coverage: { + readonly extension: [ + '.ts', + '.tsx', + '.js', + '.jsx', + '.mts', + '.mjs', + '.cts', + '.cjs', + ] + readonly include: ['src'] + } + readonly reporters: + | [['default']] + | [ + [ + 'default', + { + readonly summary: false + }, + ], + ['github-actions'], + ] + readonly watch: false + readonly clearMocks: true + readonly globals: true + readonly typecheck: { + readonly enabled: true + readonly tsconfig: './tsconfig.json' + } + readonly unstubEnvs: true + readonly unstubGlobals: true + } + readonly define: { + readonly 'import.meta.vitest': 'undefined' + } + readonly plugins: [Plugin] +} as { + readonly test: { + readonly coverage: { + readonly extension: [ + '.ts', + '.tsx', + '.js', + '.jsx', + '.mts', + '.mjs', + '.cts', + '.cjs', + ] + readonly include: ['src'] + } + readonly reporters: + | [['default']] + | [ + [ + 'default', + { + readonly summary: false + }, + ], + ['github-actions'], + ] + readonly watch: false + readonly clearMocks: true + readonly globals: true + readonly typecheck: { + readonly enabled: true + readonly tsconfig: './tsconfig.json' + } + readonly unstubEnvs: true + readonly unstubGlobals: true + } + readonly define: { + readonly 'import.meta.vitest': 'undefined' + } + readonly plugins: [Plugin] +} diff --git a/packages/configs/vitest/src/index.ts b/packages/configs/vitest/src/index.ts new file mode 100644 index 0000000000..49ab42d31f --- /dev/null +++ b/packages/configs/vitest/src/index.ts @@ -0,0 +1,7 @@ +export { default as tsconfigPaths } from 'vite-tsconfig-paths' +export type { PluginOptions } from 'vite-tsconfig-paths' +export type { Plugin, UserWorkspaceConfig, ViteUserConfig } from 'vitest/config' +export { vitestConfigDefaults, vitestProjectDefaults } from './defaults.js' +export { plugins } from './plugins.js' +export { vitestConfig, vitestProject } from './shareableConfigs.js' +export { createVitestConfig, createVitestProject } from './utils.js' diff --git a/packages/configs/vitest/src/plugins.ts b/packages/configs/vitest/src/plugins.ts new file mode 100644 index 0000000000..62f82b8277 --- /dev/null +++ b/packages/configs/vitest/src/plugins.ts @@ -0,0 +1,15 @@ +import tsconfigPaths from 'vite-tsconfig-paths' +import type { Plugin } from 'vitest/config' + +/** + * A list of plugins to be used with Vitest. + * + * @since 0.0.1 + * @public + */ +export const plugins: [Plugin] = [ + /* @__PURE__ */ tsconfigPaths({ + projects: ['./tsconfig.json'], + configNames: ['tsconfig.json'], + }), +] as const satisfies [Plugin] diff --git a/packages/configs/vitest/src/shareableConfigs.ts b/packages/configs/vitest/src/shareableConfigs.ts new file mode 100644 index 0000000000..a97530aaab --- /dev/null +++ b/packages/configs/vitest/src/shareableConfigs.ts @@ -0,0 +1,95 @@ +import type { UserWorkspaceConfig, ViteUserConfig } from 'vitest/config' +import { defineConfig, defineProject } from 'vitest/config' +import { vitestConfigDefaults } from './defaults.js' + +/** + * Shareable **{@link https://vitest.dev | Vitest}** + * configuration tailored for projects using TypeScript. + * + * @example + * #### __ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`__ + * + * ```ts + * import { vitestConfig } from '@reduxjs/vitest-config' + * + * export default vitestConfig + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)__ + * + * ```ts + * const { vitestConfig } = require('@reduxjs/vitest-config') + * + * module.exports = vitestConfig + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)__ + * + * ```ts + * module.exports = (async () => + * (await import('@reduxjs/vitest-config')).vitestConfig)() + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)__ + * + * ```ts + * import vitestConfigModule = require('@reduxjs/vitest-config') + * import vitestConfig = vitestConfigModule.vitestConfig + * + * export = vitestConfig + * ``` + * + * @since 0.0.3 + * @public + */ +export const vitestConfig: ViteUserConfig = + /* @__PURE__ */ defineConfig(vitestConfigDefaults) + +/** + * Shareable **{@link https://vitest.dev | Vitest}** + * configuration tailored for projects using TypeScript. + * + * @example + * #### __ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`__ + * + * ```ts + * import { vitestProject } from '@reduxjs/vitest-config' + * + * export default vitestProject + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)__ + * + * ```ts + * const { vitestProject } = require('@reduxjs/vitest-config') + * + * module.exports = vitestProject + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)__ + * + * ```ts + * module.exports = (async () => + * (await import('@reduxjs/vitest-config')).vitestProject)() + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)__ + * + * ```ts + * import vitestConfigModule = require('@reduxjs/vitest-config') + * import vitestProject = vitestConfigModule.vitestProject + * + * export = vitestProject + * ``` + * + * @since 0.0.1 + * @public + */ +export const vitestProject: UserWorkspaceConfig = + /* @__PURE__ */ defineProject(vitestConfigDefaults) diff --git a/packages/configs/vitest/src/utils.ts b/packages/configs/vitest/src/utils.ts new file mode 100644 index 0000000000..08a3fe427f --- /dev/null +++ b/packages/configs/vitest/src/utils.ts @@ -0,0 +1,145 @@ +import type { UserWorkspaceConfig, ViteUserConfig } from 'vitest/config' +import { mergeConfig } from 'vitest/config' +import { vitestConfig, vitestProject } from './shareableConfigs.js' + +/** + * A function that returns {@linkcode vitestConfig} + * along with optional additional overrides. + * + * @param additionalOverrides - Optional additional overrides to apply to the configuration. + * @returns An augmented version of the default {@linkcode vitestConfig}, incorporating any provided overrides. + * + * @example + * #### __ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`__ + * + * ```ts + * import { createVitestConfig } from '@reduxjs/vitest-config' + * + * export default createVitestConfig({ + * test: { + * environment: 'jsdom', + * // Other additional overrides + * }, + * }) + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)__ + * + * ```ts + * const { createVitestConfig } = require('@reduxjs/vitest-config') + * + * module.exports = createVitestConfig({ + * test: { + * environment: 'jsdom', + * // Other additional overrides + * }, + * }) + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)__ + * + * ```ts + * module.exports = (async () => + * (await import('@reduxjs/vitest-config')).createVitestConfig({ + * test: { + * environment: 'jsdom', + * // Other additional overrides + * }, + * }))() + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)__ + * + * ```ts + * import vitestConfigModule = require('@reduxjs/vitest-config') + * import createVitestConfig = vitestConfigModule.createVitestConfig + * + * export = createVitestConfig({ + * test: { + * environment: 'jsdom', + * // Other additional overrides + * }, + * }) + * ``` + * + * @since 0.0.1 + * @public + */ +export const createVitestConfig = ( + additionalOverrides: ViteUserConfig = {}, +): ViteUserConfig => + /* @__PURE__ */ mergeConfig(vitestConfig, additionalOverrides) + +/** + * A function that returns {@linkcode vitestProject} + * along with optional additional overrides. + * + * @param additionalOverrides - Optional additional overrides to apply to the configuration. + * @returns An augmented version of the default {@linkcode vitestProject}, incorporating any provided overrides. + * + * @example + * #### __ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`__ + * + * ```ts + * import { createVitestProject } from '@reduxjs/vitest-config' + * + * export default createVitestProject({ + * test: { + * environment: 'jsdom', + * // Other additional overrides + * }, + * }) + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)__ + * + * ```ts + * const { createVitestProject } = require('@reduxjs/vitest-config') + * + * module.exports = createVitestProject({ + * test: { + * environment: 'jsdom', + * // Other additional overrides + * }, + * }) + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)__ + * + * ```ts + * module.exports = (async () => + * (await import('@reduxjs/vitest-config')).createVitestProject({ + * test: { + * environment: 'jsdom', + * // Other additional overrides + * }, + * }))() + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)__ + * + * ```ts + * import vitestConfigModule = require('@reduxjs/vitest-config') + * import createVitestProject = vitestConfigModule.createVitestProject + * + * export = createVitestProject({ + * test: { + * environment: 'jsdom', + * // Other additional overrides + * }, + * }) + * ``` + * + * @since 0.0.1 + * @public + */ +export const createVitestProject = ( + additionalOverrides: UserWorkspaceConfig = {}, +): UserWorkspaceConfig => + /* @__PURE__ */ mergeConfig(vitestProject, additionalOverrides) diff --git a/packages/configs/vitest/tsconfig.build.json b/packages/configs/vitest/tsconfig.build.json new file mode 100644 index 0000000000..076c5a0afe --- /dev/null +++ b/packages/configs/vitest/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "declarationMap": true, + "isolatedDeclarations": true, + "rootDir": "./src" + }, + "include": ["src"] +} diff --git a/packages/configs/vitest/tsconfig.json b/packages/configs/vitest/tsconfig.json new file mode 100644 index 0000000000..c37998ed98 --- /dev/null +++ b/packages/configs/vitest/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@reduxjs/tsconfig/node-next", + "compilerOptions": { + "noEmit": true, + "outDir": "./dist", + "rootDir": "./" + } +} diff --git a/packages/configs/vitest/tsup.config.mts b/packages/configs/vitest/tsup.config.mts new file mode 100644 index 0000000000..812afd928d --- /dev/null +++ b/packages/configs/vitest/tsup.config.mts @@ -0,0 +1,61 @@ +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: { + index: path.join(__dirname, 'src', 'index.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'], + + // Causes `ERR_REQUIRE_ESM` error in CommonJS modules since + // it is an ESM module (has `"type": "module"` in its `package.json`), + // and cannot be imported using the `require` syntax, + // we can inline it to get around this problem. + noExternal: ['vite-tsconfig-paths'], + external: ['debug', 'globrex', 'tsconfck'], + }, + { + ...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/yarn.lock b/yarn.lock index e92552b700..276ca434cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -489,6 +489,23 @@ __metadata: languageName: node linkType: hard +"@arethetypeswrong/cli@npm:^0.18.0": + version: 0.18.0 + resolution: "@arethetypeswrong/cli@npm:0.18.0" + dependencies: + "@arethetypeswrong/core": "npm:0.18.0" + 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/5215195aa57598210feaef119eb0afa05a0c744d72cb70de7a985d3159060b96be28a0a302cc05333894d583da38b5688fe722bb29f080b6f7d3039398e305b4 + languageName: node + linkType: hard + "@arethetypeswrong/core@npm:0.13.9": version: 0.13.9 resolution: "@arethetypeswrong/core@npm:0.13.9" @@ -503,6 +520,22 @@ __metadata: languageName: node linkType: hard +"@arethetypeswrong/core@npm:0.18.0": + version: 0.18.0 + resolution: "@arethetypeswrong/core@npm:0.18.0" + dependencies: + "@andrewbranch/untar.js": "npm:^1.0.3" + "@loaderkit/resolve": "npm:^1.0.2" + cjs-module-lexer: "npm:^1.2.3" + fflate: "npm:^0.8.2" + lru-cache: "npm:^11.0.1" + semver: "npm:^7.5.4" + typescript: "npm:5.6.1-rc" + validate-npm-package-name: "npm:^5.0.0" + checksum: 10/aa599558c1b4716e2e83cf31b9b90e3570bae8bbf9457887004092241e49a74b5ba1f32919dc63cbce9d5935f774154c3fdd51cf4e0b178859f8fe9813acb28f + languageName: node + linkType: hard + "@asamuzakjp/css-color@npm:^3.1.2": version: 3.1.7 resolution: "@asamuzakjp/css-color@npm:3.1.7" @@ -547,10 +580,10 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/compat-data@npm:7.27.1" - checksum: 10/1b2982a8d8cd970fcb7a038c0e9451084f5ce99d3f283e00bbac3fe68ee07ab37024cc5ee273845d8b5543a86c7aa0efe1c847993c526556ff76887dc5a9ee40 +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/compat-data@npm:7.27.2" + checksum: 10/eaa9f8aaeb9475779f4411fa397f712a6441b650d4e0b40c5535c954c891cd35c0363004db42902192aa8224532ac31ce06890478b060995286fe4fadd54e542 languageName: node linkType: hard @@ -613,16 +646,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.23.6, @babel/helper-compilation-targets@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-compilation-targets@npm:7.27.1" +"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.23.6, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/helper-compilation-targets@npm:7.27.2" dependencies: - "@babel/compat-data": "npm:^7.27.1" + "@babel/compat-data": "npm:^7.27.2" "@babel/helper-validator-option": "npm:^7.27.1" browserslist: "npm:^4.24.0" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 10/7186b92bb9ac8f73cc40a708110b3f8ca9f6bc90369f92e76901ed68b02e421038e84ac4275d00b9d680fcb7be88921f865f94abd01619b028a3cc09edc040e8 + checksum: 10/bd53c30a7477049db04b655d11f4c3500aea3bcbc2497cf02161de2ecf994fec7c098aabbcebe210ffabc2ecbdb1e3ffad23fb4d3f18723b814f423ea1749fe8 languageName: node linkType: hard @@ -838,14 +871,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.13, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.27.1, @babel/parser@npm:^7.3.3": - version: 7.27.1 - resolution: "@babel/parser@npm:7.27.1" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.13, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.27.1, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.3.3": + version: 7.27.2 + resolution: "@babel/parser@npm:7.27.2" dependencies: "@babel/types": "npm:^7.27.1" bin: parser: ./bin/babel-parser.js - checksum: 10/20d0e612a5c9903f172c8957043923fe73f8d40a130838dade27e6af0291b6c72974f11c99f112443fc5193e519c241f8cc034e28eca6e958949627f902464ef + checksum: 10/133b4ccfbc01d4f36b0945937aabff87026c29fda6dcd3c842053a672e50f2487a101a3acd150bbaa2eecd33f3bd35650f95b806567c926f93b2af35c2b615c9 languageName: node linkType: hard @@ -1641,16 +1674,17 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.27.1" +"@babel/plugin-transform-object-rest-spread@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.27.2" dependencies: - "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/helper-compilation-targets": "npm:^7.27.2" "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.27.1" "@babel/plugin-transform-parameters": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/f51d6c333b0e270fec4efed30e8ad7b4a892d14fee21f7098da476dd7d353544e113d84f31c44ad77ad34a93d0fb6aae1d7490d2829905471e98d99d98f7f3e7 + checksum: 10/284a458f229e2acabe8a4d3a6cb1cb510dd1d76dc652d220865b8008b4cad923cea5faf76a8990810c2f99704797fbebb2ff15d482c448193691985a71226ecf languageName: node linkType: hard @@ -1987,11 +2021,11 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.12.1, @babel/preset-env@npm:^7.12.11, @babel/preset-env@npm:^7.16.4, @babel/preset-env@npm:^7.20.2, @babel/preset-env@npm:^7.25.9": - version: 7.27.1 - resolution: "@babel/preset-env@npm:7.27.1" + version: 7.27.2 + resolution: "@babel/preset-env@npm:7.27.2" dependencies: - "@babel/compat-data": "npm:^7.27.1" - "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/compat-data": "npm:^7.27.2" + "@babel/helper-compilation-targets": "npm:^7.27.2" "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-validator-option": "npm:^7.27.1" "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.27.1" @@ -2033,7 +2067,7 @@ __metadata: "@babel/plugin-transform-new-target": "npm:^7.27.1" "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.27.1" "@babel/plugin-transform-numeric-separator": "npm:^7.27.1" - "@babel/plugin-transform-object-rest-spread": "npm:^7.27.1" + "@babel/plugin-transform-object-rest-spread": "npm:^7.27.2" "@babel/plugin-transform-object-super": "npm:^7.27.1" "@babel/plugin-transform-optional-catch-binding": "npm:^7.27.1" "@babel/plugin-transform-optional-chaining": "npm:^7.27.1" @@ -2061,7 +2095,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/647ff0fed12a2d62285619014db234d1c87ffd1816feafa46676c63663872db087bd00ce635941f5e48ea1ef3452356087877f6c186cbabc38e34a6bd1d8564c + checksum: 10/3748b5e5582bee12f2b21ee4af9552a0ea8851fdfa8e54cdab142ac9191b7e9b1673d23056c0d2c3c6fd554eb85873664acfc9829c4f14a8ae7676548184eff6 languageName: node linkType: hard @@ -2154,13 +2188,13 @@ __metadata: linkType: hard "@babel/template@npm:^7.24.7, @babel/template@npm:^7.25.0, @babel/template@npm:^7.27.1, @babel/template@npm:^7.3.3": - version: 7.27.1 - resolution: "@babel/template@npm:7.27.1" + version: 7.27.2 + resolution: "@babel/template@npm:7.27.2" dependencies: "@babel/code-frame": "npm:^7.27.1" - "@babel/parser": "npm:^7.27.1" + "@babel/parser": "npm:^7.27.2" "@babel/types": "npm:^7.27.1" - checksum: 10/5ac109d696705fe303cc8d078abe12adac34855b65f579d4bb9f8470d491983db66f686c064b26e08d667d76b924ffbd8f16255a75daa994d51c426d7a22320e + checksum: 10/fed15a84beb0b9340e5f81566600dbee5eccd92e4b9cc42a944359b1aa1082373391d9d5fc3656981dff27233ec935d0bc96453cf507f60a4b079463999244d8 languageName: node linkType: hard @@ -2224,6 +2258,13 @@ __metadata: 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 + "@bundled-es-modules/cookie@npm:^2.0.0, @bundled-es-modules/cookie@npm:^2.0.1": version: 2.0.1 resolution: "@bundled-es-modules/cookie@npm:2.0.1" @@ -4556,9 +4597,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/aix-ppc64@npm:0.25.3" +"@esbuild/aix-ppc64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/aix-ppc64@npm:0.25.4" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard @@ -4570,9 +4611,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/android-arm64@npm:0.25.3" +"@esbuild/android-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/android-arm64@npm:0.25.4" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -4584,9 +4625,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/android-arm@npm:0.25.3" +"@esbuild/android-arm@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/android-arm@npm:0.25.4" conditions: os=android & cpu=arm languageName: node linkType: hard @@ -4598,9 +4639,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/android-x64@npm:0.25.3" +"@esbuild/android-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/android-x64@npm:0.25.4" conditions: os=android & cpu=x64 languageName: node linkType: hard @@ -4612,9 +4653,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/darwin-arm64@npm:0.25.3" +"@esbuild/darwin-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/darwin-arm64@npm:0.25.4" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -4626,9 +4667,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/darwin-x64@npm:0.25.3" +"@esbuild/darwin-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/darwin-x64@npm:0.25.4" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -4640,9 +4681,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/freebsd-arm64@npm:0.25.3" +"@esbuild/freebsd-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/freebsd-arm64@npm:0.25.4" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -4654,9 +4695,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/freebsd-x64@npm:0.25.3" +"@esbuild/freebsd-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/freebsd-x64@npm:0.25.4" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -4668,9 +4709,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/linux-arm64@npm:0.25.3" +"@esbuild/linux-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-arm64@npm:0.25.4" conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -4682,9 +4723,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/linux-arm@npm:0.25.3" +"@esbuild/linux-arm@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-arm@npm:0.25.4" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -4696,9 +4737,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/linux-ia32@npm:0.25.3" +"@esbuild/linux-ia32@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-ia32@npm:0.25.4" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -4710,9 +4751,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/linux-loong64@npm:0.25.3" +"@esbuild/linux-loong64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-loong64@npm:0.25.4" conditions: os=linux & cpu=loong64 languageName: node linkType: hard @@ -4724,9 +4765,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/linux-mips64el@npm:0.25.3" +"@esbuild/linux-mips64el@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-mips64el@npm:0.25.4" conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -4738,9 +4779,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/linux-ppc64@npm:0.25.3" +"@esbuild/linux-ppc64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-ppc64@npm:0.25.4" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard @@ -4752,9 +4793,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/linux-riscv64@npm:0.25.3" +"@esbuild/linux-riscv64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-riscv64@npm:0.25.4" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard @@ -4766,9 +4807,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/linux-s390x@npm:0.25.3" +"@esbuild/linux-s390x@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-s390x@npm:0.25.4" conditions: os=linux & cpu=s390x languageName: node linkType: hard @@ -4780,16 +4821,16 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/linux-x64@npm:0.25.3" +"@esbuild/linux-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-x64@npm:0.25.4" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-arm64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/netbsd-arm64@npm:0.25.3" +"@esbuild/netbsd-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/netbsd-arm64@npm:0.25.4" conditions: os=netbsd & cpu=arm64 languageName: node linkType: hard @@ -4801,16 +4842,16 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/netbsd-x64@npm:0.25.3" +"@esbuild/netbsd-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/netbsd-x64@npm:0.25.4" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/openbsd-arm64@npm:0.25.3" +"@esbuild/openbsd-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/openbsd-arm64@npm:0.25.4" conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard @@ -4822,9 +4863,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/openbsd-x64@npm:0.25.3" +"@esbuild/openbsd-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/openbsd-x64@npm:0.25.4" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard @@ -4836,9 +4877,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/sunos-x64@npm:0.25.3" +"@esbuild/sunos-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/sunos-x64@npm:0.25.4" conditions: os=sunos & cpu=x64 languageName: node linkType: hard @@ -4850,9 +4891,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/win32-arm64@npm:0.25.3" +"@esbuild/win32-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/win32-arm64@npm:0.25.4" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -4864,9 +4905,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/win32-ia32@npm:0.25.3" +"@esbuild/win32-ia32@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/win32-ia32@npm:0.25.4" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -4878,14 +4919,14 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.25.3": - version: 0.25.3 - resolution: "@esbuild/win32-x64@npm:0.25.3" +"@esbuild/win32-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/win32-x64@npm:0.25.4" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.7.0": version: 4.7.0 resolution: "@eslint-community/eslint-utils@npm:4.7.0" dependencies: @@ -4896,13 +4937,40 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.4.0, @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.4.0, @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.2 + resolution: "@eslint/config-helpers@npm:0.2.2" + checksum: 10/55dbb0b8d63c4cb28fa2a5fd5f16c785f6bd87eb0f50d2f42ec3f7d06b5c6201e2e170846a4360ca00105578b034fba132ed54e4ee3215be240c4a43e7839189 + 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:^0.4.3": version: 0.4.3 resolution: "@eslint/eslintrc@npm:0.4.3" @@ -4937,6 +5005,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" @@ -4944,6 +5029,30 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:9.26.0, @eslint/js@npm:^9.26.0": + version: 9.26.0 + resolution: "@eslint/js@npm:9.26.0" + checksum: 10/863d35df8f6675250bb5a917037e0f6833965437eba4c4649633fd0b55a93e8d727bcd36e9b5cc82047898ee9348cb40363e196f333914ae3a6bb36159495212 + 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 + "@examples-action-listener/counter@workspace:examples/action-listener/counter": version: 0.0.0-use.local resolution: "@examples-action-listener/counter@workspace:examples/action-listener/counter" @@ -6086,6 +6195,23 @@ __metadata: 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" @@ -6129,6 +6255,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.3 + resolution: "@humanwhocodes/retry@npm:0.4.3" + checksum: 10/0b32cfd362bea7a30fbf80bb38dcaf77fee9c2cae477ee80b460871d03590110ac9c77d654f04ec5beaf71b6f6a89851bdf6c1e34ccdf2f686bd86fcd97d9e61 + languageName: node + linkType: hard + "@iarna/toml@npm:2.2.5, @iarna/toml@npm:^2.2.5": version: 2.2.5 resolution: "@iarna/toml@npm:2.2.5" @@ -6714,6 +6854,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 + "@manaflair/redux-batch@npm:^1.0.0": version: 1.0.0 resolution: "@manaflair/redux-batch@npm:1.0.0" @@ -6827,6 +6976,24 @@ __metadata: languageName: node linkType: hard +"@modelcontextprotocol/sdk@npm:^1.8.0": + version: 1.11.0 + resolution: "@modelcontextprotocol/sdk@npm:1.11.0" + dependencies: + content-type: "npm:^1.0.5" + cors: "npm:^2.8.5" + cross-spawn: "npm:^7.0.3" + eventsource: "npm:^3.0.2" + express: "npm:^5.0.1" + express-rate-limit: "npm:^7.5.0" + pkce-challenge: "npm:^5.0.0" + raw-body: "npm:^3.0.0" + zod: "npm:^3.23.8" + zod-to-json-schema: "npm:^3.24.1" + checksum: 10/527413fd2b18f75e031cda7f73a662098f3c5f1224b9c6b0b903d5a1f79e23e23a4f4b8e6971bac7eb46a74ed65ae05e8e548f7b7a3f7f6d179c3f6d10825fbc + languageName: node + linkType: hard + "@module-federation/error-codes@npm:0.8.4": version: 0.8.4 resolution: "@module-federation/error-codes@npm:0.8.4" @@ -7382,6 +7549,13 @@ __metadata: languageName: node linkType: hard +"@publint/pack@npm:^0.1.2": + version: 0.1.2 + resolution: "@publint/pack@npm:0.1.2" + checksum: 10/83e1de31ae29a0e651f7f91ebe6ad1fdf8cbb61d1eb056476586a234d05fa6fde9f34d3a0e36fbf18a2e9affa1082f758833242fd285637d303130f1a286b928 + languageName: node + linkType: hard + "@reach/alert@npm:0.11.0": version: 0.11.0 resolution: "@reach/alert@npm:0.11.0" @@ -7550,6 +7724,54 @@ __metadata: languageName: node linkType: hard +"@reduxjs/eslint-config@workspace:packages/configs/eslint": + version: 0.0.0-use.local + resolution: "@reduxjs/eslint-config@workspace:packages/configs/eslint" + dependencies: + "@arethetypeswrong/cli": "npm:^0.18.0" + "@eslint/js": "npm:^9.26.0" + "@reduxjs/tsconfig": "workspace:^" + "@types/node": "npm:^22.15.15" + "@typescript-eslint/utils": "npm:^8.32.0" + eslint: "npm:^9.26.0" + eslint-config-prettier: "npm:^10.1.3" + globals: "npm:^16.1.0" + publint: "npm:^0.3.12" + rimraf: "npm:^6.0.1" + tsup: "npm:^8.4.0" + typescript: "npm:^5.8.3" + typescript-eslint: "npm:^8.32.0" + peerDependencies: + eslint: ">=8.56.0" + typescript: "*" + peerDependenciesMeta: + eslint: + optional: true + typescript: + optional: true + languageName: unknown + linkType: soft + +"@reduxjs/prettier-config@workspace:packages/configs/prettier": + version: 0.0.0-use.local + resolution: "@reduxjs/prettier-config@workspace:packages/configs/prettier" + dependencies: + "@arethetypeswrong/cli": "npm:^0.18.0" + "@reduxjs/tsconfig": "workspace:^" + "@types/node": "npm:^22.15.15" + prettier: "npm:^3.5.3" + publint: "npm:^0.3.12" + rimraf: "npm:^6.0.1" + tsup: "npm:^8.4.0" + typescript: "npm:^5.8.3" + peerDependencies: + prettier: ">=3" + peerDependenciesMeta: + prettier: + optional: true + languageName: unknown + linkType: soft + "@reduxjs/rtk-codemods@workspace:packages/rtk-codemods": version: 0.0.0-use.local resolution: "@reduxjs/rtk-codemods@workspace:packages/rtk-codemods" @@ -7613,8 +7835,8 @@ __metadata: linkType: hard "@reduxjs/toolkit@npm:^1.6.0 || ^2.0.0": - version: 2.7.0 - resolution: "@reduxjs/toolkit@npm:2.7.0" + version: 2.8.0 + resolution: "@reduxjs/toolkit@npm:2.8.0" dependencies: "@standard-schema/spec": "npm:^1.0.0" "@standard-schema/utils": "npm:^0.3.0" @@ -7630,7 +7852,7 @@ __metadata: optional: true react-redux: optional: true - checksum: 10/cc264efc95f9ebeafa469bf1040d106a33768a802e6f46aa678bf9f26822d049c18b5f10864aa8badb2e62febe58e242860256174528e62b09e8f897d32cd182 + checksum: 10/22a97393e6d8688edacea748efeff2e5c8165c61aa05239192cca8856dbbf175c49e8dd9fcf954e0c09014acaefcf56dcd61303b905e4e0eb47e77ad09f230d8 languageName: node linkType: hard @@ -7729,6 +7951,40 @@ __metadata: languageName: unknown linkType: soft +"@reduxjs/tsconfig@workspace:^, @reduxjs/tsconfig@workspace:packages/configs/typescript": + version: 0.0.0-use.local + resolution: "@reduxjs/tsconfig@workspace:packages/configs/typescript" + dependencies: + "@arethetypeswrong/cli": "npm:^0.18.0" + publint: "npm:^0.3.12" + languageName: unknown + linkType: soft + +"@reduxjs/vitest-config@workspace:packages/configs/vitest": + version: 0.0.0-use.local + resolution: "@reduxjs/vitest-config@workspace:packages/configs/vitest" + dependencies: + "@arethetypeswrong/cli": "npm:^0.18.0" + "@reduxjs/tsconfig": "workspace:^" + "@types/node": "npm:^22.15.15" + publint: "npm:^0.3.12" + rimraf: "npm:^6.0.1" + tsup: "npm:^8.4.0" + typescript: "npm:^5.8.3" + vite: "npm:^6.3.5" + vite-tsconfig-paths: "npm:^5.1.4" + vitest: "npm:^3.1.3" + peerDependencies: + vite: "*" + vitest: ">=1" + peerDependenciesMeta: + vite: + optional: true + vitest: + optional: true + languageName: unknown + linkType: soft + "@remix-run/router@npm:1.23.0": version: 1.23.0 resolution: "@remix-run/router@npm:1.23.0" @@ -7833,142 +8089,142 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.40.1" +"@rollup/rollup-android-arm-eabi@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.40.2" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-android-arm64@npm:4.40.1" +"@rollup/rollup-android-arm64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-android-arm64@npm:4.40.2" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-darwin-arm64@npm:4.40.1" +"@rollup/rollup-darwin-arm64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-darwin-arm64@npm:4.40.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-darwin-x64@npm:4.40.1" +"@rollup/rollup-darwin-x64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-darwin-x64@npm:4.40.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.40.1" +"@rollup/rollup-freebsd-arm64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.40.2" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-freebsd-x64@npm:4.40.1" +"@rollup/rollup-freebsd-x64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-freebsd-x64@npm:4.40.2" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.40.1" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.40.2" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.40.1" +"@rollup/rollup-linux-arm-musleabihf@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.40.2" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.40.1" +"@rollup/rollup-linux-arm64-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.40.2" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.40.1" +"@rollup/rollup-linux-arm64-musl@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.40.2" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-loongarch64-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.40.1" +"@rollup/rollup-linux-loongarch64-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.40.2" conditions: os=linux & cpu=loong64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.1" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.2" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.40.1" +"@rollup/rollup-linux-riscv64-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.40.2" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-musl@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.40.1" +"@rollup/rollup-linux-riscv64-musl@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.40.2" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.40.1" +"@rollup/rollup-linux-s390x-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.40.2" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.40.1" +"@rollup/rollup-linux-x64-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.40.2" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.40.1" +"@rollup/rollup-linux-x64-musl@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.40.2" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.40.1" +"@rollup/rollup-win32-arm64-msvc@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.40.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.40.1" +"@rollup/rollup-win32-ia32-msvc@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.40.2" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.40.1" +"@rollup/rollup-win32-x64-msvc@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.40.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -9668,12 +9924,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*": - version: 22.15.3 - resolution: "@types/node@npm:22.15.3" +"@types/node@npm:*, @types/node@npm:^22.15.15": + version: 22.15.15 + resolution: "@types/node@npm:22.15.15" dependencies: undici-types: "npm:~6.21.0" - checksum: 10/6b4ff03c36598432b419980f828281aa16383e2de6eb61f73275495ef8d2cbf8cb5607659b4cae5ff8b2b2ff69913ea07ffcc0be029e4280b6e8bc138dc6629b + checksum: 10/26e9c2e272b5cc7b342a6e6708e4551d5346e712bd57c4b49eb08470304325d5ed245f8ae425ea3958cab75240581af56eb39e7bf63d01e1412c056be0b0a562 languageName: node linkType: hard @@ -9699,11 +9955,11 @@ __metadata: linkType: hard "@types/node@npm:^20.11.0, @types/node@npm:^20.11.10, @types/node@npm:^20.14.11": - version: 20.17.32 - resolution: "@types/node@npm:20.17.32" + version: 20.17.44 + resolution: "@types/node@npm:20.17.44" dependencies: undici-types: "npm:~6.19.2" - checksum: 10/ac19a4af175eeb9fa89503c6acf01eeea86cf82675e4af091b3e18902cc3ae752b5e686f1eade9db551c318313dd597e1c65d3fb7a569c3a0f63e8424a6ead2e + checksum: 10/2d968f34914ed5384605db5c0163402142a7790d6d2646d6ac45b2fe8f576955e054d6eb904d7d89392b244cfbeb5c1fe74d2ab0455d72bc7e0bcebfe065d5aa languageName: node linkType: hard @@ -9849,11 +10105,11 @@ __metadata: linkType: hard "@types/react@npm:*, @types/react@npm:^19.0.1": - version: 19.1.2 - resolution: "@types/react@npm:19.1.2" + version: 19.1.3 + resolution: "@types/react@npm:19.1.3" dependencies: csstype: "npm:^3.0.2" - checksum: 10/17803797227d2fc07a2cd6c17d57b1ea9b01eb16eca6318be60852c8d7467b4b58e675742f53d77ff4a37621a5814f16847dede73999181cb7f9449c1784fab6 + checksum: 10/f2ccb0b5eb7f4f1c83bbc351aadce9c7c72177d03ce70881655d7773112670e60eff9872f572b58d2ad71e1524577ad00d1d4e3566aa00456458fdd2662e8284 languageName: node linkType: hard @@ -10128,6 +10384,27 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:8.32.0": + version: 8.32.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.32.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.10.0" + "@typescript-eslint/scope-manager": "npm:8.32.0" + "@typescript-eslint/type-utils": "npm:8.32.0" + "@typescript-eslint/utils": "npm:8.32.0" + "@typescript-eslint/visitor-keys": "npm:8.32.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.3.1" + natural-compare: "npm:^1.4.0" + ts-api-utils: "npm:^2.1.0" + 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/358b337948b2037816c3692c4ebfdb2eff90d367c6f3cdc5615c51be4eebc668c1c44e5fdfc71c08625f08b8f714ce6d0e59eccc7fe6cdabdd0800eb8ea3ab81 + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:^5.5.0": version: 5.62.0 resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" @@ -10206,6 +10483,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:8.32.0": + version: 8.32.0 + resolution: "@typescript-eslint/parser@npm:8.32.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:8.32.0" + "@typescript-eslint/types": "npm:8.32.0" + "@typescript-eslint/typescript-estree": "npm:8.32.0" + "@typescript-eslint/visitor-keys": "npm:8.32.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10/05a9c0772a20085dc9def0a44d72421fad08b73eeb3bff474397ef719abb282ff684c59875e5cde3ad853ea6cff69b33312b9731f78b85de45b12a8158c97c2e + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^5.5.0": version: 5.62.0 resolution: "@typescript-eslint/parser@npm:5.62.0" @@ -10271,6 +10564,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.32.0": + version: 8.32.0 + resolution: "@typescript-eslint/scope-manager@npm:8.32.0" + dependencies: + "@typescript-eslint/types": "npm:8.32.0" + "@typescript-eslint/visitor-keys": "npm:8.32.0" + checksum: 10/44fb2b4b22cb30c5602db8861f3037479d98c9e812a0e5d7dfda349351c747aaf84be5c2a15b325e0c8eabf56faf2d0b66796b86a30a60a6c1f551bcce7cc05a + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/type-utils@npm:5.62.0" @@ -10322,6 +10625,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:8.32.0": + version: 8.32.0 + resolution: "@typescript-eslint/type-utils@npm:8.32.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:8.32.0" + "@typescript-eslint/utils": "npm:8.32.0" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^2.1.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10/cb2a2bc3748a00f4f43e8262e2a929cac866ffe887493ae5fc5e935915c3b65f6cc7627754f6d16a47ff70a4306a54b9141fa7797518f17ed92421272aa24c45 + languageName: node + linkType: hard + "@typescript-eslint/types@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/types@npm:5.62.0" @@ -10343,6 +10661,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.32.0": + version: 8.32.0 + resolution: "@typescript-eslint/types@npm:8.32.0" + checksum: 10/52514975451f562206f0dcc90484ba8e2ddff9dde479b77f6ecbdf50cd5269e30f6c2bf80091204d2223d818268dd96fa396cb73434364754e730d286d6684ac + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" @@ -10398,6 +10723,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:8.32.0": + version: 8.32.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.32.0" + dependencies: + "@typescript-eslint/types": "npm:8.32.0" + "@typescript-eslint/visitor-keys": "npm:8.32.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.1.0" + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 10/bb86ef5d3d5f4d1542d175ffb9662b8f9bffa17445646d40bfaad494627f2f10cd37f747403a283786f034e6174a1dfe01d9d7645c1f605d820fad7292541c7f + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:5.62.0, @typescript-eslint/utils@npm:^5.58.0": version: 5.62.0 resolution: "@typescript-eslint/utils@npm:5.62.0" @@ -10450,6 +10793,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:8.32.0, @typescript-eslint/utils@npm:^8.32.0": + version: 8.32.0 + resolution: "@typescript-eslint/utils@npm:8.32.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.7.0" + "@typescript-eslint/scope-manager": "npm:8.32.0" + "@typescript-eslint/types": "npm:8.32.0" + "@typescript-eslint/typescript-estree": "npm:8.32.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10/df39111c374cffb36074fc1cb02ee08468c1f56ced8ff5ce47262add570a5a78f1d677759a7efa3e6d7840e97e0d1d5fae0dbca1737185c59fb3ef58e6be15d0 + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" @@ -10480,6 +10838,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.32.0": + version: 8.32.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.32.0" + dependencies: + "@typescript-eslint/types": "npm:8.32.0" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10/c2c3c94d17efc50655eb495b8324133cb646fe2464f7f99af571f62c2b09bca14b4713f2eeda0b2bcb2b0f4d54ec2641194a0d4b734607d93927476b93100810 + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.2.0": version: 1.3.0 resolution: "@ungap/structured-clone@npm:1.3.0" @@ -10525,6 +10893,18 @@ __metadata: languageName: node linkType: hard +"@vitest/expect@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/expect@npm:3.1.3" + dependencies: + "@vitest/spy": "npm:3.1.3" + "@vitest/utils": "npm:3.1.3" + chai: "npm:^5.2.0" + tinyrainbow: "npm:^2.0.0" + checksum: 10/f63053849430e93e85cd50994a75f32e6b73d35fefbf7894f1869c356ed6c601adfc95c66004b2df3c49335300202286480c47d841d78d2047af6bee00f8b3ed + languageName: node + linkType: hard + "@vitest/mocker@npm:2.1.9": version: 2.1.9 resolution: "@vitest/mocker@npm:2.1.9" @@ -10544,6 +10924,25 @@ __metadata: languageName: node linkType: hard +"@vitest/mocker@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/mocker@npm:3.1.3" + dependencies: + "@vitest/spy": "npm:3.1.3" + 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/fc4a8ee015551f476af56ee27327c78fd6f8a023eea79a92834482d10272c74dd0a39631b2d55341e54ac04803b1d2710527b34ed206ede18cde9706a1582ed8 + languageName: node + linkType: hard + "@vitest/pretty-format@npm:2.1.9, @vitest/pretty-format@npm:^2.1.9": version: 2.1.9 resolution: "@vitest/pretty-format@npm:2.1.9" @@ -10553,6 +10952,15 @@ __metadata: languageName: node linkType: hard +"@vitest/pretty-format@npm:3.1.3, @vitest/pretty-format@npm:^3.1.3": + version: 3.1.3 + resolution: "@vitest/pretty-format@npm:3.1.3" + dependencies: + tinyrainbow: "npm:^2.0.0" + checksum: 10/da508750f47b4043e9aaea803f37dada4d3121b63a8fd2a7c77849a380d9040ca488291f6ee98e7ee3e6543bd6c2ed7cdad99b6b86897999c740462ef617413a + languageName: node + linkType: hard + "@vitest/runner@npm:1.6.1": version: 1.6.1 resolution: "@vitest/runner@npm:1.6.1" @@ -10574,6 +10982,16 @@ __metadata: languageName: node linkType: hard +"@vitest/runner@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/runner@npm:3.1.3" + dependencies: + "@vitest/utils": "npm:3.1.3" + pathe: "npm:^2.0.3" + checksum: 10/7862077b7663200801cd7903b977b3713a291f91b2b0930ee59951bec0ae51d38219308e543b62ff5eaed9ead51bcbd7175b19f9b7c0d876e2975defee76fdee + languageName: node + linkType: hard + "@vitest/snapshot@npm:1.6.1": version: 1.6.1 resolution: "@vitest/snapshot@npm:1.6.1" @@ -10596,6 +11014,17 @@ __metadata: languageName: node linkType: hard +"@vitest/snapshot@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/snapshot@npm:3.1.3" + dependencies: + "@vitest/pretty-format": "npm:3.1.3" + magic-string: "npm:^0.30.17" + pathe: "npm:^2.0.3" + checksum: 10/5889414ecd19df6a1cc09c57fc96d344721f01e5812d9153565208c76dac4d42fc1c636153b9701d50a1d5acd4fd8ce81c09c9592d97728a700c5a8af790d0a4 + languageName: node + linkType: hard + "@vitest/spy@npm:1.6.1": version: 1.6.1 resolution: "@vitest/spy@npm:1.6.1" @@ -10614,6 +11043,15 @@ __metadata: languageName: node linkType: hard +"@vitest/spy@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/spy@npm:3.1.3" + dependencies: + tinyspy: "npm:^3.0.2" + checksum: 10/9b42e219b40fde935e5bd7fa19ee99f01fc27ecd89a5fccabbbbc91e02eef3bd0530ba3769c2ff380529f708eb535a30cce773d680c708209a994c54d1d992fe + languageName: node + linkType: hard + "@vitest/utils@npm:1.6.1": version: 1.6.1 resolution: "@vitest/utils@npm:1.6.1" @@ -10637,6 +11075,17 @@ __metadata: languageName: node linkType: hard +"@vitest/utils@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/utils@npm:3.1.3" + dependencies: + "@vitest/pretty-format": "npm:3.1.3" + loupe: "npm:^3.1.3" + tinyrainbow: "npm:^2.0.0" + checksum: 10/d9971948161364e61e0fb08a053b9768f02054686f0a74e5b7bdc9c726271842d5f8c4256c68cf9aad2b83a28d2333c5694e336715d145e194fa1a93e64e97c3 + languageName: node + linkType: hard + "@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.14.1": version: 1.14.1 resolution: "@webassemblyjs/ast@npm:1.14.1" @@ -10864,6 +11313,16 @@ __metadata: languageName: node linkType: hard +"accepts@npm:^2.0.0": + version: 2.0.0 + resolution: "accepts@npm:2.0.0" + dependencies: + mime-types: "npm:^3.0.0" + negotiator: "npm:^1.0.0" + checksum: 10/ea1343992b40b2bfb3a3113fa9c3c2f918ba0f9197ae565c48d3f84d44b174f6b1d5cd9989decd7655963eb03a272abc36968cc439c2907f999bd5ef8653d5a7 + languageName: node + linkType: hard + "acorn-globals@npm:^6.0.0": version: 6.0.0 resolution: "acorn-globals@npm:6.0.0" @@ -11169,6 +11628,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-html-community@npm:^0.0.8": version: 0.0.8 resolution: "ansi-html-community@npm:0.0.8" @@ -11208,7 +11676,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 @@ -12152,6 +12620,23 @@ __metadata: languageName: node linkType: hard +"body-parser@npm:^2.2.0": + version: 2.2.0 + resolution: "body-parser@npm:2.2.0" + dependencies: + bytes: "npm:^3.1.2" + content-type: "npm:^1.0.5" + debug: "npm:^4.4.0" + http-errors: "npm:^2.0.0" + iconv-lite: "npm:^0.6.3" + on-finished: "npm:^2.4.1" + qs: "npm:^6.14.0" + raw-body: "npm:^3.0.0" + type-is: "npm:^2.0.0" + checksum: 10/e9d844b036bd15970df00a16f373c7ed28e1ef870974a0a1d4d6ef60d70e01087cc20a0dbb2081c49a88e3c08ce1d87caf1e2898c615dffa193f63e8faa8a84e + languageName: node + linkType: hard + "bonjour-service@npm:^1.0.11": version: 1.3.0 resolution: "bonjour-service@npm:1.3.0" @@ -12300,7 +12785,7 @@ __metadata: languageName: node linkType: hard -"buffer-equal-constant-time@npm:1.0.1": +"buffer-equal-constant-time@npm:^1.0.1": version: 1.0.1 resolution: "buffer-equal-constant-time@npm:1.0.1" checksum: 10/80bb945f5d782a56f374b292770901065bad21420e34936ecbe949e57724b4a13874f735850dd1cc61f078773c4fb5493a41391e7bda40d1fa388d6bd80daaab @@ -12356,7 +12841,7 @@ __metadata: languageName: node linkType: hard -"bytes@npm:3.1.2": +"bytes@npm:3.1.2, bytes@npm:^3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" checksum: 10/a10abf2ba70c784471d6b4f58778c0beeb2b5d405148e66affa91f23a9f13d07603d0a0354667310ae1d6dc141474ffd44e2a074be0f6e2254edb8fc21445388 @@ -12549,9 +13034,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001616, caniuse-lite@npm:^1.0.30001702, caniuse-lite@npm:^1.0.30001716": - version: 1.0.30001716 - resolution: "caniuse-lite@npm:1.0.30001716" - checksum: 10/76267585d761a8a8b7b1eb61a82fdaa1f063d3558f6ba6a4f7fd3c4df9e5f9867d981cf7919a4d45edb8d17537f63c98bd23b5212c270c9ce76f54ab8959c981 + version: 1.0.30001717 + resolution: "caniuse-lite@npm:1.0.30001717" + checksum: 10/e47dfd8707ea305baa177f3d3d531df614f5a9ac6335363fc8f86f0be4caf79f5734f3f68b601fee4edd9d79f1e5ffc0931466bb894bf955ed6b1dd5a1c34b1d languageName: node linkType: hard @@ -12607,7 +13092,7 @@ __metadata: languageName: node linkType: hard -"chai@npm:^5.1.2": +"chai@npm:^5.1.2, chai@npm:^5.2.0": version: 5.2.0 resolution: "chai@npm:5.2.0" dependencies: @@ -12690,7 +13175,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^5.0.1, chalk@npm:^5.2.0, chalk@npm:^5.3.0": +"chalk@npm:^5.0.1, chalk@npm:^5.2.0, chalk@npm:^5.3.0, chalk@npm:^5.4.1": version: 5.4.1 resolution: "chalk@npm:5.4.1" checksum: 10/29df3ffcdf25656fed6e95962e2ef86d14dfe03cd50e7074b06bad9ffbbf6089adbb40f75c00744d843685c8d008adaf3aed31476780312553caf07fa86e5bc7 @@ -12927,7 +13412,7 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^1.0.0": +"cjs-module-lexer@npm:^1.0.0, cjs-module-lexer@npm:^1.2.3": version: 1.4.3 resolution: "cjs-module-lexer@npm:1.4.3" checksum: 10/d2b92f919a2dedbfd61d016964fce8da0035f827182ed6839c97cac56e8a8077cfa6a59388adfe2bc588a19cef9bbe830d683a76a6e93c51f65852062cfe2591 @@ -12989,6 +13474,22 @@ __metadata: 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-progress@npm:^3.12.0": version: 3.12.0 resolution: "cli-progress@npm:3.12.0" @@ -13005,7 +13506,7 @@ __metadata: languageName: node linkType: hard -"cli-table3@npm:^0.6.3": +"cli-table3@npm:^0.6.3, cli-table3@npm:^0.6.5": version: 0.6.5 resolution: "cli-table3@npm:0.6.5" dependencies: @@ -13517,7 +14018,16 @@ __metadata: languageName: node linkType: hard -"content-type@npm:~1.0.4, content-type@npm:~1.0.5": +"content-disposition@npm:^1.0.0": + version: 1.0.0 + resolution: "content-disposition@npm:1.0.0" + dependencies: + safe-buffer: "npm:5.2.1" + checksum: 10/0dcc1a2d7874526b0072df3011b134857b49d97a3bc135bb464a299525d4972de6f5f464fd64da6c4d8406d26a1ffb976f62afaffef7723b1021a44498d10e08 + languageName: node + linkType: hard + +"content-type@npm:^1.0.5, content-type@npm:~1.0.4, content-type@npm:~1.0.5": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: 10/585847d98dc7fb8035c02ae2cb76c7a9bd7b25f84c447e5ed55c45c2175e83617c8813871b4ee22f368126af6b2b167df655829007b21aa10302873ea9c62662 @@ -13545,6 +14055,13 @@ __metadata: languageName: node linkType: hard +"cookie-signature@npm:^1.2.1": + version: 1.2.2 + resolution: "cookie-signature@npm:1.2.2" + checksum: 10/be44a3c9a56f3771aea3a8bd8ad8f0a8e2679bcb967478267f41a510b4eb5ec55085386ba79c706c4ac21605ca76f4251973444b90283e0eb3eeafe8a92c7708 + languageName: node + linkType: hard + "cookie@npm:0.7.1": version: 0.7.1 resolution: "cookie@npm:0.7.1" @@ -13559,7 +14076,7 @@ __metadata: languageName: node linkType: hard -"cookie@npm:^0.7.2": +"cookie@npm:^0.7.1, cookie@npm:^0.7.2": version: 0.7.2 resolution: "cookie@npm:0.7.2" checksum: 10/24b286c556420d4ba4e9bc09120c9d3db7d28ace2bd0f8ccee82422ce42322f73c8312441271e5eefafbead725980e5996cc02766dbb89a90ac7f5636ede608f @@ -13635,6 +14152,16 @@ __metadata: languageName: node linkType: hard +"cors@npm:^2.8.5": + version: 2.8.5 + resolution: "cors@npm:2.8.5" + dependencies: + object-assign: "npm:^4" + vary: "npm:^1" + checksum: 10/66e88e08edee7cbce9d92b4d28a2028c88772a4c73e02f143ed8ca76789f9b59444eed6b1c167139e76fa662998c151322720093ba229f9941365ada5a6fc2c6 + languageName: node + linkType: hard + "cosmiconfig-toml-loader@npm:1.0.0": version: 1.0.0 resolution: "cosmiconfig-toml-loader@npm:1.0.0" @@ -14443,7 +14970,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.7, debug@npm:^4.4.0": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.7, debug@npm:^4.4.0": version: 4.4.0 resolution: "debug@npm:4.4.0" dependencies: @@ -14713,7 +15240,7 @@ __metadata: languageName: node linkType: hard -"depd@npm:2.0.0": +"depd@npm:2.0.0, depd@npm:^2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" checksum: 10/c0c8ff36079ce5ada64f46cc9d6fd47ebcf38241105b6e0c98f412e8ad91f084bcf906ff644cc3a4bd876ca27a62accb8b0fff72ea6ed1a414b89d8506f4a5ca @@ -15173,9 +15700,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.149": - version: 1.5.149 - resolution: "electron-to-chromium@npm:1.5.149" - checksum: 10/8cbcef949c3a5c163c1017c0d7177d14e25e7c8340449f8698bb78e9951fb1971cc9673ab1008fc63204d3ed994b0318fa3d1e50487c5428cb48e6e4ff0f4fcb + version: 1.5.150 + resolution: "electron-to-chromium@npm:1.5.150" + checksum: 10/18c05019a00a2cc7747b39ef9bd95a9146d9fe0701636eedb3abc522d66a7b0415e4f58105d5df4c34f83f033f112dc88f9c24e0714e7059c247286ea392815f languageName: node linkType: hard @@ -15235,6 +15762,13 @@ __metadata: languageName: node linkType: hard +"encodeurl@npm:^2.0.0, encodeurl@npm:~2.0.0": + version: 2.0.0 + resolution: "encodeurl@npm:2.0.0" + checksum: 10/abf5cd51b78082cf8af7be6785813c33b6df2068ce5191a40ca8b1afe6a86f9230af9a9ce694a5ce4665955e5c1120871826df9c128a642e09c58d592e2807fe + languageName: node + linkType: hard + "encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" @@ -15242,13 +15776,6 @@ __metadata: languageName: node linkType: hard -"encodeurl@npm:~2.0.0": - version: 2.0.0 - resolution: "encodeurl@npm:2.0.0" - checksum: 10/abf5cd51b78082cf8af7be6785813c33b6df2068ce5191a40ca8b1afe6a86f9230af9a9ce694a5ce4665955e5c1120871826df9c128a642e09c58d592e2807fe - languageName: node - linkType: hard - "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -15315,6 +15842,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" @@ -15461,7 +15995,7 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.5.4": +"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.5.4, es-module-lexer@npm:^1.7.0": version: 1.7.0 resolution: "es-module-lexer@npm:1.7.0" checksum: 10/b6f3e576a3fed4d82b0d0ad4bbf6b3a5ad694d2e7ce8c4a069560da3db6399381eaba703616a182b16dde50ce998af64e07dcf49f2ae48153b9e07be3f107087 @@ -15649,34 +16183,34 @@ __metadata: linkType: hard "esbuild@npm:^0.25.0, esbuild@npm:^0.25.1, esbuild@npm:~0.25.0": - version: 0.25.3 - resolution: "esbuild@npm:0.25.3" - dependencies: - "@esbuild/aix-ppc64": "npm:0.25.3" - "@esbuild/android-arm": "npm:0.25.3" - "@esbuild/android-arm64": "npm:0.25.3" - "@esbuild/android-x64": "npm:0.25.3" - "@esbuild/darwin-arm64": "npm:0.25.3" - "@esbuild/darwin-x64": "npm:0.25.3" - "@esbuild/freebsd-arm64": "npm:0.25.3" - "@esbuild/freebsd-x64": "npm:0.25.3" - "@esbuild/linux-arm": "npm:0.25.3" - "@esbuild/linux-arm64": "npm:0.25.3" - "@esbuild/linux-ia32": "npm:0.25.3" - "@esbuild/linux-loong64": "npm:0.25.3" - "@esbuild/linux-mips64el": "npm:0.25.3" - "@esbuild/linux-ppc64": "npm:0.25.3" - "@esbuild/linux-riscv64": "npm:0.25.3" - "@esbuild/linux-s390x": "npm:0.25.3" - "@esbuild/linux-x64": "npm:0.25.3" - "@esbuild/netbsd-arm64": "npm:0.25.3" - "@esbuild/netbsd-x64": "npm:0.25.3" - "@esbuild/openbsd-arm64": "npm:0.25.3" - "@esbuild/openbsd-x64": "npm:0.25.3" - "@esbuild/sunos-x64": "npm:0.25.3" - "@esbuild/win32-arm64": "npm:0.25.3" - "@esbuild/win32-ia32": "npm:0.25.3" - "@esbuild/win32-x64": "npm:0.25.3" + version: 0.25.4 + resolution: "esbuild@npm:0.25.4" + dependencies: + "@esbuild/aix-ppc64": "npm:0.25.4" + "@esbuild/android-arm": "npm:0.25.4" + "@esbuild/android-arm64": "npm:0.25.4" + "@esbuild/android-x64": "npm:0.25.4" + "@esbuild/darwin-arm64": "npm:0.25.4" + "@esbuild/darwin-x64": "npm:0.25.4" + "@esbuild/freebsd-arm64": "npm:0.25.4" + "@esbuild/freebsd-x64": "npm:0.25.4" + "@esbuild/linux-arm": "npm:0.25.4" + "@esbuild/linux-arm64": "npm:0.25.4" + "@esbuild/linux-ia32": "npm:0.25.4" + "@esbuild/linux-loong64": "npm:0.25.4" + "@esbuild/linux-mips64el": "npm:0.25.4" + "@esbuild/linux-ppc64": "npm:0.25.4" + "@esbuild/linux-riscv64": "npm:0.25.4" + "@esbuild/linux-s390x": "npm:0.25.4" + "@esbuild/linux-x64": "npm:0.25.4" + "@esbuild/netbsd-arm64": "npm:0.25.4" + "@esbuild/netbsd-x64": "npm:0.25.4" + "@esbuild/openbsd-arm64": "npm:0.25.4" + "@esbuild/openbsd-x64": "npm:0.25.4" + "@esbuild/sunos-x64": "npm:0.25.4" + "@esbuild/win32-arm64": "npm:0.25.4" + "@esbuild/win32-ia32": "npm:0.25.4" + "@esbuild/win32-x64": "npm:0.25.4" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -15730,7 +16264,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10/f1ff72289938330312926421f90eea442025cbbac295a7a2e8cfc2abbd9e3a8bc1502883468b0487e4020f1369e4726c851a2fa4b65a7c71331940072c3a1808 + checksum: 10/227ffe9b31f0b184a0b0a0210bb9d32b2b115b8c5c9b09f08db2c3928cb470fc55a22dbba3c2894365d3abcc62c2089b85638be96a20691d1234d31990ea01b2 languageName: node linkType: hard @@ -15827,6 +16361,17 @@ __metadata: languageName: node linkType: hard +"eslint-config-prettier@npm:^10.1.3": + version: 10.1.3 + resolution: "eslint-config-prettier@npm:10.1.3" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10/89207971364d2454e24696d19f569e160dcb8a64149b522ecffd6b19b0d9aca145990c31c387c4b6cc9d1bc41e5e4c6edb71eacc3601f536284a0870913f31b8 + languageName: node + linkType: hard + "eslint-config-prettier@npm:^9.1.0": version: 9.1.0 resolution: "eslint-config-prettier@npm:9.1.0" @@ -16011,8 +16556,8 @@ __metadata: linkType: hard "eslint-plugin-prettier@npm:^5.1.3": - version: 5.3.1 - resolution: "eslint-plugin-prettier@npm:5.3.1" + version: 5.4.0 + resolution: "eslint-plugin-prettier@npm:5.4.0" dependencies: prettier-linter-helpers: "npm:^1.0.0" synckit: "npm:^0.11.0" @@ -16026,7 +16571,7 @@ __metadata: optional: true eslint-config-prettier: optional: true - checksum: 10/9ddb8d6fdeb0620327e184b33e8a77370260dbff8ba1e3a5e6488d00c2e7019967c8b0e21ffddfccead14c391940aec54e5ebcc813fd7649eeecd47485c0a05a + checksum: 10/c1ebd3109f3214b71239e168b5bb51343dc3527f1ebde430595c837d9eecd453c7e89185873d2f7dcfb14b3fc65902e6596de5d6d62b895dc07d822b45643061 languageName: node linkType: hard @@ -16098,6 +16643,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-utils@npm:^2.0.0, eslint-utils@npm:^2.1.0": version: 2.1.0 resolution: "eslint-utils@npm:2.1.0" @@ -16128,6 +16683,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-webpack-plugin@npm:^3.1.1": version: 3.2.0 resolution: "eslint-webpack-plugin@npm:3.2.0" @@ -16242,6 +16804,69 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^9.26.0": + version: 9.26.0 + resolution: "eslint@npm:9.26.0" + 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.26.0" + "@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" + "@modelcontextprotocol/sdk": "npm:^1.8.0" + "@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" + zod: "npm:^3.24.2" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + bin: + eslint: bin/eslint.js + checksum: 10/b87092cb7e87f1d0963475c1a1e15e551842ea122925cf13231e742fae565bf3582029a5b0b4aecf793f25c26ee0be3ee1f32190bc361e0c3f3633b9cbace948 + 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:^7.3.0, espree@npm:^7.3.1": version: 7.3.1 resolution: "espree@npm:7.3.1" @@ -16284,7 +16909,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.0, esquery@npm:^1.4.2": +"esquery@npm:^1.4.0, esquery@npm:^1.4.2, esquery@npm:^1.5.0": version: 1.6.0 resolution: "esquery@npm:1.6.0" dependencies: @@ -16428,7 +17053,7 @@ __metadata: languageName: node linkType: hard -"etag@npm:~1.8.1": +"etag@npm:^1.8.1, etag@npm:~1.8.1": version: 1.8.1 resolution: "etag@npm:1.8.1" checksum: 10/571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff @@ -16473,6 +17098,22 @@ __metadata: languageName: node linkType: hard +"eventsource-parser@npm:^3.0.1": + version: 3.0.1 + resolution: "eventsource-parser@npm:3.0.1" + checksum: 10/2730c54c3cb47d55d2967f2ece843f9fc95d8a11c2fef6fece8d17d9080193cbe3cd9ac7b04a325977f63cbf8c1664fdd0512dec1aec601666a5c5bd8564b61f + languageName: node + linkType: hard + +"eventsource@npm:^3.0.2": + version: 3.0.6 + resolution: "eventsource@npm:3.0.6" + dependencies: + eventsource-parser: "npm:^3.0.1" + checksum: 10/ac08c7d1b21e454c7685693fe4ace53fc0b84f3cf752699a556876f2a7f33b7a12972ae33d1c407fb920d6d4aed10de52fdf0dd01902ccdf45cd5da8d55e7f88 + languageName: node + linkType: hard + "execa@npm:5.1.1, execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" @@ -16531,7 +17172,7 @@ __metadata: languageName: node linkType: hard -"expect-type@npm:^1.1.0": +"expect-type@npm:^1.1.0, expect-type@npm:^1.2.1": version: 1.2.1 resolution: "expect-type@npm:1.2.1" checksum: 10/d121d90f4f3f705ca0b656e36f28c0ba91483d0cddf2876e64e23c3dea2f2d5853e9c0c9a4e90eb4b3e4663bf09c2c02e9729c339dcd308c70b2107188e6b286 @@ -16570,6 +17211,15 @@ __metadata: languageName: node linkType: hard +"express-rate-limit@npm:^7.5.0": + version: 7.5.0 + resolution: "express-rate-limit@npm:7.5.0" + peerDependencies: + express: ^4.11 || 5 || ^5.0.0-beta.1 + checksum: 10/eff34c83bf586789933a332a339b66649e2cca95c8e977d193aa8bead577d3182ac9f0e9c26f39389287539b8038890ff023f910b54ebb506a26a2ce135b92ca + languageName: node + linkType: hard + "express@npm:^4.17.3": version: 4.21.2 resolution: "express@npm:4.21.2" @@ -16609,6 +17259,41 @@ __metadata: languageName: node linkType: hard +"express@npm:^5.0.1": + version: 5.1.0 + resolution: "express@npm:5.1.0" + dependencies: + accepts: "npm:^2.0.0" + body-parser: "npm:^2.2.0" + content-disposition: "npm:^1.0.0" + content-type: "npm:^1.0.5" + cookie: "npm:^0.7.1" + cookie-signature: "npm:^1.2.1" + debug: "npm:^4.4.0" + encodeurl: "npm:^2.0.0" + escape-html: "npm:^1.0.3" + etag: "npm:^1.8.1" + finalhandler: "npm:^2.1.0" + fresh: "npm:^2.0.0" + http-errors: "npm:^2.0.0" + merge-descriptors: "npm:^2.0.0" + mime-types: "npm:^3.0.0" + on-finished: "npm:^2.4.1" + once: "npm:^1.4.0" + parseurl: "npm:^1.3.3" + proxy-addr: "npm:^2.0.7" + qs: "npm:^6.14.0" + range-parser: "npm:^1.2.1" + router: "npm:^2.2.0" + send: "npm:^1.1.0" + serve-static: "npm:^2.2.0" + statuses: "npm:^2.0.1" + type-is: "npm:^2.0.1" + vary: "npm:^1.1.2" + checksum: 10/6dba00bbdf308f43a84ed3f07a7e9870d5208f2a0b8f60f39459dda089750379747819863fad250849d3c9163833f33f94ce69d73938df31e0c5a430800d7e56 + languageName: node + linkType: hard + "extend-shallow@npm:^2.0.1": version: 2.0.1 resolution: "extend-shallow@npm:2.0.1" @@ -16845,6 +17530,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 + "file-loader@npm:^6.2.0": version: 6.2.0 resolution: "file-loader@npm:6.2.0" @@ -16940,6 +17634,20 @@ __metadata: languageName: node linkType: hard +"finalhandler@npm:^2.1.0": + version: 2.1.0 + resolution: "finalhandler@npm:2.1.0" + dependencies: + debug: "npm:^4.4.0" + encodeurl: "npm:^2.0.0" + escape-html: "npm:^1.0.3" + on-finished: "npm:^2.4.1" + parseurl: "npm:^1.3.3" + statuses: "npm:^2.0.1" + checksum: 10/b2bd68c310e2c463df0ab747ab05f8defbc540b8c3f2442f86e7d084ac8acbc31f8cae079931b7f5a406521501941e3395e963de848a0aaf45dd414adeb5ff4e + languageName: node + linkType: hard + "find-cache-dir@npm:^2.0.0": version: 2.1.0 resolution: "find-cache-dir@npm:2.1.0" @@ -17038,6 +17746,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 + "flat@npm:^5.0.2": version: 5.0.2 resolution: "flat@npm:5.0.2" @@ -17270,6 +17988,13 @@ __metadata: languageName: node linkType: hard +"fresh@npm:^2.0.0": + version: 2.0.0 + resolution: "fresh@npm:2.0.0" + checksum: 10/44e1468488363074641991c1340d2a10c5a6f6d7c353d89fd161c49d120c58ebf9890720f7584f509058385836e3ce50ddb60e9f017315a4ba8c6c3461813bfc + languageName: node + linkType: hard + "fs-extra@npm:8.1.0, fs-extra@npm:^8.0.1, fs-extra@npm:^8.1.0": version: 8.1.0 resolution: "fs-extra@npm:8.1.0" @@ -17614,6 +18339,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.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": version: 7.2.3 resolution: "glob@npm:7.2.3" @@ -17673,6 +18414,20 @@ __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 + +"globals@npm:^16.1.0": + version: 16.1.0 + resolution: "globals@npm:16.1.0" + checksum: 10/b24fa86c9d9e7f452572977105cefa66529ac166faf1d81abe6618e0ccce98cdd32f8cbc25d37ed6c2dbe7936b00d442696fd0c96da4c90567490488ecefb8fa + languageName: node + linkType: hard + "globalthis@npm:^1.0.4": version: 1.0.4 resolution: "globalthis@npm:1.0.4" @@ -18252,6 +19007,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 + "history@npm:^4.9.0": version: 4.10.1 resolution: "history@npm:4.10.1" @@ -18442,7 +19204,7 @@ __metadata: languageName: node linkType: hard -"http-errors@npm:2.0.0": +"http-errors@npm:2.0.0, http-errors@npm:^2.0.0": version: 2.0.0 resolution: "http-errors@npm:2.0.0" dependencies: @@ -18683,7 +19445,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.0.4, ignore@npm:^5.1.1, ignore@npm:^5.1.4, ignore@npm:^5.2.0, ignore@npm:^5.2.4": +"ignore@npm:^5.0.4, ignore@npm:^5.1.1, ignore@npm:^5.1.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 @@ -19448,7 +20210,7 @@ __metadata: languageName: node linkType: hard -"is-promise@npm:4.0.0": +"is-promise@npm:4.0.0, is-promise@npm:^4.0.0": version: 4.0.0 resolution: "is-promise@npm:4.0.0" checksum: 10/0b46517ad47b00b6358fd6553c83ec1f6ba9acd7ffb3d30a0bf519c5c69e7147c132430452351b8a9fc198f8dd6c4f76f8e6f5a7f100f8c77d57d9e0f4261a8a @@ -19841,6 +20603,15 @@ __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 + "jake@npm:^10.8.5": version: 10.9.2 resolution: "jake@npm:10.9.2" @@ -21050,13 +21821,13 @@ __metadata: linkType: hard "jwa@npm:^1.4.1": - version: 1.4.1 - resolution: "jwa@npm:1.4.1" + version: 1.4.2 + resolution: "jwa@npm:1.4.2" dependencies: - buffer-equal-constant-time: "npm:1.0.1" + buffer-equal-constant-time: "npm:^1.0.1" ecdsa-sig-formatter: "npm:1.0.11" safe-buffer: "npm:^5.0.1" - checksum: 10/0bc002b71dd70480fedc7d442a4d2b9185a9947352a027dcb4935864ad2323c57b5d391adf968a3622b61e940cef4f3484d5813b95864539272d41cac145d6f3 + checksum: 10/a46c9ddbcc226d9e85e13ef96328c7d331abddd66b5a55ec44bcf4350464a6125385ac9c1e64faa0fae8d586d90a14d6b5e96c73f0388970a3918d5252efb0f3 languageName: node linkType: hard @@ -21079,7 +21850,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: @@ -21682,7 +22453,7 @@ __metadata: languageName: node linkType: hard -"loupe@npm:^3.1.0, loupe@npm:^3.1.2": +"loupe@npm:^3.1.0, loupe@npm:^3.1.2, loupe@npm:^3.1.3": version: 3.1.3 resolution: "loupe@npm:3.1.3" checksum: 10/9e98c34daf0eba48ccc603595e51f2ae002110982d84879cf78c51de2c632f0c571dfe82ce4210af60c32203d06b443465c269bda925076fe6d9b612cc65c321 @@ -21735,6 +22506,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^11.0.0, lru-cache@npm:^11.0.1": + 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" @@ -21778,7 +22556,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.12, magic-string@npm:^0.30.5": +"magic-string@npm:^0.30.12, magic-string@npm:^0.30.17, magic-string@npm:^0.30.5": version: 0.30.17 resolution: "magic-string@npm:0.30.17" dependencies: @@ -21903,6 +22681,23 @@ __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:^14.0.0": version: 14.1.4 resolution: "marked@npm:14.1.4" @@ -22247,6 +23042,13 @@ __metadata: languageName: node linkType: hard +"media-typer@npm:^1.1.0": + version: 1.1.0 + resolution: "media-typer@npm:1.1.0" + checksum: 10/a58dd60804df73c672942a7253ccc06815612326dc1c0827984b1a21704466d7cde351394f47649e56cf7415e6ee2e26e000e81b51b3eebb5a93540e8bf93cbd + languageName: node + linkType: hard + "memfs@npm:^3.1.2, memfs@npm:^3.4.3": version: 3.5.3 resolution: "memfs@npm:3.5.3" @@ -22277,6 +23079,13 @@ __metadata: languageName: node linkType: hard +"merge-descriptors@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-descriptors@npm:2.0.0" + checksum: 10/e383332e700a94682d0125a36c8be761142a1320fc9feeb18e6e36647c9edf064271645f5669b2c21cf352116e561914fd8aa831b651f34db15ef4038c86696a + languageName: node + linkType: hard + "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -22310,69 +23119,69 @@ __metadata: languageName: node linkType: hard -"metro-babel-transformer@npm:0.82.2": - version: 0.82.2 - resolution: "metro-babel-transformer@npm:0.82.2" +"metro-babel-transformer@npm:0.82.3": + version: 0.82.3 + resolution: "metro-babel-transformer@npm:0.82.3" dependencies: "@babel/core": "npm:^7.25.2" flow-enums-runtime: "npm:^0.0.6" hermes-parser: "npm:0.28.1" nullthrows: "npm:^1.1.1" - checksum: 10/a08d66d31d18287278c5fa5ba900b9feddb96a5b6cbd52bdfc0758bc0591790d525c8aae79f55e14345a89a4ca560e5840837407e1b4a3049a30dbaec92534b3 + checksum: 10/892e66a8057fd75364174c4ac9930362fb0aec9d97eb316aecfd8dea86b8a6e1324c3a5d635a822379d0e1be4bca7198d937b1808f7e9b77c5eb8a323e0ef292 languageName: node linkType: hard -"metro-cache-key@npm:0.82.2": - version: 0.82.2 - resolution: "metro-cache-key@npm:0.82.2" +"metro-cache-key@npm:0.82.3": + version: 0.82.3 + resolution: "metro-cache-key@npm:0.82.3" dependencies: flow-enums-runtime: "npm:^0.0.6" - checksum: 10/55a033f6caab873d69a65e353b4f17b5ed904e9f6b2e735553e055d200b170f65e0d4b3d4256b6baf4de6b6d751cdd1a8211fb4d82c74b614e4196768c693310 + checksum: 10/fdb3c4e4b8c665cc5b74227b714201abff55dcff3039a83010088744362444bc6ae7cf16b6673125914120c0af91f6767de36569c202ca2539fafbc403bea082 languageName: node linkType: hard -"metro-cache@npm:0.82.2": - version: 0.82.2 - resolution: "metro-cache@npm:0.82.2" +"metro-cache@npm:0.82.3": + version: 0.82.3 + resolution: "metro-cache@npm:0.82.3" dependencies: exponential-backoff: "npm:^3.1.1" flow-enums-runtime: "npm:^0.0.6" https-proxy-agent: "npm:^7.0.5" - metro-core: "npm:0.82.2" - checksum: 10/d274074f73a7ad6a871ffd089f895c64b7e1a496d936bd4cf31678f5351787f828d010accc9daa8aad75a8698264f3809cb3c5ca8aaccd8f6c174f8a5db354a1 + metro-core: "npm:0.82.3" + checksum: 10/a5927dfa5da890437526bf41c53f3be3044e0a58a40dd5d426a4bfd635580716d9eaa67e30b328717d4fb498514b839106fbe63a2f922da02058292177c447a0 languageName: node linkType: hard -"metro-config@npm:0.82.2, metro-config@npm:^0.82.0": - version: 0.82.2 - resolution: "metro-config@npm:0.82.2" +"metro-config@npm:0.82.3, metro-config@npm:^0.82.0": + version: 0.82.3 + resolution: "metro-config@npm:0.82.3" dependencies: connect: "npm:^3.6.5" cosmiconfig: "npm:^5.0.5" flow-enums-runtime: "npm:^0.0.6" jest-validate: "npm:^29.7.0" - metro: "npm:0.82.2" - metro-cache: "npm:0.82.2" - metro-core: "npm:0.82.2" - metro-runtime: "npm:0.82.2" - checksum: 10/70b8304ca44b48627f6efd2810dd1f93f20a60b2c716902d927248a0f3ad9d30e9ddffe121636227244748fb7f828095b6df820568d1c9e8f6ef6de095b3b786 + metro: "npm:0.82.3" + metro-cache: "npm:0.82.3" + metro-core: "npm:0.82.3" + metro-runtime: "npm:0.82.3" + checksum: 10/c8e81622462069b3c6dbac44a89f3cb0f64589edb0271217870beb57ff4fecd163892c6c1c71181cdc95b2cb6fe9c91548eb5095f63d0b72f8b234231bc022b2 languageName: node linkType: hard -"metro-core@npm:0.82.2, metro-core@npm:^0.82.0": - version: 0.82.2 - resolution: "metro-core@npm:0.82.2" +"metro-core@npm:0.82.3, metro-core@npm:^0.82.0": + version: 0.82.3 + resolution: "metro-core@npm:0.82.3" dependencies: flow-enums-runtime: "npm:^0.0.6" lodash.throttle: "npm:^4.1.1" - metro-resolver: "npm:0.82.2" - checksum: 10/515a068dc696855a13f9b58e855224a0c3fcf0b8b31f19d48501d71cd4035d63162be6f887cb7d273030357e7d888c620ee80821e75b2f9e8164f1864a2b58ef + metro-resolver: "npm:0.82.3" + checksum: 10/769f9e0c1e1b41cc55c165bfaeff74ed9e253172ffb7c107dddb98ddd291ac0d93dd730a077303aafafaf9522e24a3d2b45670d9ae0ebcf7baf873e78dbdeb86 languageName: node linkType: hard -"metro-file-map@npm:0.82.2": - version: 0.82.2 - resolution: "metro-file-map@npm:0.82.2" +"metro-file-map@npm:0.82.3": + version: 0.82.3 + resolution: "metro-file-map@npm:0.82.3" dependencies: debug: "npm:^4.4.0" fb-watchman: "npm:^2.0.0" @@ -22383,76 +23192,76 @@ __metadata: micromatch: "npm:^4.0.4" nullthrows: "npm:^1.1.1" walker: "npm:^1.0.7" - checksum: 10/63d66c559f2563cb2ec5a99b601bbdc6f729ef68d54ba57193e00f11ede16b64f6d53ecb7e5a7056695da35dc23c3789955d0c69522f00a73da5c3cea69cb88c + checksum: 10/fcc4e522bbcef05df310871e86e4f1fb9c00385be2e1f199472e0b7ea8255918141daaabb13c088080991bfd1216f8b254fbfe94cfc008b6ca9544fa5a07f800 languageName: node linkType: hard -"metro-minify-terser@npm:0.82.2": - version: 0.82.2 - resolution: "metro-minify-terser@npm:0.82.2" +"metro-minify-terser@npm:0.82.3": + version: 0.82.3 + resolution: "metro-minify-terser@npm:0.82.3" dependencies: flow-enums-runtime: "npm:^0.0.6" terser: "npm:^5.15.0" - checksum: 10/c559621d1957493f4184201170130a29097d3a814d174278c581abd5afbff5738888055c251af49be37f8a470eb38a717febf7326b4d2fe6303b94cd019c84ea + checksum: 10/4f425549e5617e3dc39923c6e8ebb792da59bf9274934adaf8be90ea4fc9575780879fe4dc2802a5b2b75c2eb08761d8baf08d006384eb304e680e8e283d1a9e languageName: node linkType: hard -"metro-resolver@npm:0.82.2": - version: 0.82.2 - resolution: "metro-resolver@npm:0.82.2" +"metro-resolver@npm:0.82.3": + version: 0.82.3 + resolution: "metro-resolver@npm:0.82.3" dependencies: flow-enums-runtime: "npm:^0.0.6" - checksum: 10/657af07102a23bbbd7c56824ccece60c439d47a908fadab76b2729aaae24d47639fff79cdd78af121a819a91e3d9f5f2fcad0173f488299b0f068859cb9d3de4 + checksum: 10/3147a901ff03d3d5da577ab6ecfdff4f96d98152686fd5fbc8ccf4c8658f7a37904d1865709589a5471ba8e6a383f0d774042217426b337403145b3e9365917a languageName: node linkType: hard -"metro-runtime@npm:0.82.2, metro-runtime@npm:^0.82.0": - version: 0.82.2 - resolution: "metro-runtime@npm:0.82.2" +"metro-runtime@npm:0.82.3, metro-runtime@npm:^0.82.0": + version: 0.82.3 + resolution: "metro-runtime@npm:0.82.3" dependencies: "@babel/runtime": "npm:^7.25.0" flow-enums-runtime: "npm:^0.0.6" - checksum: 10/5969a3d082b4f6ef1243b1ec3439d8696df5be62ad665e8c52a17e2ac0119d4b4f8ef58a7d38f3e915cbd92252fecdde9c8819fc6924c797bd26ef83b0336a1b + checksum: 10/c44305d145bc26cd87d060084effe4cf28814a73ed5df0fbd36abef3ea91e7f1e2348028e4342541398416674d255c79920d041610a33484e14c6e78cfcb8d61 languageName: node linkType: hard -"metro-source-map@npm:0.82.2, metro-source-map@npm:^0.82.0": - version: 0.82.2 - resolution: "metro-source-map@npm:0.82.2" +"metro-source-map@npm:0.82.3, metro-source-map@npm:^0.82.0": + version: 0.82.3 + resolution: "metro-source-map@npm:0.82.3" dependencies: "@babel/traverse": "npm:^7.25.3" "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3" "@babel/types": "npm:^7.25.2" flow-enums-runtime: "npm:^0.0.6" invariant: "npm:^2.2.4" - metro-symbolicate: "npm:0.82.2" + metro-symbolicate: "npm:0.82.3" nullthrows: "npm:^1.1.1" - ob1: "npm:0.82.2" + ob1: "npm:0.82.3" source-map: "npm:^0.5.6" vlq: "npm:^1.0.0" - checksum: 10/d78c35baa3cff70de4eb81828ee081710396cbf1af10fd3b9421748e4414cb4625d2407c626f722d0b1c9f60bd6be8cac3b12fb5bcc0ed262fa52b023d2e6a8c + checksum: 10/251a2da8e63bbb4b1c3ea56e82d3b71a6d76bfb527a116bf97bc242cdcc8ec282bb7a871fa481509e5619edc2241a575967f5f078920b6182379bfe698c8c9be languageName: node linkType: hard -"metro-symbolicate@npm:0.82.2": - version: 0.82.2 - resolution: "metro-symbolicate@npm:0.82.2" +"metro-symbolicate@npm:0.82.3": + version: 0.82.3 + resolution: "metro-symbolicate@npm:0.82.3" dependencies: flow-enums-runtime: "npm:^0.0.6" invariant: "npm:^2.2.4" - metro-source-map: "npm:0.82.2" + metro-source-map: "npm:0.82.3" nullthrows: "npm:^1.1.1" source-map: "npm:^0.5.6" vlq: "npm:^1.0.0" bin: metro-symbolicate: src/index.js - checksum: 10/710630d319e36bd67bed8abe72959e479e3f4267add86779dc29185efbd985f04d3654dc91502c0d294d696c6b8540466bfbbbc0881a0dae3c8853923d025e92 + checksum: 10/43240b30c58575b40cddb4d37879d2789824ec77bd3d94a66d6bec8b2f4cd2f8e2967e8ce33524b74eed244b25666302db8352a8066680582a8b7ac8c8e3abe9 languageName: node linkType: hard -"metro-transform-plugins@npm:0.82.2": - version: 0.82.2 - resolution: "metro-transform-plugins@npm:0.82.2" +"metro-transform-plugins@npm:0.82.3": + version: 0.82.3 + resolution: "metro-transform-plugins@npm:0.82.3" dependencies: "@babel/core": "npm:^7.25.2" "@babel/generator": "npm:^7.25.0" @@ -22460,34 +23269,34 @@ __metadata: "@babel/traverse": "npm:^7.25.3" flow-enums-runtime: "npm:^0.0.6" nullthrows: "npm:^1.1.1" - checksum: 10/af1af393abdf61403271a57c5828ae1d7023530ff96ee16370fe80828a9cbb6e3e8bc9c273f757dff820e6bea7601d4fa1ee145988651f09e35734a8bc543966 + checksum: 10/93a9ab8f5f455346742705a3dc89b6c2f2ac9f072188fd50bc1f673aa55e06b1943fad4fc1b32f6667544be5c0554b50cb226568189e1a45b0326f965e02d970 languageName: node linkType: hard -"metro-transform-worker@npm:0.82.2": - version: 0.82.2 - resolution: "metro-transform-worker@npm:0.82.2" +"metro-transform-worker@npm:0.82.3": + version: 0.82.3 + resolution: "metro-transform-worker@npm:0.82.3" dependencies: "@babel/core": "npm:^7.25.2" "@babel/generator": "npm:^7.25.0" "@babel/parser": "npm:^7.25.3" "@babel/types": "npm:^7.25.2" flow-enums-runtime: "npm:^0.0.6" - metro: "npm:0.82.2" - metro-babel-transformer: "npm:0.82.2" - metro-cache: "npm:0.82.2" - metro-cache-key: "npm:0.82.2" - metro-minify-terser: "npm:0.82.2" - metro-source-map: "npm:0.82.2" - metro-transform-plugins: "npm:0.82.2" + metro: "npm:0.82.3" + metro-babel-transformer: "npm:0.82.3" + metro-cache: "npm:0.82.3" + metro-cache-key: "npm:0.82.3" + metro-minify-terser: "npm:0.82.3" + metro-source-map: "npm:0.82.3" + metro-transform-plugins: "npm:0.82.3" nullthrows: "npm:^1.1.1" - checksum: 10/842cda8848d192013b7605f232a10616414f664d626abfd3846087d1dedff1fd68538cfe19aadb73ed2449a129f0c67cd604a3117f6241ea3b0cf5f98288cbc0 + checksum: 10/26882e55d29b405b853e085e23a6ad8cbd231755888aff92016163a0ef54cb02596d204620cf3270e90f8343fcc8cccd4bf7361aeccf1bc361c5b08c7d8e680e languageName: node linkType: hard -"metro@npm:0.82.2, metro@npm:^0.82.0": - version: 0.82.2 - resolution: "metro@npm:0.82.2" +"metro@npm:0.82.3, metro@npm:^0.82.0": + version: 0.82.3 + resolution: "metro@npm:0.82.3" dependencies: "@babel/code-frame": "npm:^7.24.7" "@babel/core": "npm:^7.25.2" @@ -22510,18 +23319,18 @@ __metadata: jest-worker: "npm:^29.7.0" jsc-safe-url: "npm:^0.2.2" lodash.throttle: "npm:^4.1.1" - metro-babel-transformer: "npm:0.82.2" - metro-cache: "npm:0.82.2" - metro-cache-key: "npm:0.82.2" - metro-config: "npm:0.82.2" - metro-core: "npm:0.82.2" - metro-file-map: "npm:0.82.2" - metro-resolver: "npm:0.82.2" - metro-runtime: "npm:0.82.2" - metro-source-map: "npm:0.82.2" - metro-symbolicate: "npm:0.82.2" - metro-transform-plugins: "npm:0.82.2" - metro-transform-worker: "npm:0.82.2" + metro-babel-transformer: "npm:0.82.3" + metro-cache: "npm:0.82.3" + metro-cache-key: "npm:0.82.3" + metro-config: "npm:0.82.3" + metro-core: "npm:0.82.3" + metro-file-map: "npm:0.82.3" + metro-resolver: "npm:0.82.3" + metro-runtime: "npm:0.82.3" + metro-source-map: "npm:0.82.3" + metro-symbolicate: "npm:0.82.3" + metro-transform-plugins: "npm:0.82.3" + metro-transform-worker: "npm:0.82.3" mime-types: "npm:^2.1.27" nullthrows: "npm:^1.1.1" serialize-error: "npm:^2.1.0" @@ -22531,7 +23340,7 @@ __metadata: yargs: "npm:^17.6.2" bin: metro: src/cli.js - checksum: 10/f65710d9a7831275e6bf0cc690193c5b567d338db76202cf9faee30f9f2ae84ae012898582e4dad4de72a0cd82eb444e2b527c98cce6e5114b58fa36fde856f5 + checksum: 10/15e9e8b67698ebcb552d0d686b210121115dbb8604ddcea5dad82cd4344a4eb54fa474c21c8faa0511b27ab7232a123401c13635a1a84040991801226591fd57 languageName: node linkType: hard @@ -23100,7 +23909,7 @@ __metadata: languageName: node linkType: hard -"mime-db@npm:>= 1.43.0 < 2": +"mime-db@npm:>= 1.43.0 < 2, mime-db@npm:^1.54.0": version: 1.54.0 resolution: "mime-db@npm:1.54.0" checksum: 10/9e7834be3d66ae7f10eaa69215732c6d389692b194f876198dca79b2b90cbf96688d9d5d05ef7987b20f749b769b11c01766564264ea5f919c88b32a29011311 @@ -23132,6 +23941,15 @@ __metadata: languageName: node linkType: hard +"mime-types@npm:^3.0.0, mime-types@npm:^3.0.1": + version: 3.0.1 + resolution: "mime-types@npm:3.0.1" + dependencies: + mime-db: "npm:^1.54.0" + checksum: 10/fa1d3a928363723a8046c346d87bf85d35014dae4285ad70a3ff92bd35957992b3094f8417973cfe677330916c6ef30885109624f1fb3b1e61a78af509dba120 + languageName: node + linkType: hard + "mime@npm:1.6.0": version: 1.6.0 resolution: "mime@npm:1.6.0" @@ -23236,6 +24054,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:^5.0.1": version: 5.1.6 resolution: "minimatch@npm:5.1.6" @@ -23606,7 +24433,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: @@ -23746,7 +24573,7 @@ __metadata: languageName: node linkType: hard -"node-emoji@npm:^2.1.0, node-emoji@npm:^2.1.3": +"node-emoji@npm:^2.1.0, node-emoji@npm:^2.1.3, node-emoji@npm:^2.2.0": version: 2.2.0 resolution: "node-emoji@npm:2.2.0" dependencies: @@ -24093,16 +24920,16 @@ __metadata: languageName: node linkType: hard -"ob1@npm:0.82.2": - version: 0.82.2 - resolution: "ob1@npm:0.82.2" +"ob1@npm:0.82.3": + version: 0.82.3 + resolution: "ob1@npm:0.82.3" dependencies: flow-enums-runtime: "npm:^0.0.6" - checksum: 10/f01c4f990ed2dfaadb2d6287d5dd10aa51ddf607a024000b71e76d461c60357dffb65eb76025951fdacfeb92d43b63358c3ca468ee2ba2edb935c70beb451d9b + checksum: 10/353bf489624f90c5029128ecd3ca5f8fbb68d334bcb27de06611e4a5b09b90473b860514aaa54eba2238b37b5fd53d51032a24d80494cd0b77e4d9b7f7a86553 languageName: node linkType: hard -"object-assign@npm:4.1.1, object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": +"object-assign@npm:4.1.1, object-assign@npm:^4, object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: 10/fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f @@ -24223,7 +25050,7 @@ __metadata: languageName: node linkType: hard -"on-finished@npm:2.4.1": +"on-finished@npm:2.4.1, on-finished@npm:^2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" dependencies: @@ -24621,6 +25448,13 @@ __metadata: languageName: node linkType: hard +"package-manager-detector@npm:^1.1.0": + version: 1.3.0 + resolution: "package-manager-detector@npm:1.3.0" + checksum: 10/b21155d53a8ab96d5be3bfae43cc1d397bf363782b922d1f6967d220d2a9f08234ebb76035318bf92822ce761d10451959f01019faebc08fdb4d4a8bc3103da6 + languageName: node + linkType: hard + "pagefind@npm:^1.1.0": version: 1.3.0 resolution: "pagefind@npm:1.3.0" @@ -24745,6 +25579,15 @@ __metadata: 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-htmlparser2-tree-adapter@npm:^7.0.0": version: 7.1.0 resolution: "parse5-htmlparser2-tree-adapter@npm:7.1.0" @@ -24755,13 +25598,20 @@ __metadata: languageName: node linkType: hard -"parse5@npm:6.0.1": +"parse5@npm:6.0.1, parse5@npm:^6.0.1": version: 6.0.1 resolution: "parse5@npm:6.0.1" checksum: 10/dfb110581f62bd1425725a7c784ae022a24669bd0efc24b58c71fc731c4d868193e2ebd85b74cde2dbb965e4dcf07059b1e651adbec1b3b5267531bd132fdb75 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:^7.0.0, parse5@npm:^7.1.2": version: 7.3.0 resolution: "parse5@npm:7.3.0" @@ -24771,7 +25621,7 @@ __metadata: languageName: node linkType: hard -"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": +"parseurl@npm:^1.3.3, parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" checksum: 10/407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 @@ -24880,6 +25730,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-to-regexp@npm:0.1.12": version: 0.1.12 resolution: "path-to-regexp@npm:0.1.12" @@ -24910,6 +25770,13 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:^8.0.0": + version: 8.2.0 + resolution: "path-to-regexp@npm:8.2.0" + checksum: 10/23378276a172b8ba5f5fb824475d1818ca5ccee7bbdb4674701616470f23a14e536c1db11da9c9e6d82b82c556a817bbf4eee6e41b9ed20090ef9427cbb38e13 + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -24931,7 +25798,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 @@ -25015,6 +25882,13 @@ __metadata: languageName: node linkType: hard +"pkce-challenge@npm:^5.0.0": + version: 5.0.0 + resolution: "pkce-challenge@npm:5.0.0" + checksum: 10/e60c06a0e0481cb82f80072053d5c479a7490758541c4226460450285dd5d72a995c44b3c553731ca7c2f64cc34b35f1d2e5f9de08d276b59899298f9efe1ddf + languageName: node + linkType: hard + "pkg-dir@npm:^3.0.0": version: 3.0.0 resolution: "pkg-dir@npm:3.0.0" @@ -26702,7 +27576,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.2.1, postcss@npm:^8.3.5, postcss@npm:^8.4.21, postcss@npm:^8.4.24, postcss@npm:^8.4.26, postcss@npm:^8.4.33, postcss@npm:^8.4.38, postcss@npm:^8.4.4, postcss@npm:^8.4.43, postcss@npm:^8.4.47": +"postcss@npm:^8.2.1, postcss@npm:^8.3.5, postcss@npm:^8.4.21, postcss@npm:^8.4.24, postcss@npm:^8.4.26, postcss@npm:^8.4.33, postcss@npm:^8.4.38, postcss@npm:^8.4.4, postcss@npm:^8.4.43, postcss@npm:^8.4.47, postcss@npm:^8.5.3": version: 8.5.3 resolution: "postcss@npm:8.5.3" dependencies: @@ -26743,7 +27617,7 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^3.2.1, prettier@npm:^3.2.5, prettier@npm:^3.3.3": +"prettier@npm:^3.2.1, prettier@npm:^3.2.5, prettier@npm:^3.3.3, prettier@npm:^3.5.3": version: 3.5.3 resolution: "prettier@npm:3.5.3" bin: @@ -26995,7 +27869,7 @@ __metadata: languageName: node linkType: hard -"proxy-addr@npm:~2.0.7": +"proxy-addr@npm:^2.0.7, proxy-addr@npm:~2.0.7": version: 2.0.7 resolution: "proxy-addr@npm:2.0.7" dependencies: @@ -27037,6 +27911,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 + "pump@npm:^3.0.0": version: 3.0.2 resolution: "pump@npm:3.0.2" @@ -27088,7 +27976,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.9.4": +"qs@npm:^6.14.0, qs@npm:^6.9.4": version: 6.14.0 resolution: "qs@npm:6.14.0" dependencies: @@ -27206,6 +28094,18 @@ __metadata: languageName: node linkType: hard +"raw-body@npm:^3.0.0": + version: 3.0.0 + resolution: "raw-body@npm:3.0.0" + dependencies: + bytes: "npm:3.1.2" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.6.3" + unpipe: "npm:1.0.0" + checksum: 10/2443429bbb2f9ae5c50d3d2a6c342533dfbde6b3173740b70fa0302b30914ff400c6d31a46b3ceacbe7d0925dc07d4413928278b494b04a65736fc17ca33e30c + languageName: node + linkType: hard + "rc@npm:1.2.8, rc@npm:^1.0.1, rc@npm:^1.1.6, rc@npm:^1.2.8": version: 1.2.8 resolution: "rc@npm:1.2.8" @@ -27278,12 +28178,12 @@ __metadata: linkType: hard "react-devtools-core@npm:^6.1.1": - version: 6.1.1 - resolution: "react-devtools-core@npm:6.1.1" + version: 6.1.2 + resolution: "react-devtools-core@npm:6.1.2" dependencies: shell-quote: "npm:^1.6.1" ws: "npm:^7" - checksum: 10/0cd89c9c45aab383f98a66f0200ece4738b3f1ea3a6a5c947afc3a822aa22094b69f9bedc6bef5c961a3715ecc8d5350e0d87ad0eb90e4d2c752fb585c51b4f7 + checksum: 10/439c86343f0cff52512c11ecb4a52522cf92bbd4e5cf18a2a08ce0592aa6e8ae2f0f16058b0b9fb741ab67a5caa24a86ac240291d5042756bbd4f6e2c03cb8c6 languageName: node linkType: hard @@ -28781,6 +29681,18 @@ __metadata: languageName: node linkType: hard +"rimraf@npm:^6.0.1": + version: 6.0.1 + resolution: "rimraf@npm:6.0.1" + dependencies: + glob: "npm:^11.0.0" + package-json-from-dist: "npm:^1.0.0" + bin: + rimraf: dist/esm/bin.mjs + checksum: 10/0eb7edf08aa39017496c99ba675552dda11a20811ba78f8232da2ba945308c91e9cd673f95998b1a8202bc7436d33390831d23ea38ae52751038d56373ad99e2 + languageName: node + linkType: hard + "rimraf@npm:~2.6.2": version: 2.6.3 resolution: "rimraf@npm:2.6.3" @@ -28878,30 +29790,30 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.20.0, rollup@npm:^4.34.8": - version: 4.40.1 - resolution: "rollup@npm:4.40.1" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.40.1" - "@rollup/rollup-android-arm64": "npm:4.40.1" - "@rollup/rollup-darwin-arm64": "npm:4.40.1" - "@rollup/rollup-darwin-x64": "npm:4.40.1" - "@rollup/rollup-freebsd-arm64": "npm:4.40.1" - "@rollup/rollup-freebsd-x64": "npm:4.40.1" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.40.1" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.40.1" - "@rollup/rollup-linux-arm64-gnu": "npm:4.40.1" - "@rollup/rollup-linux-arm64-musl": "npm:4.40.1" - "@rollup/rollup-linux-loongarch64-gnu": "npm:4.40.1" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.40.1" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.40.1" - "@rollup/rollup-linux-riscv64-musl": "npm:4.40.1" - "@rollup/rollup-linux-s390x-gnu": "npm:4.40.1" - "@rollup/rollup-linux-x64-gnu": "npm:4.40.1" - "@rollup/rollup-linux-x64-musl": "npm:4.40.1" - "@rollup/rollup-win32-arm64-msvc": "npm:4.40.1" - "@rollup/rollup-win32-ia32-msvc": "npm:4.40.1" - "@rollup/rollup-win32-x64-msvc": "npm:4.40.1" +"rollup@npm:^4.20.0, rollup@npm:^4.34.8, rollup@npm:^4.34.9": + version: 4.40.2 + resolution: "rollup@npm:4.40.2" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.40.2" + "@rollup/rollup-android-arm64": "npm:4.40.2" + "@rollup/rollup-darwin-arm64": "npm:4.40.2" + "@rollup/rollup-darwin-x64": "npm:4.40.2" + "@rollup/rollup-freebsd-arm64": "npm:4.40.2" + "@rollup/rollup-freebsd-x64": "npm:4.40.2" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.40.2" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.40.2" + "@rollup/rollup-linux-arm64-gnu": "npm:4.40.2" + "@rollup/rollup-linux-arm64-musl": "npm:4.40.2" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.40.2" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.40.2" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.40.2" + "@rollup/rollup-linux-riscv64-musl": "npm:4.40.2" + "@rollup/rollup-linux-s390x-gnu": "npm:4.40.2" + "@rollup/rollup-linux-x64-gnu": "npm:4.40.2" + "@rollup/rollup-linux-x64-musl": "npm:4.40.2" + "@rollup/rollup-win32-arm64-msvc": "npm:4.40.2" + "@rollup/rollup-win32-ia32-msvc": "npm:4.40.2" + "@rollup/rollup-win32-x64-msvc": "npm:4.40.2" "@types/estree": "npm:1.0.7" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -28949,7 +29861,20 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10/35d5e83a69000ddd6c087015eb5f862943c53b6e20702575ef50aeb99ce99b864fa74cca630815eb97cdfe1f278f5602f782e55f227b32ac2301f2a5f1fc5373 + checksum: 10/ab767c56e37410257864e051fccbdaf448ac7774129bf39295de716af816c49e0247e72749959969efbd892fc64e096880fa269764adf765579100e81abf5e7c + languageName: node + linkType: hard + +"router@npm:^2.2.0": + version: 2.2.0 + resolution: "router@npm:2.2.0" + dependencies: + debug: "npm:^4.4.0" + depd: "npm:^2.0.0" + is-promise: "npm:^4.0.0" + parseurl: "npm:^1.3.3" + path-to-regexp: "npm:^8.0.0" + checksum: 10/8949bd1d3da5403cc024e2989fee58d7fda0f3ffe9f2dc5b8a192f295f400b3cde307b0b554f7d44851077640f36962ca469a766b3d57410d7d96245a7ba6c91 languageName: node linkType: hard @@ -29064,7 +29989,7 @@ __metadata: languageName: node linkType: hard -"sade@npm:^1.7.4": +"sade@npm:^1.7.4, sade@npm:^1.8.1": version: 1.8.1 resolution: "sade@npm:1.8.1" dependencies: @@ -29362,7 +30287,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.1.3, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4": +"semver@npm:^7.1.3, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": version: 7.7.1 resolution: "semver@npm:7.7.1" bin: @@ -29403,6 +30328,25 @@ __metadata: languageName: node linkType: hard +"send@npm:^1.1.0, send@npm:^1.2.0": + version: 1.2.0 + resolution: "send@npm:1.2.0" + dependencies: + debug: "npm:^4.3.5" + encodeurl: "npm:^2.0.0" + escape-html: "npm:^1.0.3" + etag: "npm:^1.8.1" + fresh: "npm:^2.0.0" + http-errors: "npm:^2.0.0" + mime-types: "npm:^3.0.1" + ms: "npm:^2.1.3" + on-finished: "npm:^2.4.1" + range-parser: "npm:^1.2.1" + statuses: "npm:^2.0.1" + checksum: 10/9fa3b1a3b9a06b7b4ab00c25e8228326d9665a9745753a34d1ffab8ac63c7c206727331d1dc5be73647f1b658d259a1aa8e275b0e0eee51349370af02e9da506 + languageName: node + linkType: hard + "sentence-case@npm:^3.0.4": version: 3.0.4 resolution: "sentence-case@npm:3.0.4" @@ -29481,6 +30425,18 @@ __metadata: languageName: node linkType: hard +"serve-static@npm:^2.2.0": + version: 2.2.0 + resolution: "serve-static@npm:2.2.0" + dependencies: + encodeurl: "npm:^2.0.0" + escape-html: "npm:^1.0.3" + parseurl: "npm:^1.3.3" + send: "npm:^1.2.0" + checksum: 10/9f1a900738c5bb02258275ce3bd1273379c4c3072b622e15d44e8f47d89a1ba2d639ec2d63b11c263ca936096b40758acb7a0d989cd6989018a65a12f9433ada + languageName: node + linkType: hard + "serve@npm:^14.2.0": version: 14.2.4 resolution: "serve@npm:14.2.4" @@ -30152,7 +31108,7 @@ __metadata: languageName: node linkType: hard -"std-env@npm:^3.5.0, std-env@npm:^3.7.0, std-env@npm:^3.8.0": +"std-env@npm:^3.5.0, std-env@npm:^3.7.0, std-env@npm:^3.8.0, std-env@npm:^3.9.0": version: 3.9.0 resolution: "std-env@npm:3.9.0" checksum: 10/3044b2c54a74be4f460db56725571241ab3ac89a91f39c7709519bc90fa37148784bc4cd7d3a301aa735f43bd174496f263563f76703ce3e81370466ab7c235b @@ -30678,7 +31634,7 @@ __metadata: languageName: node linkType: hard -"supports-hyperlinks@npm:^3.0.0": +"supports-hyperlinks@npm:^3.0.0, supports-hyperlinks@npm:^3.1.0": version: 3.2.0 resolution: "supports-hyperlinks@npm:3.2.0" dependencies: @@ -31094,7 +32050,7 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.11, 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: @@ -31111,7 +32067,7 @@ __metadata: languageName: node linkType: hard -"tinypool@npm:^1.0.1": +"tinypool@npm:^1.0.1, tinypool@npm:^1.0.2": version: 1.0.2 resolution: "tinypool@npm:1.0.2" checksum: 10/6109322f14b3763f65c8fa49fddab72cd3edd96b82dd50e05e63de74867329ff5353bff4377281ec963213d9314f37f4a353e9ee34bbac85fd4c1e4a568d6076 @@ -31125,6 +32081,13 @@ __metadata: 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" @@ -31320,6 +32283,15 @@ __metadata: languageName: node linkType: hard +"ts-api-utils@npm:^2.1.0": + 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-expose-internals-conditionally@npm:1.0.0-empty.0": version: 1.0.0-empty.0 resolution: "ts-expose-internals-conditionally@npm:1.0.0-empty.0" @@ -31653,9 +32625,20 @@ __metadata: linkType: hard "type-fest@npm:^4.26.1, type-fest@npm:^4.9.0": - version: 4.40.1 - resolution: "type-fest@npm:4.40.1" - checksum: 10/907767cd7889c8f17d94f4a811ec27c33339a9134f6842a1a56b4d6ee87cb1d6b01332f366a3f03adc10923fd6d511d73b73076f7ab5256bf5c0b43a03ab6e8b + version: 4.41.0 + resolution: "type-fest@npm:4.41.0" + checksum: 10/617ace794ac0893c2986912d28b3065ad1afb484cad59297835a0807dc63286c39e8675d65f7de08fafa339afcb8fe06a36e9a188b9857756ae1e92ee8bda212 + languageName: node + linkType: hard + +"type-is@npm:^2.0.0, type-is@npm:^2.0.1": + version: 2.0.1 + resolution: "type-is@npm:2.0.1" + dependencies: + content-type: "npm:^1.0.5" + media-typer: "npm:^1.1.0" + mime-types: "npm:^3.0.0" + checksum: 10/bacdb23c872dacb7bd40fbd9095e6b2fca2895eedbb689160c05534d7d4810a7f4b3fd1ae87e96133c505958f6d602967a68db5ff577b85dd6be76eaa75d58af languageName: node linkType: hard @@ -31731,6 +32714,20 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.32.0": + version: 8.32.0 + resolution: "typescript-eslint@npm:8.32.0" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.32.0" + "@typescript-eslint/parser": "npm:8.32.0" + "@typescript-eslint/utils": "npm:8.32.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10/d040cc823dc3f9acaf3f540a08a3e24100894cd369dc1763369234c0ba1a5e7e7be97af8071a5d4b611deaedb93a0d7f34c37adaa05a3f8ec0308cca64c6bbf4 + languageName: node + linkType: hard + "typescript@npm:5.3.3": version: 5.3.3 resolution: "typescript@npm:5.3.3" @@ -31741,6 +32738,16 @@ __metadata: languageName: node linkType: hard +"typescript@npm:5.6.1-rc": + version: 5.6.1-rc + resolution: "typescript@npm:5.6.1-rc" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/5716659d5baf142b5c84b96209b30730a5e9dcc0202f879349f9974823f7452ec4ef3904397b6d89d861c688acdbb1dad0a449d753163519fae2ee06ea4a68be + languageName: node + linkType: hard + "typescript@npm:5.8.2": version: 5.8.2 resolution: "typescript@npm:5.8.2" @@ -31761,7 +32768,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.8.2": +"typescript@npm:^5.8.2, typescript@npm:^5.8.3": version: 5.8.3 resolution: "typescript@npm:5.8.3" bin: @@ -31781,6 +32788,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@npm%3A5.6.1-rc#optional!builtin": + version: 5.6.1-rc + resolution: "typescript@patch:typescript@npm%3A5.6.1-rc#optional!builtin::version=5.6.1-rc&hash=8c6c40" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/462e0bb46c63abfc5bfc43f2bb00b9777a4228f3ed52d8930b46404dce71dbada63c27a99262ff4570b5ff7d01455701bfd36823bd3c766e443b6fa33cd31dea + languageName: node + linkType: hard + "typescript@patch:typescript@npm%3A5.8.2#optional!builtin": version: 5.8.2 resolution: "typescript@patch:typescript@npm%3A5.8.2#optional!builtin::version=5.8.2&hash=8c6c40" @@ -31801,7 +32818,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.8.2#optional!builtin": +"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: @@ -32338,14 +33355,14 @@ __metadata: linkType: hard "valibot@npm:^1.0.0": - version: 1.0.0 - resolution: "valibot@npm:1.0.0" + version: 1.1.0 + resolution: "valibot@npm:1.1.0" peerDependencies: typescript: ">=5" peerDependenciesMeta: typescript: optional: true - checksum: 10/3a46878a7cfb41e4538d7ae4b3ee255ca27b717f428f46bff00fa242ac6176b91ecb491200bb092ac24cba8bae96d852799b1c504eb566ee9e01987a18c498f7 + checksum: 10/667c99e3ec2825ea97c20f37add7fe7eb9d15fb338c5f49c166ffba13a6f4516c77c060083e1c6bda77a2275c4d37400b711d284bbea03fd4ae160bbca34112c languageName: node linkType: hard @@ -32384,7 +33401,7 @@ __metadata: languageName: node linkType: hard -"vary@npm:~1.1.2": +"vary@npm:^1, vary@npm:^1.1.2, vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" checksum: 10/31389debef15a480849b8331b220782230b9815a8e0dbb7b9a8369559aed2e9a7800cd904d4371ea74f4c3527db456dc8e7ac5befce5f0d289014dbdf47b2242 @@ -32451,6 +33468,21 @@ __metadata: languageName: node linkType: hard +"vite-node@npm:3.1.3": + version: 3.1.3 + resolution: "vite-node@npm:3.1.3" + dependencies: + cac: "npm:^6.7.14" + debug: "npm:^4.4.0" + es-module-lexer: "npm:^1.7.0" + pathe: "npm:^2.0.3" + vite: "npm:^5.0.0 || ^6.0.0" + bin: + vite-node: vite-node.mjs + checksum: 10/59c1e1397b055861390cf4e540ba1e968e4ad140df8e214f797dd73b9130f00855712779d4f6f0c8c5149bfe95db20ad55f349dd1962a143117a0d71d956235f + languageName: node + linkType: hard + "vite-template-redux@workspace:examples/query/react/infinite-queries": version: 0.0.0-use.local resolution: "vite-template-redux@workspace:examples/query/react/infinite-queries" @@ -32495,7 +33527,7 @@ __metadata: languageName: node linkType: hard -"vite-tsconfig-paths@npm:^5.0.1": +"vite-tsconfig-paths@npm:^5.0.1, vite-tsconfig-paths@npm:^5.1.4": version: 5.1.4 resolution: "vite-tsconfig-paths@npm:5.1.4" dependencies: @@ -32554,6 +33586,61 @@ __metadata: languageName: node linkType: hard +"vite@npm:^5.0.0 || ^6.0.0, vite@npm:^6.3.5": + version: 6.3.5 + resolution: "vite@npm:6.3.5" + 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/7bc3a1c5ef79413ad70daeeaf69b76cd1218d16aa18ed8ee08d74648ef17284f4a17c11f5cf42b573b6dc5e3d5f115110b67b1d23c2c699cfe404757764a634a + languageName: node + linkType: hard + "vitest@npm:^1.2.0, vitest@npm:^1.6.0": version: 1.6.1 resolution: "vitest@npm:1.6.1" @@ -32654,6 +33741,60 @@ __metadata: languageName: node linkType: hard +"vitest@npm:^3.1.3": + version: 3.1.3 + resolution: "vitest@npm:3.1.3" + dependencies: + "@vitest/expect": "npm:3.1.3" + "@vitest/mocker": "npm:3.1.3" + "@vitest/pretty-format": "npm:^3.1.3" + "@vitest/runner": "npm:3.1.3" + "@vitest/snapshot": "npm:3.1.3" + "@vitest/spy": "npm:3.1.3" + "@vitest/utils": "npm:3.1.3" + 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.3" + 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.3 + "@vitest/ui": 3.1.3 + 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/ae74b401b15847615ec664260cf83eb2ce67c4bf018228bd0c48eae2e94309104a8a49b42ef422c27905e438d367207da15364d500f72cf2b723aff448c6a4e6 + languageName: node + linkType: hard + "vlq@npm:^1.0.0": version: 1.0.1 resolution: "vlq@npm:1.0.1" @@ -32941,8 +34082,8 @@ __metadata: linkType: hard "webpack@npm:^5.64.4, webpack@npm:^5.88.1, webpack@npm:^5.95.0, webpack@npm:^5.98.0": - version: 5.99.7 - resolution: "webpack@npm:5.99.7" + version: 5.99.8 + resolution: "webpack@npm:5.99.8" dependencies: "@types/eslint-scope": "npm:^3.7.7" "@types/estree": "npm:^1.0.6" @@ -32973,7 +34114,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 10/c7498395cd1ac600a8e6d249b533ae414fcf73383566cd7ac99c07cebf2df0dd930134d45fa23b4283db33542359669eedf3495f5a1b4a543aab655cbaa27c12 + checksum: 10/e66b9bcc0ae2ea7fd08b90a551ecf066bf71841923d744edc83713a7fdacd0c121a1f6236164d1d18fce6d44642f2960cee2a102e5445c2ef7634c457334c9ae languageName: node linkType: hard @@ -33797,7 +34938,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^16.1.1, yargs@npm:^16.2.0": +"yargs@npm:^16.0.0, yargs@npm:^16.1.1, yargs@npm:^16.2.0": version: 16.2.0 resolution: "yargs@npm:16.2.0" dependencies: @@ -33855,6 +34996,22 @@ __metadata: languageName: node linkType: hard +"zod-to-json-schema@npm:^3.24.1": + version: 3.24.5 + resolution: "zod-to-json-schema@npm:3.24.5" + peerDependencies: + zod: ^3.24.1 + checksum: 10/1af291b4c429945c9568c2e924bdb7c66ab8d139cbeb9a99b6e9fc9e1b02863f85d07759b9303714f07ceda3993dcaf0ebcb80d2c18bb2aaf5502b2c1016affd + languageName: node + linkType: hard + +"zod@npm:^3.23.8, zod@npm:^3.24.2": + version: 3.24.4 + resolution: "zod@npm:3.24.4" + checksum: 10/3d545792fa54bb27ee5dbc34a5709e81f603185fcc94c8204b5d95c20dc4c81d870ff9c51f3884a30ef05cdc601449f4c4df254ac4783f0827b1faed7c1cdb48 + languageName: node + linkType: hard + "zwitch@npm:^2.0.0": version: 2.0.4 resolution: "zwitch@npm:2.0.4"