diff --git a/.eslintrc.json b/.eslintrc.json index bd1fd84e..0b36de42 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -31,8 +31,8 @@ "overrides": [ { "files": ["*.spec.ts"], - "plugins": ["jest"], - "extends": ["plugin:jest/recommended"] + "plugins": ["@vitest"], + "extends": ["plugin:@vitest/legacy-recommended"] } ] } diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 89a8876d..8ac3e6f2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -55,12 +55,8 @@ jobs: - name: Install dependencies run: pnpm install && pnpm add --global concurrently - - name: Build & Unit Test - run: concurrently --prefix none --group "pnpm:build" "pnpm:test" - - - name: Smoke Test - # Don't collect coverage here as it overrides the unit test's coverage - run: pnpm test:smoke --coverage=false + - name: Build & Test + run: concurrently --prefix none --group "pnpm:build" "pnpm:test --coverage" "pnpm:test:smoke" - name: Submit coverage uses: coverallsapp/github-action@master diff --git a/.vscode/extensions.json b/.vscode/extensions.json index abfc1bc5..50eecc7c 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,6 +3,6 @@ "dbaeumer.vscode-eslint", "esbenp.prettier-vscode", "editorconfig.editorconfig", - "orta.vscode-jest" + "vitest.explorer" ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 6590a6f3..5c1abc78 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,7 @@ { - "jest.runMode": "watch", - "jest.jestCommandLine": "pnpm test --", + // For contributors with the Jest extension installed, + // it might incorrectly report errors in the suite + "jest.enable": false, "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" }, diff --git a/bin/concurrently.spec.ts b/bin/concurrently.spec.ts index 6d75d8fb..78b918f7 100644 --- a/bin/concurrently.spec.ts +++ b/bin/concurrently.spec.ts @@ -9,6 +9,7 @@ import * as readline from 'readline'; import * as Rx from 'rxjs'; import { map } from 'rxjs/operators'; import stringArgv from 'string-argv'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { escapeRegExp } from '../src/utils'; diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 7ca2110f..00000000 --- a/jest.config.js +++ /dev/null @@ -1,30 +0,0 @@ -// Need to extend from a base config because projects don't inherit configurations as documented -// https://github.com/jestjs/jest/issues/11411 -/** @type {import('@jest/types').Config.InitialProjectOptions} */ -const baseConfig = { - transform: { - '.*': ['@swc/jest'], - }, - testPathIgnorePatterns: ['/node_modules/', '/dist'], -}; - -/** @type {import('@jest/types').Config.InitialOptions} */ -const config = { - collectCoverage: true, - projects: [ - { - ...baseConfig, - displayName: 'unit', - collectCoverageFrom: ['src/**/*.ts', '!src/index.ts'], - // (src|bin) doesn't seem to work on Windows - testMatch: ['src', 'bin'].map((dir) => `/${dir}/**/*.spec.ts`), - }, - { - ...baseConfig, - displayName: 'smoke', - testMatch: ['/tests/**/*.spec.ts'], - }, - ], -}; - -module.exports = config; diff --git a/package.json b/package.json index f7d70169..9fa8a776 100644 --- a/package.json +++ b/package.json @@ -36,8 +36,8 @@ "lint:fix": "pnpm run lint --fix", "prepublishOnly": "safe-publish-latest && pnpm run build", "report-coverage": "cat coverage/lcov.info | coveralls", - "test": "jest --selectProjects unit", - "test:smoke": "jest --selectProjects smoke", + "test": "vitest run --project unit", + "test:smoke": "vitest run --project smoke", "prepare": "husky" }, "repository": { @@ -65,16 +65,14 @@ }, "devDependencies": { "@hirez_io/observer-spy": "^2.2.0", - "@jest/types": "^30.0.0", - "@swc/core": "^1.7.23", - "@swc/jest": "^0.2.36", - "@types/jest": "^30.0.0", "@types/node": "^18.19.50", "@types/shell-quote": "^1.7.5", "@types/supports-color": "^8.1.3", "@types/yargs": "^17.0.33", "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.18.0", + "@vitest/coverage-v8": "^3.2.4", + "@vitest/eslint-plugin": "^1.3.4", "coveralls-next": "^5.0.0", "ctrlc-wrapper": "^0.0.4", "esbuild": "~0.25.0", @@ -85,13 +83,12 @@ "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-simple-import-sort": "^12.1.1", "husky": "^9.1.5", - "jest": "^30.0.0", - "jest-create-mock-instance": "^2.0.0", "lint-staged": "^15.2.10", "prettier": "^3.0.3", "safe-publish-latest": "^2.0.0", "string-argv": "^0.3.2", - "typescript": "~5.2.2" + "typescript": "~5.2.2", + "vitest": "^3.2.4" }, "files": [ "dist", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 795293f9..88c05897 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,18 +28,6 @@ devDependencies: '@hirez_io/observer-spy': specifier: ^2.2.0 version: 2.2.0(rxjs@7.8.1)(typescript@5.2.2) - '@jest/types': - specifier: ^30.0.0 - version: 30.0.0 - '@swc/core': - specifier: ^1.7.23 - version: 1.7.23 - '@swc/jest': - specifier: ^0.2.36 - version: 0.2.36(@swc/core@1.7.23) - '@types/jest': - specifier: ^30.0.0 - version: 30.0.0 '@types/node': specifier: ^18.19.50 version: 18.19.50 @@ -58,6 +46,12 @@ devDependencies: '@typescript-eslint/parser': specifier: ^7.18.0 version: 7.18.0(eslint@8.57.0)(supports-color@8.1.1)(typescript@5.2.2) + '@vitest/coverage-v8': + specifier: ^3.2.4 + version: 3.2.4(supports-color@8.1.1)(vitest@3.2.4) + '@vitest/eslint-plugin': + specifier: ^1.3.4 + version: 1.3.4(eslint@8.57.0)(supports-color@8.1.1)(typescript@5.2.2)(vitest@3.2.4) coveralls-next: specifier: ^5.0.0 version: 5.0.0 @@ -78,7 +72,7 @@ devDependencies: version: 2.30.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.0)(supports-color@8.1.1) eslint-plugin-jest: specifier: ^27.9.0 - version: 27.9.0(@typescript-eslint/eslint-plugin@7.18.0)(eslint@8.57.0)(jest@30.0.0)(supports-color@8.1.1)(typescript@5.2.2) + version: 27.9.0(@typescript-eslint/eslint-plugin@7.18.0)(eslint@8.57.0)(supports-color@8.1.1)(typescript@5.2.2) eslint-plugin-prettier: specifier: ^5.2.1 version: 5.2.1(eslint-config-prettier@10.1.5)(eslint@8.57.0)(prettier@3.0.3) @@ -88,12 +82,6 @@ devDependencies: husky: specifier: ^9.1.5 version: 9.1.5 - jest: - specifier: ^30.0.0 - version: 30.0.0(@types/node@18.19.50)(supports-color@8.1.1) - jest-create-mock-instance: - specifier: ^2.0.0 - version: 2.0.0 lint-staged: specifier: ^15.2.10 version: 15.2.10(supports-color@8.1.1) @@ -109,6 +97,9 @@ devDependencies: typescript: specifier: ~5.2.2 version: 5.2.2 + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/node@18.19.50)(supports-color@8.1.1) packages: @@ -117,225 +108,12 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@ampproject/remapping@2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.25 - dev: true - - /@babel/code-frame@7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: true - - /@babel/code-frame@7.27.1: - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.27.1 - js-tokens: 4.0.0 - picocolors: 1.1.1 - dev: true - - /@babel/compat-data@7.20.10: - resolution: {integrity: sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/compat-data@7.27.5: - resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core@7.20.7(supports-color@8.1.1): - resolution: {integrity: sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.7 - '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.20.7) - '@babel/helper-module-transforms': 7.20.11(supports-color@8.1.1) - '@babel/helpers': 7.20.7(supports-color@8.1.1) - '@babel/parser': 7.20.7 - '@babel/template': 7.20.7 - '@babel/traverse': 7.20.10(supports-color@8.1.1) - '@babel/types': 7.20.7 - convert-source-map: 1.9.0 - debug: 4.3.6(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/core@7.27.4(supports-color@8.1.1): - resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4)(supports-color@8.1.1) - '@babel/helpers': 7.27.6 - '@babel/parser': 7.27.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.27.4(supports-color@8.1.1) - '@babel/types': 7.27.6 - convert-source-map: 2.0.0 - debug: 4.3.6(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator@7.20.7: - resolution: {integrity: sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - dev: true - - /@babel/generator@7.27.5: - resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - dev: true - - /@babel/helper-compilation-targets@7.20.7(@babel/core@7.20.7): - resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.20.10 - '@babel/core': 7.20.7(supports-color@8.1.1) - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - - /@babel/helper-compilation-targets@7.27.2: - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.27.5 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.0 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - - /@babel/helper-environment-visitor@7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name@7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.20.7 - dev: true - - /@babel/helper-hoist-variables@7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - dev: true - - /@babel/helper-module-imports@7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - dev: true - - /@babel/helper-module-imports@7.27.1(supports-color@8.1.1): - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.27.4(supports-color@8.1.1) - '@babel/types': 7.27.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-module-transforms@7.20.11(supports-color@8.1.1): - resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 - '@babel/traverse': 7.20.10(supports-color@8.1.1) - '@babel/types': 7.20.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)(supports-color@8.1.1): - resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-module-imports': 7.27.1(supports-color@8.1.1) - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.4(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-plugin-utils@7.20.2: - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-plugin-utils@7.27.1: - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-simple-access@7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - dev: true - - /@babel/helper-split-export-declaration@7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - dev: true - - /@babel/helper-string-parser@7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} dev: true /@babel/helper-string-parser@7.27.1: @@ -343,325 +121,31 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier@7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-identifier@7.27.1: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option@7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-option@7.27.1: - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helpers@7.20.7(supports-color@8.1.1): - resolution: {integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.20.7 - '@babel/traverse': 7.20.10(supports-color@8.1.1) - '@babel/types': 7.20.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helpers@7.27.6: - resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.27.6 - dev: true - - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.19.1 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - - /@babel/parser@7.20.7: - resolution: {integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==} + /@babel/parser@7.28.3: + resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.20.7 - dev: true - - /@babel/parser@7.27.5: - resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.27.6 - dev: true - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.4): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.4): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.4): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.27.4): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.4): - resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.27.1 - dev: true - - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.4): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.4): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.4): - resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.27.1 - dev: true - - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.4): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.4): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.4): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.4): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.4): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.4): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.27.4): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.4): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.20.2 + '@babel/types': 7.28.2 dev: true - /@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.4): - resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.27.1 - dev: true - - /@babel/template@7.20.7: - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 - dev: true - - /@babel/template@7.27.2: - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 - dev: true - - /@babel/traverse@7.20.10(supports-color@8.1.1): - resolution: {integrity: sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.7 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 - debug: 4.3.6(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/traverse@7.27.4(supports-color@8.1.1): - resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 - '@babel/parser': 7.27.5 - '@babel/template': 7.27.2 - '@babel/types': 7.27.6 - debug: 4.3.6(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types@7.20.7: - resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - dev: true - - /@babel/types@7.27.6: - resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} + /@babel/types@7.28.2: + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 dev: true - /@bcoe/v8-coverage@0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true - - /@emnapi/core@1.4.3: - resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} - requiresBuild: true - dependencies: - '@emnapi/wasi-threads': 1.0.2 - tslib: 2.7.0 - dev: true - optional: true - - /@emnapi/runtime@1.4.3: - resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} - requiresBuild: true - dependencies: - tslib: 2.7.0 - dev: true - optional: true - - /@emnapi/wasi-threads@1.0.2: - resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} - requiresBuild: true - dependencies: - tslib: 2.7.0 + /@bcoe/v8-coverage@1.0.2: + resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} + engines: {node: '>=18'} dev: true - optional: true /@esbuild/aix-ppc64@0.25.0: resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==} @@ -879,401 +363,114 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.25.0: - resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.57.0(supports-color@8.1.1) - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/regexpp@4.11.0: - resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - - /@eslint-community/regexpp@4.7.0: - resolution: {integrity: sha512-+HencqxU7CFJnQb7IKtuNBqS6Yx3Tz4kOL8BJXo+JyeiBm5MEX6pO8onXDkjrkCRlfYXS1Axro15ZjVFe9YgsA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - - /@eslint/eslintrc@2.1.4(supports-color@8.1.1): - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) - espree: 9.6.1 - globals: 13.19.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js@8.57.0: - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@hirez_io/observer-spy@2.2.0(rxjs@7.8.1)(typescript@5.2.2): - resolution: {integrity: sha512-G9nv87vjRILgB/X1AtKBv1DZX7yXSYAOCXon/f+QULKoXVhVehYUF5Lv0SQ97ebf1sA48Z2CyQ9h2v4Pz6DgaQ==} - peerDependencies: - rxjs: '>=6.0.0' - typescript: '>=2.8.1' - dependencies: - rxjs: 7.8.1 - typescript: 5.2.2 - dev: true - - /@humanwhocodes/config-array@0.11.14(supports-color@8.1.1): - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4(supports-color@8.1.1) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema@2.0.3: - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead - dev: true - - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: true - - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true - - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true - - /@jest/console@30.0.0: - resolution: {integrity: sha512-vfpJap6JZQ3I8sUN8dsFqNAKJYO4KIGxkcB+3Fw7Q/BJiWY5HwtMMiuT1oP0avsiDhjE/TCLaDgbGfHwDdBVeg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/types': 30.0.0 - '@types/node': 18.19.50 - chalk: 4.1.2 - jest-message-util: 30.0.0 - jest-util: 30.0.0 - slash: 3.0.0 - dev: true - - /@jest/core@30.0.0(supports-color@8.1.1): - resolution: {integrity: sha512-1zU39zFtWSl5ZuDK3Rd6P8S28MmS4F11x6Z4CURrgJ99iaAJg68hmdJ2SAHEEO6ociaNk43UhUYtHxWKEWoNYw==} - 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 - dependencies: - '@jest/console': 30.0.0 - '@jest/pattern': 30.0.0 - '@jest/reporters': 30.0.0(supports-color@8.1.1) - '@jest/test-result': 30.0.0 - '@jest/transform': 30.0.0(supports-color@8.1.1) - '@jest/types': 30.0.0 - '@types/node': 18.19.50 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 4.2.0 - exit-x: 0.2.2 - graceful-fs: 4.2.11 - jest-changed-files: 30.0.0 - jest-config: 30.0.0(@types/node@18.19.50)(supports-color@8.1.1) - jest-haste-map: 30.0.0 - jest-message-util: 30.0.0 - jest-regex-util: 30.0.0 - jest-resolve: 30.0.0 - jest-resolve-dependencies: 30.0.0(supports-color@8.1.1) - jest-runner: 30.0.0(supports-color@8.1.1) - jest-runtime: 30.0.0(supports-color@8.1.1) - jest-snapshot: 30.0.0(supports-color@8.1.1) - jest-util: 30.0.0 - jest-validate: 30.0.0 - jest-watcher: 30.0.0 - micromatch: 4.0.8 - pretty-format: 30.0.0 - slash: 3.0.0 - transitivePeerDependencies: - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - dev: true - - /@jest/create-cache-key-function@29.7.0: - resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - dev: true - - /@jest/diff-sequences@30.0.0: - resolution: {integrity: sha512-xMbtoCeKJDto86GW6AiwVv7M4QAuI56R7dVBr1RNGYbOT44M2TIzOiske2RxopBqkumDY+A1H55pGvuribRY9A==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dev: true - - /@jest/environment@30.0.0: - resolution: {integrity: sha512-09sFbMMgS5JxYnvgmmtwIHhvoyzvR5fUPrVl8nOCrC5KdzmmErTcAxfWyAhJ2bv3rvHNQaKiS+COSG+O7oNbXw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/fake-timers': 30.0.0 - '@jest/types': 30.0.0 - '@types/node': 18.19.50 - jest-mock: 30.0.0 - dev: true - - /@jest/expect-utils@30.0.0: - resolution: {integrity: sha512-UiWfsqNi/+d7xepfOv8KDcbbzcYtkWBe3a3kVDtg6M1kuN6CJ7b4HzIp5e1YHrSaQaVS8sdCoyCMCZClTLNKFQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/get-type': 30.0.0 - dev: true - - /@jest/expect@30.0.0(supports-color@8.1.1): - resolution: {integrity: sha512-XZ3j6syhMeKiBknmmc8V3mNIb44kxLTbOQtaXA4IFdHy+vEN0cnXRzbRjdGBtrp4k1PWyMWNU3Fjz3iejrhpQg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - expect: 30.0.0 - jest-snapshot: 30.0.0(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/fake-timers@30.0.0: - resolution: {integrity: sha512-yzBmJcrMHAMcAEbV2w1kbxmx8WFpEz8Cth3wjLMSkq+LO8VeGKRhpr5+BUp7PPK+x4njq/b6mVnDR8e/tPL5ng==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/types': 30.0.0 - '@sinonjs/fake-timers': 13.0.5 - '@types/node': 18.19.50 - jest-message-util: 30.0.0 - jest-mock: 30.0.0 - jest-util: 30.0.0 - dev: true - - /@jest/get-type@30.0.0: - resolution: {integrity: sha512-VZWMjrBzqfDKngQ7sUctKeLxanAbsBFoZnPxNIG6CmxK7Gv6K44yqd0nzveNIBfuhGZMmk1n5PGbvdSTOu0yTg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dev: true - - /@jest/globals@30.0.0(supports-color@8.1.1): - resolution: {integrity: sha512-OEzYes5A1xwBJVMPqFRa8NCao8Vr42nsUZuf/SpaJWoLE+4kyl6nCQZ1zqfipmCrIXQVALC5qJwKy/7NQQLPhw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/environment': 30.0.0 - '@jest/expect': 30.0.0(supports-color@8.1.1) - '@jest/types': 30.0.0 - jest-mock: 30.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/pattern@30.0.0: - resolution: {integrity: sha512-k+TpEThzLVXMkbdxf8KHjZ83Wl+G54ytVJoDIGWwS96Ql4xyASRjc6SU1hs5jHVql+hpyK9G8N7WuFhLpGHRpQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@types/node': 18.19.50 - jest-regex-util: 30.0.0 + /@esbuild/win32-x64@0.25.0: + resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@jest/reporters@30.0.0(supports-color@8.1.1): - resolution: {integrity: sha512-5WHNlLO0Ok+/o6ML5IzgVm1qyERtLHBNhwn67PAq92H4hZ+n5uW/BYj1VVwmTdxIcNrZLxdV9qtpdZkXf16HxA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 30.0.0 - '@jest/test-result': 30.0.0 - '@jest/transform': 30.0.0(supports-color@8.1.1) - '@jest/types': 30.0.0 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 18.19.50 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit-x: 0.2.2 - glob: 10.4.5 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 6.0.0(supports-color@8.1.1) - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 5.0.6(supports-color@8.1.1) - istanbul-reports: 3.1.5 - jest-message-util: 30.0.0 - jest-util: 30.0.0 - jest-worker: 30.0.0 - slash: 3.0.0 - string-length: 4.0.2 - v8-to-istanbul: 9.0.1 - transitivePeerDependencies: - - supports-color + eslint: 8.57.0(supports-color@8.1.1) + eslint-visitor-keys: 3.4.3 dev: 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} + /@eslint-community/eslint-utils@4.7.0(eslint@8.57.0): + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - '@sinclair/typebox': 0.27.8 + eslint: 8.57.0(supports-color@8.1.1) + eslint-visitor-keys: 3.4.3 dev: true - /@jest/schemas@30.0.0: - resolution: {integrity: sha512-NID2VRyaEkevCRz6badhfqYwri/RvMbiHY81rk3AkK/LaiB0LSxi1RdVZ7MpZdTjNugtZeGfpL0mLs9Kp3MrQw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@sinclair/typebox': 0.34.35 + /@eslint-community/regexpp@4.11.0: + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@jest/snapshot-utils@30.0.0: - resolution: {integrity: sha512-C/QSFUmvZEYptg2Vin84FggAphwHvj6la39vkw1CNOZQORWZ7O/H0BXmdeeeGnvlXDYY8TlFM5jgFnxLAxpFjA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/types': 30.0.0 - chalk: 4.1.2 - graceful-fs: 4.2.11 - natural-compare: 1.4.0 + /@eslint-community/regexpp@4.7.0: + resolution: {integrity: sha512-+HencqxU7CFJnQb7IKtuNBqS6Yx3Tz4kOL8BJXo+JyeiBm5MEX6pO8onXDkjrkCRlfYXS1Axro15ZjVFe9YgsA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@jest/source-map@30.0.0: - resolution: {integrity: sha512-oYBJ4d/NF4ZY3/7iq1VaeoERHRvlwKtrGClgescaXMIa1mmb+vfJd0xMgbW9yrI80IUA7qGbxpBWxlITrHkWoA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + /@eslint/eslintrc@2.1.4(supports-color@8.1.1): + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.25 - callsites: 3.1.0 - graceful-fs: 4.2.11 + ajv: 6.12.6 + debug: 4.3.4(supports-color@8.1.1) + espree: 9.6.1 + globals: 13.19.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color dev: true - /@jest/test-result@30.0.0: - resolution: {integrity: sha512-685zco9HdgBaaWiB9T4xjLtBuN0Q795wgaQPpmuAeZPHwHZSoKFAUnozUtU+ongfi4l5VCz8AclOE5LAQdyjxQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/console': 30.0.0 - '@jest/types': 30.0.0 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@jest/test-sequencer@30.0.0: - resolution: {integrity: sha512-Hmvv5Yg6UmghXIcVZIydkT0nAK7M/hlXx9WMHR5cLVwdmc14/qUQt3mC72T6GN0olPC6DhmKE6Cd/pHsgDbuqQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + /@hirez_io/observer-spy@2.2.0(rxjs@7.8.1)(typescript@5.2.2): + resolution: {integrity: sha512-G9nv87vjRILgB/X1AtKBv1DZX7yXSYAOCXon/f+QULKoXVhVehYUF5Lv0SQ97ebf1sA48Z2CyQ9h2v4Pz6DgaQ==} + peerDependencies: + rxjs: '>=6.0.0' + typescript: '>=2.8.1' dependencies: - '@jest/test-result': 30.0.0 - graceful-fs: 4.2.11 - jest-haste-map: 30.0.0 - slash: 3.0.0 + rxjs: 7.8.1 + typescript: 5.2.2 dev: true - /@jest/transform@30.0.0(supports-color@8.1.1): - resolution: {integrity: sha512-8xhpsCGYJsUjqpJOgLyMkeOSSlhqggFZEWAnZquBsvATtueoEs7CkMRxOUmJliF3E5x+mXmZ7gEEsHank029Og==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + /@humanwhocodes/config-array@0.11.14(supports-color@8.1.1): + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@jest/types': 30.0.0 - '@jridgewell/trace-mapping': 0.3.25 - babel-plugin-istanbul: 7.0.0(supports-color@8.1.1) - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 30.0.0 - jest-regex-util: 30.0.0 - jest-util: 30.0.0 - micromatch: 4.0.8 - pirates: 4.0.7 - slash: 3.0.0 - write-file-atomic: 5.0.1 + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4(supports-color@8.1.1) + minimatch: 3.1.2 transitivePeerDependencies: - supports-color dev: true - /@jest/types@29.6.3: - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.19.50 - '@types/yargs': 17.0.33 - chalk: 4.1.2 + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} dev: true - /@jest/types@30.0.0: - resolution: {integrity: sha512-1Nox8mAL52PKPfEnUQWBvKU/bp8FTT6AiDu76bFDEJj/qsRFSAVSldfCH3XYMqialti2zHXKvD5gN0AaHc0yKA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/pattern': 30.0.0 - '@jest/schemas': 30.0.0 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 18.19.50 - '@types/yargs': 17.0.33 - chalk: 4.1.2 + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead dev: true - /@jridgewell/gen-mapping@0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 dev: true - /@jridgewell/gen-mapping@0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.25 + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} dev: true /@jridgewell/gen-mapping@0.3.8: @@ -1281,7 +478,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 dev: true @@ -1290,36 +487,28 @@ packages: engines: {node: '>=6.0.0'} dev: true - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true - /@jridgewell/set-array@1.2.1: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} dev: true /@jridgewell/trace-mapping@0.3.25: resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec': 1.5.0 dev: true - /@napi-rs/wasm-runtime@0.2.11: - resolution: {integrity: sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==} - requiresBuild: true + /@jridgewell/trace-mapping@0.3.30: + resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} dependencies: - '@emnapi/core': 1.4.3 - '@emnapi/runtime': 1.4.3 - '@tybys/wasm-util': 0.9.0 + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.5.0 dev: true - optional: true /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -1354,240 +543,182 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dev: true - /@pkgr/core@0.2.7: - resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dev: true - - /@rtsao/scc@1.1.0: - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - dev: true - - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + /@rollup/rollup-android-arm-eabi@4.44.0: + resolution: {integrity: sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==} + cpu: [arm] + os: [android] + requiresBuild: true dev: true + optional: true - /@sinclair/typebox@0.34.35: - resolution: {integrity: sha512-C6ypdODf2VZkgRT6sFM8E1F8vR+HcffniX0Kp8MsU8PIfrlXbNCBz0jzj17GjdmjTx1OtZzdH8+iALL21UjF5A==} + /@rollup/rollup-android-arm64@4.44.0: + resolution: {integrity: sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==} + cpu: [arm64] + os: [android] + requiresBuild: true dev: true + optional: true - /@sinonjs/commons@3.0.1: - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - dependencies: - type-detect: 4.0.8 + /@rollup/rollup-darwin-arm64@4.44.0: + resolution: {integrity: sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@sinonjs/fake-timers@13.0.5: - resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} - dependencies: - '@sinonjs/commons': 3.0.1 + /@rollup/rollup-darwin-x64@4.44.0: + resolution: {integrity: sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@swc/core-darwin-arm64@1.7.23: - resolution: {integrity: sha512-yyOHPfti6yKlQulfVWMt7BVKst+SyEZYCWuQSGMn1KgmNCH/bYufRWfQXIhkGSj44ZkEepJmsJ8tDyIb4k5WyA==} - engines: {node: '>=10'} + /@rollup/rollup-freebsd-arm64@4.44.0: + resolution: {integrity: sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==} cpu: [arm64] - os: [darwin] + os: [freebsd] requiresBuild: true dev: true optional: true - /@swc/core-darwin-x64@1.7.23: - resolution: {integrity: sha512-GzqHwQ0Y1VyjdI/bBKFX2GKm5HD3PIB6OhuAQtWZMTtEr2yIrlT0YK2T+XKh7oIg31JwxGBeQdBk3KTI7DARmQ==} - engines: {node: '>=10'} + /@rollup/rollup-freebsd-x64@4.44.0: + resolution: {integrity: sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==} cpu: [x64] - os: [darwin] + os: [freebsd] requiresBuild: true dev: true optional: true - /@swc/core-linux-arm-gnueabihf@1.7.23: - resolution: {integrity: sha512-qwX4gB41OS6/OZkHcpTqLFGsdmvoZyffnJIlgB/kZKwH3lfeJWzv6vx57zXtNpM/t7GoQEe0VZUVdmNjxSxBZw==} - engines: {node: '>=10'} + /@rollup/rollup-linux-arm-gnueabihf@4.44.0: + resolution: {integrity: sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@swc/core-linux-arm64-gnu@1.7.23: - resolution: {integrity: sha512-TsrbUZdMaUwzI7+g/8rHPLWbntMKYSu5Bn5IBSqVKPeyqaXxNnlIUnWXgXcUcRAc+T+Y8ADfr7EiFz9iz5DuSA==} - engines: {node: '>=10'} - cpu: [arm64] + /@rollup/rollup-linux-arm-musleabihf@4.44.0: + resolution: {integrity: sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==} + cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@swc/core-linux-arm64-musl@1.7.23: - resolution: {integrity: sha512-JEdtwdthazKq4PBz53KSubwwK8MvqODAihGSAzc8u3Unq4ojcvaS8b0CwLBeD+kTQ78HpxOXTt3DsFIxpgaCAA==} - engines: {node: '>=10'} + /@rollup/rollup-linux-arm64-gnu@4.44.0: + resolution: {integrity: sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@swc/core-linux-x64-gnu@1.7.23: - resolution: {integrity: sha512-V51gFPWaVAHbI1yg9ahsoya3aB4uawye3SZ5uQWgcP7wdCdiv60dw4F5nuPJf5Z1oXD3U/BslXuamv8Oh9vXqQ==} - engines: {node: '>=10'} - cpu: [x64] + /@rollup/rollup-linux-arm64-musl@4.44.0: + resolution: {integrity: sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==} + cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@swc/core-linux-x64-musl@1.7.23: - resolution: {integrity: sha512-BBqQi4+UdeRqag3yM4IJjaHG4yc1o3l9ksENHToE0o/u2DT0FY5+K/DiYGZLC1JHbSFzNqRCYsa7DIzRtZ0A1A==} - engines: {node: '>=10'} - cpu: [x64] + /@rollup/rollup-linux-loongarch64-gnu@4.44.0: + resolution: {integrity: sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==} + cpu: [loong64] os: [linux] requiresBuild: true dev: true optional: true - /@swc/core-win32-arm64-msvc@1.7.23: - resolution: {integrity: sha512-JPk6pvCKncL6bXG7p+NLZf8PWx4FakVvKNdwGeMrYunb+yk1IZf7qf9LJk8+GDGF5QviDXPs8opZrTrfsW80fA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] + /@rollup/rollup-linux-powerpc64le-gnu@4.44.0: + resolution: {integrity: sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==} + cpu: [ppc64] + os: [linux] requiresBuild: true dev: true optional: true - /@swc/core-win32-ia32-msvc@1.7.23: - resolution: {integrity: sha512-2Whxi8d+bLQBzJcQ5qYPHlk02YYVGsMVav0fWk+FnX2z1QRREIu1L1xvrpi7gBpjXp6BIU40ya8GiKeekNT2bg==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] + /@rollup/rollup-linux-riscv64-gnu@4.44.0: + resolution: {integrity: sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==} + cpu: [riscv64] + os: [linux] requiresBuild: true dev: true optional: true - /@swc/core-win32-x64-msvc@1.7.23: - resolution: {integrity: sha512-82fARk4/yJ40kwWKY/gdKDisPdtgJE9jgpl/vkNG3alyJxrCzuNM7+CtiKoYbXLeqM8GQTS3wlvCaJu9oQ8dag==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] + /@rollup/rollup-linux-riscv64-musl@4.44.0: + resolution: {integrity: sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q==} + cpu: [riscv64] + os: [linux] requiresBuild: true dev: true optional: true - /@swc/core@1.7.23: - resolution: {integrity: sha512-VDNkpDvDlreGh2E3tlDj8B3piiuLhhQA/7rIVZpiLUvG1YpucAa6N7iDXA7Gc/+Hah8spaCg/qvEaBkCmcIYCQ==} - engines: {node: '>=10'} + /@rollup/rollup-linux-s390x-gnu@4.44.0: + resolution: {integrity: sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==} + cpu: [s390x] + os: [linux] requiresBuild: true - peerDependencies: - '@swc/helpers': '*' - peerDependenciesMeta: - '@swc/helpers': - optional: true - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.12 - optionalDependencies: - '@swc/core-darwin-arm64': 1.7.23 - '@swc/core-darwin-x64': 1.7.23 - '@swc/core-linux-arm-gnueabihf': 1.7.23 - '@swc/core-linux-arm64-gnu': 1.7.23 - '@swc/core-linux-arm64-musl': 1.7.23 - '@swc/core-linux-x64-gnu': 1.7.23 - '@swc/core-linux-x64-musl': 1.7.23 - '@swc/core-win32-arm64-msvc': 1.7.23 - '@swc/core-win32-ia32-msvc': 1.7.23 - '@swc/core-win32-x64-msvc': 1.7.23 - dev: true - - /@swc/counter@0.1.3: - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - dev: true - - /@swc/jest@0.2.36(@swc/core@1.7.23): - resolution: {integrity: sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==} - engines: {npm: '>= 7.0.0'} - peerDependencies: - '@swc/core': '*' - dependencies: - '@jest/create-cache-key-function': 29.7.0 - '@swc/core': 1.7.23 - '@swc/counter': 0.1.3 - jsonc-parser: 3.2.0 - dev: true - - /@swc/types@0.1.12: - resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} - dependencies: - '@swc/counter': 0.1.3 dev: true + optional: true - /@tybys/wasm-util@0.9.0: - resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + /@rollup/rollup-linux-x64-gnu@4.44.0: + resolution: {integrity: sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==} + cpu: [x64] + os: [linux] requiresBuild: true - dependencies: - tslib: 2.7.0 dev: true optional: true - /@types/babel__core@7.20.5: - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - dependencies: - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.18.3 - dev: true - - /@types/babel__generator@7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} - dependencies: - '@babel/types': 7.20.7 - dev: true - - /@types/babel__template@7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} - dependencies: - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 + /@rollup/rollup-linux-x64-musl@4.44.0: + resolution: {integrity: sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==} + cpu: [x64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@types/babel__traverse@7.18.3: - resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} - dependencies: - '@babel/types': 7.20.7 + /@rollup/rollup-win32-arm64-msvc@4.44.0: + resolution: {integrity: sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==} + cpu: [arm64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@types/istanbul-lib-coverage@2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + /@rollup/rollup-win32-ia32-msvc@4.44.0: + resolution: {integrity: sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==} + cpu: [ia32] + os: [win32] + requiresBuild: true dev: true + optional: true - /@types/istanbul-lib-coverage@2.0.6: - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + /@rollup/rollup-win32-x64-msvc@4.44.0: + resolution: {integrity: sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==} + cpu: [x64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@types/istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 + /@rtsao/scc@1.1.0: + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} dev: true - /@types/istanbul-reports@3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + /@types/chai@5.2.2: + resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} dependencies: - '@types/istanbul-lib-report': 3.0.0 + '@types/deep-eql': 4.0.2 dev: true - /@types/istanbul-reports@3.0.4: - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - dependencies: - '@types/istanbul-lib-report': 3.0.0 + /@types/deep-eql@4.0.2: + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} dev: true - /@types/jest@30.0.0: - resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} - dependencies: - expect: 30.0.0 - pretty-format: 30.0.0 + /@types/estree@1.0.8: + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} dev: true /@types/json-schema@7.0.12: @@ -1612,10 +743,6 @@ packages: resolution: {integrity: sha512-+UE8GAGRPbJVQDdxi16dgadcBfQ+KG2vgZhV1+3A1XmHbmwcdwhCUwIdy+d3pAGrbvgRoVSjeI9vOWyq376Yzw==} dev: true - /@types/stack-utils@2.0.3: - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - dev: true - /@types/supports-color@8.1.3: resolution: {integrity: sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==} dev: true @@ -1678,6 +805,20 @@ packages: - supports-color dev: true + /@typescript-eslint/project-service@8.35.1(supports-color@8.1.1)(typescript@5.2.2): + resolution: {integrity: sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + dependencies: + '@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.2.2) + '@typescript-eslint/types': 8.35.1 + debug: 4.4.1(supports-color@8.1.1) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/scope-manager@5.60.0: resolution: {integrity: sha512-hakuzcxPwXi2ihf9WQu1BbRj1e/Pd8ZZwVTG9kfbxAMZstKz8/9OoexIwnmLzShtsdap5U/CoQGRCWlSuPbYxQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1694,6 +835,23 @@ packages: '@typescript-eslint/visitor-keys': 7.18.0 dev: true + /@typescript-eslint/scope-manager@8.35.1: + resolution: {integrity: sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/visitor-keys': 8.35.1 + dev: true + + /@typescript-eslint/tsconfig-utils@8.35.1(typescript@5.2.2): + resolution: {integrity: sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + dependencies: + typescript: 5.2.2 + dev: true + /@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(supports-color@8.1.1)(typescript@5.2.2): resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} engines: {node: ^18.18.0 || >=20.0.0} @@ -1724,6 +882,11 @@ packages: engines: {node: ^18.18.0 || >=20.0.0} dev: true + /@typescript-eslint/types@8.35.1: + resolution: {integrity: sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + /@typescript-eslint/typescript-estree@5.60.0(supports-color@8.1.1)(typescript@5.2.2): resolution: {integrity: sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1767,6 +930,27 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@8.35.1(supports-color@8.1.1)(typescript@5.2.2): + resolution: {integrity: sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + dependencies: + '@typescript-eslint/project-service': 8.35.1(supports-color@8.1.1)(typescript@5.2.2) + '@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.2.2) + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/visitor-keys': 8.35.1 + debug: 4.4.1(supports-color@8.1.1) + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@5.60.0(eslint@8.57.0)(supports-color@8.1.1)(typescript@5.2.2): resolution: {integrity: sha512-ba51uMqDtfLQ5+xHtwlO84vkdjrqNzOnqrnwbMHMRY8Tqeme8C2Q8Fc7LajfGR+e3/4LoYiWXUM6BpIIbHJ4hQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1800,7 +984,24 @@ packages: eslint: 8.57.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - - typescript + - typescript + dev: true + + /@typescript-eslint/utils@8.35.1(eslint@8.57.0)(supports-color@8.1.1)(typescript@5.2.2): + resolution: {integrity: sha512-lhnwatFmOFcazAsUm3ZnZFpXSxiwoa1Lj50HphnDe1Et01NF4+hrdXONSUHIcbVu2eFb1bAf+5yjXkGVkXBKAQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.0) + '@typescript-eslint/scope-manager': 8.35.1 + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/typescript-estree': 8.35.1(supports-color@8.1.1)(typescript@5.2.2) + eslint: 8.57.0(supports-color@8.1.1) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color dev: true /@typescript-eslint/visitor-keys@5.60.0: @@ -1819,167 +1020,127 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true - - /@ungap/structured-clone@1.3.0: - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - dev: true - - /@unrs/resolver-binding-android-arm-eabi@1.9.0: - resolution: {integrity: sha512-h1T2c2Di49ekF2TE8ZCoJkb+jwETKUIPDJ/nO3tJBKlLFPu+fyd93f0rGP/BvArKx2k2HlRM4kqkNarj3dvZlg==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@unrs/resolver-binding-android-arm64@1.9.0: - resolution: {integrity: sha512-sG1NHtgXtX8owEkJ11yn34vt0Xqzi3k9TJ8zppDmyG8GZV4kVWw44FHwKwHeEFl07uKPeC4ZoyuQaGh5ruJYPA==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@unrs/resolver-binding-darwin-arm64@1.9.0: - resolution: {integrity: sha512-nJ9z47kfFnCxN1z/oYZS7HSNsFh43y2asePzTEZpEvK7kGyuShSl3RRXnm/1QaqFL+iP+BjMwuB+DYUymOkA5A==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@unrs/resolver-binding-darwin-x64@1.9.0: - resolution: {integrity: sha512-TK+UA1TTa0qS53rjWn7cVlEKVGz2B6JYe0C++TdQjvWYIyx83ruwh0wd4LRxYBM5HeuAzXcylA9BH2trARXJTw==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@unrs/resolver-binding-freebsd-x64@1.9.0: - resolution: {integrity: sha512-6uZwzMRFcD7CcCd0vz3Hp+9qIL2jseE/bx3ZjaLwn8t714nYGwiE84WpaMCYjU+IQET8Vu/+BNAGtYD7BG/0yA==} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@unrs/resolver-binding-linux-arm-gnueabihf@1.9.0: - resolution: {integrity: sha512-bPUBksQfrgcfv2+mm+AZinaKq8LCFvt5PThYqRotqSuuZK1TVKkhbVMS/jvSRfYl7jr3AoZLYbDkItxgqMKRkg==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@unrs/resolver-binding-linux-arm-musleabihf@1.9.0: - resolution: {integrity: sha512-uT6E7UBIrTdCsFQ+y0tQd3g5oudmrS/hds5pbU3h4s2t/1vsGWbbSKhBSCD9mcqaqkBwoqlECpUrRJCmldl8PA==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@unrs/resolver-binding-linux-arm64-gnu@1.9.0: - resolution: {integrity: sha512-vdqBh911wc5awE2bX2zx3eflbyv8U9xbE/jVKAm425eRoOVv/VseGZsqi3A3SykckSpF4wSROkbQPvbQFn8EsA==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@unrs/resolver-binding-linux-arm64-musl@1.9.0: - resolution: {integrity: sha512-/8JFZ/SnuDr1lLEVsxsuVwrsGquTvT51RZGvyDB/dOK3oYK2UqeXzgeyq6Otp8FZXQcEYqJwxb9v+gtdXn03eQ==} - cpu: [arm64] - os: [linux] - requiresBuild: true + /@typescript-eslint/visitor-keys@8.35.1: + resolution: {integrity: sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.35.1 + eslint-visitor-keys: 4.2.1 dev: true - optional: true - /@unrs/resolver-binding-linux-ppc64-gnu@1.9.0: - resolution: {integrity: sha512-FkJjybtrl+rajTw4loI3L6YqSOpeZfDls4SstL/5lsP2bka9TiHUjgMBjygeZEis1oC8LfJTS8FSgpKPaQx2tQ==} - cpu: [ppc64] - os: [linux] - requiresBuild: true + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - optional: true - /@unrs/resolver-binding-linux-riscv64-gnu@1.9.0: - resolution: {integrity: sha512-w/NZfHNeDusbqSZ8r/hp8iL4S39h4+vQMc9/vvzuIKMWKppyUGKm3IST0Qv0aOZ1rzIbl9SrDeIqK86ZpUK37w==} - cpu: [riscv64] - os: [linux] - requiresBuild: true + /@vitest/coverage-v8@3.2.4(supports-color@8.1.1)(vitest@3.2.4): + resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} + peerDependencies: + '@vitest/browser': 3.2.4 + vitest: 3.2.4 + peerDependenciesMeta: + '@vitest/browser': + optional: true + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 1.0.2 + ast-v8-to-istanbul: 0.3.4 + debug: 4.4.1(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6(supports-color@8.1.1) + istanbul-reports: 3.1.7 + magic-string: 0.30.17 + magicast: 0.3.5 + std-env: 3.9.0 + test-exclude: 7.0.1 + tinyrainbow: 2.0.0 + vitest: 3.2.4(@types/node@18.19.50)(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color dev: true - optional: true - /@unrs/resolver-binding-linux-riscv64-musl@1.9.0: - resolution: {integrity: sha512-bEPBosut8/8KQbUixPry8zg/fOzVOWyvwzOfz0C0Rw6dp+wIBseyiHKjkcSyZKv/98edrbMknBaMNJfA/UEdqw==} - cpu: [riscv64] - os: [linux] - requiresBuild: true + /@vitest/eslint-plugin@1.3.4(eslint@8.57.0)(supports-color@8.1.1)(typescript@5.2.2)(vitest@3.2.4): + resolution: {integrity: sha512-EOg8d0jn3BAiKnR55WkFxmxfWA3nmzrbIIuOXyTe6A72duryNgyU+bdBEauA97Aab3ho9kLmAwgPX63Ckj4QEg==} + peerDependencies: + eslint: '>= 8.57.0' + typescript: '>= 5.0.0' + vitest: '*' + peerDependenciesMeta: + typescript: + optional: true + vitest: + optional: true + dependencies: + '@typescript-eslint/utils': 8.35.1(eslint@8.57.0)(supports-color@8.1.1)(typescript@5.2.2) + eslint: 8.57.0(supports-color@8.1.1) + typescript: 5.2.2 + vitest: 3.2.4(@types/node@18.19.50)(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color dev: true - optional: true - /@unrs/resolver-binding-linux-s390x-gnu@1.9.0: - resolution: {integrity: sha512-LDtMT7moE3gK753gG4pc31AAqGUC86j3AplaFusc717EUGF9ZFJ356sdQzzZzkBk1XzMdxFyZ4f/i35NKM/lFA==} - cpu: [s390x] - os: [linux] - requiresBuild: true + /@vitest/expect@3.2.4: + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + dependencies: + '@types/chai': 5.2.2 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.2.0 + tinyrainbow: 2.0.0 dev: true - optional: true - /@unrs/resolver-binding-linux-x64-gnu@1.9.0: - resolution: {integrity: sha512-WmFd5KINHIXj8o1mPaT8QRjA9HgSXhN1gl9Da4IZihARihEnOylu4co7i/yeaIpcfsI6sYs33cNZKyHYDh0lrA==} - cpu: [x64] - os: [linux] - requiresBuild: true + /@vitest/mocker@3.2.4(vite@6.3.5): + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.17 + vite: 6.3.5(@types/node@18.19.50) dev: true - optional: true - /@unrs/resolver-binding-linux-x64-musl@1.9.0: - resolution: {integrity: sha512-CYuXbANW+WgzVRIl8/QvZmDaZxrqvOldOwlbUjIM4pQ46FJ0W5cinJ/Ghwa/Ng1ZPMJMk1VFdsD/XwmCGIXBWg==} - cpu: [x64] - os: [linux] - requiresBuild: true + /@vitest/pretty-format@3.2.4: + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + dependencies: + tinyrainbow: 2.0.0 dev: true - optional: true - /@unrs/resolver-binding-wasm32-wasi@1.9.0: - resolution: {integrity: sha512-6Rp2WH0OoitMYR57Z6VE8Y6corX8C6QEMWLgOV6qXiJIeZ1F9WGXY/yQ8yDC4iTraotyLOeJ2Asea0urWj2fKQ==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - requiresBuild: true + /@vitest/runner@3.2.4: + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} dependencies: - '@napi-rs/wasm-runtime': 0.2.11 + '@vitest/utils': 3.2.4 + pathe: 2.0.3 + strip-literal: 3.0.0 dev: true - optional: true - /@unrs/resolver-binding-win32-arm64-msvc@1.9.0: - resolution: {integrity: sha512-rknkrTRuvujprrbPmGeHi8wYWxmNVlBoNW8+4XF2hXUnASOjmuC9FNF1tGbDiRQWn264q9U/oGtixyO3BT8adQ==} - cpu: [arm64] - os: [win32] - requiresBuild: true + /@vitest/snapshot@3.2.4: + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + dependencies: + '@vitest/pretty-format': 3.2.4 + magic-string: 0.30.17 + pathe: 2.0.3 dev: true - optional: true - /@unrs/resolver-binding-win32-ia32-msvc@1.9.0: - resolution: {integrity: sha512-Ceymm+iBl+bgAICtgiHyMLz6hjxmLJKqBim8tDzpX61wpZOx2bPK6Gjuor7I2RiUynVjvvkoRIkrPyMwzBzF3A==} - cpu: [ia32] - os: [win32] - requiresBuild: true + /@vitest/spy@3.2.4: + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + dependencies: + tinyspy: 4.0.3 dev: true - optional: true - /@unrs/resolver-binding-win32-x64-msvc@1.9.0: - resolution: {integrity: sha512-k59o9ZyeyS0hAlcaKFezYSH2agQeRFEB7KoQLXl3Nb3rgkqT1NY9Vwy+SqODiLmYnEjxWJVRE/yq2jFVqdIxZw==} - cpu: [x64] - os: [win32] - requiresBuild: true + /@vitest/utils@3.2.4: + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + dependencies: + '@vitest/pretty-format': 3.2.4 + loupe: 3.1.4 + tinyrainbow: 2.0.0 dev: true - optional: true /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -2004,13 +1165,6 @@ packages: uri-js: 4.4.1 dev: true - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - dev: true - /ansi-escapes@7.0.0: resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} engines: {node: '>=18'} @@ -2027,43 +1181,17 @@ packages: engines: {node: '>=12'} dev: true - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true - /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true - /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} dev: true - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true @@ -2139,85 +1267,24 @@ packages: is-shared-array-buffer: 1.0.3 dev: true - /available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - dependencies: - possible-typed-array-names: 1.0.0 - dev: true - - /babel-jest@30.0.0(@babel/core@7.27.4)(supports-color@8.1.1): - resolution: {integrity: sha512-JQ0DhdFjODbSawDf0026uZuwaqfKkQzk+9mwWkq2XkKFIaMhFVOxlVmbFCOnnC76jATdxrff3IiUAvOAJec6tw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - peerDependencies: - '@babel/core': ^7.11.0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@jest/transform': 30.0.0(supports-color@8.1.1) - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 7.0.0(supports-color@8.1.1) - babel-preset-jest: 30.0.0(@babel/core@7.27.4) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-istanbul@7.0.0(supports-color@8.1.1): - resolution: {integrity: sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw==} + /assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - dependencies: - '@babel/helper-plugin-utils': 7.20.2 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 6.0.3(supports-color@8.1.1) - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color dev: true - /babel-plugin-jest-hoist@30.0.0: - resolution: {integrity: sha512-DSRm+US/FCB4xPDD6Rnslb6PAF9Bej1DZ+1u4aTiqJnk7ZX12eHsnDiIOqjGvITCq+u6wLqUhgS+faCNbVY8+g==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + /ast-v8-to-istanbul@0.3.4: + resolution: {integrity: sha512-cxrAnZNLBnQwBPByK4CeDaw5sWZtMilJE/Q3iDA0aamgaIVNDF9T6K2/8DfYDZEejZ2jNnDrG9m8MY72HFd0KA==} dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.27.6 - '@types/babel__core': 7.20.5 + '@jridgewell/trace-mapping': 0.3.30 + estree-walker: 3.0.3 + js-tokens: 9.0.1 dev: true - /babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.4): - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.4) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.4) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.4) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.4) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.4) - dev: true - - /babel-preset-jest@30.0.0(@babel/core@7.27.4): - resolution: {integrity: sha512-hgEuu/W7gk8QOWUA9+m3Zk+WpGvKc1Egp6rFQEfYxEoM9Fk/q8nuTXNL65OkhwGrTApauEGgakOoWVXj+UfhKw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - peerDependencies: - '@babel/core': ^7.11.0 + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - babel-plugin-jest-hoist: 30.0.0 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.4) + possible-typed-array-names: 1.0.0 dev: true /balanced-match@1.0.2: @@ -2244,36 +1311,9 @@ packages: fill-range: 7.1.1 dev: true - /browserslist@4.21.4: - resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001441 - electron-to-chromium: 1.4.284 - node-releases: 2.0.8 - update-browserslist-db: 1.0.10(browserslist@4.21.4) - dev: true - - /browserslist@4.25.0: - resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001723 - electron-to-chromium: 1.5.167 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.0) - dev: true - - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - dependencies: - node-int64: 0.4.0 - dev: true - - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} dev: true /call-bind@1.0.7: @@ -2292,31 +1332,15 @@ packages: engines: {node: '>=6'} dev: true - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true - - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: true - - /caniuse-lite@1.0.30001441: - resolution: {integrity: sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==} - dev: true - - /caniuse-lite@1.0.30001723: - resolution: {integrity: sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==} - dev: true - - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + /chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.4 + pathval: 2.0.0 dev: true /chalk@4.1.2: @@ -2331,18 +1355,9 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true - /char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true - - /ci-info@4.2.0: - resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} - engines: {node: '>=8'} - dev: true - - /cjs-module-lexer@2.1.0: - resolution: {integrity: sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==} + /check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} dev: true /cli-cursor@5.0.0: @@ -2368,31 +1383,12 @@ packages: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - /co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true - - /collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - dev: true - - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: true - /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true - /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -2409,14 +1405,6 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true - - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true - /coveralls-next@5.0.0: resolution: {integrity: sha512-RCj6Oflf6iQtN3Q5b0SSemEbQBzeBjQlLUrc3bfNECTy83hMJA9krdNZ5GTRm7Jpbyo92yKUbQDP5FYlWcL5sA==} engines: {node: '>=18'} @@ -2536,22 +1524,26 @@ packages: supports-color: 8.1.1 dev: true - /dedent@1.6.0: - resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} + /debug@4.4.1(supports-color@8.1.1): + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} peerDependencies: - babel-plugin-macros: ^3.1.0 + supports-color: '*' peerDependenciesMeta: - babel-plugin-macros: + supports-color: optional: true + dependencies: + ms: 2.1.3 + supports-color: 8.1.1 dev: true - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + /deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} dev: 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==} dev: true /define-data-property@1.1.4: @@ -2572,11 +1564,6 @@ packages: object-keys: 1.1.1 dev: true - /detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true - /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -2602,19 +1589,6 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.284: - resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} - dev: true - - /electron-to-chromium@1.5.167: - resolution: {integrity: sha512-LxcRvnYO5ez2bMOFpbuuVuAI5QNeY1ncVytE/KXaL6ZNfzX1yPlAO0nSOyIHx2fVAuUprMqPs/TdVhUFZy7SIQ==} - dev: true - - /emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - dev: true - /emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} dev: true @@ -2631,12 +1605,6 @@ packages: engines: {node: '>=18'} dev: true - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: true - /es-abstract@1.23.3: resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} @@ -2701,6 +1669,10 @@ packages: engines: {node: '>= 0.4'} dev: true + /es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + dev: true + /es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} @@ -2765,24 +1737,9 @@ packages: '@esbuild/win32-x64': 0.25.0 dev: true - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - - /escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - dev: true - - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true - - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -2873,7 +1830,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.18.0)(eslint@8.57.0)(jest@30.0.0)(supports-color@8.1.1)(typescript@5.2.2): + /eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.18.0)(eslint@8.57.0)(supports-color@8.1.1)(typescript@5.2.2): resolution: {integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -2889,7 +1846,6 @@ packages: '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.0)(supports-color@8.1.1)(typescript@5.2.2) '@typescript-eslint/utils': 5.60.0(eslint@8.57.0)(supports-color@8.1.1)(typescript@5.2.2) eslint: 8.57.0(supports-color@8.1.1) - jest: 30.0.0(@types/node@18.19.50)(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript @@ -2945,6 +1901,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + /eslint@8.57.0(supports-color@8.1.1): resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3001,12 +1962,6 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true - /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} @@ -3031,6 +1986,12 @@ packages: engines: {node: '>=4.0'} dev: true + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.8 + dev: true + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -3040,21 +2001,6 @@ packages: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} dev: true - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - 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 - dev: true - /execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -3070,21 +2016,9 @@ packages: strip-final-newline: 3.0.0 dev: true - /exit-x@0.2.2: - resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==} - engines: {node: '>= 0.8.0'} - dev: true - - /expect@30.0.0: - resolution: {integrity: sha512-xCdPp6gwiR9q9lsPCHANarIkFTN/IMZso6Kkq03sOm9IIGtzK/UJqml0dkhHibGh8HKOj8BIDIpZ0BZuU7QK6w==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/expect-utils': 30.0.0 - '@jest/get-type': 30.0.0 - jest-matcher-utils: 30.0.0 - jest-message-util: 30.0.0 - jest-mock: 30.0.0 - jest-util: 30.0.0 + /expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + engines: {node: '>=12.0.0'} dev: true /fast-deep-equal@3.1.3: @@ -3106,6 +2040,17 @@ packages: micromatch: 4.0.5 dev: true + /fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + dev: true + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true @@ -3120,10 +2065,15 @@ packages: reusify: 1.0.4 dev: true - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + /fdir@6.4.6(picomatch@4.0.2): + resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true dependencies: - bser: 2.1.1 + picomatch: 4.0.2 dev: true /file-entry-cache@6.0.1: @@ -3140,14 +2090,6 @@ packages: to-regex-range: 5.0.1 dev: true - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -3212,11 +2154,6 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -3237,16 +2174,6 @@ packages: hasown: 2.0.2 dev: true - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true - - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true - /get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -3298,11 +2225,6 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - /globals@13.19.0: resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} engines: {node: '>=8'} @@ -3336,10 +2258,6 @@ packages: get-intrinsic: 1.2.4 dev: true - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true - /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true @@ -3348,11 +2266,6 @@ packages: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true - /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -3391,11 +2304,6 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true - /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -3425,15 +2333,6 @@ packages: resolve-from: 4.0.0 dev: true - /import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true - /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -3472,10 +2371,6 @@ packages: get-intrinsic: 1.2.4 dev: true - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true - /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -3537,11 +2432,6 @@ packages: get-east-asian-width: 1.2.0 dev: true - /is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true - /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -3586,11 +2476,6 @@ packages: call-bind: 1.0.7 dev: true - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3627,504 +2512,53 @@ packages: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true - - /istanbul-lib-instrument@6.0.0(supports-color@8.1.1): - resolution: {integrity: sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.20.7(supports-color@8.1.1) - '@babel/parser': 7.20.7 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-instrument@6.0.3(supports-color@8.1.1): - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/parser': 7.27.5 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 - supports-color: 7.2.0 - dev: true - - /istanbul-lib-source-maps@5.0.6(supports-color@8.1.1): - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} - engines: {node: '>=10'} - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.6(supports-color@8.1.1) - istanbul-lib-coverage: 3.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - dev: true - - /jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - dev: true - - /jest-changed-files@30.0.0: - resolution: {integrity: sha512-rzGpvCdPdEV1Ma83c1GbZif0L2KAm3vXSXGRlpx7yCt0vhruwCNouKNRh3SiVcISHP1mb3iJzjb7tAEnNu1laQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - execa: 5.1.1 - jest-util: 30.0.0 - p-limit: 3.1.0 - dev: true - - /jest-circus@30.0.0(supports-color@8.1.1): - resolution: {integrity: sha512-nTwah78qcKVyndBS650hAkaEmwWGaVsMMoWdJwMnH77XArRJow2Ir7hc+8p/mATtxVZuM9OTkA/3hQocRIK5Dw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/environment': 30.0.0 - '@jest/expect': 30.0.0(supports-color@8.1.1) - '@jest/test-result': 30.0.0 - '@jest/types': 30.0.0 - '@types/node': 18.19.50 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.6.0 - is-generator-fn: 2.1.0 - jest-each: 30.0.0 - jest-matcher-utils: 30.0.0 - jest-message-util: 30.0.0 - jest-runtime: 30.0.0(supports-color@8.1.1) - jest-snapshot: 30.0.0(supports-color@8.1.1) - jest-util: 30.0.0 - p-limit: 3.1.0 - pretty-format: 30.0.0 - pure-rand: 7.0.1 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - dev: true - - /jest-cli@30.0.0(@types/node@18.19.50)(supports-color@8.1.1): - resolution: {integrity: sha512-fWKAgrhlwVVCfeizsmIrPRTBYTzO82WSba3gJniZNR3PKXADgdC0mmCSK+M+t7N8RCXOVfY6kvCkvjUNtzmHYQ==} - 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 - dependencies: - '@jest/core': 30.0.0(supports-color@8.1.1) - '@jest/test-result': 30.0.0 - '@jest/types': 30.0.0 - chalk: 4.1.2 - exit-x: 0.2.2 - import-local: 3.2.0 - jest-config: 30.0.0(@types/node@18.19.50)(supports-color@8.1.1) - jest-util: 30.0.0 - jest-validate: 30.0.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - dev: true - - /jest-config@30.0.0(@types/node@18.19.50)(supports-color@8.1.1): - resolution: {integrity: sha512-p13a/zun+sbOMrBnTEUdq/5N7bZMOGd1yMfqtAJniPNuzURMay4I+vxZLK1XSDbjvIhmeVdG8h8RznqYyjctyg==} - 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 - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@jest/get-type': 30.0.0 - '@jest/pattern': 30.0.0 - '@jest/test-sequencer': 30.0.0 - '@jest/types': 30.0.0 - '@types/node': 18.19.50 - babel-jest: 30.0.0(@babel/core@7.27.4)(supports-color@8.1.1) - chalk: 4.1.2 - ci-info: 4.2.0 - deepmerge: 4.3.1 - glob: 10.4.5 - graceful-fs: 4.2.11 - jest-circus: 30.0.0(supports-color@8.1.1) - jest-docblock: 30.0.0 - jest-environment-node: 30.0.0 - jest-regex-util: 30.0.0 - jest-resolve: 30.0.0 - jest-runner: 30.0.0(supports-color@8.1.1) - jest-util: 30.0.0 - jest-validate: 30.0.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 30.0.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - dev: true - - /jest-create-mock-instance@2.0.0: - resolution: {integrity: sha512-gW3H87m8hF72JMFPMEorF2jnEyV31XpaOYtDqeRNSwFT73+MNZvbUKQfCbdixxOrCCppToSPmi9gGygIzms6Eg==} - dev: true - - /jest-diff@30.0.0: - resolution: {integrity: sha512-TgT1+KipV8JTLXXeFX0qSvIJR/UXiNNojjxb/awh3vYlBZyChU/NEmyKmq+wijKjWEztyrGJFL790nqMqNjTHA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/diff-sequences': 30.0.0 - '@jest/get-type': 30.0.0 - chalk: 4.1.2 - pretty-format: 30.0.0 - dev: true - - /jest-docblock@30.0.0: - resolution: {integrity: sha512-By/iQ0nvTzghEecGzUMCp1axLtBh+8wB4Hpoi5o+x1stycjEmPcH1mHugL4D9Q+YKV++vKeX/3ZTW90QC8ICPg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - detect-newline: 3.1.0 - dev: true - - /jest-each@30.0.0: - resolution: {integrity: sha512-qkFEW3cfytEjG2KtrhwtldZfXYnWSanO8xUMXLe4A6yaiHMHJUalk0Yyv4MQH6aeaxgi4sGVrukvF0lPMM7U1w==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/get-type': 30.0.0 - '@jest/types': 30.0.0 - chalk: 4.1.2 - jest-util: 30.0.0 - pretty-format: 30.0.0 - dev: true - - /jest-environment-node@30.0.0: - resolution: {integrity: sha512-sF6lxyA25dIURyDk4voYmGU9Uwz2rQKMfjxKnDd19yk+qxKGrimFqS5YsPHWTlAVBo+YhWzXsqZoaMzrTFvqfg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/environment': 30.0.0 - '@jest/fake-timers': 30.0.0 - '@jest/types': 30.0.0 - '@types/node': 18.19.50 - jest-mock: 30.0.0 - jest-util: 30.0.0 - jest-validate: 30.0.0 - dev: true - - /jest-haste-map@30.0.0: - resolution: {integrity: sha512-p4bXAhXTawTsADgQgTpbymdLaTyPW1xWNu1oIGG7/N3LIAbZVkH2JMJqS8/IUcnGR8Kc7WFE+vWbJvsqGCWZXw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/types': 30.0.0 - '@types/node': 18.19.50 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 30.0.0 - jest-util: 30.0.0 - jest-worker: 30.0.0 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /jest-leak-detector@30.0.0: - resolution: {integrity: sha512-E/ly1azdVVbZrS0T6FIpyYHvsdek4FNaThJTtggjV/8IpKxh3p9NLndeUZy2+sjAI3ncS+aM0uLLon/dBg8htA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/get-type': 30.0.0 - pretty-format: 30.0.0 - dev: true - - /jest-matcher-utils@30.0.0: - resolution: {integrity: sha512-m5mrunqopkrqwG1mMdJxe1J4uGmS9AHHKYUmoxeQOxBcLjEvirIrIDwuKmUYrecPHVB/PUBpXs2gPoeA2FSSLQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/get-type': 30.0.0 - chalk: 4.1.2 - jest-diff: 30.0.0 - pretty-format: 30.0.0 - dev: true - - /jest-message-util@30.0.0: - resolution: {integrity: sha512-pV3qcrb4utEsa/U7UI2VayNzSDQcmCllBZLSoIucrESRu0geKThFZOjjh0kACDJFJRAQwsK7GVsmS6SpEceD8w==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@babel/code-frame': 7.27.1 - '@jest/types': 30.0.0 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 30.0.0 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true - - /jest-mock@30.0.0: - resolution: {integrity: sha512-W2sRA4ALXILrEetEOh2ooZG6fZ01iwVs0OWMKSSWRcUlaLr4ESHuiKXDNTg+ZVgOq8Ei5445i/Yxrv59VT+XkA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/types': 30.0.0 - '@types/node': 18.19.50 - jest-util: 30.0.0 - dev: true - - /jest-pnp-resolver@1.2.3(jest-resolve@30.0.0): - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 30.0.0 - dev: true - - /jest-regex-util@30.0.0: - resolution: {integrity: sha512-rT84010qRu/5OOU7a9TeidC2Tp3Qgt9Sty4pOZ/VSDuEmRupIjKZAb53gU3jr4ooMlhwScrgC9UixJxWzVu9oQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dev: true - - /jest-resolve-dependencies@30.0.0(supports-color@8.1.1): - resolution: {integrity: sha512-Yhh7odCAUNXhluK1bCpwIlHrN1wycYaTlZwq1GdfNBEESNNI/z1j1a7dUEWHbmB9LGgv0sanxw3JPmWU8NeebQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - jest-regex-util: 30.0.0 - jest-snapshot: 30.0.0(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - dev: true - - /jest-resolve@30.0.0: - resolution: {integrity: sha512-zwWl1P15CcAfuQCEuxszjiKdsValhnWcj/aXg/R3aMHs8HVoCWHC4B/+5+1BirMoOud8NnN85GSP2LEZCbj3OA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 30.0.0 - jest-pnp-resolver: 1.2.3(jest-resolve@30.0.0) - jest-util: 30.0.0 - jest-validate: 30.0.0 - slash: 3.0.0 - unrs-resolver: 1.9.0 - dev: true - - /jest-runner@30.0.0(supports-color@8.1.1): - resolution: {integrity: sha512-xbhmvWIc8X1IQ8G7xTv0AQJXKjBVyxoVJEJgy7A4RXsSaO+k/1ZSBbHwjnUhvYqMvwQPomWssDkUx6EoidEhlw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/console': 30.0.0 - '@jest/environment': 30.0.0 - '@jest/test-result': 30.0.0 - '@jest/transform': 30.0.0(supports-color@8.1.1) - '@jest/types': 30.0.0 - '@types/node': 18.19.50 - chalk: 4.1.2 - emittery: 0.13.1 - exit-x: 0.2.2 - graceful-fs: 4.2.11 - jest-docblock: 30.0.0 - jest-environment-node: 30.0.0 - jest-haste-map: 30.0.0 - jest-leak-detector: 30.0.0 - jest-message-util: 30.0.0 - jest-resolve: 30.0.0 - jest-runtime: 30.0.0(supports-color@8.1.1) - jest-util: 30.0.0 - jest-watcher: 30.0.0 - jest-worker: 30.0.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-runtime@30.0.0(supports-color@8.1.1): - resolution: {integrity: sha512-/O07qVgFrFAOGKGigojmdR3jUGz/y3+a/v9S/Yi2MHxsD+v6WcPppglZJw0gNJkRBArRDK8CFAwpM/VuEiiRjA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/environment': 30.0.0 - '@jest/fake-timers': 30.0.0 - '@jest/globals': 30.0.0(supports-color@8.1.1) - '@jest/source-map': 30.0.0 - '@jest/test-result': 30.0.0 - '@jest/transform': 30.0.0(supports-color@8.1.1) - '@jest/types': 30.0.0 - '@types/node': 18.19.50 - chalk: 4.1.2 - cjs-module-lexer: 2.1.0 - collect-v8-coverage: 1.0.2 - glob: 10.4.5 - graceful-fs: 4.2.11 - jest-haste-map: 30.0.0 - jest-message-util: 30.0.0 - jest-mock: 30.0.0 - jest-regex-util: 30.0.0 - jest-resolve: 30.0.0 - jest-snapshot: 30.0.0(supports-color@8.1.1) - jest-util: 30.0.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-snapshot@30.0.0(supports-color@8.1.1): - resolution: {integrity: sha512-6oCnzjpvfj/UIOMTqKZ6gedWAUgaycMdV8Y8h2dRJPvc2wSjckN03pzeoonw8y33uVngfx7WMo1ygdRGEKOT7w==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@babel/core': 7.27.4(supports-color@8.1.1) - '@babel/generator': 7.27.5 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4) - '@babel/types': 7.27.6 - '@jest/expect-utils': 30.0.0 - '@jest/get-type': 30.0.0 - '@jest/snapshot-utils': 30.0.0 - '@jest/transform': 30.0.0(supports-color@8.1.1) - '@jest/types': 30.0.0 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.4) - chalk: 4.1.2 - expect: 30.0.0 - graceful-fs: 4.2.11 - jest-diff: 30.0.0 - jest-matcher-utils: 30.0.0 - jest-message-util: 30.0.0 - jest-util: 30.0.0 - pretty-format: 30.0.0 - semver: 7.7.2 - synckit: 0.11.8 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-util@30.0.0: - resolution: {integrity: sha512-fhNBBM9uSUbd4Lzsf8l/kcAdaHD/4SgoI48en3HXcBEMwKwoleKFMZ6cYEYs21SB779PRuRCyNLmymApAm8tZw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/types': 30.0.0 - '@types/node': 18.19.50 - chalk: 4.1.2 - ci-info: 4.2.0 - graceful-fs: 4.2.11 - picomatch: 4.0.2 - dev: true - - /jest-validate@30.0.0: - resolution: {integrity: sha512-d6OkzsdlWItHAikUDs1hlLmpOIRhsZoXTCliV2XXalVQ3ZOeb9dy0CQ6AKulJu/XOZqpOEr/FiMH+FeOBVV+nw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/get-type': 30.0.0 - '@jest/types': 30.0.0 - camelcase: 6.3.0 - chalk: 4.1.2 - leven: 3.1.0 - pretty-format: 30.0.0 + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /jest-watcher@30.0.0: - resolution: {integrity: sha512-fbAkojcyS53bOL/B7XYhahORq9cIaPwOgd/p9qW/hybbC8l6CzxfWJJxjlPBAIVN8dRipLR0zdhpGQdam+YBtw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/test-result': 30.0.0 - '@jest/types': 30.0.0 - '@types/node': 18.19.50 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 30.0.0 - string-length: 4.0.2 + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} dev: true - /jest-worker@30.0.0: - resolution: {integrity: sha512-VZvxfWIybIvwK8N/Bsfe43LfQgd/rD0c4h5nLUx78CAqPxIQcW2qDjsVAC53iUR8yxzFIeCFFvWOh8en8hGzdg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} dependencies: - '@types/node': 18.19.50 - '@ungap/structured-clone': 1.3.0 - jest-util: 30.0.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 dev: true - /jest@30.0.0(@types/node@18.19.50)(supports-color@8.1.1): - resolution: {integrity: sha512-/3G2iFwsUY95vkflmlDn/IdLyLWqpQXcftptooaPH4qkyU52V7qVYf1BjmdSPlp1+0fs6BmNtrGaSFwOfV07ew==} - 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 + /istanbul-lib-source-maps@5.0.6(supports-color@8.1.1): + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} dependencies: - '@jest/core': 30.0.0(supports-color@8.1.1) - '@jest/types': 30.0.0 - import-local: 3.2.0 - jest-cli: 30.0.0(@types/node@18.19.50)(supports-color@8.1.1) + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.4.1(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - esbuild-register - supports-color - - ts-node dev: true - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 dev: true - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} dependencies: - argparse: 1.0.10 - esprima: 4.0.1 + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} dev: true /js-yaml@4.1.0: @@ -4134,22 +2568,6 @@ packages: argparse: 2.0.1 dev: true - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - dev: true - - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true - /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -4165,26 +2583,11 @@ packages: minimist: 1.2.8 dev: true - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: true - - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true - /lcov-parse@1.0.0: resolution: {integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==} hasBin: true dev: true - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: true - /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -4198,10 +2601,6 @@ packages: engines: {node: '>=14'} dev: true - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true - /lint-staged@15.2.10(supports-color@8.1.1): resolution: {integrity: sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==} engines: {node: '>=18.12.0'} @@ -4233,13 +2632,6 @@ packages: wrap-ansi: 9.0.0 dev: true - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: true - /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -4267,14 +2659,12 @@ packages: wrap-ansi: 9.0.0 dev: true - /lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + /loupe@3.1.4: + resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} dev: true - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} dev: true /lru-cache@6.0.0: @@ -4284,17 +2674,25 @@ packages: yallist: 4.0.0 dev: true - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + /magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} dependencies: - semver: 6.3.1 + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + + /magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + dependencies: + '@babel/parser': 7.28.3 + '@babel/types': 7.28.2 + source-map-js: 1.2.1 dev: true - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} dependencies: - tmpl: 1.0.5 + semver: 7.7.2 dev: true /merge-stream@2.0.0: @@ -4322,11 +2720,6 @@ packages: picomatch: 2.3.1 dev: true - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -4367,9 +2760,9 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /napi-postinstall@0.2.4: - resolution: {integrity: sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==} - 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 dev: true @@ -4377,30 +2770,6 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true - - /node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - dev: true - - /node-releases@2.0.8: - resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} - dev: true - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true - /npm-run-path@5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4462,13 +2831,6 @@ packages: wrappy: 1.0.2 dev: true - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -4495,13 +2857,6 @@ packages: type-check: 0.4.0 dev: true - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true - /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -4509,13 +2864,6 @@ packages: yocto-queue: 0.1.0 dev: true - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: true - /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -4523,11 +2871,6 @@ packages: p-limit: 3.1.0 dev: true - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true - /package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} dev: true @@ -4539,16 +2882,6 @@ packages: callsites: 3.1.0 dev: true - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.18.6 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true - /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -4586,8 +2919,13 @@ packages: engines: {node: '>=8'} dev: true - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + /pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + dev: true + + /pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} dev: true /picocolors@1.1.1: @@ -4610,23 +2948,20 @@ packages: hasBin: true dev: true - /pirates@4.0.7: - resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} - engines: {node: '>= 6'} - dev: true - - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: true - /possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} dev: true + /postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + dev: true + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -4645,32 +2980,15 @@ packages: hasBin: true dev: true - /pretty-format@30.0.0: - resolution: {integrity: sha512-18NAOUr4ZOQiIR+BgI5NhQE7uREdx4ZyV0dyay5izh4yfQ+1T7BSvggxvRGoXocrRyevqW5OhScUjbi9GB8R8Q==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - dependencies: - '@jest/schemas': 30.0.0 - ansi-styles: 5.2.0 - react-is: 18.3.1 - dev: true - /punycode@2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} dev: true - /pure-rand@7.0.1: - resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} - dev: true - /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - dev: true - /regexp.prototype.flags@1.5.2: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} @@ -4685,23 +3003,11 @@ 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'} - dependencies: - resolve-from: 5.0.0 - dev: true - /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -4735,6 +3041,36 @@ packages: glob: 7.2.3 dev: true + /rollup@4.44.0: + resolution: {integrity: sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.44.0 + '@rollup/rollup-android-arm64': 4.44.0 + '@rollup/rollup-darwin-arm64': 4.44.0 + '@rollup/rollup-darwin-x64': 4.44.0 + '@rollup/rollup-freebsd-arm64': 4.44.0 + '@rollup/rollup-freebsd-x64': 4.44.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.44.0 + '@rollup/rollup-linux-arm-musleabihf': 4.44.0 + '@rollup/rollup-linux-arm64-gnu': 4.44.0 + '@rollup/rollup-linux-arm64-musl': 4.44.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.44.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.44.0 + '@rollup/rollup-linux-riscv64-gnu': 4.44.0 + '@rollup/rollup-linux-riscv64-musl': 4.44.0 + '@rollup/rollup-linux-s390x-gnu': 4.44.0 + '@rollup/rollup-linux-x64-gnu': 4.44.0 + '@rollup/rollup-linux-x64-musl': 4.44.0 + '@rollup/rollup-win32-arm64-msvc': 4.44.0 + '@rollup/rollup-win32-ia32-msvc': 4.44.0 + '@rollup/rollup-win32-x64-msvc': 4.44.0 + fsevents: 2.3.3 + dev: true + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -4856,8 +3192,8 @@ packages: object-inspect: 1.13.2 dev: true - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true /signal-exit@4.1.0: @@ -4886,27 +3222,17 @@ packages: is-fullwidth-code-point: 5.0.0 dev: true - /source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /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'} dev: true - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 + /std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} dev: true /string-argv@0.3.2: @@ -4914,14 +3240,6 @@ packages: engines: {node: '>=0.6.19'} dev: true - /string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - dev: true - /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -4993,16 +3311,6 @@ packages: engines: {node: '>=4'} dev: true - /strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true - - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -5013,11 +3321,10 @@ packages: engines: {node: '>=8'} dev: true - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + /strip-literal@3.0.0: + resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} dependencies: - has-flag: 3.0.0 + js-tokens: 9.0.1 dev: true /supports-color@7.2.0: @@ -5037,13 +3344,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /synckit@0.11.8: - resolution: {integrity: sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==} - engines: {node: ^14.18.0 || >=16.0.0} - dependencies: - '@pkgr/core': 0.2.7 - dev: true - /synckit@0.9.1: resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} engines: {node: ^14.18.0 || >=16.0.0} @@ -5052,26 +3352,48 @@ packages: tslib: 2.7.0 dev: true - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} + /test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} dependencies: '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 + glob: 10.4.5 + minimatch: 9.0.5 dev: true /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + /tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} dev: true - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} + /tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + dev: true + + /tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + dependencies: + fdir: 6.4.6(picomatch@4.0.2) + picomatch: 4.0.2 + dev: true + + /tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} + engines: {node: ^18.0.0 || >=20.0.0} + dev: true + + /tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@4.0.3: + resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + engines: {node: '>=14.0.0'} dev: true /to-regex-range@5.0.1: @@ -5095,6 +3417,15 @@ packages: typescript: 5.2.2 dev: true + /ts-api-utils@2.1.0(typescript@5.2.2): + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + dependencies: + typescript: 5.2.2 + dev: true + /tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: @@ -5132,21 +3463,11 @@ packages: prelude-ls: 1.2.1 dev: true - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true - /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: true - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true - /typed-array-buffer@1.0.2: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} @@ -5210,74 +3531,153 @@ packages: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true - /unrs-resolver@1.9.0: - resolution: {integrity: sha512-wqaRu4UnzBD2ABTC1kLfBjAqIDZ5YUTr/MLGa7By47JV1bJDSW7jq/ZSLigB7enLe7ubNaJhtnBXgrc/50cEhg==} - requiresBuild: true - dependencies: - napi-postinstall: 0.2.4 - optionalDependencies: - '@unrs/resolver-binding-android-arm-eabi': 1.9.0 - '@unrs/resolver-binding-android-arm64': 1.9.0 - '@unrs/resolver-binding-darwin-arm64': 1.9.0 - '@unrs/resolver-binding-darwin-x64': 1.9.0 - '@unrs/resolver-binding-freebsd-x64': 1.9.0 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.9.0 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.9.0 - '@unrs/resolver-binding-linux-arm64-gnu': 1.9.0 - '@unrs/resolver-binding-linux-arm64-musl': 1.9.0 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.9.0 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.9.0 - '@unrs/resolver-binding-linux-riscv64-musl': 1.9.0 - '@unrs/resolver-binding-linux-s390x-gnu': 1.9.0 - '@unrs/resolver-binding-linux-x64-gnu': 1.9.0 - '@unrs/resolver-binding-linux-x64-musl': 1.9.0 - '@unrs/resolver-binding-wasm32-wasi': 1.9.0 - '@unrs/resolver-binding-win32-arm64-msvc': 1.9.0 - '@unrs/resolver-binding-win32-ia32-msvc': 1.9.0 - '@unrs/resolver-binding-win32-x64-msvc': 1.9.0 - dev: true - - /update-browserslist-db@1.0.10(browserslist@4.21.4): - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - browserslist: 4.21.4 - escalade: 3.1.1 - picocolors: 1.0.0 + punycode: 2.1.1 dev: true - /update-browserslist-db@1.1.3(browserslist@4.25.0): - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + /vite-node@3.2.4(@types/node@18.19.50)(supports-color@8.1.1): + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.25.0 - escalade: 3.2.0 - picocolors: 1.1.1 - dev: true - - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.1.1 + cac: 6.7.14 + debug: 4.4.1(supports-color@8.1.1) + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 6.3.5(@types/node@18.19.50) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml dev: true - /v8-to-istanbul@9.0.1: - resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} - engines: {node: '>=10.12.0'} + /vite@6.3.5(@types/node@18.19.50): + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.25 - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.9.0 + '@types/node': 18.19.50 + esbuild: 0.25.0 + fdir: 6.4.6(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.6 + rollup: 4.44.0 + tinyglobby: 0.2.14 + optionalDependencies: + fsevents: 2.3.3 dev: true - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + /vitest@3.2.4(@types/node@18.19.50)(supports-color@8.1.1): + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.2.4 + '@vitest/ui': 3.2.4 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true dependencies: - makeerror: 1.0.12 + '@types/chai': 5.2.2 + '@types/node': 18.19.50 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@6.3.5) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.2.0 + debug: 4.4.1(supports-color@8.1.1) + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + picomatch: 4.0.2 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.14 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 6.3.5(@types/node@18.19.50) + vite-node: 3.2.4(@types/node@18.19.50)(supports-color@8.1.1) + why-is-node-running: 2.3.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml dev: true /which-boxed-primitive@1.0.2: @@ -5309,6 +3709,15 @@ packages: isexe: 2.0.0 dev: true + /why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -5339,22 +3748,10 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /write-file-atomic@5.0.1: - resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - imurmurhash: 0.1.4 - signal-exit: 4.1.0 - dev: true - /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true - /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true diff --git a/src/command-parser/expand-arguments.spec.ts b/src/command-parser/expand-arguments.spec.ts index 8913ea48..8f19c6cf 100644 --- a/src/command-parser/expand-arguments.spec.ts +++ b/src/command-parser/expand-arguments.spec.ts @@ -1,3 +1,5 @@ +import { expect, it } from 'vitest'; + import { CommandInfo } from '../command'; import { ExpandArguments } from './expand-arguments'; diff --git a/src/command-parser/expand-shortcut.spec.ts b/src/command-parser/expand-shortcut.spec.ts index 5cbb8d3a..8e4e6f96 100644 --- a/src/command-parser/expand-shortcut.spec.ts +++ b/src/command-parser/expand-shortcut.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, it } from 'vitest'; + import { CommandInfo } from '../command'; import { ExpandShortcut } from './expand-shortcut'; diff --git a/src/command-parser/expand-wildcard.spec.ts b/src/command-parser/expand-wildcard.spec.ts index abfe7972..ead9995c 100644 --- a/src/command-parser/expand-wildcard.spec.ts +++ b/src/command-parser/expand-wildcard.spec.ts @@ -1,11 +1,12 @@ import fs, { PathOrFileDescriptor } from 'fs'; +import { afterEach, beforeEach, describe, expect, it, Mock, vi } from 'vitest'; import { CommandInfo } from '../command'; import { ExpandWildcard } from './expand-wildcard'; let parser: ExpandWildcard; -let readPackage: jest.Mock; -let readDeno: jest.Mock; +let readPackage: Mock; +let readDeno: Mock; const createCommandInfo = (command: string): CommandInfo => ({ command, @@ -13,13 +14,13 @@ const createCommandInfo = (command: string): CommandInfo => ({ }); beforeEach(() => { - readDeno = jest.fn(); - readPackage = jest.fn(); + readDeno = vi.fn(); + readPackage = vi.fn(); parser = new ExpandWildcard(readDeno, readPackage); }); afterEach(() => { - jest.restoreAllMocks(); + vi.restoreAllMocks(); }); describe('ExpandWildcard#readDeno', () => { @@ -28,10 +29,10 @@ describe('ExpandWildcard#readDeno', () => { name: 'deno', version: '1.14.0', }; - jest.spyOn(fs, 'existsSync').mockImplementation((path: PathOrFileDescriptor) => { + vi.spyOn(fs, 'existsSync').mockImplementation((path: PathOrFileDescriptor) => { return path === 'deno.json'; }); - jest.spyOn(fs, 'readFileSync').mockImplementation((path: PathOrFileDescriptor) => { + vi.spyOn(fs, 'readFileSync').mockImplementation((path: PathOrFileDescriptor) => { if (path === 'deno.json') { return JSON.stringify(expectedDeno); } @@ -47,10 +48,10 @@ describe('ExpandWildcard#readDeno', () => { name: 'deno', version: '1.14.0', }; - jest.spyOn(fs, 'existsSync').mockImplementation((path: PathOrFileDescriptor) => { + vi.spyOn(fs, 'existsSync').mockImplementation((path: PathOrFileDescriptor) => { return path === 'deno.jsonc'; }); - jest.spyOn(fs, 'readFileSync').mockImplementation((path: PathOrFileDescriptor) => { + vi.spyOn(fs, 'readFileSync').mockImplementation((path: PathOrFileDescriptor) => { if (path === 'deno.jsonc') { return '/* comment */\n' + JSON.stringify(expectedDeno); } @@ -66,10 +67,10 @@ describe('ExpandWildcard#readDeno', () => { name: 'deno', version: '1.14.0', }; - jest.spyOn(fs, 'existsSync').mockImplementation((path: PathOrFileDescriptor) => { + vi.spyOn(fs, 'existsSync').mockImplementation((path: PathOrFileDescriptor) => { return path === 'deno.json' || path === 'deno.jsonc'; }); - jest.spyOn(fs, 'readFileSync').mockImplementation((path: PathOrFileDescriptor) => { + vi.spyOn(fs, 'readFileSync').mockImplementation((path: PathOrFileDescriptor) => { if (path === 'deno.json') { return JSON.stringify(expectedDeno); } @@ -81,8 +82,8 @@ describe('ExpandWildcard#readDeno', () => { }); it('can handle errors reading deno', () => { - jest.spyOn(fs, 'existsSync').mockReturnValue(true); - jest.spyOn(fs, 'readFileSync').mockImplementation(() => { + vi.spyOn(fs, 'existsSync').mockReturnValue(true); + vi.spyOn(fs, 'readFileSync').mockImplementation(() => { throw new Error('Error reading deno'); }); @@ -97,7 +98,7 @@ describe('ExpandWildcard#readPackage', () => { name: 'concurrently', version: '6.4.0', }; - jest.spyOn(fs, 'readFileSync').mockImplementation((path: PathOrFileDescriptor) => { + vi.spyOn(fs, 'readFileSync').mockImplementation((path: PathOrFileDescriptor) => { if (path === 'package.json') { return JSON.stringify(expectedPackage); } @@ -109,7 +110,7 @@ describe('ExpandWildcard#readPackage', () => { }); it('can handle errors reading package', () => { - jest.spyOn(fs, 'readFileSync').mockImplementation(() => { + vi.spyOn(fs, 'readFileSync').mockImplementation(() => { throw new Error('Error reading package'); }); diff --git a/src/command-parser/strip-quotes.spec.ts b/src/command-parser/strip-quotes.spec.ts index a40cbef9..fe9a8296 100644 --- a/src/command-parser/strip-quotes.spec.ts +++ b/src/command-parser/strip-quotes.spec.ts @@ -1,3 +1,5 @@ +import { expect, it } from 'vitest'; + import { CommandInfo } from '../command'; import { StripQuotes } from './strip-quotes'; diff --git a/src/command.spec.ts b/src/command.spec.ts index 30517ee0..08ce3389 100644 --- a/src/command.spec.ts +++ b/src/command.spec.ts @@ -1,8 +1,9 @@ -import { autoUnsubscribe, subscribeSpyTo } from '@hirez_io/observer-spy'; +import { subscribeSpyTo } from '@hirez_io/observer-spy'; import { SendHandle, SpawnOptions } from 'child_process'; import { EventEmitter } from 'events'; import * as Rx from 'rxjs'; import { Readable, Writable } from 'stream'; +import { beforeEach, describe, expect, it, Mock, vi } from 'vitest'; import { ChildProcess, @@ -16,16 +17,14 @@ import { type CommandValues = { error: unknown; close: CloseEvent; timer: unknown[] }; let process: ChildProcess; -let sendMessage: jest.Mock; -let spawn: jest.Mocked; +let sendMessage: Mock; +let spawn: Mock; let killProcess: KillProcess; const IPC_FD = 3; -autoUnsubscribe(); - beforeEach(() => { - sendMessage = jest.fn(); + sendMessage = vi.fn(); process = new (class extends EventEmitter { readonly pid = 1; send = sendMessage; @@ -45,8 +44,8 @@ beforeEach(() => { }, }); })(); - spawn = jest.fn().mockReturnValue(process); - killProcess = jest.fn(); + spawn = vi.fn().mockReturnValue(process); + killProcess = vi.fn(); }); const createCommand = (overrides?: Partial, spawnOpts: SpawnOptions = {}) => { @@ -141,7 +140,7 @@ describe('#start()', () => { const { command, values } = createCommand(); const startDate = new Date(); const endDate = new Date(startDate.getTime() + 1000); - jest.spyOn(Date, 'now') + vi.spyOn(Date, 'now') .mockReturnValueOnce(startDate.getTime()) .mockReturnValueOnce(endDate.getTime()); command.start(); @@ -179,7 +178,7 @@ describe('#start()', () => { const { command, values } = createCommand(); const startDate = new Date(); const endDate = new Date(startDate.getTime() + 1000); - jest.spyOn(Date, 'now') + vi.spyOn(Date, 'now') .mockReturnValueOnce(startDate.getTime()) .mockReturnValueOnce(endDate.getTime()); command.start(); @@ -213,10 +212,10 @@ describe('#start()', () => { const { command, values } = createCommand(); const startDate = new Date(); const endDate = new Date(startDate.getTime() + 1000); - jest.spyOn(Date, 'now') + vi.spyOn(Date, 'now') .mockReturnValueOnce(startDate.getTime()) .mockReturnValueOnce(endDate.getTime()); - jest.spyOn(global.process, 'hrtime') + vi.spyOn(global.process, 'hrtime') .mockReturnValueOnce([0, 0]) .mockReturnValueOnce([1, 1e8]); command.start(); @@ -304,7 +303,7 @@ describe('#start()', () => { send: undefined, }); - const onSent = jest.fn(); + const onSent = vi.fn(); command.messages.outgoing.next({ message: {}, onSent }); expect(onSent).toHaveBeenCalledWith(expect.any(Error)); }); @@ -361,7 +360,7 @@ describe('#start()', () => { const { command } = createCommand({ ipc: IPC_FD }); command.start(); - const onSent = jest.fn(); + const onSent = vi.fn(); command.messages.outgoing.next({ message: {}, onSent }); expect(onSent).not.toHaveBeenCalled(); diff --git a/src/completion-listener.spec.ts b/src/completion-listener.spec.ts index c7ae6a4b..efcb288c 100644 --- a/src/completion-listener.spec.ts +++ b/src/completion-listener.spec.ts @@ -1,5 +1,6 @@ import { getEventListeners } from 'events'; import { TestScheduler } from 'rxjs/testing'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { CloseEvent } from './command'; import { CompletionListener, SuccessCondition } from './completion-listener'; @@ -7,6 +8,7 @@ import { createFakeCloseEvent, FakeCommand } from './fixtures/fake-command'; let commands: FakeCommand[]; let scheduler: TestScheduler; + beforeEach(() => { commands = [ new FakeCommand('foo', 'echo', 0), @@ -72,7 +74,7 @@ describe('listen', () => { }); it('check for success once all commands have emitted at least a single close event', async () => { - const finallyCallback = jest.fn(); + const finallyCallback = vi.fn(); const result = createController().listen(commands).finally(finallyCallback); // Emitting multiple close events to mimic calling command `kill/start` APIs. @@ -108,7 +110,7 @@ describe('listen', () => { }); it('waits for manually restarted events to close', async () => { - const finallyCallback = jest.fn(); + const finallyCallback = vi.fn(); const result = createController().listen(commands).finally(finallyCallback); emitFakeCloseEvent(commands[0]); diff --git a/src/concurrently.spec.ts b/src/concurrently.spec.ts index d4aab76d..f60926f5 100644 --- a/src/concurrently.spec.ts +++ b/src/concurrently.spec.ts @@ -1,36 +1,37 @@ -import { createMockInstance } from 'jest-create-mock-instance'; import os from 'os'; import { Writable } from 'stream'; +import { beforeEach, expect, it, Mock, MockedObject, vi } from 'vitest'; import { ChildProcess, KillProcess, SpawnCommand } from './command'; import { concurrently, ConcurrentlyCommandInput, ConcurrentlyOptions } from './concurrently'; +import { createMockInstance } from './fixtures/create-mock-instance'; import { createFakeProcess, FakeCommand } from './fixtures/fake-command'; import { FlowController } from './flow-control/flow-controller'; import { Logger } from './logger'; let spawn: SpawnCommand; let kill: KillProcess; -let onFinishHooks: jest.Mock[]; -let controllers: jest.Mocked[]; +let onFinishHooks: Mock[]; +let controllers: MockedObject[]; let processes: ChildProcess[]; const create = (commands: ConcurrentlyCommandInput[], options: Partial = {}) => concurrently(commands, Object.assign(options, { controllers, spawn, kill })); beforeEach(() => { - jest.resetAllMocks(); + vi.resetAllMocks(); processes = []; - spawn = jest.fn(() => { + spawn = vi.fn(() => { const process = createFakeProcess(processes.length); processes.push(process); return process; }); - kill = jest.fn(); + kill = vi.fn(); - onFinishHooks = [jest.fn(), jest.fn()]; + onFinishHooks = [vi.fn(), vi.fn()]; controllers = [ - { handle: jest.fn((commands) => ({ commands, onFinish: onFinishHooks[0] })) }, - { handle: jest.fn((commands) => ({ commands, onFinish: onFinishHooks[1] })) }, + { handle: vi.fn((commands) => ({ commands, onFinish: onFinishHooks[0] })) }, + { handle: vi.fn((commands) => ({ commands, onFinish: onFinishHooks[1] })) }, ]; }); @@ -65,7 +66,7 @@ it('log output is passed to output stream if logger is specified in options', () it('log output is not passed to output stream after it has errored', () => { const logger = new Logger({ hide: [] }); const outputStream = new Writable(); - jest.spyOn(outputStream, 'write'); + vi.spyOn(outputStream, 'write'); create(['foo'], { logger, outputStream }); outputStream.emit('error', new Error()); @@ -96,7 +97,7 @@ it('spawns commands up to configured limit at once', () => { it('spawns commands up to percent based limit at once', () => { // Mock architecture with 4 cores - const cpusSpy = jest.spyOn(os, 'cpus'); + const cpusSpy = vi.spyOn(os, 'cpus'); cpusSpy.mockReturnValue( new Array(4).fill({ model: 'Intel', diff --git a/src/concurrently.ts b/src/concurrently.ts index ecd5a585..bcfa4c64 100644 --- a/src/concurrently.ts +++ b/src/concurrently.ts @@ -1,5 +1,5 @@ import assert from 'assert'; -import { cpus } from 'os'; +import os from 'os'; import { takeUntil } from 'rxjs'; import { Writable } from 'stream'; import treeKill from 'tree-kill'; @@ -233,7 +233,7 @@ export function concurrently( const maxProcesses = Math.max( 1, (typeof options.maxProcesses === 'string' && options.maxProcesses.endsWith('%') - ? Math.round((cpus().length * Number(options.maxProcesses.slice(0, -1))) / 100) + ? Math.round((os.cpus().length * Number(options.maxProcesses.slice(0, -1))) / 100) : Number(options.maxProcesses)) || commandsLeft.length, ); for (let i = 0; i < maxProcesses; i++) { diff --git a/src/date-format.spec.ts b/src/date-format.spec.ts index 72731ddb..3a792f70 100644 --- a/src/date-format.spec.ts +++ b/src/date-format.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, it } from 'vitest'; + import { DateFormatter, FormatterOptions } from './date-format'; const withTime = (time: string) => `2000-01-01T${time}`; diff --git a/src/fixtures/create-mock-instance.ts b/src/fixtures/create-mock-instance.ts new file mode 100644 index 00000000..03e8b4af --- /dev/null +++ b/src/fixtures/create-mock-instance.ts @@ -0,0 +1,6 @@ +import { MockedObject, vi } from 'vitest'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function createMockInstance(constructor: new (...args: any[]) => T): MockedObject { + return new (vi.mockObject(constructor))() as MockedObject; +} diff --git a/src/fixtures/fake-command.ts b/src/fixtures/fake-command.ts index 97259d15..74e17db6 100644 --- a/src/fixtures/fake-command.ts +++ b/src/fixtures/fake-command.ts @@ -1,8 +1,9 @@ import EventEmitter from 'events'; -import { createMockInstance } from 'jest-create-mock-instance'; import { PassThrough, Writable } from 'stream'; +import { vi } from 'vitest'; import { ChildProcess, CloseEvent, Command, CommandInfo } from '../command'; +import { createMockInstance } from './create-mock-instance'; export class FakeCommand extends Command { constructor(name = 'foo', command = 'echo foo', index = 0, info?: Partial) { @@ -14,20 +15,20 @@ export class FakeCommand extends Command { ...info, }, {}, - jest.fn(), - jest.fn(), + vi.fn(), + vi.fn(), ); this.stdin = createMockInstance(Writable); - this.start = jest.fn(); - this.kill = jest.fn(); + this.start = vi.fn(); + this.kill = vi.fn(); } } export const createFakeProcess = (pid: number): ChildProcess => Object.assign(new EventEmitter(), { pid, - send: jest.fn(), + send: vi.fn(), stdin: new PassThrough(), stdout: new PassThrough(), stderr: new PassThrough(), diff --git a/src/flow-control/input-handler.spec.ts b/src/flow-control/input-handler.spec.ts index 68e393d4..cd0c0d81 100644 --- a/src/flow-control/input-handler.spec.ts +++ b/src/flow-control/input-handler.spec.ts @@ -1,7 +1,8 @@ -import { createMockInstance } from 'jest-create-mock-instance'; import { PassThrough } from 'stream'; +import { beforeEach, expect, it } from 'vitest'; import { Command } from '../command'; +import { createMockInstance } from '../fixtures/create-mock-instance'; import { FakeCommand } from '../fixtures/fake-command'; import { Logger } from '../logger'; import { InputHandler } from './input-handler'; diff --git a/src/flow-control/kill-on-signal.spec.ts b/src/flow-control/kill-on-signal.spec.ts index 08518cdd..0f56150f 100644 --- a/src/flow-control/kill-on-signal.spec.ts +++ b/src/flow-control/kill-on-signal.spec.ts @@ -1,4 +1,5 @@ import { EventEmitter } from 'events'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { Command } from '../command'; import { createFakeCloseEvent, FakeCommand } from '../fixtures/fake-command'; @@ -30,7 +31,7 @@ it('returns commands that map SIGINT to exit code 0', () => { expect(newCommands).not.toBe(commands); expect(newCommands).toHaveLength(commands.length); - const callback = jest.fn(); + const callback = vi.fn(); newCommands[0].close.subscribe(callback); process.emit('SIGINT', 'SIGINT'); @@ -46,7 +47,7 @@ it('returns commands that keep non-SIGINT exit codes', () => { expect(newCommands).not.toBe(commands); expect(newCommands).toHaveLength(commands.length); - const callback = jest.fn(); + const callback = vi.fn(); newCommands[0].close.subscribe(callback); commands[0].close.next(createFakeCloseEvent({ exitCode: 1 })); diff --git a/src/flow-control/kill-others.spec.ts b/src/flow-control/kill-others.spec.ts index 2b2e3c8a..d4138c56 100644 --- a/src/flow-control/kill-others.spec.ts +++ b/src/flow-control/kill-others.spec.ts @@ -1,5 +1,6 @@ -import { createMockInstance } from 'jest-create-mock-instance'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; +import { createMockInstance } from '../fixtures/create-mock-instance'; import { createFakeCloseEvent, createFakeProcess, FakeCommand } from '../fixtures/fake-command'; import { Logger } from '../logger'; import { KillOthers, ProcessCloseCondition } from './kill-others'; @@ -111,16 +112,16 @@ it('does not try to kill processes already dead', () => { }); it('force kills misbehaving processes after a timeout', () => { - jest.useFakeTimers(); + vi.useFakeTimers(); commands.push(new FakeCommand()); createWithConditions(['failure'], { timeoutMs: 500 }).handle(commands); assignProcess(commands[1]); assignProcess(commands[2]); - commands[2].kill = jest.fn(() => unassignProcess(commands[2])); + commands[2].kill = vi.fn(() => unassignProcess(commands[2])); commands[0].close.next(createFakeCloseEvent({ exitCode: 1 })); - jest.advanceTimersByTime(500); + vi.advanceTimersByTime(500); expect(commands[1].kill).toHaveBeenCalledTimes(2); expect(commands[1].kill).toHaveBeenCalledWith('SIGKILL'); diff --git a/src/flow-control/log-error.spec.ts b/src/flow-control/log-error.spec.ts index c141a566..4d07fc5a 100644 --- a/src/flow-control/log-error.spec.ts +++ b/src/flow-control/log-error.spec.ts @@ -1,5 +1,6 @@ -import { createMockInstance } from 'jest-create-mock-instance'; +import { beforeEach, expect, it } from 'vitest'; +import { createMockInstance } from '../fixtures/create-mock-instance'; import { FakeCommand } from '../fixtures/fake-command'; import { Logger } from '../logger'; import { LogError } from './log-error'; diff --git a/src/flow-control/log-exit.spec.ts b/src/flow-control/log-exit.spec.ts index 3d6d136b..a7b82940 100644 --- a/src/flow-control/log-exit.spec.ts +++ b/src/flow-control/log-exit.spec.ts @@ -1,5 +1,6 @@ -import { createMockInstance } from 'jest-create-mock-instance'; +import { beforeEach, expect, it } from 'vitest'; +import { createMockInstance } from '../fixtures/create-mock-instance'; import { createFakeCloseEvent, FakeCommand } from '../fixtures/fake-command'; import { Logger } from '../logger'; import { LogExit } from './log-exit'; diff --git a/src/flow-control/log-output.spec.ts b/src/flow-control/log-output.spec.ts index cdaad798..eae31e01 100644 --- a/src/flow-control/log-output.spec.ts +++ b/src/flow-control/log-output.spec.ts @@ -1,5 +1,6 @@ -import { createMockInstance } from 'jest-create-mock-instance'; +import { beforeEach, expect, it } from 'vitest'; +import { createMockInstance } from '../fixtures/create-mock-instance'; import { FakeCommand } from '../fixtures/fake-command'; import { Logger } from '../logger'; import { LogOutput } from './log-output'; diff --git a/src/flow-control/log-timings.spec.ts b/src/flow-control/log-timings.spec.ts index e7ee07be..d6fb9ad9 100644 --- a/src/flow-control/log-timings.spec.ts +++ b/src/flow-control/log-timings.spec.ts @@ -1,7 +1,8 @@ -import { createMockInstance } from 'jest-create-mock-instance'; +import { beforeEach, expect, it } from 'vitest'; import { CloseEvent } from '../command'; import { DateFormatter } from '../date-format'; +import { createMockInstance } from '../fixtures/create-mock-instance'; import { createFakeCloseEvent, FakeCommand } from '../fixtures/fake-command'; import { Logger } from '../logger'; import { LogTimings } from './log-timings'; diff --git a/src/flow-control/logger-padding.spec.ts b/src/flow-control/logger-padding.spec.ts index a5358b33..7a8d848e 100644 --- a/src/flow-control/logger-padding.spec.ts +++ b/src/flow-control/logger-padding.spec.ts @@ -1,10 +1,11 @@ -import createMockInstance from 'jest-create-mock-instance'; +import { beforeEach, expect, it, MockedObject } from 'vitest'; +import { createMockInstance } from '../fixtures/create-mock-instance'; import { FakeCommand } from '../fixtures/fake-command'; import { Logger } from '../logger'; import { LoggerPadding } from './logger-padding'; -let logger: jest.Mocked; +let logger: MockedObject; let controller: LoggerPadding; let commands: FakeCommand[]; diff --git a/src/flow-control/output-error-handler.spec.ts b/src/flow-control/output-error-handler.spec.ts index 24d90485..fda368f5 100644 --- a/src/flow-control/output-error-handler.spec.ts +++ b/src/flow-control/output-error-handler.spec.ts @@ -1,4 +1,5 @@ import { Writable } from 'stream'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { FakeCommand } from '../fixtures/fake-command'; import { OutputErrorHandler } from './output-error-handler'; @@ -40,7 +41,7 @@ describe('on finish', () => { const { onFinish } = controller.handle(commands); onFinish(); - outputStream.on('error', jest.fn()); + outputStream.on('error', vi.fn()); outputStream.emit('error', new Error()); expect(commands[0].kill).not.toHaveBeenCalled(); diff --git a/src/flow-control/restart-process.spec.ts b/src/flow-control/restart-process.spec.ts index b46192f1..7ae9e11e 100644 --- a/src/flow-control/restart-process.spec.ts +++ b/src/flow-control/restart-process.spec.ts @@ -1,6 +1,7 @@ -import { createMockInstance } from 'jest-create-mock-instance'; import { VirtualTimeScheduler } from 'rxjs'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; +import { createMockInstance } from '../fixtures/create-mock-instance'; import { createFakeCloseEvent, FakeCommand } from '../fixtures/fake-command'; import { Logger } from '../logger'; import { RestartProcess } from './restart-process'; @@ -147,7 +148,7 @@ describe('returned commands', () => { it('skip close events followed by restarts', () => { const { commands: newCommands } = controller.handle(commands); - const callback = jest.fn(); + const callback = vi.fn(); newCommands[0].close.subscribe(callback); newCommands[1].close.subscribe(callback); diff --git a/src/flow-control/teardown.spec.ts b/src/flow-control/teardown.spec.ts index 155a3f0f..95d2311e 100644 --- a/src/flow-control/teardown.spec.ts +++ b/src/flow-control/teardown.spec.ts @@ -1,18 +1,19 @@ -import createMockInstance from 'jest-create-mock-instance'; +import { beforeEach, describe, expect, it, Mock, vi } from 'vitest'; +import { createMockInstance } from '../fixtures/create-mock-instance'; import { createFakeProcess, FakeCommand } from '../fixtures/fake-command'; import { Logger } from '../logger'; import { getSpawnOpts } from '../spawn'; import { Teardown } from './teardown'; -let spawn: jest.Mock; +let spawn: Mock; let logger: Logger; const commands = [new FakeCommand()]; const teardown = 'cowsay bye'; beforeEach(() => { logger = createMockInstance(Logger); - spawn = jest.fn(() => createFakeProcess(1)); + spawn = vi.fn(() => createFakeProcess(1)); }); const create = (teardown: string[]) => diff --git a/src/jsonc.spec.ts b/src/jsonc.spec.ts index 4e506037..63fdcb35 100644 --- a/src/jsonc.spec.ts +++ b/src/jsonc.spec.ts @@ -6,6 +6,8 @@ MIT license Copied due to the dependency not being compatible with CommonJS */ +import { describe, expect, it } from 'vitest'; + import JSONC from './jsonc'; const Fixtures = { diff --git a/src/logger.spec.ts b/src/logger.spec.ts index 15c14e94..77d3d68f 100644 --- a/src/logger.spec.ts +++ b/src/logger.spec.ts @@ -1,5 +1,6 @@ import { subscribeSpyTo } from '@hirez_io/observer-spy'; import chalk from 'chalk'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { FakeCommand } from './fixtures/fake-command'; import { Logger } from './logger'; @@ -11,7 +12,7 @@ beforeEach(() => { const createLogger = (...options: ConstructorParameters) => { const logger = new Logger(...options); - jest.spyOn(logger, 'log'); + vi.spyOn(logger, 'log'); const spy = subscribeSpyTo(logger.output); return { logger, spy }; }; diff --git a/src/observables.spec.ts b/src/observables.spec.ts index 506e355d..8131e402 100644 --- a/src/observables.spec.ts +++ b/src/observables.spec.ts @@ -1,4 +1,5 @@ import EventEmitter from 'events'; +import { describe, expect, it } from 'vitest'; import { fromSharedEvent } from './observables'; diff --git a/src/output-writer.spec.ts b/src/output-writer.spec.ts index 55681930..3958ddd3 100644 --- a/src/output-writer.spec.ts +++ b/src/output-writer.spec.ts @@ -1,6 +1,7 @@ -import { createMockInstance } from 'jest-create-mock-instance'; import { Writable } from 'stream'; +import { beforeEach, describe, expect, it, MockedObject } from 'vitest'; +import { createMockInstance } from './fixtures/create-mock-instance'; import { createFakeCloseEvent, FakeCommand } from './fixtures/fake-command'; import { OutputWriter } from './output-writer'; @@ -19,7 +20,7 @@ function closeCommand(command: FakeCommand) { command.close.next(createFakeCloseEvent({ command, index: command.index })); } -let outputStream: jest.Mocked; +let outputStream: MockedObject; let commands: FakeCommand[]; beforeEach(() => { outputStream = createMockInstance(Writable); @@ -31,14 +32,14 @@ beforeEach(() => { }); it('throws if outputStream already is in errored state', () => { - Object.assign(outputStream, { errored: new Error() }); + Object.defineProperty(outputStream, 'errored', { value: new Error() }); expect(() => createWriter()).toThrow(TypeError); }); describe('#write()', () => { it('throws if outputStream has errored', () => { const writer = createWriter(); - Object.assign(outputStream, { errored: new Error() }); + Object.defineProperty(outputStream, 'errored', { value: new Error() }); expect(() => writer.write(commands[0], 'hello')).toThrow(TypeError); }); diff --git a/src/prefix-color-selector.spec.ts b/src/prefix-color-selector.spec.ts index 2649d174..02b781cd 100644 --- a/src/prefix-color-selector.spec.ts +++ b/src/prefix-color-selector.spec.ts @@ -1,9 +1,10 @@ import chalk from 'chalk'; +import { afterEach, describe, expect, it, vi } from 'vitest'; import { PrefixColorSelector } from './prefix-color-selector'; afterEach(() => { - jest.restoreAllMocks(); + vi.restoreAllMocks(); }); describe('#getNextColor', function () { @@ -127,7 +128,7 @@ describe('#getNextColor', function () { '%s', (_, { acceptableConsoleColors, customColors, expectedColors }) => { if (acceptableConsoleColors) { - jest.spyOn(PrefixColorSelector, 'ACCEPTABLE_CONSOLE_COLORS', 'get').mockReturnValue( + vi.spyOn(PrefixColorSelector, 'ACCEPTABLE_CONSOLE_COLORS', 'get').mockReturnValue( acceptableConsoleColors, ); } diff --git a/src/spawn.spec.ts b/src/spawn.spec.ts index 6ec631ec..038c3372 100644 --- a/src/spawn.spec.ts +++ b/src/spawn.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, it, vi } from 'vitest'; + import { getSpawnOpts, spawn } from './spawn'; const baseProcess = { @@ -8,7 +10,7 @@ const baseProcess = { describe('spawn()', () => { it('spawns the given command', async () => { - const fakeSpawn = jest.fn(); + const fakeSpawn = vi.fn(); spawn('echo banana', {}, fakeSpawn, baseProcess); expect(fakeSpawn).toHaveBeenCalled(); expect(fakeSpawn.mock.calls[0][1].join(' ')).toContain('echo banana'); @@ -16,7 +18,7 @@ describe('spawn()', () => { it('returns spawned process', async () => { const childProcess = {}; - const fakeSpawn = jest.fn().mockReturnValue(childProcess); + const fakeSpawn = vi.fn().mockReturnValue(childProcess); const child = spawn('echo banana', {}, fakeSpawn, baseProcess); expect(child).toBe(childProcess); }); diff --git a/tests/smoke-tests.spec.ts b/tests/smoke-tests.spec.ts index b533a77a..4459ab58 100644 --- a/tests/smoke-tests.spec.ts +++ b/tests/smoke-tests.spec.ts @@ -1,12 +1,13 @@ import { exec as originalExec } from 'child_process'; import * as util from 'util'; +import { beforeAll, expect, it } from 'vitest'; const exec = util.promisify(originalExec); beforeAll(async () => { await exec('pnpm build', { cwd: `${__dirname}/..` }); await exec('pnpm install', { cwd: __dirname }); -}, 20000); +}, 30000); it.each(['cjs-import', 'cjs-require', 'esm'])( '%s', diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 00000000..10baf2b4 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,27 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + coverage: { + include: ['src/**/*.ts', '!src/index.ts'], + // lcov is used for coveralls + reporter: ['text', 'html', 'lcov'], + }, + projects: [ + { + extends: true, + test: { + name: 'unit', + include: ['src/**/*.spec.ts'], + }, + }, + { + extends: true, + test: { + name: 'smoke', + include: ['tests/**/*.spec.ts'], + }, + }, + ], + }, +});