diff --git a/.oxlintrc.json b/.oxlintrc.json index 894ab73f0..e1733d28c 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -1,6 +1,6 @@ { "$schema": "./node_modules/oxlint/configuration_schema.json", - "plugins": ["typescript", "unicorn", "oxc", "import", "jest"], + "plugins": ["typescript", "unicorn", "oxc", "import", "vitest"], "categories": { "correctness": "error" }, diff --git a/global.d.ts b/global.d.ts deleted file mode 100644 index b68ae0770..000000000 --- a/global.d.ts +++ /dev/null @@ -1 +0,0 @@ -import 'jest-extended' diff --git a/jest.config.base.mjs b/jest.config.base.mjs deleted file mode 100644 index 26e1ebd6b..000000000 --- a/jest.config.base.mjs +++ /dev/null @@ -1,21 +0,0 @@ -export default { - testEnvironment: 'node', - testRegex: 'test\\/.*\\.ts$', - coverageDirectory: 'coverage', - collectCoverage: true, - coverageReporters: ['lcov', 'text', 'text-summary', 'cobertura'], - reporters: [ - 'default', - ['jest-junit', { outputDirectory: 'reports', outputName: 'nodejs_junit.xml' }], - ], - moduleNameMapper: { - '^@gitbeaker/(.*)$': '/../$1/src', - }, - transformIgnorePatterns: [ - '/node_modules/(?!chalk).+\\.js$', // Needed for chalkv5 - ], - transform: { - '^.+\\.(t|j)sx?$': '@swc/jest', - }, - setupFilesAfterEnv: ['/../../jest.setup.ts'], -}; diff --git a/jest.setup.ts b/jest.setup.ts deleted file mode 100644 index 0f49c71d3..000000000 --- a/jest.setup.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { jest } from '@jest/globals'; - -import 'jest-extended'; -import 'jest-extended/all'; - -if (process.env.CI === 'true') { - // Tests running in the CI runners tend to be more flaky. - jest.retryTimes(3); -} diff --git a/package.json b/package.json index 2d863df84..847d90be6 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,10 @@ "lodash": ">=4.18.1", "tar": "^7.5.13", "undici": ">=8.0.2" - } + }, + "ignoredBuiltDependencies": [ + "nx" + ] }, "scripts": { "build": "nx run-many --target=build", @@ -39,22 +42,19 @@ "@changesets/changelog-github": "^0.5.2", "@changesets/cli": "^2.30.0", "@codecov/bundle-analyzer": "^1.9.1", - "@jest/globals": "^30.3.0", - "@swc/core": "^1.15.24", - "@swc/jest": "^0.2.39", - "@types/jest": "^30.0.0", + "@vitest/coverage-v8": "^4.0.10", + "@vitest/eslint-plugin": "^1.4.3", + "@vitest/ui": "^4.0.10", "all-contributors-cli": "github:jdalrymple/all-contributors-cli#dist", "globals": "^16.5.0", "husky": "^9.1.7", - "jest": "^30.3.0", - "jest-extended": "^7.0.0", - "jest-junit": "^16.0.0", - "lint-staged": "^16.4.0", - "nx": "^22.6.4", + "lint-staged": "^16.2.6", + "nx": "^22.0.3", "oxlint": "^1.58.0", "prettier": "3.6.2", "tsdown": "^0.21.7", - "typescript": "^5.9.3" + "typescript": "^5.9.3", + "vitest": "^4.1.5" }, "packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319" } diff --git a/packages/cli/jest.config.mjs b/packages/cli/jest.config.mjs deleted file mode 100644 index 1c657b23b..000000000 --- a/packages/cli/jest.config.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import base from '../../jest.config.base.mjs'; - -export default { - ...base, - displayName: 'Gitbeaker CLI', - testTimeout: 10000, - moduleNameMapper: { - '@gitbeaker/core/map.json': '/test/__mocks__/map.json', - ...base.moduleNameMapper, - }, -}; diff --git a/packages/cli/package.json b/packages/cli/package.json index 5888a98ec..2bbbefa32 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -32,9 +32,9 @@ "dist" ], "scripts": { + "test:unit": "vitest run --config vitest.config.mjs test/unit", + "test:e2e": "vitest run --config vitest.config.mjs test/e2e", "build": "tsdown src/index.ts --format esm --target esnext", - "test:unit": "jest --maxWorkers=50% test/unit", - "test:e2e": "jest --maxWorkers=50% test/e2e", "lint": "oxlint src test scripts", "lint:fix": "oxlint src test scripts --fix" }, @@ -47,6 +47,8 @@ }, "devDependencies": { "tsdown": "^0.21.7", - "typescript": "^5.9.3" + "@vitest/expect": "^4.0.10", + "typescript": "^5.9.3", + "vitest-extended": "^0.0.1" } } diff --git a/packages/cli/src/cli.ts b/packages/cli/src/cli.ts index d4be7dcfe..7437cfd27 100644 --- a/packages/cli/src/cli.ts +++ b/packages/cli/src/cli.ts @@ -1,8 +1,9 @@ import type { MethodTemplate } from './utils'; -import API_MAP from '@gitbeaker/core/map.json' with { type: 'json' }; import * as Gitbeaker from '@gitbeaker/rest'; import Chalk from 'chalk'; import Sywac from 'sywac'; +import API_MAP from './map'; +import pkg from '../package.json'; import { buildArgumentObjects, getCLISafeNormalizedTerm, @@ -70,7 +71,9 @@ const optionStyle = Chalk.white.bold; const descriptionStyle = Chalk.hex('#848484'); const hintStyle = Chalk.hex('#6a5f88'); -const cli = Sywac.version('-v, --version') +const cli = Sywac.version('-v, --version', { + version: pkg.version, +}) .help('-h, --help') .showHelpByDefault() .epilogue(`Copyright ${new Date().getFullYear()}`) diff --git a/packages/cli/src/map.ts b/packages/cli/src/map.ts new file mode 100644 index 000000000..e587c7c15 --- /dev/null +++ b/packages/cli/src/map.ts @@ -0,0 +1,4 @@ +// Wrapper module to handle JSON import with assertion +import API_MAP from '@gitbeaker/core/map.json' with { type: 'json' }; + +export default API_MAP; diff --git a/packages/cli/test/e2e/index.ts b/packages/cli/test/e2e/index.ts index 4b6fbdcae..a0b4c5b78 100644 --- a/packages/cli/test/e2e/index.ts +++ b/packages/cli/test/e2e/index.ts @@ -1,5 +1,7 @@ import pkg from '../../package.json'; +import { describe, expect, it } from 'vitest'; + describe('General', () => { it('should return the expose a gitbeaker commnad', () => { expect(pkg.bin).toHaveProperty('gitbeaker'); diff --git a/packages/cli/test/e2e/resources/Projects.ts b/packages/cli/test/e2e/resources/Projects.ts index 282ebca85..59663c216 100644 --- a/packages/cli/test/e2e/resources/Projects.ts +++ b/packages/cli/test/e2e/resources/Projects.ts @@ -1,6 +1,7 @@ import { exec } from 'node:child_process'; import { promisify } from 'node:util'; +import { describe, expect, it } from 'vitest'; const execP: (command: string) => Promise<{ stdout: string }> = promisify(exec); const { GITLAB_PERSONAL_ACCESS_TOKEN = '', GITLAB_URL = '', TEST_ID = Date.now() } = process.env; diff --git a/packages/cli/test/unit/index.ts b/packages/cli/test/unit/index.ts index e42474a37..1fcb8939d 100644 --- a/packages/cli/test/unit/index.ts +++ b/packages/cli/test/unit/index.ts @@ -1,12 +1,17 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import pkg from '../../package.json'; +import mockMapData from '../__mocks__/map.json'; -jest.mock('@gitbeaker/rest'); +vi.mock('@gitbeaker/rest'); +vi.mock('../../src/map', () => ({ + default: mockMapData, +})); const OLD_ENV = process.env; let Projects; beforeEach(async () => { - jest.resetModules(); + vi.resetModules(); ({ Projects } = await import('@gitbeaker/rest')); diff --git a/packages/cli/vitest.config.mjs b/packages/cli/vitest.config.mjs new file mode 100644 index 000000000..970f855e4 --- /dev/null +++ b/packages/cli/vitest.config.mjs @@ -0,0 +1,17 @@ +import { defineProject, mergeConfig } from 'vitest/config'; +import base from '../../vitest.config.base.mjs'; + +export default mergeConfig( + base, + defineProject({ + test: { + name: 'Gitbeaker CLI', + testTimeout: 10000, + server: { + deps: { + inline: ['@gitbeaker/core'], + }, + }, + }, + }), +); diff --git a/packages/core/jest.config.mjs b/packages/core/jest.config.mjs deleted file mode 100644 index 345a48304..000000000 --- a/packages/core/jest.config.mjs +++ /dev/null @@ -1,6 +0,0 @@ -import base from '../../jest.config.base.mjs'; - -export default { - ...base, - displayName: 'Gitbeaker Core', -}; diff --git a/packages/core/package.json b/packages/core/package.json index 2e91f97f0..1417af54f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -46,8 +46,8 @@ "build:map": "tsx scripts/generate.ts", "build:self": "tsdown src/index.ts --format esm,cjs --dts --treeshake", "test:types": "tsc", - "test:integration": "jest --maxWorkers=50% test/integration", - "test:unit": "jest --maxWorkers=50% test/unit", + "test:integration": "vitest run --config vitest.config.mjs test/integration", + "test:unit": "vitest run --config vitest.config.mjs test/unit", "lint": "oxlint src test scripts", "lint:fix": "oxlint src test scripts --fix" }, diff --git a/packages/core/scripts/generate.ts b/packages/core/scripts/generate.ts index 8c845734b..276b6b348 100644 --- a/packages/core/scripts/generate.ts +++ b/packages/core/scripts/generate.ts @@ -1,4 +1,3 @@ -import { RequesterType } from '@gitbeaker/requester-utils'; import FS from 'node:fs'; import * as resources from '../src/resources'; import { getParamNames } from './getParamNames'; @@ -32,7 +31,7 @@ export function buildMap() { const { Gitlab, ...directResources } = resources; Object.entries(directResources).forEach(([name, Resource]) => { - const r = new Resource({ token: 'dummey', requesterFn: () => ({}) as RequesterType }); + const r = new (Resource as any)({ token: 'dummy', requesterFn: () => ({}) }); const formattedInstanceMethods = getInstanceMethods(r).map((m) => ({ name: m, args: removeOptionalArg(getParamNames(r[m] as () => unknown)), diff --git a/packages/core/src/resources/PackageRegistry.ts b/packages/core/src/resources/PackageRegistry.ts index 1cdd44857..051ef7b72 100644 --- a/packages/core/src/resources/PackageRegistry.ts +++ b/packages/core/src/resources/PackageRegistry.ts @@ -29,10 +29,10 @@ export class PackageRegistry extends BaseResource packageVersion: string, filename: string, options?: ShowExpanded & Sudo, - ) { + ): Promise> { const { sudo, showExpanded } = options || {}; - return RequestHelper.get<{ message: string }>()( + return RequestHelper.get()( this, endpoint`projects/${projectId}/packages/generic/${packageName}/${packageVersion}/${filename}`, { diff --git a/packages/core/test/__mocks__/RequestHelper.ts b/packages/core/test/__mocks__/RequestHelper.ts index 484b4214b..08d5dbf07 100644 --- a/packages/core/test/__mocks__/RequestHelper.ts +++ b/packages/core/test/__mocks__/RequestHelper.ts @@ -1,4 +1,7 @@ -const mockHelperFn = jest.fn(); +/* eslint-disable vitest/require-mock-type-parameters */ +import { vi } from 'vitest'; + +const mockHelperFn = vi.fn(); export default { RequestHelper: { diff --git a/packages/core/test/integration/map.ts b/packages/core/test/integration/map.ts index 54e0cbe46..7e5849d8a 100644 --- a/packages/core/test/integration/map.ts +++ b/packages/core/test/integration/map.ts @@ -1,3 +1,5 @@ +import { describe, expect, it } from 'vitest'; + describe('API Map', () => { it('should return object representing all resources in JSON format', async () => { const keys = [ @@ -189,7 +191,8 @@ describe('API Map', () => { const map: Record = await import('../../dist/map.json'); - expect(map).toBeObject(); - expect(Object.keys(map)).toIncludeAllMembers(keys); + keys.forEach((key) => { + expect(Object.keys(map)).include(key); + }); }); }); diff --git a/packages/core/test/unit/infrastructure/RequestHelper.ts b/packages/core/test/unit/infrastructure/RequestHelper.ts index f538c10b3..edf03618e 100644 --- a/packages/core/test/unit/infrastructure/RequestHelper.ts +++ b/packages/core/test/unit/infrastructure/RequestHelper.ts @@ -1,3 +1,5 @@ +/* eslint-disable vitest/require-mock-type-parameters */ +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { BaseResource, DefaultRequesterOptions, @@ -99,13 +101,13 @@ function mockedTimedoutRequest( }); } -const mockedRequester: jest.Mocked = { - get: jest.fn(), - post: jest.fn(), - delete: jest.fn(), - put: jest.fn(), - patch: jest.fn(), -}; +const mockedRequester = vi.mocked({ + get: vi.fn(), + post: vi.fn(), + delete: vi.fn(), + put: vi.fn(), + patch: vi.fn(), +}); let service: BaseResource; @@ -397,10 +399,12 @@ describe('RequestHelper.get()', () => { const results = await s.show(); - expect(results).toIncludeSameMembers([ - { id: 3, gravatarEnable: true }, - { id: 4, gravatarEnable: false }, - ]); + expect(results).toEqual( + expect.arrayContaining([ + { id: 3, gravatarEnable: true }, + { id: 4, gravatarEnable: false }, + ]), + ); }); it('should return simple response with default keys without camelize option', async () => { @@ -469,7 +473,7 @@ describe('RequestHelper.get()', () => { }); it('should timeout if a single query takes too long to execute', async () => { - jest.useFakeTimers(); + vi.useFakeTimers(); const timedService = new BaseResource({ requesterFn: () => mockedRequester, @@ -489,15 +493,15 @@ describe('RequestHelper.get()', () => { const promise = RequestHelper.get()(timedService, 'test'); // Fast-forward time to trigger timeout - jest.advanceTimersByTime(60); + vi.advanceTimersByTime(60); await expect(promise).rejects.toThrow('Request Timeout'); - jest.useRealTimers(); + vi.useRealTimers(); }); it('should timeout if multiple queries cumulatively take long to execute', async () => { - jest.useFakeTimers(); + vi.useFakeTimers(); const timedService = new BaseResource({ requesterFn: () => mockedRequester, @@ -517,15 +521,15 @@ describe('RequestHelper.get()', () => { const promise = RequestHelper.get()(timedService, 'test'); // Fast-forward time to trigger timeout - jest.advanceTimersByTime(200); + vi.advanceTimersByTime(200); await expect(promise).rejects.toThrow('Request Timeout'); - jest.useRealTimers(); + vi.useRealTimers(); }); it('should not timeout if a single query takes less time than the specified timeout to execute', async () => { - jest.useFakeTimers(); + vi.useFakeTimers(); const timedService = new BaseResource({ requesterFn: () => mockedRequester, @@ -545,7 +549,7 @@ describe('RequestHelper.get()', () => { const promise = RequestHelper.get()(timedService, 'test'); // Fast-forward time but not enough to trigger timeout - jest.advanceTimersByTime(100); + vi.advanceTimersByTime(100); const response = await promise; @@ -553,7 +557,7 @@ describe('RequestHelper.get()', () => { message: 'pass', }); - jest.useRealTimers(); + vi.useRealTimers(); }); }); @@ -605,7 +609,7 @@ describe('RequestHelper.post()', () => { }); it('should timeout if a single query takes too long to execute', async () => { - jest.useFakeTimers(); + vi.useFakeTimers(); const timedService = new BaseResource({ requesterFn: () => mockedRequester, @@ -625,11 +629,11 @@ describe('RequestHelper.post()', () => { const promise = RequestHelper.post()(timedService, 'test'); // Fast-forward time to trigger timeout - jest.advanceTimersByTime(60); + vi.advanceTimersByTime(60); await expect(promise).rejects.toThrow('Request Timeout'); - jest.useRealTimers(); + vi.useRealTimers(); }); }); @@ -681,7 +685,7 @@ describe('RequestHelper.put()', () => { }); it('should timeout if a single query takes too long to execute', async () => { - jest.useFakeTimers(); + vi.useFakeTimers(); const timedService = new BaseResource({ requesterFn: () => mockedRequester, @@ -701,11 +705,11 @@ describe('RequestHelper.put()', () => { const promise = RequestHelper.put()(timedService, 'test'); // Fast-forward time to trigger timeout - jest.advanceTimersByTime(60); + vi.advanceTimersByTime(60); await expect(promise).rejects.toThrow('Request Timeout'); - jest.useRealTimers(); + vi.useRealTimers(); }); }); @@ -781,7 +785,7 @@ describe('RequestHelper.patch()', () => { }); it('should timeout if a single query takes too long to execute', async () => { - jest.useFakeTimers(); + vi.useFakeTimers(); const timedService = new BaseResource({ requesterFn: () => mockedRequester, @@ -801,11 +805,11 @@ describe('RequestHelper.patch()', () => { const promise = RequestHelper.patch()(timedService, 'test'); // Fast-forward time to trigger timeout - jest.advanceTimersByTime(60); + vi.advanceTimersByTime(60); await expect(promise).rejects.toThrow('Request Timeout'); - jest.useRealTimers(); + vi.useRealTimers(); }); }); @@ -824,7 +828,7 @@ describe('RequestHelper.del()', () => { }); it('should timeout if a single query takes too long to execute', async () => { - jest.useFakeTimers(); + vi.useFakeTimers(); const timedService = new BaseResource({ requesterFn: () => mockedRequester, @@ -844,10 +848,10 @@ describe('RequestHelper.del()', () => { const promise = RequestHelper.del()(timedService, 'test'); // Fast-forward time to trigger timeout - jest.advanceTimersByTime(60); + vi.advanceTimersByTime(60); await expect(promise).rejects.toThrow('Request Timeout'); - jest.useRealTimers(); + vi.useRealTimers(); }); }); diff --git a/packages/core/test/unit/infrastructure/Utils.ts b/packages/core/test/unit/infrastructure/Utils.ts index 1ea566a85..c7844398b 100644 --- a/packages/core/test/unit/infrastructure/Utils.ts +++ b/packages/core/test/unit/infrastructure/Utils.ts @@ -8,6 +8,7 @@ import { reformatObjectOptions, } from '../../../src/infrastructure'; +import { describe, expect, it } from 'vitest'; describe('createFormData', () => { it('should convert object key/values to formdata instance', () => { const data = { a: 5, b: 'test' }; diff --git a/packages/core/test/unit/resources/Agents.ts b/packages/core/test/unit/resources/Agents.ts index 0586def06..7bfaf5f3b 100644 --- a/packages/core/test/unit/resources/Agents.ts +++ b/packages/core/test/unit/resources/Agents.ts @@ -1,16 +1,19 @@ import { Agents } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Agents; beforeEach(() => { service = new Agents({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/AlertManagement.ts b/packages/core/test/unit/resources/AlertManagement.ts index b0c2e15eb..9769b1d56 100644 --- a/packages/core/test/unit/resources/AlertManagement.ts +++ b/packages/core/test/unit/resources/AlertManagement.ts @@ -1,16 +1,19 @@ import { AlertManagement } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: AlertManagement; beforeEach(() => { service = new AlertManagement({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/ApplicationAppearance.ts b/packages/core/test/unit/resources/ApplicationAppearance.ts index f3965ae67..4b960d269 100644 --- a/packages/core/test/unit/resources/ApplicationAppearance.ts +++ b/packages/core/test/unit/resources/ApplicationAppearance.ts @@ -1,16 +1,19 @@ import { ApplicationAppearance } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ApplicationAppearance; beforeEach(() => { service = new ApplicationAppearance({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/ApplicationPlanLimits.ts b/packages/core/test/unit/resources/ApplicationPlanLimits.ts index 89cc9cc8f..ef8b2bd2c 100644 --- a/packages/core/test/unit/resources/ApplicationPlanLimits.ts +++ b/packages/core/test/unit/resources/ApplicationPlanLimits.ts @@ -1,16 +1,19 @@ import { ApplicationPlanLimits } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ApplicationPlanLimits; beforeEach(() => { service = new ApplicationPlanLimits({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/ApplicationSettings.ts b/packages/core/test/unit/resources/ApplicationSettings.ts index 7691aba57..95a51c4da 100644 --- a/packages/core/test/unit/resources/ApplicationSettings.ts +++ b/packages/core/test/unit/resources/ApplicationSettings.ts @@ -1,16 +1,19 @@ import { ApplicationSettings } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ApplicationSettings; beforeEach(() => { service = new ApplicationSettings({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/ApplicationStatistics.ts b/packages/core/test/unit/resources/ApplicationStatistics.ts index d16b5c680..20bfe7df1 100644 --- a/packages/core/test/unit/resources/ApplicationStatistics.ts +++ b/packages/core/test/unit/resources/ApplicationStatistics.ts @@ -1,16 +1,19 @@ import { ApplicationStatistics } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ApplicationStatistics; beforeEach(() => { service = new ApplicationStatistics({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Applications.ts b/packages/core/test/unit/resources/Applications.ts index 021812c0b..989e31ef4 100644 --- a/packages/core/test/unit/resources/Applications.ts +++ b/packages/core/test/unit/resources/Applications.ts @@ -1,16 +1,19 @@ import { Applications } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Applications; beforeEach(() => { service = new Applications({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/AuditEvents.ts b/packages/core/test/unit/resources/AuditEvents.ts index b50f13081..d27034a14 100644 --- a/packages/core/test/unit/resources/AuditEvents.ts +++ b/packages/core/test/unit/resources/AuditEvents.ts @@ -1,16 +1,19 @@ import { AuditEvents } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: AuditEvents; beforeEach(() => { service = new AuditEvents({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Branches.ts b/packages/core/test/unit/resources/Branches.ts index 136da8ad4..ade903663 100644 --- a/packages/core/test/unit/resources/Branches.ts +++ b/packages/core/test/unit/resources/Branches.ts @@ -1,16 +1,19 @@ import { Branches } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Branches; beforeEach(() => { service = new Branches({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/BroadcastMessages.ts b/packages/core/test/unit/resources/BroadcastMessages.ts index dc7092b0c..700d090ff 100644 --- a/packages/core/test/unit/resources/BroadcastMessages.ts +++ b/packages/core/test/unit/resources/BroadcastMessages.ts @@ -1,16 +1,19 @@ import { BroadcastMessages } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: BroadcastMessages; beforeEach(() => { service = new BroadcastMessages({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Commits.ts b/packages/core/test/unit/resources/Commits.ts index ffdc6cc85..590eebd4d 100644 --- a/packages/core/test/unit/resources/Commits.ts +++ b/packages/core/test/unit/resources/Commits.ts @@ -1,16 +1,19 @@ import { Commits } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Commits; beforeEach(() => { service = new Commits({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Conan.ts b/packages/core/test/unit/resources/Conan.ts index 7684174b6..f962b31a6 100644 --- a/packages/core/test/unit/resources/Conan.ts +++ b/packages/core/test/unit/resources/Conan.ts @@ -1,16 +1,19 @@ import { Conan } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Conan; beforeEach(() => { service = new Conan({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/ContainerRegistry.ts b/packages/core/test/unit/resources/ContainerRegistry.ts index 13a484633..d95effdd0 100644 --- a/packages/core/test/unit/resources/ContainerRegistry.ts +++ b/packages/core/test/unit/resources/ContainerRegistry.ts @@ -1,16 +1,19 @@ import { ContainerRegistry } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ContainerRegistry; beforeEach(() => { service = new ContainerRegistry({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/DashboardAnnotations.ts b/packages/core/test/unit/resources/DashboardAnnotations.ts index 5889aed62..6dddf091a 100644 --- a/packages/core/test/unit/resources/DashboardAnnotations.ts +++ b/packages/core/test/unit/resources/DashboardAnnotations.ts @@ -1,16 +1,19 @@ import { DashboardAnnotations } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: DashboardAnnotations; beforeEach(() => { service = new DashboardAnnotations({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); @@ -53,6 +56,8 @@ describe('DashboardAnnotations.create', () => { }); it('should throw an error if environmentId or clusterId isnt passed', () => { - expect(() => service.create('path', 'start', 'desc', {} as any)).toThrow(); + expect(() => service.create('path', 'start', 'desc', {} as any)).toThrow( + 'Missing required argument. Please supply a environmentId or clusterId in the options parameter.', + ); }); }); diff --git a/packages/core/test/unit/resources/DeployKeys.ts b/packages/core/test/unit/resources/DeployKeys.ts index 61cad28f6..c2d65d4b7 100644 --- a/packages/core/test/unit/resources/DeployKeys.ts +++ b/packages/core/test/unit/resources/DeployKeys.ts @@ -1,16 +1,19 @@ import { DeployKeys } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: DeployKeys; beforeEach(() => { service = new DeployKeys({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/DeployTokens.ts b/packages/core/test/unit/resources/DeployTokens.ts index 3f5d11535..577bc445b 100644 --- a/packages/core/test/unit/resources/DeployTokens.ts +++ b/packages/core/test/unit/resources/DeployTokens.ts @@ -1,16 +1,19 @@ import { DeployTokens } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: DeployTokens; beforeEach(() => { service = new DeployTokens({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Deployments.ts b/packages/core/test/unit/resources/Deployments.ts index 37dc96b8f..2f306d005 100644 --- a/packages/core/test/unit/resources/Deployments.ts +++ b/packages/core/test/unit/resources/Deployments.ts @@ -1,16 +1,19 @@ import { Deployments } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Deployments; beforeEach(() => { service = new Deployments({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Environments.ts b/packages/core/test/unit/resources/Environments.ts index 5207dea47..270ecb56b 100644 --- a/packages/core/test/unit/resources/Environments.ts +++ b/packages/core/test/unit/resources/Environments.ts @@ -1,16 +1,19 @@ import { Environments } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Environments; beforeEach(() => { service = new Environments({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/EpicIssues.ts b/packages/core/test/unit/resources/EpicIssues.ts index 312a2559a..033c86308 100644 --- a/packages/core/test/unit/resources/EpicIssues.ts +++ b/packages/core/test/unit/resources/EpicIssues.ts @@ -1,16 +1,19 @@ import { EpicIssues } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: EpicIssues; beforeEach(() => { service = new EpicIssues({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/EpicLinks.ts b/packages/core/test/unit/resources/EpicLinks.ts index 621cae20c..865fdc5fd 100644 --- a/packages/core/test/unit/resources/EpicLinks.ts +++ b/packages/core/test/unit/resources/EpicLinks.ts @@ -1,16 +1,19 @@ import { EpicLinks } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: EpicLinks; beforeEach(() => { service = new EpicLinks({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/EpicStateEvents.ts b/packages/core/test/unit/resources/EpicStateEvents.ts index d655bcde1..2e645fe6e 100644 --- a/packages/core/test/unit/resources/EpicStateEvents.ts +++ b/packages/core/test/unit/resources/EpicStateEvents.ts @@ -1,16 +1,19 @@ import { RequestHelper } from '../../../src/infrastructure'; import { EpicStateEvents } from '../../../src/resources/EpicStateEvents'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: EpicStateEvents; beforeEach(() => { service = new EpicStateEvents({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Epics.ts b/packages/core/test/unit/resources/Epics.ts index dd3db204b..ba9c14ea8 100644 --- a/packages/core/test/unit/resources/Epics.ts +++ b/packages/core/test/unit/resources/Epics.ts @@ -1,16 +1,19 @@ import { Epics } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Epics; beforeEach(() => { service = new Epics({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Events.ts b/packages/core/test/unit/resources/Events.ts index 3b66f84d7..36da70517 100644 --- a/packages/core/test/unit/resources/Events.ts +++ b/packages/core/test/unit/resources/Events.ts @@ -1,16 +1,19 @@ import { Events } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Events; beforeEach(() => { service = new Events({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/ExternalStatusChecks.ts b/packages/core/test/unit/resources/ExternalStatusChecks.ts index ff84e7072..5dea5f339 100644 --- a/packages/core/test/unit/resources/ExternalStatusChecks.ts +++ b/packages/core/test/unit/resources/ExternalStatusChecks.ts @@ -1,16 +1,19 @@ import { ExternalStatusChecks } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ExternalStatusChecks; beforeEach(() => { service = new ExternalStatusChecks({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/FeatureFlagUserLists.ts b/packages/core/test/unit/resources/FeatureFlagUserLists.ts index 7630e6c27..a9298c092 100644 --- a/packages/core/test/unit/resources/FeatureFlagUserLists.ts +++ b/packages/core/test/unit/resources/FeatureFlagUserLists.ts @@ -1,16 +1,19 @@ import { FeatureFlagUserLists } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: FeatureFlagUserLists; beforeEach(() => { service = new FeatureFlagUserLists({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/FeatureFlags.ts b/packages/core/test/unit/resources/FeatureFlags.ts index d91cec031..46800aadb 100644 --- a/packages/core/test/unit/resources/FeatureFlags.ts +++ b/packages/core/test/unit/resources/FeatureFlags.ts @@ -1,16 +1,19 @@ import { FeatureFlags } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: FeatureFlags; beforeEach(() => { service = new FeatureFlags({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/FreezePeriods.ts b/packages/core/test/unit/resources/FreezePeriods.ts index 3fcf1efc8..bc19f816f 100644 --- a/packages/core/test/unit/resources/FreezePeriods.ts +++ b/packages/core/test/unit/resources/FreezePeriods.ts @@ -1,16 +1,19 @@ import { FreezePeriods } from '../../../src'; import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: FreezePeriods; beforeEach(() => { service = new FreezePeriods({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/General.ts b/packages/core/test/unit/resources/General.ts index 8ca4ca964..749d20a70 100644 --- a/packages/core/test/unit/resources/General.ts +++ b/packages/core/test/unit/resources/General.ts @@ -1,10 +1,12 @@ +import { describe, expect, it, vi } from 'vitest'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import * as Resources from '../../../src/resources'; describe('Instantiating services', () => { it('should create a valid service object for each export', () => { Object.entries(Resources).forEach(([k, V]) => { - const service = new V({ - requesterFn: jest.fn(), + const service = new (V as any)({ + requesterFn: vi.fn(), token: 'abcdefg', }); diff --git a/packages/core/test/unit/resources/GeoNodes.ts b/packages/core/test/unit/resources/GeoNodes.ts index 431320d43..3bfde0882 100644 --- a/packages/core/test/unit/resources/GeoNodes.ts +++ b/packages/core/test/unit/resources/GeoNodes.ts @@ -1,16 +1,19 @@ import { GeoNodes } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: GeoNodes; beforeEach(() => { service = new GeoNodes({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/GeoSites.ts b/packages/core/test/unit/resources/GeoSites.ts index 733aaf872..77ee9b091 100644 --- a/packages/core/test/unit/resources/GeoSites.ts +++ b/packages/core/test/unit/resources/GeoSites.ts @@ -1,16 +1,19 @@ import { GeoSites } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: GeoSites; beforeEach(() => { service = new GeoSites({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Gitlab.ts b/packages/core/test/unit/resources/Gitlab.ts index 0287f39d6..3d9739797 100644 --- a/packages/core/test/unit/resources/Gitlab.ts +++ b/packages/core/test/unit/resources/Gitlab.ts @@ -1,14 +1,19 @@ +import { RequesterFn } from '@gitbeaker/requester-utils'; import * as Resources from '../../../src/resources'; +import { describe, expect, it, vi } from 'vitest'; + const { Gitlab, ...resources } = Resources; describe('Instantiating All resources', () => { it('should create a valid gitlab service object using import', () => { const bundle = new Gitlab({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); - expect(Object.keys(bundle)).toIncludeAllMembers(Object.keys(resources)); + Object.keys(resources).forEach((rk) => { + expect(Object.keys(bundle)).include(rk); + }); }); }); diff --git a/packages/core/test/unit/resources/GitlabPages.ts b/packages/core/test/unit/resources/GitlabPages.ts index 4f2331c1e..1f15680cf 100644 --- a/packages/core/test/unit/resources/GitlabPages.ts +++ b/packages/core/test/unit/resources/GitlabPages.ts @@ -1,16 +1,19 @@ import { GitlabPages } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: GitlabPages; beforeEach(() => { service = new GitlabPages({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/GroupEpicBoards.ts b/packages/core/test/unit/resources/GroupEpicBoards.ts index 5c706decf..9ef3c1c65 100644 --- a/packages/core/test/unit/resources/GroupEpicBoards.ts +++ b/packages/core/test/unit/resources/GroupEpicBoards.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { GroupEpicBoards } from '../../../src/resources'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: GroupEpicBoards; beforeEach(() => { service = new GroupEpicBoards({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('GroupEpicBoards.all', () => { diff --git a/packages/core/test/unit/resources/GroupHooks.ts b/packages/core/test/unit/resources/GroupHooks.ts index 4d2fbfdc4..186ce35e6 100644 --- a/packages/core/test/unit/resources/GroupHooks.ts +++ b/packages/core/test/unit/resources/GroupHooks.ts @@ -1,16 +1,19 @@ import { GroupHooks } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: GroupHooks; beforeEach(() => { service = new GroupHooks({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/GroupImportExports.ts b/packages/core/test/unit/resources/GroupImportExports.ts index fddfae6bd..c174e2d5b 100644 --- a/packages/core/test/unit/resources/GroupImportExports.ts +++ b/packages/core/test/unit/resources/GroupImportExports.ts @@ -1,16 +1,19 @@ import { GroupImportExports } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: GroupImportExports; beforeEach(() => { service = new GroupImportExports({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/GroupMembers.ts b/packages/core/test/unit/resources/GroupMembers.ts index 347bf328e..f2fc5dd0c 100644 --- a/packages/core/test/unit/resources/GroupMembers.ts +++ b/packages/core/test/unit/resources/GroupMembers.ts @@ -1,16 +1,19 @@ import { GroupMembers } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: GroupMembers; beforeEach(() => { service = new GroupMembers({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Groups.ts b/packages/core/test/unit/resources/Groups.ts index 3b3332575..574f5e1e2 100644 --- a/packages/core/test/unit/resources/Groups.ts +++ b/packages/core/test/unit/resources/Groups.ts @@ -1,16 +1,19 @@ import { Groups } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Groups; beforeEach(() => { service = new Groups({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/InstanceLevelCICDVariables.ts b/packages/core/test/unit/resources/InstanceLevelCICDVariables.ts index e2950addb..d23ee236a 100644 --- a/packages/core/test/unit/resources/InstanceLevelCICDVariables.ts +++ b/packages/core/test/unit/resources/InstanceLevelCICDVariables.ts @@ -1,16 +1,19 @@ import { InstanceLevelCICDVariables } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: InstanceLevelCICDVariables; beforeEach(() => { service = new InstanceLevelCICDVariables({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/IssueLinks.ts b/packages/core/test/unit/resources/IssueLinks.ts index dc4263d6c..e4c6807f4 100644 --- a/packages/core/test/unit/resources/IssueLinks.ts +++ b/packages/core/test/unit/resources/IssueLinks.ts @@ -1,16 +1,19 @@ import { IssueLinks } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: IssueLinks; beforeEach(() => { service = new IssueLinks({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Issues.ts b/packages/core/test/unit/resources/Issues.ts index a9db3fb8a..364c0931d 100644 --- a/packages/core/test/unit/resources/Issues.ts +++ b/packages/core/test/unit/resources/Issues.ts @@ -1,16 +1,19 @@ import { Issues } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Issues; beforeEach(() => { service = new Issues({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/IssuesStatistics.ts b/packages/core/test/unit/resources/IssuesStatistics.ts index e1476e432..467f263ae 100644 --- a/packages/core/test/unit/resources/IssuesStatistics.ts +++ b/packages/core/test/unit/resources/IssuesStatistics.ts @@ -1,16 +1,19 @@ import { IssuesStatistics } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: IssuesStatistics; beforeEach(() => { service = new IssuesStatistics({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/JobArtifacts.ts b/packages/core/test/unit/resources/JobArtifacts.ts index 49015f48f..21d7c1fec 100644 --- a/packages/core/test/unit/resources/JobArtifacts.ts +++ b/packages/core/test/unit/resources/JobArtifacts.ts @@ -1,16 +1,19 @@ import { JobArtifacts } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: JobArtifacts; beforeEach(() => { service = new JobArtifacts({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Jobs.ts b/packages/core/test/unit/resources/Jobs.ts index db2c1bb0c..97c3b8c05 100644 --- a/packages/core/test/unit/resources/Jobs.ts +++ b/packages/core/test/unit/resources/Jobs.ts @@ -1,16 +1,19 @@ import { type JobScope, Jobs } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Jobs; beforeEach(() => { service = new Jobs({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Keys.ts b/packages/core/test/unit/resources/Keys.ts index 72f8d6044..f3072ac82 100644 --- a/packages/core/test/unit/resources/Keys.ts +++ b/packages/core/test/unit/resources/Keys.ts @@ -1,16 +1,19 @@ import { Keys } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Keys; beforeEach(() => { service = new Keys({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); @@ -37,6 +40,8 @@ describe('Keys.show', () => { }); it('should throw an error if keyId or fingerprint is not passed', () => { - expect(() => service.show({} as any)).toThrow(); + expect(() => service.show({} as any)).toThrow( + 'Missing required argument. Please supply a keyId or fingerprint in the options parameter.', + ); }); }); diff --git a/packages/core/test/unit/resources/License.ts b/packages/core/test/unit/resources/License.ts index f3fec8a71..721d3395d 100644 --- a/packages/core/test/unit/resources/License.ts +++ b/packages/core/test/unit/resources/License.ts @@ -1,16 +1,19 @@ import { License } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: License; beforeEach(() => { service = new License({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/MergeRequestApprovals.ts b/packages/core/test/unit/resources/MergeRequestApprovals.ts index e91279e7e..de699f05d 100644 --- a/packages/core/test/unit/resources/MergeRequestApprovals.ts +++ b/packages/core/test/unit/resources/MergeRequestApprovals.ts @@ -1,19 +1,22 @@ import { MergeRequestApprovals } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: MergeRequestApprovals; beforeEach(() => { service = new MergeRequestApprovals({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('MergeRequestApprovals.showConfiguration', () => { diff --git a/packages/core/test/unit/resources/MergeRequestDiscussions.ts b/packages/core/test/unit/resources/MergeRequestDiscussions.ts index b4ad1121a..688f59a05 100644 --- a/packages/core/test/unit/resources/MergeRequestDiscussions.ts +++ b/packages/core/test/unit/resources/MergeRequestDiscussions.ts @@ -1,16 +1,19 @@ import { MergeRequestDiscussions } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: MergeRequestDiscussions; beforeEach(() => { service = new MergeRequestDiscussions({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/MergeRequestStateEvents.ts b/packages/core/test/unit/resources/MergeRequestStateEvents.ts index 4adb26324..f18305c2a 100644 --- a/packages/core/test/unit/resources/MergeRequestStateEvents.ts +++ b/packages/core/test/unit/resources/MergeRequestStateEvents.ts @@ -1,16 +1,19 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { MergeRequestStateEvents } from '../../../src/resources/MergeRequestStateEvents'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: MergeRequestStateEvents; beforeEach(() => { service = new MergeRequestStateEvents({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/MergeRequests.ts b/packages/core/test/unit/resources/MergeRequests.ts index 4d9cc28be..46dddc368 100644 --- a/packages/core/test/unit/resources/MergeRequests.ts +++ b/packages/core/test/unit/resources/MergeRequests.ts @@ -1,19 +1,22 @@ import { MergeRequests } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: MergeRequests; beforeEach(() => { service = new MergeRequests({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('MergeRequests.accept', () => { diff --git a/packages/core/test/unit/resources/NotificationSettings.ts b/packages/core/test/unit/resources/NotificationSettings.ts index 90d995f24..bdd0c9db3 100644 --- a/packages/core/test/unit/resources/NotificationSettings.ts +++ b/packages/core/test/unit/resources/NotificationSettings.ts @@ -1,16 +1,19 @@ import { NotificationSettings } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: NotificationSettings; beforeEach(() => { service = new NotificationSettings({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/PackageRegistry.ts b/packages/core/test/unit/resources/PackageRegistry.ts index 79a323ea1..44fc2f311 100644 --- a/packages/core/test/unit/resources/PackageRegistry.ts +++ b/packages/core/test/unit/resources/PackageRegistry.ts @@ -1,16 +1,19 @@ import { PackageRegistry } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: PackageRegistry; beforeEach(() => { service = new PackageRegistry({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Packages.ts b/packages/core/test/unit/resources/Packages.ts index d87795ef8..e39501c57 100644 --- a/packages/core/test/unit/resources/Packages.ts +++ b/packages/core/test/unit/resources/Packages.ts @@ -1,16 +1,19 @@ import { Packages } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Packages; beforeEach(() => { service = new Packages({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/PagesDomains.ts b/packages/core/test/unit/resources/PagesDomains.ts index e642c36f6..0f7b784b1 100644 --- a/packages/core/test/unit/resources/PagesDomains.ts +++ b/packages/core/test/unit/resources/PagesDomains.ts @@ -1,16 +1,19 @@ import { PagesDomains } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: PagesDomains; beforeEach(() => { service = new PagesDomains({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/PipelineScheduleVariables.ts b/packages/core/test/unit/resources/PipelineScheduleVariables.ts index 080337056..66aa974d3 100644 --- a/packages/core/test/unit/resources/PipelineScheduleVariables.ts +++ b/packages/core/test/unit/resources/PipelineScheduleVariables.ts @@ -1,16 +1,19 @@ import { PipelineScheduleVariables } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: PipelineScheduleVariables; beforeEach(() => { service = new PipelineScheduleVariables({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/PipelineSchedules.ts b/packages/core/test/unit/resources/PipelineSchedules.ts index ea06dc4ff..c091e39c3 100644 --- a/packages/core/test/unit/resources/PipelineSchedules.ts +++ b/packages/core/test/unit/resources/PipelineSchedules.ts @@ -1,16 +1,19 @@ import { PipelineSchedules } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: PipelineSchedules; beforeEach(() => { service = new PipelineSchedules({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/PipelineTriggerTokens.ts b/packages/core/test/unit/resources/PipelineTriggerTokens.ts index 930c3e303..377b278f9 100644 --- a/packages/core/test/unit/resources/PipelineTriggerTokens.ts +++ b/packages/core/test/unit/resources/PipelineTriggerTokens.ts @@ -1,16 +1,19 @@ import { PipelineTriggerTokens } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: PipelineTriggerTokens; beforeEach(() => { service = new PipelineTriggerTokens({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Pipelines.ts b/packages/core/test/unit/resources/Pipelines.ts index f14d0ac28..54b94e7d0 100644 --- a/packages/core/test/unit/resources/Pipelines.ts +++ b/packages/core/test/unit/resources/Pipelines.ts @@ -1,16 +1,19 @@ import { Pipelines } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Pipelines; beforeEach(() => { service = new Pipelines({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/ProjectHooks.ts b/packages/core/test/unit/resources/ProjectHooks.ts index 79bde3d1d..e79174ae8 100644 --- a/packages/core/test/unit/resources/ProjectHooks.ts +++ b/packages/core/test/unit/resources/ProjectHooks.ts @@ -1,16 +1,19 @@ import { ProjectHooks } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ProjectHooks; beforeEach(() => { service = new ProjectHooks({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/ProjectImportExports.ts b/packages/core/test/unit/resources/ProjectImportExports.ts index 057d7e985..c4809796a 100644 --- a/packages/core/test/unit/resources/ProjectImportExports.ts +++ b/packages/core/test/unit/resources/ProjectImportExports.ts @@ -1,16 +1,19 @@ import { ProjectImportExports } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ProjectImportExports; beforeEach(() => { service = new ProjectImportExports({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/ProjectJobTokenScopes.ts b/packages/core/test/unit/resources/ProjectJobTokenScopes.ts index 6f0fd5898..401d96fad 100644 --- a/packages/core/test/unit/resources/ProjectJobTokenScopes.ts +++ b/packages/core/test/unit/resources/ProjectJobTokenScopes.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ProjectJobTokenScopes } from '../../../src/resources/ProjectJobTokenScopes'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ProjectJobTokenScopes; beforeEach(() => { service = new ProjectJobTokenScopes({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ProjectJobTokenScopes service', () => { diff --git a/packages/core/test/unit/resources/ProjectMarkdownUploads.ts b/packages/core/test/unit/resources/ProjectMarkdownUploads.ts index 81e942742..4d988cf1e 100644 --- a/packages/core/test/unit/resources/ProjectMarkdownUploads.ts +++ b/packages/core/test/unit/resources/ProjectMarkdownUploads.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ProjectMarkdownUploads } from '../../../src/resources'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ProjectMarkdownUploads; beforeEach(() => { service = new ProjectMarkdownUploads({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ProjectMarkdownUploads service', () => { diff --git a/packages/core/test/unit/resources/ProjectReleases.ts b/packages/core/test/unit/resources/ProjectReleases.ts index be0f34fc0..a009d15d9 100644 --- a/packages/core/test/unit/resources/ProjectReleases.ts +++ b/packages/core/test/unit/resources/ProjectReleases.ts @@ -1,16 +1,19 @@ import { ProjectReleases } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ProjectReleases; beforeEach(() => { service = new ProjectReleases({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/ProjectSnippets.ts b/packages/core/test/unit/resources/ProjectSnippets.ts index bc4db0e8c..2ac9bf982 100644 --- a/packages/core/test/unit/resources/ProjectSnippets.ts +++ b/packages/core/test/unit/resources/ProjectSnippets.ts @@ -1,16 +1,19 @@ import { ProjectSnippets } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ProjectSnippets; beforeEach(() => { service = new ProjectSnippets({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/ProjectTerraform.ts b/packages/core/test/unit/resources/ProjectTerraform.ts index 8785adab0..3757ff464 100644 --- a/packages/core/test/unit/resources/ProjectTerraform.ts +++ b/packages/core/test/unit/resources/ProjectTerraform.ts @@ -1,16 +1,19 @@ import { ProjectTerraformState } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ProjectTerraformState; beforeEach(() => { service = new ProjectTerraformState({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/ProjectWikis.ts b/packages/core/test/unit/resources/ProjectWikis.ts index 273a5144d..da2f61d2e 100644 --- a/packages/core/test/unit/resources/ProjectWikis.ts +++ b/packages/core/test/unit/resources/ProjectWikis.ts @@ -1,16 +1,19 @@ import { ProjectWikis } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ProjectWikis; beforeEach(() => { service = new ProjectWikis({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Projects.ts b/packages/core/test/unit/resources/Projects.ts index 95d865bbb..fc719b986 100644 --- a/packages/core/test/unit/resources/Projects.ts +++ b/packages/core/test/unit/resources/Projects.ts @@ -1,16 +1,19 @@ import { Projects } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Projects; beforeEach(() => { service = new Projects({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/ProtectedBranches.ts b/packages/core/test/unit/resources/ProtectedBranches.ts index e1713b643..8e6cdc773 100644 --- a/packages/core/test/unit/resources/ProtectedBranches.ts +++ b/packages/core/test/unit/resources/ProtectedBranches.ts @@ -1,16 +1,19 @@ import { ProtectedBranches } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ProtectedBranches; beforeEach(() => { service = new ProtectedBranches({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); @@ -56,7 +59,7 @@ describe('ProtectedBranches.create', () => { describe('ProtectedBranches.protect', () => { it('should request POST /projects/:id/protected_branches', async () => { - const spy = jest.spyOn(service, 'create'); + const spy = vi.spyOn(service, 'create'); await service.protect(1, 'name', { allowForcePush: true }); @@ -113,7 +116,7 @@ describe('ProtectedBranches.remove', () => { describe('ProtectedBranches.unprotect', () => { it('should request DEL /projects/:id/protected_branches/:branch_name without options', async () => { - const spy = jest.spyOn(service, 'remove'); + const spy = vi.spyOn(service, 'remove'); await service.unprotect(1, 'name'); @@ -121,7 +124,7 @@ describe('ProtectedBranches.unprotect', () => { }); it('should request DEL /projects/:id/protected_branches/:branch_name', async () => { - const spy = jest.spyOn(service, 'remove'); + const spy = vi.spyOn(service, 'remove'); await service.unprotect(1, 'name', { sudo: 1 }); diff --git a/packages/core/test/unit/resources/ProtectedTags.ts b/packages/core/test/unit/resources/ProtectedTags.ts index 62391d3cc..70e53dd4f 100644 --- a/packages/core/test/unit/resources/ProtectedTags.ts +++ b/packages/core/test/unit/resources/ProtectedTags.ts @@ -1,16 +1,19 @@ import { AccessLevel, ProtectedTags } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ProtectedTags; beforeEach(() => { service = new ProtectedTags({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); @@ -45,7 +48,7 @@ describe('ProtectedTags.create', () => { describe('ProtectedTags.protect', () => { it('should request POST /projects/:id/protected_tags', async () => { - const spy = jest.spyOn(service, 'create'); + const spy = vi.spyOn(service, 'create'); await service.protect(1, 'name', { createAccessLevel: AccessLevel.DEVELOPER }); @@ -105,7 +108,7 @@ describe('ProtectedTags.remove', () => { describe('ProtectedTags.unprotect', () => { it('should request DEL /projects/:id/protected_tags/:tag_name without options', async () => { - const spy = jest.spyOn(service, 'remove'); + const spy = vi.spyOn(service, 'remove'); await service.unprotect(1, 'name'); @@ -113,7 +116,7 @@ describe('ProtectedTags.unprotect', () => { }); it('should request DEL /projects/:id/protected_tags/:tag_name', async () => { - const spy = jest.spyOn(service, 'remove'); + const spy = vi.spyOn(service, 'remove'); await service.unprotect(1, 'name', { sudo: 1 }); diff --git a/packages/core/test/unit/resources/PyPI.ts b/packages/core/test/unit/resources/PyPI.ts index 9c8d8589a..f5ec97509 100644 --- a/packages/core/test/unit/resources/PyPI.ts +++ b/packages/core/test/unit/resources/PyPI.ts @@ -1,16 +1,19 @@ import { PyPI } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: PyPI; beforeEach(() => { service = new PyPI({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); @@ -37,7 +40,9 @@ describe('PyPI.downloadPackageFile', () => { }); it('should throw an error if groupId or projectId is not passed', () => { - expect(() => service.downloadPackageFile('sha', 'id', {} as any)).toThrow(); + expect(() => service.downloadPackageFile('sha', 'id', {} as any)).toThrow( + 'Missing required argument. Please supply a projectId or groupId in the options parameter.', + ); }); }); @@ -63,7 +68,9 @@ describe('PyPI.showPackageDescriptor', () => { }); it('should throw an error if groupId or projectId is not passed', () => { - expect(() => service.showPackageDescriptor('name', {} as any)).toThrow(); + expect(() => service.showPackageDescriptor('name', {} as any)).toThrow( + 'Missing required argument. Please supply a projectId or groupId in the options parameter.', + ); }); }); diff --git a/packages/core/test/unit/resources/ReleaseLinks.ts b/packages/core/test/unit/resources/ReleaseLinks.ts index b1d4481d7..5cd25da15 100644 --- a/packages/core/test/unit/resources/ReleaseLinks.ts +++ b/packages/core/test/unit/resources/ReleaseLinks.ts @@ -1,16 +1,19 @@ import { ReleaseLinks } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ReleaseLinks; beforeEach(() => { service = new ReleaseLinks({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Repositories.ts b/packages/core/test/unit/resources/Repositories.ts index 15a40cc23..b33648bba 100644 --- a/packages/core/test/unit/resources/Repositories.ts +++ b/packages/core/test/unit/resources/Repositories.ts @@ -1,16 +1,19 @@ import { Repositories } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Repositories; beforeEach(() => { service = new Repositories({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/RepositoryFiles.ts b/packages/core/test/unit/resources/RepositoryFiles.ts index ef57a29fe..2e462f978 100644 --- a/packages/core/test/unit/resources/RepositoryFiles.ts +++ b/packages/core/test/unit/resources/RepositoryFiles.ts @@ -1,16 +1,19 @@ import { RepositoryFiles } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: RepositoryFiles; beforeEach(() => { service = new RepositoryFiles({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/RepositorySubmodules.ts b/packages/core/test/unit/resources/RepositorySubmodules.ts index 9209622f7..67ea34e56 100644 --- a/packages/core/test/unit/resources/RepositorySubmodules.ts +++ b/packages/core/test/unit/resources/RepositorySubmodules.ts @@ -1,16 +1,19 @@ import { RepositorySubmodules } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: RepositorySubmodules; beforeEach(() => { service = new RepositorySubmodules({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Runners.ts b/packages/core/test/unit/resources/Runners.ts index fdab947ac..4d49aabb0 100644 --- a/packages/core/test/unit/resources/Runners.ts +++ b/packages/core/test/unit/resources/Runners.ts @@ -1,16 +1,19 @@ import { Runners } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Runners; beforeEach(() => { service = new Runners({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Search.ts b/packages/core/test/unit/resources/Search.ts index fe8be9ebf..d3a4353c8 100644 --- a/packages/core/test/unit/resources/Search.ts +++ b/packages/core/test/unit/resources/Search.ts @@ -1,16 +1,19 @@ import { Search } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Search; beforeEach(() => { service = new Search({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Snippets.ts b/packages/core/test/unit/resources/Snippets.ts index ec30869fb..482b470eb 100644 --- a/packages/core/test/unit/resources/Snippets.ts +++ b/packages/core/test/unit/resources/Snippets.ts @@ -1,16 +1,19 @@ import { Snippets } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Snippets; beforeEach(() => { service = new Snippets({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/SystemHooks.ts b/packages/core/test/unit/resources/SystemHooks.ts index 5c8f8a6ad..c646c65ff 100644 --- a/packages/core/test/unit/resources/SystemHooks.ts +++ b/packages/core/test/unit/resources/SystemHooks.ts @@ -1,16 +1,19 @@ import { SystemHooks } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: SystemHooks; beforeEach(() => { service = new SystemHooks({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Tags.ts b/packages/core/test/unit/resources/Tags.ts index 43bbf2c49..a271b5fc9 100644 --- a/packages/core/test/unit/resources/Tags.ts +++ b/packages/core/test/unit/resources/Tags.ts @@ -1,16 +1,19 @@ import { Tags } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Tags; beforeEach(() => { service = new Tags({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/TodoLists.ts b/packages/core/test/unit/resources/TodoLists.ts index 24f3fb5b4..7569c7ff3 100644 --- a/packages/core/test/unit/resources/TodoLists.ts +++ b/packages/core/test/unit/resources/TodoLists.ts @@ -1,16 +1,19 @@ import { TodoLists } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: TodoLists; beforeEach(() => { service = new TodoLists({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Topics.ts b/packages/core/test/unit/resources/Topics.ts index e5cd0fc19..4587ee72b 100644 --- a/packages/core/test/unit/resources/Topics.ts +++ b/packages/core/test/unit/resources/Topics.ts @@ -1,16 +1,19 @@ import { Topics } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Topics; beforeEach(() => { service = new Topics({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/UserEmails.ts b/packages/core/test/unit/resources/UserEmails.ts index 1af01aed1..67e1ea9a0 100644 --- a/packages/core/test/unit/resources/UserEmails.ts +++ b/packages/core/test/unit/resources/UserEmails.ts @@ -1,16 +1,19 @@ import { UserEmails } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: UserEmails; beforeEach(() => { service = new UserEmails({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/UserGPGKeys.ts b/packages/core/test/unit/resources/UserGPGKeys.ts index 1386046e5..ccac9559f 100644 --- a/packages/core/test/unit/resources/UserGPGKeys.ts +++ b/packages/core/test/unit/resources/UserGPGKeys.ts @@ -1,16 +1,19 @@ import { UserGPGKeys } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: UserGPGKeys; beforeEach(() => { service = new UserGPGKeys({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/UserSSHKeys.ts b/packages/core/test/unit/resources/UserSSHKeys.ts index 932d32d57..ed7876a1a 100644 --- a/packages/core/test/unit/resources/UserSSHKeys.ts +++ b/packages/core/test/unit/resources/UserSSHKeys.ts @@ -1,16 +1,19 @@ import { UserSSHKeys } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: UserSSHKeys; beforeEach(() => { service = new UserSSHKeys({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/resources/Users.ts b/packages/core/test/unit/resources/Users.ts index 0f43b0775..a73a98a46 100644 --- a/packages/core/test/unit/resources/Users.ts +++ b/packages/core/test/unit/resources/Users.ts @@ -1,16 +1,19 @@ import { Users } from '../../../src'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../../../src/infrastructure'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: Users; beforeEach(() => { service = new Users({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/templates/ResourceAccessRequests.ts b/packages/core/test/unit/templates/ResourceAccessRequests.ts index 5518a8767..556269cb2 100644 --- a/packages/core/test/unit/templates/ResourceAccessRequests.ts +++ b/packages/core/test/unit/templates/ResourceAccessRequests.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceAccessRequests } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceAccessRequests; beforeEach(() => { service = new ResourceAccessRequests('resource', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceAccessRequests service', () => { diff --git a/packages/core/test/unit/templates/ResourceAccessTokens.ts b/packages/core/test/unit/templates/ResourceAccessTokens.ts index 39bc81939..462302f04 100644 --- a/packages/core/test/unit/templates/ResourceAccessTokens.ts +++ b/packages/core/test/unit/templates/ResourceAccessTokens.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceAccessTokens } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceAccessTokens; beforeEach(() => { service = new ResourceAccessTokens('resource', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceAccessTokens service', () => { diff --git a/packages/core/test/unit/templates/ResourceAwardEmojis.ts b/packages/core/test/unit/templates/ResourceAwardEmojis.ts index bb2d67abd..d0331c748 100644 --- a/packages/core/test/unit/templates/ResourceAwardEmojis.ts +++ b/packages/core/test/unit/templates/ResourceAwardEmojis.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceAwardEmojis } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceAwardEmojis; beforeEach(() => { service = new ResourceAwardEmojis('resource1', 'resource2', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceAwardEmojis service', () => { diff --git a/packages/core/test/unit/templates/ResourceBadges.ts b/packages/core/test/unit/templates/ResourceBadges.ts index 0b415d35f..5d4458ecd 100644 --- a/packages/core/test/unit/templates/ResourceBadges.ts +++ b/packages/core/test/unit/templates/ResourceBadges.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceBadges } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceBadges; beforeEach(() => { service = new ResourceBadges('resource', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceBadges service', () => { diff --git a/packages/core/test/unit/templates/ResourceCustomAttributes.ts b/packages/core/test/unit/templates/ResourceCustomAttributes.ts index d1b4b400b..9813952e1 100644 --- a/packages/core/test/unit/templates/ResourceCustomAttributes.ts +++ b/packages/core/test/unit/templates/ResourceCustomAttributes.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceCustomAttributes } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceCustomAttributes; beforeEach(() => { service = new ResourceCustomAttributes('resource', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceCustomAttributes service', () => { diff --git a/packages/core/test/unit/templates/ResourceDiscussions.ts b/packages/core/test/unit/templates/ResourceDiscussions.ts index 87631e401..d311d5f72 100644 --- a/packages/core/test/unit/templates/ResourceDiscussions.ts +++ b/packages/core/test/unit/templates/ResourceDiscussions.ts @@ -1,16 +1,19 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceDiscussions } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceDiscussions; beforeEach(() => { service = new ResourceDiscussions('resource1', 'resource2', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); diff --git a/packages/core/test/unit/templates/ResourceIssueBoards.ts b/packages/core/test/unit/templates/ResourceIssueBoards.ts index a4520f80a..efee2c3f4 100644 --- a/packages/core/test/unit/templates/ResourceIssueBoards.ts +++ b/packages/core/test/unit/templates/ResourceIssueBoards.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceIssueBoards } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceIssueBoards; beforeEach(() => { service = new ResourceIssueBoards('resource', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceIssueBoards service', () => { diff --git a/packages/core/test/unit/templates/ResourceLabels.ts b/packages/core/test/unit/templates/ResourceLabels.ts index 841c23b28..48bf39a37 100644 --- a/packages/core/test/unit/templates/ResourceLabels.ts +++ b/packages/core/test/unit/templates/ResourceLabels.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceLabels } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceLabels; beforeEach(() => { service = new ResourceLabels('resource', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceLabels service', () => { diff --git a/packages/core/test/unit/templates/ResourceMarkdownUploads.ts b/packages/core/test/unit/templates/ResourceMarkdownUploads.ts index 9ce5a4865..7b2c5639a 100644 --- a/packages/core/test/unit/templates/ResourceMarkdownUploads.ts +++ b/packages/core/test/unit/templates/ResourceMarkdownUploads.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceMarkdownUploads } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceMarkdownUploads; beforeEach(() => { service = new ResourceMarkdownUploads('resource', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceMarkdownUploads service', () => { diff --git a/packages/core/test/unit/templates/ResourceMembers.ts b/packages/core/test/unit/templates/ResourceMembers.ts index 0831eae09..f3a699336 100644 --- a/packages/core/test/unit/templates/ResourceMembers.ts +++ b/packages/core/test/unit/templates/ResourceMembers.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceMembers } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceMembers; beforeEach(() => { service = new ResourceMembers('resource', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceMembers service', () => { diff --git a/packages/core/test/unit/templates/ResourceMilestones.ts b/packages/core/test/unit/templates/ResourceMilestones.ts index 2db93acc5..9fc0535b2 100644 --- a/packages/core/test/unit/templates/ResourceMilestones.ts +++ b/packages/core/test/unit/templates/ResourceMilestones.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceMilestones } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceMilestones; beforeEach(() => { service = new ResourceMilestones('resource', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceMilestones service', () => { diff --git a/packages/core/test/unit/templates/ResourceNoteAwardEmojis.ts b/packages/core/test/unit/templates/ResourceNoteAwardEmojis.ts index bb5c69ac1..728e1e42a 100644 --- a/packages/core/test/unit/templates/ResourceNoteAwardEmojis.ts +++ b/packages/core/test/unit/templates/ResourceNoteAwardEmojis.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceNoteAwardEmojis } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceNoteAwardEmojis; beforeEach(() => { service = new ResourceNoteAwardEmojis('resource', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceNoteAwardEmojis service', () => { diff --git a/packages/core/test/unit/templates/ResourceNotes.ts b/packages/core/test/unit/templates/ResourceNotes.ts index 5b2a2a3e5..797851161 100644 --- a/packages/core/test/unit/templates/ResourceNotes.ts +++ b/packages/core/test/unit/templates/ResourceNotes.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceNotes } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceNotes; beforeEach(() => { service = new ResourceNotes('resource1', 'resource2', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceNotes service', () => { diff --git a/packages/core/test/unit/templates/ResourceProtectedEnvironments.ts b/packages/core/test/unit/templates/ResourceProtectedEnvironments.ts index a9e3047a8..6962f9fbb 100644 --- a/packages/core/test/unit/templates/ResourceProtectedEnvironments.ts +++ b/packages/core/test/unit/templates/ResourceProtectedEnvironments.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceProtectedEnvironments } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceProtectedEnvironments; beforeEach(() => { service = new ResourceProtectedEnvironments('resource', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceProtectedEnvironments service', () => { diff --git a/packages/core/test/unit/templates/ResourceTemplates.ts b/packages/core/test/unit/templates/ResourceTemplates.ts index 6eb33d9ee..81be3638d 100644 --- a/packages/core/test/unit/templates/ResourceTemplates.ts +++ b/packages/core/test/unit/templates/ResourceTemplates.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceTemplates } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceTemplates; beforeEach(() => { service = new ResourceTemplates('resource', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceTemplates service', () => { diff --git a/packages/core/test/unit/templates/ResourceVariables.ts b/packages/core/test/unit/templates/ResourceVariables.ts index 5a66ab4c8..c4a67c14f 100644 --- a/packages/core/test/unit/templates/ResourceVariables.ts +++ b/packages/core/test/unit/templates/ResourceVariables.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceVariables } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceVariables; beforeEach(() => { service = new ResourceVariables('resource', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceVariables service', () => { diff --git a/packages/core/test/unit/templates/ResourceWeightEvents.ts b/packages/core/test/unit/templates/ResourceWeightEvents.ts index 10dc872c4..aa6ef83e5 100644 --- a/packages/core/test/unit/templates/ResourceWeightEvents.ts +++ b/packages/core/test/unit/templates/ResourceWeightEvents.ts @@ -1,22 +1,25 @@ import { RequestHelper } from '../../../src/infrastructure'; +import { RequesterFn } from '@gitbeaker/requester-utils'; import { ResourceWeightEvents } from '../../../src/templates'; -jest.mock( - '../../../src/infrastructure/RequestHelper', - () => jest.requireActual('../../__mocks__/RequestHelper').default, -); +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../../../src/infrastructure/RequestHelper', async () => { + const mock = await vi.importActual('../../__mocks__/RequestHelper'); + return (mock as any).default; +}); let service: ResourceWeightEvents; beforeEach(() => { service = new ResourceWeightEvents('resource', 'resource2', { - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'abcdefg', }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('Instantiating ResourceWeightEvents service', () => { diff --git a/packages/core/vitest.config.mjs b/packages/core/vitest.config.mjs new file mode 100644 index 000000000..c1a88befa --- /dev/null +++ b/packages/core/vitest.config.mjs @@ -0,0 +1,11 @@ +import { defineProject, mergeConfig } from 'vitest/config'; +import base from '../../vitest.config.base.mjs'; + +export default mergeConfig( + base, + defineProject({ + test: { + name: 'Gitbeaker Core', + }, + }), +); diff --git a/packages/requester-utils/jest.config.mjs b/packages/requester-utils/jest.config.mjs deleted file mode 100644 index c0409f2d1..000000000 --- a/packages/requester-utils/jest.config.mjs +++ /dev/null @@ -1,6 +0,0 @@ -import base from '../../jest.config.base.mjs'; - -export default { - ...base, - displayName: 'Gitbeaker Requester Utils', -}; diff --git a/packages/requester-utils/package.json b/packages/requester-utils/package.json index c7edfbd89..b9d472954 100644 --- a/packages/requester-utils/package.json +++ b/packages/requester-utils/package.json @@ -42,7 +42,7 @@ "scripts": { "build": "tsdown src/index.ts --format esm,cjs --dts --treeshake", "test:types": "tsc", - "test:unit": "jest --maxWorkers=50% test/unit", + "test:unit": "vitest run --config vitest.config.mjs test/unit", "lint": "oxlint src test scripts", "lint:fix": "oxlint src test scripts --fix" }, diff --git a/packages/requester-utils/src/BaseResource.ts b/packages/requester-utils/src/BaseResource.ts index 58d19dc90..a944592fd 100644 --- a/packages/requester-utils/src/BaseResource.ts +++ b/packages/requester-utils/src/BaseResource.ts @@ -1,10 +1,10 @@ import type { Agent } from 'http'; -import { RateLimitOptions, RequesterType, ResourceOptions } from './RequesterUtils'; +import { RateLimitOptions, RequesterFn, RequesterType } from './RequesterUtils'; export interface RootResourceOptions { // TODO: Remove optional prop from here by retyping the presetResourceArguments // Initial efforts ran into an omit typing issue - requesterFn?: (resourceOptions: ResourceOptions) => RequesterType; + requesterFn?: RequesterFn; host?: string; prefixUrl?: string; camelize?: C; @@ -111,8 +111,11 @@ export class BaseResource { rateLimitDuration = 60, rateLimits = DEFAULT_RATE_LIMITS, ...tokens - }: BaseResourceOptions) { - if (!requesterFn) throw new ReferenceError('requesterFn must be passed'); + }: BaseResourceOptions = {}) { + if (!requesterFn) + throw new ReferenceError( + 'Missing requesterFn: BaseResource requires a function to handle HTTP requests', + ); this.url = [host, 'api', 'v4', prefixUrl].join('/'); this.headers = {}; diff --git a/packages/requester-utils/src/RequesterUtils.ts b/packages/requester-utils/src/RequesterUtils.ts index fded47361..9666ea15a 100644 --- a/packages/requester-utils/src/RequesterUtils.ts +++ b/packages/requester-utils/src/RequesterUtils.ts @@ -13,6 +13,8 @@ export type RateLimiters = Record; +export type RequesterFn = (resourceOptions: ResourceOptions) => RequesterType; + export type ResponseBodyType = | Record[] | string[] diff --git a/packages/requester-utils/test/unit/BaseResource.ts b/packages/requester-utils/test/unit/BaseResource.ts index 1f389e06b..b50fcda5d 100644 --- a/packages/requester-utils/test/unit/BaseResource.ts +++ b/packages/requester-utils/test/unit/BaseResource.ts @@ -1,16 +1,22 @@ +import { describe, expect, it, vi } from 'vitest'; import { BaseResource } from '../../src/BaseResource'; -import { createRequesterFn } from '../../src/RequesterUtils'; +import { + type OptionsHandlerFn, + type RequestHandlerFn, + type RequesterFn, + createRequesterFn, +} from '../../src/RequesterUtils'; describe('Creation of BaseResource instance', () => { it('should default host to https://gitlab.com/api/v4/', () => { - const service = new BaseResource({ requesterFn: jest.fn(), token: 'test' }); + const service = new BaseResource({ requesterFn: vi.fn(), token: 'test' }); expect(service.url).toBe('https://gitlab.com/api/v4/'); }); it('should append api and version number to host when using a custom host url', () => { const service = new BaseResource({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), host: 'https://testing.com', token: 'test', }); @@ -19,25 +25,29 @@ describe('Creation of BaseResource instance', () => { }); it('should allow a camelize option to set', () => { - const service = new BaseResource({ token: '123', requesterFn: jest.fn(), camelize: true }); + const service = new BaseResource({ + token: '123', + requesterFn: vi.fn(), + camelize: true, + }); expect(service.camelize).toBe(true); }); it('should accept a string oauthToken', async () => { const service = new BaseResource({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), oauthToken: '1234', }); - expect(service.authHeaders.authorization).toBeFunction(); + expect(service.authHeaders.authorization).toBeInstanceOf(Function); await expect(service.authHeaders.authorization()).resolves.toBe('Bearer 1234'); }); it('should accept a dynamic oauthToken that returns a promise', async () => { const service = new BaseResource({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), oauthToken: () => new Promise((res) => { setTimeout(() => { @@ -46,67 +56,67 @@ describe('Creation of BaseResource instance', () => { }), }); - expect(service.authHeaders.authorization).toBeFunction(); + expect(service.authHeaders.authorization).toBeInstanceOf(Function); await expect(service.authHeaders.authorization()).resolves.toBe('Bearer 1234'); }); it('should use the Oauth Token when a given both a Private Token and a Oauth Token', async () => { const service = new BaseResource({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: 'test', oauthToken: () => Promise.resolve('1234'), }); expect(Object.keys(service.authHeaders).length).toBe(1); - expect(service.authHeaders.authorization).toBeFunction(); + expect(service.authHeaders.authorization).toBeInstanceOf(Function); await expect(service.authHeaders.authorization()).resolves.toBe('Bearer 1234'); }); it('should accept a string token (private-token)', async () => { const service = new BaseResource({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: '1234', }); - expect(service.authHeaders['private-token']).toBeFunction(); + expect(service.authHeaders['private-token']).toBeInstanceOf(Function); await expect(service.authHeaders['private-token']()).resolves.toBe('1234'); }); it('should accept a function token (private-token) that returns a promise', async () => { const service = new BaseResource({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), token: () => Promise.resolve('1234'), }); - expect(service.authHeaders['private-token']).toBeFunction(); + expect(service.authHeaders['private-token']).toBeInstanceOf(Function); await expect(service.authHeaders['private-token']()).resolves.toBe('1234'); }); it('should accept a string jobToken (job-token)', async () => { const service = new BaseResource({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), jobToken: '1234', }); - expect(service.authHeaders['job-token']).toBeFunction(); + expect(service.authHeaders['job-token']).toBeInstanceOf(Function); await expect(service.authHeaders['job-token']()).resolves.toBe('1234'); }); it('should accept a function jobToken (job-token) that returns a promise', async () => { const service = new BaseResource({ - requesterFn: jest.fn(), + requesterFn: vi.fn(), jobToken: () => Promise.resolve('1234'), }); - expect(service.authHeaders['job-token']).toBeFunction(); + expect(service.authHeaders['job-token']).toBeInstanceOf(Function); await expect(service.authHeaders['job-token']()).resolves.toBe('1234'); }); it('should set the X-Profile-Token header if the profileToken option is given', () => { const service = new BaseResource({ token: '123', - requesterFn: jest.fn(), + requesterFn: vi.fn(), profileToken: 'abcd', }); @@ -116,7 +126,7 @@ describe('Creation of BaseResource instance', () => { it('should defult the profileMode option to execution', () => { const service = new BaseResource({ token: '123', - requesterFn: jest.fn(), + requesterFn: vi.fn(), profileToken: 'abcd', }); @@ -127,7 +137,7 @@ describe('Creation of BaseResource instance', () => { it('should set the X-Profile-Token and X-Profile-Mode header if the profileToken and profileMode options are given', () => { const service = new BaseResource({ token: '123', - requesterFn: jest.fn(), + requesterFn: vi.fn(), profileToken: 'abcd', profileMode: 'memory', }); @@ -137,7 +147,7 @@ describe('Creation of BaseResource instance', () => { }); it('should default the queryTimeout to 300s', () => { - const service = new BaseResource({ token: '123', requesterFn: jest.fn() }); + const service = new BaseResource({ token: '123', requesterFn: vi.fn() }); expect(service.queryTimeout).toBe(300000); }); @@ -145,7 +155,7 @@ describe('Creation of BaseResource instance', () => { it('should allow for the queryTimeout to be set', () => { const service = new BaseResource({ token: '123', - requesterFn: jest.fn(), + requesterFn: vi.fn(), queryTimeout: 10, }); @@ -153,13 +163,21 @@ describe('Creation of BaseResource instance', () => { }); it('should allow for the sudo user to be set', () => { - const service = new BaseResource({ token: '123', requesterFn: jest.fn(), sudo: 'test' }); + const service = new BaseResource({ + token: '123', + requesterFn: vi.fn(), + sudo: 'test', + }); expect(service.headers.Sudo).toBe('test'); }); it('should allow for prefix resource urls to be set', () => { - const service = new BaseResource({ token: '123', requesterFn: jest.fn(), prefixUrl: 'test' }); + const service = new BaseResource({ + token: '123', + requesterFn: vi.fn(), + prefixUrl: 'test', + }); expect(service.url).toBe('https://gitlab.com/api/v4/test'); }); @@ -167,7 +185,7 @@ describe('Creation of BaseResource instance', () => { it('should allow for prefix resource urls to be set without host defaults', () => { const service = new BaseResource({ token: '123', - requesterFn: jest.fn(), + requesterFn: vi.fn(), host: 'https://fakehost.com', prefixUrl: 'test', }); @@ -179,17 +197,17 @@ describe('Creation of BaseResource instance', () => { expect(() => { // @ts-ignore new BaseResource(); - }).toThrow(); + }).toThrow('Missing requesterFn: BaseResource requires a function to handle HTTP requests'); expect(() => { // @ts-ignore new BaseResource({}); - }).toThrow(); + }).toThrow('Missing requesterFn: BaseResource requires a function to handle HTTP requests'); }); it('should set the internal requester based on the required requesterFn parameter', async () => { - const requestHandler = jest.fn(); - const optionsHandler = jest.fn(); + const requestHandler = vi.fn(); + const optionsHandler = vi.fn(); const requesterFn = createRequesterFn(optionsHandler, requestHandler); const serviceA = new BaseResource({ token: '123', requesterFn, prefixUrl: 'test' }); diff --git a/packages/requester-utils/test/unit/GitbeakerError.ts b/packages/requester-utils/test/unit/GitbeakerError.ts index 8966c517e..6327ffd72 100644 --- a/packages/requester-utils/test/unit/GitbeakerError.ts +++ b/packages/requester-utils/test/unit/GitbeakerError.ts @@ -3,6 +3,7 @@ import { GitbeakerRetryError, GitbeakerTimeoutError, } from '../../src/GitbeakerError'; +import { describe, expect, it } from 'vitest'; describe('GitbeakerRequestError', () => { it('should create a custom error with the name "GitbeakerRequestError"', () => { diff --git a/packages/requester-utils/test/unit/RequesterUtils.ts b/packages/requester-utils/test/unit/RequesterUtils.ts index 707b8fdaf..e1c6e6f20 100644 --- a/packages/requester-utils/test/unit/RequesterUtils.ts +++ b/packages/requester-utils/test/unit/RequesterUtils.ts @@ -1,5 +1,9 @@ +import { describe, expect, it, vi } from 'vitest'; import { RateLimiterMemory } from 'rate-limiter-flexible'; import { + type OptionsHandlerFn, + type RateLimiterFn, + type RequestHandlerFn, RequestOptions, ResourceOptions, createRateLimiters, @@ -10,7 +14,7 @@ import { presetResourceArguments, } from '../../src/RequesterUtils'; -jest.mock('rate-limiter-flexible'); +vi.mock('rate-limiter-flexible'); const methods = ['get', 'put', 'patch', 'delete', 'post']; @@ -112,8 +116,8 @@ describe('defaultOptionsHandler', () => { }); describe('createInstance', () => { - const requestHandler = jest.fn(); - const optionsHandler = jest.fn(() => Promise.resolve({} as RequestOptions)); + const requestHandler = vi.fn(); + const optionsHandler = vi.fn(() => Promise.resolve({} as RequestOptions)); const serviceOptions: ResourceOptions = { headers: { test: '5' }, authHeaders: { @@ -123,16 +127,16 @@ describe('createInstance', () => { }; it('should have a createInstance function', () => { - expect(createRequesterFn).toBeFunction(); + expect(createRequesterFn).toBeInstanceOf(Function); }); it('should return an object with function names equal to those in the methods array when the createInstance function is called', () => { const requester = createRequesterFn(optionsHandler, requestHandler)(serviceOptions); - expect(requester).toContainAllKeys(methods); + expect(Object.keys(requester)).toEqual(expect.arrayContaining(methods)); methods.forEach((m) => { - expect(requester[m]).toBeFunction(); + expect(requester[m]).toBeInstanceOf(Function); }); }); @@ -208,10 +212,10 @@ describe('createInstance', () => { expect(requestHandler).toHaveBeenCalledWith(testEndpoint, { rateLimiters: { - '*': expect.toBeFunction(), + '*': expect.any(Function), 'projects/*/test': { method: 'GET', - limit: expect.toBeFunction(), + limit: expect.any(Function), }, }, }); @@ -232,10 +236,10 @@ describe('createRateLimiters', () => { expect(RateLimiterMemory).toHaveBeenCalledWith({ points: 40, duration: 60 }); expect(limiters).toStrictEqual({ - '*': expect.toBeFunction(), + '*': expect.any(Function), 'projects/*/test': { method: 'GET', - limit: expect.toBeFunction(), + limit: expect.any(Function), }, }); }); @@ -256,10 +260,10 @@ describe('createRateLimiters', () => { expect(RateLimiterMemory).toHaveBeenCalledWith({ points: 40, duration: 30 }); expect(limiters).toStrictEqual({ - '*': expect.toBeFunction(), + '*': expect.any(Function), 'projects/*/test': { method: 'GET', - limit: expect.toBeFunction(), + limit: expect.any(Function), }, }); }); @@ -329,7 +333,7 @@ describe('formatQuery', () => { describe('getMatchingRateLimiter', () => { it('should default the method to GET if not passed', async () => { - const rateLimiter = jest.fn(); + const rateLimiter = vi.fn(); const matchingRateLimiter = getMatchingRateLimiter('endpoint', { '*': { method: 'GET', limit: rateLimiter }, }); @@ -340,7 +344,7 @@ describe('getMatchingRateLimiter', () => { }); it('should uppercase method for matching', async () => { - const rateLimiter = jest.fn(); + const rateLimiter = vi.fn(); const matchingRateLimiter = getMatchingRateLimiter('endpoint', { '*': { method: 'get', limit: rateLimiter }, }); @@ -357,9 +361,9 @@ describe('getMatchingRateLimiter', () => { }); it('should return the most specific rate limit', async () => { - const rateLimiter = jest.fn(); + const rateLimiter = vi.fn(); const matchingRateLimiter = getMatchingRateLimiter('endpoint/testing', { - '*': jest.fn(), + '*': vi.fn(), 'endpoint/testing*': rateLimiter, }); @@ -369,13 +373,13 @@ describe('getMatchingRateLimiter', () => { }); it('should return a default rate limit of 3000 rpm if nothing matches', () => { - getMatchingRateLimiter('endpoint', { someurl: jest.fn() }); + getMatchingRateLimiter('endpoint', { someurl: vi.fn() }); expect(RateLimiterMemory).toHaveBeenCalledWith({ points: 3000, duration: 60 }); }); it('should handle expanded rate limit options with a particular method and limit', async () => { - const rateLimiter = jest.fn(); + const rateLimiter = vi.fn(); const matchingRateLimiter = getMatchingRateLimiter('endpoint', { '*': { method: 'get', limit: rateLimiter }, }); @@ -386,7 +390,7 @@ describe('getMatchingRateLimiter', () => { }); it('should handle simple rate limit options with a particular limit', async () => { - const rateLimiter = jest.fn(); + const rateLimiter = vi.fn(); const matchingRateLimiter = getMatchingRateLimiter('endpoint/testing', { '**': rateLimiter }); await matchingRateLimiter(); diff --git a/packages/requester-utils/vitest.config.mjs b/packages/requester-utils/vitest.config.mjs new file mode 100644 index 000000000..8e337cfce --- /dev/null +++ b/packages/requester-utils/vitest.config.mjs @@ -0,0 +1,11 @@ +import { defineProject, mergeConfig } from 'vitest/config'; +import base from '../../vitest.config.base.mjs'; + +export default mergeConfig( + base, + defineProject({ + test: { + name: 'Gitbeaker Requester Utils', + }, + }), +); diff --git a/packages/rest/jest.config.mjs b/packages/rest/jest.config.mjs deleted file mode 100644 index 712c15575..000000000 --- a/packages/rest/jest.config.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import base from '../../jest.config.base.mjs'; - -export default { - ...base, - testTimeout: 10000, - displayName: 'Gitbeaker Rest', -}; diff --git a/packages/rest/package.json b/packages/rest/package.json index 476c6271d..8db5b7f3a 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -45,11 +45,11 @@ "build": "tsdown src/index.ts --format esm,cjs --dts --treeshake", "test:types": "tsc", "test:e2e:browser": "playwright test --project=e2e", - "test:e2e:nodejs": "jest --maxWorkers=50% test/e2e/nodejs", + "test:e2e:nodejs": "vitest run --config vitest.config.mjs test/e2e/nodejs", "test:e2e": "pnpm test:e2e:browser && pnpm test:e2e:nodejs", "test:integration:browser": "playwright test --project=integration", "test:integration": "pnpm test:integration:browser", - "test:unit": "jest --maxWorkers=50% test/unit", + "test:unit": "vitest run --config vitest.config.mjs test/unit", "lint": "oxlint src test scripts", "lint:fix": "oxlint src test scripts --fix" }, diff --git a/packages/rest/test/e2e/nodejs/resources/Issues.ts b/packages/rest/test/e2e/nodejs/resources/Issues.ts index 28a04c25e..e56a90ef8 100644 --- a/packages/rest/test/e2e/nodejs/resources/Issues.ts +++ b/packages/rest/test/e2e/nodejs/resources/Issues.ts @@ -1,5 +1,7 @@ import { Issues, Projects } from '../../../../src'; +import { beforeAll, describe, expect, it } from 'vitest'; + const { GITLAB_PERSONAL_ACCESS_TOKEN = '', GITLAB_URL = '', @@ -45,7 +47,7 @@ describe('Issues.all', () => { pagination: 'keyset', }); - expect(projects).toBeArray(); + expect(projects).toBeInstanceOf(Array); expect(projects).toHaveLength(10); }); }); diff --git a/packages/rest/test/e2e/nodejs/resources/Lint.ts b/packages/rest/test/e2e/nodejs/resources/Lint.ts index a1094db29..17cf1e16d 100644 --- a/packages/rest/test/e2e/nodejs/resources/Lint.ts +++ b/packages/rest/test/e2e/nodejs/resources/Lint.ts @@ -1,3 +1,5 @@ +import { beforeEach, describe, expect, it } from 'vitest'; + import { Lint, Projects } from '../../../../src'; const { GITLAB_PERSONAL_ACCESS_TOKEN = '', GITLAB_URL = '', TEST_ID = Date.now() } = process.env; @@ -27,7 +29,9 @@ describe('Lint.lint', () => { const result = await lintAPI.lint(project.id, yaml); - expect(result).toBeObject(); - expect(result).toContainKeys(['valid', 'merged_yaml']); + expect(result).toMatchObject({ + valid: true, + merged_yaml: '', + }); }); }); diff --git a/packages/rest/test/e2e/nodejs/resources/PackageRegistry.ts b/packages/rest/test/e2e/nodejs/resources/PackageRegistry.ts index 7f2c6531c..ab8d1618b 100644 --- a/packages/rest/test/e2e/nodejs/resources/PackageRegistry.ts +++ b/packages/rest/test/e2e/nodejs/resources/PackageRegistry.ts @@ -1,3 +1,5 @@ +import { beforeAll, describe, expect, it } from 'vitest'; + import { PackageRegistry, Projects } from '../../../../src'; const { @@ -47,11 +49,11 @@ describe('PackageRegistry.publish and download', () => { filename, ); - expect(downloadedFile).toBeDefined(); + expect(downloadedFile).toBeInstanceOf(Blob); + + const arrayBuffer = await downloadedFile.arrayBuffer(); + const downloadedData = new Uint8Array(arrayBuffer); - if (downloadedFile instanceof Blob) { - const downloadedData = new Uint8Array(await downloadedFile.arrayBuffer()); - expect(downloadedData).toEqual(originalData); - } + expect(downloadedData).toEqual(originalData); }); }); diff --git a/packages/rest/test/e2e/nodejs/resources/Projects.ts b/packages/rest/test/e2e/nodejs/resources/Projects.ts index 539e7e31a..edb15a04c 100644 --- a/packages/rest/test/e2e/nodejs/resources/Projects.ts +++ b/packages/rest/test/e2e/nodejs/resources/Projects.ts @@ -1,5 +1,7 @@ import { Projects } from '../../../../src'; +import { beforeAll, beforeEach, describe, expect, it } from 'vitest'; + const { GITLAB_PERSONAL_ACCESS_TOKEN = '', GITLAB_URL = '', TEST_ID = Date.now() } = process.env; let service: InstanceType>; @@ -16,7 +18,6 @@ describe('Projects.create', () => { const name = `Project Creation Integration Test - NODEJS ${TEST_ID}`; const p = await service.create({ name }); - expect(p).toBeObject(); expect(p.name).toEqual(name); }); }); @@ -41,7 +42,7 @@ describe('Projects.all', () => { simple: true, }); - expect(projects).toBeArray(); + expect(projects).toBeInstanceOf(Array); expect(projects).toHaveLength(10); }); @@ -75,6 +76,11 @@ describe('Projects.uploadForReference', () => { filename: 'testfile.txt', }); - expect(results).toContainKeys(['alt', 'url', 'full_path', 'markdown']); + expect(results).toMatchObject({ + alt: '', + url: '', + full_path: '', + markdown: '', + }); }); }); diff --git a/packages/rest/test/e2e/nodejs/resources/Repositories.ts b/packages/rest/test/e2e/nodejs/resources/Repositories.ts index b991ac85d..83ea6fdfd 100644 --- a/packages/rest/test/e2e/nodejs/resources/Repositories.ts +++ b/packages/rest/test/e2e/nodejs/resources/Repositories.ts @@ -1,5 +1,7 @@ import { Projects, Repositories, RepositoryFiles } from '../../../../src'; +import { beforeAll, beforeEach, describe, expect, it } from 'vitest'; + const { GITLAB_PERSONAL_ACCESS_TOKEN = '', GITLAB_URL = '', TEST_ID = Date.now() } = process.env; const CREDENTIALS = { diff --git a/packages/rest/test/unit/Requester.ts b/packages/rest/test/unit/Requester.ts index d4a838e58..121ba0677 100644 --- a/packages/rest/test/unit/Requester.ts +++ b/packages/rest/test/unit/Requester.ts @@ -4,12 +4,13 @@ import { GitbeakerRetryError, GitbeakerTimeoutError, } from '@gitbeaker/requester-utils'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { defaultRequestHandler, processBody } from '../../src/Requester'; import { getError } from '../utils/index'; -global.fetch = jest.fn(); +const mockFetch = vi.fn(); -const mockFetch = global.fetch as jest.Mock; +vi.stubGlobal('fetch', mockFetch); beforeEach(() => { mockFetch.mockReset(); @@ -377,7 +378,7 @@ describe('defaultRequestHandler', () => { }); it('should return a default error if retries are unsuccessful', async () => { - jest.useFakeTimers(); + vi.useFakeTimers(); const responseContent = { error: 'msg' }; const fakeReturnValue = Promise.resolve( @@ -399,7 +400,7 @@ describe('defaultRequestHandler', () => { ); // Fast-forward through all retry delays - await jest.runAllTimersAsync(); + await vi.runAllTimersAsync(); const error = await errorPromise; @@ -408,7 +409,7 @@ describe('defaultRequestHandler', () => { ); expect(error).toBeInstanceOf(GitbeakerRetryError); - jest.useRealTimers(); + vi.useRealTimers(); }); it('should return correct properties if request is valid', async () => { @@ -480,9 +481,11 @@ describe('defaultRequestHandler', () => { expect(mockFetch).toHaveBeenCalledTimes(1); - const [calledRequest] = mockFetch.mock.calls[0]; - expect(calledRequest).toBeInstanceOf(Request); - expect(calledRequest.url).toBe('http://test.com/testurl'); + expect(mockFetch).toHaveBeenCalledWith( + expect.objectContaining({ + url: 'http://test.com/testurl', + }), + ); }); it('should handle a searchParams correctly', async () => { @@ -504,9 +507,11 @@ describe('defaultRequestHandler', () => { expect(mockFetch).toHaveBeenCalledTimes(1); - const [calledRequest] = mockFetch.mock.calls[0]; - expect(calledRequest).toBeInstanceOf(Request); - expect(calledRequest.url).toBe('http://test.com/testurl/123?test=4'); + expect(mockFetch).toHaveBeenCalledWith( + expect.objectContaining({ + url: 'http://test.com/testurl/123?test=4', + }), + ); }); it('should add same-origin mode for repository/archive endpoint', async () => { @@ -526,10 +531,12 @@ describe('defaultRequestHandler', () => { expect(mockFetch).toHaveBeenCalledTimes(1); - const [calledRequest] = mockFetch.mock.calls[0]; - expect(calledRequest).toBeInstanceOf(Request); - expect(calledRequest.url).toBe('http://test.com/repository/archive'); - expect(calledRequest.mode).toBe('same-origin'); + expect(mockFetch).toHaveBeenCalledWith( + expect.objectContaining({ + url: 'http://test.com/repository/archive', + mode: 'same-origin', + }), + ); }); it('should use default mode (cors) for non-repository/archive endpoints', async () => { @@ -549,9 +556,11 @@ describe('defaultRequestHandler', () => { expect(mockFetch).toHaveBeenCalledTimes(1); - const [calledRequest] = mockFetch.mock.calls[0]; - expect(calledRequest).toBeInstanceOf(Request); - expect(calledRequest.url).toBe('http://test.com/test/something'); - expect(calledRequest.mode).toBe('cors'); + expect(mockFetch).toHaveBeenCalledWith( + expect.objectContaining({ + url: 'http://test.com/test/something', + mode: 'cors', + }), + ); }); }); diff --git a/packages/rest/test/unit/index.ts b/packages/rest/test/unit/index.ts index 84ce06400..9b8eae77f 100644 --- a/packages/rest/test/unit/index.ts +++ b/packages/rest/test/unit/index.ts @@ -1,8 +1,12 @@ import * as coreResources from '@gitbeaker/core'; import * as resources from '../../src'; +import { describe, expect, it } from 'vitest'; + describe('Import', () => { it('should re-export all resources from core', () => { - expect(Object.keys(resources)).toIncludeAllMembers(Object.keys(coreResources)); + Object.keys(coreResources).forEach((rk) => { + expect(Object.keys(resources)).include(rk); + }); }); }); diff --git a/packages/rest/vitest.config.mjs b/packages/rest/vitest.config.mjs new file mode 100644 index 000000000..2125c6cd0 --- /dev/null +++ b/packages/rest/vitest.config.mjs @@ -0,0 +1,12 @@ +import { defineProject, mergeConfig } from 'vitest/config'; +import base from '../../vitest.config.base.mjs'; + +export default mergeConfig( + base, + defineProject({ + test: { + name: 'Gitbeaker REST', + testTimeout: 10000, + }, + }), +); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 78b915f33..b27633935 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,18 +26,15 @@ importers: '@codecov/bundle-analyzer': specifier: ^1.9.1 version: 1.9.1 - '@jest/globals': - specifier: ^30.3.0 - version: 30.3.0 - '@swc/core': - specifier: ^1.15.24 - version: 1.15.24 - '@swc/jest': - specifier: ^0.2.39 - version: 0.2.39(@swc/core@1.15.24) - '@types/jest': - specifier: ^30.0.0 - version: 30.0.0 + '@vitest/coverage-v8': + specifier: ^4.0.10 + version: 4.1.5(vitest@4.1.5) + '@vitest/eslint-plugin': + specifier: ^1.4.3 + version: 1.6.16(eslint@10.2.1)(typescript@5.9.3)(vitest@4.1.5) + '@vitest/ui': + specifier: ^4.0.10 + version: 4.1.5(vitest@4.1.5) all-contributors-cli: specifier: github:jdalrymple/all-contributors-cli#dist version: https://codeload.github.com/jdalrymple/all-contributors-cli/tar.gz/7ecc1a0f36b91fe5e3face34e5217f3db2b0359b(@types/node@24.12.2) @@ -47,20 +44,11 @@ importers: husky: specifier: ^9.1.7 version: 9.1.7 - jest: - specifier: ^30.3.0 - version: 30.3.0(@types/node@24.12.2) - jest-extended: - specifier: ^7.0.0 - version: 7.0.0(jest@30.3.0(@types/node@24.12.2))(typescript@5.9.3) - jest-junit: - specifier: ^16.0.0 - version: 16.0.0 lint-staged: - specifier: ^16.4.0 + specifier: ^16.2.6 version: 16.4.0 nx: - specifier: ^22.6.4 + specifier: ^22.0.3 version: 22.6.4(@swc/core@1.15.24) oxlint: specifier: ^1.58.0 @@ -70,10 +58,13 @@ importers: version: 3.6.2 tsdown: specifier: ^0.21.7 - version: 0.21.7(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(synckit@0.11.12)(typescript@5.9.3) + version: 0.21.7(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(synckit@0.11.12)(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 + vitest: + specifier: ^4.1.5 + version: 4.1.5(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(@vitest/ui@4.1.5)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.27.2)(tsx@4.21.0)(yaml@2.8.2)) packages/cli: dependencies: @@ -93,12 +84,18 @@ importers: specifier: ^2.0.1 version: 2.0.1 devDependencies: + '@vitest/expect': + specifier: ^4.0.10 + version: 4.1.5 tsdown: specifier: ^0.21.7 - version: 0.21.7(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(synckit@0.11.12)(typescript@5.9.3) + version: 0.21.7(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(synckit@0.11.12)(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 + vitest-extended: + specifier: ^0.0.1 + version: 0.0.1(vitest@4.1.5) packages/core: dependencies: @@ -117,7 +114,7 @@ importers: version: 24.12.2 tsdown: specifier: ^0.21.7 - version: 0.21.7(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(synckit@0.11.12)(typescript@5.9.3) + version: 0.21.7(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(synckit@0.11.12)(typescript@5.9.3) tsx: specifier: ^4.21.0 version: 4.21.0 @@ -145,7 +142,7 @@ importers: version: 24.12.2 tsdown: specifier: ^0.21.7 - version: 0.21.7(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(synckit@0.11.12)(typescript@5.9.3) + version: 0.21.7(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(synckit@0.11.12)(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -167,7 +164,7 @@ importers: version: 24.12.2 tsdown: specifier: ^0.21.7 - version: 0.21.7(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(synckit@0.11.12)(typescript@5.9.3) + version: 0.21.7(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(synckit@0.11.12)(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -189,48 +186,10 @@ packages: '@actions/io@1.1.3': resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - '@babel/code-frame@7.29.0': - resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.29.0': - resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.29.0': - resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.29.1': - resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} - engines: {node: '>=6.9.0'} - '@babel/generator@8.0.0-rc.3': resolution: {integrity: sha512-em37/13/nR320G4jab/nIIHZgc2Wz2y/D39lxnTyxB4/D/omPQncl/lSdlnJY1OhQcRGugTSIF2l/69o31C9dA==} engines: {node: ^20.19.0 || >=22.12.0} - '@babel/helper-compilation-targets@7.28.6': - resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.28.6': - resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.28.6': - resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-plugin-utils@7.28.6': - resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -247,14 +206,6 @@ packages: resolution: {integrity: sha512-8AWCJ2VJJyDFlGBep5GpaaQ9AAaE/FjAcrqI7jyssYhtL7WGV0DOKpJsQqM037xDbpRLHXsY8TwU7zDma7coOw==} engines: {node: ^20.19.0 || >=22.12.0} - '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.29.2': - resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} - engines: {node: '>=6.9.0'} - '@babel/parser@7.29.2': resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} @@ -265,109 +216,10 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - '@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-import-attributes@7.28.6': - resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} - engines: {node: '>=6.9.0'} - 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.28.6': - resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} - 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'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/runtime@7.28.6': resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} - '@babel/template@7.28.6': - resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.29.0': - resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} - engines: {node: '>=6.9.0'} - '@babel/types@7.29.0': resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} @@ -376,8 +228,9 @@ packages: resolution: {integrity: sha512-mOm5ZrYmphGfqVWoH5YYMTITb3cDXsFgmvFlvkvWDMsR9X8RFnt7a0Wb6yNIdoFsiMO9WjYLq+U/FMtqIYAF8Q==} engines: {node: ^20.19.0 || >=22.12.0} - '@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'} '@changesets/apply-release-plan@7.1.0': resolution: {integrity: sha512-yq8ML3YS7koKQ/9bk1PqO0HMzApIFNwjlwCnwFEXMzNe8NpzeeYYKCmnhWJGkN8g7E51MnWaSbqRcTcdIxUgnQ==} @@ -450,15 +303,24 @@ packages: resolution: {integrity: sha512-dt3ic7gMswz4p/qdkYPVJwXlLiLsz55rBBn2I7mr0HTG8pCoLRqnANJIwo5WrqGBZgPyVSMPBqBra6VxLWfDyA==} engines: {node: '>=18.0.0'} + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + '@emnapi/core@1.8.1': resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.8.1': resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@esbuild/aix-ppc64@0.27.2': resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} engines: {node: '>=18'} @@ -615,6 +477,36 @@ packages: cpu: [x64] os: [win32] + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.23.5': + resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/config-helpers@0.5.5': + resolution: {integrity: sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/core@1.2.1': + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/object-schema@3.0.5': + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/plugin-kit@0.7.1': + resolution: {integrity: sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@gitbeaker/core@43.8.0': resolution: {integrity: sha512-H+LfKuf4dExBinb79c+CXViRBvTVQNf5BYLNSizm2SiqdED5JruhKX88payefleY0szp7G/mySlFSXPyGRH1dQ==} engines: {node: '>=18.20.0'} @@ -627,6 +519,26 @@ packages: resolution: {integrity: sha512-xxqsNsUXaFang9b2e/NTIgqUeuUlifA2Opy1mOVqTDuJZZNIOTgUNyziwBJoleBhMC0XuvY3JNVMWthufcVjRw==} engines: {node: '>=18.20.0'} + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + '@inquirer/ansi@1.0.2': resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} @@ -761,114 +673,25 @@ packages: '@types/node': optional: true - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@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@30.3.0': - resolution: {integrity: sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/core@30.3.0': - resolution: {integrity: sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/create-cache-key-function@30.3.0': - resolution: {integrity: sha512-hTupmOWylzeyqbMNeSNi7ZDprpjrcroAOOG+qCEW66st3+Z5RnYHVYkUt+zjIcLmrTUi2lPY79hJz8mB3L2oXQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/diff-sequences@30.0.1': - resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/diff-sequences@30.3.0': resolution: {integrity: sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/environment@30.3.0': - resolution: {integrity: sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/expect-utils@30.3.0': - resolution: {integrity: sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/expect@30.3.0': - resolution: {integrity: sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/fake-timers@30.3.0': - resolution: {integrity: sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/get-type@30.1.0': resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/globals@30.3.0': - resolution: {integrity: sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/pattern@30.0.1': - resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/reporters@30.3.0': - resolution: {integrity: sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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/schemas@30.0.5': resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/snapshot-utils@30.3.0': - resolution: {integrity: sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/source-map@30.0.1': - resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/test-result@30.3.0': - resolution: {integrity: sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/test-sequencer@30.3.0': - resolution: {integrity: sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/transform@30.3.0': - resolution: {integrity: sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/types@30.3.0': - resolution: {integrity: sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -888,9 +711,6 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@napi-rs/wasm-runtime@0.2.12': - resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@napi-rs/wasm-runtime@0.2.4': resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} @@ -900,6 +720,12 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 + '@napi-rs/wasm-runtime@1.1.4': + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1017,6 +843,9 @@ packages: '@oxc-project/types@0.122.0': resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} + '@oxc-project/types@0.127.0': + resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} + '@oxlint/binding-android-arm-eabi@1.58.0': resolution: {integrity: sha512-1T7UN3SsWWxpWyWGn1cT3ASNJOo+pI3eUkmEl7HgtowapcV8kslYpFQcYn431VuxghXakPNlbjRwhqmR37PFOg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1139,10 +968,6 @@ packages: cpu: [x64] os: [win32] - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - '@pkgr/core@0.2.9': resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -1152,6 +977,9 @@ packages: engines: {node: '>=18'} hasBin: true + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} @@ -1161,30 +989,60 @@ packages: cpu: [arm64] os: [android] + '@rolldown/binding-android-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': resolution: {integrity: sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] + '@rolldown/binding-darwin-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@rolldown/binding-darwin-x64@1.0.0-rc.12': resolution: {integrity: sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] + '@rolldown/binding-darwin-x64@1.0.0-rc.17': + resolution: {integrity: sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': resolution: {integrity: sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] + '@rolldown/binding-freebsd-x64@1.0.0-rc.17': + resolution: {integrity: sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': resolution: {integrity: sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': + resolution: {integrity: sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': resolution: {integrity: sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1192,6 +1050,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': resolution: {integrity: sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1199,6 +1064,13 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': + resolution: {integrity: sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': resolution: {integrity: sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1206,6 +1078,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': resolution: {integrity: sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1213,6 +1092,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': resolution: {integrity: sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1220,6 +1106,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': resolution: {integrity: sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1227,40 +1120,73 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': + resolution: {integrity: sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': resolution: {integrity: sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] + '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': resolution: {integrity: sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==} engines: {node: '>=14.0.0'} cpu: [wasm32] + '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': + resolution: {integrity: sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': resolution: {integrity: sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': + resolution: {integrity: sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': resolution: {integrity: sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': + resolution: {integrity: sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.0-rc.12': resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==} + '@rolldown/pluginutils@1.0.0-rc.17': + resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} + + '@sinclair/typebox@0.27.10': + resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} + '@sinclair/typebox@0.34.47': resolution: {integrity: sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==} - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - - '@sinonjs/fake-timers@15.3.0': - resolution: {integrity: sha512-m2xozxSfCIxjDdvbhIWazlP2i2aha/iUmbl94alpsIbd3iLTfeXgfBVbwyWogB6l++istyGZqamgA/EcqYf+Bg==} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} '@swc/core-darwin-arm64@1.15.24': resolution: {integrity: sha512-uM5ZGfFXjtvtJ+fe448PVBEbn/CSxS3UAyLj3O9xOqKIWy3S6hPTXSPbszxkSsGDYKi+YFhzAsR4r/eXLxEQ0g==} @@ -1352,12 +1278,6 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/jest@0.2.39': - resolution: {integrity: sha512-eyokjOwYd0Q8RnMHri+8/FS1HIrIUKK/sRrFp8c1dThUOfNeCWbLmBP1P5VsKdvmkd25JaH+OKYwEYiAYg9YAA==} - engines: {npm: '>= 7.0.0'} - peerDependencies: - '@swc/core': '*' - '@swc/types@0.1.26': resolution: {integrity: sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==} @@ -1367,156 +1287,125 @@ packages: '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@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/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@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@30.0.0': - resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} - '@types/jsesc@2.5.1': resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} '@types/node@24.12.2': resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==} - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + '@typescript-eslint/project-service@8.59.0': + resolution: {integrity: sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + '@typescript-eslint/scope-manager@8.59.0': + resolution: {integrity: sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@types/yargs@17.0.35': - resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + '@typescript-eslint/tsconfig-utils@8.59.0': + resolution: {integrity: sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@typescript-eslint/types@8.59.0': + resolution: {integrity: sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@unrs/resolver-binding-android-arm-eabi@1.11.1': - resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} - cpu: [arm] - os: [android] + '@typescript-eslint/typescript-estree@8.59.0': + resolution: {integrity: sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' - '@unrs/resolver-binding-android-arm64@1.11.1': - resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} - cpu: [arm64] - os: [android] + '@typescript-eslint/utils@8.59.0': + resolution: {integrity: sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@unrs/resolver-binding-darwin-arm64@1.11.1': - resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} - cpu: [arm64] - os: [darwin] + '@typescript-eslint/visitor-keys@8.59.0': + resolution: {integrity: sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@unrs/resolver-binding-darwin-x64@1.11.1': - resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} - cpu: [x64] - os: [darwin] + '@vitest/coverage-v8@4.1.5': + resolution: {integrity: sha512-38C0/Ddb7HcRG0Z4/DUem8x57d2p9jYgp18mkaYswEOQBGsI1CG4f/hjm0ZCeaJfWhSZ4k7jgs29V1Zom7Ki9A==} + peerDependencies: + '@vitest/browser': 4.1.5 + vitest: 4.1.5 + peerDependenciesMeta: + '@vitest/browser': + optional: true - '@unrs/resolver-binding-freebsd-x64@1.11.1': - resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} - cpu: [x64] - os: [freebsd] + '@vitest/eslint-plugin@1.6.16': + resolution: {integrity: sha512-2pBN1F1JXq6zTSaYC58CMJa7pGxXIRsLfOioeZM4cPE3pRdSh1ySTSoHPQlOTEF5WgoVzWZQxhGQ3ygT78hOVg==} + engines: {node: '>=18'} + peerDependencies: + '@typescript-eslint/eslint-plugin': '*' + eslint: '>=8.57.0' + typescript: '>=5.0.0' + vitest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + typescript: + optional: true + vitest: + optional: true - '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': - resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} - cpu: [arm] - os: [linux] + '@vitest/expect@4.1.5': + resolution: {integrity: sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==} - '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': - resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} - cpu: [arm] - os: [linux] + '@vitest/mocker@4.1.5': + resolution: {integrity: sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true - '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': - resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} - cpu: [arm64] - os: [linux] - libc: [glibc] + '@vitest/pretty-format@4.1.5': + resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==} - '@unrs/resolver-binding-linux-arm64-musl@1.11.1': - resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} - cpu: [arm64] - os: [linux] - libc: [musl] + '@vitest/runner@4.1.5': + resolution: {integrity: sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==} - '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': - resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': - resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': - resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': - resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-x64-gnu@1.11.1': - resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-x64-musl@1.11.1': - resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@unrs/resolver-binding-wasm32-wasi@1.11.1': - resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] + '@vitest/snapshot@4.1.5': + resolution: {integrity: sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==} - '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': - resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} - cpu: [arm64] - os: [win32] + '@vitest/spy@4.1.5': + resolution: {integrity: sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==} - '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': - resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} - cpu: [ia32] - os: [win32] + '@vitest/ui@4.1.5': + resolution: {integrity: sha512-3Z9HNFiV0IF1fk0JPiK+7kE1GcaIPefQQIBYur6PM5yFIq6agys3uqP/0t966e1wXfmjbRCHDe7qW236Xjwnag==} + peerDependencies: + vitest: 4.1.5 - '@unrs/resolver-binding-win32-x64-msvc@1.11.1': - resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} - cpu: [x64] - os: [win32] + '@vitest/utils@4.1.5': + resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} '@yarnpkg/lockfile@1.1.0': resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} @@ -1529,11 +1418,24 @@ packages: resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} hasBin: true + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + all-contributors-cli@https://codeload.github.com/jdalrymple/all-contributors-cli/tar.gz/7ecc1a0f36b91fe5e3face34e5217f3db2b0359b: resolution: {tarball: https://codeload.github.com/jdalrymple/all-contributors-cli/tar.gz/7ecc1a0f36b91fe5e3face34e5217f3db2b0359b} version: 0.0.0-semantically-released @@ -1544,10 +1446,6 @@ packages: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - ansi-escapes@7.2.0: resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} engines: {node: '>=18'} @@ -1576,10 +1474,6 @@ packages: resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} engines: {node: '>=14'} - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -1590,10 +1484,17 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + ast-kit@3.0.0-beta.1: resolution: {integrity: sha512-trmleAnZ2PxN/loHWVhhx1qeOHSRXq4TDsBBxq3GqeJitfk3+jTQ+v/C1km/KYq9M7wKqCewMh+/NAvVH7m+bw==} engines: {node: '>=20.19.0'} + ast-v8-to-istanbul@1.0.0: + resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} + async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -1603,31 +1504,6 @@ packages: axios@1.12.0: resolution: {integrity: sha512-oXTDccv8PcfjZmPGlWsPSwtOJCZ/b6W5jAMCNcfwJbCzDckwG0jrYJFaWH1yvivfCXjVzV/SPDEhMB3Q+DSurg==} - babel-jest@30.3.0: - resolution: {integrity: sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - peerDependencies: - '@babel/core': ^7.11.0 || ^8.0.0-0 - - babel-plugin-istanbul@7.0.1: - resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==} - engines: {node: '>=12'} - - babel-plugin-jest-hoist@30.3.0: - resolution: {integrity: sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.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@30.3.0: - resolution: {integrity: sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - peerDependencies: - '@babel/core': ^7.11.0 || ^8.0.0-beta.1 - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1638,11 +1514,6 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.16: - resolution: {integrity: sha512-Lyf3aK28zpsD1yQMiiHD4RvVb6UdMoo8xzG2XzFIfR9luPzOpcBlAsT/qfB1XWS1bxWT+UtE4WmQgsp297FYOA==} - engines: {node: '>=6.0.0'} - hasBin: true - before-after-hook@2.2.3: resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} @@ -1656,9 +1527,6 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - brace-expansion@1.1.13: - resolution: {integrity: sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==} - brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} @@ -1670,17 +1538,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.28.2: - resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -1696,20 +1553,9 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - 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'} - - caniuse-lite@1.0.30001786: - resolution: {integrity: sha512-4oxTZEvqmLLrERwxO76yfKM7acZo310U+v4kqexI2TL1DkkUEMT8UijrxxcnVdxR3qkVf5awGRX+4Z6aPHVKrA==} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -1719,20 +1565,9 @@ packages: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - chardet@2.1.1: resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} - ci-info@4.4.0: - resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} - engines: {node: '>=8'} - - cjs-module-lexer@2.2.0: - resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==} - cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -1765,13 +1600,6 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - collect-v8-coverage@1.0.3: - resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1790,9 +1618,6 @@ packages: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -1812,17 +1637,8 @@ packages: supports-color: optional: true - dedent@1.7.2: - resolution: {integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -1845,13 +1661,17 @@ packages: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -1881,30 +1701,17 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ejs@3.1.10: resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.331: - resolution: {integrity: sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==} - - emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - empathic@2.0.0: resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} engines: {node: '>=14'} @@ -1924,9 +1731,6 @@ packages: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} - error-ex@1.3.4: - resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -1935,6 +1739,9 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -1956,36 +1763,73 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@10.2.1: + resolution: {integrity: sha512-wiyGaKsDgqXvF40P8mDwiUp/KQjE1FdrIEJsM8PZ3XCiniTMXS3OHWWUe5FI5agoCnr8x4xPrTDZuxsBlNHl+Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - exit-x@0.2.2: - resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==} - engines: {node: '>= 0.8.0'} - - expect@30.3.0: - resolution: {integrity: sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -1993,12 +1837,12 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -2008,10 +1852,17 @@ packages: picomatch: optional: true + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + filelist@1.0.6: resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} @@ -2023,10 +1874,21 @@ packages: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} @@ -2036,10 +1898,6 @@ packages: debug: optional: true - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - form-data@4.0.5: resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} @@ -2058,9 +1916,6 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -2074,10 +1929,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -2090,18 +1941,10 @@ packages: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - get-tsconfig@4.13.7: resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} @@ -2109,14 +1952,9 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob@10.5.0: - resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - hasBin: true - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} globals@16.5.0: resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} @@ -2159,10 +1997,6 @@ packages: resolution: {integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==} hasBin: true - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - husky@9.1.7: resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} engines: {node: '>=18'} @@ -2183,11 +2017,6 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - import-without-cache@0.2.5: resolution: {integrity: sha512-B6Lc2s6yApwnD2/pMzFh/d5AVjdsDXjgkeJ766FmFuJELIGHNycKRj+l3A39yZPM4CchqNCB4RITEAYB1KUM6A==} engines: {node: '>=20.19.0'} @@ -2196,10 +2025,6 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -2212,9 +2037,6 @@ packages: '@types/node': optional: true - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -2232,10 +2054,6 @@ packages: resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} - is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -2248,10 +2066,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} @@ -2275,178 +2089,33 @@ packages: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} 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@5.0.6: - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} - engines: {node: '>=10'} - istanbul-reports@3.2.0: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jake@10.9.4: resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} engines: {node: '>=10'} hasBin: true - jest-changed-files@30.3.0: - resolution: {integrity: sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-circus@30.3.0: - resolution: {integrity: sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-cli@30.3.0: - resolution: {integrity: sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-config@30.3.0: - resolution: {integrity: sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - peerDependencies: - '@types/node': '*' - esbuild-register: '>=3.4.0' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - esbuild-register: - optional: true - ts-node: - optional: true - - jest-diff@30.2.0: - resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-diff@30.3.0: resolution: {integrity: sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-docblock@30.2.0: - resolution: {integrity: sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-each@30.3.0: - resolution: {integrity: sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-environment-node@30.3.0: - resolution: {integrity: sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-extended@7.0.0: - resolution: {integrity: sha512-96jBsVJDxZKFh+kWY7E18Is2usUsUYtBn97MxCtb4COnbgD4aE1h+P0fdFQNeJaI6KOeduas4Numc9yTuk0+Gw==} - engines: {node: ^20.9.0 || ^22.11.0 || ^24.11.0 || >=25.0.0} - peerDependencies: - jest: '>=27.2.5' - typescript: '>=5.0.0' - peerDependenciesMeta: - jest: - optional: true - - jest-haste-map@30.3.0: - resolution: {integrity: sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-junit@16.0.0: - resolution: {integrity: sha512-A94mmw6NfJab4Fg/BlvVOUXzXgF0XIH6EmTgJ5NDPp4xoKq0Kr7sErb+4Xs9nZvu58pJojz5RFGpqnZYJTrRfQ==} - engines: {node: '>=10.12.0'} - - jest-leak-detector@30.3.0: - resolution: {integrity: sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-matcher-utils@30.3.0: - resolution: {integrity: sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-message-util@30.3.0: - resolution: {integrity: sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-mock@30.3.0: - resolution: {integrity: sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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@30.0.1: - resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-resolve-dependencies@30.3.0: - resolution: {integrity: sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-resolve@30.3.0: - resolution: {integrity: sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-runner@30.3.0: - resolution: {integrity: sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-runtime@30.3.0: - resolution: {integrity: sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-snapshot@30.3.0: - resolution: {integrity: sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-util@30.3.0: - resolution: {integrity: sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-validate@30.3.0: - resolution: {integrity: sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-watcher@30.3.0: - resolution: {integrity: sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-worker@30.3.0: - resolution: {integrity: sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest@30.3.0: - resolution: {integrity: sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@10.0.0: + resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} js-yaml@3.14.2: resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} @@ -2461,12 +2130,18 @@ packages: engines: {node: '>=6'} hasBin: true + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-fixer@1.6.15: resolution: {integrity: sha512-TuDuZ5KrgyjoCIppdPXBMqiGfota55+odM+j2cQ5rt/XKyKmqGB3Whz1F8SN8+60yYGy/Nu5lbRZ+rx8kBIvBw==} engines: {node: '>=10'} - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} @@ -2479,35 +2154,113 @@ packages: jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - lines-and-columns@2.0.3: - resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} - lint-staged@16.4.0: - resolution: {integrity: sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw==} - engines: {node: '>=20.17'} - hasBin: true + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] - listr2@9.0.5: - resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} - engines: {node: '>=20.0.0'} + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] - lodash@4.18.1: - resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + + lines-and-columns@2.0.3: + resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lint-staged@16.4.0: + resolution: {integrity: sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw==} + engines: {node: '>=20.17'} + hasBin: true + + listr2@9.0.5: + resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} + engines: {node: '>=20.0.0'} + + 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'} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -2517,26 +2270,20 @@ packages: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + magicast@0.5.2: + resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -2565,33 +2312,21 @@ packages: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} - minimatch@3.1.5: - resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - minimatch@5.1.9: resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} engines: {node: '>=10'} - minimatch@9.0.9: - resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} - engines: {node: '>=16 || 14 >=14.17'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.1.3: - resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} - engines: {node: '>=16 || 14 >=14.17'} - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -2599,9 +2334,9 @@ packages: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} - napi-postinstall@0.3.4: - resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true natural-compare@1.4.0: @@ -2616,16 +2351,6 @@ packages: encoding: optional: true - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - - node-releases@2.0.37: - resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -2664,6 +2389,10 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + ora@5.3.0: resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} engines: {node: '>=10'} @@ -2697,6 +2426,10 @@ packages: 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'} + p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} @@ -2705,32 +2438,17 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@0.2.11: resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -2769,14 +2487,6 @@ packages: resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} engines: {node: '>=10'} - pirates@4.0.7: - resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} - engines: {node: '>= 6'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - playwright-core@1.57.0: resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==} engines: {node: '>=18'} @@ -2787,6 +2497,14 @@ packages: engines: {node: '>=18'} hasBin: true + postcss@8.5.10: + resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -2802,9 +2520,9 @@ packages: engines: {node: '>=14'} hasBin: true - pretty-format@30.2.0: - resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} pretty-format@30.3.0: resolution: {integrity: sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==} @@ -2813,8 +2531,9 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - pure-rand@7.0.1: - resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} qs@6.14.1: resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} @@ -2847,10 +2566,6 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} @@ -2901,6 +2616,11 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + rolldown@1.0.0-rc.17: + resolution: {integrity: sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + run-async@4.0.6: resolution: {integrity: sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==} engines: {node: '>=0.12.0'} @@ -2917,10 +2637,6 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} @@ -2955,6 +2671,9 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -2962,6 +2681,10 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -2970,11 +2693,8 @@ packages: resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} - source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} spawndamnit@3.0.1: @@ -2983,26 +2703,20 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} 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'} - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - string-width@7.2.0: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} @@ -3026,26 +2740,10 @@ 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-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - synckit@0.11.12: resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -3062,9 +2760,8 @@ packages: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} tinyexec@1.0.4: resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} @@ -3074,17 +2771,26 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + tmp@0.2.5: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -3092,6 +2798,12 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + tsconfig-paths@4.2.0: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} @@ -3136,13 +2848,9 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} types@0.1.1: resolution: {integrity: sha512-JuntZtJj4MKLE9x/XBs7IjsznYhzETwr34pw3XJTKvgYtAMdeMG+o8x8U85E5Lm6eCPa1DdOdGVsHMwq4ZnZAg==} @@ -3174,9 +2882,6 @@ packages: resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} engines: {node: '>=14.0.0'} - unrs-resolver@1.11.1: - resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} - unrun@0.2.34: resolution: {integrity: sha512-LyaghRBR++r7svhDK6tnDz2XaYHWdneBOA0jbS8wnRsHerI9MFljX4fIiTgbbNbEVzZ0C9P1OjWLLe1OqoaaEw==} engines: {node: '>=20.19.0'} @@ -3187,25 +2892,101 @@ packages: synckit: optional: true - update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + vite@8.0.10: + resolution: {integrity: sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.0 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true - v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} + vitest-extended@0.0.1: + resolution: {integrity: sha512-TufwUWvJOeu+HgcyHMkSUAWSJb2GqYq2hCOR5FKZfO3iMrk7aFiUxv0MbLuMaQ24yZUzwhS/xwQ9+8Yv1pl1AQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + vitest: '>=0.32.0' - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + vitest@4.1.5: + resolution: {integrity: sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.5 + '@vitest/browser-preview': 4.1.5 + '@vitest/browser-webdriverio': 4.1.5 + '@vitest/coverage-istanbul': 4.1.5 + '@vitest/coverage-v8': 4.1.5 + '@vitest/ui': 4.1.5 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -3224,6 +3005,15 @@ packages: engines: {node: '>= 8'} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -3232,10 +3022,6 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - wrap-ansi@9.0.2: resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} @@ -3243,23 +3029,13 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@5.0.1: - resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - xcase@2.0.1: resolution: {integrity: sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw==} - xml@1.0.1: - resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@2.8.2: resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} engines: {node: '>= 14.6'} @@ -3320,42 +3096,6 @@ snapshots: '@actions/io@1.1.3': {} - '@babel/code-frame@7.29.0': - dependencies: - '@babel/helper-validator-identifier': 7.28.5 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.29.0': {} - - '@babel/core@7.29.0': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helpers': 7.29.2 - '@babel/parser': 7.29.2 - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.29.1': - dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - '@babel/generator@8.0.0-rc.3': dependencies: '@babel/parser': 8.0.0-rc.3 @@ -3365,34 +3105,6 @@ snapshots: '@types/jsesc': 2.5.1 jsesc: 3.1.0 - '@babel/helper-compilation-targets@7.28.6': - dependencies: - '@babel/compat-data': 7.29.0 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.2 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-globals@7.28.0': {} - - '@babel/helper-module-imports@7.28.6': - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-plugin-utils@7.28.6': {} - '@babel/helper-string-parser@7.27.1': {} '@babel/helper-string-parser@8.0.0-rc.3': {} @@ -3401,13 +3113,6 @@ snapshots: '@babel/helper-validator-identifier@8.0.0-rc.3': {} - '@babel/helper-validator-option@7.27.1': {} - - '@babel/helpers@7.29.2': - dependencies: - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - '@babel/parser@7.29.2': dependencies: '@babel/types': 7.29.0 @@ -3416,111 +3121,8 @@ snapshots: dependencies: '@babel/types': 8.0.0-rc.3 - '@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-import-attributes@7.28.6(@babel/core@7.29.0)': - dependencies: - '@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.28.6(@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 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/runtime@7.28.6': {} - '@babel/template@7.28.6': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - - '@babel/traverse@7.29.0': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.2 - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -3531,7 +3133,7 @@ snapshots: '@babel/helper-string-parser': 8.0.0-rc.3 '@babel/helper-validator-identifier': 8.0.0-rc.3 - '@bcoe/v8-coverage@0.2.3': {} + '@bcoe/v8-coverage@1.0.2': {} '@changesets/apply-release-plan@7.1.0': dependencies: @@ -3706,11 +3308,22 @@ snapshots: unplugin: 1.16.1 zod: 3.25.76 + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + '@emnapi/core@1.8.1': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.8.1': dependencies: tslib: 2.8.1 @@ -3719,6 +3332,11 @@ snapshots: dependencies: tslib: 2.8.1 + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.27.2': optional: true @@ -3797,6 +3415,36 @@ snapshots: '@esbuild/win32-x64@0.27.2': optional: true + '@eslint-community/eslint-utils@4.9.1(eslint@10.2.1)': + dependencies: + eslint: 10.2.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.23.5': + dependencies: + '@eslint/object-schema': 3.0.5 + debug: 4.4.3 + minimatch: 10.2.4 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.5.5': + dependencies: + '@eslint/core': 1.2.1 + + '@eslint/core@1.2.1': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/object-schema@3.0.5': {} + + '@eslint/plugin-kit@0.7.1': + dependencies: + '@eslint/core': 1.2.1 + levn: 0.4.1 + '@gitbeaker/core@43.8.0': dependencies: '@gitbeaker/requester-utils': 43.8.0 @@ -3815,6 +3463,22 @@ snapshots: '@gitbeaker/core': 43.8.0 '@gitbeaker/requester-utils': 43.8.0 + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + '@inquirer/ansi@1.0.2': {} '@inquirer/checkbox@4.3.2(@types/node@24.12.2)': @@ -3940,218 +3604,23 @@ snapshots: optionalDependencies: '@types/node': 24.12.2 - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.2 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@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: 3.14.2 - resolve-from: 5.0.0 - - '@istanbuljs/schema@0.1.3': {} - - '@jest/console@30.3.0': - dependencies: - '@jest/types': 30.3.0 - '@types/node': 24.12.2 - chalk: 4.1.2 - jest-message-util: 30.3.0 - jest-util: 30.3.0 - slash: 3.0.0 - - '@jest/core@30.3.0': - dependencies: - '@jest/console': 30.3.0 - '@jest/pattern': 30.0.1 - '@jest/reporters': 30.3.0 - '@jest/test-result': 30.3.0 - '@jest/transform': 30.3.0 - '@jest/types': 30.3.0 - '@types/node': 24.12.2 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 4.4.0 - exit-x: 0.2.2 - graceful-fs: 4.2.11 - jest-changed-files: 30.3.0 - jest-config: 30.3.0(@types/node@24.12.2) - jest-haste-map: 30.3.0 - jest-message-util: 30.3.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.3.0 - jest-resolve-dependencies: 30.3.0 - jest-runner: 30.3.0 - jest-runtime: 30.3.0 - jest-snapshot: 30.3.0 - jest-util: 30.3.0 - jest-validate: 30.3.0 - jest-watcher: 30.3.0 - pretty-format: 30.3.0 - slash: 3.0.0 - transitivePeerDependencies: - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - - '@jest/create-cache-key-function@30.3.0': - dependencies: - '@jest/types': 30.3.0 - - '@jest/diff-sequences@30.0.1': {} - '@jest/diff-sequences@30.3.0': {} - '@jest/environment@30.3.0': - dependencies: - '@jest/fake-timers': 30.3.0 - '@jest/types': 30.3.0 - '@types/node': 24.12.2 - jest-mock: 30.3.0 - - '@jest/expect-utils@30.3.0': - dependencies: - '@jest/get-type': 30.1.0 - - '@jest/expect@30.3.0': - dependencies: - expect: 30.3.0 - jest-snapshot: 30.3.0 - transitivePeerDependencies: - - supports-color - - '@jest/fake-timers@30.3.0': - dependencies: - '@jest/types': 30.3.0 - '@sinonjs/fake-timers': 15.3.0 - '@types/node': 24.12.2 - jest-message-util: 30.3.0 - jest-mock: 30.3.0 - jest-util: 30.3.0 - '@jest/get-type@30.1.0': {} - '@jest/globals@30.3.0': - dependencies: - '@jest/environment': 30.3.0 - '@jest/expect': 30.3.0 - '@jest/types': 30.3.0 - jest-mock: 30.3.0 - transitivePeerDependencies: - - supports-color - - '@jest/pattern@30.0.1': - dependencies: - '@types/node': 24.12.2 - jest-regex-util: 30.0.1 - - '@jest/reporters@30.3.0': + '@jest/schemas@29.6.3': dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 30.3.0 - '@jest/test-result': 30.3.0 - '@jest/transform': 30.3.0 - '@jest/types': 30.3.0 - '@jridgewell/trace-mapping': 0.3.31 - '@types/node': 24.12.2 - chalk: 4.1.2 - collect-v8-coverage: 1.0.3 - exit-x: 0.2.2 - glob: 10.5.0 - 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: 5.0.6 - istanbul-reports: 3.2.0 - jest-message-util: 30.3.0 - jest-util: 30.3.0 - jest-worker: 30.3.0 - slash: 3.0.0 - string-length: 4.0.2 - v8-to-istanbul: 9.3.0 - transitivePeerDependencies: - - supports-color + '@sinclair/typebox': 0.27.10 '@jest/schemas@30.0.5': dependencies: '@sinclair/typebox': 0.34.47 - '@jest/snapshot-utils@30.3.0': - dependencies: - '@jest/types': 30.3.0 - chalk: 4.1.2 - graceful-fs: 4.2.11 - natural-compare: 1.4.0 - - '@jest/source-map@30.0.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - callsites: 3.1.0 - graceful-fs: 4.2.11 - - '@jest/test-result@30.3.0': - dependencies: - '@jest/console': 30.3.0 - '@jest/types': 30.3.0 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.3 - - '@jest/test-sequencer@30.3.0': - dependencies: - '@jest/test-result': 30.3.0 - graceful-fs: 4.2.11 - jest-haste-map: 30.3.0 - slash: 3.0.0 - - '@jest/transform@30.3.0': - dependencies: - '@babel/core': 7.29.0 - '@jest/types': 30.3.0 - '@jridgewell/trace-mapping': 0.3.31 - babel-plugin-istanbul: 7.0.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: 30.3.0 - jest-regex-util: 30.0.1 - jest-util: 30.3.0 - pirates: 4.0.7 - slash: 3.0.0 - write-file-atomic: 5.0.1 - transitivePeerDependencies: - - supports-color - - '@jest/types@30.3.0': - dependencies: - '@jest/pattern': 30.0.1 - '@jest/schemas': 30.0.5 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 24.12.2 - '@types/yargs': 17.0.35 - chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/remapping@2.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.5': {} @@ -4179,23 +3648,23 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@napi-rs/wasm-runtime@0.2.12': - dependencies: - '@emnapi/core': 1.8.1 - '@emnapi/runtime': 1.8.1 - '@tybys/wasm-util': 0.10.1 - optional: true - '@napi-rs/wasm-runtime@0.2.4': dependencies: '@emnapi/core': 1.8.1 '@emnapi/runtime': 1.8.1 '@tybys/wasm-util': 0.9.0 - '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)': + '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - '@emnapi/core': 1.8.1 - '@emnapi/runtime': 1.8.1 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.1 + optional: true + + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 '@tybys/wasm-util': 0.10.1 optional: true @@ -4301,6 +3770,8 @@ snapshots: '@oxc-project/types@0.122.0': {} + '@oxc-project/types@0.127.0': {} + '@oxlint/binding-android-arm-eabi@1.58.0': optional: true @@ -4358,15 +3829,15 @@ snapshots: '@oxlint/binding-win32-x64-msvc@1.58.0': optional: true - '@pkgjs/parseargs@0.11.0': + '@pkgr/core@0.2.9': optional: true - '@pkgr/core@0.2.9': {} - '@playwright/test@1.57.0': dependencies: playwright: 1.57.0 + '@polka/url@1.0.0-next.29': {} + '@quansync/fs@1.0.0': dependencies: quansync: 1.0.0 @@ -4374,64 +3845,111 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-rc.12': optional: true + '@rolldown/binding-android-arm64@1.0.0-rc.17': + optional: true + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': optional: true + '@rolldown/binding-darwin-arm64@1.0.0-rc.17': + optional: true + '@rolldown/binding-darwin-x64@1.0.0-rc.12': optional: true + '@rolldown/binding-darwin-x64@1.0.0-rc.17': + optional: true + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': optional: true + '@rolldown/binding-freebsd-x64@1.0.0-rc.17': + optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': + optional: true + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': optional: true + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': + optional: true + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': optional: true + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': + optional: true + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': optional: true + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': + optional: true + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': optional: true + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': + optional: true + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': optional: true + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': + optional: true + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': optional: true + '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': + optional: true + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1) + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' optional: true + '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': optional: true + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': + optional: true + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': optional: true + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': + optional: true + '@rolldown/pluginutils@1.0.0-rc.12': {} - '@sinclair/typebox@0.34.47': {} + '@rolldown/pluginutils@1.0.0-rc.17': {} - '@sinonjs/commons@3.0.1': - dependencies: - type-detect: 4.0.8 + '@sinclair/typebox@0.27.10': {} - '@sinonjs/fake-timers@15.3.0': - dependencies: - '@sinonjs/commons': 3.0.1 + '@sinclair/typebox@0.34.47': {} + + '@standard-schema/spec@1.1.0': {} '@swc/core-darwin-arm64@1.15.24': optional: true @@ -4486,19 +4004,15 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.15.24 '@swc/core-win32-ia32-msvc': 1.15.24 '@swc/core-win32-x64-msvc': 1.15.24 + optional: true - '@swc/counter@0.1.3': {} - - '@swc/jest@0.2.39(@swc/core@1.15.24)': - dependencies: - '@jest/create-cache-key-function': 30.3.0 - '@swc/core': 1.15.24 - '@swc/counter': 0.1.3 - jsonc-parser: 3.2.0 + '@swc/counter@0.1.3': + optional: true '@swc/types@0.1.26': dependencies: '@swc/counter': 0.1.3 + optional: true '@tybys/wasm-util@0.10.1': dependencies: @@ -4509,120 +4023,154 @@ snapshots: dependencies: tslib: 2.8.1 - '@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': + '@types/chai@5.2.3': dependencies: - '@babel/types': 7.29.0 + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 + '@types/deep-eql@4.0.2': {} - '@types/babel__traverse@7.28.0': - dependencies: - '@babel/types': 7.29.0 + '@types/esrecurse@4.3.1': {} '@types/estree@1.0.8': {} - '@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@30.0.0': - dependencies: - expect: 30.3.0 - pretty-format: 30.2.0 - '@types/jsesc@2.5.1': {} + '@types/json-schema@7.0.15': {} + '@types/node@12.20.55': {} '@types/node@24.12.2': dependencies: undici-types: 7.16.0 - '@types/stack-utils@2.0.3': {} - - '@types/yargs-parser@21.0.3': {} + '@typescript-eslint/project-service@8.59.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.59.0(typescript@5.9.3) + '@typescript-eslint/types': 8.59.0 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color - '@types/yargs@17.0.35': + '@typescript-eslint/scope-manager@8.59.0': dependencies: - '@types/yargs-parser': 21.0.3 + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/visitor-keys': 8.59.0 - '@ungap/structured-clone@1.3.0': {} + '@typescript-eslint/tsconfig-utils@8.59.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 - '@unrs/resolver-binding-android-arm-eabi@1.11.1': - optional: true + '@typescript-eslint/types@8.59.0': {} - '@unrs/resolver-binding-android-arm64@1.11.1': - optional: true + '@typescript-eslint/typescript-estree@8.59.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.59.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.59.0(typescript@5.9.3) + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/visitor-keys': 8.59.0 + debug: 4.4.3 + minimatch: 10.2.4 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color - '@unrs/resolver-binding-darwin-arm64@1.11.1': - optional: true + '@typescript-eslint/utils@8.59.0(eslint@10.2.1)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) + '@typescript-eslint/scope-manager': 8.59.0 + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/typescript-estree': 8.59.0(typescript@5.9.3) + eslint: 10.2.1 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color - '@unrs/resolver-binding-darwin-x64@1.11.1': - optional: true + '@typescript-eslint/visitor-keys@8.59.0': + dependencies: + '@typescript-eslint/types': 8.59.0 + eslint-visitor-keys: 5.0.1 - '@unrs/resolver-binding-freebsd-x64@1.11.1': - optional: true + '@vitest/coverage-v8@4.1.5(vitest@4.1.5)': + dependencies: + '@bcoe/v8-coverage': 1.0.2 + '@vitest/utils': 4.1.5 + ast-v8-to-istanbul: 1.0.0 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-reports: 3.2.0 + magicast: 0.5.2 + obug: 2.1.1 + std-env: 4.1.0 + tinyrainbow: 3.1.0 + vitest: 4.1.5(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(@vitest/ui@4.1.5)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.27.2)(tsx@4.21.0)(yaml@2.8.2)) - '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': - optional: true + '@vitest/eslint-plugin@1.6.16(eslint@10.2.1)(typescript@5.9.3)(vitest@4.1.5)': + dependencies: + '@typescript-eslint/scope-manager': 8.59.0 + '@typescript-eslint/utils': 8.59.0(eslint@10.2.1)(typescript@5.9.3) + eslint: 10.2.1 + optionalDependencies: + typescript: 5.9.3 + vitest: 4.1.5(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(@vitest/ui@4.1.5)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.27.2)(tsx@4.21.0)(yaml@2.8.2)) + transitivePeerDependencies: + - supports-color - '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': - optional: true + '@vitest/expect@4.1.5': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + chai: 6.2.2 + tinyrainbow: 3.1.0 - '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': - optional: true + '@vitest/mocker@4.1.5(vite@8.0.10(@types/node@24.12.2)(esbuild@0.27.2)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + '@vitest/spy': 4.1.5 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.10(@types/node@24.12.2)(esbuild@0.27.2)(tsx@4.21.0)(yaml@2.8.2) - '@unrs/resolver-binding-linux-arm64-musl@1.11.1': - optional: true + '@vitest/pretty-format@4.1.5': + dependencies: + tinyrainbow: 3.1.0 - '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': - optional: true + '@vitest/runner@4.1.5': + dependencies: + '@vitest/utils': 4.1.5 + pathe: 2.0.3 - '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': - optional: true + '@vitest/snapshot@4.1.5': + dependencies: + '@vitest/pretty-format': 4.1.5 + '@vitest/utils': 4.1.5 + magic-string: 0.30.21 + pathe: 2.0.3 - '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': - optional: true + '@vitest/spy@4.1.5': {} - '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': - optional: true + '@vitest/ui@4.1.5(vitest@4.1.5)': + dependencies: + '@vitest/utils': 4.1.5 + fflate: 0.8.2 + flatted: 3.4.2 + pathe: 2.0.3 + sirv: 3.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.1.0 + vitest: 4.1.5(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(@vitest/ui@4.1.5)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.27.2)(tsx@4.21.0)(yaml@2.8.2)) - '@unrs/resolver-binding-linux-x64-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-x64-musl@1.11.1': - optional: true - - '@unrs/resolver-binding-wasm32-wasi@1.11.1': + '@vitest/utils@4.1.5': dependencies: - '@napi-rs/wasm-runtime': 0.2.12 - optional: true - - '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': - optional: true - - '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': - optional: true - - '@unrs/resolver-binding-win32-x64-msvc@1.11.1': - optional: true + '@vitest/pretty-format': 4.1.5 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 '@yarnpkg/lockfile@1.1.0': {} @@ -4635,8 +4183,21 @@ snapshots: dependencies: argparse: 2.0.1 + acorn-jsx@5.3.2(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + acorn@8.15.0: {} + acorn@8.16.0: {} + + ajv@6.15.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + all-contributors-cli@https://codeload.github.com/jdalrymple/all-contributors-cli/tar.gz/7ecc1a0f36b91fe5e3face34e5217f3db2b0359b(@types/node@24.12.2): dependencies: '@babel/runtime': 7.28.6 @@ -4655,10 +4216,6 @@ snapshots: ansi-colors@4.1.3: {} - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - ansi-escapes@7.2.0: dependencies: environment: 1.1.0 @@ -4677,11 +4234,6 @@ snapshots: ansis@4.2.0: {} - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.2 - argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -4690,12 +4242,20 @@ snapshots: array-union@2.1.0: {} + assertion-error@2.0.1: {} + ast-kit@3.0.0-beta.1: dependencies: '@babel/parser': 8.0.0-rc.3 estree-walker: 3.0.3 pathe: 2.0.3 + ast-v8-to-istanbul@1.0.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + estree-walker: 3.0.3 + js-tokens: 10.0.0 + async@3.2.6: {} asynckit@0.4.0: {} @@ -4708,66 +4268,12 @@ snapshots: transitivePeerDependencies: - debug - babel-jest@30.3.0(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 - '@jest/transform': 30.3.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 7.0.1 - babel-preset-jest: 30.3.0(@babel/core@7.29.0) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-istanbul@7.0.1: - dependencies: - '@babel/helper-plugin-utils': 7.28.6 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 6.0.3 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-jest-hoist@30.3.0: - dependencies: - '@types/babel__core': 7.20.5 - - 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@30.3.0(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 - babel-plugin-jest-hoist: 30.3.0 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) - balanced-match@1.0.2: {} balanced-match@4.0.4: {} base64-js@1.5.1: {} - baseline-browser-mapping@2.10.16: {} - before-after-hook@2.2.3: {} better-path-resolve@1.0.0: @@ -4782,11 +4288,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - brace-expansion@1.1.13: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 @@ -4799,20 +4300,6 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.28.2: - dependencies: - baseline-browser-mapping: 2.10.16 - caniuse-lite: 1.0.30001786 - electron-to-chromium: 1.5.331 - node-releases: 2.0.37 - update-browserslist-db: 1.2.3(browserslist@4.28.2) - - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - - buffer-from@1.1.2: {} - buffer@5.7.1: dependencies: base64-js: 1.5.1 @@ -4830,13 +4317,7 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 - callsites@3.1.0: {} - - camelcase@5.3.1: {} - - camelcase@6.3.0: {} - - caniuse-lite@1.0.30001786: {} + chai@6.2.2: {} chalk@4.1.2: dependencies: @@ -4845,14 +4326,8 @@ snapshots: chalk@5.6.2: {} - char-regex@1.0.2: {} - chardet@2.1.1: {} - ci-info@4.4.0: {} - - cjs-module-lexer@2.2.0: {} - cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 @@ -4884,10 +4359,6 @@ snapshots: clone@1.0.4: {} - co@4.6.0: {} - - collect-v8-coverage@1.0.3: {} - color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -4902,8 +4373,6 @@ snapshots: commander@14.0.3: {} - concat-map@0.0.1: {} - convert-source-map@2.0.0: {} cross-spawn@7.0.6: @@ -4918,9 +4387,7 @@ snapshots: dependencies: ms: 2.1.3 - dedent@1.7.2: {} - - deepmerge@4.3.1: {} + deep-is@0.1.4: {} defaults@1.0.4: dependencies: @@ -4936,10 +4403,12 @@ snapshots: detect-indent@6.1.0: {} - detect-newline@3.1.0: {} + detect-libc@2.1.2: {} didyoumean@1.2.2: {} + diff-sequences@29.6.3: {} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -4960,22 +4429,14 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - eastasianwidth@0.2.0: {} - ejs@3.1.10: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.331: {} - - emittery@0.13.1: {} - emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} - empathic@2.0.0: {} end-of-stream@1.4.5: @@ -4993,14 +4454,12 @@ snapshots: environment@1.1.0: {} - error-ex@1.3.4: - dependencies: - is-arrayish: 0.2.1 - es-define-property@1.0.1: {} es-errors@1.3.0: {} + es-module-lexer@2.0.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -5045,41 +4504,86 @@ snapshots: escape-string-regexp@1.0.5: {} - escape-string-regexp@2.0.0: {} + escape-string-regexp@4.0.0: {} - esprima@4.0.1: {} - - estree-walker@3.0.3: + eslint-scope@9.1.2: dependencies: + '@types/esrecurse': 4.3.1 '@types/estree': 1.0.8 + esrecurse: 4.3.0 + estraverse: 5.3.0 - eventemitter3@5.0.1: {} + eslint-visitor-keys@3.4.3: {} - execa@5.1.1: + eslint-visitor-keys@5.0.1: {} + + eslint@10.2.1: dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.23.5 + '@eslint/config-helpers': 0.5.5 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.1 + '@humanfs/node': 0.16.8 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.15.0 cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + minimatch: 10.2.4 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@11.2.0: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 5.0.1 + + esprima@4.0.1: {} - exit-x@0.2.2: {} + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 - expect@30.3.0: + esrecurse@4.3.0: dependencies: - '@jest/expect-utils': 30.3.0 - '@jest/get-type': 30.1.0 - jest-matcher-utils: 30.3.0 - jest-message-util: 30.3.0 - jest-mock: 30.3.0 - jest-util: 30.3.0 + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + esutils@2.0.3: {} + + eventemitter3@5.0.1: {} + + expect-type@1.3.0: {} extendable-error@0.1.7: {} + fast-deep-equal@3.1.3: {} + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -5090,22 +4594,26 @@ snapshots: fast-json-stable-stringify@2.1.0: {} + fast-levenshtein@2.0.6: {} + fastq@1.20.1: dependencies: reusify: 1.1.0 - fb-watchman@2.0.2: - dependencies: - bser: 2.1.1 - fdir@6.5.0(picomatch@4.0.4): optionalDependencies: picomatch: 4.0.4 + fflate@0.8.2: {} + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + filelist@1.0.6: dependencies: minimatch: 5.1.9 @@ -5119,14 +4627,21 @@ snapshots: locate-path: 5.0.0 path-exists: 4.0.0 + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + flat@5.0.2: {} - follow-redirects@1.15.11: {} + flatted@3.4.2: {} - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 + follow-redirects@1.15.11: {} form-data@4.0.5: dependencies: @@ -5154,8 +4669,6 @@ snapshots: jsonfile: 4.0.0 universalify: 0.1.2 - fs.realpath@1.0.0: {} - fsevents@2.3.2: optional: true @@ -5164,8 +4677,6 @@ snapshots: function-bind@1.1.2: {} - gensync@1.0.0-beta.2: {} - get-caller-file@2.0.5: {} get-east-asian-width@1.4.0: {} @@ -5183,15 +4694,11 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 - get-package-type@0.1.0: {} - get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-stream@6.0.1: {} - get-tsconfig@4.13.7: dependencies: resolve-pkg-maps: 1.0.0 @@ -5200,23 +4707,9 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.5.0: + glob-parent@6.0.2: dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.9 - minipass: 7.1.3 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.5 - once: 1.4.0 - path-is-absolute: 1.0.1 + is-glob: 4.0.3 globals@16.5.0: {} @@ -5251,8 +4744,6 @@ snapshots: human-id@4.1.3: {} - human-signals@2.1.0: {} - husky@9.1.7: {} iconv-lite@0.7.2: @@ -5265,447 +4756,92 @@ snapshots: ignore@7.0.5: {} - import-local@3.2.0: - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - import-without-cache@0.2.5: {} - imurmurhash@0.1.4: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - inquirer@12.11.1(@types/node@24.12.2): - dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.12.2) - '@inquirer/prompts': 7.10.1(@types/node@24.12.2) - '@inquirer/type': 3.0.10(@types/node@24.12.2) - mute-stream: 2.0.0 - run-async: 4.0.6 - rxjs: 7.8.2 - optionalDependencies: - '@types/node': 24.12.2 - - is-arrayish@0.2.1: {} - - is-docker@2.2.1: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-fullwidth-code-point@5.1.0: - dependencies: - get-east-asian-width: 1.4.0 - - is-generator-fn@2.1.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-interactive@1.0.0: {} - - is-number@7.0.0: {} - - is-stream@2.0.1: {} - - is-subdir@1.2.0: - dependencies: - better-path-resolve: 1.0.0 - - is-unicode-supported@0.1.0: {} - - is-windows@1.0.2: {} - - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - - isexe@2.0.0: {} - - istanbul-lib-coverage@3.2.2: {} - - 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.4 - 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@5.0.6: - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - debug: 4.4.3 - istanbul-lib-coverage: 3.2.2 - transitivePeerDependencies: - - supports-color - - istanbul-reports@3.2.0: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jake@10.9.4: - dependencies: - async: 3.2.6 - filelist: 1.0.6 - picocolors: 1.1.1 - - jest-changed-files@30.3.0: - dependencies: - execa: 5.1.1 - jest-util: 30.3.0 - p-limit: 3.1.0 - - jest-circus@30.3.0: - dependencies: - '@jest/environment': 30.3.0 - '@jest/expect': 30.3.0 - '@jest/test-result': 30.3.0 - '@jest/types': 30.3.0 - '@types/node': 24.12.2 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.7.2 - is-generator-fn: 2.1.0 - jest-each: 30.3.0 - jest-matcher-utils: 30.3.0 - jest-message-util: 30.3.0 - jest-runtime: 30.3.0 - jest-snapshot: 30.3.0 - jest-util: 30.3.0 - p-limit: 3.1.0 - pretty-format: 30.3.0 - pure-rand: 7.0.1 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-cli@30.3.0(@types/node@24.12.2): - dependencies: - '@jest/core': 30.3.0 - '@jest/test-result': 30.3.0 - '@jest/types': 30.3.0 - chalk: 4.1.2 - exit-x: 0.2.2 - import-local: 3.2.0 - jest-config: 30.3.0(@types/node@24.12.2) - jest-util: 30.3.0 - jest-validate: 30.3.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - - jest-config@30.3.0(@types/node@24.12.2): - dependencies: - '@babel/core': 7.29.0 - '@jest/get-type': 30.1.0 - '@jest/pattern': 30.0.1 - '@jest/test-sequencer': 30.3.0 - '@jest/types': 30.3.0 - babel-jest: 30.3.0(@babel/core@7.29.0) - chalk: 4.1.2 - ci-info: 4.4.0 - deepmerge: 4.3.1 - glob: 10.5.0 - graceful-fs: 4.2.11 - jest-circus: 30.3.0 - jest-docblock: 30.2.0 - jest-environment-node: 30.3.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.3.0 - jest-runner: 30.3.0 - jest-util: 30.3.0 - jest-validate: 30.3.0 - parse-json: 5.2.0 - pretty-format: 30.3.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 24.12.2 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-diff@30.2.0: - dependencies: - '@jest/diff-sequences': 30.0.1 - '@jest/get-type': 30.1.0 - chalk: 4.1.2 - pretty-format: 30.2.0 - - jest-diff@30.3.0: - dependencies: - '@jest/diff-sequences': 30.3.0 - '@jest/get-type': 30.1.0 - chalk: 4.1.2 - pretty-format: 30.3.0 - - jest-docblock@30.2.0: - dependencies: - detect-newline: 3.1.0 + imurmurhash@0.1.4: {} - jest-each@30.3.0: - dependencies: - '@jest/get-type': 30.1.0 - '@jest/types': 30.3.0 - chalk: 4.1.2 - jest-util: 30.3.0 - pretty-format: 30.3.0 + inherits@2.0.4: {} - jest-environment-node@30.3.0: + inquirer@12.11.1(@types/node@24.12.2): dependencies: - '@jest/environment': 30.3.0 - '@jest/fake-timers': 30.3.0 - '@jest/types': 30.3.0 + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@24.12.2) + '@inquirer/prompts': 7.10.1(@types/node@24.12.2) + '@inquirer/type': 3.0.10(@types/node@24.12.2) + mute-stream: 2.0.0 + run-async: 4.0.6 + rxjs: 7.8.2 + optionalDependencies: '@types/node': 24.12.2 - jest-mock: 30.3.0 - jest-util: 30.3.0 - jest-validate: 30.3.0 - jest-extended@7.0.0(jest@30.3.0(@types/node@24.12.2))(typescript@5.9.3): - dependencies: - jest-diff: 30.2.0 - typescript: 5.9.3 - optionalDependencies: - jest: 30.3.0(@types/node@24.12.2) + is-docker@2.2.1: {} - jest-haste-map@30.3.0: - dependencies: - '@jest/types': 30.3.0 - '@types/node': 24.12.2 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 30.0.1 - jest-util: 30.3.0 - jest-worker: 30.3.0 - picomatch: 4.0.4 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 + is-extglob@2.1.1: {} - jest-junit@16.0.0: - dependencies: - mkdirp: 1.0.4 - strip-ansi: 6.0.1 - uuid: 8.3.2 - xml: 1.0.1 + is-fullwidth-code-point@3.0.0: {} - jest-leak-detector@30.3.0: + is-fullwidth-code-point@5.1.0: dependencies: - '@jest/get-type': 30.1.0 - pretty-format: 30.3.0 + get-east-asian-width: 1.4.0 - jest-matcher-utils@30.3.0: + is-glob@4.0.3: dependencies: - '@jest/get-type': 30.1.0 - chalk: 4.1.2 - jest-diff: 30.3.0 - pretty-format: 30.3.0 + is-extglob: 2.1.1 - jest-message-util@30.3.0: - dependencies: - '@babel/code-frame': 7.29.0 - '@jest/types': 30.3.0 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - picomatch: 4.0.4 - pretty-format: 30.3.0 - slash: 3.0.0 - stack-utils: 2.0.6 + is-interactive@1.0.0: {} + + is-number@7.0.0: {} - jest-mock@30.3.0: + is-subdir@1.2.0: dependencies: - '@jest/types': 30.3.0 - '@types/node': 24.12.2 - jest-util: 30.3.0 + better-path-resolve: 1.0.0 - jest-pnp-resolver@1.2.3(jest-resolve@30.3.0): - optionalDependencies: - jest-resolve: 30.3.0 + is-unicode-supported@0.1.0: {} - jest-regex-util@30.0.1: {} + is-windows@1.0.2: {} - jest-resolve-dependencies@30.3.0: + is-wsl@2.2.0: dependencies: - jest-regex-util: 30.0.1 - jest-snapshot: 30.3.0 - transitivePeerDependencies: - - supports-color + is-docker: 2.2.1 - jest-resolve@30.3.0: - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 30.3.0 - jest-pnp-resolver: 1.2.3(jest-resolve@30.3.0) - jest-util: 30.3.0 - jest-validate: 30.3.0 - slash: 3.0.0 - unrs-resolver: 1.11.1 + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} - jest-runner@30.3.0: + istanbul-lib-report@3.0.1: dependencies: - '@jest/console': 30.3.0 - '@jest/environment': 30.3.0 - '@jest/test-result': 30.3.0 - '@jest/transform': 30.3.0 - '@jest/types': 30.3.0 - '@types/node': 24.12.2 - chalk: 4.1.2 - emittery: 0.13.1 - exit-x: 0.2.2 - graceful-fs: 4.2.11 - jest-docblock: 30.2.0 - jest-environment-node: 30.3.0 - jest-haste-map: 30.3.0 - jest-leak-detector: 30.3.0 - jest-message-util: 30.3.0 - jest-resolve: 30.3.0 - jest-runtime: 30.3.0 - jest-util: 30.3.0 - jest-watcher: 30.3.0 - jest-worker: 30.3.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 - jest-runtime@30.3.0: + istanbul-reports@3.2.0: dependencies: - '@jest/environment': 30.3.0 - '@jest/fake-timers': 30.3.0 - '@jest/globals': 30.3.0 - '@jest/source-map': 30.0.1 - '@jest/test-result': 30.3.0 - '@jest/transform': 30.3.0 - '@jest/types': 30.3.0 - '@types/node': 24.12.2 - chalk: 4.1.2 - cjs-module-lexer: 2.2.0 - collect-v8-coverage: 1.0.3 - glob: 10.5.0 - graceful-fs: 4.2.11 - jest-haste-map: 30.3.0 - jest-message-util: 30.3.0 - jest-mock: 30.3.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.3.0 - jest-snapshot: 30.3.0 - jest-util: 30.3.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 - jest-snapshot@30.3.0: + jake@10.9.4: dependencies: - '@babel/core': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/plugin-syntax-jsx': 7.28.6(@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': 30.3.0 - '@jest/get-type': 30.1.0 - '@jest/snapshot-utils': 30.3.0 - '@jest/transform': 30.3.0 - '@jest/types': 30.3.0 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) - chalk: 4.1.2 - expect: 30.3.0 - graceful-fs: 4.2.11 - jest-diff: 30.3.0 - jest-matcher-utils: 30.3.0 - jest-message-util: 30.3.0 - jest-util: 30.3.0 - pretty-format: 30.3.0 - semver: 7.7.4 - synckit: 0.11.12 - transitivePeerDependencies: - - supports-color + async: 3.2.6 + filelist: 1.0.6 + picocolors: 1.1.1 - jest-util@30.3.0: + jest-diff@29.7.0: dependencies: - '@jest/types': 30.3.0 - '@types/node': 24.12.2 chalk: 4.1.2 - ci-info: 4.4.0 - graceful-fs: 4.2.11 - picomatch: 4.0.4 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 - jest-validate@30.3.0: + jest-diff@30.3.0: dependencies: + '@jest/diff-sequences': 30.3.0 '@jest/get-type': 30.1.0 - '@jest/types': 30.3.0 - camelcase: 6.3.0 chalk: 4.1.2 - leven: 3.1.0 pretty-format: 30.3.0 - jest-watcher@30.3.0: - dependencies: - '@jest/test-result': 30.3.0 - '@jest/types': 30.3.0 - '@types/node': 24.12.2 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 30.3.0 - string-length: 4.0.2 - - jest-worker@30.3.0: - dependencies: - '@types/node': 24.12.2 - '@ungap/structured-clone': 1.3.0 - jest-util: 30.3.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest@30.3.0(@types/node@24.12.2): - dependencies: - '@jest/core': 30.3.0 - '@jest/types': 30.3.0 - import-local: 3.2.0 - jest-cli: 30.3.0(@types/node@24.12.2) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node + jest-get-type@29.6.3: {} - js-tokens@4.0.0: {} + js-tokens@10.0.0: {} js-yaml@3.14.2: dependencies: @@ -5718,13 +4854,17 @@ snapshots: jsesc@3.1.0: {} + json-buffer@3.0.1: {} + json-fixer@1.6.15: dependencies: '@babel/runtime': 7.28.6 chalk: 4.1.2 pegjs: 0.10.0 - json-parse-even-better-errors@2.3.1: {} + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} json5@2.2.3: {} @@ -5734,9 +4874,63 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - leven@3.1.0: {} + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true - lines-and-columns@1.2.4: {} + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 lines-and-columns@2.0.3: {} @@ -5762,6 +4956,10 @@ snapshots: dependencies: p-locate: 4.1.0 + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + lodash.startcase@4.4.0: {} lodash@4.18.1: {} @@ -5779,24 +4977,22 @@ snapshots: strip-ansi: 7.1.2 wrap-ansi: 9.0.2 - lru-cache@10.4.3: {} + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 - lru-cache@5.1.1: + magicast@0.5.2: dependencies: - yallist: 3.1.1 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + source-map-js: 1.2.1 make-dir@4.0.0: dependencies: semver: 7.7.4 - makeerror@1.0.12: - dependencies: - tmpl: 1.0.5 - math-intrinsics@1.1.0: {} - merge-stream@2.0.0: {} - merge2@1.4.1: {} micromatch@4.0.8: @@ -5818,31 +5014,21 @@ snapshots: dependencies: brace-expansion: 5.0.5 - minimatch@3.1.5: - dependencies: - brace-expansion: 1.1.13 - minimatch@5.1.9: dependencies: brace-expansion: 2.0.2 - minimatch@9.0.9: - dependencies: - brace-expansion: 2.0.2 - minimist@1.2.8: {} - minipass@7.1.3: {} - - mkdirp@1.0.4: {} - mri@1.2.0: {} + mrmime@2.0.1: {} + ms@2.1.3: {} mute-stream@2.0.0: {} - napi-postinstall@0.3.4: {} + nanoid@3.3.11: {} natural-compare@1.4.0: {} @@ -5850,12 +5036,6 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-int64@0.4.0: {} - - node-releases@2.0.37: {} - - normalize-path@3.0.0: {} - npm-run-path@4.0.1: dependencies: path-key: 3.1.1 @@ -5879,7 +5059,7 @@ snapshots: flat: 5.0.2 front-matter: 4.0.2 ignore: 7.0.5 - jest-diff: 30.2.0 + jest-diff: 30.3.0 jsonc-parser: 3.2.0 lines-and-columns: 2.0.3 minimatch: 10.2.4 @@ -5935,6 +5115,15 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + ora@5.3.0: dependencies: bl: 4.1.0 @@ -5986,34 +5175,22 @@ snapshots: dependencies: p-limit: 2.3.0 + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + p-map@2.1.0: {} p-try@2.2.0: {} - package-json-from-dist@1.0.1: {} - package-manager-detector@0.2.11: dependencies: quansync: 0.2.11 - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.29.0 - error-ex: 1.3.4 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - path-exists@4.0.0: {} - path-is-absolute@1.0.1: {} - path-key@3.1.1: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.3 - path-type@4.0.0: {} pathe@2.0.3: {} @@ -6034,12 +5211,6 @@ snapshots: pify@5.0.0: {} - pirates@4.0.7: {} - - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - playwright-core@1.57.0: {} playwright@1.57.0: @@ -6048,6 +5219,14 @@ snapshots: optionalDependencies: fsevents: 2.3.2 + postcss@8.5.10: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + prettier@2.8.8: {} prettier@3.6.2: {} @@ -6055,9 +5234,9 @@ snapshots: prettier@3.8.0: optional: true - pretty-format@30.2.0: + pretty-format@29.7.0: dependencies: - '@jest/schemas': 30.0.5 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 @@ -6069,7 +5248,7 @@ snapshots: proxy-from-env@1.1.0: {} - pure-rand@7.0.1: {} + punycode@2.3.1: {} qs@6.14.1: dependencies: @@ -6100,10 +5279,6 @@ snapshots: require-directory@2.1.1: {} - resolve-cwd@3.0.0: - dependencies: - resolve-from: 5.0.0 - resolve-from@5.0.0: {} resolve-pkg-maps@1.0.0: {} @@ -6124,7 +5299,7 @@ snapshots: rfdc@1.4.1: {} - rolldown-plugin-dts@0.23.2(rolldown@1.0.0-rc.12(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1))(typescript@5.9.3): + rolldown-plugin-dts@0.23.2(rolldown@1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(typescript@5.9.3): dependencies: '@babel/generator': 8.0.0-rc.3 '@babel/helper-validator-identifier': 8.0.0-rc.3 @@ -6136,13 +5311,13 @@ snapshots: get-tsconfig: 4.13.7 obug: 2.1.1 picomatch: 4.0.4 - rolldown: 1.0.0-rc.12(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1) + rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - oxc-resolver - rolldown@1.0.0-rc.12(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1): + rolldown@1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0): dependencies: '@oxc-project/types': 0.122.0 '@rolldown/pluginutils': 1.0.0-rc.12 @@ -6159,13 +5334,34 @@ snapshots: '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1) + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' + rolldown@1.0.0-rc.17: + dependencies: + '@oxc-project/types': 0.127.0 + '@rolldown/pluginutils': 1.0.0-rc.17 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.17 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.17 + '@rolldown/binding-darwin-x64': 1.0.0-rc.17 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.17 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.17 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.17 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.17 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.17 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.17 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.17 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17 + run-async@4.0.6: {} run-parallel@1.2.0: @@ -6180,8 +5376,6 @@ snapshots: safer-buffer@2.1.2: {} - semver@6.3.1: {} - semver@7.7.3: {} semver@7.7.4: {} @@ -6220,10 +5414,18 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + siginfo@2.0.0: {} + signal-exit@3.0.7: {} signal-exit@4.1.0: {} + sirv@3.0.2: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + slash@3.0.0: {} slice-ansi@7.1.2: @@ -6231,12 +5433,7 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 - source-map-support@0.5.13: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} + source-map-js@1.2.1: {} spawndamnit@3.0.1: dependencies: @@ -6245,16 +5442,11 @@ snapshots: sprintf-js@1.0.3: {} - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 + stackback@0.0.2: {} - string-argv@0.3.2: {} + std-env@4.1.0: {} - string-length@4.0.2: - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 + string-argv@0.3.2: {} string-width@4.2.3: dependencies: @@ -6262,12 +5454,6 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.2 - string-width@7.2.0: dependencies: emoji-regex: 10.6.0 @@ -6293,23 +5479,14 @@ snapshots: strip-bom@3.0.0: {} - strip-bom@4.0.0: {} - - strip-final-newline@2.0.0: {} - - strip-json-comments@3.1.1: {} - supports-color@7.2.0: dependencies: has-flag: 4.0.0 - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - synckit@0.11.12: dependencies: '@pkgr/core': 0.2.9 + optional: true sywac@1.3.0: {} @@ -6323,11 +5500,7 @@ snapshots: term-size@2.2.1: {} - test-exclude@6.0.0: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.5 + tinybench@2.9.0: {} tinyexec@1.0.4: {} @@ -6336,25 +5509,36 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - tmp@0.2.5: {} + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 - tmpl@1.0.5: {} + tinyrainbow@3.1.0: {} + + tmp@0.2.5: {} to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + totalist@3.0.1: {} + tr46@0.0.3: {} tree-kill@1.2.2: {} + ts-api-utils@2.5.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + tsconfig-paths@4.2.0: dependencies: json5: 2.2.3 minimist: 1.2.8 strip-bom: 3.0.0 - tsdown@0.21.7(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(synckit@0.11.12)(typescript@5.9.3): + tsdown@0.21.7(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(synckit@0.11.12)(typescript@5.9.3): dependencies: ansis: 4.2.0 cac: 7.0.0 @@ -6364,14 +5548,14 @@ snapshots: import-without-cache: 0.2.5 obug: 2.1.1 picomatch: 4.0.4 - rolldown: 1.0.0-rc.12(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1) - rolldown-plugin-dts: 0.23.2(rolldown@1.0.0-rc.12(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1))(typescript@5.9.3) + rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + rolldown-plugin-dts: 0.23.2(rolldown@1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(typescript@5.9.3) semver: 7.7.4 tinyexec: 1.0.4 tinyglobby: 0.2.15 tree-kill: 1.2.2 unconfig-core: 7.5.0 - unrun: 0.2.34(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(synckit@0.11.12) + unrun: 0.2.34(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(synckit@0.11.12) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -6394,9 +5578,9 @@ snapshots: tunnel@0.0.6: {} - type-detect@4.0.8: {} - - type-fest@0.21.3: {} + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 types@0.1.1: {} @@ -6420,58 +5604,69 @@ snapshots: acorn: 8.15.0 webpack-virtual-modules: 0.6.2 - unrs-resolver@1.11.1: + unrun@0.2.34(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(synckit@0.11.12): dependencies: - napi-postinstall: 0.3.4 - optionalDependencies: - '@unrs/resolver-binding-android-arm-eabi': 1.11.1 - '@unrs/resolver-binding-android-arm64': 1.11.1 - '@unrs/resolver-binding-darwin-arm64': 1.11.1 - '@unrs/resolver-binding-darwin-x64': 1.11.1 - '@unrs/resolver-binding-freebsd-x64': 1.11.1 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 - '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 - '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 - '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-x64-musl': 1.11.1 - '@unrs/resolver-binding-wasm32-wasi': 1.11.1 - '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 - '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 - '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - - unrun@0.2.34(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(synckit@0.11.12): - dependencies: - rolldown: 1.0.0-rc.12(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1) + rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optionalDependencies: synckit: 0.11.12 transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' - update-browserslist-db@1.2.3(browserslist@4.28.2): + uri-js@4.4.1: dependencies: - browserslist: 4.28.2 - escalade: 3.2.0 - picocolors: 1.1.1 + punycode: 2.3.1 util-deprecate@1.0.2: {} - uuid@8.3.2: {} + vite@8.0.10(@types/node@24.12.2)(esbuild@0.27.2)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.10 + rolldown: 1.0.0-rc.17 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 24.12.2 + esbuild: 0.27.2 + fsevents: 2.3.3 + tsx: 4.21.0 + yaml: 2.8.2 - v8-to-istanbul@9.3.0: + vitest-extended@0.0.1(vitest@4.1.5): dependencies: - '@jridgewell/trace-mapping': 0.3.31 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + vitest: 4.1.5(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(@vitest/ui@4.1.5)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.27.2)(tsx@4.21.0)(yaml@2.8.2)) - walker@1.0.8: + vitest@4.1.5(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(@vitest/ui@4.1.5)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.27.2)(tsx@4.21.0)(yaml@2.8.2)): dependencies: - makeerror: 1.0.12 + '@vitest/expect': 4.1.5 + '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@24.12.2)(esbuild@0.27.2)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.1.5 + '@vitest/runner': 4.1.5 + '@vitest/snapshot': 4.1.5 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.0.4 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 8.0.10(@types/node@24.12.2)(esbuild@0.27.2)(tsx@4.21.0)(yaml@2.8.2) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.12.2 + '@vitest/coverage-v8': 4.1.5(vitest@4.1.5) + '@vitest/ui': 4.1.5(vitest@4.1.5) + transitivePeerDependencies: + - msw wcwidth@1.0.1: dependencies: @@ -6490,6 +5685,13 @@ snapshots: dependencies: isexe: 2.0.0 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + word-wrap@1.2.5: {} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -6502,12 +5704,6 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.3 - string-width: 5.1.2 - strip-ansi: 7.1.2 - wrap-ansi@9.0.2: dependencies: ansi-styles: 6.2.3 @@ -6516,19 +5712,10 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@5.0.1: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 4.1.0 - xcase@2.0.1: {} - xml@1.0.1: {} - y18n@5.0.8: {} - yallist@3.1.1: {} - yaml@2.8.2: {} yargs-parser@21.1.1: {} diff --git a/tsconfig.base.json b/tsconfig.base.json index c609de420..acf935e4e 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -10,6 +10,7 @@ "moduleResolution": "node", "resolveJsonModule": true, + "skipLibCheck": true, "strictPropertyInitialization": true, "strictNullChecks": true, @@ -20,6 +21,5 @@ "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true - }, - "files": ["./global.d.ts", "./jest.setup.ts"] + } } diff --git a/vitest.config.base.mjs b/vitest.config.base.mjs new file mode 100644 index 000000000..ff4b48369 --- /dev/null +++ b/vitest.config.base.mjs @@ -0,0 +1,24 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + projects: ['packages/*'], + test: { + environment: 'node', + include: ['**/test/**/*.ts'], + exclude: ['**/node_modules/**', '**/dist/**'], + globals: false, + coverage: { + enabled: true, + reporter: ['lcov', 'text', 'text-summary', 'cobertura'], + reportsDirectory: 'coverage', + }, + }, + resolve: { + alias: [ + { + find: /^@gitbeaker\/(.*)$/, + replacement: new URL('./packages/$1/src', import.meta.url).pathname, + }, + ], + }, +});