From df970538889933872440eb1ab0d6878bfb701f76 Mon Sep 17 00:00:00 2001 From: Matsu Date: Wed, 1 Jul 2026 12:03:25 +0300 Subject: [PATCH] chore: Remove references to Jest (#33282) --- .agents/skills/reproduce-bug/SKILL.md | 14 +- .github/pull_request_title_conventions.md | 2 +- .github/workflows/ci-pull-requests.yml | 4 - AGENTS.md | 4 +- jest.config.js | 123 -- jest.coverage-excludes.js | 11 - package.json | 11 +- packages/@n8n/agents/vite.config.ts | 2 - packages/@n8n/ai-utilities/vite.config.ts | 2 - .../@n8n/backend-test-utils/src/test-db.ts | 2 +- packages/@n8n/benchmark/tsconfig.json | 3 +- packages/@n8n/chat-hub/vite.config.ts | 2 - .../@n8n/codemirror-lang-sql/tsconfig.json | 2 +- packages/@n8n/codemirror-lang/package.json | 1 + packages/@n8n/codemirror-lang/tsconfig.json | 2 +- packages/@n8n/constants/tsconfig.json | 2 +- packages/@n8n/db/vite.config.ts | 2 - packages/@n8n/errors/tsconfig.json | 2 +- .../@n8n/eslint-config/src/configs/base.ts | 1 - .../no-forbidden-lifecycle-scripts.test.ts | 4 +- .../@n8n/expression-runtime/ARCHITECTURE.md | 2 +- packages/@n8n/extension-sdk/package.json | 2 +- .../json-schema-to-zod/test/extend-expect.ts | 11 + .../@n8n/json-schema-to-zod/test/jest.d.ts | 5 - packages/@n8n/local-gateway/vite.config.ts | 1 - packages/@n8n/mcp-browser/vite.config.ts | 2 - .../nodes/mcp/shared/runtime.test.ts | 6 +- .../VectorStoreOracleDB.node.test.ts | 2 +- .../MicrosoftAgent365Trigger.node.test.ts | 4 +- packages/@n8n/nodes-langchain/test/setup.ts | 5 - .../embeddingInputValidation.test.ts | 8 +- .../src/js-task-runner/js-task-runner.ts | 2 +- packages/@n8n/task-runner/vite.config.ts | 2 - .../typescript-config/tsconfig.backend.json | 2 +- .../typescript-config/tsconfig.common.json | 3 +- .../src/ast-interpreter/interpreter.test.ts | 2 +- packages/cli/package.json | 1 + .../workflow-execute-additional-data.test.ts | 2 - .../cli/src/__tests__/workflow-runner.test.ts | 4 +- .../ai-workflow-builder.service.test.ts | 6 +- .../services/__tests__/import.service.test.ts | 3 - .../__tests__/task-broker.service.test.ts | 2 +- .../src/telemetry/__tests__/telemetry.test.ts | 50 +- packages/cli/test/global-setup.ts | 4 - .../credentials.repository.test.ts | 1 - .../integration/shared/utils/test-server.ts | 2 +- packages/cli/tsconfig.json | 2 +- packages/cli/vitest.config.base.ts | 13 +- ...itest.config.integration.testcontainers.ts | 10 - packages/cli/vitest.config.integration.ts | 4 - .../vitest.config.migration.testcontainers.ts | 6 - packages/cli/vitest.config.migration.ts | 7 +- .../core/nodes-testing/mock-extended.jest.cjs | 1 - packages/core/package.json | 1 - .../frontend/@n8n/design-system/.npmignore | 1 - packages/frontend/editor-ui/.npmignore | 1 - packages/frontend/editor-ui/.oxlintrc.json | 1 - packages/node-dev/package.json | 6 +- .../playwright/scripts/aggregate-coverage.mjs | 2 +- packages/workflow/jest.config.js | 4 - packages/workflow/src/interfaces.ts | 6 - pnpm-lock.yaml | 1565 +---------------- pnpm-workspace.yaml | 1 - renovate.json | 2 +- scripts/mutation-health/README.md | 2 +- 65 files changed, 106 insertions(+), 1859 deletions(-) delete mode 100644 jest.config.js delete mode 100644 jest.coverage-excludes.js delete mode 100644 packages/@n8n/json-schema-to-zod/test/jest.d.ts delete mode 100644 packages/core/nodes-testing/mock-extended.jest.cjs delete mode 100644 packages/workflow/jest.config.js diff --git a/.agents/skills/reproduce-bug/SKILL.md b/.agents/skills/reproduce-bug/SKILL.md index 1b3f9757649..387169ae63e 100644 --- a/.agents/skills/reproduce-bug/SKILL.md +++ b/.agents/skills/reproduce-bug/SKILL.md @@ -24,13 +24,13 @@ Based on the affected area, pick the test layer and pattern: | Area | Test Layer | Pattern | Key Location | |------|-----------|---------|--------------| -| Node operation | Jest unit | NodeTestHarness + nock | `packages/nodes-base/nodes/*/test/` | -| Node credential | Jest unit | jest-mock-extended | `packages/nodes-base/nodes/*/test/` | -| Trigger webhook | Jest unit | mock IHookFunctions + jest.mock GenericFunctions | `packages/nodes-base/nodes/*/test/` | -| Binary data | Jest unit | NodeTestHarness assertBinaryData | `packages/core/nodes-testing/` | -| Execution engine | Jest integration | WorkflowRunner + DI container | `packages/cli/src/__tests__/` | -| CLI / API | Jest integration | setupTestServer + supertest | `packages/cli/test/integration/` | -| Config | Jest unit | GlobalConfig + Container | `packages/@n8n/config/src/__tests__/` | +| Node operation | Vitest unit | NodeTestHarness + nock | `packages/nodes-base/nodes/*/test/` | +| Node credential | Vitest unit | vitest-mock-extended | `packages/nodes-base/nodes/*/test/` | +| Trigger webhook | Vitest unit | mock IHookFunctions + vi.mock GenericFunctions | `packages/nodes-base/nodes/*/test/` | +| Binary data | Vitest unit | NodeTestHarness assertBinaryData | `packages/core/nodes-testing/` | +| Execution engine | Vitest integration | WorkflowRunner + DI container | `packages/cli/src/__tests__/` | +| CLI / API | Vitest integration | setupTestServer + supertest | `packages/cli/test/integration/` | +| Config | Vitest unit | GlobalConfig + Container | `packages/@n8n/config/src/__tests__/` | | Editor UI | Vitest | Vue Test Utils + Pinia | `packages/frontend/editor-ui/src/**/__tests__/` | | E2E / Canvas | Playwright | Test containers + composables | `packages/testing/playwright/` | diff --git a/.github/pull_request_title_conventions.md b/.github/pull_request_title_conventions.md index b0e0ae579c2..5e4d01c04b6 100644 --- a/.github/pull_request_title_conventions.md +++ b/.github/pull_request_title_conventions.md @@ -39,7 +39,7 @@ Must be one of the following: | `test` | Adding missing tests or correcting existing tests | ❌ | | `docs` | Documentation only changes | ❌ | | `refactor` | A behavior-neutral code change that neither fixes a bug nor adds a feature | ❌ | -| `build` | Changes that affect the build system or external dependencies (TypeScript, Jest, pnpm, etc.) | ❌ | +| `build` | Changes that affect the build system or external dependencies (TypeScript, Vitest, pnpm, etc.) | ❌ | | `ci` | Changes to CI configuration files and scripts (e.g. Github actions) | ❌ | | `chore` | Routine tasks, maintenance, and minor updates not covered by other types | ❌ | diff --git a/.github/workflows/ci-pull-requests.yml b/.github/workflows/ci-pull-requests.yml index 292d8afb8a9..3a3495fef44 100644 --- a/.github/workflows/ci-pull-requests.yml +++ b/.github/workflows/ci-pull-requests.yml @@ -135,10 +135,6 @@ jobs: packages/cli/test/shared/db/** packages/cli/test/setup-testcontainers.js packages/cli/test/teardown-testcontainers.js - packages/cli/jest.config.integration.js - packages/cli/jest.config.integration.testcontainers.js - packages/cli/jest.config.migration.js - packages/cli/jest.config.migration.testcontainers.js packages/@n8n/db/** packages/@n8n/backend-test-utils/** packages/cli/**/__tests__/** diff --git a/AGENTS.md b/AGENTS.md index e45c9b31d43..ca458142d4c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -122,7 +122,7 @@ The monorepo is organized into these key packages: - **Frontend:** Vue 3 + TypeScript + Vite + Pinia + Storybook UI Library - **Backend:** Node.js + TypeScript + Express + TypeORM -- **Testing:** Jest (unit) + Playwright (E2E) +- **Testing:** Vitest (unit) + Playwright (E2E) - **Database:** TypeORM with SQLite/PostgreSQL support - **Code Quality:** Biome (for formatting) + ESLint + lefthook git hooks @@ -201,7 +201,7 @@ const children = getChildNodes(workflow.connections, 'NodeName', 'main', 1); - **For Vitest packages that use `@n8n/di` decorators**, use `createVitestConfigWithDecorators` from `@n8n/vitest-config/node-decorators`. It enables SWC `decoratorMetadata` (esbuild doesn't emit it) and externalizes workspace packages that register services (`@n8n/di`, `@n8n/config`, `@n8n/constants`, `n8n-workflow`) so a single DI `Container` instance is shared across the runtime. Loading them through Vitest's pipeline alongside their CJS dist produces two `Container`s and `Container.get(...)` returns `undefined`. What we use for testing and writing tests: -- For testing nodes and other backend components, we use Jest for unit tests. Examples can be found in `packages/nodes-base/nodes/**/*test*`. +- For testing nodes and other backend components, we use Vitest for unit tests. Examples can be found in `packages/nodes-base/nodes/**/*test*`. - We use `nock` for server mocking - For frontend we use `vitest` - For E2E tests we use Playwright. Run with `pnpm --filter=n8n-playwright test:local`. diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index c8f88b260cb..00000000000 --- a/jest.config.js +++ /dev/null @@ -1,123 +0,0 @@ -const { pathsToModuleNameMapper } = require('ts-jest'); -const { compilerOptions } = require('get-tsconfig').getTsconfig().config; -const { resolve } = require('path'); -const coverageExcludes = require('./jest.coverage-excludes'); - -/** @type {import('ts-jest').TsJestTransformerOptions} */ -const tsJestOptions = { - tsconfig: { - ...compilerOptions, - declaration: false, - sourceMap: true, - rootDir: '.', - // Force the transpile-only path for tests. Without this, ts-jest runs - // the full type-checker on every transformed file, which combined with - // aggressive worker recycling (workerIdleMemoryLimit) makes test runs - // ~4-5x slower. Package builds and `pnpm typecheck` read the package - // tsconfig directly and are unaffected. - isolatedModules: true, - // Relax strictness for cross-package imports. ts-jest applies the host - // package's tsconfig to every file it transforms, including imports - // from packages like nodes-base that disable these in their own - // tsconfig. The host package's own `pnpm typecheck` is unaffected. - noImplicitReturns: false, - noUncheckedIndexedAccess: false, - noImplicitOverride: false, - useUnknownInCatchVariables: false, - }, -}; - -const isCoverageEnabled = process.env.COVERAGE_ENABLED === 'true'; - -const esmDependencies = [ - 'pdfjs-dist', - 'openid-client', - 'oauth4webapi', - 'jose', - 'p-retry', - 'is-network-error', - 'uuid', - 'change-case', - // file-type@21 and its ESM-only dependency chain - 'file-type', - 'strtok3', - 'token-types', - 'uint8array-extras', - '@tokenizer/inflate', - '@borewit/text-codec', - // Add other ESM dependencies that need to be transformed here -]; - -const esmDependenciesPattern = esmDependencies.join('|'); - -// On Windows, Jest passes raw backslash paths to transform/ignore pattern regexes -// without normalizing separators, so we must match both / and \. -const isWindows = process.platform === 'win32'; -const sep = isWindows ? '[/\\\\]' : '/'; -const nonSep = isWindows ? '[^/\\\\]' : '[^/]'; - -const esmDependenciesRegex = `node_modules${sep}(${esmDependenciesPattern})${sep}.+\\.m?js$`; - -/** @type {import('jest').Config} */ -const config = { - verbose: false, - testEnvironment: 'node', - testRegex: '\\.(test|spec)\\.(js|ts)$', - testPathIgnorePatterns: ['/dist/', '/node_modules/'], - transform: { - '^.+\\.ts$': ['ts-jest', tsJestOptions], - [esmDependenciesRegex]: [ - 'babel-jest', - { - presets: ['@babel/preset-env'], - plugins: ['babel-plugin-transform-import-meta'], - }, - ], - }, - transformIgnorePatterns: [ - // Exclude the pnpm virtual store dir (.pnpm) and the ESM deps from being ignored. - `${sep}node_modules${sep}(?!\\.pnpm|${esmDependenciesPattern})${sep}`, - // On Windows with pnpm, ESM deps live inside the virtual store (.pnpm) and are - // accessed via hardlinks (no symlinks), so their path goes through - // .pnpm//node_modules//... — exclude ESM deps from being ignored there too. - ...(isWindows - ? [`${sep}\\.pnpm${sep}${nonSep}+${sep}node_modules${sep}(?!${esmDependenciesPattern})${sep}`] - : []), - ], - // This resolve the path mappings from the tsconfig relative to each jest.config.js - moduleNameMapper: { - '^@n8n/utils$': resolve(__dirname, 'packages/@n8n/utils/dist/index.cjs'), - // jest-resolve@29 doesn't honor `./lib/*` subpath patterns in @anthropic-ai/sdk's exports map - '^@anthropic-ai/sdk/lib/(.*)$': '@anthropic-ai/sdk/lib/$1.js', - // Core uses vitest-mock-extended (ESM-only) for its own tests; route the - // shim to a CJS-friendly variant for Jest-based consumers (nodes-base, cli). - '^(\\./|\\.\\./nodes-testing/)mock-extended$': resolve( - __dirname, - 'packages/core/nodes-testing/mock-extended.jest.cjs', - ), - ...(compilerOptions?.paths - ? pathsToModuleNameMapper(compilerOptions.paths, { - prefix: `${compilerOptions.baseUrl ? `/${compilerOptions.baseUrl.replace(/^\.\//, '')}` : ''}`, - }) - : {}), - }, - // file-type@21's `exports` map exposes no `require`/string `default` entry, - // only `import`/`module-sync`. Add `module-sync` so jest-resolve can pick its - // entry point (additive to the node env defaults). - testEnvironmentOptions: { - customExportConditions: ['node', 'node-addons', 'module-sync'], - }, - setupFilesAfterEnv: ['jest-expect-message'], - restoreMocks: true, - collectCoverage: isCoverageEnabled, - coverageReporters: ['text-summary', 'lcov', 'html-spa'], - workerIdleMemoryLimit: '1MB', -}; - -if (process.env.CI === 'true') { - config.collectCoverageFrom = ['src/**/*.ts', ...coverageExcludes]; - config.reporters = ['default', 'jest-junit']; - config.coverageReporters = ['lcov']; -} - -module.exports = config; diff --git a/jest.coverage-excludes.js b/jest.coverage-excludes.js deleted file mode 100644 index d08713457a7..00000000000 --- a/jest.coverage-excludes.js +++ /dev/null @@ -1,11 +0,0 @@ -// Shared `collectCoverageFrom` exclusions for all jest packages. `**`-anchored -// so they apply regardless of the source roots a package collects from. -// Mirrored by packages/@n8n/vitest-config/coverage-excludes.ts (vitest) and the -// V8 path filter in packages/testing/playwright/coverage-options.ts — keep in sync. -module.exports = [ - '!**/*.spec.ts', - '!**/*.test.ts', - '!**/__tests__/**', - '!**/__mocks__/**', - '!**/*.d.ts', -]; diff --git a/package.json b/package.json index 790a1ac1a76..516192329da 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "setup-backend-module": "node scripts/ensure-zx.mjs && zx scripts/backend-module/setup.mjs", "start": "node scripts/os-normalize.mjs --dir packages/cli/bin n8n", "mutate": "node scripts/mutation-health/mutate.mjs", - "test": "JEST_JUNIT_CLASSNAME={filepath} turbo run test", + "test": "turbo run test", "test:ci": "turbo run test --continue --concurrency=1", "test:ci:frontend": "turbo run test --continue --filter='./packages/frontend/**'", "test:ci:frontend:changed": "turbo run test:changed --continue --filter='./packages/frontend/**'", @@ -70,20 +70,12 @@ "@biomejs/biome": "^1.9.0", "@dotenvx/dotenvx": "^1.40.0", "@n8n/eslint-config": "workspace:*", - "@types/jest": "^29.5.3", "@types/node": "*", "@types/supertest": "^6.0.3", - "babel-jest": "catalog:", "babel-plugin-transform-import-meta": "^2.3.2", "cross-env": "^7.0.3", "eslint": "catalog:", "get-tsconfig": "catalog:", - "jest": "^29.6.2", - "jest-environment-jsdom": "^29.6.2", - "jest-expect-message": "^1.1.3", - "jest-junit": "^16.0.0", - "jest-mock": "^29.6.2", - "jest-mock-extended": "^3.0.4", "lefthook": "^1.7.15", "nock": "^14.0.14", "nodemon": "^3.0.1", @@ -93,7 +85,6 @@ "rimraf": "^5.0.1", "stylelint": "catalog:", "supertest": "^7.1.1", - "ts-jest": "^29.4.9", "tsc-alias": "^1.8.10", "tsc-watch": "^6.2.0", "turbo": "2.9.15", diff --git a/packages/@n8n/agents/vite.config.ts b/packages/@n8n/agents/vite.config.ts index e4acff98476..c4109a81a11 100644 --- a/packages/@n8n/agents/vite.config.ts +++ b/packages/@n8n/agents/vite.config.ts @@ -52,8 +52,6 @@ function rewriteSourceRequire(): Plugin { export default mergeConfig( createVitestConfig({ - // The n8n root jest.config sets `restoreMocks: true`, and test files silently rely on - // it — omit this and mocks bleed between tests. restoreMocks: true, // Integration tests run via vitest.integration.config.mjs (real providers, long timeouts). exclude: [...configDefaults.exclude, '**/__tests__/integration/**'], diff --git a/packages/@n8n/ai-utilities/vite.config.ts b/packages/@n8n/ai-utilities/vite.config.ts index 26dfc1d669e..17faa492ff1 100644 --- a/packages/@n8n/ai-utilities/vite.config.ts +++ b/packages/@n8n/ai-utilities/vite.config.ts @@ -4,8 +4,6 @@ import { mergeConfig } from 'vite'; export default mergeConfig( createVitestConfig({ - // The n8n root jest.config sets `restoreMocks: true`, and most test files silently - // rely on it — omit this and mocks bleed between tests. restoreMocks: true, }), { diff --git a/packages/@n8n/backend-test-utils/src/test-db.ts b/packages/@n8n/backend-test-utils/src/test-db.ts index 7c9e6f0e4fd..6488d289ecc 100644 --- a/packages/@n8n/backend-test-utils/src/test-db.ts +++ b/packages/@n8n/backend-test-utils/src/test-db.ts @@ -140,7 +140,7 @@ export async function terminate() { } // Clear all cached DI singletons (DbConnection, DataSource, GlobalConfig, - // AuthRolesService, …). With persistent Jest workers (no per-file process + // AuthRolesService, …). With persistent Vitest workers (no per-file process // recycling), the next test file's testDb.init() would otherwise reuse the // DbConnection instance whose DataSource we just destroyed — and try to // .initialize() it again, which hangs. Resetting forces the next get() to diff --git a/packages/@n8n/benchmark/tsconfig.json b/packages/@n8n/benchmark/tsconfig.json index 87596a1097b..a27b4bb6ea3 100644 --- a/packages/@n8n/benchmark/tsconfig.json +++ b/packages/@n8n/benchmark/tsconfig.json @@ -6,7 +6,8 @@ "compilerOptions": { "paths": { "@/*": ["./src/*"] - } + }, + "types": ["node"] }, "include": ["src/**/*.ts"] } diff --git a/packages/@n8n/chat-hub/vite.config.ts b/packages/@n8n/chat-hub/vite.config.ts index a0ca0822696..9a4078a7478 100644 --- a/packages/@n8n/chat-hub/vite.config.ts +++ b/packages/@n8n/chat-hub/vite.config.ts @@ -1,7 +1,5 @@ import { createVitestConfig } from '@n8n/vitest-config/node'; export default createVitestConfig({ - // The n8n root jest.config sets `restoreMocks: true`, and test files silently rely on - // it — omit this and mocks bleed between tests. restoreMocks: true, }); diff --git a/packages/@n8n/codemirror-lang-sql/tsconfig.json b/packages/@n8n/codemirror-lang-sql/tsconfig.json index fa30143ebf1..c1415fb494e 100644 --- a/packages/@n8n/codemirror-lang-sql/tsconfig.json +++ b/packages/@n8n/codemirror-lang-sql/tsconfig.json @@ -2,7 +2,7 @@ "extends": "@n8n/typescript-config/tsconfig.common.json", "compilerOptions": { "rootDir": ".", - "types": ["node", "jest"] + "types": ["node", "vitest/globals"] }, "include": ["src/**/*.ts", "test/**/*.ts"] } diff --git a/packages/@n8n/codemirror-lang/package.json b/packages/@n8n/codemirror-lang/package.json index 233d088b9df..13f92e24d74 100644 --- a/packages/@n8n/codemirror-lang/package.json +++ b/packages/@n8n/codemirror-lang/package.json @@ -48,6 +48,7 @@ "devDependencies": { "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", + "vite": "catalog:", "vitest": "catalog:" } } diff --git a/packages/@n8n/codemirror-lang/tsconfig.json b/packages/@n8n/codemirror-lang/tsconfig.json index fa30143ebf1..1996b943477 100644 --- a/packages/@n8n/codemirror-lang/tsconfig.json +++ b/packages/@n8n/codemirror-lang/tsconfig.json @@ -2,7 +2,7 @@ "extends": "@n8n/typescript-config/tsconfig.common.json", "compilerOptions": { "rootDir": ".", - "types": ["node", "jest"] + "types": ["node", "vitest/globals", "vite/client"] }, "include": ["src/**/*.ts", "test/**/*.ts"] } diff --git a/packages/@n8n/constants/tsconfig.json b/packages/@n8n/constants/tsconfig.json index 3a807ec1f86..3853fa5340a 100644 --- a/packages/@n8n/constants/tsconfig.json +++ b/packages/@n8n/constants/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "@n8n/typescript-config/tsconfig.common.json", "compilerOptions": { - "types": ["node", "jest"], + "types": ["node"], "experimentalDecorators": true, "emitDecoratorMetadata": true }, diff --git a/packages/@n8n/db/vite.config.ts b/packages/@n8n/db/vite.config.ts index 5c2e042621a..7b92eb36d41 100644 --- a/packages/@n8n/db/vite.config.ts +++ b/packages/@n8n/db/vite.config.ts @@ -139,8 +139,6 @@ function tscDecoratorTransform(): Plugin { export default mergeConfig( createVitestConfigWithDecorators({ - // The n8n root jest.config sets `restoreMocks: true`, and most test files silently - // rely on it — omit this and mocks bleed between tests. restoreMocks: true, }), { diff --git a/packages/@n8n/errors/tsconfig.json b/packages/@n8n/errors/tsconfig.json index 3a807ec1f86..3853fa5340a 100644 --- a/packages/@n8n/errors/tsconfig.json +++ b/packages/@n8n/errors/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "@n8n/typescript-config/tsconfig.common.json", "compilerOptions": { - "types": ["node", "jest"], + "types": ["node"], "experimentalDecorators": true, "emitDecoratorMetadata": true }, diff --git a/packages/@n8n/eslint-config/src/configs/base.ts b/packages/@n8n/eslint-config/src/configs/base.ts index 2fbbbf88c36..3eb92e55665 100644 --- a/packages/@n8n/eslint-config/src/configs/base.ts +++ b/packages/@n8n/eslint-config/src/configs/base.ts @@ -17,7 +17,6 @@ export const baseConfig = tseslint.config( 'dist/**', 'eslint.config.mjs', 'tsup.config.ts', - 'jest.config.js', 'vite.config.ts', 'vitest.config.ts', ]), diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-forbidden-lifecycle-scripts.test.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-forbidden-lifecycle-scripts.test.ts index 8ee1859d49d..a2e84b7068e 100644 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-forbidden-lifecycle-scripts.test.ts +++ b/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-forbidden-lifecycle-scripts.test.ts @@ -14,7 +14,7 @@ ruleTester.run('no-forbidden-lifecycle-scripts', NoForbiddenLifecycleScriptsRule { name: 'only safe scripts', filename: 'package.json', - code: '{ "name": "n8n-nodes-example", "scripts": { "build": "tsc", "test": "jest", "dev": "nodemon" } }', + code: '{ "name": "n8n-nodes-example", "scripts": { "build": "tsc", "test": "vitest", "dev": "nodemon" } }', }, { name: 'non-package.json file is ignored', @@ -82,7 +82,7 @@ ruleTester.run('no-forbidden-lifecycle-scripts', NoForbiddenLifecycleScriptsRule { name: 'mix of allowed and forbidden scripts — only forbidden reported', filename: 'package.json', - code: '{ "name": "n8n-nodes-example", "scripts": { "build": "tsc", "prepare": "npm run build", "test": "jest" } }', + code: '{ "name": "n8n-nodes-example", "scripts": { "build": "tsc", "prepare": "npm run build", "test": "vitest" } }', errors: [{ messageId: 'forbiddenScript', data: { scriptName: 'prepare' } }], }, { diff --git a/packages/@n8n/expression-runtime/ARCHITECTURE.md b/packages/@n8n/expression-runtime/ARCHITECTURE.md index 454d257398f..d4d9c5bce99 100644 --- a/packages/@n8n/expression-runtime/ARCHITECTURE.md +++ b/packages/@n8n/expression-runtime/ARCHITECTURE.md @@ -383,7 +383,7 @@ The runtime **can only**: - Test observability emission - Test error handling -**Integration Tests** (jest in workflow package): +**Integration Tests** (vitest in workflow package): - Test full stack with real isolated-vm - Test concurrent evaluations - Test with real workflow data diff --git a/packages/@n8n/extension-sdk/package.json b/packages/@n8n/extension-sdk/package.json index b201eedf144..46c37c9460e 100644 --- a/packages/@n8n/extension-sdk/package.json +++ b/packages/@n8n/extension-sdk/package.json @@ -39,7 +39,7 @@ "build:unchecked": "pnpm run build", "create-json-schema": "tsx scripts/create-json-schema.ts", "preview": "vite preview", - "test": "jest --passWithNoTests" + "test": "node -e \"process.exit(0);\"" }, "peerDependencies": { "vue": "catalog:frontend", diff --git a/packages/@n8n/json-schema-to-zod/test/extend-expect.ts b/packages/@n8n/json-schema-to-zod/test/extend-expect.ts index 5cb6182c8c9..56d7d35a865 100644 --- a/packages/@n8n/json-schema-to-zod/test/extend-expect.ts +++ b/packages/@n8n/json-schema-to-zod/test/extend-expect.ts @@ -15,3 +15,14 @@ expect.extend({ }; }, }); + +interface CustomMatchers { + toMatchZod(expected: z.ZodTypeAny): R; +} + +declare module 'vitest' { + // eslint-disable-next-line @typescript-eslint/no-explicit-any -- must mirror Vitest's `Matchers` default type param + interface Matchers extends CustomMatchers { + toMatchZod(expected: z.ZodTypeAny): T; + } +} diff --git a/packages/@n8n/json-schema-to-zod/test/jest.d.ts b/packages/@n8n/json-schema-to-zod/test/jest.d.ts deleted file mode 100644 index dff5a5fa4c6..00000000000 --- a/packages/@n8n/json-schema-to-zod/test/jest.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -namespace jest { - interface Matchers { - toMatchZod(expected: unknown): T; - } -} diff --git a/packages/@n8n/local-gateway/vite.config.ts b/packages/@n8n/local-gateway/vite.config.ts index 2fd6cbc0e3d..9a4078a7478 100644 --- a/packages/@n8n/local-gateway/vite.config.ts +++ b/packages/@n8n/local-gateway/vite.config.ts @@ -1,6 +1,5 @@ import { createVitestConfig } from '@n8n/vitest-config/node'; export default createVitestConfig({ - // The n8n root jest.config sets `restoreMocks: true`, and the test files rely on it. restoreMocks: true, }); diff --git a/packages/@n8n/mcp-browser/vite.config.ts b/packages/@n8n/mcp-browser/vite.config.ts index d914c9d346c..48631ac9d9d 100644 --- a/packages/@n8n/mcp-browser/vite.config.ts +++ b/packages/@n8n/mcp-browser/vite.config.ts @@ -1,8 +1,6 @@ import { createVitestConfig } from '@n8n/vitest-config/node'; export default createVitestConfig({ - // The n8n root jest.config sets `restoreMocks: true`, and test files silently rely on - // it — omit this and mocks bleed between tests. restoreMocks: true, testTimeout: 30_000, }); diff --git a/packages/@n8n/nodes-langchain/nodes/mcp/shared/runtime.test.ts b/packages/@n8n/nodes-langchain/nodes/mcp/shared/runtime.test.ts index fc95e5bf53c..beb053f77c8 100644 --- a/packages/@n8n/nodes-langchain/nodes/mcp/shared/runtime.test.ts +++ b/packages/@n8n/nodes-langchain/nodes/mcp/shared/runtime.test.ts @@ -1,6 +1,6 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { Container } from '@n8n/di'; -import { mock } from 'jest-mock-extended'; +import { mock } from 'vitest-mock-extended'; import { StructuredToolkit } from 'n8n-core'; import { NodeConnectionTypes, @@ -245,7 +245,7 @@ describe('runtime', () => { }, ], }); - const callTool = jest + const callTool = vi .spyOn(Client.prototype, 'callTool') .mockResolvedValue({ content: [{ type: 'text', text: 'ok' }] }); vi.spyOn(Client.prototype, 'close').mockResolvedValue(); @@ -280,7 +280,7 @@ describe('runtime', () => { }, ], }); - const callTool = jest + const callTool = vi .spyOn(Client.prototype, 'callTool') .mockResolvedValue({ content: [{ type: 'text', text: 'ok' }] }); vi.spyOn(Client.prototype, 'close').mockResolvedValue(); diff --git a/packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreOracleDB/VectorStoreOracleDB.node.test.ts b/packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreOracleDB/VectorStoreOracleDB.node.test.ts index 2b135e2966b..3ba380b489f 100644 --- a/packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreOracleDB/VectorStoreOracleDB.node.test.ts +++ b/packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreOracleDB/VectorStoreOracleDB.node.test.ts @@ -563,7 +563,7 @@ describe('VectorStoreOracleDB.node', () => { throw new Error('releaseVectorStoreClient was not captured'); } - const clientCloseSpy = jest + const clientCloseSpy = vi .spyOn(lastInstance.client as { close: () => Promise }, 'close') .mockResolvedValue(undefined); diff --git a/packages/@n8n/nodes-langchain/nodes/vendors/Microsoft/MicrosoftAgent365Trigger.node.test.ts b/packages/@n8n/nodes-langchain/nodes/vendors/Microsoft/MicrosoftAgent365Trigger.node.test.ts index 304149cf7ba..5f64d6f0efe 100644 --- a/packages/@n8n/nodes-langchain/nodes/vendors/Microsoft/MicrosoftAgent365Trigger.node.test.ts +++ b/packages/@n8n/nodes-langchain/nodes/vendors/Microsoft/MicrosoftAgent365Trigger.node.test.ts @@ -364,7 +364,7 @@ describe('MicrosoftAgent365Trigger', () => { try { await microsoftAgent365Trigger.webhook!.call(mockWebhookFunctions); - fail('Should have thrown an error'); + expect.fail('Should have thrown an error'); } catch (error) { expect(error).toBeInstanceOf(NodeOperationError); expect((error as NodeOperationError).description).toBe( @@ -379,7 +379,7 @@ describe('MicrosoftAgent365Trigger', () => { try { await microsoftAgent365Trigger.webhook!.call(mockWebhookFunctions); - fail('Should have thrown an error'); + expect.fail('Should have thrown an error'); } catch (err) { expect(err).toBeInstanceOf(NodeOperationError); expect((err as NodeOperationError).message).toContain('Network error'); diff --git a/packages/@n8n/nodes-langchain/test/setup.ts b/packages/@n8n/nodes-langchain/test/setup.ts index 6a53ecec114..a187a904f63 100644 --- a/packages/@n8n/nodes-langchain/test/setup.ts +++ b/packages/@n8n/nodes-langchain/test/setup.ts @@ -6,11 +6,6 @@ * DI mocks unless they need custom behaviour. */ -// jest-mock-extended (used by NodeTestHarness) requires `jest` as a global. -// Vitest does not set this alias automatically. -// eslint-disable-next-line @typescript-eslint/no-explicit-any -(globalThis as any).jest = vi; - vi.mock('@n8n/di', () => ({ Container: { get: vi.fn().mockImplementation(() => ({ diff --git a/packages/@n8n/nodes-langchain/utils/embeddings/embeddingInputValidation.test.ts b/packages/@n8n/nodes-langchain/utils/embeddings/embeddingInputValidation.test.ts index 46f12d7b01b..a07d7f7f698 100644 --- a/packages/@n8n/nodes-langchain/utils/embeddings/embeddingInputValidation.test.ts +++ b/packages/@n8n/nodes-langchain/utils/embeddings/embeddingInputValidation.test.ts @@ -40,7 +40,7 @@ describe('embeddingInputValidation', () => { it('should include helpful error message', () => { try { validateEmbedQueryInput(undefined, mockNode); - fail('Expected error to be thrown'); + expect.fail('Expected error to be thrown'); } catch (e) { expect(e).toBeInstanceOf(NodeOperationError); expect((e as NodeOperationError).message).toContain('empty or undefined text'); @@ -50,7 +50,7 @@ describe('embeddingInputValidation', () => { it('should include description with possible causes', () => { try { validateEmbedQueryInput(undefined, mockNode); - fail('Expected error to be thrown'); + expect.fail('Expected error to be thrown'); } catch (e) { expect(e).toBeInstanceOf(NodeOperationError); const description = (e as NodeOperationError).description as string; @@ -109,7 +109,7 @@ describe('embeddingInputValidation', () => { it('should include index of invalid document in error message', () => { try { validateEmbedDocumentsInput(['valid', 'also valid', undefined], mockNode); - fail('Expected error to be thrown'); + expect.fail('Expected error to be thrown'); } catch (e) { expect(e).toBeInstanceOf(NodeOperationError); expect((e as NodeOperationError).message).toContain('index 2'); @@ -119,7 +119,7 @@ describe('embeddingInputValidation', () => { it('should include helpful description in error', () => { try { validateEmbedDocumentsInput(['valid', null], mockNode); - fail('Expected error to be thrown'); + expect.fail('Expected error to be thrown'); } catch (e) { expect(e).toBeInstanceOf(NodeOperationError); expect((e as NodeOperationError).description).toContain('non-empty strings'); diff --git a/packages/@n8n/task-runner/src/js-task-runner/js-task-runner.ts b/packages/@n8n/task-runner/src/js-task-runner/js-task-runner.ts index 8f24cc89f0c..aecf792daaf 100644 --- a/packages/@n8n/task-runner/src/js-task-runner/js-task-runner.ts +++ b/packages/@n8n/task-runner/src/js-task-runner/js-task-runner.ts @@ -189,7 +189,7 @@ export class JsTaskRunner extends TaskRunner { Buffer.allocUnsafe = safeAlloc as typeof Buffer.allocUnsafe; Buffer.allocUnsafeSlow = safeAlloc as typeof Buffer.allocUnsafeSlow; - // Freeze globals, except in tests because Jest needs to be able to mutate prototypes + // Freeze globals, except in tests because Vitest needs to be able to mutate prototypes if (process.env.NODE_ENV !== 'test') { Object.getOwnPropertyNames(globalThis) .map((name) => Reflect.get(globalThis, name) as unknown) diff --git a/packages/@n8n/task-runner/vite.config.ts b/packages/@n8n/task-runner/vite.config.ts index e1edff36374..f8e05c1fe47 100644 --- a/packages/@n8n/task-runner/vite.config.ts +++ b/packages/@n8n/task-runner/vite.config.ts @@ -4,8 +4,6 @@ import { mergeConfig } from 'vite'; export default mergeConfig( createVitestConfigWithDecorators({ - // The n8n root jest.config sets `restoreMocks: true`, and test files silently rely on - // it — omit this and mocks bleed between tests. restoreMocks: true, testTimeout: 10_000, }), diff --git a/packages/@n8n/typescript-config/tsconfig.backend.json b/packages/@n8n/typescript-config/tsconfig.backend.json index 048c4eb9bd3..77e27254fae 100644 --- a/packages/@n8n/typescript-config/tsconfig.backend.json +++ b/packages/@n8n/typescript-config/tsconfig.backend.json @@ -1,6 +1,6 @@ { "extends": "./tsconfig.common.json", "compilerOptions": { - "types": ["node", "jest"] + "types": ["node", "vitest/globals"] } } diff --git a/packages/@n8n/typescript-config/tsconfig.common.json b/packages/@n8n/typescript-config/tsconfig.common.json index ce20abc42c3..b16ec418d52 100644 --- a/packages/@n8n/typescript-config/tsconfig.common.json +++ b/packages/@n8n/typescript-config/tsconfig.common.json @@ -23,6 +23,5 @@ "sourceMap": true, "skipLibCheck": true, "tsBuildInfoFile": "${configDir}/dist/typecheck.tsbuildinfo" - }, - "files": ["../../../node_modules/jest-expect-message/types/index.d.ts"] + } } diff --git a/packages/@n8n/workflow-sdk/src/ast-interpreter/interpreter.test.ts b/packages/@n8n/workflow-sdk/src/ast-interpreter/interpreter.test.ts index 0f2c71612a8..80d00fb3fe2 100644 --- a/packages/@n8n/workflow-sdk/src/ast-interpreter/interpreter.test.ts +++ b/packages/@n8n/workflow-sdk/src/ast-interpreter/interpreter.test.ts @@ -14,7 +14,7 @@ import type { SDKFunctions } from './interpreter'; import { interpretSDKCode } from './interpreter'; import { parseSDKCode } from './parser'; -/** Helper to get the first call argument from a Jest mock with proper typing */ +/** Helper to get the first call argument from a Vitest mock with proper typing */ function getFirstCallArg(mockFn: Mock): T { const calls = mockFn.mock.calls as unknown[][]; return calls[0][0] as T; diff --git a/packages/cli/package.json b/packages/cli/package.json index 960c1646f0f..f99dd7e7bfe 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -117,6 +117,7 @@ "ts-essentials": "^7.0.3", "tsconfig-paths": "^4.2.0", "@vitest/coverage-v8": "catalog:", + "vite": "catalog:", "vitest": "catalog:", "vitest-mock-extended": "catalog:" }, diff --git a/packages/cli/src/__tests__/workflow-execute-additional-data.test.ts b/packages/cli/src/__tests__/workflow-execute-additional-data.test.ts index d50bd417ea6..8cef2153fd5 100644 --- a/packages/cli/src/__tests__/workflow-execute-additional-data.test.ts +++ b/packages/cli/src/__tests__/workflow-execute-additional-data.test.ts @@ -177,8 +177,6 @@ describe('WorkflowExecuteAdditionalData', () => { }, nodes: [], connections: {}, - // Real object: a mock-generated fn breaks Workflow's observable wrapping - // (vitest's vi.fn().mock is enumerable; Jest's was not). staticData: {}, }), ); diff --git a/packages/cli/src/__tests__/workflow-runner.test.ts b/packages/cli/src/__tests__/workflow-runner.test.ts index efddda3eb53..5f2e5a10614 100644 --- a/packages/cli/src/__tests__/workflow-runner.test.ts +++ b/packages/cli/src/__tests__/workflow-runner.test.ts @@ -371,7 +371,7 @@ describe('enqueueExecution', () => { const error = new Error('stop for test purposes'); // mock a rejection to stop execution flow before we create the PCancelable promise, - // so that Jest does not move on to tear down the suite until the PCancelable settles + // so that Vitest does not move on to tear down the suite until the PCancelable settles addJob.mockRejectedValueOnce(error); // @ts-expect-error Private method @@ -393,7 +393,7 @@ describe('enqueueExecution', () => { const error = new Error('stop for test purposes'); // mock a rejection to stop execution flow before we create the PCancelable promise, - // so that Jest does not move on to tear down the suite until the PCancelable settles + // so that Vitest does not move on to tear down the suite until the PCancelable settles addJob.mockRejectedValueOnce(error); const restartExecutionId = 'restart-execution-id'; diff --git a/packages/cli/src/services/__tests__/ai-workflow-builder.service.test.ts b/packages/cli/src/services/__tests__/ai-workflow-builder.service.test.ts index 16d23cf29d7..91f8488b109 100644 --- a/packages/cli/src/services/__tests__/ai-workflow-builder.service.test.ts +++ b/packages/cli/src/services/__tests__/ai-workflow-builder.service.test.ts @@ -815,9 +815,9 @@ describe('WorkflowBuilderService - node type loading', () => { let packageDir: string; // LazyPackageDirectoryLoader lives in the externalized `n8n-core` dist and reads - // from disk through its own `fs` binding, which Vitest module mocks can't reach - // (unlike Jest's global module registry). So write a real fixture package and let - // the loader exercise the full path against the real filesystem. + // from disk through its own `fs` binding, which Vitest module mocks can't reach. + // So write a real fixture package and let the loader + // exercise the full path against the real filesystem. beforeAll(() => { tmpRoot = mkdtempSync(join(tmpdir(), 'n8n-ai-builder-nodes-')); packageDir = join(tmpRoot, 'nodes-base'); diff --git a/packages/cli/src/services/__tests__/import.service.test.ts b/packages/cli/src/services/__tests__/import.service.test.ts index a6104172c9f..aa9524d68e7 100644 --- a/packages/cli/src/services/__tests__/import.service.test.ts +++ b/packages/cli/src/services/__tests__/import.service.test.ts @@ -28,9 +28,6 @@ vi.mock('@n8n/backend-common', async (importOriginal) => ({ safeJoinPath: vi.fn(), })); -// Mock @n8n/db -// Spread the real module so transitively-imported exports resolve (Vitest throws -// on undeclared mock exports, unlike Jest), overriding only the repos under test. vi.mock('@n8n/db', async (importOriginal) => ({ ...(await importOriginal()), CredentialsRepository: mock(), diff --git a/packages/cli/src/task-runners/task-broker/__tests__/task-broker.service.test.ts b/packages/cli/src/task-runners/task-broker/__tests__/task-broker.service.test.ts index 8810df371f0..84c53171039 100644 --- a/packages/cli/src/task-runners/task-broker/__tests__/task-broker.service.test.ts +++ b/packages/cli/src/task-runners/task-broker/__tests__/task-broker.service.test.ts @@ -234,7 +234,7 @@ describe('TaskBroker', () => { taskType: 'taskType1', }; - vi.spyOn(taskBroker, 'acceptOffer').mockResolvedValue(); // allow Jest to exit cleanly + vi.spyOn(taskBroker, 'acceptOffer').mockResolvedValue(); taskBroker.taskRequested(request); diff --git a/packages/cli/src/telemetry/__tests__/telemetry.test.ts b/packages/cli/src/telemetry/__tests__/telemetry.test.ts index a1bac3a5bf1..9e80e57f487 100644 --- a/packages/cli/src/telemetry/__tests__/telemetry.test.ts +++ b/packages/cli/src/telemetry/__tests__/telemetry.test.ts @@ -150,30 +150,30 @@ describe('Telemetry', () => { payload.is_manual = true; payload.success = true; - const execTime1 = fakeJestSystemTime('2022-01-01 12:00:00'); + const execTime1 = fakeTestSystemTime('2022-01-01 12:00:00'); telemetry.trackWorkflowExecution(payload); - fakeJestSystemTime('2022-01-01 12:30:00'); + fakeTestSystemTime('2022-01-01 12:30:00'); telemetry.trackWorkflowExecution(payload); payload.is_manual = false; payload.success = true; - const execTime2 = fakeJestSystemTime('2022-01-01 13:00:00'); + const execTime2 = fakeTestSystemTime('2022-01-01 13:00:00'); telemetry.trackWorkflowExecution(payload); - fakeJestSystemTime('2022-01-01 12:30:00'); + fakeTestSystemTime('2022-01-01 12:30:00'); telemetry.trackWorkflowExecution(payload); payload.is_manual = true; payload.success = false; - const execTime3 = fakeJestSystemTime('2022-01-01 14:00:00'); + const execTime3 = fakeTestSystemTime('2022-01-01 14:00:00'); telemetry.trackWorkflowExecution(payload); - fakeJestSystemTime('2022-01-01 12:30:00'); + fakeTestSystemTime('2022-01-01 12:30:00'); telemetry.trackWorkflowExecution(payload); payload.is_manual = false; payload.success = false; - const execTime4 = fakeJestSystemTime('2022-01-01 15:00:00'); + const execTime4 = fakeTestSystemTime('2022-01-01 15:00:00'); telemetry.trackWorkflowExecution(payload); - fakeJestSystemTime('2022-01-01 12:30:00'); + fakeTestSystemTime('2022-01-01 12:30:00'); telemetry.trackWorkflowExecution(payload); expect(spyTrack).toHaveBeenCalledTimes(0); @@ -199,19 +199,19 @@ describe('Telemetry', () => { execution_source: 'user', }; - const userManualExecTime = fakeJestSystemTime('2022-01-01 12:00:00'); + const userManualExecTime = fakeTestSystemTime('2022-01-01 12:00:00'); telemetry.trackWorkflowExecution(payload); payload.execution_source = 'instance_ai'; payload.mock_data_sources = 'trigger_input'; - const instanceAiMockManualExecTime = fakeJestSystemTime('2022-01-01 13:00:00'); + const instanceAiMockManualExecTime = fakeTestSystemTime('2022-01-01 13:00:00'); telemetry.trackWorkflowExecution(payload); payload.is_manual = false; delete payload.mock_data_sources; - const instanceAiRealProdExecTime = fakeJestSystemTime('2022-01-01 14:00:00'); + const instanceAiRealProdExecTime = fakeTestSystemTime('2022-01-01 14:00:00'); telemetry.trackWorkflowExecution(payload); const execBuffer = telemetry.getCountsBuffer(); @@ -240,9 +240,9 @@ describe('Telemetry', () => { error_node_type: 'custom-nodes-base.node-type', }; - const execTime1 = fakeJestSystemTime('2022-01-01 12:00:00'); + const execTime1 = fakeTestSystemTime('2022-01-01 12:00:00'); telemetry.trackWorkflowExecution(payload); - fakeJestSystemTime('2022-01-01 12:30:00'); + fakeTestSystemTime('2022-01-01 12:30:00'); telemetry.trackWorkflowExecution(payload); let execBuffer = telemetry.getCountsBuffer(); @@ -253,9 +253,9 @@ describe('Telemetry', () => { expect(execBuffer['1'].manual_error?.first).toEqual(execTime1); payload.error_node_type = 'n8n-nodes-base.node-type'; - fakeJestSystemTime('2022-01-01 13:00:00'); + fakeTestSystemTime('2022-01-01 13:00:00'); telemetry.trackWorkflowExecution(payload); - fakeJestSystemTime('2022-01-01 12:30:00'); + fakeTestSystemTime('2022-01-01 12:30:00'); telemetry.trackWorkflowExecution(payload); execBuffer = telemetry.getCountsBuffer(); @@ -276,7 +276,7 @@ describe('Telemetry', () => { }; // successful execution - const execTime1 = fakeJestSystemTime('2022-01-01 12:00:00'); + const execTime1 = fakeTestSystemTime('2022-01-01 12:00:00'); telemetry.trackWorkflowExecution(payload); expect(spyTrack).toHaveBeenCalledTimes(0); @@ -336,7 +336,7 @@ describe('Telemetry', () => { expect(execBuffer['2'].prod_success?.first).toEqual(execTime1); // failed execution - const execTime2 = fakeJestSystemTime('2022-01-01 12:00:00'); + const execTime2 = fakeTestSystemTime('2022-01-01 12:00:00'); payload.error_node_type = 'custom-package.custom-node'; payload.success = false; telemetry.trackWorkflowExecution(payload); @@ -393,16 +393,16 @@ describe('Telemetry', () => { }; // Manual crashed execution - const execTime1 = fakeJestSystemTime('2022-01-01 12:00:00'); + const execTime1 = fakeTestSystemTime('2022-01-01 12:00:00'); telemetry.trackWorkflowExecution(payload); - fakeJestSystemTime('2022-01-01 12:30:00'); + fakeTestSystemTime('2022-01-01 12:30:00'); telemetry.trackWorkflowExecution(payload); // Production crashed execution payload.is_manual = false; - const execTime2 = fakeJestSystemTime('2022-01-01 13:00:00'); + const execTime2 = fakeTestSystemTime('2022-01-01 13:00:00'); telemetry.trackWorkflowExecution(payload); - fakeJestSystemTime('2022-01-01 13:30:00'); + fakeTestSystemTime('2022-01-01 13:30:00'); telemetry.trackWorkflowExecution(payload); // Should fire "Workflow execution errored" events for manual crashed executions with n8n-nodes-base @@ -439,10 +439,10 @@ describe('Telemetry', () => { error_node_type: 'n8n-nodes-base.another-node', }; - const execTime1 = fakeJestSystemTime('2022-01-01 12:00:00'); + const execTime1 = fakeTestSystemTime('2022-01-01 12:00:00'); telemetry.trackWorkflowExecution(payload1); - const execTime2 = fakeJestSystemTime('2022-01-01 13:00:00'); + const execTime2 = fakeTestSystemTime('2022-01-01 13:00:00'); telemetry.trackWorkflowExecution(payload2); // Should fire one "Workflow execution errored" event for manual crashed execution with n8n-nodes-base @@ -833,7 +833,7 @@ describe('Telemetry', () => { }); test('should count calls per user and endpoint', () => { - const execTime1 = fakeJestSystemTime('2022-01-01 12:00:00'); + const execTime1 = fakeTestSystemTime('2022-01-01 12:00:00'); telemetry.trackApiInvocation({ user_id: 'user1', @@ -1059,7 +1059,7 @@ describe('Telemetry', () => { }); }); -const fakeJestSystemTime = (dateTime: string | Date): Date => { +const fakeTestSystemTime = (dateTime: string | Date): Date => { const dt = new Date(dateTime); vi.setSystemTime(dt); return dt; diff --git a/packages/cli/test/global-setup.ts b/packages/cli/test/global-setup.ts index 52a11aac836..2feb075eb31 100644 --- a/packages/cli/test/global-setup.ts +++ b/packages/cli/test/global-setup.ts @@ -4,10 +4,6 @@ import { Container } from '@n8n/di'; import { DataSource as Connection } from '@n8n/typeorm'; import nock from 'nock'; -/** - * Vitest global setup. Runs once in the main process before any test file. - * Mirrors the former Jest `globalSetup`/`globalTeardown` pair. - */ export async function setup() { nock.disableNetConnect(); nock.enableNetConnect('127.0.0.1'); diff --git a/packages/cli/test/integration/database/repositories/credentials.repository.test.ts b/packages/cli/test/integration/database/repositories/credentials.repository.test.ts index 35e4b41a47a..ec24cdedcfb 100644 --- a/packages/cli/test/integration/database/repositories/credentials.repository.test.ts +++ b/packages/cli/test/integration/database/repositories/credentials.repository.test.ts @@ -27,7 +27,6 @@ function expectCredentialsMatch( const oldSorted = [...oldCredentials].sort((a, b) => a.id.localeCompare(b.id)); const newSorted = [...newCredentials].sort((a, b) => a.id.localeCompare(b.id)); - // Jest's toEqual does deep recursive comparison of all fields expect(newSorted).toEqual(oldSorted); } diff --git a/packages/cli/test/integration/shared/utils/test-server.ts b/packages/cli/test/integration/shared/utils/test-server.ts index c78d727c70c..29ef7ac9273 100644 --- a/packages/cli/test/integration/shared/utils/test-server.ts +++ b/packages/cli/test/integration/shared/utils/test-server.ts @@ -380,7 +380,7 @@ export const setupTestServer = ({ // DI container after testDb.terminate() resets it. Await the close so // pending handlers drain before the next file's beforeAll runs in // persistent Jest workers — otherwise stale handlers call - // Container.get(Logger), construct a fresh Logger, and trip Jest's + // Container.get(Logger), construct a fresh Logger, and trip Vitest's // "environment torn down" guard when winston is imported. // Skip when the server never started listening (some suites bail in // beforeAll); calling close() on a non-listening server throws diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index 5a768c6a6be..4fb2e77b86d 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -7,7 +7,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "lib": ["es2023", "dom"], - "types": ["node", "vitest/globals"], + "types": ["node", "vitest/globals", "vite/client"], "paths": { "@/*": ["./src/*"], "@test/*": ["./test/shared/*"], diff --git a/packages/cli/vitest.config.base.ts b/packages/cli/vitest.config.base.ts index 3da342a1de1..bf096b1cca0 100644 --- a/packages/cli/vitest.config.base.ts +++ b/packages/cli/vitest.config.base.ts @@ -7,10 +7,6 @@ import { tscEntityTransform } from './vitest.tsc-entity-transform'; import { workspaceDistExternals } from './vitest.workspace-externals'; /** - * Path aliases mirroring the `paths` entries in `tsconfig.json`, plus the - * `@n8n/mcp-apps/server` -> source mapping the former jest config used so tests - * can resolve the specifier without the package's `dist/` being built first. - * * Note on alias order/specificity: Vite matches a string alias only when the * import equals it or starts with `alias + '/'`, so `@` matches `@/...` but not * `@n8n/...` or `@test/...`. The entries are therefore non-overlapping. @@ -19,9 +15,6 @@ const alias = { '@test-integration': path.resolve(__dirname, 'test/integration/shared'), '@test': path.resolve(__dirname, 'test/shared'), '@n8n/mcp-apps/server': path.resolve(__dirname, '../@n8n/mcp-apps/src/server/index.ts'), - // Force the test-utils package to load from source: its `dist/` is the stale - // jest build (still imports `jest-mock-extended`), and we want the migrated - // `vitest-mock-extended` source. `workspaceDistExternals` already excludes it. '@n8n/backend-test-utils': path.resolve(__dirname, '../@n8n/backend-test-utils/src/index.ts'), '@': path.resolve(__dirname, 'src'), }; @@ -33,8 +26,6 @@ const alias = { */ export const baseConfig = mergeConfig( createVitestConfigWithDecorators({ - // The former root jest.config set `restoreMocks: true`, and a large share of - // test files silently rely on mocks being restored before each test. Keep it. restoreMocks: true, }), { @@ -44,8 +35,8 @@ export const baseConfig = mergeConfig( plugins: [workspaceDistExternals(), tscEntityTransform()], resolve: { alias }, test: { - // Run each test file in its own forked process, matching Jest's - // process-per-file model. This is load-bearing: cli tests register service + // Run each test file in its own forked process. + // This is load-bearing: cli tests register service // mocks into the `@n8n/di` Container (`mockInstance`), and a shared worker // would leak that state across files. pool: 'forks', diff --git a/packages/cli/vitest.config.integration.testcontainers.ts b/packages/cli/vitest.config.integration.testcontainers.ts index 55bb18b570d..1b9ec6a862c 100644 --- a/packages/cli/vitest.config.integration.testcontainers.ts +++ b/packages/cli/vitest.config.integration.testcontainers.ts @@ -1,16 +1,6 @@ import { mergeConfig } from 'vite'; - import { baseConfig } from './vitest.config.base'; -/** - * Integration tests against a postgres container started via testcontainers, - * mirroring `jest.config.integration.testcontainers.js`. Migration tests are - * excluded here (they have a dedicated testcontainers config), matching the - * former `test:postgres:integration:tc` which ignored `/test/migration/`. - * - * The testcontainers global setup *replaces* the default nock global setup - * (matching the old jest config, which overrode `globalSetup`/`globalTeardown`). - */ const integrationTcConfig = mergeConfig(baseConfig, { test: { include: ['test/integration/**/*.test.ts', 'src/**/*.integration.test.ts'], diff --git a/packages/cli/vitest.config.integration.ts b/packages/cli/vitest.config.integration.ts index d24628862e1..6de2b9fc5da 100644 --- a/packages/cli/vitest.config.integration.ts +++ b/packages/cli/vitest.config.integration.ts @@ -2,10 +2,6 @@ import { mergeConfig } from 'vite'; import { baseConfig } from './vitest.config.base'; -/** - * Integration test suite, mirroring the former `jest.config.integration.js`: - * the integration/migration directories plus `*.integration.test.ts` in `src`. - */ export default mergeConfig(baseConfig, { test: { include: ['test/integration/**/*.test.ts', 'src/**/*.integration.test.ts'], diff --git a/packages/cli/vitest.config.migration.testcontainers.ts b/packages/cli/vitest.config.migration.testcontainers.ts index c1993923abe..a49e166d7ed 100644 --- a/packages/cli/vitest.config.migration.testcontainers.ts +++ b/packages/cli/vitest.config.migration.testcontainers.ts @@ -2,12 +2,6 @@ import { mergeConfig } from 'vite'; import { baseConfig } from './vitest.config.base'; -/** - * Migration tests against a postgres container started via testcontainers, - * mirroring `jest.config.migration.testcontainers.js`. Runs sequentially in a - * single process; the testcontainers global setup replaces the nock global - * setup (matching the old jest config). - */ const migrationTcConfig = mergeConfig(baseConfig, { test: { include: ['test/migration/**/*.test.ts'], diff --git a/packages/cli/vitest.config.migration.ts b/packages/cli/vitest.config.migration.ts index bd6bf08811e..77799640915 100644 --- a/packages/cli/vitest.config.migration.ts +++ b/packages/cli/vitest.config.migration.ts @@ -3,15 +3,14 @@ import { mergeConfig } from 'vite'; import { baseConfig } from './vitest.config.base'; /** - * Migration test suite, mirroring the former `jest.config.migration.js`. * Migration tests share a database and perform rollbacks, so they must run - * sequentially in a single process (the equivalent of Jest's `maxWorkers: 1`). + * sequentially in a single process. */ export default mergeConfig(baseConfig, { test: { include: ['test/migration/**/*.test.ts'], - // Migration suites do heavy DB work; some files previously set a 20s timeout - // via `jest.setTimeout`. Apply it suite-wide for both tests and hooks. + // Migration suites do heavy DB work; some files previously set a 20s timeout. + // Apply it suite-wide for both tests and hooks. testTimeout: 20_000, hookTimeout: 20_000, fileParallelism: false, diff --git a/packages/core/nodes-testing/mock-extended.jest.cjs b/packages/core/nodes-testing/mock-extended.jest.cjs deleted file mode 100644 index 25a0375f548..00000000000 --- a/packages/core/nodes-testing/mock-extended.jest.cjs +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('jest-mock-extended'); diff --git a/packages/core/package.json b/packages/core/package.json index 7ad6db985fe..68ade720486 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -46,7 +46,6 @@ "@n8n/vitest-config": "workspace:*", "@vitest/coverage-v8": "catalog:", "axios": "catalog:", - "jest-mock-extended": "^3.0.4", "nock": "catalog:", "reflect-metadata": "catalog:", "vitest": "catalog:", diff --git a/packages/frontend/@n8n/design-system/.npmignore b/packages/frontend/@n8n/design-system/.npmignore index 6058e08e6e6..4a97015604f 100644 --- a/packages/frontend/@n8n/design-system/.npmignore +++ b/packages/frontend/@n8n/design-system/.npmignore @@ -6,7 +6,6 @@ storybook-static .storybook .browserslistrc -jest.config.js vite.config.ts *.md diff --git a/packages/frontend/editor-ui/.npmignore b/packages/frontend/editor-ui/.npmignore index e2a6607f8b7..f89d7051fed 100644 --- a/packages/frontend/editor-ui/.npmignore +++ b/packages/frontend/editor-ui/.npmignore @@ -4,7 +4,6 @@ !dist .browserslistrc -jest.config.js postcss.config.js vue.config.js dist/report.html diff --git a/packages/frontend/editor-ui/.oxlintrc.json b/packages/frontend/editor-ui/.oxlintrc.json index 3470184978e..4a0003d9387 100644 --- a/packages/frontend/editor-ui/.oxlintrc.json +++ b/packages/frontend/editor-ui/.oxlintrc.json @@ -36,7 +36,6 @@ "dist/**", "eslint.config.mjs", "tsup.config.ts", - "jest.config.js", "vitest.config.ts", "**/*.test.ts" ], diff --git a/packages/node-dev/package.json b/packages/node-dev/package.json index bf6712cdf67..74cac2ba056 100644 --- a/packages/node-dev/package.json +++ b/packages/node-dev/package.json @@ -22,7 +22,7 @@ "lint:fix": "eslint src --fix", "prepack": "echo \"Building project...\" && rm -rf dist && tsc -b", "watch": "tsc --watch", - "test": "jest --passWithNoTests" + "test": "node -e \"process.exit(0)\"" }, "bin": { "n8n-node-dev": "./bin/n8n-node-dev" @@ -41,7 +41,9 @@ ], "devDependencies": { "@n8n/typescript-config": "workspace:*", - "@types/inquirer": "^7.0.1" + "@types/inquirer": "^7.0.1", + "vite": "catalog:", + "vitest": "catalog:" }, "dependencies": { "@n8n/di": "workspace:*", diff --git a/packages/testing/playwright/scripts/aggregate-coverage.mjs b/packages/testing/playwright/scripts/aggregate-coverage.mjs index c3d827df2cf..0474641cf72 100644 --- a/packages/testing/playwright/scripts/aggregate-coverage.mjs +++ b/packages/testing/playwright/scripts/aggregate-coverage.mjs @@ -11,7 +11,7 @@ * * --unit-shards: directory of downloaded unit + integration + frontend lcov * artifacts, nested per-artifact as `//coverage/lcov.info`. - * Jest and vitest write package-RELATIVE SF paths (`src/foo.ts`); we qualify + * Vitest writes package-RELATIVE SF paths (`src/foo.ts`); we qualify * them to repo-root-relative `packages//src/...` (pkg derived from the * artifact dir) so they MERGE with the already-qualified E2E lcovs instead of * colliding under bare `src/...` keys (every package has a `src/index.ts`). diff --git a/packages/workflow/jest.config.js b/packages/workflow/jest.config.js deleted file mode 100644 index 8b80b8e4952..00000000000 --- a/packages/workflow/jest.config.js +++ /dev/null @@ -1,4 +0,0 @@ -/** @type {import('jest').Config} */ -module.exports = { - ...require('../../jest.config'), -}; diff --git a/packages/workflow/src/interfaces.ts b/packages/workflow/src/interfaces.ts index d70abb54662..fd9dec9954d 100644 --- a/packages/workflow/src/interfaces.ts +++ b/packages/workflow/src/interfaces.ts @@ -2253,12 +2253,6 @@ type EngineAction = ExecuteNodeAction; * containing the results of all requested actions. * * @template T - The type of metadata associated with this request - * - * @todo This should use `unknown`, but jest-mock-extended will turn this into - * `Partial` which `unknown` cannot be assigned to, which leads to a - * lot of type errors in our tests. - * The correct fix is to make a PR to jest-mock-extended and make it handle - * `unknown` special, turning it into `unknown` instead of `Partial`. */ export type EngineRequest = { /** Array of actions that the requesting node wants the engine to fulfill */ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f19c9d69c2a..acfd67a99ac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -291,9 +291,6 @@ catalogs: ai: specifier: ^6.0.197 version: 6.0.197 - babel-jest: - specifier: ^29.7.0 - version: 29.7.0 basic-auth: specifier: 2.0.1 version: 2.0.1 @@ -812,18 +809,12 @@ importers: '@n8n/eslint-config': specifier: workspace:* version: link:packages/@n8n/eslint-config - '@types/jest': - specifier: ^29.5.3 - version: 29.5.3 '@types/node': specifier: ^20.17.50 version: 20.19.41 '@types/supertest': specifier: ^6.0.3 version: 6.0.3 - babel-jest: - specifier: 'catalog:' - version: 29.7.0(@babel/core@7.29.0) babel-plugin-transform-import-meta: specifier: ^2.3.2 version: 2.3.3(@babel/core@7.29.0) @@ -836,24 +827,6 @@ importers: get-tsconfig: specifier: 'catalog:' version: 4.13.0 - jest: - specifier: ^29.6.2 - version: 29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)) - jest-environment-jsdom: - specifier: ^29.6.2 - version: 29.6.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - jest-expect-message: - specifier: ^1.1.3 - version: 1.1.3 - jest-junit: - specifier: ^16.0.0 - version: 16.0.0 - jest-mock: - specifier: ^29.6.2 - version: 29.7.0 - jest-mock-extended: - specifier: ^3.0.4 - version: 3.0.4(jest@29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)))(typescript@6.0.2) lefthook: specifier: ^1.7.15 version: 1.7.15 @@ -881,9 +854,6 @@ importers: supertest: specifier: ^7.1.1 version: 7.1.1 - ts-jest: - specifier: ^29.4.9 - version: 29.4.9(@babel/core@7.29.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)))(typescript@6.0.2) tsc-alias: specifier: ^1.8.10 version: 1.8.10 @@ -1602,6 +1572,9 @@ importers: '@n8n/vitest-config': specifier: workspace:* version: link:../vitest-config + vite: + specifier: 'catalog:' + version: 8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3) vitest: specifier: 'catalog:' version: 4.1.9(@opentelemetry/api@1.9.0)(@types/node@20.19.41)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) @@ -4213,6 +4186,9 @@ importers: tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 + vite: + specifier: 'catalog:' + version: 8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3) vitest: specifier: 'catalog:' version: 4.1.9(@opentelemetry/api@1.9.0)(@types/node@20.19.41)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) @@ -4391,9 +4367,6 @@ importers: axios: specifier: 1.18.0 version: 1.18.0(debug@4.4.3) - jest-mock-extended: - specifier: ^3.0.4 - version: 3.0.4(jest@29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)))(typescript@6.0.2) nock: specifier: 'catalog:' version: 14.0.14 @@ -5601,6 +5574,12 @@ importers: '@types/inquirer': specifier: ^7.0.1 version: 7.3.3 + vite: + specifier: 'catalog:' + version: 8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3) + vitest: + specifier: 'catalog:' + version: 4.1.9(@opentelemetry/api@1.9.0)(@types/node@20.19.41)(@vitest/browser-playwright@4.1.9)(@vitest/coverage-v8@4.1.9)(jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) packages/nodes-base: dependencies: @@ -7150,27 +7129,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-bigint@7.8.3': - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-decorators@7.28.6': resolution: {integrity: sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==} engines: {node: '>=6.9.0'} @@ -7189,64 +7147,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.27.1': resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.28.6': resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} engines: {node: '>=6.9.0'} @@ -7610,9 +7516,6 @@ packages: '@bazel/runfiles@6.5.0': resolution: {integrity: sha512-RzahvqTkfpY2jsDxo8YItPX+/iZ6hbiikw1YhE0bA9EKBR5Og8Pa6FHn9PO9M0zaXRVsr0GFQLKbB/0rzy9SzA==} - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@bcoe/v8-coverage@1.0.2': resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} @@ -8496,80 +8399,10 @@ packages: resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jest/console@29.7.0': - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/core@29.7.0': - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect-utils@29.7.0': - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect@29.7.0': - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/globals@29.7.0': - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/reporters@29.7.0': - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/source-map@29.6.3': - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-result@29.7.0': - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/transform@29.7.0': - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jitsi/robotjs@0.6.21': resolution: {integrity: sha512-rIF1itj1syWbdv1vEK3Xd+QVp7yQVUwuKb2s7+PFiLyYG4c4bDPhXvXxHHAGHYcnkmFZMB7ArwI0W44OtN5Crw==} @@ -11893,18 +11726,6 @@ packages: '@types/aws4@1.11.2': resolution: {integrity: sha512-x0f96eBPrCCJzJxdPbUvDFRva4yPpINJzTuXXpmS2j9qLUpF2nyGzvXPlRziuGbCsPukwY4JfuO+8xwsoZLzGw==} - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.28.0': - resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} - '@types/basic-auth@1.1.3': resolution: {integrity: sha512-W3rv6J0IGlxqgE2eQ2pTb0gBjaGtejQpJ6uaCjz3UQ65+TFTPC5/lAE+POfx1YLdjtxvejJzsIAfd3MxWiVmfg==} @@ -12021,9 +11842,6 @@ packages: '@types/gm@1.25.0': resolution: {integrity: sha512-y0nI4vp+0Vtsve+daADIHeSckm11TnWAdC4CBq2BEXTg+CfJiolnsnzsXeIEuIpBCksjN26LUZlvQKJDpthw5g==} - '@types/graceful-fs@4.1.9': - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/har-format@1.2.16': resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==} @@ -12048,27 +11866,12 @@ packages: '@types/ioredis-mock@8.2.2': resolution: {integrity: sha512-bnbPHOjxy4TUDjRh61MMoK2QvDNZqrMDXJYrEDZP/HPFvBubR24CQ0DBi5lgWhLxG4lvVsXPRDXtZ03+JgonoQ==} - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - - '@types/jest@29.5.3': - resolution: {integrity: sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==} - '@types/jmespath@0.15.0': resolution: {integrity: sha512-uaht4XcYSq5ZrPriQW8C+g5DhptewRd1E84ph7L167sCyzLObz+U3JTpmYq/CNkvjNsz2mtyQoHPNEYQYTzWmg==} '@types/js-nacl@1.3.0': resolution: {integrity: sha512-juUvxo444ZfwDSwWyhssMxSN+snqTdiUoOVXZF+/ffVrGHq3rAf1fmczWn3z9TCEAuRbaTmgAcYlZ9MutyyOkQ==} - '@types/jsdom@20.0.1': - resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} - '@types/jsdom@21.1.7': resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==} @@ -12288,9 +12091,6 @@ packages: '@types/sshpk@1.17.4': resolution: {integrity: sha512-5gI/7eJn6wmkuIuFY8JZJ1g5b30H9K5U5vKrvOuYu+hoZLb2xcVEgxhYZ2Vhbs0w/ACyzyfkJq0hQtBfSCugjw==} - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - '@types/stream-chain@2.1.0': resolution: {integrity: sha512-guDyAl6s/CAzXUOWpGK2bHvdiopLIwpGu8v10+lb9hnQOyo4oj/ZUQFOvqFjKGsE3wJP1fpIesCcMvbXuWsqOg==} @@ -12379,9 +12179,6 @@ packages: '@types/yargs-parser@21.0.0': resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} @@ -12828,10 +12625,6 @@ packages: '@zone-eu/mailsplit@5.4.8': resolution: {integrity: sha512-eEyACj4JZ7sjzRvy26QhLgKEMWwQbsw1+QZnlLX+/gihcNH07lVPOcnwf5U6UAL7gkc//J3jVd76o/WS+taUiA==} - abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - deprecated: Use your platform's native atob() and btoa() methods instead - abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} @@ -12850,9 +12643,6 @@ packages: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} - acorn-globals@7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - acorn-import-attributes@1.9.5: resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: @@ -13034,10 +12824,6 @@ packages: any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - app-builder-bin@5.0.0-alpha.12: resolution: {integrity: sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w==} @@ -13286,20 +13072,6 @@ packages: babar@0.2.3: resolution: {integrity: sha512-1hmYKLj+7m5qHsJ3hosOlO7Z5BYe3E8u9u/W2BEqB4kytysuHYuGe5OIrEr7q4Zyg3y3EytFb4YrPZokYSix8g==} - babel-jest@29.7.0: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - - babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - babel-plugin-polyfill-corejs2@0.4.17: resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} peerDependencies: @@ -13320,17 +13092,6 @@ packages: peerDependencies: '@babel/core': ^7.10.0 - babel-preset-current-node-syntax@1.2.0: - resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} - peerDependencies: - '@babel/core': ^7.0.0 || ^8.0.0-0 - - babel-preset-jest@29.6.3: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - babel-walk@3.0.0-canary-5: resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} engines: {node: '>= 10.0.0'} @@ -13493,13 +13254,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - bson@6.10.4: resolution: {integrity: sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==} engines: {node: '>=16.20.1'} @@ -13633,10 +13387,6 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} @@ -13682,10 +13432,6 @@ packages: change-case@5.4.4: resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - char-spinner@1.0.1: resolution: {integrity: sha512-acv43vqJ0+N0rD+Uw3pDHSxP30FHrywu2NO6/wBaHChJIizpDeBUd6NjqhNhy9LGaEAhZAXn46QzmlAvIWd16g==} @@ -13808,10 +13554,6 @@ packages: chromium-pickle-js@0.2.0: resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - ci-info@4.3.1: resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} engines: {node: '>=8'} @@ -13898,19 +13640,12 @@ packages: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - code-block-writer@13.0.3: resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} cohere-ai@7.14.0: resolution: {integrity: sha512-hSo2/tFV29whjFFtVtdS7kHmtUsjfMO1sgwE/d5bhOE4O7Vkj5G1R9lLIqkIprp/+rrvCq3HGvEaOgry7xRcDA==} - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -14163,11 +13898,6 @@ packages: create-hmac@1.1.7: resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -14276,16 +14006,9 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - cssom@0.5.0: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - cssstyle@3.0.0: resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} engines: {node: '>=14'} @@ -14364,10 +14087,6 @@ packages: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} - data-urls@3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} - data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} @@ -14461,14 +14180,6 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - dedent@1.7.0: - resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - deep-eql@4.0.0: resolution: {integrity: sha512-GxJC5MOg2KyQlv6WiUF/VAnMj4MWnYiXo4oLgeptOELVoknyErb4Z8+5F/IM/K4g9/80YzzatxmWcyRwUseH0A==} engines: {node: '>=6'} @@ -14576,10 +14287,6 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} @@ -14716,11 +14423,6 @@ packages: domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - deprecated: Use your platform's native DOMException instead - domhandler@3.3.0: resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==} engines: {node: '>= 4'} @@ -14868,10 +14570,6 @@ packages: resolution: {integrity: sha512-lFWdT7sJilGO0UOO25D3urNH7Np1XTB/7GD/9nGM4YxNqAzkunuJyt9ZyG4cZ+UEGqH/lbK4vczg0B6NtyPflw==} engines: {node: '>=16'} - emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -15326,10 +15024,6 @@ packages: resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} engines: {node: ^18.19.0 || >=20.5.0} - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} @@ -15342,10 +15036,6 @@ packages: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} - expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - exponential-backoff@3.1.3: resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} @@ -15470,9 +15160,6 @@ packages: fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -15560,10 +15247,6 @@ packages: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -16070,10 +15753,6 @@ packages: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} - html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} - html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} @@ -16252,11 +15931,6 @@ packages: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -16407,10 +16081,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - is-generator-function@1.1.0: resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} @@ -16641,22 +16311,10 @@ packages: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} - istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - istanbul-reports@3.2.0: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} @@ -16673,157 +16331,14 @@ packages: engines: {node: '>=10'} hasBin: true - jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-config@29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': ^20.17.50 - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - jest-diff@29.7.0: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-environment-jsdom@29.6.2: - resolution: {integrity: sha512-7oa/+266AAEgkzae8i1awNEfTfjwawWKLpiw2XesZmaoVVj9u9t8JOYx18cG29rbPNtkUlZ8V4b5Jb36y/VxoQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-expect-message@1.1.3: - resolution: {integrity: sha512-bTK77T4P+zto+XepAX3low8XVQxDgaEqh3jSTQOG8qvPpD69LsIdyJTa+RmnJh3HNSzJng62/44RPPc7OIlFxg==} - jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-junit@16.0.0: - resolution: {integrity: sha512-A94mmw6NfJab4Fg/BlvVOUXzXgF0XIH6EmTgJ5NDPp4xoKq0Kr7sErb+4Xs9nZvu58pJojz5RFGpqnZYJTrRfQ==} - engines: {node: '>=10.12.0'} - - jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock-extended@3.0.4: - resolution: {integrity: sha512-2ynEZ7IEJNrhrgshklDMhrOdnmW4Nt+PhkyRqZxRgpwMo7JjmFWMzyp0+eSyk+H9KK1QjXI5xTZIw6x7cVDcRg==} - peerDependencies: - jest: ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 - typescript: 6.0.2 - - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-pnp-resolver@1.2.3: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - - jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - jiti@1.21.7: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true @@ -16900,15 +16415,6 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsdom@20.0.2: - resolution: {integrity: sha512-AHWa+QO/cgRg4N+DsmHg1Y7xnz+8KU3EflM0LVDTdmrYOc1WWTSkOjtpUveQH+1Bqd5rtcVnb/DuxV/UjDO4rA==} - engines: {node: '>=14'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - jsdom@23.0.1: resolution: {integrity: sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ==} engines: {node: '>=18'} @@ -17176,10 +16682,6 @@ packages: resolution: {integrity: sha512-HW2mYkhg0a3RH2t57+ZJwacJiSIuDEhsXQAaCw6iGeN7zowdUV7g5QtnRdFdPkaK2eaNFpG6Rp0GsTrl/v0gNg==} hasBin: true - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -17335,10 +16837,6 @@ packages: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -17403,9 +16901,6 @@ packages: lodash.isstring@4.0.1: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -17563,9 +17058,6 @@ packages: resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} engines: {node: '>= 10'} - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - mammoth@1.12.0: resolution: {integrity: sha512-cwnK1RIcRdDMi2HRx2EXGYlxqIEh0Oo3bLhorgnsVJi2UkbX1+jKxuBNR9PC5+JaX7EkmJxFPmo6mjLpqShI2w==} engines: {node: '>=12.0.0'} @@ -18421,9 +17913,6 @@ packages: node-html-parser@5.4.2: resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-machine-id@1.1.12: resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} @@ -18825,10 +18314,6 @@ packages: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -19141,10 +18626,6 @@ packages: resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} engines: {node: '>=16.20.0'} - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - pkg-dir@5.0.0: resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} engines: {node: '>=10'} @@ -19857,10 +19338,6 @@ packages: resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - resolve-dependency-path@4.0.1: resolution: {integrity: sha512-YQftIIC4vzO9UMhO/sCgXukNyiwVRCVaxiWskCBy7Zpqkplm8kTAISZ8O1MoKW1ca6xzgLUBjZTcDgypXvXxiQ==} engines: {node: '>=18'} @@ -19876,10 +19353,6 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} - resolve@1.22.11: resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} @@ -20484,9 +19957,6 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -20659,10 +20129,6 @@ packages: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} - string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -20708,10 +20174,6 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - strip-eof@1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} @@ -20939,10 +20401,6 @@ packages: engines: {node: '>=10'} hasBin: true - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - testcontainers@11.13.0: resolution: {integrity: sha512-fzTvgOtd6U/esOzgmDatJh79OSK0tU6vjDOJ3B6ICrrJf0dqCWtFdpOr6f/g/KixMxKDTDbszmZYjSORJXsVCQ==} @@ -21023,9 +20481,6 @@ packages: resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} engines: {node: '>=14.14'} - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - to-buffer@1.2.1: resolution: {integrity: sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==} engines: {node: '>= 0.4'} @@ -21070,10 +20525,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} - tr46@4.1.1: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} @@ -21154,33 +20605,6 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-jest@29.4.9: - resolution: {integrity: sha512-LTb9496gYPMCqjeDLdPrKuXtncudeV1yRZnF4Wo5l3SFi0RYEnYRNgMrFIdg+FHvfzjCyQk1cLncWVqiSX+EvQ==} - engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/transform': ^29.0.0 || ^30.0.0 - '@jest/types': ^29.0.0 || ^30.0.0 - babel-jest: ^29.0.0 || ^30.0.0 - esbuild: '*' - jest: ^29.0.0 || ^30.0.0 - jest-util: ^29.0.0 || ^30.0.0 - typescript: 6.0.2 - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/transform': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - jest-util: - optional: true - ts-map@1.0.3: resolution: {integrity: sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==} @@ -21641,10 +21065,6 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} - valid-data-url@3.0.1: resolution: {integrity: sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==} engines: {node: '>=10'} @@ -21944,10 +21364,6 @@ packages: w3c-keyname@2.2.6: resolution: {integrity: sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==} - w3c-xmlserializer@3.0.0: - resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} - engines: {node: '>=12'} - w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -21960,9 +21376,6 @@ packages: resolution: {integrity: sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==} engines: {node: '>=6.0.0'} - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -22015,11 +21428,6 @@ packages: resolution: {integrity: sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==} engines: {node: '>=4.0.0'} - whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} - deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation - whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} @@ -22028,18 +21436,10 @@ packages: whatwg-fetch@3.6.20: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} - whatwg-url@13.0.0: resolution: {integrity: sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==} engines: {node: '>=16'} @@ -22146,10 +21546,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - write-file-atomic@5.0.1: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -24190,26 +23586,6 @@ snapshots: dependencies: '@babel/core': 7.29.0 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -24225,61 +23601,11 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -24758,8 +24084,6 @@ snapshots: '@bazel/runfiles@6.5.0': {} - '@bcoe/v8-coverage@0.2.3': {} - '@bcoe/v8-coverage@1.0.2': {} '@biomejs/biome@1.9.0': @@ -25849,178 +25173,10 @@ snapshots: dependencies: minipass: 7.1.3 - '@istanbuljs/load-nyc-config@1.1.0': - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 4.2.0 - resolve-from: 5.0.0 - - '@istanbuljs/schema@0.1.3': {} - - '@jest/console@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.19.41 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.19.41 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/environment@29.7.0': - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.19.41 - jest-mock: 29.7.0 - - '@jest/expect-utils@29.7.0': - dependencies: - jest-get-type: 29.6.3 - - '@jest/expect@29.7.0': - dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/fake-timers@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.19.41 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - '@jest/globals@29.7.0': - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/reporters@29.7.0': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.31 - '@types/node': 20.19.41 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.2.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.3.0 - transitivePeerDependencies: - - supports-color - '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 - '@jest/source-map@29.6.3': - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - callsites: 3.1.0 - graceful-fs: 4.2.11 - - '@jest/test-result@29.7.0': - dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - - '@jest/test-sequencer@29.7.0': - dependencies: - '@jest/test-result': 29.7.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - slash: 3.0.0 - - '@jest/transform@29.7.0': - dependencies: - '@babel/core': 7.29.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.31 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.8 - pirates: 4.0.7 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - - '@jest/types@29.6.3': - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 20.19.41 - '@types/yargs': 17.0.33 - chalk: 4.1.2 - '@jitsi/robotjs@0.6.21': dependencies: node-addon-api: 8.3.0 @@ -29514,27 +28670,6 @@ snapshots: dependencies: '@types/node': 20.19.41 - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.28.0 - - '@types/babel__generator@7.27.0': - dependencies: - '@babel/types': 7.29.0 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - - '@types/babel__traverse@7.28.0': - dependencies: - '@babel/types': 7.29.0 - '@types/basic-auth@1.1.3': dependencies: '@types/node': 20.19.41 @@ -29676,10 +28811,6 @@ snapshots: dependencies: '@types/node': 20.19.41 - '@types/graceful-fs@4.1.9': - dependencies: - '@types/node': 20.19.41 - '@types/har-format@1.2.16': {} '@types/html-to-text@9.0.4': {} @@ -29707,31 +28838,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@types/istanbul-lib-coverage@2.0.6': {} - - '@types/istanbul-lib-report@3.0.3': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - - '@types/istanbul-reports@3.0.4': - dependencies: - '@types/istanbul-lib-report': 3.0.3 - - '@types/jest@29.5.3': - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 - '@types/jmespath@0.15.0': {} '@types/js-nacl@1.3.0': {} - '@types/jsdom@20.0.1': - dependencies: - '@types/node': 20.19.41 - '@types/tough-cookie': 4.0.5 - parse5: 7.3.0 - '@types/jsdom@21.1.7': dependencies: '@types/node': 20.19.41 @@ -29984,8 +29094,6 @@ snapshots: '@types/asn1': 0.2.0 '@types/node': 20.19.41 - '@types/stack-utils@2.0.3': {} - '@types/stream-chain@2.1.0': dependencies: '@types/node': 20.19.41 @@ -30077,10 +29185,6 @@ snapshots: '@types/yargs-parser@21.0.0': {} - '@types/yargs@17.0.33': - dependencies: - '@types/yargs-parser': 21.0.0 - '@types/yauzl@2.10.3': dependencies: '@types/node': 20.19.41 @@ -30725,8 +29829,6 @@ snapshots: libmime: 5.3.7 libqp: 2.1.1 - abab@2.0.6: {} - abbrev@1.1.1: {} abbrev@4.0.0: {} @@ -30742,11 +29844,6 @@ snapshots: mime-types: 3.0.2 negotiator: 1.0.0 - acorn-globals@7.0.1: - dependencies: - acorn: 8.14.0 - acorn-walk: 8.3.4 - acorn-import-attributes@1.9.5(acorn@8.14.0): dependencies: acorn: 8.14.0 @@ -30902,11 +29999,6 @@ snapshots: any-promise@1.3.0: {} - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.2 - app-builder-bin@5.0.0-alpha.12: {} app-builder-lib@26.9.0(dmg-builder@26.9.0)(electron-builder-squirrel-windows@26.9.0): @@ -31261,36 +30353,6 @@ snapshots: dependencies: colors: 1.4.0 - babel-jest@29.7.0(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.29.0) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-istanbul@6.1.1: - dependencies: - '@babel/helper-plugin-utils': 7.28.6 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-jest-hoist@29.6.3: - dependencies: - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.28.0 - babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): dependencies: '@babel/compat-data': 7.29.0 @@ -31321,31 +30383,6 @@ snapshots: '@babel/template': 7.28.6 tslib: 2.8.1 - babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.0) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0) - - babel-preset-jest@29.6.3(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) - babel-walk@3.0.0-canary-5: dependencies: '@babel/types': 7.29.0 @@ -31521,14 +30558,6 @@ snapshots: node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) - bs-logger@0.2.6: - dependencies: - fast-json-stable-stringify: 2.1.0 - - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - bson@6.10.4: {} buffer-crc32@0.2.13: {} @@ -31717,8 +30746,6 @@ snapshots: camelcase-css@2.0.1: {} - camelcase@5.3.1: {} - camelcase@6.3.0: {} camelize@1.0.1: {} @@ -31766,8 +30793,6 @@ snapshots: change-case@5.4.4: {} - char-regex@1.0.2: {} - char-spinner@1.0.1: {} character-entities@2.0.2: {} @@ -31887,8 +30912,6 @@ snapshots: chromium-pickle-js@0.2.0: {} - ci-info@3.9.0: {} - ci-info@4.3.1: {} cipher-base@1.0.6: @@ -31970,8 +30993,6 @@ snapshots: cluster-key-slot@1.1.2: {} - co@4.6.0: {} - code-block-writer@13.0.3: {} cohere-ai@7.14.0(encoding@0.1.13): @@ -31992,8 +31013,6 @@ snapshots: - aws-crt - encoding - collect-v8-coverage@1.0.2: {} - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -32252,21 +31271,6 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.12 - create-jest@29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - create-require@1.1.1: {} crelt@1.0.6: {} @@ -32403,14 +31407,8 @@ snapshots: dependencies: css-tree: 2.2.1 - cssom@0.3.8: {} - cssom@0.5.0: {} - cssstyle@2.3.0: - dependencies: - cssom: 0.3.8 - cssstyle@3.0.0: dependencies: rrweb-cssom: 0.6.0 @@ -32490,12 +31488,6 @@ snapshots: data-uri-to-buffer@6.0.2: {} - data-urls@3.0.2: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 @@ -32573,8 +31565,6 @@ snapshots: dependencies: mimic-response: 3.1.0 - dedent@1.7.0: {} - deep-eql@4.0.0: dependencies: type-detect: 4.0.8 @@ -32682,8 +31672,6 @@ snapshots: detect-libc@2.1.2: {} - detect-newline@3.1.0: {} - detect-node@2.1.0: {} detective-amd@6.0.1: @@ -32860,10 +31848,6 @@ snapshots: domelementtype@2.3.0: {} - domexception@4.0.0: - dependencies: - webidl-conversions: 7.0.0 - domhandler@3.3.0: dependencies: domelementtype: 2.3.0 @@ -33073,8 +32057,6 @@ snapshots: email-providers@2.0.1: {} - emittery@0.13.1: {} - emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} @@ -33753,8 +32735,6 @@ snapshots: strip-final-newline: 4.0.0 yoctocolors: 2.1.1 - exit@0.1.2: {} - expand-template@2.0.3: {} expand-tilde@2.0.2: @@ -33763,14 +32743,6 @@ snapshots: expect-type@1.3.0: {} - expect@29.7.0: - dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - exponential-backoff@3.1.3: {} express-handlebars@8.0.1: @@ -33979,10 +32951,6 @@ snapshots: dependencies: reusify: 1.0.4 - fb-watchman@2.0.2: - dependencies: - bser: 2.1.1 - fd-slicer@1.1.0: dependencies: pend: 1.2.0 @@ -34084,11 +33052,6 @@ snapshots: dependencies: locate-path: 3.0.0 - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -34693,10 +33656,6 @@ snapshots: dependencies: lru-cache: 6.0.0 - html-encoding-sniffer@3.0.0: - dependencies: - whatwg-encoding: 2.0.0 - html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 @@ -34948,11 +33907,6 @@ snapshots: import-lazy@4.0.0: {} - import-local@3.2.0: - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - imurmurhash@0.1.4: {} indefinite@2.5.1: {} @@ -35112,8 +34066,6 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-generator-fn@2.1.0: {} - is-generator-function@1.1.0: dependencies: call-bound: 1.0.4 @@ -35281,40 +34233,12 @@ snapshots: istanbul-lib-coverage@3.2.2: {} - istanbul-lib-instrument@5.2.1: - dependencies: - '@babel/core': 7.29.0 - '@babel/parser': 7.29.2 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.7.3 - transitivePeerDependencies: - - supports-color - - istanbul-lib-instrument@6.0.3: - dependencies: - '@babel/core': 7.29.0 - '@babel/parser': 7.29.2 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.7.3 - transitivePeerDependencies: - - supports-color - istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@4.0.1: - dependencies: - debug: 4.4.3(supports-color@8.1.1) - istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 @@ -35337,88 +34261,6 @@ snapshots: filelist: 1.0.4 minimatch: 5.1.8 - jest-changed-files@29.7.0: - dependencies: - execa: 5.1.1 - jest-util: 29.7.0 - p-limit: 3.1.0 - - jest-circus@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.19.41 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.7.0 - is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.1.0 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-cli@29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest-config@29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)): - dependencies: - '@babel/core': 7.29.0 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.29.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.19.41 - ts-node: 10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -35426,256 +34268,8 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 - jest-docblock@29.7.0: - dependencies: - detect-newline: 3.1.0 - - jest-each@29.7.0: - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 - - jest-environment-jsdom@29.6.2(bufferutil@4.0.9)(utf-8-validate@5.0.10): - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/jsdom': 20.0.1 - '@types/node': 20.19.41 - jest-mock: 29.7.0 - jest-util: 29.7.0 - jsdom: 20.0.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - jest-environment-node@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.19.41 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - jest-expect-message@1.1.3: {} - jest-get-type@29.6.3: {} - jest-haste-map@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 20.19.41 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - - jest-junit@16.0.0: - dependencies: - mkdirp: 1.0.4 - strip-ansi: 6.0.1 - uuid: 13.0.1 - xml: 1.0.1 - - jest-leak-detector@29.7.0: - dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-matcher-utils@29.7.0: - dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-message-util@29.7.0: - dependencies: - '@babel/code-frame': 7.29.7 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - - jest-mock-extended@3.0.4(jest@29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)))(typescript@6.0.2): - dependencies: - jest: 29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)) - ts-essentials: 7.0.3(typescript@6.0.2) - typescript: 6.0.2 - - jest-mock@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.19.41 - jest-util: 29.7.0 - - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: - jest-resolve: 29.7.0 - - jest-regex-util@29.6.3: {} - - jest-resolve-dependencies@29.7.0: - dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - jest-resolve@29.7.0: - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.11 - resolve.exports: 2.0.3 - slash: 3.0.0 - - jest-runner@29.7.0: - dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.19.41 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - - jest-runtime@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.19.41 - chalk: 4.1.2 - cjs-module-lexer: 2.2.0 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - - jest-snapshot@29.7.0: - dependencies: - '@babel/core': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) - '@babel/types': 7.29.0 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) - chalk: 4.1.2 - expect: 29.7.0 - graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - natural-compare: 1.4.0 - pretty-format: 29.7.0 - semver: 7.7.3 - transitivePeerDependencies: - - supports-color - - jest-util@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.19.41 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.2 - - jest-validate@29.7.0: - dependencies: - '@jest/types': 29.6.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.6.3 - leven: 3.1.0 - pretty-format: 29.7.0 - - jest-watcher@29.7.0: - dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.19.41 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.7.0 - string-length: 4.0.2 - - jest-worker@29.7.0: - dependencies: - '@types/node': 20.19.41 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest@29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - jiti@1.21.7: {} jiti@2.6.1: {} @@ -35731,39 +34325,6 @@ snapshots: jsbn@1.1.0: {} - jsdom@20.0.2(bufferutil@4.0.9)(utf-8-validate@5.0.10): - dependencies: - abab: 2.0.6 - acorn: 8.14.0 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.4.3 - domexception: 4.0.0 - escodegen: 2.1.0 - form-data: 4.0.6 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 - parse5: 7.3.0 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-xmlserializer: 3.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - ws: 8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: cssstyle: 3.0.0 @@ -36074,8 +34635,6 @@ snapshots: lefthook-windows-arm64: 1.7.15 lefthook-windows-x64: 1.7.15 - leven@3.1.0: {} - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -36216,10 +34775,6 @@ snapshots: p-locate: 3.0.0 path-exists: 3.0.0 - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -36266,8 +34821,6 @@ snapshots: lodash.isstring@4.0.1: {} - lodash.memoize@4.1.2: {} - lodash.merge@4.6.2: {} lodash.once@4.1.1: {} @@ -36446,10 +34999,6 @@ snapshots: - supports-color optional: true - makeerror@1.0.12: - dependencies: - tmpl: 1.0.5 - mammoth@1.12.0: dependencies: '@xmldom/xmldom': 0.8.13 @@ -37667,8 +36216,6 @@ snapshots: css-select: 4.3.0 he: 1.2.0 - node-int64@0.4.0: {} - node-machine-id@1.1.12: {} node-readfiles@0.2.0: @@ -38129,10 +36676,6 @@ snapshots: dependencies: p-limit: 2.3.0 - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - p-locate@5.0.0: dependencies: p-limit: 3.1.0 @@ -38427,10 +36970,6 @@ snapshots: pkce-challenge@5.0.0(patch_hash=651e785d0b7bbf5be9210e1e895c39a16dc3ce8a5a3843b4819565fb6e175b90): {} - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - pkg-dir@5.0.0: dependencies: find-up: 5.0.0 @@ -39334,10 +37873,6 @@ snapshots: resolve-alpn@1.2.1: {} - resolve-cwd@3.0.0: - dependencies: - resolve-from: 5.0.0 - resolve-dependency-path@4.0.1: {} resolve-from@4.0.0: {} @@ -39346,8 +37881,6 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve.exports@2.0.3: {} - resolve@1.22.11: dependencies: is-core-module: 2.16.1 @@ -40127,11 +38660,6 @@ snapshots: source-map-js@1.2.1: {} - source-map-support@0.5.13: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 @@ -40327,11 +38855,6 @@ snapshots: string-argv@0.3.1: {} - string-length@4.0.2: - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -40393,8 +38916,6 @@ snapshots: strip-bom@3.0.0: {} - strip-bom@4.0.0: {} - strip-eof@1.0.0: {} strip-final-newline@2.0.0: {} @@ -40742,12 +39263,6 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - test-exclude@6.0.0: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 5.1.8 - testcontainers@11.13.0: dependencies: '@balena/dockerignore': 1.0.2 @@ -40829,8 +39344,6 @@ snapshots: tmp@0.2.7: {} - tmpl@1.0.5: {} - to-buffer@1.2.1: dependencies: isarray: 2.0.5 @@ -40877,10 +39390,6 @@ snapshots: tr46@0.0.3: {} - tr46@3.0.0: - dependencies: - punycode: 2.3.1 - tr46@4.1.1: dependencies: punycode: 2.3.1 @@ -40949,26 +39458,6 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.4.9(@babel/core@7.29.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)))(typescript@6.0.2): - dependencies: - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - handlebars: 4.7.9 - jest: 29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)) - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.7.3 - type-fest: 4.41.0 - typescript: 6.0.2 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.29.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.29.0) - jest-util: 29.7.0 - ts-map@1.0.3: {} ts-morph@27.0.2: @@ -41458,12 +39947,6 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - v8-to-istanbul@9.3.0: - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - valid-data-url@3.0.1: {} validator@13.15.26: {} @@ -41743,10 +40226,6 @@ snapshots: w3c-keyname@2.2.6: {} - w3c-xmlserializer@3.0.0: - dependencies: - xml-name-validator: 4.0.0 - w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 @@ -41755,10 +40234,6 @@ snapshots: walkdir@0.4.1: {} - walker@1.0.8: - dependencies: - makeerror: 1.0.12 - wcwidth@1.0.1: dependencies: defaults: 1.0.4 @@ -41820,25 +40295,14 @@ snapshots: transitivePeerDependencies: - supports-color - whatwg-encoding@2.0.0: - dependencies: - iconv-lite: 0.6.3 - whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 whatwg-fetch@3.6.20: {} - whatwg-mimetype@3.0.0: {} - whatwg-mimetype@4.0.0: {} - whatwg-url@11.0.0: - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - whatwg-url@13.0.0: dependencies: tr46: 4.1.1 @@ -42005,11 +40469,6 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@4.0.2: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - write-file-atomic@5.0.1: dependencies: imurmurhash: 0.1.4 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a54e245730a..a50f7ee7d29 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -110,7 +110,6 @@ catalog: agent-browser: 0.26.0 ai: ^6.0.197 axios: 1.18.0 - babel-jest: ^29.7.0 basic-auth: 2.0.1 cache-manager: 5.2.3 callsites: 3.1.0 diff --git a/renovate.json b/renovate.json index 8d0728fb1a1..9ced0769c61 100644 --- a/renovate.json +++ b/renovate.json @@ -57,7 +57,7 @@ }, { "description": "Group testing packages", - "matchPackageNames": ["*vitest*", "*playwright*", "@testing-library/**", "*jest*"], + "matchPackageNames": ["*vitest*", "*playwright*", "@testing-library/**"], "groupName": "testing packages" }, { diff --git a/scripts/mutation-health/README.md b/scripts/mutation-health/README.md index 154bf6bcdd4..a717e06cca7 100644 --- a/scripts/mutation-health/README.md +++ b/scripts/mutation-health/README.md @@ -124,7 +124,7 @@ Then, **once**, trigger the nightly with `workflow_dispatch` and set `bootstrap_ For a **genuine cold-start** (first run after the ledger is provisioned, the read-all returns `[]`), trigger with `bootstrap_packages: '*'` instead — it acknowledges the empty ledger and skips the per-package divergence check for every entry. -Not yet covered: **jest** packages (need Stryker's jest-runner — different setup) and `@n8n/expression-runtime` (it _is_ the isolated-vm engine; blocked on the patch in DEVP-257). +Not yet covered: `@n8n/expression-runtime` (it _is_ the isolated-vm engine; blocked on the patch in DEVP-257). ## State transitions