From 0cb6e82bbd1ab6b8ca72df20cc4c810770876d19 Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Tue, 27 Aug 2024 14:33:13 -0500 Subject: [PATCH] Initialize all the `config` packages --- packages/configs/eslint/.gitignore | 12 + packages/configs/eslint/README.md | 133 +++++ packages/configs/eslint/package.json | 86 +++ packages/configs/eslint/src/index.mts | 265 ++++++++++ packages/configs/eslint/tsconfig.build.json | 8 + packages/configs/eslint/tsconfig.json | 7 + packages/configs/eslint/tsup.config.mts | 45 ++ packages/configs/prettier/.gitignore | 12 + packages/configs/prettier/README.md | 88 ++++ packages/configs/prettier/package.json | 75 +++ packages/configs/prettier/src/index.mts | 89 ++++ packages/configs/prettier/tsconfig.build.json | 8 + packages/configs/prettier/tsconfig.json | 7 + packages/configs/prettier/tsup.config.mts | 45 ++ packages/configs/typescript/.gitignore | 12 + 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 + .../typescript/node-next/tsconfig.json | 9 + packages/configs/typescript/package.json | 39 ++ packages/configs/vitest/.gitignore | 12 + packages/configs/vitest/README.md | 117 +++++ packages/configs/vitest/package.json | 85 +++ packages/configs/vitest/src/index.mts | 130 +++++ packages/configs/vitest/tsconfig.build.json | 8 + packages/configs/vitest/tsconfig.json | 7 + packages/configs/vitest/tsup.config.mts | 52 ++ yarn.lock | 493 +++++++++++++++++- 30 files changed, 1930 insertions(+), 16 deletions(-) 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/index.mts 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/index.mts 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-next/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/index.mts 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/packages/configs/eslint/.gitignore b/packages/configs/eslint/.gitignore new file mode 100644 index 0000000000..518e7ae942 --- /dev/null +++ b/packages/configs/eslint/.gitignore @@ -0,0 +1,12 @@ +.DS_Store +*.log +node_modules +.vscode +dist +build +temp +.yalc +yalc.lock +tsconfig.vitest-temp.json +.eslintcache +*.tgz diff --git a/packages/configs/eslint/README.md b/packages/configs/eslint/README.md new file mode 100644 index 0000000000..f870fbb141 --- /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 { reduxESLintConfig } from '@reduxjs/eslint-config' + +export default reduxESLintConfig +``` + +**CommonJS (CJS) usage inside a file like `eslint.config.cts` or `eslint.config.cjs` (using `require`)**: + +```ts +const { reduxESLintConfig } = require('@reduxjs/eslint-config') + +module.exports = reduxESLintConfig +``` + +**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')).reduxESLintConfig)() +``` + +**CommonJS (CJS) usage inside a file like `eslint.config.cts` (using import and export assignment)**: + +```ts +import ReduxESLintConfig = require('@reduxjs/eslint-config') +import reduxESLintConfig = ReduxESLintConfig.reduxESLintConfig + +export = reduxESLintConfig +``` + +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 `reduxESLintConfig` 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 ReduxESLintConfig = require('@reduxjs/eslint-config') +import createESLintConfig = ReduxESLintConfig.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..9d8a3590f0 --- /dev/null +++ b/packages/configs/eslint/package.json @@ -0,0 +1,86 @@ +{ + "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, + "exports": { + "./package.json": "./package.json", + ".": { + "module-sync": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "module": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "default": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + } + }, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "source": "./src/index.mts", + "types": "./dist/index.d.ts", + "files": [ + "dist", + "src" + ], + "scripts": { + "build": "yarn clean && tsup", + "clean": "rimraf dist", + "prepack": "yarn build" + }, + "dependencies": { + "@eslint/js": "^9.16.0", + "@typescript-eslint/utils": "^8.18.0", + "eslint-config-prettier": "^9.1.0", + "typescript-eslint": "^8.18.0" + }, + "devDependencies": { + "@reduxjs/tsconfig": "workspace:^", + "@types/eslint-config-prettier": "^6.11.3", + "eslint": "^9.16.0", + "rimraf": "^6.0.1", + "tsup": "^8.3.5", + "typescript": "^5.7.2" + }, + "peerDependencies": { + "eslint": ">=8.56.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "typescript": { + "optional": true + } + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/configs/eslint/src/index.mts b/packages/configs/eslint/src/index.mts new file mode 100644 index 0000000000..cd228af3e0 --- /dev/null +++ b/packages/configs/eslint/src/index.mts @@ -0,0 +1,265 @@ +import js from '@eslint/js' +import type { TSESLint } from '@typescript-eslint/utils' +import prettierConfig from 'eslint-config-prettier' +import type { ConfigWithExtends } from 'typescript-eslint' +import { config, configs, parser } from 'typescript-eslint' + +/** + * Represents the global variables provided by Vitest. + * + * @since 0.0.1 + * @public + */ +export type VitestGlobals = { + suite: false + test: false + describe: false + it: false + expectTypeOf: false + assertType: false + expect: false + assert: false + vitest: false + vi: false + beforeAll: false + afterAll: false + beforeEach: false + afterEach: false + onTestFailed: false + onTestFinished: false +} + +/** + * An object representing the globals provided by Vitest for use in testing. + * + * @since 0.0.1 + * @public + */ +export const vitestGlobals: VitestGlobals = { + suite: false, + test: false, + describe: false, + it: false, + expectTypeOf: false, + assertType: false, + expect: false, + assert: false, + vitest: false, + vi: false, + beforeAll: false, + afterAll: false, + beforeEach: false, + afterEach: false, + onTestFailed: false, + onTestFinished: false, +} satisfies Record + +/** + * ESLint configuration tailored for internal Redux projects using TypeScript. + * + * @example + * #### __ECMAScript Modules (ESM) usage inside a file like `eslint.config.mts` or `eslint.config.mjs`__ + * + * ```ts + * import { reduxESLintConfig } from '@reduxjs/eslint-config' + * + * export default reduxESLintConfig + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `eslint.config.cts` or `eslint.config.cjs` (using `require`)__ + * + * ```ts + * const { reduxESLintConfig } = require('@reduxjs/eslint-config') + * + * module.exports = reduxESLintConfig + * ``` + * + * @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')).reduxESLintConfig)() + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `eslint.config.cts` (using import and export assignment)__ + * + * ```ts + * import ReduxESLintConfig = require('@reduxjs/eslint-config') + * import reduxESLintConfig = ReduxESLintConfig.reduxESLintConfig + * + * export = reduxESLintConfig + * ``` + * + * @since 0.0.1 + * @public + */ +export const reduxESLintConfig: TSESLint.FlatConfig.Config[] = + /* @__PURE__ */ config( + // `ignores` must be first. + // config with just `ignores` is the replacement for `.eslintignore` + { + name: '@reduxjs/global-ignores', + ignores: ['**/dist/', '**/.yalc/', '**/build/', '**/lib/', '**/temp/'], + }, + { name: '@reduxjs/javascript', ...js.configs.recommended }, + ...configs.recommended, + ...configs.stylistic, + { name: '@reduxjs/prettier-config', ...prettierConfig }, + { + name: '@reduxjs/main', + languageOptions: { + globals: { + ...vitestGlobals, + }, + parser, + parserOptions: { + projectService: { + allowDefaultProject: ['.size-limit.cjs'], + defaultProject: './tsconfig.json', + }, + ecmaVersion: 'latest', + }, + }, + rules: { + 'no-undef': [0], + '@typescript-eslint/consistent-type-imports': [ + 2, + { fixStyle: 'separate-type-imports', disallowTypeAnnotations: false }, + ], + '@typescript-eslint/consistent-type-exports': [2], + '@typescript-eslint/no-unused-vars': [0], + '@typescript-eslint/no-explicit-any': [0], + '@typescript-eslint/no-empty-object-type': [ + 2, + { allowInterfaces: 'with-single-extends' }, + ], + '@typescript-eslint/no-restricted-types': [ + 2, + { + types: { + '{}': { + suggest: ['AnyNonNullishValue', 'EmptyObject', 'AnyObject'], + }, + }, + }, + ], + '@typescript-eslint/no-namespace': [ + 2, + { allowDeclarations: true, allowDefinitionFiles: true }, + ], + '@typescript-eslint/ban-ts-comment': [0], + '@typescript-eslint/consistent-type-definitions': [0, 'type'], + 'sort-imports': [ + 2, + { + ignoreCase: false, + ignoreDeclarationSort: true, + ignoreMemberSort: false, + memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'], + allowSeparatedGroups: true, + }, + ], + }, + linterOptions: { reportUnusedDisableDirectives: 2 }, + }, + { + name: '@reduxjs/commonjs', + files: ['**/*.c[jt]s'], + languageOptions: { sourceType: 'commonjs' }, + rules: { + '@typescript-eslint/no-require-imports': [0], + }, + }, + ) + +/** + * A function that returns {@linkcode reduxESLintConfig} + * 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 reduxESLintConfig}, 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 ReduxESLintConfig = require('@reduxjs/eslint-config') + * import createESLintConfig = ReduxESLintConfig.createESLintConfig + * + * export = createESLintConfig([ + * { + * rules: { + * 'no-console': [0], + * }, + * }, + * { + * // ...Other additional overrides + * }, + * ]) + * ``` + * + * @since 0.0.1 + * @public + */ +export const createESLintConfig = ( + additionalOverrides: ConfigWithExtends[] = [], +): TSESLint.FlatConfig.ConfigFile => + /* @__PURE__ */ config(...reduxESLintConfig, ...additionalOverrides) diff --git a/packages/configs/eslint/tsconfig.build.json b/packages/configs/eslint/tsconfig.build.json new file mode 100644 index 0000000000..4609fd0e24 --- /dev/null +++ b/packages/configs/eslint/tsconfig.build.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "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..8adbd04135 --- /dev/null +++ b/packages/configs/eslint/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "@reduxjs/tsconfig/node-next", + "compilerOptions": { + "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..251b0a4ecd --- /dev/null +++ b/packages/configs/eslint/tsup.config.mts @@ -0,0 +1,45 @@ +import type { Options } from 'tsup' +import { defineConfig } from 'tsup' + +const tsconfig = 'tsconfig.build.json' satisfies Options['tsconfig'] + +const tsupConfig = defineConfig((overrideOptions): Options[] => { + const commonOptions = { + clean: true, + entry: { index: 'src/index.mts' }, + removeNodeProtocol: false, + shims: true, + sourcemap: true, + splitting: false, + target: ['esnext'], + tsconfig, + ...overrideOptions, + } satisfies Options + + return [ + { + ...commonOptions, + name: 'Modern ESM', + format: ['esm'], + }, + { + ...commonOptions, + name: 'CJS Development', + format: ['cjs'], + }, + { + ...commonOptions, + name: 'ESM Type definitions', + dts: { only: true }, + format: ['esm'], + }, + { + ...commonOptions, + 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..518e7ae942 --- /dev/null +++ b/packages/configs/prettier/.gitignore @@ -0,0 +1,12 @@ +.DS_Store +*.log +node_modules +.vscode +dist +build +temp +.yalc +yalc.lock +tsconfig.vitest-temp.json +.eslintcache +*.tgz diff --git a/packages/configs/prettier/README.md b/packages/configs/prettier/README.md new file mode 100644 index 0000000000..e50a47c458 --- /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 { reduxPrettierConfig } from '@reduxjs/prettier-config' + +export default reduxPrettierConfig +``` + +**CommonJS (CJS) usage inside a file like `prettier.config.cjs` (using `require`)**: + +```js +const { reduxPrettierConfig } = require('@reduxjs/prettier-config') + +module.exports = reduxPrettierConfig +``` + +**CommonJS (CJS) usage inside a file like `prettier.config.cjs` (using dynamic import)**: + +```js +module.exports = (async () => + (await import('@reduxjs/prettier-config')).reduxPrettierConfig)() +``` + +To avoid having to write JSDocs we also provide a `createPrettierConfig` function. This function already includes the default `reduxPrettierConfig` 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..55ad62584e --- /dev/null +++ b/packages/configs/prettier/package.json @@ -0,0 +1,75 @@ +{ + "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, + "exports": { + "./package.json": "./package.json", + ".": { + "module-sync": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "module": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "default": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + } + }, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "source": "./src/index.mts", + "types": "./dist/index.d.ts", + "files": [ + "dist", + "src" + ], + "scripts": { + "build": "yarn clean && tsup", + "clean": "rimraf dist", + "prepack": "yarn build" + }, + "devDependencies": { + "@reduxjs/tsconfig": "workspace:^", + "prettier": "^3.4.2", + "rimraf": "^6.0.1", + "tsup": "^8.3.5", + "typescript": "^5.7.2" + }, + "peerDependencies": { + "prettier": ">=3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/configs/prettier/src/index.mts b/packages/configs/prettier/src/index.mts new file mode 100644 index 0000000000..ce9280b2df --- /dev/null +++ b/packages/configs/prettier/src/index.mts @@ -0,0 +1,89 @@ +import type { Config } from 'prettier' + +/** + * Prettier configuration tailored for internal Redux projects. + * + * @example + * #### __ECMAScript Modules (ESM) usage inside a file like `prettier.config.mjs`__ + * + * ```js + * import { reduxPrettierConfig } from '@reduxjs/prettier-config' + * + * export default reduxPrettierConfig + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `prettier.config.cjs` (using `require`)__ + * + * ```js + * const { reduxPrettierConfig } = require('@reduxjs/prettier-config') + * + * module.exports = reduxPrettierConfig + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `prettier.config.cjs` (using dynamic import)__ + * + * ```js + * module.exports = (async () => + * (await import('@reduxjs/prettier-config')).reduxPrettierConfig)() + * ``` + * + * @public + * @since 0.0.1 + */ +export const reduxPrettierConfig: Config = { + semi: false, + singleQuote: true, +} + +/** + * A function that returns {@linkcode reduxPrettierConfig} + * 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 reduxPrettierConfig}, 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 => ({ ...reduxPrettierConfig, ...additionalOverrides }) diff --git a/packages/configs/prettier/tsconfig.build.json b/packages/configs/prettier/tsconfig.build.json new file mode 100644 index 0000000000..4609fd0e24 --- /dev/null +++ b/packages/configs/prettier/tsconfig.build.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "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..8adbd04135 --- /dev/null +++ b/packages/configs/prettier/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "@reduxjs/tsconfig/node-next", + "compilerOptions": { + "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..251b0a4ecd --- /dev/null +++ b/packages/configs/prettier/tsup.config.mts @@ -0,0 +1,45 @@ +import type { Options } from 'tsup' +import { defineConfig } from 'tsup' + +const tsconfig = 'tsconfig.build.json' satisfies Options['tsconfig'] + +const tsupConfig = defineConfig((overrideOptions): Options[] => { + const commonOptions = { + clean: true, + entry: { index: 'src/index.mts' }, + removeNodeProtocol: false, + shims: true, + sourcemap: true, + splitting: false, + target: ['esnext'], + tsconfig, + ...overrideOptions, + } satisfies Options + + return [ + { + ...commonOptions, + name: 'Modern ESM', + format: ['esm'], + }, + { + ...commonOptions, + name: 'CJS Development', + format: ['cjs'], + }, + { + ...commonOptions, + name: 'ESM Type definitions', + dts: { only: true }, + format: ['esm'], + }, + { + ...commonOptions, + 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..518e7ae942 --- /dev/null +++ b/packages/configs/typescript/.gitignore @@ -0,0 +1,12 @@ +.DS_Store +*.log +node_modules +.vscode +dist +build +temp +.yalc +yalc.lock +tsconfig.vitest-temp.json +.eslintcache +*.tgz 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-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/package.json b/packages/configs/typescript/package.json new file mode 100644 index 0000000000..363d09f63c --- /dev/null +++ b/packages/configs/typescript/package.json @@ -0,0 +1,39 @@ +{ + "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, + "exports": { + "./package.json": "./package.json", + ".": "./base/tsconfig.json", + "./node-next": "./node-next/tsconfig.json", + "./base": "./base/tsconfig.json", + "./cra": "./create-react-app/tsconfig.json", + "./create-react-app": "./create-react-app/tsconfig.json", + "./bundler": "./bundler/esnext/tsconfig.json", + "./bundler/esnext": "./bundler/esnext/tsconfig.json", + "./bundler/preserve": "./bundler/preserve/tsconfig.json" + }, + "main": "base/tsconfig.json", + "publishConfig": { + "access": "public" + } +} diff --git a/packages/configs/vitest/.gitignore b/packages/configs/vitest/.gitignore new file mode 100644 index 0000000000..518e7ae942 --- /dev/null +++ b/packages/configs/vitest/.gitignore @@ -0,0 +1,12 @@ +.DS_Store +*.log +node_modules +.vscode +dist +build +temp +.yalc +yalc.lock +tsconfig.vitest-temp.json +.eslintcache +*.tgz diff --git a/packages/configs/vitest/README.md b/packages/configs/vitest/README.md new file mode 100644 index 0000000000..7c0a3d06aa --- /dev/null +++ b/packages/configs/vitest/README.md @@ -0,0 +1,117 @@ +# 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 + +**ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`**: + +```ts +import { reduxVitestConfig } from '@reduxjs/vitest-config' + +export default reduxVitestConfig +``` + +**CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)**: + +```ts +const { reduxVitestConfig } = require('@reduxjs/vitest-config') + +module.exports = reduxVitestConfig +``` + +**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')).reduxVitestConfig)() +``` + +**CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)**: + +```ts +import ReduxVitestConfig = require('@reduxjs/vitest-config') +import reduxVitestConfig = ReduxVitestConfig.reduxVitestConfig + +export = reduxVitestConfig +``` + +To avoid having to write JSDocs we also provide a `createVitestConfig` function. This function already includes the default `reduxVitestConfig` 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 ReduxVitestConfig = require('@reduxjs/vitest-config') +import createVitestConfig = ReduxVitestConfig.createVitestConfig + +export = createVitestConfig({ + 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..55db5899ee --- /dev/null +++ b/packages/configs/vitest/package.json @@ -0,0 +1,85 @@ +{ + "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, + "exports": { + "./package.json": "./package.json", + ".": { + "module-sync": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "module": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "default": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + } + }, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "source": "./src/index.mts", + "types": "./dist/index.d.ts", + "files": [ + "dist", + "src" + ], + "scripts": { + "build": "yarn clean && tsup", + "clean": "rimraf dist", + "prepack": "yarn build" + }, + "dependencies": { + "vite-tsconfig-paths": "^5.1.4" + }, + "devDependencies": { + "@reduxjs/tsconfig": "workspace:^", + "@types/node": "^22.10.1", + "rimraf": "^6.0.1", + "tsup": "^8.3.5", + "typescript": "^5.7.2", + "vite": "^5.4.11", + "vitest": "^2.1.8" + }, + "peerDependencies": { + "vite": "*", + "vitest": ">=1" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + }, + "vitest": { + "optional": true + } + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/configs/vitest/src/index.mts b/packages/configs/vitest/src/index.mts new file mode 100644 index 0000000000..802dedcc4b --- /dev/null +++ b/packages/configs/vitest/src/index.mts @@ -0,0 +1,130 @@ +import { existsSync } from 'node:fs' +import tsconfigPaths from 'vite-tsconfig-paths' +import type { UserConfig } from 'vitest/config' +import { defineConfig, mergeConfig } from 'vitest/config' + +/** + * Vitest configuration tailored for internal Redux projects using TypeScript. + * + * @example + * #### __ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`__ + * + * ```ts + * import { reduxVitestConfig } from '@reduxjs/vitest-config' + * + * export default reduxVitestConfig + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)__ + * + * ```ts + * const { reduxVitestConfig } = require('@reduxjs/vitest-config') + * + * module.exports = reduxVitestConfig + * ``` + * + * @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')).reduxVitestConfig)() + * ``` + * + * @example + * #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)__ + * + * ```ts + * import ReduxVitestConfig = require('@reduxjs/vitest-config') + * import reduxVitestConfig = ReduxVitestConfig.reduxVitestConfig + * + * export = reduxVitestConfig + * ``` + * + * @since 0.0.1 + * @public + */ +export const reduxVitestConfig: UserConfig = /* @__PURE__ */ defineConfig({ + plugins: [/* @__PURE__ */ tsconfigPaths({ projects: ['./tsconfig.json'] })], + test: { + watch: false, + globals: true, + testTimeout: 10_000, + setupFiles: /* @__PURE__ */ existsSync('./vitest.setup.ts') + ? ['./vitest.setup.ts'] + : [], + }, + define: { 'import.meta.vitest': 'undefined' }, +}) + +/** + * A function that returns {@linkcode reduxVitestConfig} + * along with optional additional overrides. + * + * @param additionalOverrides - Optional additional overrides to apply to the configuration. + * @returns An augmented version of the default {@linkcode reduxVitestConfig}, 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 ReduxVitestConfig = require('@reduxjs/vitest-config') + * import createVitestConfig = ReduxVitestConfig.createVitestConfig + * + * export = createVitestConfig({ + * test: { + * environment: 'jsdom', + * // Other additional overrides + * }, + * }) + * ``` + * + * @since 0.0.1 + * @public + */ +export const createVitestConfig = ( + additionalOverrides: UserConfig = {}, +): UserConfig => + /* @__PURE__ */ mergeConfig(reduxVitestConfig, additionalOverrides) diff --git a/packages/configs/vitest/tsconfig.build.json b/packages/configs/vitest/tsconfig.build.json new file mode 100644 index 0000000000..4609fd0e24 --- /dev/null +++ b/packages/configs/vitest/tsconfig.build.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "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..8adbd04135 --- /dev/null +++ b/packages/configs/vitest/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "@reduxjs/tsconfig/node-next", + "compilerOptions": { + "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..74cc20c25e --- /dev/null +++ b/packages/configs/vitest/tsup.config.mts @@ -0,0 +1,52 @@ +import type { Options } from 'tsup' +import { defineConfig } from 'tsup' + +const tsconfig = 'tsconfig.build.json' satisfies Options['tsconfig'] + +const tsupConfig = defineConfig((overrideOptions): Options[] => { + const commonOptions = { + clean: true, + entry: { index: 'src/index.mts' }, + removeNodeProtocol: false, + shims: true, + sourcemap: true, + splitting: false, + target: ['esnext'], + tsconfig, + ...overrideOptions, + } satisfies Options + + return [ + { + ...commonOptions, + name: 'Modern ESM', + format: ['esm'], + }, + { + ...commonOptions, + 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: 'ESM Type definitions', + dts: { only: true }, + format: ['esm'], + }, + { + ...commonOptions, + name: 'CJS Type definitions', + dts: { only: true }, + format: ['cjs'], + }, + ] +}) + +export default tsupConfig diff --git a/yarn.lock b/yarn.lock index 55878cc45f..74e2e6834d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4669,13 +4669,33 @@ __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.19.0": + version: 0.19.1 + resolution: "@eslint/config-array@npm:0.19.1" + dependencies: + "@eslint/object-schema": "npm:^2.1.5" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10/1243b01f463de85c970c18f0994f9d1850dafe8cc8c910edb64105d845edd3cacaa0bbf028bf35a6daaf5a179021140b6a8b1dc7a2f915b42c2d35f022a9c201 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.9.0": + version: 0.9.1 + resolution: "@eslint/core@npm:0.9.1" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10/f2263f8f94fdf84fc34573e027de98f1fce6287120513ae672ddf0652c75b9fa77c314d565628fc58e0a6f959766acc34c8191f9b94f1757b910408ffa04adde + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^0.4.3": version: 0.4.3 resolution: "@eslint/eslintrc@npm:0.4.3" @@ -4710,6 +4730,23 @@ __metadata: languageName: node linkType: hard +"@eslint/eslintrc@npm:^3.2.0": + version: 3.2.0 + resolution: "@eslint/eslintrc@npm:3.2.0" + 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/b32dd90ce7da68e89b88cd729db46b27aac79a2e6cb1fa75d25a6b766d586b443bfbf59622489efbd3c6f696f147b51111e81ec7cd23d70f215c5d474cad0261 + languageName: node + linkType: hard + "@eslint/js@npm:8.57.1": version: 8.57.1 resolution: "@eslint/js@npm:8.57.1" @@ -4717,6 +4754,29 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:9.16.0, @eslint/js@npm:^9.16.0": + version: 9.16.0 + resolution: "@eslint/js@npm:9.16.0" + checksum: 10/122da09b6a2c6a92d68be26146af1da17d9d4e03cf9435a874d341f18519122eef9ed229e52a1b781dc5987239754954e80a0b11bbe8f65df96e9ef8f3b438ad + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.5": + version: 2.1.5 + resolution: "@eslint/object-schema@npm:2.1.5" + checksum: 10/bb07ec53357047f20de923bcd61f0306d9eee83ef41daa32e633e154a44796b5bd94670169eccb8fd8cb4ff42228a43b86953a6321f789f98194baba8207b640 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.2.3": + version: 0.2.4 + resolution: "@eslint/plugin-kit@npm:0.2.4" + dependencies: + levn: "npm:^0.4.1" + checksum: 10/e34d02ea1dccd716e51369620263a4b2167aff3c0510ed776e21336cc3ad7158087449a76931baf07cdc33810cb6919db375f2e9f409435d2c6e0dd5f4786b25 + 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" @@ -5799,6 +5859,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" @@ -5842,6 +5919,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.1": + version: 0.4.1 + resolution: "@humanwhocodes/retry@npm:0.4.1" + checksum: 10/39fafc7319e88f61befebd5e1b4f0136534ea6a9bd10d74366698187bd63544210ec5d79a87ed4d91297f1cc64c4c53d45fb0077a2abfdce212cf0d3862d5f04 + 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" @@ -6917,6 +7008,48 @@ __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: + "@eslint/js": "npm:^9.16.0" + "@reduxjs/tsconfig": "workspace:^" + "@types/eslint-config-prettier": "npm:^6.11.3" + "@typescript-eslint/utils": "npm:^8.18.0" + eslint: "npm:^9.16.0" + eslint-config-prettier: "npm:^9.1.0" + rimraf: "npm:^6.0.1" + tsup: "npm:^8.3.5" + typescript: "npm:^5.7.2" + typescript-eslint: "npm:^8.18.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: + "@reduxjs/tsconfig": "workspace:^" + prettier: "npm:^3.4.2" + rimraf: "npm:^6.0.1" + tsup: "npm:^8.3.5" + typescript: "npm:^5.7.2" + 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" @@ -7070,6 +7203,35 @@ __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" + 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: + "@reduxjs/tsconfig": "workspace:^" + "@types/node": "npm:^22.10.1" + rimraf: "npm:^6.0.1" + tsup: "npm:^8.3.5" + typescript: "npm:^5.7.2" + vite: "npm:^5.4.11" + vite-tsconfig-paths: "npm:^5.1.4" + vitest: "npm:^2.1.8" + peerDependencies: + vite: "*" + vitest: ">=1" + peerDependenciesMeta: + vite: + optional: true + vitest: + optional: true + languageName: unknown + linkType: soft + "@remix-run/router@npm:1.21.0": version: 1.21.0 resolution: "@remix-run/router@npm:1.21.0" @@ -8301,6 +8463,13 @@ __metadata: languageName: node linkType: hard +"@types/eslint-config-prettier@npm:^6.11.3": + version: 6.11.3 + resolution: "@types/eslint-config-prettier@npm:6.11.3" + checksum: 10/b69ad5d7452f614450fcaf78b4055cfb11afb632f1ef292a3229cb5ac9a7041106a85cf634c570fbd3bb9db59c8fee7ca0e32a059e6fcad2477e22d81d5c3ef3 + languageName: node + linkType: hard + "@types/eslint-scope@npm:^3.7.7": version: 3.7.7 resolution: "@types/eslint-scope@npm:3.7.7" @@ -8578,7 +8747,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 @@ -8713,7 +8882,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*": +"@types/node@npm:*, @types/node@npm:^22.10.1": version: 22.10.1 resolution: "@types/node@npm:22.10.1" dependencies: @@ -9121,6 +9290,27 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.18.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.10.0" + "@typescript-eslint/scope-manager": "npm:8.18.0" + "@typescript-eslint/type-utils": "npm:8.18.0" + "@typescript-eslint/utils": "npm:8.18.0" + "@typescript-eslint/visitor-keys": "npm:8.18.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.3.1" + natural-compare: "npm:^1.4.0" + ts-api-utils: "npm:^1.3.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.8.0" + checksum: 10/fc163212ab626b8880bcc6c166da6e1c907c1e9eac720a217e58bec64af3866dc18e990a15a7dcd9593643f390d921625a89fb235a7e126fbb0a2f52e4abf0f5 + 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" @@ -9199,6 +9389,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/parser@npm:8.18.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:8.18.0" + "@typescript-eslint/types": "npm:8.18.0" + "@typescript-eslint/typescript-estree": "npm:8.18.0" + "@typescript-eslint/visitor-keys": "npm:8.18.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/5f4a1c431868ee677a6a1f55197c26c5c6e528a07fd8d8dee3648697c3617343693709c9f77cba86f8bdc1738c5727f5badfd3a9745f0e0719edb77fd0c01ba3 + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^5.5.0": version: 5.62.0 resolution: "@typescript-eslint/parser@npm:5.62.0" @@ -9264,6 +9470,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/scope-manager@npm:8.18.0" + dependencies: + "@typescript-eslint/types": "npm:8.18.0" + "@typescript-eslint/visitor-keys": "npm:8.18.0" + checksum: 10/869fd569a1f98cd284001062cca501e25ef7079c761242926d3b35454da64e398391ddb9d686adb34bf7bee6446491617b52c54ba54db07ee637ad4ef024d262 + 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" @@ -9315,6 +9531,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/type-utils@npm:8.18.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:8.18.0" + "@typescript-eslint/utils": "npm:8.18.0" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^1.3.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/d857a0b6a52aad10dfd51465b8fc667f579c4a590e7fedd372f834abd2fb438186e2ebc25b61f8a5e4a90d40ebdf614367088d73ec7fe5ac0e8c9dc47ae02258 + languageName: node + linkType: hard + "@typescript-eslint/types@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/types@npm:5.62.0" @@ -9336,6 +9567,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/types@npm:8.18.0" + checksum: 10/6c6473c169671ca946df7c1e0e424e5296dd44d89833d5c82a0ec0fdb2c668c62f8de31c85b18754d332198f18340cf2b6f13d3b13d02770ee9d1a93a099f069 + 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" @@ -9391,6 +9629,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.18.0" + dependencies: + "@typescript-eslint/types": "npm:8.18.0" + "@typescript-eslint/visitor-keys": "npm:8.18.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:^1.3.0" + peerDependencies: + typescript: ">=4.8.4 <5.8.0" + checksum: 10/8ffd54a58dcc2c1b33f55c29193656fde772946d9dea87e06084a242dad3098049ecff9758e215c9f27ed358c5c7dabcae96cf19bc824098e075500725faf2e1 + 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" @@ -9443,6 +9699,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:8.18.0, @typescript-eslint/utils@npm:^8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/utils@npm:8.18.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:8.18.0" + "@typescript-eslint/types": "npm:8.18.0" + "@typescript-eslint/typescript-estree": "npm:8.18.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/ced2775200a4d88f9c1808f2f9a4dc43505939c4bcd5b60ca2e74bf291d6f6993789ce9d56f373c39476080a9f430e969258ee8111d0a7a9ea85da399151d27e + 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" @@ -9473,6 +9744,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.18.0" + dependencies: + "@typescript-eslint/types": "npm:8.18.0" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10/6b2e1e471097ddd903dcb125ba8ff42bf4262fc4f408ca3afacf4161cff6f06b7ab4a6a7dd273e34b61a676f89a00535de7497c77d9001a10512ba3fe7d91971 + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.2.0": version: 1.2.1 resolution: "@ungap/structured-clone@npm:1.2.1" @@ -12615,7 +12896,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.5": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -14989,6 +15270,16 @@ __metadata: languageName: node linkType: hard +"eslint-scope@npm:^8.2.0": + version: 8.2.0 + resolution: "eslint-scope@npm:8.2.0" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10/cd9ab60d5a68f3a0fcac04d1cff5a7383d0f331964d5f1c446259123caec5b3ccc542284d07846e4f4d1389da77750821cc9a6e1ce18558c674977351666f9a6 + 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" @@ -15019,6 +15310,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" @@ -15133,6 +15431,66 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^9.16.0": + version: 9.16.0 + resolution: "eslint@npm:9.16.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.19.0" + "@eslint/core": "npm:^0.9.0" + "@eslint/eslintrc": "npm:^3.2.0" + "@eslint/js": "npm:9.16.0" + "@eslint/plugin-kit": "npm:^0.2.3" + "@humanfs/node": "npm:^0.16.6" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@humanwhocodes/retry": "npm:^0.4.1" + "@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.5" + debug: "npm:^4.3.2" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^8.2.0" + eslint-visitor-keys: "npm:^4.2.0" + espree: "npm:^10.3.0" + esquery: "npm:^1.5.0" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^8.0.0" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + bin: + eslint: bin/eslint.js + checksum: 10/b47a34392a55bc08594ee2fed2777d7aff96f38b584791ccded44d88b72795acfe15b18643fd4046f680734a1f16244d554f34a485f660fa723e25d609fb12ba + 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" @@ -15175,7 +15533,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: @@ -15745,6 +16103,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" @@ -15923,6 +16290,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" @@ -16499,6 +16876,22 @@ __metadata: languageName: node linkType: hard +"glob@npm:^11.0.0": + version: 11.0.0 + resolution: "glob@npm:11.0.0" + 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/e66939201d11ae30fe97e3364ac2be5c59d6c9bfce18ac633edfad473eb6b46a7553f6f73658f67caaf6cccc1df1ae336298a45e9021fa5695fd78754cc1603e + 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" @@ -16558,6 +16951,13 @@ __metadata: languageName: node linkType: hard +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10/03939c8af95c6df5014b137cac83aa909090c3a3985caef06ee9a5a669790877af8698ab38007e4c0186873adc14c0b13764acc754b16a754c216cc56aa5f021 + languageName: node + linkType: hard + "globalthis@npm:^1.0.4": version: 1.0.4 resolution: "globalthis@npm:1.0.4" @@ -17616,7 +18016,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.3.0": +"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.0, ignore@npm:^5.3.1": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 10/cceb6a457000f8f6a50e1196429750d782afce5680dd878aa4221bd79972d68b3a55b4b1458fc682be978f4d3c6a249046aa0880637367216444ab7b014cfc98 @@ -18794,6 +19194,15 @@ __metadata: languageName: node linkType: hard +"jackspeak@npm:^4.0.1": + version: 4.0.2 + resolution: "jackspeak@npm:4.0.2" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + checksum: 10/d9722f0e55f6c322c57aedf094c405f4201b834204629817187953988075521cfddb23df83e2a7b845723ca7eb0555068c5ce1556732e9c275d32a531881efa8 + languageName: node + linkType: hard + "jake@npm:^10.8.5": version: 10.9.2 resolution: "jake@npm:10.9.2" @@ -19905,7 +20314,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: @@ -20417,6 +20826,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^11.0.0": + version: 11.0.2 + resolution: "lru-cache@npm:11.0.2" + checksum: 10/25fcb66e9d91eaf17227c6abfe526a7bed5903de74f93bfde380eb8a13410c5e8d3f14fe447293f3f322a7493adf6f9f015c6f1df7a235ff24ec30f366e1c058 + languageName: node + linkType: hard + "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -21705,6 +22121,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" @@ -23264,6 +23689,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" @@ -24865,7 +25300,7 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^3.2.5": +"prettier@npm:^3.2.5, prettier@npm:^3.4.2": version: 3.4.2 resolution: "prettier@npm:3.4.2" bin: @@ -26835,6 +27270,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" @@ -27372,7 +27819,7 @@ __metadata: languageName: node linkType: hard -"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.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.6.3 resolution: "semver@npm:7.6.3" bin: @@ -29270,7 +29717,7 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^1.0.1": +"ts-api-utils@npm:^1.0.1, ts-api-utils@npm:^1.3.0": version: 1.4.3 resolution: "ts-api-utils@npm:1.4.3" peerDependencies: @@ -29455,7 +29902,7 @@ __metadata: languageName: node linkType: hard -"tsup@npm:^8.2.3, tsup@npm:^8.2.4": +"tsup@npm:^8.2.3, tsup@npm:^8.2.4, tsup@npm:^8.3.5": version: 8.3.5 resolution: "tsup@npm:8.3.5" dependencies: @@ -29676,6 +30123,20 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.18.0": + version: 8.18.0 + resolution: "typescript-eslint@npm:8.18.0" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.18.0" + "@typescript-eslint/parser": "npm:8.18.0" + "@typescript-eslint/utils": "npm:8.18.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/e39d39e25d3916b3c94715db3cb84cf7564b92e08ea026a5d6116a1bd6c8e0c1bfcadad2d26bdba195a59b0e0c1bed296f50b78a66f3516e13e9a6c380546719 + languageName: node + linkType: hard + "typescript@npm:4.1.3": version: 4.1.3 resolution: "typescript@npm:4.1.3" @@ -29716,7 +30177,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.3.3, typescript@npm:^5.4.5, typescript@npm:^5.5.4": +"typescript@npm:^5.3.3, typescript@npm:^5.4.5, typescript@npm:^5.5.4, typescript@npm:^5.7.2": version: 5.7.2 resolution: "typescript@npm:5.7.2" bin: @@ -29776,7 +30237,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.3.3#optional!builtin, typescript@patch:typescript@npm%3A^5.4.5#optional!builtin, typescript@patch:typescript@npm%3A^5.5.4#optional!builtin": +"typescript@patch:typescript@npm%3A^5.3.3#optional!builtin, typescript@patch:typescript@npm%3A^5.4.5#optional!builtin, typescript@patch:typescript@npm%3A^5.5.4#optional!builtin, typescript@patch:typescript@npm%3A^5.7.2#optional!builtin": version: 5.7.2 resolution: "typescript@patch:typescript@npm%3A5.7.2#optional!builtin::version=5.7.2&hash=8c6c40" bin: @@ -30625,7 +31086,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: @@ -30641,7 +31102,7 @@ __metadata: languageName: node linkType: hard -"vite@npm:^5.0.0": +"vite@npm:^5.0.0, vite@npm:^5.4.11": version: 5.4.11 resolution: "vite@npm:5.4.11" dependencies: @@ -30734,7 +31195,7 @@ __metadata: languageName: node linkType: hard -"vitest@npm:^2.0.5": +"vitest@npm:^2.0.5, vitest@npm:^2.1.8": version: 2.1.8 resolution: "vitest@npm:2.1.8" dependencies: