├── .npmrc ├── eslint.config.mjs ├── .prettierignore ├── tsconfig.json ├── .github ├── renovate.json └── workflows │ ├── ci.yml │ └── release.yml ├── LICENSE ├── src ├── typings.ts ├── utils.ts └── index.ts ├── package.json ├── .gitignore ├── tests ├── parse.test.ts ├── format.test.ts ├── parse-strict.test.ts └── index.test.ts ├── README.md └── pnpm-lock.yaml /.npmrc: -------------------------------------------------------------------------------- 1 | hoist=true 2 | shamefully-hoist=true 3 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig } from '@shahrad/eslint-config'; 2 | 3 | export default defineConfig({ 4 | ignores: ['dist'], 5 | }); 6 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | dist 5 | dev 6 | tests/output 7 | /.svelte-kit 8 | /package 9 | .env 10 | .env.* 11 | !.env.example 12 | 13 | # Ignore files for PNPM, NPM and YARN 14 | pnpm-lock.yaml 15 | /.changeset 16 | package-lock.json 17 | yarn.lock 18 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "@shahrad/tsconfig", 4 | "compilerOptions": { 5 | "baseUrl": ".", 6 | "paths": { 7 | "@/*": ["./src/*"] 8 | }, 9 | "outDir": "dist" 10 | }, 11 | "include": ["**/*.ts"], 12 | "exclude": ["node_modules", "dist"] 13 | } 14 | -------------------------------------------------------------------------------- /.github/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": ["config:base"], 4 | "packageRules": [ 5 | { 6 | "groupName": "All Dependencies", 7 | "groupSlug": "minor-patch", 8 | "matchPackagePatterns": ["*"], 9 | "matchUpdateTypes": ["minor", "patch"] 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Shahrad Elahi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | 8 | jobs: 9 | format: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | - uses: pnpm/action-setup@v4 14 | - uses: actions/setup-node@v4 15 | with: 16 | node-version: 20 17 | cache: 'pnpm' 18 | 19 | - run: pnpm install --frozen-lockfile 20 | - run: pnpm format:check 21 | 22 | lint: 23 | runs-on: ubuntu-latest 24 | steps: 25 | - uses: actions/checkout@v4 26 | - uses: pnpm/action-setup@v4 27 | - uses: actions/setup-node@v4 28 | with: 29 | node-version: 20 30 | cache: 'pnpm' 31 | 32 | - run: pnpm install --frozen-lockfile 33 | - run: pnpm lint 34 | 35 | test: 36 | runs-on: ubuntu-latest 37 | steps: 38 | - uses: actions/checkout@v4 39 | - uses: pnpm/action-setup@v4 40 | - uses: actions/setup-node@v4 41 | with: 42 | node-version: 20 43 | cache: 'pnpm' 44 | 45 | - run: pnpm install --frozen-lockfile 46 | - run: pnpm test 47 | -------------------------------------------------------------------------------- /src/typings.ts: -------------------------------------------------------------------------------- 1 | import { DateTime } from 'luxon'; 2 | 3 | export interface ParseOptions { 4 | /** 5 | Date time to start from. Defaults to now. Value can instance of `Date`, milliseconds, or ISO string. 6 | @defaultValue `Date.now()` 7 | */ 8 | from?: FromDate; 9 | } 10 | 11 | export interface Options extends ParseOptions { 12 | /** 13 | Set to `true` to use verbose formatting. Defaults to `false`. 14 | */ 15 | long?: boolean; 16 | } 17 | 18 | export type FromDate = DateTime | Date | number | string; 19 | 20 | export type Unit = 21 | | 'Years' 22 | | 'Year' 23 | | 'Yrs' 24 | | 'Yr' 25 | | 'Y' 26 | | 'Months' 27 | | 'Month' 28 | | 'Mon' 29 | | 'Mo' 30 | | 'Weeks' 31 | | 'Week' 32 | | 'W' 33 | | 'Days' 34 | | 'Day' 35 | | 'D' 36 | | 'Hours' 37 | | 'Hour' 38 | | 'Hrs' 39 | | 'Hr' 40 | | 'H' 41 | | 'Minutes' 42 | | 'Minute' 43 | | 'Mins' 44 | | 'Min' 45 | | 'M' 46 | | 'Seconds' 47 | | 'Second' 48 | | 'Secs' 49 | | 'Sec' 50 | | 's' 51 | | 'Milliseconds' 52 | | 'Millisecond' 53 | | 'Msecs' 54 | | 'Msec' 55 | | 'Ms'; 56 | 57 | export type UnitAnyCase = Unit | Uppercase | Lowercase; 58 | 59 | export type StringValue = `${number}` | `${number}${UnitAnyCase}` | `${number} ${UnitAnyCase}`; 60 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Publish Package 2 | 3 | on: 4 | push: 5 | tags: 6 | - v* 7 | 8 | jobs: 9 | create-github-release: 10 | permissions: 11 | contents: write 12 | runs-on: ubuntu-latest 13 | if: startsWith(github.ref, 'refs/tags/v') 14 | steps: 15 | - name: Calculate release name 16 | run: | 17 | GITHUB_REF=${{ github.ref }} 18 | RELEASE_NAME=${GITHUB_REF#"refs/tags/"} 19 | echo "RELEASE_NAME=${RELEASE_NAME}" >> $GITHUB_ENV 20 | 21 | - name: Publish release 22 | uses: actions/create-release@v1 23 | env: 24 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 25 | with: 26 | tag_name: ${{ github.ref }} 27 | release_name: ${{ env.RELEASE_NAME }} 28 | draft: false 29 | prerelease: false 30 | 31 | publish-npm-release: 32 | runs-on: ubuntu-latest 33 | permissions: 34 | contents: read 35 | id-token: write 36 | steps: 37 | - uses: actions/checkout@v4 38 | - uses: pnpm/action-setup@v4 39 | - uses: actions/setup-node@v4 40 | with: 41 | node-version: 20 42 | cache: 'pnpm' 43 | registry-url: 'https://registry.npmjs.org' 44 | 45 | - run: pnpm install --frozen-lockfile 46 | - run: npm publish --provenance --access public 47 | env: 48 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 49 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "true-ms", 3 | "version": "1.1.0", 4 | "private": false, 5 | "description": "A Millisecond conversion utility with true precision", 6 | "keywords": [ 7 | "ms", 8 | "milliseconds", 9 | "conversion", 10 | "time", 11 | "duration", 12 | "utility" 13 | ], 14 | "homepage": "https://github.com/shahradelahi/true-ms", 15 | "repository": "github:shahradelahi/true-ms", 16 | "license": "MIT", 17 | "author": "Shahrad Elahi (https://github.com/shahradelahi)", 18 | "type": "module", 19 | "exports": { 20 | ".": { 21 | "import": "./dist/index.js", 22 | "default": "./dist/index.cjs" 23 | } 24 | }, 25 | "main": "dist/index.cjs", 26 | "types": "dist", 27 | "files": [ 28 | "dist", 29 | "!dist/*.d.cts" 30 | ], 31 | "scripts": { 32 | "build": "tsup --clean --dts --format cjs,esm src/index.ts", 33 | "clean": "git clean -xdf node_modules .tsbuildinfo", 34 | "format": "prettier --write .", 35 | "format:check": "prettier --check .", 36 | "lint": "eslint && pnpm typecheck", 37 | "prepublishOnly": "pnpm build && pnpm lint && pnpm test && pnpm format:check", 38 | "test": "pnpm test-nodejs && pnpm test-edge", 39 | "test-edge": "jest --env @edge-runtime/jest-environment", 40 | "test-nodejs": "jest --env node", 41 | "typecheck": "tsc --noEmit" 42 | }, 43 | "prettier": "@shahrad/prettier-config", 44 | "jest": { 45 | "moduleNameMapper": { 46 | "@/(.*)": "/src/$1" 47 | }, 48 | "preset": "ts-jest", 49 | "testEnvironment": "node" 50 | }, 51 | "dependencies": { 52 | "luxon": "3.7.1" 53 | }, 54 | "devDependencies": { 55 | "@edge-runtime/jest-environment": "4.0.0", 56 | "@shahrad/eslint-config": "1.0.1", 57 | "@shahrad/prettier-config": "1.2.2", 58 | "@shahrad/tsconfig": "1.2.0", 59 | "@types/jest": "30.0.0", 60 | "@types/luxon": "3.7.1", 61 | "eslint": "9.34.0", 62 | "jest": "30.0.4", 63 | "prettier": "3.6.2", 64 | "ts-jest": "29.4.0", 65 | "tsup": "8.5.0", 66 | "typescript": "5.9.2" 67 | }, 68 | "packageManager": "pnpm@10.15.1+sha512.34e538c329b5553014ca8e8f4535997f96180a1d0f614339357449935350d924e22f8614682191264ec33d1462ac21561aff97f6bb18065351c162c7e8f6de67", 69 | "publishConfig": { 70 | "access": "public", 71 | "provenance": true 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import { DateTime, DurationLike } from 'luxon'; 2 | 3 | import type { FromDate, Options, StringValue } from '@/typings'; 4 | 5 | const SECOND = 1000; 6 | const MINUTE = SECOND * 60; 7 | const HOUR = MINUTE * 60; 8 | const DAY = HOUR * 24; 9 | 10 | export function parseFromValue(from: FromDate): DateTime { 11 | if (from instanceof DateTime) { 12 | return from; 13 | } 14 | if (from instanceof Date) { 15 | return DateTime.fromJSDate(from); 16 | } 17 | if (typeof from === 'string') { 18 | return DateTime.fromISO(from); 19 | } 20 | if (typeof from === 'number') { 21 | return DateTime.fromMillis(from); 22 | } 23 | throw new Error('Value provided to ms.from() must be a Date, ISO string, or number.'); 24 | } 25 | 26 | export function fromDuration(value: DurationLike, options?: Options): number { 27 | const from = options?.from ? parseFromValue(options.from) : DateTime.now(); 28 | return from.plus(value).diff(from).toMillis(); 29 | } 30 | 31 | export function fromMillis(value: number, options?: Options): number { 32 | return fromDuration({ milliseconds: value }, options); 33 | } 34 | 35 | /** 36 | * Pluralization helper. 37 | */ 38 | export function plural(ms: number, msAbs: number, n: number, name: string): StringValue { 39 | const isPlural = msAbs >= n * 1.5; 40 | return `${Math.round(ms / n)} ${name}${isPlural ? 's' : ''}` as StringValue; 41 | } 42 | 43 | /** 44 | * A type guard for errors. 45 | * 46 | * @param value - The value to test 47 | * @returns A boolean `true` if the provided value is an Error-like object 48 | */ 49 | export function isError(value: unknown): value is Error { 50 | return typeof value === 'object' && value !== null && 'message' in value; 51 | } 52 | 53 | /** 54 | * Short format for `ms`. 55 | */ 56 | export function fmtShort(ms: number): StringValue { 57 | const msAbs = Math.abs(ms); 58 | if (msAbs >= DAY) { 59 | return `${Math.round(ms / DAY)}d`; 60 | } 61 | if (msAbs >= HOUR) { 62 | return `${Math.round(ms / HOUR)}h`; 63 | } 64 | if (msAbs >= MINUTE) { 65 | return `${Math.round(ms / MINUTE)}m`; 66 | } 67 | if (msAbs >= SECOND) { 68 | return `${Math.round(ms / SECOND)}s`; 69 | } 70 | return `${ms}ms`; 71 | } 72 | 73 | /** 74 | * Long format for `ms`. 75 | */ 76 | export function fmtLong(ms: number): StringValue { 77 | const msAbs = Math.abs(ms); 78 | if (msAbs >= DAY) { 79 | return plural(ms, msAbs, DAY, 'day'); 80 | } 81 | if (msAbs >= HOUR) { 82 | return plural(ms, msAbs, HOUR, 'hour'); 83 | } 84 | if (msAbs >= MINUTE) { 85 | return plural(ms, msAbs, MINUTE, 'minute'); 86 | } 87 | if (msAbs >= SECOND) { 88 | return plural(ms, msAbs, SECOND, 'second'); 89 | } 90 | return `${ms} ms`; 91 | } 92 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { DateTime, type DurationLike } from 'luxon'; 2 | 3 | import type { Options, ParseOptions, StringValue, Unit } from '@/typings'; 4 | import { fmtLong, fmtShort, fromDuration, fromMillis, isError, parseFromValue } from '@/utils'; 5 | 6 | /** 7 | * Parse or format the given value. 8 | * 9 | * @param value - The string or number to convert 10 | * @param options - Options for the conversion 11 | * @throws Error if `value` is not a non-empty string or a number 12 | */ 13 | function msFn(value: StringValue, options?: Options): number; 14 | function msFn(value: number, options?: Options): string; 15 | function msFn(value: DurationLike, options?: Options): number; 16 | function msFn(value: StringValue | DurationLike | number, options?: Options): number | string { 17 | try { 18 | if (typeof value === 'object' && !Array.isArray(value)) { 19 | return fromDuration(value, options); 20 | } else if (typeof value === 'string') { 21 | return parse(value, options); 22 | } else if (typeof value === 'number') { 23 | return format(value, options); 24 | } 25 | throw new Error( 26 | 'Value provided to ms() must be a object of type DurationLike, string, or number.' 27 | ); 28 | } catch (error) { 29 | const message = isError(error) 30 | ? `${error.message}. value=${JSON.stringify(value)}` 31 | : 'An unknown error has occurred.'; 32 | throw new Error(message); 33 | } 34 | } 35 | 36 | /** 37 | * Parse the given string and return milliseconds. 38 | * 39 | * @param str - A string to parse to milliseconds 40 | * @param options - Options for the conversion 41 | * @returns The parsed value in milliseconds, or `NaN` if the string can't be 42 | * parsed 43 | */ 44 | export function parse(str: string, options?: ParseOptions): number { 45 | if (typeof str !== 'string' || str.length === 0 || str.length > 100) { 46 | throw new Error('Value provided to ms.parse() must be a string with length between 1 and 99.'); 47 | } 48 | const match = 49 | /^(?-?(?:\d+)?\.?\d+) *(?milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mon?|mo|years?|yrs?|y)?$/i.exec( 50 | str 51 | ); 52 | // Named capture groups need to be manually typed today. 53 | // https://github.com/microsoft/TypeScript/issues/32098 54 | const groups = match?.groups as { value: string; type?: string } | undefined; 55 | if (!groups) { 56 | return NaN; 57 | } 58 | const from = options?.from ? parseFromValue(options.from) : DateTime.now(); 59 | const n = parseFloat(groups.value); 60 | const type = (groups.type || 'ms').toLowerCase() as Lowercase; 61 | switch (type) { 62 | case 'years': 63 | case 'year': 64 | case 'yrs': 65 | case 'yr': 66 | case 'y': 67 | return fromDuration({ year: n }, { from }); 68 | case 'months': 69 | case 'month': 70 | case 'mon': 71 | case 'mo': 72 | return fromDuration({ month: n }, { from }); 73 | case 'weeks': 74 | case 'week': 75 | case 'w': 76 | return fromDuration({ week: n }, { from }); 77 | case 'days': 78 | case 'day': 79 | case 'd': 80 | return fromDuration({ day: n }, { from }); 81 | case 'hours': 82 | case 'hour': 83 | case 'hrs': 84 | case 'hr': 85 | case 'h': 86 | return fromDuration({ hour: n }, { from }); 87 | case 'minutes': 88 | case 'minute': 89 | case 'mins': 90 | case 'min': 91 | case 'm': 92 | return fromDuration({ minute: n }, { from }); 93 | case 'seconds': 94 | case 'second': 95 | case 'secs': 96 | case 'sec': 97 | case 's': 98 | return fromDuration({ second: n }, { from }); 99 | case 'milliseconds': 100 | case 'millisecond': 101 | case 'msecs': 102 | case 'msec': 103 | case 'ms': 104 | return n; 105 | default: 106 | // This should never occur. 107 | throw new Error(`The unit ${type as string} was matched, but no matching case exists.`); 108 | } 109 | } 110 | 111 | /** 112 | * Parse the given StringValue and return milliseconds. 113 | * 114 | * @param value - A typesafe StringValue to parse to milliseconds 115 | * @param options - Options for the conversion 116 | * @returns The parsed value in milliseconds, or `NaN` if the string can't be 117 | * parsed 118 | */ 119 | export function parseStrict(value: StringValue, options?: ParseOptions): number { 120 | return parse(value, options); 121 | } 122 | 123 | /** 124 | * Format the given integer as a string. 125 | * 126 | * @param ms - milliseconds 127 | * @param options - Options for the conversion 128 | * @returns The formatted string 129 | */ 130 | export function format(ms: number, options?: Options): string { 131 | if (typeof ms !== 'number' || !isFinite(ms)) { 132 | throw new Error('Value provided to ms.format() must be of type number.'); 133 | } 134 | const d = fromMillis(ms, options); 135 | return options?.long ? fmtLong(d) : fmtShort(d); 136 | } 137 | 138 | export { msFn as ms }; 139 | export default msFn; 140 | -------------------------------------------------------------------------------- /tests/parse.test.ts: -------------------------------------------------------------------------------- 1 | import { parse } from '@/index'; 2 | 3 | describe('parse(string)', () => { 4 | it('should not throw an error', () => { 5 | expect(() => { 6 | parse('1m'); 7 | }).not.toThrow(); 8 | }); 9 | 10 | it('should preserve ms', () => { 11 | expect(parse('100')).toBe(100); 12 | }); 13 | 14 | it('should convert from m to ms', () => { 15 | expect(parse('1m')).toBe(60000); 16 | }); 17 | 18 | it('should convert from h to ms', () => { 19 | expect(parse('1h')).toBe(3600000); 20 | }); 21 | 22 | it('should convert d to ms', () => { 23 | expect(parse('2d')).toBe(172800000); 24 | }); 25 | 26 | it('should convert w to ms', () => { 27 | expect(parse('3w')).toBe(1814400000); 28 | }); 29 | 30 | it('should convert s to ms', () => { 31 | expect(parse('1s')).toBe(1000); 32 | }); 33 | 34 | it('should convert ms to ms', () => { 35 | expect(parse('100ms')).toBe(100); 36 | }); 37 | 38 | it('should convert y from Jan 2017 to ms', () => { 39 | expect(parse('1y', { from: new Date('2017-01-01') })).toBe(31536000000); 40 | }); 41 | 42 | it('should work with ms', () => { 43 | expect(parse('1.5h')).toBe(5400000); 44 | }); 45 | 46 | it('should work with multiple spaces', () => { 47 | expect(parse('1 s')).toBe(1000); 48 | }); 49 | 50 | it('should return NaN if invalid', () => { 51 | expect(isNaN(parse('☃'))).toBe(true); 52 | expect(isNaN(parse('10-.5'))).toBe(true); 53 | expect(isNaN(parse('foo'))).toBe(true); 54 | }); 55 | 56 | it('should be case-insensitive', () => { 57 | expect(parse('1.5H')).toBe(5400000); 58 | }); 59 | 60 | it('should work with numbers starting with .', () => { 61 | expect(parse('.5ms')).toBe(0.5); 62 | }); 63 | 64 | it('should work with negative integers', () => { 65 | expect(parse('-100ms')).toBe(-100); 66 | }); 67 | 68 | it('should work with negative decimals', () => { 69 | expect(parse('-1.5h')).toBe(-5400000); 70 | expect(parse('-10.5h')).toBe(-37800000); 71 | }); 72 | 73 | it('should work with negative decimals starting with "."', () => { 74 | expect(parse('-.5h')).toBe(-1800000); 75 | }); 76 | }); 77 | 78 | // long strings 79 | 80 | describe('parse(long string)', () => { 81 | it('should not throw an error', () => { 82 | expect(() => { 83 | parse('53 milliseconds'); 84 | }).not.toThrow(); 85 | }); 86 | 87 | it('should convert milliseconds to ms', () => { 88 | expect(parse('53 milliseconds')).toBe(53); 89 | }); 90 | 91 | it('should convert msecs to ms', () => { 92 | expect(parse('17 msecs')).toBe(17); 93 | }); 94 | 95 | it('should convert sec to ms', () => { 96 | expect(parse('1 sec')).toBe(1000); 97 | }); 98 | 99 | it('should convert from min to ms', () => { 100 | expect(parse('1 min')).toBe(60000); 101 | }); 102 | 103 | it('should convert from hr to ms', () => { 104 | expect(parse('1 hr')).toBe(3600000); 105 | }); 106 | 107 | it('should convert days to ms', () => { 108 | expect(parse('2 days')).toBe(172800000); 109 | }); 110 | 111 | it('should convert weeks to ms', () => { 112 | expect(parse('1 week')).toBe(604800000); 113 | }); 114 | 115 | it('should convert years to ms', () => { 116 | expect(parse('1 year')).toBe(31536000000); 117 | }); 118 | 119 | it('should work with decimals', () => { 120 | expect(parse('1.5 hours')).toBe(5400000); 121 | }); 122 | 123 | it('should work with negative integers', () => { 124 | expect(parse('-100 milliseconds')).toBe(-100); 125 | }); 126 | 127 | it('should work with negative decimals', () => { 128 | expect(parse('-1.5 hours')).toBe(-5400000); 129 | }); 130 | 131 | it('should work with negative decimals starting with "."', () => { 132 | expect(parse('-.5 hr')).toBe(-1800000); 133 | }); 134 | }); 135 | 136 | // invalid inputs 137 | 138 | describe('parse(invalid inputs)', () => { 139 | it('should throw an error, when parse("")', () => { 140 | expect(() => { 141 | parse(''); 142 | }).toThrow(); 143 | }); 144 | 145 | it('should throw an error, when parse(undefined)', () => { 146 | expect(() => { 147 | // @ts-expect-error - We expect this to throw. 148 | parse(undefined); 149 | }).toThrow(); 150 | }); 151 | 152 | it('should throw an error, when parse(null)', () => { 153 | expect(() => { 154 | // @ts-expect-error - We expect this to throw. 155 | parse(null); 156 | }).toThrow(); 157 | }); 158 | 159 | it('should throw an error, when parse([])', () => { 160 | expect(() => { 161 | // @ts-expect-error - We expect this to throw. 162 | parse([]); 163 | }).toThrow(); 164 | }); 165 | 166 | it('should throw an error, when parse({})', () => { 167 | expect(() => { 168 | // @ts-expect-error - We expect this to throw. 169 | parse({}); 170 | }).toThrow(); 171 | }); 172 | 173 | it('should throw an error, when parse(NaN)', () => { 174 | expect(() => { 175 | // @ts-expect-error - We expect this to throw. 176 | parse(NaN); 177 | }).toThrow(); 178 | }); 179 | 180 | it('should throw an error, when parse(Infinity)', () => { 181 | expect(() => { 182 | // @ts-expect-error - We expect this to throw. 183 | parse(Infinity); 184 | }).toThrow(); 185 | }); 186 | 187 | it('should throw an error, when parse(-Infinity)', () => { 188 | expect(() => { 189 | // @ts-expect-error - We expect this to throw. 190 | parse(-Infinity); 191 | }).toThrow(); 192 | }); 193 | }); 194 | -------------------------------------------------------------------------------- /tests/format.test.ts: -------------------------------------------------------------------------------- 1 | import { format } from '@/index'; 2 | 3 | // numbers 4 | 5 | describe('format(number, { long: true })', () => { 6 | it('should not throw an error', () => { 7 | expect(() => { 8 | format(500, { long: true }); 9 | }).not.toThrow(); 10 | }); 11 | 12 | it('should support milliseconds', () => { 13 | expect(format(500, { long: true })).toBe('500 ms'); 14 | 15 | expect(format(-500, { long: true })).toBe('-500 ms'); 16 | }); 17 | 18 | it('should support seconds', () => { 19 | expect(format(1000, { long: true })).toBe('1 second'); 20 | expect(format(1200, { long: true })).toBe('1 second'); 21 | expect(format(10000, { long: true })).toBe('10 seconds'); 22 | 23 | expect(format(-1000, { long: true })).toBe('-1 second'); 24 | expect(format(-1200, { long: true })).toBe('-1 second'); 25 | expect(format(-10000, { long: true })).toBe('-10 seconds'); 26 | }); 27 | 28 | it('should support minutes', () => { 29 | expect(format(60 * 1000, { long: true })).toBe('1 minute'); 30 | expect(format(60 * 1200, { long: true })).toBe('1 minute'); 31 | expect(format(60 * 10000, { long: true })).toBe('10 minutes'); 32 | 33 | expect(format(-1 * 60 * 1000, { long: true })).toBe('-1 minute'); 34 | expect(format(-1 * 60 * 1200, { long: true })).toBe('-1 minute'); 35 | expect(format(-1 * 60 * 10000, { long: true })).toBe('-10 minutes'); 36 | }); 37 | 38 | it('should support hours', () => { 39 | expect(format(60 * 60 * 1000, { long: true })).toBe('1 hour'); 40 | expect(format(60 * 60 * 1200, { long: true })).toBe('1 hour'); 41 | expect(format(60 * 60 * 10000, { long: true })).toBe('10 hours'); 42 | 43 | expect(format(-1 * 60 * 60 * 1000, { long: true })).toBe('-1 hour'); 44 | expect(format(-1 * 60 * 60 * 1200, { long: true })).toBe('-1 hour'); 45 | expect(format(-1 * 60 * 60 * 10000, { long: true })).toBe('-10 hours'); 46 | }); 47 | 48 | it('should support days', () => { 49 | expect(format(24 * 60 * 60 * 1000, { long: true })).toBe('1 day'); 50 | expect(format(24 * 60 * 60 * 1200, { long: true })).toBe('1 day'); 51 | expect(format(24 * 60 * 60 * 10000, { long: true })).toBe('10 days'); 52 | 53 | expect(format(-1 * 24 * 60 * 60 * 1000, { long: true })).toBe('-1 day'); 54 | expect(format(-1 * 24 * 60 * 60 * 1200, { long: true })).toBe('-1 day'); 55 | expect(format(-1 * 24 * 60 * 60 * 10000, { long: true })).toBe('-10 days'); 56 | }); 57 | 58 | it('should round', () => { 59 | expect(format(234234234, { long: true })).toBe('3 days'); 60 | 61 | expect(format(-234234234, { long: true })).toBe('-3 days'); 62 | }); 63 | }); 64 | 65 | // numbers 66 | 67 | describe('format(number)', () => { 68 | it('should not throw an error', () => { 69 | expect(() => { 70 | format(500); 71 | }).not.toThrow(); 72 | }); 73 | 74 | it('should support milliseconds', () => { 75 | expect(format(500)).toBe('500ms'); 76 | 77 | expect(format(-500)).toBe('-500ms'); 78 | }); 79 | 80 | it('should support seconds', () => { 81 | expect(format(1000)).toBe('1s'); 82 | expect(format(10000)).toBe('10s'); 83 | 84 | expect(format(-1000)).toBe('-1s'); 85 | expect(format(-10000)).toBe('-10s'); 86 | }); 87 | 88 | it('should support minutes', () => { 89 | expect(format(60 * 1000)).toBe('1m'); 90 | expect(format(60 * 10000)).toBe('10m'); 91 | 92 | expect(format(-1 * 60 * 1000)).toBe('-1m'); 93 | expect(format(-1 * 60 * 10000)).toBe('-10m'); 94 | }); 95 | 96 | it('should support hours', () => { 97 | expect(format(60 * 60 * 1000)).toBe('1h'); 98 | expect(format(60 * 60 * 10000)).toBe('10h'); 99 | 100 | expect(format(-1 * 60 * 60 * 1000)).toBe('-1h'); 101 | expect(format(-1 * 60 * 60 * 10000)).toBe('-10h'); 102 | }); 103 | 104 | it('should support days', () => { 105 | expect(format(24 * 60 * 60 * 1000)).toBe('1d'); 106 | expect(format(24 * 60 * 60 * 10000)).toBe('10d'); 107 | 108 | expect(format(-1 * 24 * 60 * 60 * 1000)).toBe('-1d'); 109 | expect(format(-1 * 24 * 60 * 60 * 10000)).toBe('-10d'); 110 | }); 111 | 112 | it('should round', () => { 113 | expect(format(234234234)).toBe('3d'); 114 | 115 | expect(format(-234234234)).toBe('-3d'); 116 | }); 117 | }); 118 | 119 | // invalid inputs 120 | 121 | describe('format(invalid inputs)', () => { 122 | it('should throw an error, when format("")', () => { 123 | expect(() => { 124 | // @ts-expect-error - We expect this to throw. 125 | format(''); 126 | }).toThrow(); 127 | }); 128 | 129 | it('should throw an error, when format(undefined)', () => { 130 | expect(() => { 131 | // @ts-expect-error - We expect this to throw. 132 | format(undefined); 133 | }).toThrow(); 134 | }); 135 | 136 | it('should throw an error, when format(null)', () => { 137 | expect(() => { 138 | // @ts-expect-error - We expect this to throw. 139 | format(null); 140 | }).toThrow(); 141 | }); 142 | 143 | it('should throw an error, when format([])', () => { 144 | expect(() => { 145 | // @ts-expect-error - We expect this to throw. 146 | format([]); 147 | }).toThrow(); 148 | }); 149 | 150 | it('should throw an error, when format({})', () => { 151 | expect(() => { 152 | // @ts-expect-error - We expect this to throw. 153 | format({}); 154 | }).toThrow(); 155 | }); 156 | 157 | it('should throw an error, when format(NaN)', () => { 158 | expect(() => { 159 | format(NaN); 160 | }).toThrow(); 161 | }); 162 | 163 | it('should throw an error, when format(Infinity)', () => { 164 | expect(() => { 165 | format(Infinity); 166 | }).toThrow(); 167 | }); 168 | 169 | it('should throw an error, when format(-Infinity)', () => { 170 | expect(() => { 171 | format(-Infinity); 172 | }).toThrow(); 173 | }); 174 | }); 175 | -------------------------------------------------------------------------------- /tests/parse-strict.test.ts: -------------------------------------------------------------------------------- 1 | import { parseStrict } from '@/index'; 2 | 3 | describe('parseStrict(string)', () => { 4 | it('should not throw an error', () => { 5 | expect(() => { 6 | parseStrict('1m'); 7 | }).not.toThrow(); 8 | }); 9 | 10 | it('should preserve ms', () => { 11 | expect(parseStrict('100')).toBe(100); 12 | }); 13 | 14 | it('should convert from m to ms', () => { 15 | expect(parseStrict('1m')).toBe(60000); 16 | }); 17 | 18 | it('should convert from h to ms', () => { 19 | expect(parseStrict('1h')).toBe(3600000); 20 | }); 21 | 22 | it('should convert d to ms', () => { 23 | expect(parseStrict('2d')).toBe(172800000); 24 | }); 25 | 26 | it('should convert w to ms', () => { 27 | expect(parseStrict('3w')).toBe(1814400000); 28 | }); 29 | 30 | it('should convert s to ms', () => { 31 | expect(parseStrict('1s')).toBe(1000); 32 | }); 33 | 34 | it('should convert ms to ms', () => { 35 | expect(parseStrict('100ms')).toBe(100); 36 | }); 37 | 38 | it('should convert mon from Jan 2016 to ms', () => { 39 | expect(parseStrict('1mon', { from: new Date('2016-01-01') })).toBe(2678400000); // 31 days 40 | }); 41 | 42 | it('should convert y from Jan 2016 to ms', () => { 43 | expect(parseStrict('1y', { from: new Date('2016-01-01') })).toBe(31622400000); 44 | }); 45 | 46 | it('should work with ms', () => { 47 | expect(parseStrict('1.5h')).toBe(5400000); 48 | }); 49 | 50 | it('should work with multiple spaces', () => { 51 | expect(parseStrict('1 s')).toBe(1000); 52 | }); 53 | 54 | it('should return NaN if invalid', () => { 55 | // @ts-expect-error - We expect this to fail. 56 | expect(isNaN(parseStrict('☃'))).toBe(true); 57 | // @ts-expect-error - We expect this to fail. 58 | expect(isNaN(parseStrict('10-.5'))).toBe(true); 59 | // @ts-expect-error - We expect this to fail. 60 | expect(isNaN(parseStrict('foo'))).toBe(true); 61 | }); 62 | 63 | it('should be case-insensitive', () => { 64 | expect(parseStrict('1.5H')).toBe(5400000); 65 | }); 66 | 67 | it('should work with numbers starting with .', () => { 68 | expect(parseStrict('.5ms')).toBe(0.5); 69 | }); 70 | 71 | it('should work with negative integers', () => { 72 | expect(parseStrict('-100ms')).toBe(-100); 73 | }); 74 | 75 | it('should work with negative decimals', () => { 76 | expect(parseStrict('-1.5h')).toBe(-5400000); 77 | expect(parseStrict('-10.5h')).toBe(-37800000); 78 | }); 79 | 80 | it('should work with negative decimals starting with "."', () => { 81 | expect(parseStrict('-.5h')).toBe(-1800000); 82 | }); 83 | }); 84 | 85 | // long strings 86 | 87 | describe('parseStrict(long string)', () => { 88 | it('should not throw an error', () => { 89 | expect(() => { 90 | parseStrict('53 milliseconds'); 91 | }).not.toThrow(); 92 | }); 93 | 94 | it('should convert milliseconds to ms', () => { 95 | expect(parseStrict('53 milliseconds')).toBe(53); 96 | }); 97 | 98 | it('should convert msecs to ms', () => { 99 | expect(parseStrict('17 msecs')).toBe(17); 100 | }); 101 | 102 | it('should convert sec to ms', () => { 103 | expect(parseStrict('1 sec')).toBe(1000); 104 | }); 105 | 106 | it('should convert from min to ms', () => { 107 | expect(parseStrict('1 min')).toBe(60000); 108 | }); 109 | 110 | it('should convert from hr to ms', () => { 111 | expect(parseStrict('1 hr')).toBe(3600000); 112 | }); 113 | 114 | it('should convert days to ms', () => { 115 | expect(parseStrict('2 days')).toBe(172800000); 116 | }); 117 | 118 | it('should convert weeks to ms', () => { 119 | expect(parseStrict('1 week')).toBe(604800000); 120 | }); 121 | 122 | it('should convert years from 2016 to ms', () => { 123 | expect(parseStrict('1 year', { from: new Date('2016-01-01') })).toBe(31622400000); // 356 days in 2016 124 | }); 125 | 126 | it('should work with decimals', () => { 127 | expect(parseStrict('1.5 hours')).toBe(5400000); 128 | }); 129 | 130 | it('should work with negative integers', () => { 131 | expect(parseStrict('-100 milliseconds')).toBe(-100); 132 | }); 133 | 134 | it('should work with negative decimals', () => { 135 | expect(parseStrict('-1.5 hours')).toBe(-5400000); 136 | }); 137 | 138 | it('should work with negative decimals starting with "."', () => { 139 | expect(parseStrict('-.5 hr')).toBe(-1800000); 140 | }); 141 | }); 142 | 143 | // invalid inputs 144 | 145 | describe('parseStrict(invalid inputs)', () => { 146 | it('should throw an error, when parseStrict("")', () => { 147 | expect(() => { 148 | // @ts-expect-error - We expect this to throw. 149 | parseStrict(''); 150 | }).toThrow(); 151 | }); 152 | 153 | it('should throw an error, when parseStrict(undefined)', () => { 154 | expect(() => { 155 | // @ts-expect-error - We expect this to throw. 156 | parseStrict(undefined); 157 | }).toThrow(); 158 | }); 159 | 160 | it('should throw an error, when parseStrict(null)', () => { 161 | expect(() => { 162 | // @ts-expect-error - We expect this to throw. 163 | parseStrict(null); 164 | }).toThrow(); 165 | }); 166 | 167 | it('should throw an error, when parseStrict([])', () => { 168 | expect(() => { 169 | // @ts-expect-error - We expect this to throw. 170 | parseStrict([]); 171 | }).toThrow(); 172 | }); 173 | 174 | it('should throw an error, when parseStrict({})', () => { 175 | expect(() => { 176 | // @ts-expect-error - We expect this to throw. 177 | parseStrict({}); 178 | }).toThrow(); 179 | }); 180 | 181 | it('should throw an error, when parseStrict(NaN)', () => { 182 | expect(() => { 183 | // @ts-expect-error - We expect this to throw. 184 | parseStrict(NaN); 185 | }).toThrow(); 186 | }); 187 | 188 | it('should throw an error, when parseStrict(Infinity)', () => { 189 | expect(() => { 190 | // @ts-expect-error - We expect this to throw. 191 | parseStrict(Infinity); 192 | }).toThrow(); 193 | }); 194 | 195 | it('should throw an error, when parseStrict(-Infinity)', () => { 196 | expect(() => { 197 | // @ts-expect-error - We expect this to throw. 198 | parseStrict(-Infinity); 199 | }).toThrow(); 200 | }); 201 | }); 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # true-ms 2 | 3 | [![CI](https://github.com/shahradelahi/true-ms/actions/workflows/ci.yml/badge.svg?branch=main&event=push)](https://github.com/shahradelahi/true-ms/actions/workflows/ci.yml) 4 | [![NPM Version](https://img.shields.io/npm/v/true-ms.svg)](https://www.npmjs.com/package/true-ms) 5 | ![NPM Bundle Size](https://img.shields.io/bundlephobia/min/true-ms) 6 | ![Edge Runtime Compatible](https://img.shields.io/badge/edge--runtime-%E2%9C%94%20compatible-black) 7 | 8 | _true-ms_ is a robust JavaScript utility package designed to accurately convert various time formats into a precise number of milliseconds. It handles durations, dates, and even leap years, making it a reliable choice for time-sensitive applications. 9 | 10 | --- 11 | 12 | - [Features](#-features) 13 | - [Installation](#-installation) 14 | - [Usage](#-usage) 15 | - [Examples](#-examples) 16 | - [Convert from Duration String](#-examples) 17 | - [Convert from Duration Object](#convert-from-duration-object) 18 | - [Convert from a Date with Context](#convert-from-a-date-with-context) 19 | - [Convert from Milliseconds to String](#convert-from-milliseconds-to-string) 20 | - [Time Format Written-Out (Long Format)](#time-format-written-out-long-format) 21 | - [Documentation](#-documentation) 22 | - [Migrations](#-migrations) 23 | - [Migration from `vercel/ms`](#migration-from-vercelms) 24 | - [Contributing](#-contributing) 25 | - [License](#license) 26 | 27 | ## 👀 Features 28 | 29 | - **Leap Year Awareness:** Accurately calculates durations, considering leap years for precise results. (Read: [`Gregorian calendar`](https://en.wikipedia.org/wiki/Gregorian_calendar) and [`Common year`](https://en.wikipedia.org/wiki/Common_year)) 30 | - **Universal Compatibility:** Works seamlessly across [Node.js](https://nodejs.org), [`Edge Runtime`](https://nextjs.org/docs/app/api-reference/edge), and modern browsers. 31 | - **Flexible Input/Output:** 32 | - When a number (milliseconds) is supplied, a human-readable string with a unit is returned (e.g., `ms(60000)` returns `"1m"`). 33 | - When a string containing only a number is provided, it's converted and returned as a number (e.g., `ms('100')` returns `100`). 34 | - When a string with a number and a valid unit is passed, the equivalent number of milliseconds is returned (e.g., `ms('2 days')` returns `172800000`). 35 | 36 | ## 📦 Installation 37 | 38 | ```bash 39 | npm install true-ms 40 | ``` 41 | 42 |
43 | Install using your favorite package manager 44 | 45 | **pnpm** 46 | 47 | ```bash 48 | pnpm install true-ms 49 | ``` 50 | 51 | **yarn** 52 | 53 | ```bash 54 | yarn add true-ms 55 | ``` 56 | 57 |
58 | 59 | ## 🚀 Usage 60 | 61 | The `ms` function is the primary export. It can take a string, a number, or an object as input, along with an optional options object. 62 | 63 | ```typescript 64 | import ms from 'true-ms'; 65 | 66 | // Convert a duration string to milliseconds 67 | const milliseconds = ms('1 day'); // 86400000 68 | 69 | // Convert milliseconds to a duration string 70 | const durationString = ms(3600000); // "1h" 71 | 72 | // Convert a duration object to milliseconds 73 | const objectMilliseconds = ms({ hours: 2, minutes: 30 }); // 9000000 74 | 75 | // Convert with a starting date for accurate month/year calculations 76 | const dateMilliseconds = ms('1 month', { from: new Date('2024-02-01') }); // Handles leap year for Feb 2024 77 | ``` 78 | 79 | ## 📝 Examples 80 | 81 | 82 | ```js 83 | import ms from 'true-ms'; 84 | 85 | // Basic conversions 86 | ms('2 days') // 172800000 87 | ms('1d') // 86400000 88 | ms('10h') // 36000000 89 | ms('2.5 hrs') // 9000000 90 | ms('2h') // 7200000 91 | ms('1m') // 60000 92 | ms('1mon') // 2678400000 (approx. 31 days) 93 | ms('5s') // 5000 94 | ms('1y') // 31557600000 (approx. 365.25 days) 95 | ms('100') // 100 96 | 97 | // Negative durations 98 | ms('-3 days') // -259200000 99 | ms('-1h') // -3600000 100 | ms('-200') // -200 101 | ``` 102 | 103 | ### Convert from Duration Object 104 | 105 | 106 | ```js 107 | import ms from 'true-ms'; 108 | 109 | ms({ hours: 10 }) // 36000000 110 | ms({ days: 2 }) // 172800000 111 | ms({ minutes: 1 }) // 60000 112 | ms({ seconds: 5 }) // 5000 113 | ms({ years: 1 }) // 31536000000 114 | ms({ months: 1, days: 1 }) // 2764800000 (e.g., 31 days for month + 1 day) 115 | ms({ years: 1, months: 2, days: 3, hours: 4, minutes: 5, seconds: 6 }) // Combined duration 116 | ``` 117 | 118 | ### Convert from a Date with Context 119 | 120 | The `from` option allows for precise calculations based on a specific starting date, crucial for accurate month and year durations, especially around leap years. 121 | 122 | 123 | ```js 124 | import ms from 'true-ms'; 125 | 126 | ms('1mon', { from: new Date('2016-01-01') }) // 2678400000 (31 days in Jan 2016) 127 | ms('1mon', { from: new Date('2017-02-01') }) // 2419200000 (28 days in Feb 2017) 128 | ms('1y', { from: new Date('2016-01-01') }) // 31622400000 (Leap year; 366 days) 129 | ms('1y', { from: new Date('2015-01-01') }) // 31536000000 (Non-leap year; 365 days) 130 | ms('1mon', { from: new Date('2024-02-01') }) // 2505600000 (29 days in Feb 2024 - a leap year) 131 | ``` 132 | 133 | ### Convert from Milliseconds to String 134 | 135 | 136 | ```js 137 | import ms from 'true-ms'; 138 | 139 | ms(60000) // "1m" 140 | ms(2 * 60000) // "2m" 141 | ms(-3 * 60000) // "-3m" 142 | ms(ms('10 hours')) // "10h" 143 | ``` 144 | 145 | ### Time Format Written-Out (Long Format) 146 | 147 | Use the `{ long: true }` option to get a more descriptive string. 148 | 149 | 150 | ```js 151 | import ms from 'true-ms'; 152 | 153 | ms(60000, { long: true }) // "1 minute" 154 | ms(2 * 60000, { long: true }) // "2 minutes" 155 | ms(-3 * 60000, { long: true }) // "-3 minutes" 156 | ms(ms('10 hours'), { long: true }) // "10 hours" 157 | ``` 158 | 159 | ### 📚 Documentation 160 | 161 | For all configuration options and detailed API reference, please see [the API docs](https://www.jsdocs.io/package/true-ms). 162 | 163 | ### 🚀 Migrations 164 | 165 | #### Migration from `vercel/ms` 166 | 167 | The `true-ms` package is designed to be fully compatible with [`vercel/ms`](https://github.com/vercel/ms). To migrate, simply remove `ms` from your dependencies and replace it with `true-ms`. 168 | 169 | ```diff js 170 | - import ms from 'ms'; 171 | + import ms from 'true-ms'; 172 | ``` 173 | 174 | ### 🤝 Contributing 175 | 176 | Want to contribute? Awesome! To show your support is to star the project, or to raise issues on [GitHub](https://github.com/shahradelahi/true-ms). 177 | 178 | Thanks again for your support, it is much appreciated! 🙏 179 | 180 | ### License 181 | 182 | [MIT](LICENSE) © [Shahrad Elahi](https://github.com/shahradelahi) 183 | -------------------------------------------------------------------------------- /tests/index.test.ts: -------------------------------------------------------------------------------- 1 | import ms from '@/index'; 2 | 3 | describe('ms(string)', () => { 4 | it('should not throw an error', () => { 5 | expect(() => { 6 | ms('1m'); 7 | }).not.toThrow(); 8 | }); 9 | 10 | it('should preserve ms', () => { 11 | expect(ms('100')).toBe(100); 12 | }); 13 | 14 | it('should convert from m to ms', () => { 15 | expect(ms('1m')).toBe(60000); 16 | }); 17 | 18 | it('should convert from h to ms', () => { 19 | expect(ms('1h')).toBe(3600000); 20 | }); 21 | 22 | it('should convert d to ms', () => { 23 | expect(ms('2d')).toBe(172800000); 24 | }); 25 | 26 | it('should convert w to ms', () => { 27 | expect(ms('3w')).toBe(1814400000); 28 | }); 29 | 30 | it('should convert s to ms', () => { 31 | expect(ms('1s')).toBe(1000); 32 | }); 33 | 34 | it('should convert ms to ms', () => { 35 | expect(ms('100ms')).toBe(100); 36 | }); 37 | 38 | it('should convert mon from 2016 to ms', () => { 39 | // 31 days in Jan 2016 40 | expect(ms('1mon', { from: new Date('2016-01-01') })).toBe(2678400000); 41 | // 30 days in Nov 2016 42 | expect(ms('1mon', { from: new Date('2016-11-01') })).toBe(2592000000); 43 | // 31 days in Dec 2016 44 | expect(ms('1mon', { from: new Date('2016-12-01') })).toBe(2678400000); 45 | }); 46 | 47 | it('should convert mon from 2017 to ms', () => { 48 | // 31 days in Jan 2017 49 | expect(ms('1mon', { from: new Date('2017-01-01') })).toBe(2678400000); 50 | // 28 days in Feb 2017 51 | expect(ms('1mon', { from: new Date('2017-02-01') })).toBe(2419200000); 52 | // 30 days in Dec 2017 53 | expect(ms('1mon', { from: new Date('2017-12-01') })).toBe(2678400000); 54 | }); 55 | 56 | it('should convert y from Jan 2016 to ms', () => { 57 | expect(ms('1y', { from: new Date('2016-01-01') })).toBe(31622400000); // 366 days in 2016 58 | }); 59 | 60 | it('should convert y from Jan 2017 to ms', () => { 61 | expect(ms('1y', { from: new Date('2017-01-01') })).toBe(31536000000); // 365 days in 2017 62 | }); 63 | 64 | it('should work with decimals', () => { 65 | expect(ms('1.5h')).toBe(5400000); 66 | }); 67 | 68 | it('should work with multiple spaces', () => { 69 | expect(ms('1 s')).toBe(1000); 70 | }); 71 | 72 | it('should return NaN if invalid', () => { 73 | // @ts-expect-error - We expect this to fail. 74 | expect(isNaN(ms('☃'))).toBe(true); 75 | // @ts-expect-error - We expect this to fail. 76 | expect(isNaN(ms('10-.5'))).toBe(true); 77 | // @ts-expect-error - We expect this to fail. 78 | expect(isNaN(ms('ms'))).toBe(true); 79 | }); 80 | 81 | it('should be case-insensitive', () => { 82 | expect(ms('1.5H')).toBe(5400000); 83 | }); 84 | 85 | it('should work with numbers starting with .', () => { 86 | expect(ms('.5ms')).toBe(0.5); 87 | }); 88 | 89 | it('should work with negative integers', () => { 90 | expect(ms('-100ms')).toBe(-100); 91 | }); 92 | 93 | it('should work with negative decimals', () => { 94 | expect(ms('-1.5h')).toBe(-5400000); 95 | expect(ms('-10.5h')).toBe(-37800000); 96 | }); 97 | 98 | it('should work with negative decimals starting with "."', () => { 99 | expect(ms('-.5h')).toBe(-1800000); 100 | }); 101 | }); 102 | 103 | // long strings 104 | 105 | describe('ms(long string)', () => { 106 | it('should not throw an error', () => { 107 | expect(() => { 108 | ms('53 milliseconds'); 109 | }).not.toThrow(); 110 | }); 111 | 112 | it('should convert milliseconds to ms', () => { 113 | expect(ms('53 milliseconds')).toBe(53); 114 | }); 115 | 116 | it('should convert msecs to ms', () => { 117 | expect(ms('17 msecs')).toBe(17); 118 | }); 119 | 120 | it('should convert sec to ms', () => { 121 | expect(ms('1 sec')).toBe(1000); 122 | }); 123 | 124 | it('should convert from min to ms', () => { 125 | expect(ms('1 min')).toBe(60000); 126 | }); 127 | 128 | it('should convert from hr to ms', () => { 129 | expect(ms('1 hr')).toBe(3600000); 130 | }); 131 | 132 | it('should convert days to ms', () => { 133 | expect(ms('2 days')).toBe(172800000); 134 | }); 135 | 136 | it('should convert weeks to ms', () => { 137 | expect(ms('1 week')).toBe(604800000); 138 | }); 139 | 140 | it('should convert years to ms', () => { 141 | expect(ms('1 year')).toBe(31536000000); 142 | }); 143 | 144 | it('should work with decimals', () => { 145 | expect(ms('1.5 hours')).toBe(5400000); 146 | }); 147 | 148 | it('should work with negative integers', () => { 149 | expect(ms('-100 milliseconds')).toBe(-100); 150 | }); 151 | 152 | it('should work with negative decimals', () => { 153 | expect(ms('-1.5 hours')).toBe(-5400000); 154 | }); 155 | 156 | it('should work with negative decimals starting with "."', () => { 157 | expect(ms('-.5 hr')).toBe(-1800000); 158 | }); 159 | }); 160 | 161 | // numbers 162 | 163 | describe('ms(number, { long: true })', () => { 164 | it('should not throw an error', () => { 165 | expect(() => { 166 | ms(500, { long: true }); 167 | }).not.toThrow(); 168 | }); 169 | 170 | it('should support milliseconds', () => { 171 | expect(ms(500, { long: true })).toBe('500 ms'); 172 | 173 | expect(ms(-500, { long: true })).toBe('-500 ms'); 174 | }); 175 | 176 | it('should support seconds', () => { 177 | expect(ms(1000, { long: true })).toBe('1 second'); 178 | expect(ms(1200, { long: true })).toBe('1 second'); 179 | expect(ms(10000, { long: true })).toBe('10 seconds'); 180 | 181 | expect(ms(-1000, { long: true })).toBe('-1 second'); 182 | expect(ms(-1200, { long: true })).toBe('-1 second'); 183 | expect(ms(-10000, { long: true })).toBe('-10 seconds'); 184 | }); 185 | 186 | it('should support minutes', () => { 187 | expect(ms(60 * 1000, { long: true })).toBe('1 minute'); 188 | expect(ms(60 * 1200, { long: true })).toBe('1 minute'); 189 | expect(ms(60 * 10000, { long: true })).toBe('10 minutes'); 190 | 191 | expect(ms(-1 * 60 * 1000, { long: true })).toBe('-1 minute'); 192 | expect(ms(-1 * 60 * 1200, { long: true })).toBe('-1 minute'); 193 | expect(ms(-1 * 60 * 10000, { long: true })).toBe('-10 minutes'); 194 | }); 195 | 196 | it('should support hours', () => { 197 | expect(ms(60 * 60 * 1000, { long: true })).toBe('1 hour'); 198 | expect(ms(60 * 60 * 1200, { long: true })).toBe('1 hour'); 199 | expect(ms(60 * 60 * 10000, { long: true })).toBe('10 hours'); 200 | 201 | expect(ms(-1 * 60 * 60 * 1000, { long: true })).toBe('-1 hour'); 202 | expect(ms(-1 * 60 * 60 * 1200, { long: true })).toBe('-1 hour'); 203 | expect(ms(-1 * 60 * 60 * 10000, { long: true })).toBe('-10 hours'); 204 | }); 205 | 206 | it('should support days', () => { 207 | expect(ms(24 * 60 * 60 * 1000, { long: true })).toBe('1 day'); 208 | expect(ms(24 * 60 * 60 * 1200, { long: true })).toBe('1 day'); 209 | expect(ms(24 * 60 * 60 * 10000, { long: true })).toBe('10 days'); 210 | 211 | expect(ms(-1 * 24 * 60 * 60 * 1000, { long: true })).toBe('-1 day'); 212 | expect(ms(-1 * 24 * 60 * 60 * 1200, { long: true })).toBe('-1 day'); 213 | expect(ms(-1 * 24 * 60 * 60 * 10000, { long: true })).toBe('-10 days'); 214 | }); 215 | 216 | it('should round', () => { 217 | expect(ms(234234234, { long: true })).toBe('3 days'); 218 | 219 | expect(ms(-234234234, { long: true })).toBe('-3 days'); 220 | }); 221 | }); 222 | 223 | // numbers 224 | 225 | describe('ms(number)', () => { 226 | it('should not throw an error', () => { 227 | expect(() => { 228 | ms(500); 229 | }).not.toThrow(); 230 | }); 231 | 232 | it('should support milliseconds', () => { 233 | expect(ms(500)).toBe('500ms'); 234 | 235 | expect(ms(-500)).toBe('-500ms'); 236 | }); 237 | 238 | it('should support seconds', () => { 239 | expect(ms(1000)).toBe('1s'); 240 | expect(ms(10000)).toBe('10s'); 241 | 242 | expect(ms(-1000)).toBe('-1s'); 243 | expect(ms(-10000)).toBe('-10s'); 244 | }); 245 | 246 | it('should support minutes', () => { 247 | expect(ms(60 * 1000)).toBe('1m'); 248 | expect(ms(60 * 10000)).toBe('10m'); 249 | 250 | expect(ms(-1 * 60 * 1000)).toBe('-1m'); 251 | expect(ms(-1 * 60 * 10000)).toBe('-10m'); 252 | }); 253 | 254 | it('should support hours', () => { 255 | expect(ms(60 * 60 * 1000)).toBe('1h'); 256 | expect(ms(60 * 60 * 10000)).toBe('10h'); 257 | 258 | expect(ms(-1 * 60 * 60 * 1000)).toBe('-1h'); 259 | expect(ms(-1 * 60 * 60 * 10000)).toBe('-10h'); 260 | }); 261 | 262 | it('should support days', () => { 263 | expect(ms(24 * 60 * 60 * 1000)).toBe('1d'); 264 | expect(ms(24 * 60 * 60 * 10000)).toBe('10d'); 265 | 266 | expect(ms(-1 * 24 * 60 * 60 * 1000)).toBe('-1d'); 267 | expect(ms(-1 * 24 * 60 * 60 * 10000)).toBe('-10d'); 268 | }); 269 | 270 | it('should round', () => { 271 | expect(ms(234234234)).toBe('3d'); 272 | 273 | expect(ms(-234234234)).toBe('-3d'); 274 | }); 275 | }); 276 | 277 | // invalid inputs 278 | 279 | describe('ms(invalid inputs)', () => { 280 | it('should throw an error, when ms("")', () => { 281 | expect(() => { 282 | // @ts-expect-error - We expect this to throw. 283 | ms(''); 284 | }).toThrow(); 285 | }); 286 | 287 | it('should throw an error, when ms(undefined)', () => { 288 | expect(() => { 289 | // @ts-expect-error - We expect this to throw. 290 | ms(undefined); 291 | }).toThrow(); 292 | }); 293 | 294 | it('should throw an error, when ms(null)', () => { 295 | expect(() => { 296 | // @ts-expect-error - We expect this to throw. 297 | ms(null); 298 | }).toThrow(); 299 | }); 300 | 301 | it('should throw an error, when ms([])', () => { 302 | expect(() => { 303 | // @ts-expect-error - We expect this to throw. 304 | ms([]); 305 | }).toThrow(); 306 | }); 307 | 308 | it('should throw an error, when ms(NaN)', () => { 309 | expect(() => { 310 | ms(NaN); 311 | }).toThrow(); 312 | }); 313 | 314 | it('should throw an error, when ms(Infinity)', () => { 315 | expect(() => { 316 | ms(Infinity); 317 | }).toThrow(); 318 | }); 319 | 320 | it('should throw an error, when ms(-Infinity)', () => { 321 | expect(() => { 322 | ms(-Infinity); 323 | }).toThrow(); 324 | }); 325 | }); 326 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | luxon: 12 | specifier: 3.7.1 13 | version: 3.7.1 14 | devDependencies: 15 | '@edge-runtime/jest-environment': 16 | specifier: 4.0.0 17 | version: 4.0.0 18 | '@shahrad/eslint-config': 19 | specifier: 1.0.1 20 | version: 1.0.1(typescript@5.9.2) 21 | '@shahrad/prettier-config': 22 | specifier: 1.2.2 23 | version: 1.2.2(@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.6.2))(prettier-plugin-packagejson@2.5.6(prettier@3.6.2))(prettier-plugin-sh@0.14.0(prettier@3.6.2))(prettier@3.6.2) 24 | '@shahrad/tsconfig': 25 | specifier: 1.2.0 26 | version: 1.2.0 27 | '@types/jest': 28 | specifier: 30.0.0 29 | version: 30.0.0 30 | '@types/luxon': 31 | specifier: 3.7.1 32 | version: 3.7.1 33 | eslint: 34 | specifier: 9.34.0 35 | version: 9.34.0 36 | jest: 37 | specifier: 30.0.4 38 | version: 30.0.4(@types/node@24.3.0) 39 | prettier: 40 | specifier: 3.6.2 41 | version: 3.6.2 42 | ts-jest: 43 | specifier: 29.4.0 44 | version: 29.4.0(@babel/core@7.28.0)(@jest/transform@30.0.4)(@jest/types@30.0.1)(babel-jest@30.0.4(@babel/core@7.28.0))(esbuild@0.25.9)(jest-util@30.0.2)(jest@30.0.4(@types/node@24.3.0))(typescript@5.9.2) 45 | tsup: 46 | specifier: 8.5.0 47 | version: 8.5.0(typescript@5.9.2) 48 | typescript: 49 | specifier: 5.9.2 50 | version: 5.9.2 51 | 52 | packages: 53 | 54 | '@ampproject/remapping@2.3.0': 55 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 56 | engines: {node: '>=6.0.0'} 57 | 58 | '@babel/code-frame@7.27.1': 59 | resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 60 | engines: {node: '>=6.9.0'} 61 | 62 | '@babel/compat-data@7.28.0': 63 | resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} 64 | engines: {node: '>=6.9.0'} 65 | 66 | '@babel/core@7.28.0': 67 | resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} 68 | engines: {node: '>=6.9.0'} 69 | 70 | '@babel/generator@7.28.3': 71 | resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} 72 | engines: {node: '>=6.9.0'} 73 | 74 | '@babel/helper-compilation-targets@7.27.2': 75 | resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} 76 | engines: {node: '>=6.9.0'} 77 | 78 | '@babel/helper-globals@7.28.0': 79 | resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} 80 | engines: {node: '>=6.9.0'} 81 | 82 | '@babel/helper-module-imports@7.27.1': 83 | resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} 84 | engines: {node: '>=6.9.0'} 85 | 86 | '@babel/helper-module-transforms@7.27.3': 87 | resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} 88 | engines: {node: '>=6.9.0'} 89 | peerDependencies: 90 | '@babel/core': ^7.0.0 91 | 92 | '@babel/helper-plugin-utils@7.27.1': 93 | resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} 94 | engines: {node: '>=6.9.0'} 95 | 96 | '@babel/helper-string-parser@7.27.1': 97 | resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 98 | engines: {node: '>=6.9.0'} 99 | 100 | '@babel/helper-validator-identifier@7.27.1': 101 | resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 102 | engines: {node: '>=6.9.0'} 103 | 104 | '@babel/helper-validator-option@7.27.1': 105 | resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} 106 | engines: {node: '>=6.9.0'} 107 | 108 | '@babel/helpers@7.27.6': 109 | resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} 110 | engines: {node: '>=6.9.0'} 111 | 112 | '@babel/parser@7.28.3': 113 | resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} 114 | engines: {node: '>=6.0.0'} 115 | hasBin: true 116 | 117 | '@babel/plugin-syntax-async-generators@7.8.4': 118 | resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} 119 | peerDependencies: 120 | '@babel/core': ^7.0.0-0 121 | 122 | '@babel/plugin-syntax-bigint@7.8.3': 123 | resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} 124 | peerDependencies: 125 | '@babel/core': ^7.0.0-0 126 | 127 | '@babel/plugin-syntax-class-properties@7.12.13': 128 | resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} 129 | peerDependencies: 130 | '@babel/core': ^7.0.0-0 131 | 132 | '@babel/plugin-syntax-class-static-block@7.14.5': 133 | resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} 134 | engines: {node: '>=6.9.0'} 135 | peerDependencies: 136 | '@babel/core': ^7.0.0-0 137 | 138 | '@babel/plugin-syntax-import-attributes@7.27.1': 139 | resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} 140 | engines: {node: '>=6.9.0'} 141 | peerDependencies: 142 | '@babel/core': ^7.0.0-0 143 | 144 | '@babel/plugin-syntax-import-meta@7.10.4': 145 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 146 | peerDependencies: 147 | '@babel/core': ^7.0.0-0 148 | 149 | '@babel/plugin-syntax-json-strings@7.8.3': 150 | resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} 151 | peerDependencies: 152 | '@babel/core': ^7.0.0-0 153 | 154 | '@babel/plugin-syntax-jsx@7.27.1': 155 | resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} 156 | engines: {node: '>=6.9.0'} 157 | peerDependencies: 158 | '@babel/core': ^7.0.0-0 159 | 160 | '@babel/plugin-syntax-logical-assignment-operators@7.10.4': 161 | resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} 162 | peerDependencies: 163 | '@babel/core': ^7.0.0-0 164 | 165 | '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': 166 | resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} 167 | peerDependencies: 168 | '@babel/core': ^7.0.0-0 169 | 170 | '@babel/plugin-syntax-numeric-separator@7.10.4': 171 | resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} 172 | peerDependencies: 173 | '@babel/core': ^7.0.0-0 174 | 175 | '@babel/plugin-syntax-object-rest-spread@7.8.3': 176 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} 177 | peerDependencies: 178 | '@babel/core': ^7.0.0-0 179 | 180 | '@babel/plugin-syntax-optional-catch-binding@7.8.3': 181 | resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} 182 | peerDependencies: 183 | '@babel/core': ^7.0.0-0 184 | 185 | '@babel/plugin-syntax-optional-chaining@7.8.3': 186 | resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} 187 | peerDependencies: 188 | '@babel/core': ^7.0.0-0 189 | 190 | '@babel/plugin-syntax-private-property-in-object@7.14.5': 191 | resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} 192 | engines: {node: '>=6.9.0'} 193 | peerDependencies: 194 | '@babel/core': ^7.0.0-0 195 | 196 | '@babel/plugin-syntax-top-level-await@7.14.5': 197 | resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} 198 | engines: {node: '>=6.9.0'} 199 | peerDependencies: 200 | '@babel/core': ^7.0.0-0 201 | 202 | '@babel/plugin-syntax-typescript@7.27.1': 203 | resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} 204 | engines: {node: '>=6.9.0'} 205 | peerDependencies: 206 | '@babel/core': ^7.0.0-0 207 | 208 | '@babel/template@7.27.2': 209 | resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 210 | engines: {node: '>=6.9.0'} 211 | 212 | '@babel/traverse@7.28.0': 213 | resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} 214 | engines: {node: '>=6.9.0'} 215 | 216 | '@babel/types@7.28.2': 217 | resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} 218 | engines: {node: '>=6.9.0'} 219 | 220 | '@bcoe/v8-coverage@0.2.3': 221 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 222 | 223 | '@edge-runtime/jest-environment@4.0.0': 224 | resolution: {integrity: sha512-75bTOg+coJO0YRfwzlSzCxdNi7KRKcRBeCYSmnKrvYiS++iF2kif0TLL8oKu6Z70pcFO3ugC6AjOloLe0WxOzw==} 225 | engines: {node: '>=18'} 226 | 227 | '@edge-runtime/primitives@6.0.0': 228 | resolution: {integrity: sha512-FqoxaBT+prPBHBwE1WXS1ocnu/VLTQyZ6NMUBAdbP7N2hsFTTxMC/jMu2D/8GAlMQfxeuppcPuCUk/HO3fpIvA==} 229 | engines: {node: '>=18'} 230 | 231 | '@edge-runtime/vm@5.0.0': 232 | resolution: {integrity: sha512-NKBGBSIKUG584qrS1tyxVpX/AKJKQw5HgjYEnPLC0QsTw79JrGn+qUr8CXFb955Iy7GUdiiUv1rJ6JBGvaKb6w==} 233 | engines: {node: '>=18'} 234 | 235 | '@emnapi/core@1.5.0': 236 | resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} 237 | 238 | '@emnapi/runtime@1.4.5': 239 | resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} 240 | 241 | '@emnapi/wasi-threads@1.1.0': 242 | resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} 243 | 244 | '@esbuild/aix-ppc64@0.25.9': 245 | resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} 246 | engines: {node: '>=18'} 247 | cpu: [ppc64] 248 | os: [aix] 249 | 250 | '@esbuild/android-arm64@0.25.9': 251 | resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} 252 | engines: {node: '>=18'} 253 | cpu: [arm64] 254 | os: [android] 255 | 256 | '@esbuild/android-arm@0.25.9': 257 | resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} 258 | engines: {node: '>=18'} 259 | cpu: [arm] 260 | os: [android] 261 | 262 | '@esbuild/android-x64@0.25.9': 263 | resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} 264 | engines: {node: '>=18'} 265 | cpu: [x64] 266 | os: [android] 267 | 268 | '@esbuild/darwin-arm64@0.25.9': 269 | resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} 270 | engines: {node: '>=18'} 271 | cpu: [arm64] 272 | os: [darwin] 273 | 274 | '@esbuild/darwin-x64@0.25.9': 275 | resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} 276 | engines: {node: '>=18'} 277 | cpu: [x64] 278 | os: [darwin] 279 | 280 | '@esbuild/freebsd-arm64@0.25.9': 281 | resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} 282 | engines: {node: '>=18'} 283 | cpu: [arm64] 284 | os: [freebsd] 285 | 286 | '@esbuild/freebsd-x64@0.25.9': 287 | resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} 288 | engines: {node: '>=18'} 289 | cpu: [x64] 290 | os: [freebsd] 291 | 292 | '@esbuild/linux-arm64@0.25.9': 293 | resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} 294 | engines: {node: '>=18'} 295 | cpu: [arm64] 296 | os: [linux] 297 | 298 | '@esbuild/linux-arm@0.25.9': 299 | resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} 300 | engines: {node: '>=18'} 301 | cpu: [arm] 302 | os: [linux] 303 | 304 | '@esbuild/linux-ia32@0.25.9': 305 | resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} 306 | engines: {node: '>=18'} 307 | cpu: [ia32] 308 | os: [linux] 309 | 310 | '@esbuild/linux-loong64@0.25.9': 311 | resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} 312 | engines: {node: '>=18'} 313 | cpu: [loong64] 314 | os: [linux] 315 | 316 | '@esbuild/linux-mips64el@0.25.9': 317 | resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} 318 | engines: {node: '>=18'} 319 | cpu: [mips64el] 320 | os: [linux] 321 | 322 | '@esbuild/linux-ppc64@0.25.9': 323 | resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} 324 | engines: {node: '>=18'} 325 | cpu: [ppc64] 326 | os: [linux] 327 | 328 | '@esbuild/linux-riscv64@0.25.9': 329 | resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} 330 | engines: {node: '>=18'} 331 | cpu: [riscv64] 332 | os: [linux] 333 | 334 | '@esbuild/linux-s390x@0.25.9': 335 | resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} 336 | engines: {node: '>=18'} 337 | cpu: [s390x] 338 | os: [linux] 339 | 340 | '@esbuild/linux-x64@0.25.9': 341 | resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} 342 | engines: {node: '>=18'} 343 | cpu: [x64] 344 | os: [linux] 345 | 346 | '@esbuild/netbsd-arm64@0.25.9': 347 | resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} 348 | engines: {node: '>=18'} 349 | cpu: [arm64] 350 | os: [netbsd] 351 | 352 | '@esbuild/netbsd-x64@0.25.9': 353 | resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} 354 | engines: {node: '>=18'} 355 | cpu: [x64] 356 | os: [netbsd] 357 | 358 | '@esbuild/openbsd-arm64@0.25.9': 359 | resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} 360 | engines: {node: '>=18'} 361 | cpu: [arm64] 362 | os: [openbsd] 363 | 364 | '@esbuild/openbsd-x64@0.25.9': 365 | resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} 366 | engines: {node: '>=18'} 367 | cpu: [x64] 368 | os: [openbsd] 369 | 370 | '@esbuild/openharmony-arm64@0.25.9': 371 | resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} 372 | engines: {node: '>=18'} 373 | cpu: [arm64] 374 | os: [openharmony] 375 | 376 | '@esbuild/sunos-x64@0.25.9': 377 | resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} 378 | engines: {node: '>=18'} 379 | cpu: [x64] 380 | os: [sunos] 381 | 382 | '@esbuild/win32-arm64@0.25.9': 383 | resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} 384 | engines: {node: '>=18'} 385 | cpu: [arm64] 386 | os: [win32] 387 | 388 | '@esbuild/win32-ia32@0.25.9': 389 | resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} 390 | engines: {node: '>=18'} 391 | cpu: [ia32] 392 | os: [win32] 393 | 394 | '@esbuild/win32-x64@0.25.9': 395 | resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} 396 | engines: {node: '>=18'} 397 | cpu: [x64] 398 | os: [win32] 399 | 400 | '@eslint-community/eslint-utils@4.7.0': 401 | resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 402 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 403 | peerDependencies: 404 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 405 | 406 | '@eslint-community/regexpp@4.12.1': 407 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 408 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 409 | 410 | '@eslint/config-array@0.21.0': 411 | resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} 412 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 413 | 414 | '@eslint/config-helpers@0.3.1': 415 | resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} 416 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 417 | 418 | '@eslint/core@0.15.2': 419 | resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} 420 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 421 | 422 | '@eslint/eslintrc@3.3.1': 423 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 424 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 425 | 426 | '@eslint/js@9.34.0': 427 | resolution: {integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==} 428 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 429 | 430 | '@eslint/object-schema@2.1.6': 431 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 432 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 433 | 434 | '@eslint/plugin-kit@0.3.5': 435 | resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} 436 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 437 | 438 | '@humanfs/core@0.19.1': 439 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 440 | engines: {node: '>=18.18.0'} 441 | 442 | '@humanfs/node@0.16.6': 443 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 444 | engines: {node: '>=18.18.0'} 445 | 446 | '@humanwhocodes/module-importer@1.0.1': 447 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 448 | engines: {node: '>=12.22'} 449 | 450 | '@humanwhocodes/retry@0.3.1': 451 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 452 | engines: {node: '>=18.18'} 453 | 454 | '@humanwhocodes/retry@0.4.3': 455 | resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 456 | engines: {node: '>=18.18'} 457 | 458 | '@ianvs/prettier-plugin-sort-imports@4.4.0': 459 | resolution: {integrity: sha512-f4/e+/ANGk3tHuwRW0uh2YuBR50I4h1ZjGQ+5uD8sWfinHTivQsnieR5cz24t8M6Vx4rYvZ5v/IEKZhYpzQm9Q==} 460 | peerDependencies: 461 | '@vue/compiler-sfc': 2.7.x || 3.x 462 | prettier: 2 || 3 463 | peerDependenciesMeta: 464 | '@vue/compiler-sfc': 465 | optional: true 466 | 467 | '@isaacs/cliui@8.0.2': 468 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 469 | engines: {node: '>=12'} 470 | 471 | '@istanbuljs/load-nyc-config@1.1.0': 472 | resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} 473 | engines: {node: '>=8'} 474 | 475 | '@istanbuljs/schema@0.1.3': 476 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 477 | engines: {node: '>=8'} 478 | 479 | '@jest/console@30.0.4': 480 | resolution: {integrity: sha512-tMLCDvBJBwPqMm4OAiuKm2uF5y5Qe26KgcMn+nrDSWpEW+eeFmqA0iO4zJfL16GP7gE3bUUQ3hIuUJ22AqVRnw==} 481 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 482 | 483 | '@jest/core@30.0.4': 484 | resolution: {integrity: sha512-MWScSO9GuU5/HoWjpXAOBs6F/iobvK1XlioelgOM9St7S0Z5WTI9kjCQLPeo4eQRRYusyLW25/J7J5lbFkrYXw==} 485 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 486 | peerDependencies: 487 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 488 | peerDependenciesMeta: 489 | node-notifier: 490 | optional: true 491 | 492 | '@jest/diff-sequences@30.0.1': 493 | resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} 494 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 495 | 496 | '@jest/environment@29.5.0': 497 | resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} 498 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 499 | 500 | '@jest/environment@30.0.4': 501 | resolution: {integrity: sha512-5NT+sr7ZOb8wW7C4r7wOKnRQ8zmRWQT2gW4j73IXAKp5/PX1Z8MCStBLQDYfIG3n1Sw0NRfYGdp0iIPVooBAFQ==} 502 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 503 | 504 | '@jest/expect-utils@30.0.4': 505 | resolution: {integrity: sha512-EgXecHDNfANeqOkcak0DxsoVI4qkDUsR7n/Lr2vtmTBjwLPBnnPOF71S11Q8IObWzxm2QgQoY6f9hzrRD3gHRA==} 506 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 507 | 508 | '@jest/expect@30.0.4': 509 | resolution: {integrity: sha512-Z/DL7t67LBHSX4UzDyeYKqOxE/n7lbrrgEwWM3dGiH5Dgn35nk+YtgzKudmfIrBI8DRRrKYY5BCo3317HZV1Fw==} 510 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 511 | 512 | '@jest/fake-timers@29.5.0': 513 | resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} 514 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 515 | 516 | '@jest/fake-timers@30.0.4': 517 | resolution: {integrity: sha512-qZ7nxOcL5+gwBO6LErvwVy5k06VsX/deqo2XnVUSTV0TNC9lrg8FC3dARbi+5lmrr5VyX5drragK+xLcOjvjYw==} 518 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 519 | 520 | '@jest/get-type@30.0.1': 521 | resolution: {integrity: sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==} 522 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 523 | 524 | '@jest/globals@30.0.4': 525 | resolution: {integrity: sha512-avyZuxEHF2EUhFF6NEWVdxkRRV6iXXcIES66DLhuLlU7lXhtFG/ySq/a8SRZmEJSsLkNAFX6z6mm8KWyXe9OEA==} 526 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 527 | 528 | '@jest/pattern@30.0.1': 529 | resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} 530 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 531 | 532 | '@jest/reporters@30.0.4': 533 | resolution: {integrity: sha512-6ycNmP0JSJEEys1FbIzHtjl9BP0tOZ/KN6iMeAKrdvGmUsa1qfRdlQRUDKJ4P84hJ3xHw1yTqJt4fvPNHhyE+g==} 534 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 535 | peerDependencies: 536 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 537 | peerDependenciesMeta: 538 | node-notifier: 539 | optional: true 540 | 541 | '@jest/schemas@29.6.3': 542 | resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} 543 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 544 | 545 | '@jest/schemas@30.0.1': 546 | resolution: {integrity: sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w==} 547 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 548 | 549 | '@jest/snapshot-utils@30.0.4': 550 | resolution: {integrity: sha512-BEpX8M/Y5lG7MI3fmiO+xCnacOrVsnbqVrcDZIT8aSGkKV1w2WwvRQxSWw5SIS8ozg7+h8tSj5EO1Riqqxcdag==} 551 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 552 | 553 | '@jest/source-map@30.0.1': 554 | resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==} 555 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 556 | 557 | '@jest/test-result@30.0.4': 558 | resolution: {integrity: sha512-Mfpv8kjyKTHqsuu9YugB6z1gcdB3TSSOaKlehtVaiNlClMkEHY+5ZqCY2CrEE3ntpBMlstX/ShDAf84HKWsyIw==} 559 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 560 | 561 | '@jest/test-sequencer@30.0.4': 562 | resolution: {integrity: sha512-bj6ePmqi4uxAE8EHE0Slmk5uBYd9Vd/PcVt06CsBxzH4bbA8nGsI1YbXl/NH+eii4XRtyrRx+Cikub0x8H4vDg==} 563 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 564 | 565 | '@jest/transform@30.0.4': 566 | resolution: {integrity: sha512-atvy4hRph/UxdCIBp+UB2jhEA/jJiUeGZ7QPgBi9jUUKNgi3WEoMXGNG7zbbELG2+88PMabUNCDchmqgJy3ELg==} 567 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 568 | 569 | '@jest/types@29.6.3': 570 | resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} 571 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 572 | 573 | '@jest/types@30.0.1': 574 | resolution: {integrity: sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw==} 575 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 576 | 577 | '@jridgewell/gen-mapping@0.3.12': 578 | resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} 579 | 580 | '@jridgewell/resolve-uri@3.1.2': 581 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 582 | engines: {node: '>=6.0.0'} 583 | 584 | '@jridgewell/sourcemap-codec@1.5.4': 585 | resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} 586 | 587 | '@jridgewell/trace-mapping@0.3.29': 588 | resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} 589 | 590 | '@napi-rs/wasm-runtime@0.2.12': 591 | resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} 592 | 593 | '@nodelib/fs.scandir@2.1.5': 594 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 595 | engines: {node: '>= 8'} 596 | 597 | '@nodelib/fs.stat@2.0.5': 598 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 599 | engines: {node: '>= 8'} 600 | 601 | '@nodelib/fs.walk@1.2.8': 602 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 603 | engines: {node: '>= 8'} 604 | 605 | '@pkgjs/parseargs@0.11.0': 606 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 607 | engines: {node: '>=14'} 608 | 609 | '@pkgr/core@0.1.2': 610 | resolution: {integrity: sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==} 611 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 612 | 613 | '@pkgr/core@0.2.7': 614 | resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==} 615 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 616 | 617 | '@rollup/rollup-android-arm-eabi@4.44.2': 618 | resolution: {integrity: sha512-g0dF8P1e2QYPOj1gu7s/3LVP6kze9A7m6x0BZ9iTdXK8N5c2V7cpBKHV3/9A4Zd8xxavdhK0t4PnqjkqVmUc9Q==} 619 | cpu: [arm] 620 | os: [android] 621 | 622 | '@rollup/rollup-android-arm64@4.44.2': 623 | resolution: {integrity: sha512-Yt5MKrOosSbSaAK5Y4J+vSiID57sOvpBNBR6K7xAaQvk3MkcNVV0f9fE20T+41WYN8hDn6SGFlFrKudtx4EoxA==} 624 | cpu: [arm64] 625 | os: [android] 626 | 627 | '@rollup/rollup-darwin-arm64@4.44.2': 628 | resolution: {integrity: sha512-EsnFot9ZieM35YNA26nhbLTJBHD0jTwWpPwmRVDzjylQT6gkar+zenfb8mHxWpRrbn+WytRRjE0WKsfaxBkVUA==} 629 | cpu: [arm64] 630 | os: [darwin] 631 | 632 | '@rollup/rollup-darwin-x64@4.44.2': 633 | resolution: {integrity: sha512-dv/t1t1RkCvJdWWxQ2lWOO+b7cMsVw5YFaS04oHpZRWehI1h0fV1gF4wgGCTyQHHjJDfbNpwOi6PXEafRBBezw==} 634 | cpu: [x64] 635 | os: [darwin] 636 | 637 | '@rollup/rollup-freebsd-arm64@4.44.2': 638 | resolution: {integrity: sha512-W4tt4BLorKND4qeHElxDoim0+BsprFTwb+vriVQnFFtT/P6v/xO5I99xvYnVzKWrK6j7Hb0yp3x7V5LUbaeOMg==} 639 | cpu: [arm64] 640 | os: [freebsd] 641 | 642 | '@rollup/rollup-freebsd-x64@4.44.2': 643 | resolution: {integrity: sha512-tdT1PHopokkuBVyHjvYehnIe20fxibxFCEhQP/96MDSOcyjM/shlTkZZLOufV3qO6/FQOSiJTBebhVc12JyPTA==} 644 | cpu: [x64] 645 | os: [freebsd] 646 | 647 | '@rollup/rollup-linux-arm-gnueabihf@4.44.2': 648 | resolution: {integrity: sha512-+xmiDGGaSfIIOXMzkhJ++Oa0Gwvl9oXUeIiwarsdRXSe27HUIvjbSIpPxvnNsRebsNdUo7uAiQVgBD1hVriwSQ==} 649 | cpu: [arm] 650 | os: [linux] 651 | 652 | '@rollup/rollup-linux-arm-musleabihf@4.44.2': 653 | resolution: {integrity: sha512-bDHvhzOfORk3wt8yxIra8N4k/N0MnKInCW5OGZaeDYa/hMrdPaJzo7CSkjKZqX4JFUWjUGm88lI6QJLCM7lDrA==} 654 | cpu: [arm] 655 | os: [linux] 656 | 657 | '@rollup/rollup-linux-arm64-gnu@4.44.2': 658 | resolution: {integrity: sha512-NMsDEsDiYghTbeZWEGnNi4F0hSbGnsuOG+VnNvxkKg0IGDvFh7UVpM/14mnMwxRxUf9AdAVJgHPvKXf6FpMB7A==} 659 | cpu: [arm64] 660 | os: [linux] 661 | 662 | '@rollup/rollup-linux-arm64-musl@4.44.2': 663 | resolution: {integrity: sha512-lb5bxXnxXglVq+7imxykIp5xMq+idehfl+wOgiiix0191av84OqbjUED+PRC5OA8eFJYj5xAGcpAZ0pF2MnW+A==} 664 | cpu: [arm64] 665 | os: [linux] 666 | 667 | '@rollup/rollup-linux-loongarch64-gnu@4.44.2': 668 | resolution: {integrity: sha512-Yl5Rdpf9pIc4GW1PmkUGHdMtbx0fBLE1//SxDmuf3X0dUC57+zMepow2LK0V21661cjXdTn8hO2tXDdAWAqE5g==} 669 | cpu: [loong64] 670 | os: [linux] 671 | 672 | '@rollup/rollup-linux-powerpc64le-gnu@4.44.2': 673 | resolution: {integrity: sha512-03vUDH+w55s680YYryyr78jsO1RWU9ocRMaeV2vMniJJW/6HhoTBwyyiiTPVHNWLnhsnwcQ0oH3S9JSBEKuyqw==} 674 | cpu: [ppc64] 675 | os: [linux] 676 | 677 | '@rollup/rollup-linux-riscv64-gnu@4.44.2': 678 | resolution: {integrity: sha512-iYtAqBg5eEMG4dEfVlkqo05xMOk6y/JXIToRca2bAWuqjrJYJlx/I7+Z+4hSrsWU8GdJDFPL4ktV3dy4yBSrzg==} 679 | cpu: [riscv64] 680 | os: [linux] 681 | 682 | '@rollup/rollup-linux-riscv64-musl@4.44.2': 683 | resolution: {integrity: sha512-e6vEbgaaqz2yEHqtkPXa28fFuBGmUJ0N2dOJK8YUfijejInt9gfCSA7YDdJ4nYlv67JfP3+PSWFX4IVw/xRIPg==} 684 | cpu: [riscv64] 685 | os: [linux] 686 | 687 | '@rollup/rollup-linux-s390x-gnu@4.44.2': 688 | resolution: {integrity: sha512-evFOtkmVdY3udE+0QKrV5wBx7bKI0iHz5yEVx5WqDJkxp9YQefy4Mpx3RajIVcM6o7jxTvVd/qpC1IXUhGc1Mw==} 689 | cpu: [s390x] 690 | os: [linux] 691 | 692 | '@rollup/rollup-linux-x64-gnu@4.44.2': 693 | resolution: {integrity: sha512-/bXb0bEsWMyEkIsUL2Yt5nFB5naLAwyOWMEviQfQY1x3l5WsLKgvZf66TM7UTfED6erckUVUJQ/jJ1FSpm3pRQ==} 694 | cpu: [x64] 695 | os: [linux] 696 | 697 | '@rollup/rollup-linux-x64-musl@4.44.2': 698 | resolution: {integrity: sha512-3D3OB1vSSBXmkGEZR27uiMRNiwN08/RVAcBKwhUYPaiZ8bcvdeEwWPvbnXvvXHY+A/7xluzcN+kaiOFNiOZwWg==} 699 | cpu: [x64] 700 | os: [linux] 701 | 702 | '@rollup/rollup-win32-arm64-msvc@4.44.2': 703 | resolution: {integrity: sha512-VfU0fsMK+rwdK8mwODqYeM2hDrF2WiHaSmCBrS7gColkQft95/8tphyzv2EupVxn3iE0FI78wzffoULH1G+dkw==} 704 | cpu: [arm64] 705 | os: [win32] 706 | 707 | '@rollup/rollup-win32-ia32-msvc@4.44.2': 708 | resolution: {integrity: sha512-+qMUrkbUurpE6DVRjiJCNGZBGo9xM4Y0FXU5cjgudWqIBWbcLkjE3XprJUsOFgC6xjBClwVa9k6O3A7K3vxb5Q==} 709 | cpu: [ia32] 710 | os: [win32] 711 | 712 | '@rollup/rollup-win32-x64-msvc@4.44.2': 713 | resolution: {integrity: sha512-3+QZROYfJ25PDcxFF66UEk8jGWigHJeecZILvkPkyQN7oc5BvFo4YEXFkOs154j3FTMp9mn9Ky8RCOwastduEA==} 714 | cpu: [x64] 715 | os: [win32] 716 | 717 | '@shahrad/eslint-config@1.0.1': 718 | resolution: {integrity: sha512-Gfjh8cdcptBjL14dWACJZ0tZy8KJdcVsOVWmyKa82v5PoLPZ4avMrT1hJyEWg0APhS1054M/udaBrlCAuHJ9XQ==} 719 | 720 | '@shahrad/prettier-config@1.2.2': 721 | resolution: {integrity: sha512-D6yRqGjD9mhdC5cWQkdoatybNmp6eZJZQ1IerFaANQL1pgtNyEasE2yFy3JdDxJRbHcL2GeaI/03tEPchU+Ddw==} 722 | peerDependencies: 723 | '@ianvs/prettier-plugin-sort-imports': ^4.4 724 | prettier: '>=3.0.0' 725 | prettier-plugin-packagejson: ^2.5 726 | prettier-plugin-sh: ^0.15 727 | 728 | '@shahrad/tsconfig@1.2.0': 729 | resolution: {integrity: sha512-5NM7tPrvUGF+VPqNgsjgWJ5aLJBcNiM/7aAsXw3PEZVek4Mfxq4vd7BLbjUsYd9HizgaNeCmfK5kIsxtCXp7/Q==} 730 | engines: {node: '>=18'} 731 | 732 | '@sinclair/typebox@0.27.8': 733 | resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} 734 | 735 | '@sinclair/typebox@0.34.37': 736 | resolution: {integrity: sha512-2TRuQVgQYfy+EzHRTIvkhv2ADEouJ2xNS/Vq+W5EuuewBdOrvATvljZTxHWZSTYr2sTjTHpGvucaGAt67S2akw==} 737 | 738 | '@sinonjs/commons@3.0.1': 739 | resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} 740 | 741 | '@sinonjs/fake-timers@10.3.0': 742 | resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} 743 | 744 | '@sinonjs/fake-timers@13.0.5': 745 | resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} 746 | 747 | '@tybys/wasm-util@0.10.0': 748 | resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} 749 | 750 | '@types/babel__core@7.20.5': 751 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 752 | 753 | '@types/babel__generator@7.27.0': 754 | resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} 755 | 756 | '@types/babel__template@7.4.4': 757 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 758 | 759 | '@types/babel__traverse@7.20.7': 760 | resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} 761 | 762 | '@types/estree@1.0.8': 763 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 764 | 765 | '@types/istanbul-lib-coverage@2.0.6': 766 | resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} 767 | 768 | '@types/istanbul-lib-report@3.0.3': 769 | resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} 770 | 771 | '@types/istanbul-reports@3.0.4': 772 | resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} 773 | 774 | '@types/jest@30.0.0': 775 | resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} 776 | 777 | '@types/json-schema@7.0.15': 778 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 779 | 780 | '@types/luxon@3.7.1': 781 | resolution: {integrity: sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==} 782 | 783 | '@types/node@24.3.0': 784 | resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==} 785 | 786 | '@types/stack-utils@2.0.3': 787 | resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} 788 | 789 | '@types/yargs-parser@21.0.3': 790 | resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} 791 | 792 | '@types/yargs@17.0.33': 793 | resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} 794 | 795 | '@typescript-eslint/eslint-plugin@8.41.0': 796 | resolution: {integrity: sha512-8fz6oa6wEKZrhXWro/S3n2eRJqlRcIa6SlDh59FXJ5Wp5XRZ8B9ixpJDcjadHq47hMx0u+HW6SNa6LjJQ6NLtw==} 797 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 798 | peerDependencies: 799 | '@typescript-eslint/parser': ^8.41.0 800 | eslint: ^8.57.0 || ^9.0.0 801 | typescript: '>=4.8.4 <6.0.0' 802 | 803 | '@typescript-eslint/parser@8.41.0': 804 | resolution: {integrity: sha512-gTtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJg==} 805 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 806 | peerDependencies: 807 | eslint: ^8.57.0 || ^9.0.0 808 | typescript: '>=4.8.4 <6.0.0' 809 | 810 | '@typescript-eslint/project-service@8.41.0': 811 | resolution: {integrity: sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ==} 812 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 813 | peerDependencies: 814 | typescript: '>=4.8.4 <6.0.0' 815 | 816 | '@typescript-eslint/scope-manager@8.41.0': 817 | resolution: {integrity: sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ==} 818 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 819 | 820 | '@typescript-eslint/tsconfig-utils@8.41.0': 821 | resolution: {integrity: sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw==} 822 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 823 | peerDependencies: 824 | typescript: '>=4.8.4 <6.0.0' 825 | 826 | '@typescript-eslint/type-utils@8.41.0': 827 | resolution: {integrity: sha512-63qt1h91vg3KsjVVonFJWjgSK7pZHSQFKH6uwqxAH9bBrsyRhO6ONoKyXxyVBzG1lJnFAJcKAcxLS54N1ee1OQ==} 828 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 829 | peerDependencies: 830 | eslint: ^8.57.0 || ^9.0.0 831 | typescript: '>=4.8.4 <6.0.0' 832 | 833 | '@typescript-eslint/types@8.41.0': 834 | resolution: {integrity: sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag==} 835 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 836 | 837 | '@typescript-eslint/typescript-estree@8.41.0': 838 | resolution: {integrity: sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ==} 839 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 840 | peerDependencies: 841 | typescript: '>=4.8.4 <6.0.0' 842 | 843 | '@typescript-eslint/utils@8.41.0': 844 | resolution: {integrity: sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A==} 845 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 846 | peerDependencies: 847 | eslint: ^8.57.0 || ^9.0.0 848 | typescript: '>=4.8.4 <6.0.0' 849 | 850 | '@typescript-eslint/visitor-keys@8.41.0': 851 | resolution: {integrity: sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==} 852 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 853 | 854 | '@ungap/structured-clone@1.3.0': 855 | resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} 856 | 857 | '@unrs/resolver-binding-android-arm-eabi@1.11.1': 858 | resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} 859 | cpu: [arm] 860 | os: [android] 861 | 862 | '@unrs/resolver-binding-android-arm64@1.11.1': 863 | resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} 864 | cpu: [arm64] 865 | os: [android] 866 | 867 | '@unrs/resolver-binding-darwin-arm64@1.11.1': 868 | resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} 869 | cpu: [arm64] 870 | os: [darwin] 871 | 872 | '@unrs/resolver-binding-darwin-x64@1.11.1': 873 | resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} 874 | cpu: [x64] 875 | os: [darwin] 876 | 877 | '@unrs/resolver-binding-freebsd-x64@1.11.1': 878 | resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} 879 | cpu: [x64] 880 | os: [freebsd] 881 | 882 | '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': 883 | resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} 884 | cpu: [arm] 885 | os: [linux] 886 | 887 | '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': 888 | resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} 889 | cpu: [arm] 890 | os: [linux] 891 | 892 | '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': 893 | resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} 894 | cpu: [arm64] 895 | os: [linux] 896 | 897 | '@unrs/resolver-binding-linux-arm64-musl@1.11.1': 898 | resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} 899 | cpu: [arm64] 900 | os: [linux] 901 | 902 | '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': 903 | resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} 904 | cpu: [ppc64] 905 | os: [linux] 906 | 907 | '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': 908 | resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} 909 | cpu: [riscv64] 910 | os: [linux] 911 | 912 | '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': 913 | resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} 914 | cpu: [riscv64] 915 | os: [linux] 916 | 917 | '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': 918 | resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} 919 | cpu: [s390x] 920 | os: [linux] 921 | 922 | '@unrs/resolver-binding-linux-x64-gnu@1.11.1': 923 | resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} 924 | cpu: [x64] 925 | os: [linux] 926 | 927 | '@unrs/resolver-binding-linux-x64-musl@1.11.1': 928 | resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} 929 | cpu: [x64] 930 | os: [linux] 931 | 932 | '@unrs/resolver-binding-wasm32-wasi@1.11.1': 933 | resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} 934 | engines: {node: '>=14.0.0'} 935 | cpu: [wasm32] 936 | 937 | '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': 938 | resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} 939 | cpu: [arm64] 940 | os: [win32] 941 | 942 | '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': 943 | resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} 944 | cpu: [ia32] 945 | os: [win32] 946 | 947 | '@unrs/resolver-binding-win32-x64-msvc@1.11.1': 948 | resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} 949 | cpu: [x64] 950 | os: [win32] 951 | 952 | acorn-jsx@5.3.2: 953 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 954 | peerDependencies: 955 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 956 | 957 | acorn@8.15.0: 958 | resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 959 | engines: {node: '>=0.4.0'} 960 | hasBin: true 961 | 962 | ajv@6.12.6: 963 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 964 | 965 | ansi-escapes@4.3.2: 966 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 967 | engines: {node: '>=8'} 968 | 969 | ansi-regex@5.0.1: 970 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 971 | engines: {node: '>=8'} 972 | 973 | ansi-regex@6.1.0: 974 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 975 | engines: {node: '>=12'} 976 | 977 | ansi-styles@4.3.0: 978 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 979 | engines: {node: '>=8'} 980 | 981 | ansi-styles@5.2.0: 982 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 983 | engines: {node: '>=10'} 984 | 985 | ansi-styles@6.2.1: 986 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 987 | engines: {node: '>=12'} 988 | 989 | any-promise@1.3.0: 990 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 991 | 992 | anymatch@3.1.3: 993 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 994 | engines: {node: '>= 8'} 995 | 996 | argparse@1.0.10: 997 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 998 | 999 | argparse@2.0.1: 1000 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 1001 | 1002 | async@3.2.6: 1003 | resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} 1004 | 1005 | babel-jest@30.0.4: 1006 | resolution: {integrity: sha512-UjG2j7sAOqsp2Xua1mS/e+ekddkSu3wpf4nZUSvXNHuVWdaOUXQ77+uyjJLDE9i0atm5x4kds8K9yb5lRsRtcA==} 1007 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1008 | peerDependencies: 1009 | '@babel/core': ^7.11.0 1010 | 1011 | babel-plugin-istanbul@7.0.0: 1012 | resolution: {integrity: sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw==} 1013 | engines: {node: '>=12'} 1014 | 1015 | babel-plugin-jest-hoist@30.0.1: 1016 | resolution: {integrity: sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ==} 1017 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1018 | 1019 | babel-preset-current-node-syntax@1.1.0: 1020 | resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} 1021 | peerDependencies: 1022 | '@babel/core': ^7.0.0 1023 | 1024 | babel-preset-jest@30.0.1: 1025 | resolution: {integrity: sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw==} 1026 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1027 | peerDependencies: 1028 | '@babel/core': ^7.11.0 1029 | 1030 | balanced-match@1.0.2: 1031 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1032 | 1033 | brace-expansion@1.1.12: 1034 | resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} 1035 | 1036 | brace-expansion@2.0.2: 1037 | resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 1038 | 1039 | braces@3.0.3: 1040 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 1041 | engines: {node: '>=8'} 1042 | 1043 | browserslist@4.25.1: 1044 | resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} 1045 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1046 | hasBin: true 1047 | 1048 | bs-logger@0.2.6: 1049 | resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} 1050 | engines: {node: '>= 6'} 1051 | 1052 | bser@2.1.1: 1053 | resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} 1054 | 1055 | buffer-from@1.1.2: 1056 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 1057 | 1058 | bundle-require@5.1.0: 1059 | resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} 1060 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1061 | peerDependencies: 1062 | esbuild: '>=0.18' 1063 | 1064 | cac@6.7.14: 1065 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 1066 | engines: {node: '>=8'} 1067 | 1068 | callsites@3.1.0: 1069 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1070 | engines: {node: '>=6'} 1071 | 1072 | camelcase@5.3.1: 1073 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 1074 | engines: {node: '>=6'} 1075 | 1076 | camelcase@6.3.0: 1077 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 1078 | engines: {node: '>=10'} 1079 | 1080 | caniuse-lite@1.0.30001726: 1081 | resolution: {integrity: sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==} 1082 | 1083 | chalk@4.1.2: 1084 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1085 | engines: {node: '>=10'} 1086 | 1087 | char-regex@1.0.2: 1088 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} 1089 | engines: {node: '>=10'} 1090 | 1091 | chokidar@4.0.3: 1092 | resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 1093 | engines: {node: '>= 14.16.0'} 1094 | 1095 | ci-info@3.9.0: 1096 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} 1097 | engines: {node: '>=8'} 1098 | 1099 | ci-info@4.2.0: 1100 | resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} 1101 | engines: {node: '>=8'} 1102 | 1103 | cjs-module-lexer@2.1.0: 1104 | resolution: {integrity: sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==} 1105 | 1106 | cliui@8.0.1: 1107 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 1108 | engines: {node: '>=12'} 1109 | 1110 | co@4.6.0: 1111 | resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} 1112 | engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} 1113 | 1114 | collect-v8-coverage@1.0.2: 1115 | resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} 1116 | 1117 | color-convert@2.0.1: 1118 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1119 | engines: {node: '>=7.0.0'} 1120 | 1121 | color-name@1.1.4: 1122 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1123 | 1124 | commander@4.1.1: 1125 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 1126 | engines: {node: '>= 6'} 1127 | 1128 | concat-map@0.0.1: 1129 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1130 | 1131 | confbox@0.1.8: 1132 | resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} 1133 | 1134 | consola@3.4.2: 1135 | resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} 1136 | engines: {node: ^14.18.0 || >=16.10.0} 1137 | 1138 | convert-source-map@2.0.0: 1139 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 1140 | 1141 | cross-spawn@7.0.6: 1142 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 1143 | engines: {node: '>= 8'} 1144 | 1145 | debug@4.4.1: 1146 | resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} 1147 | engines: {node: '>=6.0'} 1148 | peerDependencies: 1149 | supports-color: '*' 1150 | peerDependenciesMeta: 1151 | supports-color: 1152 | optional: true 1153 | 1154 | dedent@1.6.0: 1155 | resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} 1156 | peerDependencies: 1157 | babel-plugin-macros: ^3.1.0 1158 | peerDependenciesMeta: 1159 | babel-plugin-macros: 1160 | optional: true 1161 | 1162 | deep-is@0.1.4: 1163 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1164 | 1165 | deepmerge@4.3.1: 1166 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 1167 | engines: {node: '>=0.10.0'} 1168 | 1169 | detect-indent@7.0.1: 1170 | resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} 1171 | engines: {node: '>=12.20'} 1172 | 1173 | detect-newline@3.1.0: 1174 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} 1175 | engines: {node: '>=8'} 1176 | 1177 | detect-newline@4.0.1: 1178 | resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} 1179 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1180 | 1181 | eastasianwidth@0.2.0: 1182 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 1183 | 1184 | ejs@3.1.10: 1185 | resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} 1186 | engines: {node: '>=0.10.0'} 1187 | hasBin: true 1188 | 1189 | electron-to-chromium@1.5.179: 1190 | resolution: {integrity: sha512-UWKi/EbBopgfFsc5k61wFpV7WrnnSlSzW/e2XcBmS6qKYTivZlLtoll5/rdqRTxGglGHkmkW0j0pFNJG10EUIQ==} 1191 | 1192 | emittery@0.13.1: 1193 | resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} 1194 | engines: {node: '>=12'} 1195 | 1196 | emoji-regex@8.0.0: 1197 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1198 | 1199 | emoji-regex@9.2.2: 1200 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1201 | 1202 | error-ex@1.3.2: 1203 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 1204 | 1205 | esbuild@0.25.9: 1206 | resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} 1207 | engines: {node: '>=18'} 1208 | hasBin: true 1209 | 1210 | escalade@3.2.0: 1211 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 1212 | engines: {node: '>=6'} 1213 | 1214 | escape-string-regexp@2.0.0: 1215 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} 1216 | engines: {node: '>=8'} 1217 | 1218 | escape-string-regexp@4.0.0: 1219 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1220 | engines: {node: '>=10'} 1221 | 1222 | eslint-scope@8.4.0: 1223 | resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} 1224 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1225 | 1226 | eslint-visitor-keys@3.4.3: 1227 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1228 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1229 | 1230 | eslint-visitor-keys@4.2.1: 1231 | resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 1232 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1233 | 1234 | eslint@9.34.0: 1235 | resolution: {integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==} 1236 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1237 | hasBin: true 1238 | peerDependencies: 1239 | jiti: '*' 1240 | peerDependenciesMeta: 1241 | jiti: 1242 | optional: true 1243 | 1244 | espree@10.4.0: 1245 | resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} 1246 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1247 | 1248 | esprima@4.0.1: 1249 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1250 | engines: {node: '>=4'} 1251 | hasBin: true 1252 | 1253 | esquery@1.6.0: 1254 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1255 | engines: {node: '>=0.10'} 1256 | 1257 | esrecurse@4.3.0: 1258 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1259 | engines: {node: '>=4.0'} 1260 | 1261 | estraverse@5.3.0: 1262 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1263 | engines: {node: '>=4.0'} 1264 | 1265 | esutils@2.0.3: 1266 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1267 | engines: {node: '>=0.10.0'} 1268 | 1269 | execa@5.1.1: 1270 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1271 | engines: {node: '>=10'} 1272 | 1273 | exit-x@0.2.2: 1274 | resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==} 1275 | engines: {node: '>= 0.8.0'} 1276 | 1277 | expect@30.0.4: 1278 | resolution: {integrity: sha512-dDLGjnP2cKbEppxVICxI/Uf4YemmGMPNy0QytCbfafbpYk9AFQsxb8Uyrxii0RPK7FWgLGlSem+07WirwS3cFQ==} 1279 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1280 | 1281 | fast-deep-equal@3.1.3: 1282 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1283 | 1284 | fast-glob@3.3.3: 1285 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 1286 | engines: {node: '>=8.6.0'} 1287 | 1288 | fast-json-stable-stringify@2.1.0: 1289 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1290 | 1291 | fast-levenshtein@2.0.6: 1292 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1293 | 1294 | fastq@1.19.1: 1295 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 1296 | 1297 | fb-watchman@2.0.2: 1298 | resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} 1299 | 1300 | fdir@6.4.6: 1301 | resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} 1302 | peerDependencies: 1303 | picomatch: ^3 || ^4 1304 | peerDependenciesMeta: 1305 | picomatch: 1306 | optional: true 1307 | 1308 | file-entry-cache@8.0.0: 1309 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1310 | engines: {node: '>=16.0.0'} 1311 | 1312 | filelist@1.0.4: 1313 | resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} 1314 | 1315 | fill-range@7.1.1: 1316 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1317 | engines: {node: '>=8'} 1318 | 1319 | find-up@4.1.0: 1320 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1321 | engines: {node: '>=8'} 1322 | 1323 | find-up@5.0.0: 1324 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1325 | engines: {node: '>=10'} 1326 | 1327 | fix-dts-default-cjs-exports@1.0.1: 1328 | resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} 1329 | 1330 | flat-cache@4.0.1: 1331 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1332 | engines: {node: '>=16'} 1333 | 1334 | flatted@3.3.3: 1335 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 1336 | 1337 | foreground-child@3.3.1: 1338 | resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} 1339 | engines: {node: '>=14'} 1340 | 1341 | fs.realpath@1.0.0: 1342 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1343 | 1344 | fsevents@2.3.3: 1345 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1346 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1347 | os: [darwin] 1348 | 1349 | gensync@1.0.0-beta.2: 1350 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1351 | engines: {node: '>=6.9.0'} 1352 | 1353 | get-caller-file@2.0.5: 1354 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1355 | engines: {node: 6.* || 8.* || >= 10.*} 1356 | 1357 | get-package-type@0.1.0: 1358 | resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} 1359 | engines: {node: '>=8.0.0'} 1360 | 1361 | get-stdin@9.0.0: 1362 | resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} 1363 | engines: {node: '>=12'} 1364 | 1365 | get-stream@6.0.1: 1366 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1367 | engines: {node: '>=10'} 1368 | 1369 | git-hooks-list@3.2.0: 1370 | resolution: {integrity: sha512-ZHG9a1gEhUMX1TvGrLdyWb9kDopCBbTnI8z4JgRMYxsijWipgjSEYoPWqBuIB0DnRnvqlQSEeVmzpeuPm7NdFQ==} 1371 | 1372 | glob-parent@5.1.2: 1373 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1374 | engines: {node: '>= 6'} 1375 | 1376 | glob-parent@6.0.2: 1377 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1378 | engines: {node: '>=10.13.0'} 1379 | 1380 | glob@10.4.5: 1381 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 1382 | hasBin: true 1383 | 1384 | glob@7.2.3: 1385 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1386 | deprecated: Glob versions prior to v9 are no longer supported 1387 | 1388 | globals@14.0.0: 1389 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1390 | engines: {node: '>=18'} 1391 | 1392 | graceful-fs@4.2.11: 1393 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1394 | 1395 | graphemer@1.4.0: 1396 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1397 | 1398 | has-flag@4.0.0: 1399 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1400 | engines: {node: '>=8'} 1401 | 1402 | html-escaper@2.0.2: 1403 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 1404 | 1405 | human-signals@2.1.0: 1406 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1407 | engines: {node: '>=10.17.0'} 1408 | 1409 | ignore@5.3.2: 1410 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1411 | engines: {node: '>= 4'} 1412 | 1413 | ignore@7.0.5: 1414 | resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} 1415 | engines: {node: '>= 4'} 1416 | 1417 | import-fresh@3.3.1: 1418 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 1419 | engines: {node: '>=6'} 1420 | 1421 | import-local@3.2.0: 1422 | resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} 1423 | engines: {node: '>=8'} 1424 | hasBin: true 1425 | 1426 | imurmurhash@0.1.4: 1427 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1428 | engines: {node: '>=0.8.19'} 1429 | 1430 | inflight@1.0.6: 1431 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1432 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. 1433 | 1434 | inherits@2.0.4: 1435 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1436 | 1437 | is-arrayish@0.2.1: 1438 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1439 | 1440 | is-extglob@2.1.1: 1441 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1442 | engines: {node: '>=0.10.0'} 1443 | 1444 | is-fullwidth-code-point@3.0.0: 1445 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1446 | engines: {node: '>=8'} 1447 | 1448 | is-generator-fn@2.1.0: 1449 | resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} 1450 | engines: {node: '>=6'} 1451 | 1452 | is-glob@4.0.3: 1453 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1454 | engines: {node: '>=0.10.0'} 1455 | 1456 | is-number@7.0.0: 1457 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1458 | engines: {node: '>=0.12.0'} 1459 | 1460 | is-plain-obj@4.1.0: 1461 | resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 1462 | engines: {node: '>=12'} 1463 | 1464 | is-stream@2.0.1: 1465 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1466 | engines: {node: '>=8'} 1467 | 1468 | isexe@2.0.0: 1469 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1470 | 1471 | istanbul-lib-coverage@3.2.2: 1472 | resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} 1473 | engines: {node: '>=8'} 1474 | 1475 | istanbul-lib-instrument@6.0.3: 1476 | resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} 1477 | engines: {node: '>=10'} 1478 | 1479 | istanbul-lib-report@3.0.1: 1480 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} 1481 | engines: {node: '>=10'} 1482 | 1483 | istanbul-lib-source-maps@5.0.6: 1484 | resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} 1485 | engines: {node: '>=10'} 1486 | 1487 | istanbul-reports@3.1.7: 1488 | resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} 1489 | engines: {node: '>=8'} 1490 | 1491 | jackspeak@3.4.3: 1492 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 1493 | 1494 | jake@10.9.2: 1495 | resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} 1496 | engines: {node: '>=10'} 1497 | hasBin: true 1498 | 1499 | jest-changed-files@30.0.2: 1500 | resolution: {integrity: sha512-Ius/iRST9FKfJI+I+kpiDh8JuUlAISnRszF9ixZDIqJF17FckH5sOzKC8a0wd0+D+8em5ADRHA5V5MnfeDk2WA==} 1501 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1502 | 1503 | jest-circus@30.0.4: 1504 | resolution: {integrity: sha512-o6UNVfbXbmzjYgmVPtSQrr5xFZCtkDZGdTlptYvGFSN80RuOOlTe73djvMrs+QAuSERZWcHBNIOMH+OEqvjWuw==} 1505 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1506 | 1507 | jest-cli@30.0.4: 1508 | resolution: {integrity: sha512-3dOrP3zqCWBkjoVG1zjYJpD9143N9GUCbwaF2pFF5brnIgRLHmKcCIw+83BvF1LxggfMWBA0gxkn6RuQVuRhIQ==} 1509 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1510 | hasBin: true 1511 | peerDependencies: 1512 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 1513 | peerDependenciesMeta: 1514 | node-notifier: 1515 | optional: true 1516 | 1517 | jest-config@30.0.4: 1518 | resolution: {integrity: sha512-3dzbO6sh34thAGEjJIW0fgT0GA0EVlkski6ZzMcbW6dzhenylXAE/Mj2MI4HonroWbkKc6wU6bLVQ8dvBSZ9lA==} 1519 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1520 | peerDependencies: 1521 | '@types/node': '*' 1522 | esbuild-register: '>=3.4.0' 1523 | ts-node: '>=9.0.0' 1524 | peerDependenciesMeta: 1525 | '@types/node': 1526 | optional: true 1527 | esbuild-register: 1528 | optional: true 1529 | ts-node: 1530 | optional: true 1531 | 1532 | jest-diff@30.0.4: 1533 | resolution: {integrity: sha512-TSjceIf6797jyd+R64NXqicttROD+Qf98fex7CowmlSn7f8+En0da1Dglwr1AXxDtVizoxXYZBlUQwNhoOXkNw==} 1534 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1535 | 1536 | jest-docblock@30.0.1: 1537 | resolution: {integrity: sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA==} 1538 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1539 | 1540 | jest-each@30.0.2: 1541 | resolution: {integrity: sha512-ZFRsTpe5FUWFQ9cWTMguCaiA6kkW5whccPy9JjD1ezxh+mJeqmz8naL8Fl/oSbNJv3rgB0x87WBIkA5CObIUZQ==} 1542 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1543 | 1544 | jest-environment-node@30.0.4: 1545 | resolution: {integrity: sha512-p+rLEzC2eThXqiNh9GHHTC0OW5Ca4ZfcURp7scPjYBcmgpR9HG6750716GuUipYf2AcThU3k20B31USuiaaIEg==} 1546 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1547 | 1548 | jest-haste-map@30.0.2: 1549 | resolution: {integrity: sha512-telJBKpNLeCb4MaX+I5k496556Y2FiKR/QLZc0+MGBYl4k3OO0472drlV2LUe7c1Glng5HuAu+5GLYp//GpdOQ==} 1550 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1551 | 1552 | jest-leak-detector@30.0.2: 1553 | resolution: {integrity: sha512-U66sRrAYdALq+2qtKffBLDWsQ/XoNNs2Lcr83sc9lvE/hEpNafJlq2lXCPUBMNqamMECNxSIekLfe69qg4KMIQ==} 1554 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1555 | 1556 | jest-matcher-utils@30.0.4: 1557 | resolution: {integrity: sha512-ubCewJ54YzeAZ2JeHHGVoU+eDIpQFsfPQs0xURPWoNiO42LGJ+QGgfSf+hFIRplkZDkhH5MOvuxHKXRTUU3dUQ==} 1558 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1559 | 1560 | jest-message-util@29.7.0: 1561 | resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} 1562 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1563 | 1564 | jest-message-util@30.0.2: 1565 | resolution: {integrity: sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw==} 1566 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1567 | 1568 | jest-mock@29.5.0: 1569 | resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} 1570 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1571 | 1572 | jest-mock@30.0.2: 1573 | resolution: {integrity: sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA==} 1574 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1575 | 1576 | jest-pnp-resolver@1.2.3: 1577 | resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} 1578 | engines: {node: '>=6'} 1579 | peerDependencies: 1580 | jest-resolve: '*' 1581 | peerDependenciesMeta: 1582 | jest-resolve: 1583 | optional: true 1584 | 1585 | jest-regex-util@30.0.1: 1586 | resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==} 1587 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1588 | 1589 | jest-resolve-dependencies@30.0.4: 1590 | resolution: {integrity: sha512-EQBYow19B/hKr4gUTn+l8Z+YLlP2X0IoPyp0UydOtrcPbIOYzJ8LKdFd+yrbwztPQvmlBFUwGPPEzHH1bAvFAw==} 1591 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1592 | 1593 | jest-resolve@30.0.2: 1594 | resolution: {integrity: sha512-q/XT0XQvRemykZsvRopbG6FQUT6/ra+XV6rPijyjT6D0msOyCvR2A5PlWZLd+fH0U8XWKZfDiAgrUNDNX2BkCw==} 1595 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1596 | 1597 | jest-runner@30.0.4: 1598 | resolution: {integrity: sha512-mxY0vTAEsowJwvFJo5pVivbCpuu6dgdXRmt3v3MXjBxFly7/lTk3Td0PaMyGOeNQUFmSuGEsGYqhbn7PA9OekQ==} 1599 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1600 | 1601 | jest-runtime@30.0.4: 1602 | resolution: {integrity: sha512-tUQrZ8+IzoZYIHoPDQEB4jZoPyzBjLjq7sk0KVyd5UPRjRDOsN7o6UlvaGF8ddpGsjznl9PW+KRgWqCNO+Hn7w==} 1603 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1604 | 1605 | jest-snapshot@30.0.4: 1606 | resolution: {integrity: sha512-S/8hmSkeUib8WRUq9pWEb5zMfsOjiYWDWzFzKnjX7eDyKKgimsu9hcmsUEg8a7dPAw8s/FacxsXquq71pDgPjQ==} 1607 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1608 | 1609 | jest-util@29.5.0: 1610 | resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} 1611 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1612 | 1613 | jest-util@30.0.2: 1614 | resolution: {integrity: sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg==} 1615 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1616 | 1617 | jest-validate@30.0.2: 1618 | resolution: {integrity: sha512-noOvul+SFER4RIvNAwGn6nmV2fXqBq67j+hKGHKGFCmK4ks/Iy1FSrqQNBLGKlu4ZZIRL6Kg1U72N1nxuRCrGQ==} 1619 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1620 | 1621 | jest-watcher@30.0.4: 1622 | resolution: {integrity: sha512-YESbdHDs7aQOCSSKffG8jXqOKFqw4q4YqR+wHYpR5GWEQioGvL0BfbcjvKIvPEM0XGfsfJrka7jJz3Cc3gI4VQ==} 1623 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1624 | 1625 | jest-worker@30.0.2: 1626 | resolution: {integrity: sha512-RN1eQmx7qSLFA+o9pfJKlqViwL5wt+OL3Vff/A+/cPsmuw7NPwfgl33AP+/agRmHzPOFgXviRycR9kYwlcRQXg==} 1627 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1628 | 1629 | jest@30.0.4: 1630 | resolution: {integrity: sha512-9QE0RS4WwTj/TtTC4h/eFVmFAhGNVerSB9XpJh8sqaXlP73ILcPcZ7JWjjEtJJe2m8QyBLKKfPQuK+3F+Xij/g==} 1631 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1632 | hasBin: true 1633 | peerDependencies: 1634 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 1635 | peerDependenciesMeta: 1636 | node-notifier: 1637 | optional: true 1638 | 1639 | joycon@3.1.1: 1640 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 1641 | engines: {node: '>=10'} 1642 | 1643 | js-tokens@4.0.0: 1644 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1645 | 1646 | js-yaml@3.14.1: 1647 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1648 | hasBin: true 1649 | 1650 | js-yaml@4.1.0: 1651 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1652 | hasBin: true 1653 | 1654 | jsesc@3.1.0: 1655 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1656 | engines: {node: '>=6'} 1657 | hasBin: true 1658 | 1659 | json-buffer@3.0.1: 1660 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1661 | 1662 | json-parse-even-better-errors@2.3.1: 1663 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1664 | 1665 | json-schema-traverse@0.4.1: 1666 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1667 | 1668 | json-stable-stringify-without-jsonify@1.0.1: 1669 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1670 | 1671 | json5@2.2.3: 1672 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1673 | engines: {node: '>=6'} 1674 | hasBin: true 1675 | 1676 | keyv@4.5.4: 1677 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1678 | 1679 | leven@3.1.0: 1680 | resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} 1681 | engines: {node: '>=6'} 1682 | 1683 | levn@0.4.1: 1684 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1685 | engines: {node: '>= 0.8.0'} 1686 | 1687 | lilconfig@3.1.3: 1688 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 1689 | engines: {node: '>=14'} 1690 | 1691 | lines-and-columns@1.2.4: 1692 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1693 | 1694 | load-tsconfig@0.2.5: 1695 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 1696 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1697 | 1698 | locate-path@5.0.0: 1699 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1700 | engines: {node: '>=8'} 1701 | 1702 | locate-path@6.0.0: 1703 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1704 | engines: {node: '>=10'} 1705 | 1706 | lodash.memoize@4.1.2: 1707 | resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} 1708 | 1709 | lodash.merge@4.6.2: 1710 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1711 | 1712 | lodash.sortby@4.7.0: 1713 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 1714 | 1715 | lru-cache@10.4.3: 1716 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1717 | 1718 | lru-cache@5.1.1: 1719 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1720 | 1721 | luxon@3.7.1: 1722 | resolution: {integrity: sha512-RkRWjA926cTvz5rAb1BqyWkKbbjzCGchDUIKMCUvNi17j6f6j8uHGDV82Aqcqtzd+icoYpELmG3ksgGiFNNcNg==} 1723 | engines: {node: '>=12'} 1724 | 1725 | magic-string@0.30.17: 1726 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1727 | 1728 | make-dir@4.0.0: 1729 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} 1730 | engines: {node: '>=10'} 1731 | 1732 | make-error@1.3.6: 1733 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 1734 | 1735 | makeerror@1.0.12: 1736 | resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} 1737 | 1738 | merge-stream@2.0.0: 1739 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1740 | 1741 | merge2@1.4.1: 1742 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1743 | engines: {node: '>= 8'} 1744 | 1745 | micromatch@4.0.8: 1746 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1747 | engines: {node: '>=8.6'} 1748 | 1749 | mimic-fn@2.1.0: 1750 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1751 | engines: {node: '>=6'} 1752 | 1753 | minimatch@3.1.2: 1754 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1755 | 1756 | minimatch@5.1.6: 1757 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 1758 | engines: {node: '>=10'} 1759 | 1760 | minimatch@9.0.5: 1761 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1762 | engines: {node: '>=16 || 14 >=14.17'} 1763 | 1764 | minipass@7.1.2: 1765 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1766 | engines: {node: '>=16 || 14 >=14.17'} 1767 | 1768 | mlly@1.7.4: 1769 | resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} 1770 | 1771 | ms@2.1.3: 1772 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1773 | 1774 | mvdan-sh@0.10.1: 1775 | resolution: {integrity: sha512-kMbrH0EObaKmK3nVRKUIIya1dpASHIEusM13S4V1ViHFuxuNxCo+arxoa6j/dbV22YBGjl7UKJm9QQKJ2Crzhg==} 1776 | deprecated: See https://github.com/mvdan/sh/issues/1145 1777 | 1778 | mz@2.7.0: 1779 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1780 | 1781 | napi-postinstall@0.3.3: 1782 | resolution: {integrity: sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==} 1783 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 1784 | hasBin: true 1785 | 1786 | natural-compare@1.4.0: 1787 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1788 | 1789 | node-int64@0.4.0: 1790 | resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} 1791 | 1792 | node-releases@2.0.19: 1793 | resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1794 | 1795 | normalize-path@3.0.0: 1796 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1797 | engines: {node: '>=0.10.0'} 1798 | 1799 | npm-run-path@4.0.1: 1800 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1801 | engines: {node: '>=8'} 1802 | 1803 | object-assign@4.1.1: 1804 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1805 | engines: {node: '>=0.10.0'} 1806 | 1807 | once@1.4.0: 1808 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1809 | 1810 | onetime@5.1.2: 1811 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1812 | engines: {node: '>=6'} 1813 | 1814 | optionator@0.9.4: 1815 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1816 | engines: {node: '>= 0.8.0'} 1817 | 1818 | p-limit@2.3.0: 1819 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1820 | engines: {node: '>=6'} 1821 | 1822 | p-limit@3.1.0: 1823 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1824 | engines: {node: '>=10'} 1825 | 1826 | p-locate@4.1.0: 1827 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1828 | engines: {node: '>=8'} 1829 | 1830 | p-locate@5.0.0: 1831 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1832 | engines: {node: '>=10'} 1833 | 1834 | p-try@2.2.0: 1835 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1836 | engines: {node: '>=6'} 1837 | 1838 | package-json-from-dist@1.0.1: 1839 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1840 | 1841 | parent-module@1.0.1: 1842 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1843 | engines: {node: '>=6'} 1844 | 1845 | parse-json@5.2.0: 1846 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1847 | engines: {node: '>=8'} 1848 | 1849 | path-exists@4.0.0: 1850 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1851 | engines: {node: '>=8'} 1852 | 1853 | path-is-absolute@1.0.1: 1854 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1855 | engines: {node: '>=0.10.0'} 1856 | 1857 | path-key@3.1.1: 1858 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1859 | engines: {node: '>=8'} 1860 | 1861 | path-scurry@1.11.1: 1862 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1863 | engines: {node: '>=16 || 14 >=14.18'} 1864 | 1865 | pathe@2.0.3: 1866 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1867 | 1868 | picocolors@1.1.1: 1869 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1870 | 1871 | picomatch@2.3.1: 1872 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1873 | engines: {node: '>=8.6'} 1874 | 1875 | picomatch@4.0.2: 1876 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1877 | engines: {node: '>=12'} 1878 | 1879 | pirates@4.0.7: 1880 | resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} 1881 | engines: {node: '>= 6'} 1882 | 1883 | pkg-dir@4.2.0: 1884 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 1885 | engines: {node: '>=8'} 1886 | 1887 | pkg-types@1.3.1: 1888 | resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} 1889 | 1890 | postcss-load-config@6.0.1: 1891 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} 1892 | engines: {node: '>= 18'} 1893 | peerDependencies: 1894 | jiti: '>=1.21.0' 1895 | postcss: '>=8.0.9' 1896 | tsx: ^4.8.1 1897 | yaml: ^2.4.2 1898 | peerDependenciesMeta: 1899 | jiti: 1900 | optional: true 1901 | postcss: 1902 | optional: true 1903 | tsx: 1904 | optional: true 1905 | yaml: 1906 | optional: true 1907 | 1908 | prelude-ls@1.2.1: 1909 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1910 | engines: {node: '>= 0.8.0'} 1911 | 1912 | prettier-plugin-packagejson@2.5.6: 1913 | resolution: {integrity: sha512-TY7KiLtyt6Tlf53BEbXUWkN0+TRdHKgIMmtXtDCyHH6yWnZ50Lwq6Vb6lyjapZrhDTXooC4EtlY5iLe1sCgi5w==} 1914 | peerDependencies: 1915 | prettier: '>= 1.16.0' 1916 | peerDependenciesMeta: 1917 | prettier: 1918 | optional: true 1919 | 1920 | prettier-plugin-sh@0.14.0: 1921 | resolution: {integrity: sha512-hfXulj5+zEl/ulrO5kMuuTPKmXvOg0bnLHY1hKFNN/N+/903iZbNp8NyZBTsgI8dtkSgFfAEIQq0IQTyP1ZVFQ==} 1922 | engines: {node: '>=16.0.0'} 1923 | peerDependencies: 1924 | prettier: ^3.0.3 1925 | 1926 | prettier@3.6.2: 1927 | resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} 1928 | engines: {node: '>=14'} 1929 | hasBin: true 1930 | 1931 | pretty-format@29.7.0: 1932 | resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} 1933 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1934 | 1935 | pretty-format@30.0.2: 1936 | resolution: {integrity: sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg==} 1937 | engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 1938 | 1939 | punycode@2.3.1: 1940 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1941 | engines: {node: '>=6'} 1942 | 1943 | pure-rand@7.0.1: 1944 | resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} 1945 | 1946 | queue-microtask@1.2.3: 1947 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1948 | 1949 | react-is@18.3.1: 1950 | resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} 1951 | 1952 | readdirp@4.1.2: 1953 | resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 1954 | engines: {node: '>= 14.18.0'} 1955 | 1956 | require-directory@2.1.1: 1957 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 1958 | engines: {node: '>=0.10.0'} 1959 | 1960 | resolve-cwd@3.0.0: 1961 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 1962 | engines: {node: '>=8'} 1963 | 1964 | resolve-from@4.0.0: 1965 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1966 | engines: {node: '>=4'} 1967 | 1968 | resolve-from@5.0.0: 1969 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1970 | engines: {node: '>=8'} 1971 | 1972 | reusify@1.1.0: 1973 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1974 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1975 | 1976 | rollup@4.44.2: 1977 | resolution: {integrity: sha512-PVoapzTwSEcelaWGth3uR66u7ZRo6qhPHc0f2uRO9fX6XDVNrIiGYS0Pj9+R8yIIYSD/mCx2b16Ws9itljKSPg==} 1978 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1979 | hasBin: true 1980 | 1981 | run-parallel@1.2.0: 1982 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1983 | 1984 | semver@6.3.1: 1985 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1986 | hasBin: true 1987 | 1988 | semver@7.7.2: 1989 | resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} 1990 | engines: {node: '>=10'} 1991 | hasBin: true 1992 | 1993 | sh-syntax@0.4.2: 1994 | resolution: {integrity: sha512-/l2UZ5fhGZLVZa16XQM9/Vq/hezGGbdHeVEA01uWjOL1+7Ek/gt6FquW0iKKws4a9AYPYvlz6RyVvjh3JxOteg==} 1995 | engines: {node: '>=16.0.0'} 1996 | 1997 | shebang-command@2.0.0: 1998 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1999 | engines: {node: '>=8'} 2000 | 2001 | shebang-regex@3.0.0: 2002 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2003 | engines: {node: '>=8'} 2004 | 2005 | signal-exit@3.0.7: 2006 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2007 | 2008 | signal-exit@4.1.0: 2009 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 2010 | engines: {node: '>=14'} 2011 | 2012 | slash@3.0.0: 2013 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2014 | engines: {node: '>=8'} 2015 | 2016 | sort-object-keys@1.1.3: 2017 | resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} 2018 | 2019 | sort-package-json@2.12.0: 2020 | resolution: {integrity: sha512-/HrPQAeeLaa+vbAH/znjuhwUluuiM/zL5XX9kop8UpDgjtyWKt43hGDk2vd/TBdDpzIyzIHVUgmYofzYrAQjew==} 2021 | hasBin: true 2022 | 2023 | source-map-support@0.5.13: 2024 | resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} 2025 | 2026 | source-map@0.6.1: 2027 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2028 | engines: {node: '>=0.10.0'} 2029 | 2030 | source-map@0.8.0-beta.0: 2031 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 2032 | engines: {node: '>= 8'} 2033 | 2034 | sprintf-js@1.0.3: 2035 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 2036 | 2037 | stack-utils@2.0.6: 2038 | resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} 2039 | engines: {node: '>=10'} 2040 | 2041 | string-length@4.0.2: 2042 | resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} 2043 | engines: {node: '>=10'} 2044 | 2045 | string-width@4.2.3: 2046 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2047 | engines: {node: '>=8'} 2048 | 2049 | string-width@5.1.2: 2050 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 2051 | engines: {node: '>=12'} 2052 | 2053 | strip-ansi@6.0.1: 2054 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2055 | engines: {node: '>=8'} 2056 | 2057 | strip-ansi@7.1.0: 2058 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 2059 | engines: {node: '>=12'} 2060 | 2061 | strip-bom@4.0.0: 2062 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 2063 | engines: {node: '>=8'} 2064 | 2065 | strip-final-newline@2.0.0: 2066 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 2067 | engines: {node: '>=6'} 2068 | 2069 | strip-json-comments@3.1.1: 2070 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2071 | engines: {node: '>=8'} 2072 | 2073 | sucrase@3.35.0: 2074 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 2075 | engines: {node: '>=16 || 14 >=14.17'} 2076 | hasBin: true 2077 | 2078 | supports-color@7.2.0: 2079 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2080 | engines: {node: '>=8'} 2081 | 2082 | supports-color@8.1.1: 2083 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 2084 | engines: {node: '>=10'} 2085 | 2086 | synckit@0.11.8: 2087 | resolution: {integrity: sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==} 2088 | engines: {node: ^14.18.0 || >=16.0.0} 2089 | 2090 | synckit@0.9.2: 2091 | resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} 2092 | engines: {node: ^14.18.0 || >=16.0.0} 2093 | 2094 | test-exclude@6.0.0: 2095 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} 2096 | engines: {node: '>=8'} 2097 | 2098 | thenify-all@1.6.0: 2099 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 2100 | engines: {node: '>=0.8'} 2101 | 2102 | thenify@3.3.1: 2103 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 2104 | 2105 | tinyexec@0.3.2: 2106 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 2107 | 2108 | tinyglobby@0.2.14: 2109 | resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} 2110 | engines: {node: '>=12.0.0'} 2111 | 2112 | tmpl@1.0.5: 2113 | resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} 2114 | 2115 | to-regex-range@5.0.1: 2116 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2117 | engines: {node: '>=8.0'} 2118 | 2119 | tr46@1.0.1: 2120 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 2121 | 2122 | tree-kill@1.2.2: 2123 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 2124 | hasBin: true 2125 | 2126 | ts-api-utils@2.1.0: 2127 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 2128 | engines: {node: '>=18.12'} 2129 | peerDependencies: 2130 | typescript: '>=4.8.4' 2131 | 2132 | ts-interface-checker@0.1.13: 2133 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 2134 | 2135 | ts-jest@29.4.0: 2136 | resolution: {integrity: sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q==} 2137 | engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} 2138 | hasBin: true 2139 | peerDependencies: 2140 | '@babel/core': '>=7.0.0-beta.0 <8' 2141 | '@jest/transform': ^29.0.0 || ^30.0.0 2142 | '@jest/types': ^29.0.0 || ^30.0.0 2143 | babel-jest: ^29.0.0 || ^30.0.0 2144 | esbuild: '*' 2145 | jest: ^29.0.0 || ^30.0.0 2146 | jest-util: ^29.0.0 || ^30.0.0 2147 | typescript: '>=4.3 <6' 2148 | peerDependenciesMeta: 2149 | '@babel/core': 2150 | optional: true 2151 | '@jest/transform': 2152 | optional: true 2153 | '@jest/types': 2154 | optional: true 2155 | babel-jest: 2156 | optional: true 2157 | esbuild: 2158 | optional: true 2159 | jest-util: 2160 | optional: true 2161 | 2162 | tslib@2.8.1: 2163 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 2164 | 2165 | tsup@8.5.0: 2166 | resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==} 2167 | engines: {node: '>=18'} 2168 | hasBin: true 2169 | peerDependencies: 2170 | '@microsoft/api-extractor': ^7.36.0 2171 | '@swc/core': ^1 2172 | postcss: ^8.4.12 2173 | typescript: '>=4.5.0' 2174 | peerDependenciesMeta: 2175 | '@microsoft/api-extractor': 2176 | optional: true 2177 | '@swc/core': 2178 | optional: true 2179 | postcss: 2180 | optional: true 2181 | typescript: 2182 | optional: true 2183 | 2184 | type-check@0.4.0: 2185 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2186 | engines: {node: '>= 0.8.0'} 2187 | 2188 | type-detect@4.0.8: 2189 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 2190 | engines: {node: '>=4'} 2191 | 2192 | type-fest@0.21.3: 2193 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 2194 | engines: {node: '>=10'} 2195 | 2196 | type-fest@4.41.0: 2197 | resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} 2198 | engines: {node: '>=16'} 2199 | 2200 | typescript-eslint@8.41.0: 2201 | resolution: {integrity: sha512-n66rzs5OBXW3SFSnZHr2T685q1i4ODm2nulFJhMZBotaTavsS8TrI3d7bDlRSs9yWo7HmyWrN9qDu14Qv7Y0Dw==} 2202 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2203 | peerDependencies: 2204 | eslint: ^8.57.0 || ^9.0.0 2205 | typescript: '>=4.8.4 <6.0.0' 2206 | 2207 | typescript@5.9.2: 2208 | resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} 2209 | engines: {node: '>=14.17'} 2210 | hasBin: true 2211 | 2212 | ufo@1.6.1: 2213 | resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} 2214 | 2215 | undici-types@7.10.0: 2216 | resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} 2217 | 2218 | unrs-resolver@1.11.1: 2219 | resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} 2220 | 2221 | update-browserslist-db@1.1.3: 2222 | resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} 2223 | hasBin: true 2224 | peerDependencies: 2225 | browserslist: '>= 4.21.0' 2226 | 2227 | uri-js@4.4.1: 2228 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2229 | 2230 | v8-to-istanbul@9.3.0: 2231 | resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} 2232 | engines: {node: '>=10.12.0'} 2233 | 2234 | walker@1.0.8: 2235 | resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} 2236 | 2237 | webidl-conversions@4.0.2: 2238 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 2239 | 2240 | whatwg-url@7.1.0: 2241 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 2242 | 2243 | which@2.0.2: 2244 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2245 | engines: {node: '>= 8'} 2246 | hasBin: true 2247 | 2248 | word-wrap@1.2.5: 2249 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 2250 | engines: {node: '>=0.10.0'} 2251 | 2252 | wrap-ansi@7.0.0: 2253 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 2254 | engines: {node: '>=10'} 2255 | 2256 | wrap-ansi@8.1.0: 2257 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 2258 | engines: {node: '>=12'} 2259 | 2260 | wrappy@1.0.2: 2261 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2262 | 2263 | write-file-atomic@5.0.1: 2264 | resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} 2265 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 2266 | 2267 | y18n@5.0.8: 2268 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 2269 | engines: {node: '>=10'} 2270 | 2271 | yallist@3.1.1: 2272 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 2273 | 2274 | yargs-parser@21.1.1: 2275 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 2276 | engines: {node: '>=12'} 2277 | 2278 | yargs@17.7.2: 2279 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 2280 | engines: {node: '>=12'} 2281 | 2282 | yocto-queue@0.1.0: 2283 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2284 | engines: {node: '>=10'} 2285 | 2286 | snapshots: 2287 | 2288 | '@ampproject/remapping@2.3.0': 2289 | dependencies: 2290 | '@jridgewell/gen-mapping': 0.3.12 2291 | '@jridgewell/trace-mapping': 0.3.29 2292 | 2293 | '@babel/code-frame@7.27.1': 2294 | dependencies: 2295 | '@babel/helper-validator-identifier': 7.27.1 2296 | js-tokens: 4.0.0 2297 | picocolors: 1.1.1 2298 | 2299 | '@babel/compat-data@7.28.0': {} 2300 | 2301 | '@babel/core@7.28.0': 2302 | dependencies: 2303 | '@ampproject/remapping': 2.3.0 2304 | '@babel/code-frame': 7.27.1 2305 | '@babel/generator': 7.28.3 2306 | '@babel/helper-compilation-targets': 7.27.2 2307 | '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) 2308 | '@babel/helpers': 7.27.6 2309 | '@babel/parser': 7.28.3 2310 | '@babel/template': 7.27.2 2311 | '@babel/traverse': 7.28.0 2312 | '@babel/types': 7.28.2 2313 | convert-source-map: 2.0.0 2314 | debug: 4.4.1 2315 | gensync: 1.0.0-beta.2 2316 | json5: 2.2.3 2317 | semver: 6.3.1 2318 | transitivePeerDependencies: 2319 | - supports-color 2320 | 2321 | '@babel/generator@7.28.3': 2322 | dependencies: 2323 | '@babel/parser': 7.28.3 2324 | '@babel/types': 7.28.2 2325 | '@jridgewell/gen-mapping': 0.3.12 2326 | '@jridgewell/trace-mapping': 0.3.29 2327 | jsesc: 3.1.0 2328 | 2329 | '@babel/helper-compilation-targets@7.27.2': 2330 | dependencies: 2331 | '@babel/compat-data': 7.28.0 2332 | '@babel/helper-validator-option': 7.27.1 2333 | browserslist: 4.25.1 2334 | lru-cache: 5.1.1 2335 | semver: 6.3.1 2336 | 2337 | '@babel/helper-globals@7.28.0': {} 2338 | 2339 | '@babel/helper-module-imports@7.27.1': 2340 | dependencies: 2341 | '@babel/traverse': 7.28.0 2342 | '@babel/types': 7.28.2 2343 | transitivePeerDependencies: 2344 | - supports-color 2345 | 2346 | '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': 2347 | dependencies: 2348 | '@babel/core': 7.28.0 2349 | '@babel/helper-module-imports': 7.27.1 2350 | '@babel/helper-validator-identifier': 7.27.1 2351 | '@babel/traverse': 7.28.0 2352 | transitivePeerDependencies: 2353 | - supports-color 2354 | 2355 | '@babel/helper-plugin-utils@7.27.1': {} 2356 | 2357 | '@babel/helper-string-parser@7.27.1': {} 2358 | 2359 | '@babel/helper-validator-identifier@7.27.1': {} 2360 | 2361 | '@babel/helper-validator-option@7.27.1': {} 2362 | 2363 | '@babel/helpers@7.27.6': 2364 | dependencies: 2365 | '@babel/template': 7.27.2 2366 | '@babel/types': 7.28.2 2367 | 2368 | '@babel/parser@7.28.3': 2369 | dependencies: 2370 | '@babel/types': 7.28.2 2371 | 2372 | '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.0)': 2373 | dependencies: 2374 | '@babel/core': 7.28.0 2375 | '@babel/helper-plugin-utils': 7.27.1 2376 | 2377 | '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.0)': 2378 | dependencies: 2379 | '@babel/core': 7.28.0 2380 | '@babel/helper-plugin-utils': 7.27.1 2381 | 2382 | '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.0)': 2383 | dependencies: 2384 | '@babel/core': 7.28.0 2385 | '@babel/helper-plugin-utils': 7.27.1 2386 | 2387 | '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.0)': 2388 | dependencies: 2389 | '@babel/core': 7.28.0 2390 | '@babel/helper-plugin-utils': 7.27.1 2391 | 2392 | '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.0)': 2393 | dependencies: 2394 | '@babel/core': 7.28.0 2395 | '@babel/helper-plugin-utils': 7.27.1 2396 | 2397 | '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.0)': 2398 | dependencies: 2399 | '@babel/core': 7.28.0 2400 | '@babel/helper-plugin-utils': 7.27.1 2401 | 2402 | '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.0)': 2403 | dependencies: 2404 | '@babel/core': 7.28.0 2405 | '@babel/helper-plugin-utils': 7.27.1 2406 | 2407 | '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': 2408 | dependencies: 2409 | '@babel/core': 7.28.0 2410 | '@babel/helper-plugin-utils': 7.27.1 2411 | 2412 | '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.0)': 2413 | dependencies: 2414 | '@babel/core': 7.28.0 2415 | '@babel/helper-plugin-utils': 7.27.1 2416 | 2417 | '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.0)': 2418 | dependencies: 2419 | '@babel/core': 7.28.0 2420 | '@babel/helper-plugin-utils': 7.27.1 2421 | 2422 | '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.0)': 2423 | dependencies: 2424 | '@babel/core': 7.28.0 2425 | '@babel/helper-plugin-utils': 7.27.1 2426 | 2427 | '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.0)': 2428 | dependencies: 2429 | '@babel/core': 7.28.0 2430 | '@babel/helper-plugin-utils': 7.27.1 2431 | 2432 | '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.0)': 2433 | dependencies: 2434 | '@babel/core': 7.28.0 2435 | '@babel/helper-plugin-utils': 7.27.1 2436 | 2437 | '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.0)': 2438 | dependencies: 2439 | '@babel/core': 7.28.0 2440 | '@babel/helper-plugin-utils': 7.27.1 2441 | 2442 | '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.0)': 2443 | dependencies: 2444 | '@babel/core': 7.28.0 2445 | '@babel/helper-plugin-utils': 7.27.1 2446 | 2447 | '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.0)': 2448 | dependencies: 2449 | '@babel/core': 7.28.0 2450 | '@babel/helper-plugin-utils': 7.27.1 2451 | 2452 | '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.0)': 2453 | dependencies: 2454 | '@babel/core': 7.28.0 2455 | '@babel/helper-plugin-utils': 7.27.1 2456 | 2457 | '@babel/template@7.27.2': 2458 | dependencies: 2459 | '@babel/code-frame': 7.27.1 2460 | '@babel/parser': 7.28.3 2461 | '@babel/types': 7.28.2 2462 | 2463 | '@babel/traverse@7.28.0': 2464 | dependencies: 2465 | '@babel/code-frame': 7.27.1 2466 | '@babel/generator': 7.28.3 2467 | '@babel/helper-globals': 7.28.0 2468 | '@babel/parser': 7.28.3 2469 | '@babel/template': 7.27.2 2470 | '@babel/types': 7.28.2 2471 | debug: 4.4.1 2472 | transitivePeerDependencies: 2473 | - supports-color 2474 | 2475 | '@babel/types@7.28.2': 2476 | dependencies: 2477 | '@babel/helper-string-parser': 7.27.1 2478 | '@babel/helper-validator-identifier': 7.27.1 2479 | 2480 | '@bcoe/v8-coverage@0.2.3': {} 2481 | 2482 | '@edge-runtime/jest-environment@4.0.0': 2483 | dependencies: 2484 | '@edge-runtime/vm': 5.0.0 2485 | '@jest/environment': 29.5.0 2486 | '@jest/fake-timers': 29.5.0 2487 | jest-mock: 29.5.0 2488 | jest-util: 29.5.0 2489 | 2490 | '@edge-runtime/primitives@6.0.0': {} 2491 | 2492 | '@edge-runtime/vm@5.0.0': 2493 | dependencies: 2494 | '@edge-runtime/primitives': 6.0.0 2495 | 2496 | '@emnapi/core@1.5.0': 2497 | dependencies: 2498 | '@emnapi/wasi-threads': 1.1.0 2499 | tslib: 2.8.1 2500 | optional: true 2501 | 2502 | '@emnapi/runtime@1.4.5': 2503 | dependencies: 2504 | tslib: 2.8.1 2505 | optional: true 2506 | 2507 | '@emnapi/wasi-threads@1.1.0': 2508 | dependencies: 2509 | tslib: 2.8.1 2510 | optional: true 2511 | 2512 | '@esbuild/aix-ppc64@0.25.9': 2513 | optional: true 2514 | 2515 | '@esbuild/android-arm64@0.25.9': 2516 | optional: true 2517 | 2518 | '@esbuild/android-arm@0.25.9': 2519 | optional: true 2520 | 2521 | '@esbuild/android-x64@0.25.9': 2522 | optional: true 2523 | 2524 | '@esbuild/darwin-arm64@0.25.9': 2525 | optional: true 2526 | 2527 | '@esbuild/darwin-x64@0.25.9': 2528 | optional: true 2529 | 2530 | '@esbuild/freebsd-arm64@0.25.9': 2531 | optional: true 2532 | 2533 | '@esbuild/freebsd-x64@0.25.9': 2534 | optional: true 2535 | 2536 | '@esbuild/linux-arm64@0.25.9': 2537 | optional: true 2538 | 2539 | '@esbuild/linux-arm@0.25.9': 2540 | optional: true 2541 | 2542 | '@esbuild/linux-ia32@0.25.9': 2543 | optional: true 2544 | 2545 | '@esbuild/linux-loong64@0.25.9': 2546 | optional: true 2547 | 2548 | '@esbuild/linux-mips64el@0.25.9': 2549 | optional: true 2550 | 2551 | '@esbuild/linux-ppc64@0.25.9': 2552 | optional: true 2553 | 2554 | '@esbuild/linux-riscv64@0.25.9': 2555 | optional: true 2556 | 2557 | '@esbuild/linux-s390x@0.25.9': 2558 | optional: true 2559 | 2560 | '@esbuild/linux-x64@0.25.9': 2561 | optional: true 2562 | 2563 | '@esbuild/netbsd-arm64@0.25.9': 2564 | optional: true 2565 | 2566 | '@esbuild/netbsd-x64@0.25.9': 2567 | optional: true 2568 | 2569 | '@esbuild/openbsd-arm64@0.25.9': 2570 | optional: true 2571 | 2572 | '@esbuild/openbsd-x64@0.25.9': 2573 | optional: true 2574 | 2575 | '@esbuild/openharmony-arm64@0.25.9': 2576 | optional: true 2577 | 2578 | '@esbuild/sunos-x64@0.25.9': 2579 | optional: true 2580 | 2581 | '@esbuild/win32-arm64@0.25.9': 2582 | optional: true 2583 | 2584 | '@esbuild/win32-ia32@0.25.9': 2585 | optional: true 2586 | 2587 | '@esbuild/win32-x64@0.25.9': 2588 | optional: true 2589 | 2590 | '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0)': 2591 | dependencies: 2592 | eslint: 9.34.0 2593 | eslint-visitor-keys: 3.4.3 2594 | 2595 | '@eslint-community/regexpp@4.12.1': {} 2596 | 2597 | '@eslint/config-array@0.21.0': 2598 | dependencies: 2599 | '@eslint/object-schema': 2.1.6 2600 | debug: 4.4.1 2601 | minimatch: 3.1.2 2602 | transitivePeerDependencies: 2603 | - supports-color 2604 | 2605 | '@eslint/config-helpers@0.3.1': {} 2606 | 2607 | '@eslint/core@0.15.2': 2608 | dependencies: 2609 | '@types/json-schema': 7.0.15 2610 | 2611 | '@eslint/eslintrc@3.3.1': 2612 | dependencies: 2613 | ajv: 6.12.6 2614 | debug: 4.4.1 2615 | espree: 10.4.0 2616 | globals: 14.0.0 2617 | ignore: 5.3.2 2618 | import-fresh: 3.3.1 2619 | js-yaml: 4.1.0 2620 | minimatch: 3.1.2 2621 | strip-json-comments: 3.1.1 2622 | transitivePeerDependencies: 2623 | - supports-color 2624 | 2625 | '@eslint/js@9.34.0': {} 2626 | 2627 | '@eslint/object-schema@2.1.6': {} 2628 | 2629 | '@eslint/plugin-kit@0.3.5': 2630 | dependencies: 2631 | '@eslint/core': 0.15.2 2632 | levn: 0.4.1 2633 | 2634 | '@humanfs/core@0.19.1': {} 2635 | 2636 | '@humanfs/node@0.16.6': 2637 | dependencies: 2638 | '@humanfs/core': 0.19.1 2639 | '@humanwhocodes/retry': 0.3.1 2640 | 2641 | '@humanwhocodes/module-importer@1.0.1': {} 2642 | 2643 | '@humanwhocodes/retry@0.3.1': {} 2644 | 2645 | '@humanwhocodes/retry@0.4.3': {} 2646 | 2647 | '@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.6.2)': 2648 | dependencies: 2649 | '@babel/generator': 7.28.3 2650 | '@babel/parser': 7.28.3 2651 | '@babel/traverse': 7.28.0 2652 | '@babel/types': 7.28.2 2653 | prettier: 3.6.2 2654 | semver: 7.7.2 2655 | transitivePeerDependencies: 2656 | - supports-color 2657 | 2658 | '@isaacs/cliui@8.0.2': 2659 | dependencies: 2660 | string-width: 5.1.2 2661 | string-width-cjs: string-width@4.2.3 2662 | strip-ansi: 7.1.0 2663 | strip-ansi-cjs: strip-ansi@6.0.1 2664 | wrap-ansi: 8.1.0 2665 | wrap-ansi-cjs: wrap-ansi@7.0.0 2666 | 2667 | '@istanbuljs/load-nyc-config@1.1.0': 2668 | dependencies: 2669 | camelcase: 5.3.1 2670 | find-up: 4.1.0 2671 | get-package-type: 0.1.0 2672 | js-yaml: 3.14.1 2673 | resolve-from: 5.0.0 2674 | 2675 | '@istanbuljs/schema@0.1.3': {} 2676 | 2677 | '@jest/console@30.0.4': 2678 | dependencies: 2679 | '@jest/types': 30.0.1 2680 | '@types/node': 24.3.0 2681 | chalk: 4.1.2 2682 | jest-message-util: 30.0.2 2683 | jest-util: 30.0.2 2684 | slash: 3.0.0 2685 | 2686 | '@jest/core@30.0.4': 2687 | dependencies: 2688 | '@jest/console': 30.0.4 2689 | '@jest/pattern': 30.0.1 2690 | '@jest/reporters': 30.0.4 2691 | '@jest/test-result': 30.0.4 2692 | '@jest/transform': 30.0.4 2693 | '@jest/types': 30.0.1 2694 | '@types/node': 24.3.0 2695 | ansi-escapes: 4.3.2 2696 | chalk: 4.1.2 2697 | ci-info: 4.2.0 2698 | exit-x: 0.2.2 2699 | graceful-fs: 4.2.11 2700 | jest-changed-files: 30.0.2 2701 | jest-config: 30.0.4(@types/node@24.3.0) 2702 | jest-haste-map: 30.0.2 2703 | jest-message-util: 30.0.2 2704 | jest-regex-util: 30.0.1 2705 | jest-resolve: 30.0.2 2706 | jest-resolve-dependencies: 30.0.4 2707 | jest-runner: 30.0.4 2708 | jest-runtime: 30.0.4 2709 | jest-snapshot: 30.0.4 2710 | jest-util: 30.0.2 2711 | jest-validate: 30.0.2 2712 | jest-watcher: 30.0.4 2713 | micromatch: 4.0.8 2714 | pretty-format: 30.0.2 2715 | slash: 3.0.0 2716 | transitivePeerDependencies: 2717 | - babel-plugin-macros 2718 | - esbuild-register 2719 | - supports-color 2720 | - ts-node 2721 | 2722 | '@jest/diff-sequences@30.0.1': {} 2723 | 2724 | '@jest/environment@29.5.0': 2725 | dependencies: 2726 | '@jest/fake-timers': 29.5.0 2727 | '@jest/types': 29.6.3 2728 | '@types/node': 24.3.0 2729 | jest-mock: 29.5.0 2730 | 2731 | '@jest/environment@30.0.4': 2732 | dependencies: 2733 | '@jest/fake-timers': 30.0.4 2734 | '@jest/types': 30.0.1 2735 | '@types/node': 24.3.0 2736 | jest-mock: 30.0.2 2737 | 2738 | '@jest/expect-utils@30.0.4': 2739 | dependencies: 2740 | '@jest/get-type': 30.0.1 2741 | 2742 | '@jest/expect@30.0.4': 2743 | dependencies: 2744 | expect: 30.0.4 2745 | jest-snapshot: 30.0.4 2746 | transitivePeerDependencies: 2747 | - supports-color 2748 | 2749 | '@jest/fake-timers@29.5.0': 2750 | dependencies: 2751 | '@jest/types': 29.6.3 2752 | '@sinonjs/fake-timers': 10.3.0 2753 | '@types/node': 24.3.0 2754 | jest-message-util: 29.7.0 2755 | jest-mock: 29.5.0 2756 | jest-util: 29.5.0 2757 | 2758 | '@jest/fake-timers@30.0.4': 2759 | dependencies: 2760 | '@jest/types': 30.0.1 2761 | '@sinonjs/fake-timers': 13.0.5 2762 | '@types/node': 24.3.0 2763 | jest-message-util: 30.0.2 2764 | jest-mock: 30.0.2 2765 | jest-util: 30.0.2 2766 | 2767 | '@jest/get-type@30.0.1': {} 2768 | 2769 | '@jest/globals@30.0.4': 2770 | dependencies: 2771 | '@jest/environment': 30.0.4 2772 | '@jest/expect': 30.0.4 2773 | '@jest/types': 30.0.1 2774 | jest-mock: 30.0.2 2775 | transitivePeerDependencies: 2776 | - supports-color 2777 | 2778 | '@jest/pattern@30.0.1': 2779 | dependencies: 2780 | '@types/node': 24.3.0 2781 | jest-regex-util: 30.0.1 2782 | 2783 | '@jest/reporters@30.0.4': 2784 | dependencies: 2785 | '@bcoe/v8-coverage': 0.2.3 2786 | '@jest/console': 30.0.4 2787 | '@jest/test-result': 30.0.4 2788 | '@jest/transform': 30.0.4 2789 | '@jest/types': 30.0.1 2790 | '@jridgewell/trace-mapping': 0.3.29 2791 | '@types/node': 24.3.0 2792 | chalk: 4.1.2 2793 | collect-v8-coverage: 1.0.2 2794 | exit-x: 0.2.2 2795 | glob: 10.4.5 2796 | graceful-fs: 4.2.11 2797 | istanbul-lib-coverage: 3.2.2 2798 | istanbul-lib-instrument: 6.0.3 2799 | istanbul-lib-report: 3.0.1 2800 | istanbul-lib-source-maps: 5.0.6 2801 | istanbul-reports: 3.1.7 2802 | jest-message-util: 30.0.2 2803 | jest-util: 30.0.2 2804 | jest-worker: 30.0.2 2805 | slash: 3.0.0 2806 | string-length: 4.0.2 2807 | v8-to-istanbul: 9.3.0 2808 | transitivePeerDependencies: 2809 | - supports-color 2810 | 2811 | '@jest/schemas@29.6.3': 2812 | dependencies: 2813 | '@sinclair/typebox': 0.27.8 2814 | 2815 | '@jest/schemas@30.0.1': 2816 | dependencies: 2817 | '@sinclair/typebox': 0.34.37 2818 | 2819 | '@jest/snapshot-utils@30.0.4': 2820 | dependencies: 2821 | '@jest/types': 30.0.1 2822 | chalk: 4.1.2 2823 | graceful-fs: 4.2.11 2824 | natural-compare: 1.4.0 2825 | 2826 | '@jest/source-map@30.0.1': 2827 | dependencies: 2828 | '@jridgewell/trace-mapping': 0.3.29 2829 | callsites: 3.1.0 2830 | graceful-fs: 4.2.11 2831 | 2832 | '@jest/test-result@30.0.4': 2833 | dependencies: 2834 | '@jest/console': 30.0.4 2835 | '@jest/types': 30.0.1 2836 | '@types/istanbul-lib-coverage': 2.0.6 2837 | collect-v8-coverage: 1.0.2 2838 | 2839 | '@jest/test-sequencer@30.0.4': 2840 | dependencies: 2841 | '@jest/test-result': 30.0.4 2842 | graceful-fs: 4.2.11 2843 | jest-haste-map: 30.0.2 2844 | slash: 3.0.0 2845 | 2846 | '@jest/transform@30.0.4': 2847 | dependencies: 2848 | '@babel/core': 7.28.0 2849 | '@jest/types': 30.0.1 2850 | '@jridgewell/trace-mapping': 0.3.29 2851 | babel-plugin-istanbul: 7.0.0 2852 | chalk: 4.1.2 2853 | convert-source-map: 2.0.0 2854 | fast-json-stable-stringify: 2.1.0 2855 | graceful-fs: 4.2.11 2856 | jest-haste-map: 30.0.2 2857 | jest-regex-util: 30.0.1 2858 | jest-util: 30.0.2 2859 | micromatch: 4.0.8 2860 | pirates: 4.0.7 2861 | slash: 3.0.0 2862 | write-file-atomic: 5.0.1 2863 | transitivePeerDependencies: 2864 | - supports-color 2865 | 2866 | '@jest/types@29.6.3': 2867 | dependencies: 2868 | '@jest/schemas': 29.6.3 2869 | '@types/istanbul-lib-coverage': 2.0.6 2870 | '@types/istanbul-reports': 3.0.4 2871 | '@types/node': 24.3.0 2872 | '@types/yargs': 17.0.33 2873 | chalk: 4.1.2 2874 | 2875 | '@jest/types@30.0.1': 2876 | dependencies: 2877 | '@jest/pattern': 30.0.1 2878 | '@jest/schemas': 30.0.1 2879 | '@types/istanbul-lib-coverage': 2.0.6 2880 | '@types/istanbul-reports': 3.0.4 2881 | '@types/node': 24.3.0 2882 | '@types/yargs': 17.0.33 2883 | chalk: 4.1.2 2884 | 2885 | '@jridgewell/gen-mapping@0.3.12': 2886 | dependencies: 2887 | '@jridgewell/sourcemap-codec': 1.5.4 2888 | '@jridgewell/trace-mapping': 0.3.29 2889 | 2890 | '@jridgewell/resolve-uri@3.1.2': {} 2891 | 2892 | '@jridgewell/sourcemap-codec@1.5.4': {} 2893 | 2894 | '@jridgewell/trace-mapping@0.3.29': 2895 | dependencies: 2896 | '@jridgewell/resolve-uri': 3.1.2 2897 | '@jridgewell/sourcemap-codec': 1.5.4 2898 | 2899 | '@napi-rs/wasm-runtime@0.2.12': 2900 | dependencies: 2901 | '@emnapi/core': 1.5.0 2902 | '@emnapi/runtime': 1.4.5 2903 | '@tybys/wasm-util': 0.10.0 2904 | optional: true 2905 | 2906 | '@nodelib/fs.scandir@2.1.5': 2907 | dependencies: 2908 | '@nodelib/fs.stat': 2.0.5 2909 | run-parallel: 1.2.0 2910 | 2911 | '@nodelib/fs.stat@2.0.5': {} 2912 | 2913 | '@nodelib/fs.walk@1.2.8': 2914 | dependencies: 2915 | '@nodelib/fs.scandir': 2.1.5 2916 | fastq: 1.19.1 2917 | 2918 | '@pkgjs/parseargs@0.11.0': 2919 | optional: true 2920 | 2921 | '@pkgr/core@0.1.2': {} 2922 | 2923 | '@pkgr/core@0.2.7': {} 2924 | 2925 | '@rollup/rollup-android-arm-eabi@4.44.2': 2926 | optional: true 2927 | 2928 | '@rollup/rollup-android-arm64@4.44.2': 2929 | optional: true 2930 | 2931 | '@rollup/rollup-darwin-arm64@4.44.2': 2932 | optional: true 2933 | 2934 | '@rollup/rollup-darwin-x64@4.44.2': 2935 | optional: true 2936 | 2937 | '@rollup/rollup-freebsd-arm64@4.44.2': 2938 | optional: true 2939 | 2940 | '@rollup/rollup-freebsd-x64@4.44.2': 2941 | optional: true 2942 | 2943 | '@rollup/rollup-linux-arm-gnueabihf@4.44.2': 2944 | optional: true 2945 | 2946 | '@rollup/rollup-linux-arm-musleabihf@4.44.2': 2947 | optional: true 2948 | 2949 | '@rollup/rollup-linux-arm64-gnu@4.44.2': 2950 | optional: true 2951 | 2952 | '@rollup/rollup-linux-arm64-musl@4.44.2': 2953 | optional: true 2954 | 2955 | '@rollup/rollup-linux-loongarch64-gnu@4.44.2': 2956 | optional: true 2957 | 2958 | '@rollup/rollup-linux-powerpc64le-gnu@4.44.2': 2959 | optional: true 2960 | 2961 | '@rollup/rollup-linux-riscv64-gnu@4.44.2': 2962 | optional: true 2963 | 2964 | '@rollup/rollup-linux-riscv64-musl@4.44.2': 2965 | optional: true 2966 | 2967 | '@rollup/rollup-linux-s390x-gnu@4.44.2': 2968 | optional: true 2969 | 2970 | '@rollup/rollup-linux-x64-gnu@4.44.2': 2971 | optional: true 2972 | 2973 | '@rollup/rollup-linux-x64-musl@4.44.2': 2974 | optional: true 2975 | 2976 | '@rollup/rollup-win32-arm64-msvc@4.44.2': 2977 | optional: true 2978 | 2979 | '@rollup/rollup-win32-ia32-msvc@4.44.2': 2980 | optional: true 2981 | 2982 | '@rollup/rollup-win32-x64-msvc@4.44.2': 2983 | optional: true 2984 | 2985 | '@shahrad/eslint-config@1.0.1(typescript@5.9.2)': 2986 | dependencies: 2987 | '@eslint/js': 9.34.0 2988 | eslint: 9.34.0 2989 | typescript-eslint: 8.41.0(eslint@9.34.0)(typescript@5.9.2) 2990 | transitivePeerDependencies: 2991 | - jiti 2992 | - supports-color 2993 | - typescript 2994 | 2995 | '@shahrad/prettier-config@1.2.2(@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.6.2))(prettier-plugin-packagejson@2.5.6(prettier@3.6.2))(prettier-plugin-sh@0.14.0(prettier@3.6.2))(prettier@3.6.2)': 2996 | dependencies: 2997 | '@ianvs/prettier-plugin-sort-imports': 4.4.0(prettier@3.6.2) 2998 | prettier: 3.6.2 2999 | prettier-plugin-packagejson: 2.5.6(prettier@3.6.2) 3000 | prettier-plugin-sh: 0.14.0(prettier@3.6.2) 3001 | 3002 | '@shahrad/tsconfig@1.2.0': {} 3003 | 3004 | '@sinclair/typebox@0.27.8': {} 3005 | 3006 | '@sinclair/typebox@0.34.37': {} 3007 | 3008 | '@sinonjs/commons@3.0.1': 3009 | dependencies: 3010 | type-detect: 4.0.8 3011 | 3012 | '@sinonjs/fake-timers@10.3.0': 3013 | dependencies: 3014 | '@sinonjs/commons': 3.0.1 3015 | 3016 | '@sinonjs/fake-timers@13.0.5': 3017 | dependencies: 3018 | '@sinonjs/commons': 3.0.1 3019 | 3020 | '@tybys/wasm-util@0.10.0': 3021 | dependencies: 3022 | tslib: 2.8.1 3023 | optional: true 3024 | 3025 | '@types/babel__core@7.20.5': 3026 | dependencies: 3027 | '@babel/parser': 7.28.3 3028 | '@babel/types': 7.28.2 3029 | '@types/babel__generator': 7.27.0 3030 | '@types/babel__template': 7.4.4 3031 | '@types/babel__traverse': 7.20.7 3032 | 3033 | '@types/babel__generator@7.27.0': 3034 | dependencies: 3035 | '@babel/types': 7.28.2 3036 | 3037 | '@types/babel__template@7.4.4': 3038 | dependencies: 3039 | '@babel/parser': 7.28.3 3040 | '@babel/types': 7.28.2 3041 | 3042 | '@types/babel__traverse@7.20.7': 3043 | dependencies: 3044 | '@babel/types': 7.28.2 3045 | 3046 | '@types/estree@1.0.8': {} 3047 | 3048 | '@types/istanbul-lib-coverage@2.0.6': {} 3049 | 3050 | '@types/istanbul-lib-report@3.0.3': 3051 | dependencies: 3052 | '@types/istanbul-lib-coverage': 2.0.6 3053 | 3054 | '@types/istanbul-reports@3.0.4': 3055 | dependencies: 3056 | '@types/istanbul-lib-report': 3.0.3 3057 | 3058 | '@types/jest@30.0.0': 3059 | dependencies: 3060 | expect: 30.0.4 3061 | pretty-format: 30.0.2 3062 | 3063 | '@types/json-schema@7.0.15': {} 3064 | 3065 | '@types/luxon@3.7.1': {} 3066 | 3067 | '@types/node@24.3.0': 3068 | dependencies: 3069 | undici-types: 7.10.0 3070 | 3071 | '@types/stack-utils@2.0.3': {} 3072 | 3073 | '@types/yargs-parser@21.0.3': {} 3074 | 3075 | '@types/yargs@17.0.33': 3076 | dependencies: 3077 | '@types/yargs-parser': 21.0.3 3078 | 3079 | '@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2)': 3080 | dependencies: 3081 | '@eslint-community/regexpp': 4.12.1 3082 | '@typescript-eslint/parser': 8.41.0(eslint@9.34.0)(typescript@5.9.2) 3083 | '@typescript-eslint/scope-manager': 8.41.0 3084 | '@typescript-eslint/type-utils': 8.41.0(eslint@9.34.0)(typescript@5.9.2) 3085 | '@typescript-eslint/utils': 8.41.0(eslint@9.34.0)(typescript@5.9.2) 3086 | '@typescript-eslint/visitor-keys': 8.41.0 3087 | eslint: 9.34.0 3088 | graphemer: 1.4.0 3089 | ignore: 7.0.5 3090 | natural-compare: 1.4.0 3091 | ts-api-utils: 2.1.0(typescript@5.9.2) 3092 | typescript: 5.9.2 3093 | transitivePeerDependencies: 3094 | - supports-color 3095 | 3096 | '@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2)': 3097 | dependencies: 3098 | '@typescript-eslint/scope-manager': 8.41.0 3099 | '@typescript-eslint/types': 8.41.0 3100 | '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) 3101 | '@typescript-eslint/visitor-keys': 8.41.0 3102 | debug: 4.4.1 3103 | eslint: 9.34.0 3104 | typescript: 5.9.2 3105 | transitivePeerDependencies: 3106 | - supports-color 3107 | 3108 | '@typescript-eslint/project-service@8.41.0(typescript@5.9.2)': 3109 | dependencies: 3110 | '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2) 3111 | '@typescript-eslint/types': 8.41.0 3112 | debug: 4.4.1 3113 | typescript: 5.9.2 3114 | transitivePeerDependencies: 3115 | - supports-color 3116 | 3117 | '@typescript-eslint/scope-manager@8.41.0': 3118 | dependencies: 3119 | '@typescript-eslint/types': 8.41.0 3120 | '@typescript-eslint/visitor-keys': 8.41.0 3121 | 3122 | '@typescript-eslint/tsconfig-utils@8.41.0(typescript@5.9.2)': 3123 | dependencies: 3124 | typescript: 5.9.2 3125 | 3126 | '@typescript-eslint/type-utils@8.41.0(eslint@9.34.0)(typescript@5.9.2)': 3127 | dependencies: 3128 | '@typescript-eslint/types': 8.41.0 3129 | '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) 3130 | '@typescript-eslint/utils': 8.41.0(eslint@9.34.0)(typescript@5.9.2) 3131 | debug: 4.4.1 3132 | eslint: 9.34.0 3133 | ts-api-utils: 2.1.0(typescript@5.9.2) 3134 | typescript: 5.9.2 3135 | transitivePeerDependencies: 3136 | - supports-color 3137 | 3138 | '@typescript-eslint/types@8.41.0': {} 3139 | 3140 | '@typescript-eslint/typescript-estree@8.41.0(typescript@5.9.2)': 3141 | dependencies: 3142 | '@typescript-eslint/project-service': 8.41.0(typescript@5.9.2) 3143 | '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2) 3144 | '@typescript-eslint/types': 8.41.0 3145 | '@typescript-eslint/visitor-keys': 8.41.0 3146 | debug: 4.4.1 3147 | fast-glob: 3.3.3 3148 | is-glob: 4.0.3 3149 | minimatch: 9.0.5 3150 | semver: 7.7.2 3151 | ts-api-utils: 2.1.0(typescript@5.9.2) 3152 | typescript: 5.9.2 3153 | transitivePeerDependencies: 3154 | - supports-color 3155 | 3156 | '@typescript-eslint/utils@8.41.0(eslint@9.34.0)(typescript@5.9.2)': 3157 | dependencies: 3158 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0) 3159 | '@typescript-eslint/scope-manager': 8.41.0 3160 | '@typescript-eslint/types': 8.41.0 3161 | '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) 3162 | eslint: 9.34.0 3163 | typescript: 5.9.2 3164 | transitivePeerDependencies: 3165 | - supports-color 3166 | 3167 | '@typescript-eslint/visitor-keys@8.41.0': 3168 | dependencies: 3169 | '@typescript-eslint/types': 8.41.0 3170 | eslint-visitor-keys: 4.2.1 3171 | 3172 | '@ungap/structured-clone@1.3.0': {} 3173 | 3174 | '@unrs/resolver-binding-android-arm-eabi@1.11.1': 3175 | optional: true 3176 | 3177 | '@unrs/resolver-binding-android-arm64@1.11.1': 3178 | optional: true 3179 | 3180 | '@unrs/resolver-binding-darwin-arm64@1.11.1': 3181 | optional: true 3182 | 3183 | '@unrs/resolver-binding-darwin-x64@1.11.1': 3184 | optional: true 3185 | 3186 | '@unrs/resolver-binding-freebsd-x64@1.11.1': 3187 | optional: true 3188 | 3189 | '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': 3190 | optional: true 3191 | 3192 | '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': 3193 | optional: true 3194 | 3195 | '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': 3196 | optional: true 3197 | 3198 | '@unrs/resolver-binding-linux-arm64-musl@1.11.1': 3199 | optional: true 3200 | 3201 | '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': 3202 | optional: true 3203 | 3204 | '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': 3205 | optional: true 3206 | 3207 | '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': 3208 | optional: true 3209 | 3210 | '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': 3211 | optional: true 3212 | 3213 | '@unrs/resolver-binding-linux-x64-gnu@1.11.1': 3214 | optional: true 3215 | 3216 | '@unrs/resolver-binding-linux-x64-musl@1.11.1': 3217 | optional: true 3218 | 3219 | '@unrs/resolver-binding-wasm32-wasi@1.11.1': 3220 | dependencies: 3221 | '@napi-rs/wasm-runtime': 0.2.12 3222 | optional: true 3223 | 3224 | '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': 3225 | optional: true 3226 | 3227 | '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': 3228 | optional: true 3229 | 3230 | '@unrs/resolver-binding-win32-x64-msvc@1.11.1': 3231 | optional: true 3232 | 3233 | acorn-jsx@5.3.2(acorn@8.15.0): 3234 | dependencies: 3235 | acorn: 8.15.0 3236 | 3237 | acorn@8.15.0: {} 3238 | 3239 | ajv@6.12.6: 3240 | dependencies: 3241 | fast-deep-equal: 3.1.3 3242 | fast-json-stable-stringify: 2.1.0 3243 | json-schema-traverse: 0.4.1 3244 | uri-js: 4.4.1 3245 | 3246 | ansi-escapes@4.3.2: 3247 | dependencies: 3248 | type-fest: 0.21.3 3249 | 3250 | ansi-regex@5.0.1: {} 3251 | 3252 | ansi-regex@6.1.0: {} 3253 | 3254 | ansi-styles@4.3.0: 3255 | dependencies: 3256 | color-convert: 2.0.1 3257 | 3258 | ansi-styles@5.2.0: {} 3259 | 3260 | ansi-styles@6.2.1: {} 3261 | 3262 | any-promise@1.3.0: {} 3263 | 3264 | anymatch@3.1.3: 3265 | dependencies: 3266 | normalize-path: 3.0.0 3267 | picomatch: 2.3.1 3268 | 3269 | argparse@1.0.10: 3270 | dependencies: 3271 | sprintf-js: 1.0.3 3272 | 3273 | argparse@2.0.1: {} 3274 | 3275 | async@3.2.6: {} 3276 | 3277 | babel-jest@30.0.4(@babel/core@7.28.0): 3278 | dependencies: 3279 | '@babel/core': 7.28.0 3280 | '@jest/transform': 30.0.4 3281 | '@types/babel__core': 7.20.5 3282 | babel-plugin-istanbul: 7.0.0 3283 | babel-preset-jest: 30.0.1(@babel/core@7.28.0) 3284 | chalk: 4.1.2 3285 | graceful-fs: 4.2.11 3286 | slash: 3.0.0 3287 | transitivePeerDependencies: 3288 | - supports-color 3289 | 3290 | babel-plugin-istanbul@7.0.0: 3291 | dependencies: 3292 | '@babel/helper-plugin-utils': 7.27.1 3293 | '@istanbuljs/load-nyc-config': 1.1.0 3294 | '@istanbuljs/schema': 0.1.3 3295 | istanbul-lib-instrument: 6.0.3 3296 | test-exclude: 6.0.0 3297 | transitivePeerDependencies: 3298 | - supports-color 3299 | 3300 | babel-plugin-jest-hoist@30.0.1: 3301 | dependencies: 3302 | '@babel/template': 7.27.2 3303 | '@babel/types': 7.28.2 3304 | '@types/babel__core': 7.20.5 3305 | 3306 | babel-preset-current-node-syntax@1.1.0(@babel/core@7.28.0): 3307 | dependencies: 3308 | '@babel/core': 7.28.0 3309 | '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.0) 3310 | '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.0) 3311 | '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.0) 3312 | '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.0) 3313 | '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.0) 3314 | '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.0) 3315 | '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.0) 3316 | '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.0) 3317 | '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.0) 3318 | '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.0) 3319 | '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.0) 3320 | '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.0) 3321 | '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.0) 3322 | '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.0) 3323 | '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.0) 3324 | 3325 | babel-preset-jest@30.0.1(@babel/core@7.28.0): 3326 | dependencies: 3327 | '@babel/core': 7.28.0 3328 | babel-plugin-jest-hoist: 30.0.1 3329 | babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.0) 3330 | 3331 | balanced-match@1.0.2: {} 3332 | 3333 | brace-expansion@1.1.12: 3334 | dependencies: 3335 | balanced-match: 1.0.2 3336 | concat-map: 0.0.1 3337 | 3338 | brace-expansion@2.0.2: 3339 | dependencies: 3340 | balanced-match: 1.0.2 3341 | 3342 | braces@3.0.3: 3343 | dependencies: 3344 | fill-range: 7.1.1 3345 | 3346 | browserslist@4.25.1: 3347 | dependencies: 3348 | caniuse-lite: 1.0.30001726 3349 | electron-to-chromium: 1.5.179 3350 | node-releases: 2.0.19 3351 | update-browserslist-db: 1.1.3(browserslist@4.25.1) 3352 | 3353 | bs-logger@0.2.6: 3354 | dependencies: 3355 | fast-json-stable-stringify: 2.1.0 3356 | 3357 | bser@2.1.1: 3358 | dependencies: 3359 | node-int64: 0.4.0 3360 | 3361 | buffer-from@1.1.2: {} 3362 | 3363 | bundle-require@5.1.0(esbuild@0.25.9): 3364 | dependencies: 3365 | esbuild: 0.25.9 3366 | load-tsconfig: 0.2.5 3367 | 3368 | cac@6.7.14: {} 3369 | 3370 | callsites@3.1.0: {} 3371 | 3372 | camelcase@5.3.1: {} 3373 | 3374 | camelcase@6.3.0: {} 3375 | 3376 | caniuse-lite@1.0.30001726: {} 3377 | 3378 | chalk@4.1.2: 3379 | dependencies: 3380 | ansi-styles: 4.3.0 3381 | supports-color: 7.2.0 3382 | 3383 | char-regex@1.0.2: {} 3384 | 3385 | chokidar@4.0.3: 3386 | dependencies: 3387 | readdirp: 4.1.2 3388 | 3389 | ci-info@3.9.0: {} 3390 | 3391 | ci-info@4.2.0: {} 3392 | 3393 | cjs-module-lexer@2.1.0: {} 3394 | 3395 | cliui@8.0.1: 3396 | dependencies: 3397 | string-width: 4.2.3 3398 | strip-ansi: 6.0.1 3399 | wrap-ansi: 7.0.0 3400 | 3401 | co@4.6.0: {} 3402 | 3403 | collect-v8-coverage@1.0.2: {} 3404 | 3405 | color-convert@2.0.1: 3406 | dependencies: 3407 | color-name: 1.1.4 3408 | 3409 | color-name@1.1.4: {} 3410 | 3411 | commander@4.1.1: {} 3412 | 3413 | concat-map@0.0.1: {} 3414 | 3415 | confbox@0.1.8: {} 3416 | 3417 | consola@3.4.2: {} 3418 | 3419 | convert-source-map@2.0.0: {} 3420 | 3421 | cross-spawn@7.0.6: 3422 | dependencies: 3423 | path-key: 3.1.1 3424 | shebang-command: 2.0.0 3425 | which: 2.0.2 3426 | 3427 | debug@4.4.1: 3428 | dependencies: 3429 | ms: 2.1.3 3430 | 3431 | dedent@1.6.0: {} 3432 | 3433 | deep-is@0.1.4: {} 3434 | 3435 | deepmerge@4.3.1: {} 3436 | 3437 | detect-indent@7.0.1: {} 3438 | 3439 | detect-newline@3.1.0: {} 3440 | 3441 | detect-newline@4.0.1: {} 3442 | 3443 | eastasianwidth@0.2.0: {} 3444 | 3445 | ejs@3.1.10: 3446 | dependencies: 3447 | jake: 10.9.2 3448 | 3449 | electron-to-chromium@1.5.179: {} 3450 | 3451 | emittery@0.13.1: {} 3452 | 3453 | emoji-regex@8.0.0: {} 3454 | 3455 | emoji-regex@9.2.2: {} 3456 | 3457 | error-ex@1.3.2: 3458 | dependencies: 3459 | is-arrayish: 0.2.1 3460 | 3461 | esbuild@0.25.9: 3462 | optionalDependencies: 3463 | '@esbuild/aix-ppc64': 0.25.9 3464 | '@esbuild/android-arm': 0.25.9 3465 | '@esbuild/android-arm64': 0.25.9 3466 | '@esbuild/android-x64': 0.25.9 3467 | '@esbuild/darwin-arm64': 0.25.9 3468 | '@esbuild/darwin-x64': 0.25.9 3469 | '@esbuild/freebsd-arm64': 0.25.9 3470 | '@esbuild/freebsd-x64': 0.25.9 3471 | '@esbuild/linux-arm': 0.25.9 3472 | '@esbuild/linux-arm64': 0.25.9 3473 | '@esbuild/linux-ia32': 0.25.9 3474 | '@esbuild/linux-loong64': 0.25.9 3475 | '@esbuild/linux-mips64el': 0.25.9 3476 | '@esbuild/linux-ppc64': 0.25.9 3477 | '@esbuild/linux-riscv64': 0.25.9 3478 | '@esbuild/linux-s390x': 0.25.9 3479 | '@esbuild/linux-x64': 0.25.9 3480 | '@esbuild/netbsd-arm64': 0.25.9 3481 | '@esbuild/netbsd-x64': 0.25.9 3482 | '@esbuild/openbsd-arm64': 0.25.9 3483 | '@esbuild/openbsd-x64': 0.25.9 3484 | '@esbuild/openharmony-arm64': 0.25.9 3485 | '@esbuild/sunos-x64': 0.25.9 3486 | '@esbuild/win32-arm64': 0.25.9 3487 | '@esbuild/win32-ia32': 0.25.9 3488 | '@esbuild/win32-x64': 0.25.9 3489 | 3490 | escalade@3.2.0: {} 3491 | 3492 | escape-string-regexp@2.0.0: {} 3493 | 3494 | escape-string-regexp@4.0.0: {} 3495 | 3496 | eslint-scope@8.4.0: 3497 | dependencies: 3498 | esrecurse: 4.3.0 3499 | estraverse: 5.3.0 3500 | 3501 | eslint-visitor-keys@3.4.3: {} 3502 | 3503 | eslint-visitor-keys@4.2.1: {} 3504 | 3505 | eslint@9.34.0: 3506 | dependencies: 3507 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0) 3508 | '@eslint-community/regexpp': 4.12.1 3509 | '@eslint/config-array': 0.21.0 3510 | '@eslint/config-helpers': 0.3.1 3511 | '@eslint/core': 0.15.2 3512 | '@eslint/eslintrc': 3.3.1 3513 | '@eslint/js': 9.34.0 3514 | '@eslint/plugin-kit': 0.3.5 3515 | '@humanfs/node': 0.16.6 3516 | '@humanwhocodes/module-importer': 1.0.1 3517 | '@humanwhocodes/retry': 0.4.3 3518 | '@types/estree': 1.0.8 3519 | '@types/json-schema': 7.0.15 3520 | ajv: 6.12.6 3521 | chalk: 4.1.2 3522 | cross-spawn: 7.0.6 3523 | debug: 4.4.1 3524 | escape-string-regexp: 4.0.0 3525 | eslint-scope: 8.4.0 3526 | eslint-visitor-keys: 4.2.1 3527 | espree: 10.4.0 3528 | esquery: 1.6.0 3529 | esutils: 2.0.3 3530 | fast-deep-equal: 3.1.3 3531 | file-entry-cache: 8.0.0 3532 | find-up: 5.0.0 3533 | glob-parent: 6.0.2 3534 | ignore: 5.3.2 3535 | imurmurhash: 0.1.4 3536 | is-glob: 4.0.3 3537 | json-stable-stringify-without-jsonify: 1.0.1 3538 | lodash.merge: 4.6.2 3539 | minimatch: 3.1.2 3540 | natural-compare: 1.4.0 3541 | optionator: 0.9.4 3542 | transitivePeerDependencies: 3543 | - supports-color 3544 | 3545 | espree@10.4.0: 3546 | dependencies: 3547 | acorn: 8.15.0 3548 | acorn-jsx: 5.3.2(acorn@8.15.0) 3549 | eslint-visitor-keys: 4.2.1 3550 | 3551 | esprima@4.0.1: {} 3552 | 3553 | esquery@1.6.0: 3554 | dependencies: 3555 | estraverse: 5.3.0 3556 | 3557 | esrecurse@4.3.0: 3558 | dependencies: 3559 | estraverse: 5.3.0 3560 | 3561 | estraverse@5.3.0: {} 3562 | 3563 | esutils@2.0.3: {} 3564 | 3565 | execa@5.1.1: 3566 | dependencies: 3567 | cross-spawn: 7.0.6 3568 | get-stream: 6.0.1 3569 | human-signals: 2.1.0 3570 | is-stream: 2.0.1 3571 | merge-stream: 2.0.0 3572 | npm-run-path: 4.0.1 3573 | onetime: 5.1.2 3574 | signal-exit: 3.0.7 3575 | strip-final-newline: 2.0.0 3576 | 3577 | exit-x@0.2.2: {} 3578 | 3579 | expect@30.0.4: 3580 | dependencies: 3581 | '@jest/expect-utils': 30.0.4 3582 | '@jest/get-type': 30.0.1 3583 | jest-matcher-utils: 30.0.4 3584 | jest-message-util: 30.0.2 3585 | jest-mock: 30.0.2 3586 | jest-util: 30.0.2 3587 | 3588 | fast-deep-equal@3.1.3: {} 3589 | 3590 | fast-glob@3.3.3: 3591 | dependencies: 3592 | '@nodelib/fs.stat': 2.0.5 3593 | '@nodelib/fs.walk': 1.2.8 3594 | glob-parent: 5.1.2 3595 | merge2: 1.4.1 3596 | micromatch: 4.0.8 3597 | 3598 | fast-json-stable-stringify@2.1.0: {} 3599 | 3600 | fast-levenshtein@2.0.6: {} 3601 | 3602 | fastq@1.19.1: 3603 | dependencies: 3604 | reusify: 1.1.0 3605 | 3606 | fb-watchman@2.0.2: 3607 | dependencies: 3608 | bser: 2.1.1 3609 | 3610 | fdir@6.4.6(picomatch@4.0.2): 3611 | optionalDependencies: 3612 | picomatch: 4.0.2 3613 | 3614 | file-entry-cache@8.0.0: 3615 | dependencies: 3616 | flat-cache: 4.0.1 3617 | 3618 | filelist@1.0.4: 3619 | dependencies: 3620 | minimatch: 5.1.6 3621 | 3622 | fill-range@7.1.1: 3623 | dependencies: 3624 | to-regex-range: 5.0.1 3625 | 3626 | find-up@4.1.0: 3627 | dependencies: 3628 | locate-path: 5.0.0 3629 | path-exists: 4.0.0 3630 | 3631 | find-up@5.0.0: 3632 | dependencies: 3633 | locate-path: 6.0.0 3634 | path-exists: 4.0.0 3635 | 3636 | fix-dts-default-cjs-exports@1.0.1: 3637 | dependencies: 3638 | magic-string: 0.30.17 3639 | mlly: 1.7.4 3640 | rollup: 4.44.2 3641 | 3642 | flat-cache@4.0.1: 3643 | dependencies: 3644 | flatted: 3.3.3 3645 | keyv: 4.5.4 3646 | 3647 | flatted@3.3.3: {} 3648 | 3649 | foreground-child@3.3.1: 3650 | dependencies: 3651 | cross-spawn: 7.0.6 3652 | signal-exit: 4.1.0 3653 | 3654 | fs.realpath@1.0.0: {} 3655 | 3656 | fsevents@2.3.3: 3657 | optional: true 3658 | 3659 | gensync@1.0.0-beta.2: {} 3660 | 3661 | get-caller-file@2.0.5: {} 3662 | 3663 | get-package-type@0.1.0: {} 3664 | 3665 | get-stdin@9.0.0: {} 3666 | 3667 | get-stream@6.0.1: {} 3668 | 3669 | git-hooks-list@3.2.0: {} 3670 | 3671 | glob-parent@5.1.2: 3672 | dependencies: 3673 | is-glob: 4.0.3 3674 | 3675 | glob-parent@6.0.2: 3676 | dependencies: 3677 | is-glob: 4.0.3 3678 | 3679 | glob@10.4.5: 3680 | dependencies: 3681 | foreground-child: 3.3.1 3682 | jackspeak: 3.4.3 3683 | minimatch: 9.0.5 3684 | minipass: 7.1.2 3685 | package-json-from-dist: 1.0.1 3686 | path-scurry: 1.11.1 3687 | 3688 | glob@7.2.3: 3689 | dependencies: 3690 | fs.realpath: 1.0.0 3691 | inflight: 1.0.6 3692 | inherits: 2.0.4 3693 | minimatch: 3.1.2 3694 | once: 1.4.0 3695 | path-is-absolute: 1.0.1 3696 | 3697 | globals@14.0.0: {} 3698 | 3699 | graceful-fs@4.2.11: {} 3700 | 3701 | graphemer@1.4.0: {} 3702 | 3703 | has-flag@4.0.0: {} 3704 | 3705 | html-escaper@2.0.2: {} 3706 | 3707 | human-signals@2.1.0: {} 3708 | 3709 | ignore@5.3.2: {} 3710 | 3711 | ignore@7.0.5: {} 3712 | 3713 | import-fresh@3.3.1: 3714 | dependencies: 3715 | parent-module: 1.0.1 3716 | resolve-from: 4.0.0 3717 | 3718 | import-local@3.2.0: 3719 | dependencies: 3720 | pkg-dir: 4.2.0 3721 | resolve-cwd: 3.0.0 3722 | 3723 | imurmurhash@0.1.4: {} 3724 | 3725 | inflight@1.0.6: 3726 | dependencies: 3727 | once: 1.4.0 3728 | wrappy: 1.0.2 3729 | 3730 | inherits@2.0.4: {} 3731 | 3732 | is-arrayish@0.2.1: {} 3733 | 3734 | is-extglob@2.1.1: {} 3735 | 3736 | is-fullwidth-code-point@3.0.0: {} 3737 | 3738 | is-generator-fn@2.1.0: {} 3739 | 3740 | is-glob@4.0.3: 3741 | dependencies: 3742 | is-extglob: 2.1.1 3743 | 3744 | is-number@7.0.0: {} 3745 | 3746 | is-plain-obj@4.1.0: {} 3747 | 3748 | is-stream@2.0.1: {} 3749 | 3750 | isexe@2.0.0: {} 3751 | 3752 | istanbul-lib-coverage@3.2.2: {} 3753 | 3754 | istanbul-lib-instrument@6.0.3: 3755 | dependencies: 3756 | '@babel/core': 7.28.0 3757 | '@babel/parser': 7.28.3 3758 | '@istanbuljs/schema': 0.1.3 3759 | istanbul-lib-coverage: 3.2.2 3760 | semver: 7.7.2 3761 | transitivePeerDependencies: 3762 | - supports-color 3763 | 3764 | istanbul-lib-report@3.0.1: 3765 | dependencies: 3766 | istanbul-lib-coverage: 3.2.2 3767 | make-dir: 4.0.0 3768 | supports-color: 7.2.0 3769 | 3770 | istanbul-lib-source-maps@5.0.6: 3771 | dependencies: 3772 | '@jridgewell/trace-mapping': 0.3.29 3773 | debug: 4.4.1 3774 | istanbul-lib-coverage: 3.2.2 3775 | transitivePeerDependencies: 3776 | - supports-color 3777 | 3778 | istanbul-reports@3.1.7: 3779 | dependencies: 3780 | html-escaper: 2.0.2 3781 | istanbul-lib-report: 3.0.1 3782 | 3783 | jackspeak@3.4.3: 3784 | dependencies: 3785 | '@isaacs/cliui': 8.0.2 3786 | optionalDependencies: 3787 | '@pkgjs/parseargs': 0.11.0 3788 | 3789 | jake@10.9.2: 3790 | dependencies: 3791 | async: 3.2.6 3792 | chalk: 4.1.2 3793 | filelist: 1.0.4 3794 | minimatch: 3.1.2 3795 | 3796 | jest-changed-files@30.0.2: 3797 | dependencies: 3798 | execa: 5.1.1 3799 | jest-util: 30.0.2 3800 | p-limit: 3.1.0 3801 | 3802 | jest-circus@30.0.4: 3803 | dependencies: 3804 | '@jest/environment': 30.0.4 3805 | '@jest/expect': 30.0.4 3806 | '@jest/test-result': 30.0.4 3807 | '@jest/types': 30.0.1 3808 | '@types/node': 24.3.0 3809 | chalk: 4.1.2 3810 | co: 4.6.0 3811 | dedent: 1.6.0 3812 | is-generator-fn: 2.1.0 3813 | jest-each: 30.0.2 3814 | jest-matcher-utils: 30.0.4 3815 | jest-message-util: 30.0.2 3816 | jest-runtime: 30.0.4 3817 | jest-snapshot: 30.0.4 3818 | jest-util: 30.0.2 3819 | p-limit: 3.1.0 3820 | pretty-format: 30.0.2 3821 | pure-rand: 7.0.1 3822 | slash: 3.0.0 3823 | stack-utils: 2.0.6 3824 | transitivePeerDependencies: 3825 | - babel-plugin-macros 3826 | - supports-color 3827 | 3828 | jest-cli@30.0.4(@types/node@24.3.0): 3829 | dependencies: 3830 | '@jest/core': 30.0.4 3831 | '@jest/test-result': 30.0.4 3832 | '@jest/types': 30.0.1 3833 | chalk: 4.1.2 3834 | exit-x: 0.2.2 3835 | import-local: 3.2.0 3836 | jest-config: 30.0.4(@types/node@24.3.0) 3837 | jest-util: 30.0.2 3838 | jest-validate: 30.0.2 3839 | yargs: 17.7.2 3840 | transitivePeerDependencies: 3841 | - '@types/node' 3842 | - babel-plugin-macros 3843 | - esbuild-register 3844 | - supports-color 3845 | - ts-node 3846 | 3847 | jest-config@30.0.4(@types/node@24.3.0): 3848 | dependencies: 3849 | '@babel/core': 7.28.0 3850 | '@jest/get-type': 30.0.1 3851 | '@jest/pattern': 30.0.1 3852 | '@jest/test-sequencer': 30.0.4 3853 | '@jest/types': 30.0.1 3854 | babel-jest: 30.0.4(@babel/core@7.28.0) 3855 | chalk: 4.1.2 3856 | ci-info: 4.2.0 3857 | deepmerge: 4.3.1 3858 | glob: 10.4.5 3859 | graceful-fs: 4.2.11 3860 | jest-circus: 30.0.4 3861 | jest-docblock: 30.0.1 3862 | jest-environment-node: 30.0.4 3863 | jest-regex-util: 30.0.1 3864 | jest-resolve: 30.0.2 3865 | jest-runner: 30.0.4 3866 | jest-util: 30.0.2 3867 | jest-validate: 30.0.2 3868 | micromatch: 4.0.8 3869 | parse-json: 5.2.0 3870 | pretty-format: 30.0.2 3871 | slash: 3.0.0 3872 | strip-json-comments: 3.1.1 3873 | optionalDependencies: 3874 | '@types/node': 24.3.0 3875 | transitivePeerDependencies: 3876 | - babel-plugin-macros 3877 | - supports-color 3878 | 3879 | jest-diff@30.0.4: 3880 | dependencies: 3881 | '@jest/diff-sequences': 30.0.1 3882 | '@jest/get-type': 30.0.1 3883 | chalk: 4.1.2 3884 | pretty-format: 30.0.2 3885 | 3886 | jest-docblock@30.0.1: 3887 | dependencies: 3888 | detect-newline: 3.1.0 3889 | 3890 | jest-each@30.0.2: 3891 | dependencies: 3892 | '@jest/get-type': 30.0.1 3893 | '@jest/types': 30.0.1 3894 | chalk: 4.1.2 3895 | jest-util: 30.0.2 3896 | pretty-format: 30.0.2 3897 | 3898 | jest-environment-node@30.0.4: 3899 | dependencies: 3900 | '@jest/environment': 30.0.4 3901 | '@jest/fake-timers': 30.0.4 3902 | '@jest/types': 30.0.1 3903 | '@types/node': 24.3.0 3904 | jest-mock: 30.0.2 3905 | jest-util: 30.0.2 3906 | jest-validate: 30.0.2 3907 | 3908 | jest-haste-map@30.0.2: 3909 | dependencies: 3910 | '@jest/types': 30.0.1 3911 | '@types/node': 24.3.0 3912 | anymatch: 3.1.3 3913 | fb-watchman: 2.0.2 3914 | graceful-fs: 4.2.11 3915 | jest-regex-util: 30.0.1 3916 | jest-util: 30.0.2 3917 | jest-worker: 30.0.2 3918 | micromatch: 4.0.8 3919 | walker: 1.0.8 3920 | optionalDependencies: 3921 | fsevents: 2.3.3 3922 | 3923 | jest-leak-detector@30.0.2: 3924 | dependencies: 3925 | '@jest/get-type': 30.0.1 3926 | pretty-format: 30.0.2 3927 | 3928 | jest-matcher-utils@30.0.4: 3929 | dependencies: 3930 | '@jest/get-type': 30.0.1 3931 | chalk: 4.1.2 3932 | jest-diff: 30.0.4 3933 | pretty-format: 30.0.2 3934 | 3935 | jest-message-util@29.7.0: 3936 | dependencies: 3937 | '@babel/code-frame': 7.27.1 3938 | '@jest/types': 29.6.3 3939 | '@types/stack-utils': 2.0.3 3940 | chalk: 4.1.2 3941 | graceful-fs: 4.2.11 3942 | micromatch: 4.0.8 3943 | pretty-format: 29.7.0 3944 | slash: 3.0.0 3945 | stack-utils: 2.0.6 3946 | 3947 | jest-message-util@30.0.2: 3948 | dependencies: 3949 | '@babel/code-frame': 7.27.1 3950 | '@jest/types': 30.0.1 3951 | '@types/stack-utils': 2.0.3 3952 | chalk: 4.1.2 3953 | graceful-fs: 4.2.11 3954 | micromatch: 4.0.8 3955 | pretty-format: 30.0.2 3956 | slash: 3.0.0 3957 | stack-utils: 2.0.6 3958 | 3959 | jest-mock@29.5.0: 3960 | dependencies: 3961 | '@jest/types': 29.6.3 3962 | '@types/node': 24.3.0 3963 | jest-util: 29.5.0 3964 | 3965 | jest-mock@30.0.2: 3966 | dependencies: 3967 | '@jest/types': 30.0.1 3968 | '@types/node': 24.3.0 3969 | jest-util: 30.0.2 3970 | 3971 | jest-pnp-resolver@1.2.3(jest-resolve@30.0.2): 3972 | optionalDependencies: 3973 | jest-resolve: 30.0.2 3974 | 3975 | jest-regex-util@30.0.1: {} 3976 | 3977 | jest-resolve-dependencies@30.0.4: 3978 | dependencies: 3979 | jest-regex-util: 30.0.1 3980 | jest-snapshot: 30.0.4 3981 | transitivePeerDependencies: 3982 | - supports-color 3983 | 3984 | jest-resolve@30.0.2: 3985 | dependencies: 3986 | chalk: 4.1.2 3987 | graceful-fs: 4.2.11 3988 | jest-haste-map: 30.0.2 3989 | jest-pnp-resolver: 1.2.3(jest-resolve@30.0.2) 3990 | jest-util: 30.0.2 3991 | jest-validate: 30.0.2 3992 | slash: 3.0.0 3993 | unrs-resolver: 1.11.1 3994 | 3995 | jest-runner@30.0.4: 3996 | dependencies: 3997 | '@jest/console': 30.0.4 3998 | '@jest/environment': 30.0.4 3999 | '@jest/test-result': 30.0.4 4000 | '@jest/transform': 30.0.4 4001 | '@jest/types': 30.0.1 4002 | '@types/node': 24.3.0 4003 | chalk: 4.1.2 4004 | emittery: 0.13.1 4005 | exit-x: 0.2.2 4006 | graceful-fs: 4.2.11 4007 | jest-docblock: 30.0.1 4008 | jest-environment-node: 30.0.4 4009 | jest-haste-map: 30.0.2 4010 | jest-leak-detector: 30.0.2 4011 | jest-message-util: 30.0.2 4012 | jest-resolve: 30.0.2 4013 | jest-runtime: 30.0.4 4014 | jest-util: 30.0.2 4015 | jest-watcher: 30.0.4 4016 | jest-worker: 30.0.2 4017 | p-limit: 3.1.0 4018 | source-map-support: 0.5.13 4019 | transitivePeerDependencies: 4020 | - supports-color 4021 | 4022 | jest-runtime@30.0.4: 4023 | dependencies: 4024 | '@jest/environment': 30.0.4 4025 | '@jest/fake-timers': 30.0.4 4026 | '@jest/globals': 30.0.4 4027 | '@jest/source-map': 30.0.1 4028 | '@jest/test-result': 30.0.4 4029 | '@jest/transform': 30.0.4 4030 | '@jest/types': 30.0.1 4031 | '@types/node': 24.3.0 4032 | chalk: 4.1.2 4033 | cjs-module-lexer: 2.1.0 4034 | collect-v8-coverage: 1.0.2 4035 | glob: 10.4.5 4036 | graceful-fs: 4.2.11 4037 | jest-haste-map: 30.0.2 4038 | jest-message-util: 30.0.2 4039 | jest-mock: 30.0.2 4040 | jest-regex-util: 30.0.1 4041 | jest-resolve: 30.0.2 4042 | jest-snapshot: 30.0.4 4043 | jest-util: 30.0.2 4044 | slash: 3.0.0 4045 | strip-bom: 4.0.0 4046 | transitivePeerDependencies: 4047 | - supports-color 4048 | 4049 | jest-snapshot@30.0.4: 4050 | dependencies: 4051 | '@babel/core': 7.28.0 4052 | '@babel/generator': 7.28.3 4053 | '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) 4054 | '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) 4055 | '@babel/types': 7.28.2 4056 | '@jest/expect-utils': 30.0.4 4057 | '@jest/get-type': 30.0.1 4058 | '@jest/snapshot-utils': 30.0.4 4059 | '@jest/transform': 30.0.4 4060 | '@jest/types': 30.0.1 4061 | babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.0) 4062 | chalk: 4.1.2 4063 | expect: 30.0.4 4064 | graceful-fs: 4.2.11 4065 | jest-diff: 30.0.4 4066 | jest-matcher-utils: 30.0.4 4067 | jest-message-util: 30.0.2 4068 | jest-util: 30.0.2 4069 | pretty-format: 30.0.2 4070 | semver: 7.7.2 4071 | synckit: 0.11.8 4072 | transitivePeerDependencies: 4073 | - supports-color 4074 | 4075 | jest-util@29.5.0: 4076 | dependencies: 4077 | '@jest/types': 29.6.3 4078 | '@types/node': 24.3.0 4079 | chalk: 4.1.2 4080 | ci-info: 3.9.0 4081 | graceful-fs: 4.2.11 4082 | picomatch: 2.3.1 4083 | 4084 | jest-util@30.0.2: 4085 | dependencies: 4086 | '@jest/types': 30.0.1 4087 | '@types/node': 24.3.0 4088 | chalk: 4.1.2 4089 | ci-info: 4.2.0 4090 | graceful-fs: 4.2.11 4091 | picomatch: 4.0.2 4092 | 4093 | jest-validate@30.0.2: 4094 | dependencies: 4095 | '@jest/get-type': 30.0.1 4096 | '@jest/types': 30.0.1 4097 | camelcase: 6.3.0 4098 | chalk: 4.1.2 4099 | leven: 3.1.0 4100 | pretty-format: 30.0.2 4101 | 4102 | jest-watcher@30.0.4: 4103 | dependencies: 4104 | '@jest/test-result': 30.0.4 4105 | '@jest/types': 30.0.1 4106 | '@types/node': 24.3.0 4107 | ansi-escapes: 4.3.2 4108 | chalk: 4.1.2 4109 | emittery: 0.13.1 4110 | jest-util: 30.0.2 4111 | string-length: 4.0.2 4112 | 4113 | jest-worker@30.0.2: 4114 | dependencies: 4115 | '@types/node': 24.3.0 4116 | '@ungap/structured-clone': 1.3.0 4117 | jest-util: 30.0.2 4118 | merge-stream: 2.0.0 4119 | supports-color: 8.1.1 4120 | 4121 | jest@30.0.4(@types/node@24.3.0): 4122 | dependencies: 4123 | '@jest/core': 30.0.4 4124 | '@jest/types': 30.0.1 4125 | import-local: 3.2.0 4126 | jest-cli: 30.0.4(@types/node@24.3.0) 4127 | transitivePeerDependencies: 4128 | - '@types/node' 4129 | - babel-plugin-macros 4130 | - esbuild-register 4131 | - supports-color 4132 | - ts-node 4133 | 4134 | joycon@3.1.1: {} 4135 | 4136 | js-tokens@4.0.0: {} 4137 | 4138 | js-yaml@3.14.1: 4139 | dependencies: 4140 | argparse: 1.0.10 4141 | esprima: 4.0.1 4142 | 4143 | js-yaml@4.1.0: 4144 | dependencies: 4145 | argparse: 2.0.1 4146 | 4147 | jsesc@3.1.0: {} 4148 | 4149 | json-buffer@3.0.1: {} 4150 | 4151 | json-parse-even-better-errors@2.3.1: {} 4152 | 4153 | json-schema-traverse@0.4.1: {} 4154 | 4155 | json-stable-stringify-without-jsonify@1.0.1: {} 4156 | 4157 | json5@2.2.3: {} 4158 | 4159 | keyv@4.5.4: 4160 | dependencies: 4161 | json-buffer: 3.0.1 4162 | 4163 | leven@3.1.0: {} 4164 | 4165 | levn@0.4.1: 4166 | dependencies: 4167 | prelude-ls: 1.2.1 4168 | type-check: 0.4.0 4169 | 4170 | lilconfig@3.1.3: {} 4171 | 4172 | lines-and-columns@1.2.4: {} 4173 | 4174 | load-tsconfig@0.2.5: {} 4175 | 4176 | locate-path@5.0.0: 4177 | dependencies: 4178 | p-locate: 4.1.0 4179 | 4180 | locate-path@6.0.0: 4181 | dependencies: 4182 | p-locate: 5.0.0 4183 | 4184 | lodash.memoize@4.1.2: {} 4185 | 4186 | lodash.merge@4.6.2: {} 4187 | 4188 | lodash.sortby@4.7.0: {} 4189 | 4190 | lru-cache@10.4.3: {} 4191 | 4192 | lru-cache@5.1.1: 4193 | dependencies: 4194 | yallist: 3.1.1 4195 | 4196 | luxon@3.7.1: {} 4197 | 4198 | magic-string@0.30.17: 4199 | dependencies: 4200 | '@jridgewell/sourcemap-codec': 1.5.4 4201 | 4202 | make-dir@4.0.0: 4203 | dependencies: 4204 | semver: 7.7.2 4205 | 4206 | make-error@1.3.6: {} 4207 | 4208 | makeerror@1.0.12: 4209 | dependencies: 4210 | tmpl: 1.0.5 4211 | 4212 | merge-stream@2.0.0: {} 4213 | 4214 | merge2@1.4.1: {} 4215 | 4216 | micromatch@4.0.8: 4217 | dependencies: 4218 | braces: 3.0.3 4219 | picomatch: 2.3.1 4220 | 4221 | mimic-fn@2.1.0: {} 4222 | 4223 | minimatch@3.1.2: 4224 | dependencies: 4225 | brace-expansion: 1.1.12 4226 | 4227 | minimatch@5.1.6: 4228 | dependencies: 4229 | brace-expansion: 2.0.2 4230 | 4231 | minimatch@9.0.5: 4232 | dependencies: 4233 | brace-expansion: 2.0.2 4234 | 4235 | minipass@7.1.2: {} 4236 | 4237 | mlly@1.7.4: 4238 | dependencies: 4239 | acorn: 8.15.0 4240 | pathe: 2.0.3 4241 | pkg-types: 1.3.1 4242 | ufo: 1.6.1 4243 | 4244 | ms@2.1.3: {} 4245 | 4246 | mvdan-sh@0.10.1: {} 4247 | 4248 | mz@2.7.0: 4249 | dependencies: 4250 | any-promise: 1.3.0 4251 | object-assign: 4.1.1 4252 | thenify-all: 1.6.0 4253 | 4254 | napi-postinstall@0.3.3: {} 4255 | 4256 | natural-compare@1.4.0: {} 4257 | 4258 | node-int64@0.4.0: {} 4259 | 4260 | node-releases@2.0.19: {} 4261 | 4262 | normalize-path@3.0.0: {} 4263 | 4264 | npm-run-path@4.0.1: 4265 | dependencies: 4266 | path-key: 3.1.1 4267 | 4268 | object-assign@4.1.1: {} 4269 | 4270 | once@1.4.0: 4271 | dependencies: 4272 | wrappy: 1.0.2 4273 | 4274 | onetime@5.1.2: 4275 | dependencies: 4276 | mimic-fn: 2.1.0 4277 | 4278 | optionator@0.9.4: 4279 | dependencies: 4280 | deep-is: 0.1.4 4281 | fast-levenshtein: 2.0.6 4282 | levn: 0.4.1 4283 | prelude-ls: 1.2.1 4284 | type-check: 0.4.0 4285 | word-wrap: 1.2.5 4286 | 4287 | p-limit@2.3.0: 4288 | dependencies: 4289 | p-try: 2.2.0 4290 | 4291 | p-limit@3.1.0: 4292 | dependencies: 4293 | yocto-queue: 0.1.0 4294 | 4295 | p-locate@4.1.0: 4296 | dependencies: 4297 | p-limit: 2.3.0 4298 | 4299 | p-locate@5.0.0: 4300 | dependencies: 4301 | p-limit: 3.1.0 4302 | 4303 | p-try@2.2.0: {} 4304 | 4305 | package-json-from-dist@1.0.1: {} 4306 | 4307 | parent-module@1.0.1: 4308 | dependencies: 4309 | callsites: 3.1.0 4310 | 4311 | parse-json@5.2.0: 4312 | dependencies: 4313 | '@babel/code-frame': 7.27.1 4314 | error-ex: 1.3.2 4315 | json-parse-even-better-errors: 2.3.1 4316 | lines-and-columns: 1.2.4 4317 | 4318 | path-exists@4.0.0: {} 4319 | 4320 | path-is-absolute@1.0.1: {} 4321 | 4322 | path-key@3.1.1: {} 4323 | 4324 | path-scurry@1.11.1: 4325 | dependencies: 4326 | lru-cache: 10.4.3 4327 | minipass: 7.1.2 4328 | 4329 | pathe@2.0.3: {} 4330 | 4331 | picocolors@1.1.1: {} 4332 | 4333 | picomatch@2.3.1: {} 4334 | 4335 | picomatch@4.0.2: {} 4336 | 4337 | pirates@4.0.7: {} 4338 | 4339 | pkg-dir@4.2.0: 4340 | dependencies: 4341 | find-up: 4.1.0 4342 | 4343 | pkg-types@1.3.1: 4344 | dependencies: 4345 | confbox: 0.1.8 4346 | mlly: 1.7.4 4347 | pathe: 2.0.3 4348 | 4349 | postcss-load-config@6.0.1: 4350 | dependencies: 4351 | lilconfig: 3.1.3 4352 | 4353 | prelude-ls@1.2.1: {} 4354 | 4355 | prettier-plugin-packagejson@2.5.6(prettier@3.6.2): 4356 | dependencies: 4357 | sort-package-json: 2.12.0 4358 | synckit: 0.9.2 4359 | optionalDependencies: 4360 | prettier: 3.6.2 4361 | 4362 | prettier-plugin-sh@0.14.0(prettier@3.6.2): 4363 | dependencies: 4364 | mvdan-sh: 0.10.1 4365 | prettier: 3.6.2 4366 | sh-syntax: 0.4.2 4367 | 4368 | prettier@3.6.2: {} 4369 | 4370 | pretty-format@29.7.0: 4371 | dependencies: 4372 | '@jest/schemas': 29.6.3 4373 | ansi-styles: 5.2.0 4374 | react-is: 18.3.1 4375 | 4376 | pretty-format@30.0.2: 4377 | dependencies: 4378 | '@jest/schemas': 30.0.1 4379 | ansi-styles: 5.2.0 4380 | react-is: 18.3.1 4381 | 4382 | punycode@2.3.1: {} 4383 | 4384 | pure-rand@7.0.1: {} 4385 | 4386 | queue-microtask@1.2.3: {} 4387 | 4388 | react-is@18.3.1: {} 4389 | 4390 | readdirp@4.1.2: {} 4391 | 4392 | require-directory@2.1.1: {} 4393 | 4394 | resolve-cwd@3.0.0: 4395 | dependencies: 4396 | resolve-from: 5.0.0 4397 | 4398 | resolve-from@4.0.0: {} 4399 | 4400 | resolve-from@5.0.0: {} 4401 | 4402 | reusify@1.1.0: {} 4403 | 4404 | rollup@4.44.2: 4405 | dependencies: 4406 | '@types/estree': 1.0.8 4407 | optionalDependencies: 4408 | '@rollup/rollup-android-arm-eabi': 4.44.2 4409 | '@rollup/rollup-android-arm64': 4.44.2 4410 | '@rollup/rollup-darwin-arm64': 4.44.2 4411 | '@rollup/rollup-darwin-x64': 4.44.2 4412 | '@rollup/rollup-freebsd-arm64': 4.44.2 4413 | '@rollup/rollup-freebsd-x64': 4.44.2 4414 | '@rollup/rollup-linux-arm-gnueabihf': 4.44.2 4415 | '@rollup/rollup-linux-arm-musleabihf': 4.44.2 4416 | '@rollup/rollup-linux-arm64-gnu': 4.44.2 4417 | '@rollup/rollup-linux-arm64-musl': 4.44.2 4418 | '@rollup/rollup-linux-loongarch64-gnu': 4.44.2 4419 | '@rollup/rollup-linux-powerpc64le-gnu': 4.44.2 4420 | '@rollup/rollup-linux-riscv64-gnu': 4.44.2 4421 | '@rollup/rollup-linux-riscv64-musl': 4.44.2 4422 | '@rollup/rollup-linux-s390x-gnu': 4.44.2 4423 | '@rollup/rollup-linux-x64-gnu': 4.44.2 4424 | '@rollup/rollup-linux-x64-musl': 4.44.2 4425 | '@rollup/rollup-win32-arm64-msvc': 4.44.2 4426 | '@rollup/rollup-win32-ia32-msvc': 4.44.2 4427 | '@rollup/rollup-win32-x64-msvc': 4.44.2 4428 | fsevents: 2.3.3 4429 | 4430 | run-parallel@1.2.0: 4431 | dependencies: 4432 | queue-microtask: 1.2.3 4433 | 4434 | semver@6.3.1: {} 4435 | 4436 | semver@7.7.2: {} 4437 | 4438 | sh-syntax@0.4.2: 4439 | dependencies: 4440 | tslib: 2.8.1 4441 | 4442 | shebang-command@2.0.0: 4443 | dependencies: 4444 | shebang-regex: 3.0.0 4445 | 4446 | shebang-regex@3.0.0: {} 4447 | 4448 | signal-exit@3.0.7: {} 4449 | 4450 | signal-exit@4.1.0: {} 4451 | 4452 | slash@3.0.0: {} 4453 | 4454 | sort-object-keys@1.1.3: {} 4455 | 4456 | sort-package-json@2.12.0: 4457 | dependencies: 4458 | detect-indent: 7.0.1 4459 | detect-newline: 4.0.1 4460 | get-stdin: 9.0.0 4461 | git-hooks-list: 3.2.0 4462 | is-plain-obj: 4.1.0 4463 | semver: 7.7.2 4464 | sort-object-keys: 1.1.3 4465 | tinyglobby: 0.2.14 4466 | 4467 | source-map-support@0.5.13: 4468 | dependencies: 4469 | buffer-from: 1.1.2 4470 | source-map: 0.6.1 4471 | 4472 | source-map@0.6.1: {} 4473 | 4474 | source-map@0.8.0-beta.0: 4475 | dependencies: 4476 | whatwg-url: 7.1.0 4477 | 4478 | sprintf-js@1.0.3: {} 4479 | 4480 | stack-utils@2.0.6: 4481 | dependencies: 4482 | escape-string-regexp: 2.0.0 4483 | 4484 | string-length@4.0.2: 4485 | dependencies: 4486 | char-regex: 1.0.2 4487 | strip-ansi: 6.0.1 4488 | 4489 | string-width@4.2.3: 4490 | dependencies: 4491 | emoji-regex: 8.0.0 4492 | is-fullwidth-code-point: 3.0.0 4493 | strip-ansi: 6.0.1 4494 | 4495 | string-width@5.1.2: 4496 | dependencies: 4497 | eastasianwidth: 0.2.0 4498 | emoji-regex: 9.2.2 4499 | strip-ansi: 7.1.0 4500 | 4501 | strip-ansi@6.0.1: 4502 | dependencies: 4503 | ansi-regex: 5.0.1 4504 | 4505 | strip-ansi@7.1.0: 4506 | dependencies: 4507 | ansi-regex: 6.1.0 4508 | 4509 | strip-bom@4.0.0: {} 4510 | 4511 | strip-final-newline@2.0.0: {} 4512 | 4513 | strip-json-comments@3.1.1: {} 4514 | 4515 | sucrase@3.35.0: 4516 | dependencies: 4517 | '@jridgewell/gen-mapping': 0.3.12 4518 | commander: 4.1.1 4519 | glob: 10.4.5 4520 | lines-and-columns: 1.2.4 4521 | mz: 2.7.0 4522 | pirates: 4.0.7 4523 | ts-interface-checker: 0.1.13 4524 | 4525 | supports-color@7.2.0: 4526 | dependencies: 4527 | has-flag: 4.0.0 4528 | 4529 | supports-color@8.1.1: 4530 | dependencies: 4531 | has-flag: 4.0.0 4532 | 4533 | synckit@0.11.8: 4534 | dependencies: 4535 | '@pkgr/core': 0.2.7 4536 | 4537 | synckit@0.9.2: 4538 | dependencies: 4539 | '@pkgr/core': 0.1.2 4540 | tslib: 2.8.1 4541 | 4542 | test-exclude@6.0.0: 4543 | dependencies: 4544 | '@istanbuljs/schema': 0.1.3 4545 | glob: 7.2.3 4546 | minimatch: 3.1.2 4547 | 4548 | thenify-all@1.6.0: 4549 | dependencies: 4550 | thenify: 3.3.1 4551 | 4552 | thenify@3.3.1: 4553 | dependencies: 4554 | any-promise: 1.3.0 4555 | 4556 | tinyexec@0.3.2: {} 4557 | 4558 | tinyglobby@0.2.14: 4559 | dependencies: 4560 | fdir: 6.4.6(picomatch@4.0.2) 4561 | picomatch: 4.0.2 4562 | 4563 | tmpl@1.0.5: {} 4564 | 4565 | to-regex-range@5.0.1: 4566 | dependencies: 4567 | is-number: 7.0.0 4568 | 4569 | tr46@1.0.1: 4570 | dependencies: 4571 | punycode: 2.3.1 4572 | 4573 | tree-kill@1.2.2: {} 4574 | 4575 | ts-api-utils@2.1.0(typescript@5.9.2): 4576 | dependencies: 4577 | typescript: 5.9.2 4578 | 4579 | ts-interface-checker@0.1.13: {} 4580 | 4581 | ts-jest@29.4.0(@babel/core@7.28.0)(@jest/transform@30.0.4)(@jest/types@30.0.1)(babel-jest@30.0.4(@babel/core@7.28.0))(esbuild@0.25.9)(jest-util@30.0.2)(jest@30.0.4(@types/node@24.3.0))(typescript@5.9.2): 4582 | dependencies: 4583 | bs-logger: 0.2.6 4584 | ejs: 3.1.10 4585 | fast-json-stable-stringify: 2.1.0 4586 | jest: 30.0.4(@types/node@24.3.0) 4587 | json5: 2.2.3 4588 | lodash.memoize: 4.1.2 4589 | make-error: 1.3.6 4590 | semver: 7.7.2 4591 | type-fest: 4.41.0 4592 | typescript: 5.9.2 4593 | yargs-parser: 21.1.1 4594 | optionalDependencies: 4595 | '@babel/core': 7.28.0 4596 | '@jest/transform': 30.0.4 4597 | '@jest/types': 30.0.1 4598 | babel-jest: 30.0.4(@babel/core@7.28.0) 4599 | esbuild: 0.25.9 4600 | jest-util: 30.0.2 4601 | 4602 | tslib@2.8.1: {} 4603 | 4604 | tsup@8.5.0(typescript@5.9.2): 4605 | dependencies: 4606 | bundle-require: 5.1.0(esbuild@0.25.9) 4607 | cac: 6.7.14 4608 | chokidar: 4.0.3 4609 | consola: 3.4.2 4610 | debug: 4.4.1 4611 | esbuild: 0.25.9 4612 | fix-dts-default-cjs-exports: 1.0.1 4613 | joycon: 3.1.1 4614 | picocolors: 1.1.1 4615 | postcss-load-config: 6.0.1 4616 | resolve-from: 5.0.0 4617 | rollup: 4.44.2 4618 | source-map: 0.8.0-beta.0 4619 | sucrase: 3.35.0 4620 | tinyexec: 0.3.2 4621 | tinyglobby: 0.2.14 4622 | tree-kill: 1.2.2 4623 | optionalDependencies: 4624 | typescript: 5.9.2 4625 | transitivePeerDependencies: 4626 | - jiti 4627 | - supports-color 4628 | - tsx 4629 | - yaml 4630 | 4631 | type-check@0.4.0: 4632 | dependencies: 4633 | prelude-ls: 1.2.1 4634 | 4635 | type-detect@4.0.8: {} 4636 | 4637 | type-fest@0.21.3: {} 4638 | 4639 | type-fest@4.41.0: {} 4640 | 4641 | typescript-eslint@8.41.0(eslint@9.34.0)(typescript@5.9.2): 4642 | dependencies: 4643 | '@typescript-eslint/eslint-plugin': 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2) 4644 | '@typescript-eslint/parser': 8.41.0(eslint@9.34.0)(typescript@5.9.2) 4645 | '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) 4646 | '@typescript-eslint/utils': 8.41.0(eslint@9.34.0)(typescript@5.9.2) 4647 | eslint: 9.34.0 4648 | typescript: 5.9.2 4649 | transitivePeerDependencies: 4650 | - supports-color 4651 | 4652 | typescript@5.9.2: {} 4653 | 4654 | ufo@1.6.1: {} 4655 | 4656 | undici-types@7.10.0: {} 4657 | 4658 | unrs-resolver@1.11.1: 4659 | dependencies: 4660 | napi-postinstall: 0.3.3 4661 | optionalDependencies: 4662 | '@unrs/resolver-binding-android-arm-eabi': 1.11.1 4663 | '@unrs/resolver-binding-android-arm64': 1.11.1 4664 | '@unrs/resolver-binding-darwin-arm64': 1.11.1 4665 | '@unrs/resolver-binding-darwin-x64': 1.11.1 4666 | '@unrs/resolver-binding-freebsd-x64': 1.11.1 4667 | '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 4668 | '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 4669 | '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 4670 | '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 4671 | '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 4672 | '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 4673 | '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 4674 | '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 4675 | '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 4676 | '@unrs/resolver-binding-linux-x64-musl': 1.11.1 4677 | '@unrs/resolver-binding-wasm32-wasi': 1.11.1 4678 | '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 4679 | '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 4680 | '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 4681 | 4682 | update-browserslist-db@1.1.3(browserslist@4.25.1): 4683 | dependencies: 4684 | browserslist: 4.25.1 4685 | escalade: 3.2.0 4686 | picocolors: 1.1.1 4687 | 4688 | uri-js@4.4.1: 4689 | dependencies: 4690 | punycode: 2.3.1 4691 | 4692 | v8-to-istanbul@9.3.0: 4693 | dependencies: 4694 | '@jridgewell/trace-mapping': 0.3.29 4695 | '@types/istanbul-lib-coverage': 2.0.6 4696 | convert-source-map: 2.0.0 4697 | 4698 | walker@1.0.8: 4699 | dependencies: 4700 | makeerror: 1.0.12 4701 | 4702 | webidl-conversions@4.0.2: {} 4703 | 4704 | whatwg-url@7.1.0: 4705 | dependencies: 4706 | lodash.sortby: 4.7.0 4707 | tr46: 1.0.1 4708 | webidl-conversions: 4.0.2 4709 | 4710 | which@2.0.2: 4711 | dependencies: 4712 | isexe: 2.0.0 4713 | 4714 | word-wrap@1.2.5: {} 4715 | 4716 | wrap-ansi@7.0.0: 4717 | dependencies: 4718 | ansi-styles: 4.3.0 4719 | string-width: 4.2.3 4720 | strip-ansi: 6.0.1 4721 | 4722 | wrap-ansi@8.1.0: 4723 | dependencies: 4724 | ansi-styles: 6.2.1 4725 | string-width: 5.1.2 4726 | strip-ansi: 7.1.0 4727 | 4728 | wrappy@1.0.2: {} 4729 | 4730 | write-file-atomic@5.0.1: 4731 | dependencies: 4732 | imurmurhash: 0.1.4 4733 | signal-exit: 4.1.0 4734 | 4735 | y18n@5.0.8: {} 4736 | 4737 | yallist@3.1.1: {} 4738 | 4739 | yargs-parser@21.1.1: {} 4740 | 4741 | yargs@17.7.2: 4742 | dependencies: 4743 | cliui: 8.0.1 4744 | escalade: 3.2.0 4745 | get-caller-file: 2.0.5 4746 | require-directory: 2.1.1 4747 | string-width: 4.2.3 4748 | y18n: 5.0.8 4749 | yargs-parser: 21.1.1 4750 | 4751 | yocto-queue@0.1.0: {} 4752 | --------------------------------------------------------------------------------