├── .gitignore ├── tsconfig.node.json ├── tsconfig.json ├── vite.iife.config.ts ├── src ├── resolved-utils.ts ├── errors.ts ├── index.ts ├── BetterPromise.test.ts └── BetterPromise.ts ├── vite.config.ts ├── tsconfig.build.json ├── LICENSE ├── package.json ├── README.md └── pnpm-lock.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .idea 3 | dist 4 | coverage -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.build.json", 3 | "compilerOptions": { 4 | "composite": true 5 | }, 6 | "include": [ 7 | "build" 8 | ] 9 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "./tsconfig.build.json", 4 | "references": [ 5 | { 6 | "path": "./tsconfig.node.json" 7 | } 8 | ] 9 | } -------------------------------------------------------------------------------- /vite.iife.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | 3 | export default defineConfig({ 4 | build: { 5 | outDir: 'dist', 6 | emptyOutDir: false, 7 | sourcemap: true, 8 | lib: { 9 | name: 'betterPromises', 10 | entry: 'src/index.ts', 11 | formats: ['iife'], 12 | fileName: 'index', 13 | }, 14 | }, 15 | }); -------------------------------------------------------------------------------- /src/resolved-utils.ts: -------------------------------------------------------------------------------- 1 | const tag = Symbol('resolved'); 2 | 3 | export interface Resolved { 4 | tag: symbol; 5 | value: T; 6 | } 7 | 8 | export function isResolved(value: unknown): value is Resolved { 9 | return typeof value === 'object' 10 | && !!value 11 | && 'tag' in value 12 | && value.tag === tag; 13 | } 14 | 15 | export function withResolved(value: T): Resolved { 16 | return { tag, value }; 17 | } -------------------------------------------------------------------------------- /src/errors.ts: -------------------------------------------------------------------------------- 1 | import { errorClass, errorClassWithData } from 'error-kid'; 2 | 3 | export class CancelledError extends errorClass('CancelledError', 'Promise was canceled') { 4 | } 5 | 6 | export class TimeoutError extends errorClassWithData< 7 | { timeout: number }, 8 | [timeout: number, cause?: unknown] 9 | >( 10 | 'TimeoutError', 11 | timeout => ({ timeout }), 12 | (timeout, cause) => [`Timeout reached: ${timeout}ms`, { cause }], 13 | ) { 14 | } -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { 2 | BetterPromise, 3 | type BetterPromiseResolveFn, 4 | type BetterPromiseExecutorFn, 5 | type BetterPromiseExecutorContext, 6 | type BetterPromiseOnFulfilledFn, 7 | type BetterPromiseOptions, 8 | type BetterPromiseRejectReason, 9 | type BetterPromiseOnRejectedFn, 10 | type BetterPromiseRejectFn, 11 | } from './BetterPromise.js'; 12 | export { CancelledError, TimeoutError } from './errors.js'; 13 | export { type Resolved, isResolved, withResolved } from './resolved-utils.js'; 14 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vitest/config'; 2 | import dts from 'vite-plugin-dts'; 3 | 4 | export default defineConfig({ 5 | plugins: [ 6 | dts({ outDir: 'dist/dts', tsconfigPath: './tsconfig.build.json' }), 7 | ], 8 | build: { 9 | outDir: 'dist', 10 | emptyOutDir: false, 11 | sourcemap: true, 12 | lib: { 13 | entry: 'src/index.ts', 14 | formats: ['es', 'cjs'], 15 | fileName: 'index', 16 | }, 17 | }, 18 | test: { 19 | coverage: { 20 | enabled: true, 21 | provider: 'v8', 22 | include: ['src/**/*.ts'], 23 | exclude: ['src/**/*.test.ts', 'src/**/index.ts'], 24 | thresholds: { 25 | branches: 80, 26 | functions: 80, 27 | statements: 80, 28 | lines: 80, 29 | }, 30 | }, 31 | }, 32 | }); -------------------------------------------------------------------------------- /tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "compilerOptions": { 4 | "declaration": false, 5 | "esModuleInterop": true, 6 | "forceConsistentCasingInFileNames": true, 7 | "inlineSources": true, 8 | "isolatedModules": true, 9 | "lib": [ 10 | "dom", 11 | "esnext" 12 | ], 13 | "module": "NodeNext", 14 | "moduleResolution": "NodeNext", 15 | "noUnusedLocals": true, 16 | "noUnusedParameters": true, 17 | "outDir": "dist", 18 | "preserveWatchOutput": true, 19 | "resolveJsonModule": true, 20 | "skipLibCheck": true, 21 | "sourceMap": true, 22 | "strict": true, 23 | "target": "ESNext", 24 | "useDefineForClassFields": true 25 | }, 26 | "include": [ 27 | "src" 28 | ], 29 | "exclude": [ 30 | "src/**/*.test.ts" 31 | ] 32 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Vladislav Kibenko 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 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "better-promises", 3 | "version": "1.0.0", 4 | "description": "JavaScript's Promise extension you may find useful during development.", 5 | "author": "Vladislav Kibenko ", 6 | "homepage": "https://github.com/heyqbnk/better-promises#readme", 7 | "repository": { 8 | "type": "git", 9 | "url": "git@github.com:heyqbnk/better-promises.git" 10 | }, 11 | "bugs": { 12 | "url": "https://github.com/heyqbnk/better-promises/issues" 13 | }, 14 | "keywords": [ 15 | "promise", 16 | "async" 17 | ], 18 | "license": "MIT", 19 | "type": "module", 20 | "sideEffects": false, 21 | "files": [ 22 | "dist" 23 | ], 24 | "main": "./dist/index.cjs", 25 | "module": "./dist/index.js", 26 | "types": "./dist/dts/index.d.ts", 27 | "exports": { 28 | ".": { 29 | "types": "./dist/dts/index.d.ts", 30 | "import": "./dist/index.js", 31 | "require": "./dist/index.cjs", 32 | "default": "./dist/index.cjs" 33 | } 34 | }, 35 | "scripts": { 36 | "test": "vitest --run", 37 | "lint": "eslint src --ignore-pattern **/*.test.ts", 38 | "lint:fix": "pnpm run lint --fix", 39 | "typecheck": "tsc --noEmit -p tsconfig.build.json", 40 | "build": "rimraf dist && pnpm run build:default && pnpm run build:iife", 41 | "build:default": "vite build -c vite.config.ts", 42 | "build:iife": "vite build -c vite.iife.config.ts", 43 | "prepublish": "pnpm run build" 44 | }, 45 | "devDependencies": { 46 | "@changesets/cli": "^2.27.8", 47 | "@eslint/js": "^9.11.1", 48 | "@vitest/coverage-v8": "^2.1.2", 49 | "@vitest/ui": "^2.1.2", 50 | "eslint": "^9.11.1", 51 | "rimraf": "^6.0.1", 52 | "typescript": "^5.8.3", 53 | "typescript-eslint": "^8.8.0", 54 | "vite": "^5.4.8", 55 | "vite-plugin-dts": "^4.2.3", 56 | "vitest": "^2.1.2" 57 | }, 58 | "dependencies": { 59 | "error-kid": "^1.0.1" 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # `better-promises` 2 | 3 | [code-badge]: https://img.shields.io/badge/source-black?logo=github 4 | 5 | [link]: https://github.com/heyqbnk/better-promises/tree/master 6 | 7 | [npm-link]: https://npmjs.com/package/better-promises 8 | 9 | [npm-badge]: https://img.shields.io/npm/v/better-promises?logo=npm 10 | 11 | [size-badge]: https://img.shields.io/bundlephobia/minzip/better-promises 12 | 13 | [![NPM][npm-badge]][npm-link] 14 | ![Size][size-badge] 15 | [![code-badge]][link] 16 | 17 | JavaScript's `Promise` enhanced, flexible version you may find useful in your project. 18 | 19 | ## Installation 20 | 21 | ```bash 22 | # yarn 23 | yarn add better-promises 24 | 25 | # pnpm 26 | pnpm i better-promises 27 | 28 | # npm 29 | npm i better-promises 30 | ``` 31 | 32 | ## Creating 33 | 34 | The `BetterPromise` class has several ways of creating its instance. 35 | 36 | - **Using no arguments at all** 37 | 38 | ```ts 39 | import { BetterPromise } from 'better-promises'; 40 | 41 | const promise = new BetterPromise(); 42 | ``` 43 | 44 | - **Using options only** 45 | 46 | ```ts 47 | const controller = new AbortController(); 48 | const promise = new BetterPromise({ 49 | abortSignal: controller.signal, 50 | timeout: 3000 51 | }); 52 | ``` 53 | 54 | - **Using the promise executor**. In this case the executor will receive an additional 55 | argument representing the execution context (you will learn about it later). 56 | 57 | ```ts 58 | const promise = new BetterPromise((resolve, reject, context) => { 59 | // .. 60 | }); 61 | ``` 62 | 63 | - **Using both executor and options**. 64 | 65 | ```ts 66 | const controller = new AbortController(); 67 | const promise = new BetterPromise((resolve, reject, context) => { 68 | // .. 69 | }, { 70 | abortSignal: controller.signal, 71 | timeout: 3000, 72 | }); 73 | ``` 74 | 75 | When the promise was resolved or rejected, the executor receives a corresponding event: 76 | 77 | ```ts 78 | new BetterPromise((resolve, reject, context) => { 79 | context.on('rejected', reason => { 80 | // ... 81 | }); 82 | context.on('resolved', result => { 83 | // ... 84 | }); 85 | context.on('finalized', result => { 86 | // ... 87 | }); 88 | }); 89 | ``` 90 | 91 | Now, let's learn more about its executor and execution context. 92 | 93 | ## Execution Context 94 | 95 | **Executor** is a function, passed to the promise constructor. **Execution context** is an additional 96 | argument passed to the executor. It contains useful data that executor may use. 97 | 98 | ### `readonly abortSignal: unknown` 99 | 100 | Abort signal created by the promise. You can use this in order to know when the promise was either rejected or 101 | resolved. You will likely need this value in order to pass it to some other abortable operations. 102 | 103 | ```typescript 104 | new BetterPromise((resolve, reject, { abortSignal }) => { 105 | abortSignal.onabort = () => { 106 | console.log('Promise was finalized:', abortSignal.reason); 107 | }; 108 | }); 109 | ``` 110 | 111 | ### `get isRejected(): boolean` 112 | 113 | Returns `true` if the promise was rejected. 114 | 115 | ```ts 116 | new BetterPromise((resolve, reject, context) => { 117 | console.log(context.isRejected); // false 118 | reject(); 119 | console.log(context.isRejected); // true 120 | }); 121 | ``` 122 | 123 | ### `get isResolved(): boolean` 124 | 125 | Returns `true` if the promise was resolved. 126 | 127 | ```ts 128 | new BetterPromise((resolve, reject, context) => { 129 | console.log(context.isResolved); // false 130 | resolve(); 131 | console.log(context.isResoled); // true 132 | }); 133 | ``` 134 | 135 | ### `on(event, listener): VoidFunction` 136 | 137 | Adds an event listener to one of the following events: 138 | 139 | - `resolved` - the payload will be a resolved value; 140 | - `rejected` - the payload will be a rejection reason; 141 | - `finalized` - the payload will be one of the following objects: 142 | - `{ kind: 'resolved', result: T }` 143 | - `{ kind: 'rejected', reason: TimeoutError | CancelledError | unknown }` 144 | 145 | ```typescript 146 | new BetterPromise((resolve, reject, context) => { 147 | context.on('resolved', result => { 148 | console.log(result); 149 | // Output: 123 150 | }); 151 | resolve(123); 152 | }); 153 | 154 | new BetterPromise((resolve, reject, context) => { 155 | context.on('rejected', reason => { 156 | console.log(reason); 157 | // Output: Error('test') 158 | }); 159 | resolve(new Error('test')) 160 | }); 161 | 162 | new BetterPromise((resolve, reject, context) => { 163 | context.on('finalized', value => { 164 | console.log(value); 165 | // Output: { kind: 'resolved', value: 123 } 166 | }); 167 | resolve(123) 168 | }); 169 | ``` 170 | 171 | Note that if the promise is already in fulfilled state, listeners bound to the `finalized` and `resolved` events will 172 | be called instantaneously. We can say the same about a rejected promise and trying to listen to the `rejected` event. 173 | 174 | ```typescript 175 | new BetterPromise((resolve, reject, context) => { 176 | resolve(123); 177 | 178 | // As long as the promise is already resolved at this moment, 179 | // the listener will be called instantenously, so you wouldn't 180 | // wait for it endlessly. 181 | context.on('resolved', result => { 182 | // ... 183 | }); 184 | }); 185 | ``` 186 | 187 | ### `get result(): T | undefined` 188 | 189 | Returns promise resolve result. 190 | 191 | ```typescript 192 | new BetterPromise((resolve, reject, context) => { 193 | console.log(context.result); // undefined 194 | resolve(123); 195 | console.log(context.result); // 123 196 | }); 197 | ``` 198 | 199 | ### `get rejectReason(): TimeoutError | CancelledError | unknown | undefined` 200 | 201 | Returns promise rejection reason. 202 | 203 | ```typescript 204 | new BetterPromise((resolve, reject, context) => { 205 | console.log(context.rejectReason); // undefined 206 | reject(new Error('test')); 207 | console.log(context.rejectReason); // Error('test') 208 | }); 209 | ``` 210 | 211 | ### `throwIfRejected(): void` 212 | 213 | Will throw an error if the promise is currently reject. The thrown error will be equal to the rejection reason. 214 | 215 | ```ts 216 | const controller = new AbortController(); 217 | controller.abort(new Error('Hey ho!')); 218 | 219 | new BetterPromise((resolve, reject, context) => { 220 | context.throwIfRejected(); 221 | }, { 222 | abortSignal: controller.signal, 223 | }) 224 | .catch(e => { 225 | console.log(e); 226 | // Output: Error('Hey ho!') 227 | }); 228 | ``` 229 | 230 | ## Options 231 | 232 | ### `abortSignal?: AbortSignal` 233 | 234 | An abort signal to let the promise know, it should abort the execution. 235 | 236 | ```ts 237 | const controller = new AbortController(); 238 | setTimeout(() => { 239 | controller.abort(new Error('Oops!')); 240 | }, 1000); 241 | 242 | const promise = new BetterPromise({ abortSignal: controller.signal }) 243 | .catch(e => { 244 | console.log(e); 245 | // Output: Error('Oops!') 246 | }); 247 | ``` 248 | 249 | ### `abortOnReject?: boolean = true` 250 | 251 | Should the `abortSignal` passed to the executor be aborted if the promise was rejected. 252 | 253 | By default, as long as there is no point to perform any operations at the moment of rejection, 254 | the signal will be aborted. 255 | 256 | To prevent the signal from being aborted, use the `false` value. 257 | 258 | ```typescript 259 | new BetterPromise((resolve, reject, context) => { 260 | context.abortSignal.onabort = () => { 261 | // This function will be called. 262 | }; 263 | reject(new Error('test')); 264 | }); 265 | 266 | new BetterPromise((resolve, reject, context) => { 267 | context.abortSignal.onabort = () => { 268 | // This function will NOT be called. 269 | }; 270 | reject(new Error('test')); 271 | }, { abortOnReject: false }); 272 | ``` 273 | 274 | ### `abortOnResolve?: boolean = true` 275 | 276 | Should the `abortSignal` passed to the executor be aborted if the promise was fulfilled. 277 | 278 | By default, as long as there is no point to perform any operations at the moment of resolve, the signal will be aborted. 279 | 280 | To prevent the signal from being aborted, use the `false` value. 281 | 282 | ```typescript 283 | new BetterPromise((resolve, reject, context) => { 284 | context.abortSignal.onabort = () => { 285 | // This function will be called. 286 | }; 287 | resolve(123) 288 | }); 289 | 290 | new BetterPromise((resolve, reject, context) => { 291 | context.abortSignal.onabort = () => { 292 | // This function will NOT be called. 293 | }; 294 | resolve(123) 295 | }, { abortOnResolve: false }); 296 | ``` 297 | 298 | To check if the abort reason represents a promise resolve result, use the `isResolved` function: 299 | 300 | ```typescript 301 | new BetterPromise((resolve, reject, context) => { 302 | context.abortSignal.onabort = () => { 303 | if (isResolved(context.abortSignal.reason)) { 304 | console.log(context.abortSignal.reason.value); 305 | // Output: 123 306 | } 307 | }; 308 | resolve(123) 309 | }); 310 | ``` 311 | 312 | ### `timeout?: number` 313 | 314 | Timeout in milliseconds after which the promise will be aborted with the `TimeoutError` error. 315 | 316 | ```ts 317 | const promise = new BetterPromise({ timeout: 1000 }) 318 | .catch(e => { 319 | if (TimeoutError.is(e)) { 320 | console.log(e); 321 | // Output: TimeoutError('Timed out: 1000ms') 322 | } 323 | }); 324 | ``` 325 | 326 | ## Methods 327 | 328 | In addition to standard promise methods (`then`, `catch`, and `finally`), `BetterPromise` 329 | introduces three new methods: `abort`, `reject` and `cancel`. It also provides a static 330 | method `fn`. 331 | 332 | ### `fn` 333 | 334 | The `fn` static method executes a function and resolves its result. 335 | 336 | The executed function receives the same execution context as when using the default way of 337 | using `BetterPromise` via constructor. 338 | 339 | The method optionally accepts options passed to the `BetterPromise` constructor. 340 | 341 | ```ts 342 | const controller = new AbortController(); 343 | const promise = BetterPromise.fn(context => 'Resolved!', { 344 | abortSignal: controller.signal, 345 | timeout: 3000, 346 | }); 347 | 348 | promise.then(console.log); // Output: 'Resolved!' 349 | 350 | const promise2 = BetterPromise.fn(() => { 351 | throw new Error('Nah :('); 352 | }); 353 | promise2.catch(console.error); // Output: Error('Nah :(') 354 | 355 | const promise3 = BetterPromise.fn(async () => { 356 | const r = await fetch('...'); 357 | return r.json(); 358 | }); 359 | // promise3 resolves with the fetched JSON body 360 | ``` 361 | 362 | ### `reject` 363 | 364 | The `reject` method rejects the initially created promise with a given reason. It is important to 365 | note that `reject` applies to the original promise, regardless of any chained promises. So, calling 366 | this method, only the initially created promise will be rejected to follow the expected flow. 367 | 368 | The expected flow is the flow when rejection was performed in the promise executor (the function, 369 | passed to the promise constructor), and then all chained callbacks (add via `catch(func)`) called. 370 | 371 | Here is the example: 372 | 373 | ```ts 374 | const promise = new BetterPromise(); 375 | const promise2 = promise.catch(e => { 376 | console.log('I got it!'); 377 | }); 378 | 379 | // Here calling promise.reject() and promise2.reject() 380 | // will have the same effect. We will see the log "I got it!" 381 | ``` 382 | 383 | A bit more real-world example: 384 | 385 | ```ts 386 | const promise = new BetterPromise((res, rej) => { 387 | return fetch('...').then(res, rej); 388 | }) 389 | .then(r => r.json()) 390 | .catch(e => { 391 | console.error('Something went wrong', e); 392 | }); 393 | 394 | // Imagine, that we want to reject the promise for some reason 395 | // and stop the execution. Calling the "reject" method we expect 396 | // the "rej" argument in the executor to be called, and then 397 | // call the "catch" method callback. 398 | 399 | promise.reject(new Error('Stop it! Get some help!')); 400 | // Output: 'Something went wrong', Error('Stop it! Get some help!') 401 | ``` 402 | 403 | ### `cancel` 404 | 405 | This method rejects the promise with `CancelledError`. 406 | 407 | ```ts 408 | new BetterPromise() 409 | .catch(e => { 410 | if (CancelledError.is(e)) { 411 | console.log('Canceled'); 412 | } 413 | }) 414 | .cancel(); 415 | // Output: Canceled. 416 | ``` 417 | 418 | ### `resolve` 419 | 420 | This method resolves the promise with the specified result. 421 | 422 | ```ts 423 | const promise = new ManualPromise(); 424 | promise.then(console.log); 425 | // Output: 'Done!' 426 | 427 | promise.resolve('Done!'); 428 | ``` 429 | -------------------------------------------------------------------------------- /src/BetterPromise.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, beforeAll, describe, vi, it, afterAll } from 'vitest'; 2 | 3 | import { CancelledError, TimeoutError } from './errors.js'; 4 | 5 | import { BetterPromise } from './BetterPromise.js'; 6 | import { isResolved } from './resolved-utils.js'; 7 | 8 | describe('static fn', () => { 9 | it('should resolve result of function execution', async () => { 10 | await expect(BetterPromise.fn(() => true)).resolves.toBe(true); 11 | }); 12 | 13 | it('should resolve result of a promise', async () => { 14 | await expect(BetterPromise.fn(() => Promise.resolve(true))).resolves.toBe(true); 15 | }); 16 | 17 | it('should reject thrown error', async () => { 18 | await expect(BetterPromise.fn(() => { 19 | throw new Error('Oops'); 20 | })).rejects.toStrictEqual(new Error('Oops')); 21 | }); 22 | }); 23 | 24 | describe('static resolve', () => { 25 | it('should return BetterPromise resolved with passed argument', async () => { 26 | await expect(BetterPromise.resolve()).resolves.toBeUndefined(); 27 | await expect(BetterPromise.resolve('ABC')).resolves.toBe('ABC'); 28 | await expect(BetterPromise.resolve(Promise.resolve('ABC'))).resolves.toBe('ABC'); 29 | }); 30 | 31 | it('should return instance of BetterPromise', () => { 32 | expect(BetterPromise.resolve()).toBeInstanceOf(BetterPromise); 33 | }); 34 | }); 35 | 36 | describe('static reject', () => { 37 | it('should return BetterPromise rejected with passed argument', async () => { 38 | await expect(BetterPromise.reject()).rejects.toBeUndefined(); 39 | await expect(BetterPromise.reject('ABC')).rejects.toBe('ABC'); 40 | }); 41 | 42 | it('should return instance of BetterPromise', () => { 43 | const p = BetterPromise.reject(); 44 | p.catch(() => null); 45 | expect(p).toBeInstanceOf(BetterPromise); 46 | }); 47 | }); 48 | 49 | describe('executor', () => { 50 | it('should receive "rejected" and "finalized" events if the promise was rejected', () => { 51 | const rejectedSpy = vi.fn(); 52 | const finalizedSpy = vi.fn(); 53 | const p = new BetterPromise((_res, _rej, context) => { 54 | context.on('rejected', rejectedSpy); 55 | context.on('finalized', finalizedSpy); 56 | }).catch(() => undefined); 57 | 58 | p.reject(new Error('TEST_ERROR')); 59 | expect(rejectedSpy).toHaveBeenCalledOnce(); 60 | expect(rejectedSpy).toHaveBeenCalledWith(new Error('TEST_ERROR')); 61 | expect(finalizedSpy).toHaveBeenCalledOnce(); 62 | expect(finalizedSpy).toHaveBeenCalledWith({ 63 | kind: 'rejected', 64 | reason: new Error('TEST_ERROR'), 65 | }); 66 | }); 67 | 68 | it('should receive "resolved" and "finalized" events if the promise was resolved', () => { 69 | const resolvedSpy = vi.fn(); 70 | const finalizedSpy = vi.fn(); 71 | const p = new BetterPromise((_res, _rej, context) => { 72 | context.on('resolved', resolvedSpy); 73 | context.on('finalized', finalizedSpy); 74 | }); 75 | 76 | p.resolve(111); 77 | expect(resolvedSpy).toHaveBeenCalledOnce(); 78 | expect(resolvedSpy).toHaveBeenCalledWith(111); 79 | expect(finalizedSpy).toHaveBeenCalledOnce(); 80 | expect(finalizedSpy).toHaveBeenCalledWith({ kind: 'resolved', result: 111 }); 81 | }); 82 | 83 | it('should set isRejected = true if the promise was rejected', () => { 84 | const p = new BetterPromise((_res, _rej, context) => { 85 | expect(context.isRejected).toBe(false); 86 | context.on('rejected', () => { 87 | expect(context.isRejected).toBe(true); 88 | }); 89 | }).catch(() => undefined); 90 | 91 | p.reject(new Error('TEST_ERROR')); 92 | expect.assertions(2); 93 | }); 94 | 95 | it('should set isResolved = true if the promise was resolved', () => { 96 | const p = new BetterPromise((_res, _rej, context) => { 97 | expect(context.isResolved).toBe(false); 98 | context.on('resolved', () => { 99 | expect(context.isResolved).toBe(true); 100 | }); 101 | }); 102 | 103 | p.resolve(123); 104 | expect.assertions(2); 105 | }); 106 | 107 | it('should return rejection reason in "rejectReason" if the promise was rejected', () => { 108 | const p = new BetterPromise((_res, _rej, context) => { 109 | expect(context.rejectReason).toBe(undefined); 110 | context.on('rejected', () => { 111 | expect(context.rejectReason).toStrictEqual(new Error('TEST_ERROR')); 112 | }); 113 | }).catch(() => undefined); 114 | 115 | p.reject(new Error('TEST_ERROR')); 116 | expect.assertions(2); 117 | }); 118 | 119 | it('should return resolve result in "result" if the promise was resolved', () => { 120 | const p = new BetterPromise((_res, _rej, context) => { 121 | expect(context.result).toBe(undefined); 122 | context.on('resolved', () => { 123 | expect(context.result).toBe(123); 124 | }); 125 | }); 126 | 127 | p.resolve(123); 128 | expect.assertions(2); 129 | }); 130 | }); 131 | 132 | describe('options', () => { 133 | describe('abortOnResolve', () => { 134 | it('should abort signal if option is not specified', () => { 135 | const spy = vi.fn(); 136 | const p = new BetterPromise((_res, _rej, context) => { 137 | context.abortSignal.onabort = () => { 138 | spy(context.abortSignal.reason); 139 | }; 140 | }); 141 | 142 | p.resolve(123); 143 | expect(spy).toHaveBeenCalledOnce(); 144 | expect(spy).toHaveBeenCalledWith({ tag: expect.anything(), value: 123 }); 145 | expect(isResolved(spy.mock.calls[0][0])).toBe(true); 146 | }); 147 | 148 | it('should abort signal if option = true', () => { 149 | const spy = vi.fn(); 150 | const p = new BetterPromise((_res, _rej, context) => { 151 | context.abortSignal.onabort = () => { 152 | spy(context.abortSignal.reason); 153 | }; 154 | }, { abortOnResolve: true }); 155 | 156 | p.resolve(123); 157 | expect(spy).toHaveBeenCalledOnce(); 158 | expect(spy).toHaveBeenCalledWith({ tag: expect.anything(), value: 123 }); 159 | expect(isResolved(spy.mock.calls[0][0])).toBe(true); 160 | }); 161 | 162 | it('should not abort signal if option = false', () => { 163 | const spy = vi.fn(); 164 | const p = new BetterPromise((_res, _rej, context) => { 165 | context.abortSignal.onabort = () => { 166 | spy(context.abortSignal.reason); 167 | }; 168 | }, { abortOnResolve: false }); 169 | 170 | p.resolve(123); 171 | expect(spy).not.toHaveBeenCalled(); 172 | }); 173 | }); 174 | 175 | describe('abortOnReject', () => { 176 | it('should abort signal if option is not specified', () => { 177 | const spy = vi.fn(); 178 | const p = new BetterPromise((_res, _rej, context) => { 179 | context.abortSignal.onabort = () => { 180 | spy(context.abortSignal.reason); 181 | }; 182 | }).catch(() => undefined); 183 | 184 | p.reject(new Error('test')); 185 | expect(spy).toHaveBeenCalledOnce(); 186 | expect(spy).toHaveBeenCalledWith(new Error('test')); 187 | }); 188 | 189 | it('should abort signal if option = true', () => { 190 | const spy = vi.fn(); 191 | const p = new BetterPromise((_res, _rej, context) => { 192 | context.abortSignal.onabort = () => { 193 | spy(context.abortSignal.reason); 194 | }; 195 | }, { abortOnReject: true }).catch(() => undefined); 196 | 197 | p.reject(new Error('test')); 198 | expect(spy).toHaveBeenCalledOnce(); 199 | expect(spy).toHaveBeenCalledWith(new Error('test')); 200 | }); 201 | 202 | it('should not abort signal if option = false', () => { 203 | const spy = vi.fn(); 204 | const p = new BetterPromise((_res, _rej, context) => { 205 | context.abortSignal.onabort = () => spy; 206 | }, { abortOnReject: false }).catch(() => undefined); 207 | 208 | p.reject(new Error('test')); 209 | expect(spy).not.toHaveBeenCalled(); 210 | }); 211 | }); 212 | 213 | describe('timeout', () => { 214 | beforeAll(() => { 215 | vi.useFakeTimers(); 216 | }); 217 | 218 | afterAll(() => { 219 | vi.useRealTimers(); 220 | }); 221 | 222 | it('should reject promise with TimeoutError if timeout was reached', async () => { 223 | const promise = new BetterPromise({ timeout: 100 }); 224 | vi.advanceTimersByTime(200); 225 | await expect(promise).rejects.toStrictEqual(new TimeoutError(100)); 226 | }); 227 | }); 228 | }); 229 | 230 | describe('cancel', () => { 231 | it('should abort promise with CancelledError', async () => { 232 | const promise = new BetterPromise(); 233 | promise.cancel(); 234 | await expect(promise).rejects.toStrictEqual(new CancelledError()); 235 | }); 236 | 237 | it('should be properly handled by catch', async () => { 238 | const spy = vi.fn(); 239 | const p = new BetterPromise().catch(spy); 240 | p.cancel(); 241 | await p; 242 | expect(spy).toHaveBeenCalledOnce(); 243 | expect(spy).toHaveBeenCalledWith(new CancelledError()); 244 | }); 245 | }); 246 | 247 | describe('reject', () => { 248 | it('should reject with specified value', async () => { 249 | const p = new BetterPromise(); 250 | p.reject(new Error('REJECT REASON')); 251 | await expect(p).rejects.toStrictEqual(new Error('REJECT REASON')); 252 | }); 253 | 254 | it('should reject initially created promise', async () => { 255 | const p = new BetterPromise(); 256 | const p2 = p.then().then().then(); 257 | p2.reject(new Error('REJECT REASON')); 258 | await expect(p).rejects.toStrictEqual(new Error('REJECT REASON')); 259 | await expect(p2).rejects.toStrictEqual(new Error('REJECT REASON')); 260 | }); 261 | }); 262 | 263 | describe('resolve', () => { 264 | it('should resolve with specified value', async () => { 265 | const p = new BetterPromise(); 266 | p.resolve(123); 267 | await expect(p).resolves.toBe(123); 268 | }); 269 | 270 | it('should resolve initially created promise', async () => { 271 | const p = new BetterPromise(); 272 | const p2 = p.then(() => 1).then(() => 2); 273 | p2.resolve(123); 274 | await expect(p).resolves.toBe(123); 275 | await expect(p2).resolves.toBe(2); 276 | }); 277 | }); 278 | 279 | it('should behave like usual promise', async () => { 280 | await expect( 281 | new BetterPromise(res => res(true)), 282 | ).resolves.toBe(true); 283 | 284 | await expect( 285 | new BetterPromise((_, rej) => rej(new Error('ERR'))), 286 | ).rejects.toStrictEqual(new Error('ERR')); 287 | }); 288 | 289 | describe('then', () => { 290 | it('should create promise with reject of original one', () => { 291 | const p = new BetterPromise(); 292 | const reject = vi.spyOn(p, 'reject'); 293 | 294 | const p2 = p.then().catch(() => undefined); 295 | p2.reject(new Error('Oops')); 296 | expect(reject).toHaveBeenCalledOnce(); 297 | expect(reject).toHaveBeenCalledWith(new Error('Oops')); 298 | }); 299 | 300 | it('should be called with previous promise result', async () => { 301 | const spyA = vi.fn(r => r + 1); 302 | const spyB = vi.fn(r => r + 2); 303 | const p = new BetterPromise(res => res(1)).then(spyA).then(spyB); 304 | 305 | await expect(p).resolves.toBe(4); 306 | expect(spyA).toHaveBeenCalledOnce(); 307 | expect(spyA).toHaveBeenCalledWith(1); 308 | expect(spyB).toHaveBeenCalledWith(2); 309 | }); 310 | }); 311 | 312 | describe('catch', () => { 313 | it('should create promise with reject of original one', () => { 314 | const p = new BetterPromise(); 315 | const reject = vi.spyOn(p, 'reject'); 316 | 317 | const p2 = p.catch(() => undefined); 318 | p2.reject(new Error('Oops')); 319 | expect(reject).toHaveBeenCalledOnce(); 320 | expect(reject).toHaveBeenCalledWith(new Error('Oops')); 321 | }); 322 | 323 | it('should handle error', async () => { 324 | const spy = vi.fn(); 325 | const p = new BetterPromise().catch(spy); 326 | p.reject(new Error('Well..')); 327 | 328 | await p; 329 | expect(spy).toHaveBeenCalledOnce(); 330 | expect(spy).toHaveBeenCalledWith(new Error('Well..')); 331 | }); 332 | }); 333 | 334 | describe('finally', () => { 335 | it('should create promise with reject of original one', () => { 336 | const p = new BetterPromise(); 337 | const reject = vi.spyOn(p, 'reject'); 338 | 339 | const p2 = p.catch(() => { 340 | }); 341 | p2.reject(new Error('Oops')); 342 | expect(reject).toHaveBeenCalledOnce(); 343 | expect(reject).toHaveBeenCalledWith(new Error('Oops')); 344 | }); 345 | 346 | it('should call handler in any case', async () => { 347 | const spy2 = vi.fn(); 348 | const p = new BetterPromise() 349 | .catch(() => undefined) 350 | .finally(spy2); 351 | p.reject(new Error('Well..')); 352 | 353 | await p; 354 | expect(spy2).toHaveBeenCalledOnce(); 355 | expect(spy2).toHaveBeenCalledWith(); 356 | }); 357 | }); 358 | -------------------------------------------------------------------------------- /src/BetterPromise.ts: -------------------------------------------------------------------------------- 1 | import { CancelledError, TimeoutError } from './errors.js'; 2 | import { withResolved } from './resolved-utils.js'; 3 | 4 | type Maybe = T | undefined | null; 5 | 6 | export interface BetterPromiseOptions { 7 | /** 8 | * Should the `abortSignal` passed to the executor be aborted if the promise was rejected. 9 | * 10 | * By default, as long as there is no point to perform any operations at the moment of rejection, 11 | * the signal will be aborted. 12 | * @default true 13 | */ 14 | abortOnReject?: boolean; 15 | /** 16 | * Should the `abortSignal` passed to the executor be aborted if the promise was fulfilled. 17 | * 18 | * By default, as long as there is no point to perform any operations at the moment of resolve, 19 | * the signal will be aborted. 20 | * @default true 21 | */ 22 | abortOnResolve?: boolean; 23 | /** 24 | * Signal to abort the execution. 25 | */ 26 | abortSignal?: AbortSignal; 27 | /** 28 | * Execution timeout. After the timeout was reached, the promise will be aborted 29 | * with the `TimeoutError` error. 30 | */ 31 | timeout?: number; 32 | } 33 | 34 | export type BetterPromiseResolveFn = undefined extends T 35 | ? (value?: T) => void 36 | : (value: T) => void; 37 | 38 | export type BetterPromiseRejectFn = (reason?: any) => void; 39 | 40 | export type BetterPromiseRejectReason = TimeoutError | CancelledError | unknown; 41 | 42 | interface EventMap { 43 | resolved: Result; 44 | rejected: BetterPromiseRejectReason; 45 | finalized: 46 | | { kind: 'resolved', result: Result } 47 | | { kind: 'rejected', reason: BetterPromiseRejectReason }; 48 | } 49 | 50 | export interface BetterPromiseExecutorContext { 51 | /** 52 | * Abort signal. Will be aborted if the promise was rejected. 53 | */ 54 | readonly abortSignal: AbortSignal; 55 | /** 56 | * @returns True if the promise was rejected. 57 | */ 58 | get isRejected(): boolean; 59 | /** 60 | * @returns True if the promise was resolved. 61 | */ 62 | get isResolved(): boolean; 63 | /** 64 | * Adds a new event listener to the specified event. 65 | * @param event - event to listen to. 66 | * @param listener - a corresponding callback function to call. 67 | */ 68 | on>( 69 | event: E, 70 | listener: (ev: EventMap[E]) => void, 71 | ): VoidFunction; 72 | /** 73 | * @returns Promise resolve result if it was resolved. 74 | */ 75 | get result(): Result | undefined; 76 | /** 77 | * @returns Promise rejection reason if the promise was rejected. 78 | */ 79 | get rejectReason(): BetterPromiseRejectReason | undefined; 80 | /** 81 | * Will throw a rejection reason if the promise was rejected. 82 | */ 83 | throwIfRejected: () => void; 84 | } 85 | 86 | export type BetterPromiseExecutorFn = ( 87 | res: BetterPromiseResolveFn, 88 | rej: BetterPromiseRejectFn, 89 | context: BetterPromiseExecutorContext, 90 | ) => any; 91 | 92 | export type BetterPromiseOnFulfilledFn = 93 | (value: TResult1) => TResult2 | PromiseLike; 94 | 95 | export type BetterPromiseOnRejectedFn = (value: any) => T | PromiseLike; 96 | 97 | function withInheritedResolvers

>( 98 | childPromise: P, 99 | parentPromise: BetterPromise, 100 | ): P { 101 | childPromise.reject = parentPromise.reject; 102 | childPromise.resolve = parentPromise.resolve; 103 | return childPromise; 104 | } 105 | 106 | export class BetterPromise extends Promise { 107 | static fn( 108 | fn: (context: BetterPromiseExecutorContext) => (Result | PromiseLike), 109 | options?: BetterPromiseOptions, 110 | ): BetterPromise> { 111 | return new BetterPromise(async (res, rej, context) => { 112 | try { 113 | res(await fn(context)); 114 | } catch (e) { 115 | rej(e); 116 | } 117 | }, options); 118 | } 119 | 120 | /** 121 | * @see Promise.resolve 122 | */ 123 | static override resolve(): BetterPromise; 124 | /** 125 | * @see Promise.resolve 126 | */ 127 | static override resolve(value: T | PromiseLike): BetterPromise>; 128 | static override resolve(value?: T | PromiseLike): BetterPromise> { 129 | return this.fn(() => value) as BetterPromise>; 130 | } 131 | 132 | /** 133 | * @see Promise.reject 134 | */ 135 | static override reject(reason?: unknown): BetterPromise { 136 | return new BetterPromise((_, rej) => { 137 | rej(reason); 138 | }); 139 | } 140 | 141 | 142 | constructor(options?: BetterPromiseOptions); 143 | constructor(executor?: BetterPromiseExecutorFn, options?: BetterPromiseOptions); 144 | constructor( 145 | arg1?: BetterPromiseExecutorFn | BetterPromiseOptions, 146 | maybeOptions?: BetterPromiseOptions, 147 | ) { 148 | let reject!: BetterPromiseRejectFn; 149 | let resolve!: BetterPromiseResolveFn; 150 | let executor: BetterPromiseExecutorFn | undefined; 151 | let options: BetterPromiseOptions; 152 | 153 | if (typeof arg1 === 'function') { 154 | executor = arg1; 155 | options = maybeOptions || {}; 156 | } else { 157 | options = arg1 || {}; 158 | } 159 | 160 | let resolved: [Result] | undefined; 161 | let rejected: [BetterPromiseRejectReason] | undefined; 162 | const isRejected = () => !!rejected; 163 | const isResolved = () => !!resolved; 164 | let listeners: { 165 | [E in keyof EventMap]?: ((data: EventMap[E]) => void)[]; 166 | } = {}; 167 | 168 | //#region Cleanup section. 169 | const cleanupFns: VoidFunction[] = []; 170 | const cleanup = () => { 171 | cleanupFns.forEach(fn => fn()); 172 | cleanupFns.splice(0, cleanupFns.length); 173 | listeners = {}; 174 | }; 175 | //#endregion 176 | 177 | // We are going to use our controller signal in the executor because we can control it. 178 | // We can't say the same about the abort signal passed from above - we can't abort it by 179 | // ourselves. 180 | const controller = new AbortController(); 181 | const isResolvedOrRejected = () => isResolved() || isRejected(); 182 | 183 | super((res, rej) => { 184 | // Enhance resolve and reject functions with cleanup and controller abortion. 185 | const { abortOnResolve = true, abortOnReject = true } = options; 186 | resolve = ((result: Result) => { 187 | if (!isResolvedOrRejected()) { 188 | res(result); 189 | resolved = [result]; 190 | listeners.resolved?.forEach(l => l(result)); 191 | listeners.finalized?.forEach(l => l({ kind: 'resolved', result })); 192 | cleanup(); 193 | 194 | if (abortOnResolve) { 195 | controller.abort(withResolved(result)); 196 | } 197 | } 198 | }) as BetterPromiseResolveFn; 199 | reject = reason => { 200 | if (!isResolvedOrRejected()) { 201 | rej(reason); 202 | rejected = [reason]; 203 | listeners.rejected?.forEach(l => l(reason)); 204 | listeners.finalized?.forEach(l => l({ kind: 'rejected', reason })); 205 | cleanup(); 206 | 207 | if (abortOnReject) { 208 | controller.abort(reason); 209 | } 210 | } 211 | }; 212 | 213 | //#region Process abortSignal option. 214 | const { abortSignal } = options; 215 | if (abortSignal) { 216 | if (abortSignal.aborted) { 217 | return reject(abortSignal.reason); 218 | } 219 | // Whenever the passed abort signal aborts, we are also aborting our locally created 220 | // signal. 221 | const listener = () => { 222 | reject(abortSignal.reason); 223 | }; 224 | abortSignal.addEventListener('abort', listener, true); 225 | cleanupFns.push(() => { 226 | abortSignal.removeEventListener('abort', listener, true); 227 | }); 228 | } 229 | //#endregion 230 | 231 | //#region Process timeout option. 232 | const { timeout } = options; 233 | if (timeout) { 234 | const timeoutId = setTimeout(() => { 235 | reject(new TimeoutError(timeout)); 236 | }, timeout); 237 | cleanupFns.push(() => { 238 | clearTimeout(timeoutId); 239 | }); 240 | } 241 | //#endregion 242 | 243 | try { 244 | const voidFn = () => undefined; 245 | const result = executor && executor(resolve, reject, { 246 | abortSignal: controller.signal, 247 | get isRejected() { 248 | return isRejected(); 249 | }, 250 | get isResolved() { 251 | return isResolved(); 252 | }, 253 | on(event, listener) { 254 | // The promise may already be finalized. In this case we just call the listener. 255 | if (resolved || rejected) { 256 | if (event === 'finalized') { 257 | const payload = resolved 258 | ? { kind: 'resolved', result: resolved[0] } as const 259 | : { kind: 'rejected', reason: rejected![0] } as const; 260 | ( 261 | listener as ( 262 | data: 263 | | { kind: 'resolved', result: Result } 264 | | { kind: 'rejected', reason: BetterPromiseRejectReason }, 265 | ) => void 266 | )(payload); 267 | } else if (event === 'resolved' && resolved) { 268 | (listener as (result: Result) => void)(resolved[0]); 269 | } else if (event === 'rejected' && rejected) { 270 | (listener as (reason: BetterPromiseRejectReason) => void)(rejected[0]); 271 | } 272 | return voidFn; 273 | } 274 | listeners[event] ||= []; 275 | listeners[event].push(listener); 276 | 277 | return () => { 278 | const eventListeners: any[] = listeners[event] || []; 279 | const index = eventListeners.indexOf(listener); 280 | if (index >= 0) { 281 | eventListeners.splice(index, 1); 282 | } 283 | }; 284 | }, 285 | get result() { 286 | return resolved?.[0]; 287 | }, 288 | get rejectReason() { 289 | return rejected?.[0]; 290 | }, 291 | throwIfRejected() { 292 | if (rejected) { 293 | throw rejected[0]; 294 | } 295 | }, 296 | }); 297 | 298 | // If a promise was returned, we want to handle its rejection because the JS Promise 299 | // will not do it for us. Not catching the promise rejection this way, an unhandled promise 300 | // rejection error will be thrown. We also need to perform reject properly cleaning up 301 | // all effects. 302 | if (result instanceof Promise) { 303 | result.catch(reject); 304 | } 305 | } catch (e) { 306 | // The wrapped executor may throw an error. Here we are following the same logic described 307 | // in result.catch() line above. 308 | reject(e); 309 | } 310 | }); 311 | 312 | this.reject = reject; 313 | this.resolve = resolve; 314 | } 315 | 316 | /** 317 | * Rejects the promise with the `CancelledError` error. 318 | */ 319 | cancel(): void { 320 | this.reject(new CancelledError()); 321 | } 322 | 323 | /** 324 | * @see Promise.catch 325 | */ 326 | override catch( 327 | onRejected?: Maybe>, 328 | ): BetterPromise { 329 | return this.then(undefined, onRejected); 330 | } 331 | 332 | /** 333 | * @see Promise.finally 334 | */ 335 | override finally(onFinally?: Maybe<() => void>): BetterPromise { 336 | // Here we follow the same logic described in the "then" method. 337 | return withInheritedResolvers(super.finally(onFinally) as BetterPromise, this); 338 | } 339 | 340 | /** 341 | * Rejects the initially created promise. 342 | * 343 | * This method not only aborts the signal passed to the executor, but also rejects the 344 | * promise itself calling all chained listeners. 345 | * 346 | * The reason passed to the method is being passed as-is to the executor's context. 347 | */ 348 | reject: BetterPromiseRejectFn; 349 | 350 | /** 351 | * Resolves the promise. 352 | */ 353 | resolve: BetterPromiseResolveFn; 354 | 355 | /** 356 | * @see Promise.then 357 | */ 358 | override then( 359 | onFulfilled?: Maybe>, 360 | onRejected?: Maybe>, 361 | ): BetterPromise { 362 | // Use the original promise "then" method because in fact, it creates an AbortablePromise 363 | // instance. 364 | // Then, reassign the promise "reject" method, because not doing it and rejecting the promise 365 | // it will lead to an unhandled promise rejection. 366 | // 367 | // Here is an example: 368 | // const myPromise = new AbortablePromise(...) 369 | // .catch(() => console.log('Catched')); 370 | // 371 | // If we don't reassign myPromise's "reject" method here, it will reject the promise, returned 372 | // from the "catch" method, which is unexpected. So, even using several catches in a row, 373 | // a developer will not be able to catch the error, thrown using the "reject" method. 374 | // 375 | // The expected behavior here is the "reject" method rejecting the initially created promise. 376 | // Then, this error will be handled via the "catch" method. 377 | return withInheritedResolvers( 378 | super.then(onFulfilled, onRejected) as BetterPromise, 379 | this, 380 | ); 381 | } 382 | } -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | error-kid: 12 | specifier: ^1.0.1 13 | version: 1.0.1 14 | devDependencies: 15 | '@changesets/cli': 16 | specifier: ^2.27.8 17 | version: 2.27.8 18 | '@eslint/js': 19 | specifier: ^9.11.1 20 | version: 9.11.1 21 | '@vitest/coverage-v8': 22 | specifier: ^2.1.2 23 | version: 2.1.2(vitest@2.1.2) 24 | '@vitest/ui': 25 | specifier: ^2.1.2 26 | version: 2.1.2(vitest@2.1.2) 27 | eslint: 28 | specifier: ^9.11.1 29 | version: 9.11.1 30 | rimraf: 31 | specifier: ^6.0.1 32 | version: 6.0.1 33 | typescript: 34 | specifier: ^5.8.3 35 | version: 5.8.3 36 | typescript-eslint: 37 | specifier: ^8.8.0 38 | version: 8.8.0(eslint@9.11.1)(typescript@5.8.3) 39 | vite: 40 | specifier: ^5.4.8 41 | version: 5.4.8 42 | vite-plugin-dts: 43 | specifier: ^4.2.3 44 | version: 4.2.3(rollup@4.24.0)(typescript@5.8.3)(vite@5.4.8) 45 | vitest: 46 | specifier: ^2.1.2 47 | version: 2.1.2(@vitest/ui@2.1.2) 48 | 49 | packages: 50 | 51 | '@ampproject/remapping@2.3.0': 52 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 53 | engines: {node: '>=6.0.0'} 54 | 55 | '@babel/helper-string-parser@7.25.7': 56 | resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} 57 | engines: {node: '>=6.9.0'} 58 | 59 | '@babel/helper-validator-identifier@7.25.7': 60 | resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} 61 | engines: {node: '>=6.9.0'} 62 | 63 | '@babel/parser@7.25.7': 64 | resolution: {integrity: sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==} 65 | engines: {node: '>=6.0.0'} 66 | hasBin: true 67 | 68 | '@babel/runtime@7.25.7': 69 | resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} 70 | engines: {node: '>=6.9.0'} 71 | 72 | '@babel/types@7.25.7': 73 | resolution: {integrity: sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==} 74 | engines: {node: '>=6.9.0'} 75 | 76 | '@bcoe/v8-coverage@0.2.3': 77 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 78 | 79 | '@changesets/apply-release-plan@7.0.5': 80 | resolution: {integrity: sha512-1cWCk+ZshEkSVEZrm2fSj1Gz8sYvxgUL4Q78+1ZZqeqfuevPTPk033/yUZ3df8BKMohkqqHfzj0HOOrG0KtXTw==} 81 | 82 | '@changesets/assemble-release-plan@6.0.4': 83 | resolution: {integrity: sha512-nqICnvmrwWj4w2x0fOhVj2QEGdlUuwVAwESrUo5HLzWMI1rE5SWfsr9ln+rDqWB6RQ2ZyaMZHUcU7/IRaUJS+Q==} 84 | 85 | '@changesets/changelog-git@0.2.0': 86 | resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} 87 | 88 | '@changesets/cli@2.27.8': 89 | resolution: {integrity: sha512-gZNyh+LdSsI82wBSHLQ3QN5J30P4uHKJ4fXgoGwQxfXwYFTJzDdvIJasZn8rYQtmKhyQuiBj4SSnLuKlxKWq4w==} 90 | hasBin: true 91 | 92 | '@changesets/config@3.0.3': 93 | resolution: {integrity: sha512-vqgQZMyIcuIpw9nqFIpTSNyc/wgm/Lu1zKN5vECy74u95Qx/Wa9g27HdgO4NkVAaq+BGA8wUc/qvbvVNs93n6A==} 94 | 95 | '@changesets/errors@0.2.0': 96 | resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} 97 | 98 | '@changesets/get-dependents-graph@2.1.2': 99 | resolution: {integrity: sha512-sgcHRkiBY9i4zWYBwlVyAjEM9sAzs4wYVwJUdnbDLnVG3QwAaia1Mk5P8M7kraTOZN+vBET7n8KyB0YXCbFRLQ==} 100 | 101 | '@changesets/get-release-plan@4.0.4': 102 | resolution: {integrity: sha512-SicG/S67JmPTrdcc9Vpu0wSQt7IiuN0dc8iR5VScnnTVPfIaLvKmEGRvIaF0kcn8u5ZqLbormZNTO77bCEvyWw==} 103 | 104 | '@changesets/get-version-range-type@0.4.0': 105 | resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} 106 | 107 | '@changesets/git@3.0.1': 108 | resolution: {integrity: sha512-pdgHcYBLCPcLd82aRcuO0kxCDbw/yISlOtkmwmE8Odo1L6hSiZrBOsRl84eYG7DRCab/iHnOkWqExqc4wxk2LQ==} 109 | 110 | '@changesets/logger@0.1.1': 111 | resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} 112 | 113 | '@changesets/parse@0.4.0': 114 | resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} 115 | 116 | '@changesets/pre@2.0.1': 117 | resolution: {integrity: sha512-vvBJ/If4jKM4tPz9JdY2kGOgWmCowUYOi5Ycv8dyLnEE8FgpYYUo1mgJZxcdtGGP3aG8rAQulGLyyXGSLkIMTQ==} 118 | 119 | '@changesets/read@0.6.1': 120 | resolution: {integrity: sha512-jYMbyXQk3nwP25nRzQQGa1nKLY0KfoOV7VLgwucI0bUO8t8ZLCr6LZmgjXsiKuRDc+5A6doKPr9w2d+FEJ55zQ==} 121 | 122 | '@changesets/should-skip-package@0.1.1': 123 | resolution: {integrity: sha512-H9LjLbF6mMHLtJIc/eHR9Na+MifJ3VxtgP/Y+XLn4BF7tDTEN1HNYtH6QMcjP1uxp9sjaFYmW8xqloaCi/ckTg==} 124 | 125 | '@changesets/types@4.1.0': 126 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} 127 | 128 | '@changesets/types@6.0.0': 129 | resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} 130 | 131 | '@changesets/write@0.3.2': 132 | resolution: {integrity: sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==} 133 | 134 | '@esbuild/aix-ppc64@0.21.5': 135 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 136 | engines: {node: '>=12'} 137 | cpu: [ppc64] 138 | os: [aix] 139 | 140 | '@esbuild/android-arm64@0.21.5': 141 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 142 | engines: {node: '>=12'} 143 | cpu: [arm64] 144 | os: [android] 145 | 146 | '@esbuild/android-arm@0.21.5': 147 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 148 | engines: {node: '>=12'} 149 | cpu: [arm] 150 | os: [android] 151 | 152 | '@esbuild/android-x64@0.21.5': 153 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 154 | engines: {node: '>=12'} 155 | cpu: [x64] 156 | os: [android] 157 | 158 | '@esbuild/darwin-arm64@0.21.5': 159 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 160 | engines: {node: '>=12'} 161 | cpu: [arm64] 162 | os: [darwin] 163 | 164 | '@esbuild/darwin-x64@0.21.5': 165 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 166 | engines: {node: '>=12'} 167 | cpu: [x64] 168 | os: [darwin] 169 | 170 | '@esbuild/freebsd-arm64@0.21.5': 171 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 172 | engines: {node: '>=12'} 173 | cpu: [arm64] 174 | os: [freebsd] 175 | 176 | '@esbuild/freebsd-x64@0.21.5': 177 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 178 | engines: {node: '>=12'} 179 | cpu: [x64] 180 | os: [freebsd] 181 | 182 | '@esbuild/linux-arm64@0.21.5': 183 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 184 | engines: {node: '>=12'} 185 | cpu: [arm64] 186 | os: [linux] 187 | 188 | '@esbuild/linux-arm@0.21.5': 189 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 190 | engines: {node: '>=12'} 191 | cpu: [arm] 192 | os: [linux] 193 | 194 | '@esbuild/linux-ia32@0.21.5': 195 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 196 | engines: {node: '>=12'} 197 | cpu: [ia32] 198 | os: [linux] 199 | 200 | '@esbuild/linux-loong64@0.21.5': 201 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 202 | engines: {node: '>=12'} 203 | cpu: [loong64] 204 | os: [linux] 205 | 206 | '@esbuild/linux-mips64el@0.21.5': 207 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 208 | engines: {node: '>=12'} 209 | cpu: [mips64el] 210 | os: [linux] 211 | 212 | '@esbuild/linux-ppc64@0.21.5': 213 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 214 | engines: {node: '>=12'} 215 | cpu: [ppc64] 216 | os: [linux] 217 | 218 | '@esbuild/linux-riscv64@0.21.5': 219 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 220 | engines: {node: '>=12'} 221 | cpu: [riscv64] 222 | os: [linux] 223 | 224 | '@esbuild/linux-s390x@0.21.5': 225 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 226 | engines: {node: '>=12'} 227 | cpu: [s390x] 228 | os: [linux] 229 | 230 | '@esbuild/linux-x64@0.21.5': 231 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 232 | engines: {node: '>=12'} 233 | cpu: [x64] 234 | os: [linux] 235 | 236 | '@esbuild/netbsd-x64@0.21.5': 237 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 238 | engines: {node: '>=12'} 239 | cpu: [x64] 240 | os: [netbsd] 241 | 242 | '@esbuild/openbsd-x64@0.21.5': 243 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 244 | engines: {node: '>=12'} 245 | cpu: [x64] 246 | os: [openbsd] 247 | 248 | '@esbuild/sunos-x64@0.21.5': 249 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 250 | engines: {node: '>=12'} 251 | cpu: [x64] 252 | os: [sunos] 253 | 254 | '@esbuild/win32-arm64@0.21.5': 255 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 256 | engines: {node: '>=12'} 257 | cpu: [arm64] 258 | os: [win32] 259 | 260 | '@esbuild/win32-ia32@0.21.5': 261 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 262 | engines: {node: '>=12'} 263 | cpu: [ia32] 264 | os: [win32] 265 | 266 | '@esbuild/win32-x64@0.21.5': 267 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 268 | engines: {node: '>=12'} 269 | cpu: [x64] 270 | os: [win32] 271 | 272 | '@eslint-community/eslint-utils@4.4.0': 273 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 274 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 275 | peerDependencies: 276 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 277 | 278 | '@eslint-community/regexpp@4.11.1': 279 | resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} 280 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 281 | 282 | '@eslint/config-array@0.18.0': 283 | resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} 284 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 285 | 286 | '@eslint/core@0.6.0': 287 | resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} 288 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 289 | 290 | '@eslint/eslintrc@3.1.0': 291 | resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 292 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 293 | 294 | '@eslint/js@9.11.1': 295 | resolution: {integrity: sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==} 296 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 297 | 298 | '@eslint/object-schema@2.1.4': 299 | resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 300 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 301 | 302 | '@eslint/plugin-kit@0.2.0': 303 | resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==} 304 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 305 | 306 | '@humanwhocodes/module-importer@1.0.1': 307 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 308 | engines: {node: '>=12.22'} 309 | 310 | '@humanwhocodes/retry@0.3.0': 311 | resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} 312 | engines: {node: '>=18.18'} 313 | 314 | '@isaacs/cliui@8.0.2': 315 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 316 | engines: {node: '>=12'} 317 | 318 | '@istanbuljs/schema@0.1.3': 319 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 320 | engines: {node: '>=8'} 321 | 322 | '@jridgewell/gen-mapping@0.3.5': 323 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 324 | engines: {node: '>=6.0.0'} 325 | 326 | '@jridgewell/resolve-uri@3.1.2': 327 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 328 | engines: {node: '>=6.0.0'} 329 | 330 | '@jridgewell/set-array@1.2.1': 331 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 332 | engines: {node: '>=6.0.0'} 333 | 334 | '@jridgewell/sourcemap-codec@1.5.0': 335 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 336 | 337 | '@jridgewell/trace-mapping@0.3.25': 338 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 339 | 340 | '@manypkg/find-root@1.1.0': 341 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} 342 | 343 | '@manypkg/get-packages@1.1.3': 344 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} 345 | 346 | '@microsoft/api-extractor-model@7.29.6': 347 | resolution: {integrity: sha512-gC0KGtrZvxzf/Rt9oMYD2dHvtN/1KPEYsrQPyMKhLHnlVuO/f4AFN3E4toqZzD2pt4LhkKoYmL2H9tX3yCOyRw==} 348 | 349 | '@microsoft/api-extractor@7.47.7': 350 | resolution: {integrity: sha512-fNiD3G55ZJGhPOBPMKD/enozj8yxJSYyVJWxRWdcUtw842rvthDHJgUWq9gXQTensFlMHv2wGuCjjivPv53j0A==} 351 | hasBin: true 352 | 353 | '@microsoft/tsdoc-config@0.17.0': 354 | resolution: {integrity: sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==} 355 | 356 | '@microsoft/tsdoc@0.15.0': 357 | resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} 358 | 359 | '@nodelib/fs.scandir@2.1.5': 360 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 361 | engines: {node: '>= 8'} 362 | 363 | '@nodelib/fs.stat@2.0.5': 364 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 365 | engines: {node: '>= 8'} 366 | 367 | '@nodelib/fs.walk@1.2.8': 368 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 369 | engines: {node: '>= 8'} 370 | 371 | '@pkgjs/parseargs@0.11.0': 372 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 373 | engines: {node: '>=14'} 374 | 375 | '@polka/url@1.0.0-next.28': 376 | resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} 377 | 378 | '@rollup/pluginutils@5.1.2': 379 | resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} 380 | engines: {node: '>=14.0.0'} 381 | peerDependencies: 382 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 383 | peerDependenciesMeta: 384 | rollup: 385 | optional: true 386 | 387 | '@rollup/rollup-android-arm-eabi@4.24.0': 388 | resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} 389 | cpu: [arm] 390 | os: [android] 391 | 392 | '@rollup/rollup-android-arm64@4.24.0': 393 | resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} 394 | cpu: [arm64] 395 | os: [android] 396 | 397 | '@rollup/rollup-darwin-arm64@4.24.0': 398 | resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} 399 | cpu: [arm64] 400 | os: [darwin] 401 | 402 | '@rollup/rollup-darwin-x64@4.24.0': 403 | resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} 404 | cpu: [x64] 405 | os: [darwin] 406 | 407 | '@rollup/rollup-linux-arm-gnueabihf@4.24.0': 408 | resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} 409 | cpu: [arm] 410 | os: [linux] 411 | 412 | '@rollup/rollup-linux-arm-musleabihf@4.24.0': 413 | resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} 414 | cpu: [arm] 415 | os: [linux] 416 | 417 | '@rollup/rollup-linux-arm64-gnu@4.24.0': 418 | resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} 419 | cpu: [arm64] 420 | os: [linux] 421 | 422 | '@rollup/rollup-linux-arm64-musl@4.24.0': 423 | resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} 424 | cpu: [arm64] 425 | os: [linux] 426 | 427 | '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': 428 | resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} 429 | cpu: [ppc64] 430 | os: [linux] 431 | 432 | '@rollup/rollup-linux-riscv64-gnu@4.24.0': 433 | resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} 434 | cpu: [riscv64] 435 | os: [linux] 436 | 437 | '@rollup/rollup-linux-s390x-gnu@4.24.0': 438 | resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} 439 | cpu: [s390x] 440 | os: [linux] 441 | 442 | '@rollup/rollup-linux-x64-gnu@4.24.0': 443 | resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} 444 | cpu: [x64] 445 | os: [linux] 446 | 447 | '@rollup/rollup-linux-x64-musl@4.24.0': 448 | resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} 449 | cpu: [x64] 450 | os: [linux] 451 | 452 | '@rollup/rollup-win32-arm64-msvc@4.24.0': 453 | resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} 454 | cpu: [arm64] 455 | os: [win32] 456 | 457 | '@rollup/rollup-win32-ia32-msvc@4.24.0': 458 | resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} 459 | cpu: [ia32] 460 | os: [win32] 461 | 462 | '@rollup/rollup-win32-x64-msvc@4.24.0': 463 | resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} 464 | cpu: [x64] 465 | os: [win32] 466 | 467 | '@rushstack/node-core-library@5.7.0': 468 | resolution: {integrity: sha512-Ff9Cz/YlWu9ce4dmqNBZpA45AEya04XaBFIjV7xTVeEf+y/kTjEasmozqFELXlNG4ROdevss75JrrZ5WgufDkQ==} 469 | peerDependencies: 470 | '@types/node': '*' 471 | peerDependenciesMeta: 472 | '@types/node': 473 | optional: true 474 | 475 | '@rushstack/rig-package@0.5.3': 476 | resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} 477 | 478 | '@rushstack/terminal@0.14.0': 479 | resolution: {integrity: sha512-juTKMAMpTIJKudeFkG5slD8Z/LHwNwGZLtU441l/u82XdTBfsP+LbGKJLCNwP5se+DMCT55GB8x9p6+C4UL7jw==} 480 | peerDependencies: 481 | '@types/node': '*' 482 | peerDependenciesMeta: 483 | '@types/node': 484 | optional: true 485 | 486 | '@rushstack/ts-command-line@4.22.6': 487 | resolution: {integrity: sha512-QSRqHT/IfoC5nk9zn6+fgyqOPXHME0BfchII9EUPR19pocsNp/xSbeBCbD3PIR2Lg+Q5qk7OFqk1VhWPMdKHJg==} 488 | 489 | '@types/argparse@1.0.38': 490 | resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} 491 | 492 | '@types/estree@1.0.6': 493 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 494 | 495 | '@types/json-schema@7.0.15': 496 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 497 | 498 | '@types/node@12.20.55': 499 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} 500 | 501 | '@types/semver@7.5.8': 502 | resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} 503 | 504 | '@typescript-eslint/eslint-plugin@8.8.0': 505 | resolution: {integrity: sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==} 506 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 507 | peerDependencies: 508 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 509 | eslint: ^8.57.0 || ^9.0.0 510 | typescript: '*' 511 | peerDependenciesMeta: 512 | typescript: 513 | optional: true 514 | 515 | '@typescript-eslint/parser@8.8.0': 516 | resolution: {integrity: sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==} 517 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 518 | peerDependencies: 519 | eslint: ^8.57.0 || ^9.0.0 520 | typescript: '*' 521 | peerDependenciesMeta: 522 | typescript: 523 | optional: true 524 | 525 | '@typescript-eslint/scope-manager@8.8.0': 526 | resolution: {integrity: sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==} 527 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 528 | 529 | '@typescript-eslint/type-utils@8.8.0': 530 | resolution: {integrity: sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==} 531 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 532 | peerDependencies: 533 | typescript: '*' 534 | peerDependenciesMeta: 535 | typescript: 536 | optional: true 537 | 538 | '@typescript-eslint/types@8.8.0': 539 | resolution: {integrity: sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==} 540 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 541 | 542 | '@typescript-eslint/typescript-estree@8.8.0': 543 | resolution: {integrity: sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==} 544 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 545 | peerDependencies: 546 | typescript: '*' 547 | peerDependenciesMeta: 548 | typescript: 549 | optional: true 550 | 551 | '@typescript-eslint/utils@8.8.0': 552 | resolution: {integrity: sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==} 553 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 554 | peerDependencies: 555 | eslint: ^8.57.0 || ^9.0.0 556 | 557 | '@typescript-eslint/visitor-keys@8.8.0': 558 | resolution: {integrity: sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==} 559 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 560 | 561 | '@vitest/coverage-v8@2.1.2': 562 | resolution: {integrity: sha512-b7kHrFrs2urS0cOk5N10lttI8UdJ/yP3nB4JYTREvR5o18cR99yPpK4gK8oQgI42BVv0ILWYUSYB7AXkAUDc0g==} 563 | peerDependencies: 564 | '@vitest/browser': 2.1.2 565 | vitest: 2.1.2 566 | peerDependenciesMeta: 567 | '@vitest/browser': 568 | optional: true 569 | 570 | '@vitest/expect@2.1.2': 571 | resolution: {integrity: sha512-FEgtlN8mIUSEAAnlvn7mP8vzaWhEaAEvhSXCqrsijM7K6QqjB11qoRZYEd4AKSCDz8p0/+yH5LzhZ47qt+EyPg==} 572 | 573 | '@vitest/mocker@2.1.2': 574 | resolution: {integrity: sha512-ExElkCGMS13JAJy+812fw1aCv2QO/LBK6CyO4WOPAzLTmve50gydOlWhgdBJPx2ztbADUq3JVI0C5U+bShaeEA==} 575 | peerDependencies: 576 | '@vitest/spy': 2.1.2 577 | msw: ^2.3.5 578 | vite: ^5.0.0 579 | peerDependenciesMeta: 580 | msw: 581 | optional: true 582 | vite: 583 | optional: true 584 | 585 | '@vitest/pretty-format@2.1.2': 586 | resolution: {integrity: sha512-FIoglbHrSUlOJPDGIrh2bjX1sNars5HbxlcsFKCtKzu4+5lpsRhOCVcuzp0fEhAGHkPZRIXVNzPcpSlkoZ3LuA==} 587 | 588 | '@vitest/runner@2.1.2': 589 | resolution: {integrity: sha512-UCsPtvluHO3u7jdoONGjOSil+uON5SSvU9buQh3lP7GgUXHp78guN1wRmZDX4wGK6J10f9NUtP6pO+SFquoMlw==} 590 | 591 | '@vitest/snapshot@2.1.2': 592 | resolution: {integrity: sha512-xtAeNsZ++aRIYIUsek7VHzry/9AcxeULlegBvsdLncLmNCR6tR8SRjn8BbDP4naxtccvzTqZ+L1ltZlRCfBZFA==} 593 | 594 | '@vitest/spy@2.1.2': 595 | resolution: {integrity: sha512-GSUi5zoy+abNRJwmFhBDC0yRuVUn8WMlQscvnbbXdKLXX9dE59YbfwXxuJ/mth6eeqIzofU8BB5XDo/Ns/qK2A==} 596 | 597 | '@vitest/ui@2.1.2': 598 | resolution: {integrity: sha512-92gcNzkDnmxOxyHzQrQYRsoV9Q0Aay0r4QMLnV+B+lbqlUWa8nDg9ivyLV5mMVTtGirHsYUGGh/zbIA55gBZqA==} 599 | peerDependencies: 600 | vitest: 2.1.2 601 | 602 | '@vitest/utils@2.1.2': 603 | resolution: {integrity: sha512-zMO2KdYy6mx56btx9JvAqAZ6EyS3g49krMPPrgOp1yxGZiA93HumGk+bZ5jIZtOg5/VBYl5eBmGRQHqq4FG6uQ==} 604 | 605 | '@volar/language-core@2.4.5': 606 | resolution: {integrity: sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww==} 607 | 608 | '@volar/source-map@2.4.5': 609 | resolution: {integrity: sha512-varwD7RaKE2J/Z+Zu6j3mNNJbNT394qIxXwdvz/4ao/vxOfyClZpSDtLKkwWmecinkOVos5+PWkWraelfMLfpw==} 610 | 611 | '@volar/typescript@2.4.5': 612 | resolution: {integrity: sha512-mcT1mHvLljAEtHviVcBuOyAwwMKz1ibXTi5uYtP/pf4XxoAzpdkQ+Br2IC0NPCvLCbjPZmbf3I0udndkfB1CDg==} 613 | 614 | '@vue/compiler-core@3.5.10': 615 | resolution: {integrity: sha512-iXWlk+Cg/ag7gLvY0SfVucU8Kh2CjysYZjhhP70w9qI4MvSox4frrP+vDGvtQuzIcgD8+sxM6lZvCtdxGunTAA==} 616 | 617 | '@vue/compiler-dom@3.5.10': 618 | resolution: {integrity: sha512-DyxHC6qPcktwYGKOIy3XqnHRrrXyWR2u91AjP+nLkADko380srsC2DC3s7Y1Rk6YfOlxOlvEQKa9XXmLI+W4ZA==} 619 | 620 | '@vue/compiler-vue2@2.7.16': 621 | resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} 622 | 623 | '@vue/language-core@2.1.6': 624 | resolution: {integrity: sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==} 625 | peerDependencies: 626 | typescript: '*' 627 | peerDependenciesMeta: 628 | typescript: 629 | optional: true 630 | 631 | '@vue/shared@3.5.10': 632 | resolution: {integrity: sha512-VkkBhU97Ki+XJ0xvl4C9YJsIZ2uIlQ7HqPpZOS3m9VCvmROPaChZU6DexdMJqvz9tbgG+4EtFVrSuailUq5KGQ==} 633 | 634 | acorn-jsx@5.3.2: 635 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 636 | peerDependencies: 637 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 638 | 639 | acorn@8.12.1: 640 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} 641 | engines: {node: '>=0.4.0'} 642 | hasBin: true 643 | 644 | ajv-draft-04@1.0.0: 645 | resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} 646 | peerDependencies: 647 | ajv: ^8.5.0 648 | peerDependenciesMeta: 649 | ajv: 650 | optional: true 651 | 652 | ajv-formats@3.0.1: 653 | resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} 654 | peerDependencies: 655 | ajv: ^8.0.0 656 | peerDependenciesMeta: 657 | ajv: 658 | optional: true 659 | 660 | ajv@6.12.6: 661 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 662 | 663 | ajv@8.12.0: 664 | resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} 665 | 666 | ajv@8.13.0: 667 | resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} 668 | 669 | ansi-colors@4.1.3: 670 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 671 | engines: {node: '>=6'} 672 | 673 | ansi-regex@5.0.1: 674 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 675 | engines: {node: '>=8'} 676 | 677 | ansi-regex@6.1.0: 678 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 679 | engines: {node: '>=12'} 680 | 681 | ansi-styles@4.3.0: 682 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 683 | engines: {node: '>=8'} 684 | 685 | ansi-styles@6.2.1: 686 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 687 | engines: {node: '>=12'} 688 | 689 | argparse@1.0.10: 690 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 691 | 692 | argparse@2.0.1: 693 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 694 | 695 | array-union@2.1.0: 696 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 697 | engines: {node: '>=8'} 698 | 699 | assertion-error@2.0.1: 700 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 701 | engines: {node: '>=12'} 702 | 703 | balanced-match@1.0.2: 704 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 705 | 706 | better-path-resolve@1.0.0: 707 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 708 | engines: {node: '>=4'} 709 | 710 | brace-expansion@1.1.11: 711 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 712 | 713 | brace-expansion@2.0.1: 714 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 715 | 716 | braces@3.0.3: 717 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 718 | engines: {node: '>=8'} 719 | 720 | cac@6.7.14: 721 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 722 | engines: {node: '>=8'} 723 | 724 | callsites@3.1.0: 725 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 726 | engines: {node: '>=6'} 727 | 728 | chai@5.1.1: 729 | resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} 730 | engines: {node: '>=12'} 731 | 732 | chalk@4.1.2: 733 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 734 | engines: {node: '>=10'} 735 | 736 | chardet@0.7.0: 737 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 738 | 739 | check-error@2.1.1: 740 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 741 | engines: {node: '>= 16'} 742 | 743 | ci-info@3.9.0: 744 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} 745 | engines: {node: '>=8'} 746 | 747 | color-convert@2.0.1: 748 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 749 | engines: {node: '>=7.0.0'} 750 | 751 | color-name@1.1.4: 752 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 753 | 754 | compare-versions@6.1.1: 755 | resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} 756 | 757 | computeds@0.0.1: 758 | resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} 759 | 760 | concat-map@0.0.1: 761 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 762 | 763 | confbox@0.1.7: 764 | resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} 765 | 766 | cross-spawn@5.1.0: 767 | resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} 768 | 769 | cross-spawn@7.0.3: 770 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 771 | engines: {node: '>= 8'} 772 | 773 | de-indent@1.0.2: 774 | resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} 775 | 776 | debug@4.3.7: 777 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} 778 | engines: {node: '>=6.0'} 779 | peerDependencies: 780 | supports-color: '*' 781 | peerDependenciesMeta: 782 | supports-color: 783 | optional: true 784 | 785 | deep-eql@5.0.2: 786 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 787 | engines: {node: '>=6'} 788 | 789 | deep-is@0.1.4: 790 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 791 | 792 | detect-indent@6.1.0: 793 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 794 | engines: {node: '>=8'} 795 | 796 | dir-glob@3.0.1: 797 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 798 | engines: {node: '>=8'} 799 | 800 | eastasianwidth@0.2.0: 801 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 802 | 803 | emoji-regex@8.0.0: 804 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 805 | 806 | emoji-regex@9.2.2: 807 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 808 | 809 | enquirer@2.4.1: 810 | resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} 811 | engines: {node: '>=8.6'} 812 | 813 | entities@4.5.0: 814 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 815 | engines: {node: '>=0.12'} 816 | 817 | error-kid@1.0.1: 818 | resolution: {integrity: sha512-kEPgCqlZ9Gfvr2NEQo/Y35bwYc6YKJOAGb2G8Qz6N7YVI4p+vEyDJ10b/ya/UXn6qMxmvuYzfJdylCuc8PFt1g==} 819 | 820 | esbuild@0.21.5: 821 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 822 | engines: {node: '>=12'} 823 | hasBin: true 824 | 825 | escape-string-regexp@4.0.0: 826 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 827 | engines: {node: '>=10'} 828 | 829 | eslint-scope@8.1.0: 830 | resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} 831 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 832 | 833 | eslint-visitor-keys@3.4.3: 834 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 835 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 836 | 837 | eslint-visitor-keys@4.1.0: 838 | resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} 839 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 840 | 841 | eslint@9.11.1: 842 | resolution: {integrity: sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==} 843 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 844 | hasBin: true 845 | peerDependencies: 846 | jiti: '*' 847 | peerDependenciesMeta: 848 | jiti: 849 | optional: true 850 | 851 | espree@10.2.0: 852 | resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} 853 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 854 | 855 | esprima@4.0.1: 856 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 857 | engines: {node: '>=4'} 858 | hasBin: true 859 | 860 | esquery@1.6.0: 861 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 862 | engines: {node: '>=0.10'} 863 | 864 | esrecurse@4.3.0: 865 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 866 | engines: {node: '>=4.0'} 867 | 868 | estraverse@5.3.0: 869 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 870 | engines: {node: '>=4.0'} 871 | 872 | estree-walker@2.0.2: 873 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 874 | 875 | estree-walker@3.0.3: 876 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 877 | 878 | esutils@2.0.3: 879 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 880 | engines: {node: '>=0.10.0'} 881 | 882 | extendable-error@0.1.7: 883 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 884 | 885 | external-editor@3.1.0: 886 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} 887 | engines: {node: '>=4'} 888 | 889 | fast-deep-equal@3.1.3: 890 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 891 | 892 | fast-glob@3.3.2: 893 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 894 | engines: {node: '>=8.6.0'} 895 | 896 | fast-json-stable-stringify@2.1.0: 897 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 898 | 899 | fast-levenshtein@2.0.6: 900 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 901 | 902 | fastq@1.17.1: 903 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 904 | 905 | fdir@6.4.0: 906 | resolution: {integrity: sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==} 907 | peerDependencies: 908 | picomatch: ^3 || ^4 909 | peerDependenciesMeta: 910 | picomatch: 911 | optional: true 912 | 913 | fflate@0.8.2: 914 | resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} 915 | 916 | file-entry-cache@8.0.0: 917 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 918 | engines: {node: '>=16.0.0'} 919 | 920 | fill-range@7.1.1: 921 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 922 | engines: {node: '>=8'} 923 | 924 | find-up@4.1.0: 925 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 926 | engines: {node: '>=8'} 927 | 928 | find-up@5.0.0: 929 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 930 | engines: {node: '>=10'} 931 | 932 | flat-cache@4.0.1: 933 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 934 | engines: {node: '>=16'} 935 | 936 | flatted@3.3.1: 937 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 938 | 939 | foreground-child@3.3.0: 940 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 941 | engines: {node: '>=14'} 942 | 943 | fs-extra@7.0.1: 944 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 945 | engines: {node: '>=6 <7 || >=8'} 946 | 947 | fs-extra@8.1.0: 948 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 949 | engines: {node: '>=6 <7 || >=8'} 950 | 951 | fsevents@2.3.3: 952 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 953 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 954 | os: [darwin] 955 | 956 | function-bind@1.1.2: 957 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 958 | 959 | get-func-name@2.0.2: 960 | resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} 961 | 962 | glob-parent@5.1.2: 963 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 964 | engines: {node: '>= 6'} 965 | 966 | glob-parent@6.0.2: 967 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 968 | engines: {node: '>=10.13.0'} 969 | 970 | glob@10.4.5: 971 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 972 | hasBin: true 973 | 974 | glob@11.0.0: 975 | resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} 976 | engines: {node: 20 || >=22} 977 | hasBin: true 978 | 979 | globals@14.0.0: 980 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 981 | engines: {node: '>=18'} 982 | 983 | globby@11.1.0: 984 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 985 | engines: {node: '>=10'} 986 | 987 | graceful-fs@4.2.11: 988 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 989 | 990 | graphemer@1.4.0: 991 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 992 | 993 | has-flag@4.0.0: 994 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 995 | engines: {node: '>=8'} 996 | 997 | hasown@2.0.2: 998 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 999 | engines: {node: '>= 0.4'} 1000 | 1001 | he@1.2.0: 1002 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} 1003 | hasBin: true 1004 | 1005 | html-escaper@2.0.2: 1006 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 1007 | 1008 | human-id@1.0.2: 1009 | resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} 1010 | 1011 | iconv-lite@0.4.24: 1012 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1013 | engines: {node: '>=0.10.0'} 1014 | 1015 | ignore@5.3.2: 1016 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1017 | engines: {node: '>= 4'} 1018 | 1019 | import-fresh@3.3.0: 1020 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1021 | engines: {node: '>=6'} 1022 | 1023 | import-lazy@4.0.0: 1024 | resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} 1025 | engines: {node: '>=8'} 1026 | 1027 | imurmurhash@0.1.4: 1028 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1029 | engines: {node: '>=0.8.19'} 1030 | 1031 | is-core-module@2.15.1: 1032 | resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} 1033 | engines: {node: '>= 0.4'} 1034 | 1035 | is-extglob@2.1.1: 1036 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1037 | engines: {node: '>=0.10.0'} 1038 | 1039 | is-fullwidth-code-point@3.0.0: 1040 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1041 | engines: {node: '>=8'} 1042 | 1043 | is-glob@4.0.3: 1044 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1045 | engines: {node: '>=0.10.0'} 1046 | 1047 | is-number@7.0.0: 1048 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1049 | engines: {node: '>=0.12.0'} 1050 | 1051 | is-path-inside@3.0.3: 1052 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1053 | engines: {node: '>=8'} 1054 | 1055 | is-subdir@1.2.0: 1056 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 1057 | engines: {node: '>=4'} 1058 | 1059 | is-windows@1.0.2: 1060 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 1061 | engines: {node: '>=0.10.0'} 1062 | 1063 | isexe@2.0.0: 1064 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1065 | 1066 | istanbul-lib-coverage@3.2.2: 1067 | resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} 1068 | engines: {node: '>=8'} 1069 | 1070 | istanbul-lib-report@3.0.1: 1071 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} 1072 | engines: {node: '>=10'} 1073 | 1074 | istanbul-lib-source-maps@5.0.6: 1075 | resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} 1076 | engines: {node: '>=10'} 1077 | 1078 | istanbul-reports@3.1.7: 1079 | resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} 1080 | engines: {node: '>=8'} 1081 | 1082 | jackspeak@3.4.3: 1083 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 1084 | 1085 | jackspeak@4.0.2: 1086 | resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} 1087 | engines: {node: 20 || >=22} 1088 | 1089 | jju@1.4.0: 1090 | resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} 1091 | 1092 | js-yaml@3.14.1: 1093 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1094 | hasBin: true 1095 | 1096 | js-yaml@4.1.0: 1097 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1098 | hasBin: true 1099 | 1100 | json-buffer@3.0.1: 1101 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1102 | 1103 | json-schema-traverse@0.4.1: 1104 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1105 | 1106 | json-schema-traverse@1.0.0: 1107 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 1108 | 1109 | json-stable-stringify-without-jsonify@1.0.1: 1110 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1111 | 1112 | jsonfile@4.0.0: 1113 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 1114 | 1115 | keyv@4.5.4: 1116 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1117 | 1118 | kolorist@1.8.0: 1119 | resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} 1120 | 1121 | levn@0.4.1: 1122 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1123 | engines: {node: '>= 0.8.0'} 1124 | 1125 | local-pkg@0.5.0: 1126 | resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} 1127 | engines: {node: '>=14'} 1128 | 1129 | locate-path@5.0.0: 1130 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1131 | engines: {node: '>=8'} 1132 | 1133 | locate-path@6.0.0: 1134 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1135 | engines: {node: '>=10'} 1136 | 1137 | lodash.merge@4.6.2: 1138 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1139 | 1140 | lodash.startcase@4.4.0: 1141 | resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} 1142 | 1143 | lodash@4.17.21: 1144 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1145 | 1146 | loupe@3.1.1: 1147 | resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} 1148 | 1149 | lru-cache@10.4.3: 1150 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1151 | 1152 | lru-cache@11.0.1: 1153 | resolution: {integrity: sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==} 1154 | engines: {node: 20 || >=22} 1155 | 1156 | lru-cache@4.1.5: 1157 | resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} 1158 | 1159 | lru-cache@6.0.0: 1160 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1161 | engines: {node: '>=10'} 1162 | 1163 | magic-string@0.30.11: 1164 | resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} 1165 | 1166 | magicast@0.3.5: 1167 | resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} 1168 | 1169 | make-dir@4.0.0: 1170 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} 1171 | engines: {node: '>=10'} 1172 | 1173 | merge2@1.4.1: 1174 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1175 | engines: {node: '>= 8'} 1176 | 1177 | micromatch@4.0.8: 1178 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1179 | engines: {node: '>=8.6'} 1180 | 1181 | minimatch@10.0.1: 1182 | resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} 1183 | engines: {node: 20 || >=22} 1184 | 1185 | minimatch@3.0.8: 1186 | resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} 1187 | 1188 | minimatch@3.1.2: 1189 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1190 | 1191 | minimatch@9.0.5: 1192 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1193 | engines: {node: '>=16 || 14 >=14.17'} 1194 | 1195 | minipass@7.1.2: 1196 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1197 | engines: {node: '>=16 || 14 >=14.17'} 1198 | 1199 | mlly@1.7.1: 1200 | resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} 1201 | 1202 | mri@1.2.0: 1203 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1204 | engines: {node: '>=4'} 1205 | 1206 | mrmime@2.0.0: 1207 | resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} 1208 | engines: {node: '>=10'} 1209 | 1210 | ms@2.1.3: 1211 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1212 | 1213 | muggle-string@0.4.1: 1214 | resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} 1215 | 1216 | nanoid@3.3.7: 1217 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 1218 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1219 | hasBin: true 1220 | 1221 | natural-compare@1.4.0: 1222 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1223 | 1224 | optionator@0.9.4: 1225 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1226 | engines: {node: '>= 0.8.0'} 1227 | 1228 | os-tmpdir@1.0.2: 1229 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} 1230 | engines: {node: '>=0.10.0'} 1231 | 1232 | outdent@0.5.0: 1233 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 1234 | 1235 | p-filter@2.1.0: 1236 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 1237 | engines: {node: '>=8'} 1238 | 1239 | p-limit@2.3.0: 1240 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1241 | engines: {node: '>=6'} 1242 | 1243 | p-limit@3.1.0: 1244 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1245 | engines: {node: '>=10'} 1246 | 1247 | p-locate@4.1.0: 1248 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1249 | engines: {node: '>=8'} 1250 | 1251 | p-locate@5.0.0: 1252 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1253 | engines: {node: '>=10'} 1254 | 1255 | p-map@2.1.0: 1256 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 1257 | engines: {node: '>=6'} 1258 | 1259 | p-try@2.2.0: 1260 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1261 | engines: {node: '>=6'} 1262 | 1263 | package-json-from-dist@1.0.1: 1264 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1265 | 1266 | package-manager-detector@0.2.0: 1267 | resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} 1268 | 1269 | parent-module@1.0.1: 1270 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1271 | engines: {node: '>=6'} 1272 | 1273 | path-browserify@1.0.1: 1274 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 1275 | 1276 | path-exists@4.0.0: 1277 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1278 | engines: {node: '>=8'} 1279 | 1280 | path-key@3.1.1: 1281 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1282 | engines: {node: '>=8'} 1283 | 1284 | path-parse@1.0.7: 1285 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1286 | 1287 | path-scurry@1.11.1: 1288 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1289 | engines: {node: '>=16 || 14 >=14.18'} 1290 | 1291 | path-scurry@2.0.0: 1292 | resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} 1293 | engines: {node: 20 || >=22} 1294 | 1295 | path-type@4.0.0: 1296 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1297 | engines: {node: '>=8'} 1298 | 1299 | pathe@1.1.2: 1300 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 1301 | 1302 | pathval@2.0.0: 1303 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 1304 | engines: {node: '>= 14.16'} 1305 | 1306 | picocolors@1.1.0: 1307 | resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} 1308 | 1309 | picomatch@2.3.1: 1310 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1311 | engines: {node: '>=8.6'} 1312 | 1313 | picomatch@4.0.2: 1314 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1315 | engines: {node: '>=12'} 1316 | 1317 | pify@4.0.1: 1318 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 1319 | engines: {node: '>=6'} 1320 | 1321 | pkg-types@1.2.0: 1322 | resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} 1323 | 1324 | postcss@8.4.47: 1325 | resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} 1326 | engines: {node: ^10 || ^12 || >=14} 1327 | 1328 | prelude-ls@1.2.1: 1329 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1330 | engines: {node: '>= 0.8.0'} 1331 | 1332 | prettier@2.8.8: 1333 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 1334 | engines: {node: '>=10.13.0'} 1335 | hasBin: true 1336 | 1337 | pseudomap@1.0.2: 1338 | resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} 1339 | 1340 | punycode@2.3.1: 1341 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1342 | engines: {node: '>=6'} 1343 | 1344 | queue-microtask@1.2.3: 1345 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1346 | 1347 | read-yaml-file@1.1.0: 1348 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 1349 | engines: {node: '>=6'} 1350 | 1351 | regenerator-runtime@0.14.1: 1352 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 1353 | 1354 | require-from-string@2.0.2: 1355 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 1356 | engines: {node: '>=0.10.0'} 1357 | 1358 | resolve-from@4.0.0: 1359 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1360 | engines: {node: '>=4'} 1361 | 1362 | resolve-from@5.0.0: 1363 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1364 | engines: {node: '>=8'} 1365 | 1366 | resolve@1.22.8: 1367 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 1368 | hasBin: true 1369 | 1370 | reusify@1.0.4: 1371 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1372 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1373 | 1374 | rimraf@6.0.1: 1375 | resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} 1376 | engines: {node: 20 || >=22} 1377 | hasBin: true 1378 | 1379 | rollup@4.24.0: 1380 | resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} 1381 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1382 | hasBin: true 1383 | 1384 | run-parallel@1.2.0: 1385 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1386 | 1387 | safer-buffer@2.1.2: 1388 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1389 | 1390 | semver@7.5.4: 1391 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 1392 | engines: {node: '>=10'} 1393 | hasBin: true 1394 | 1395 | semver@7.6.3: 1396 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1397 | engines: {node: '>=10'} 1398 | hasBin: true 1399 | 1400 | shebang-command@1.2.0: 1401 | resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} 1402 | engines: {node: '>=0.10.0'} 1403 | 1404 | shebang-command@2.0.0: 1405 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1406 | engines: {node: '>=8'} 1407 | 1408 | shebang-regex@1.0.0: 1409 | resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} 1410 | engines: {node: '>=0.10.0'} 1411 | 1412 | shebang-regex@3.0.0: 1413 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1414 | engines: {node: '>=8'} 1415 | 1416 | siginfo@2.0.0: 1417 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1418 | 1419 | signal-exit@3.0.7: 1420 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1421 | 1422 | signal-exit@4.1.0: 1423 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1424 | engines: {node: '>=14'} 1425 | 1426 | sirv@2.0.4: 1427 | resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} 1428 | engines: {node: '>= 10'} 1429 | 1430 | slash@3.0.0: 1431 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1432 | engines: {node: '>=8'} 1433 | 1434 | source-map-js@1.2.1: 1435 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1436 | engines: {node: '>=0.10.0'} 1437 | 1438 | source-map@0.6.1: 1439 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1440 | engines: {node: '>=0.10.0'} 1441 | 1442 | spawndamnit@2.0.0: 1443 | resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} 1444 | 1445 | sprintf-js@1.0.3: 1446 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 1447 | 1448 | stackback@0.0.2: 1449 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1450 | 1451 | std-env@3.7.0: 1452 | resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} 1453 | 1454 | string-argv@0.3.2: 1455 | resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} 1456 | engines: {node: '>=0.6.19'} 1457 | 1458 | string-width@4.2.3: 1459 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1460 | engines: {node: '>=8'} 1461 | 1462 | string-width@5.1.2: 1463 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1464 | engines: {node: '>=12'} 1465 | 1466 | strip-ansi@6.0.1: 1467 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1468 | engines: {node: '>=8'} 1469 | 1470 | strip-ansi@7.1.0: 1471 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1472 | engines: {node: '>=12'} 1473 | 1474 | strip-bom@3.0.0: 1475 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 1476 | engines: {node: '>=4'} 1477 | 1478 | strip-json-comments@3.1.1: 1479 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1480 | engines: {node: '>=8'} 1481 | 1482 | supports-color@7.2.0: 1483 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1484 | engines: {node: '>=8'} 1485 | 1486 | supports-color@8.1.1: 1487 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 1488 | engines: {node: '>=10'} 1489 | 1490 | supports-preserve-symlinks-flag@1.0.0: 1491 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1492 | engines: {node: '>= 0.4'} 1493 | 1494 | term-size@2.2.1: 1495 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 1496 | engines: {node: '>=8'} 1497 | 1498 | test-exclude@7.0.1: 1499 | resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} 1500 | engines: {node: '>=18'} 1501 | 1502 | text-table@0.2.0: 1503 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1504 | 1505 | tinybench@2.9.0: 1506 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 1507 | 1508 | tinyexec@0.3.0: 1509 | resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} 1510 | 1511 | tinyglobby@0.2.9: 1512 | resolution: {integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==} 1513 | engines: {node: '>=12.0.0'} 1514 | 1515 | tinypool@1.0.1: 1516 | resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} 1517 | engines: {node: ^18.0.0 || >=20.0.0} 1518 | 1519 | tinyrainbow@1.2.0: 1520 | resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} 1521 | engines: {node: '>=14.0.0'} 1522 | 1523 | tinyspy@3.0.2: 1524 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 1525 | engines: {node: '>=14.0.0'} 1526 | 1527 | tmp@0.0.33: 1528 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 1529 | engines: {node: '>=0.6.0'} 1530 | 1531 | to-fast-properties@2.0.0: 1532 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 1533 | engines: {node: '>=4'} 1534 | 1535 | to-regex-range@5.0.1: 1536 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1537 | engines: {node: '>=8.0'} 1538 | 1539 | totalist@3.0.1: 1540 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 1541 | engines: {node: '>=6'} 1542 | 1543 | ts-api-utils@1.3.0: 1544 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} 1545 | engines: {node: '>=16'} 1546 | peerDependencies: 1547 | typescript: '>=4.2.0' 1548 | 1549 | type-check@0.4.0: 1550 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1551 | engines: {node: '>= 0.8.0'} 1552 | 1553 | typescript-eslint@8.8.0: 1554 | resolution: {integrity: sha512-BjIT/VwJ8+0rVO01ZQ2ZVnjE1svFBiRczcpr1t1Yxt7sT25VSbPfrJtDsQ8uQTy2pilX5nI9gwxhUyLULNentw==} 1555 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1556 | peerDependencies: 1557 | typescript: '*' 1558 | peerDependenciesMeta: 1559 | typescript: 1560 | optional: true 1561 | 1562 | typescript@5.4.2: 1563 | resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} 1564 | engines: {node: '>=14.17'} 1565 | hasBin: true 1566 | 1567 | typescript@5.8.3: 1568 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 1569 | engines: {node: '>=14.17'} 1570 | hasBin: true 1571 | 1572 | ufo@1.5.4: 1573 | resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} 1574 | 1575 | universalify@0.1.2: 1576 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 1577 | engines: {node: '>= 4.0.0'} 1578 | 1579 | uri-js@4.4.1: 1580 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1581 | 1582 | vite-node@2.1.2: 1583 | resolution: {integrity: sha512-HPcGNN5g/7I2OtPjLqgOtCRu/qhVvBxTUD3qzitmL0SrG1cWFzxzhMDWussxSbrRYWqnKf8P2jiNhPMSN+ymsQ==} 1584 | engines: {node: ^18.0.0 || >=20.0.0} 1585 | hasBin: true 1586 | 1587 | vite-plugin-dts@4.2.3: 1588 | resolution: {integrity: sha512-O5NalzHANQRwVw1xj8KQun3Bv8OSDAlNJXrnqoAz10BOuW8FVvY5g4ygj+DlJZL5mtSPuMu9vd3OfrdW5d4k6w==} 1589 | engines: {node: ^14.18.0 || >=16.0.0} 1590 | peerDependencies: 1591 | typescript: '*' 1592 | vite: '*' 1593 | peerDependenciesMeta: 1594 | vite: 1595 | optional: true 1596 | 1597 | vite@5.4.8: 1598 | resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} 1599 | engines: {node: ^18.0.0 || >=20.0.0} 1600 | hasBin: true 1601 | peerDependencies: 1602 | '@types/node': ^18.0.0 || >=20.0.0 1603 | less: '*' 1604 | lightningcss: ^1.21.0 1605 | sass: '*' 1606 | sass-embedded: '*' 1607 | stylus: '*' 1608 | sugarss: '*' 1609 | terser: ^5.4.0 1610 | peerDependenciesMeta: 1611 | '@types/node': 1612 | optional: true 1613 | less: 1614 | optional: true 1615 | lightningcss: 1616 | optional: true 1617 | sass: 1618 | optional: true 1619 | sass-embedded: 1620 | optional: true 1621 | stylus: 1622 | optional: true 1623 | sugarss: 1624 | optional: true 1625 | terser: 1626 | optional: true 1627 | 1628 | vitest@2.1.2: 1629 | resolution: {integrity: sha512-veNjLizOMkRrJ6xxb+pvxN6/QAWg95mzcRjtmkepXdN87FNfxAss9RKe2far/G9cQpipfgP2taqg0KiWsquj8A==} 1630 | engines: {node: ^18.0.0 || >=20.0.0} 1631 | hasBin: true 1632 | peerDependencies: 1633 | '@edge-runtime/vm': '*' 1634 | '@types/node': ^18.0.0 || >=20.0.0 1635 | '@vitest/browser': 2.1.2 1636 | '@vitest/ui': 2.1.2 1637 | happy-dom: '*' 1638 | jsdom: '*' 1639 | peerDependenciesMeta: 1640 | '@edge-runtime/vm': 1641 | optional: true 1642 | '@types/node': 1643 | optional: true 1644 | '@vitest/browser': 1645 | optional: true 1646 | '@vitest/ui': 1647 | optional: true 1648 | happy-dom: 1649 | optional: true 1650 | jsdom: 1651 | optional: true 1652 | 1653 | vscode-uri@3.0.8: 1654 | resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} 1655 | 1656 | which@1.3.1: 1657 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} 1658 | hasBin: true 1659 | 1660 | which@2.0.2: 1661 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1662 | engines: {node: '>= 8'} 1663 | hasBin: true 1664 | 1665 | why-is-node-running@2.3.0: 1666 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1667 | engines: {node: '>=8'} 1668 | hasBin: true 1669 | 1670 | word-wrap@1.2.5: 1671 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1672 | engines: {node: '>=0.10.0'} 1673 | 1674 | wrap-ansi@7.0.0: 1675 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1676 | engines: {node: '>=10'} 1677 | 1678 | wrap-ansi@8.1.0: 1679 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1680 | engines: {node: '>=12'} 1681 | 1682 | yallist@2.1.2: 1683 | resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} 1684 | 1685 | yallist@4.0.0: 1686 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1687 | 1688 | yocto-queue@0.1.0: 1689 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1690 | engines: {node: '>=10'} 1691 | 1692 | snapshots: 1693 | 1694 | '@ampproject/remapping@2.3.0': 1695 | dependencies: 1696 | '@jridgewell/gen-mapping': 0.3.5 1697 | '@jridgewell/trace-mapping': 0.3.25 1698 | 1699 | '@babel/helper-string-parser@7.25.7': {} 1700 | 1701 | '@babel/helper-validator-identifier@7.25.7': {} 1702 | 1703 | '@babel/parser@7.25.7': 1704 | dependencies: 1705 | '@babel/types': 7.25.7 1706 | 1707 | '@babel/runtime@7.25.7': 1708 | dependencies: 1709 | regenerator-runtime: 0.14.1 1710 | 1711 | '@babel/types@7.25.7': 1712 | dependencies: 1713 | '@babel/helper-string-parser': 7.25.7 1714 | '@babel/helper-validator-identifier': 7.25.7 1715 | to-fast-properties: 2.0.0 1716 | 1717 | '@bcoe/v8-coverage@0.2.3': {} 1718 | 1719 | '@changesets/apply-release-plan@7.0.5': 1720 | dependencies: 1721 | '@changesets/config': 3.0.3 1722 | '@changesets/get-version-range-type': 0.4.0 1723 | '@changesets/git': 3.0.1 1724 | '@changesets/should-skip-package': 0.1.1 1725 | '@changesets/types': 6.0.0 1726 | '@manypkg/get-packages': 1.1.3 1727 | detect-indent: 6.1.0 1728 | fs-extra: 7.0.1 1729 | lodash.startcase: 4.4.0 1730 | outdent: 0.5.0 1731 | prettier: 2.8.8 1732 | resolve-from: 5.0.0 1733 | semver: 7.6.3 1734 | 1735 | '@changesets/assemble-release-plan@6.0.4': 1736 | dependencies: 1737 | '@changesets/errors': 0.2.0 1738 | '@changesets/get-dependents-graph': 2.1.2 1739 | '@changesets/should-skip-package': 0.1.1 1740 | '@changesets/types': 6.0.0 1741 | '@manypkg/get-packages': 1.1.3 1742 | semver: 7.6.3 1743 | 1744 | '@changesets/changelog-git@0.2.0': 1745 | dependencies: 1746 | '@changesets/types': 6.0.0 1747 | 1748 | '@changesets/cli@2.27.8': 1749 | dependencies: 1750 | '@changesets/apply-release-plan': 7.0.5 1751 | '@changesets/assemble-release-plan': 6.0.4 1752 | '@changesets/changelog-git': 0.2.0 1753 | '@changesets/config': 3.0.3 1754 | '@changesets/errors': 0.2.0 1755 | '@changesets/get-dependents-graph': 2.1.2 1756 | '@changesets/get-release-plan': 4.0.4 1757 | '@changesets/git': 3.0.1 1758 | '@changesets/logger': 0.1.1 1759 | '@changesets/pre': 2.0.1 1760 | '@changesets/read': 0.6.1 1761 | '@changesets/should-skip-package': 0.1.1 1762 | '@changesets/types': 6.0.0 1763 | '@changesets/write': 0.3.2 1764 | '@manypkg/get-packages': 1.1.3 1765 | '@types/semver': 7.5.8 1766 | ansi-colors: 4.1.3 1767 | ci-info: 3.9.0 1768 | enquirer: 2.4.1 1769 | external-editor: 3.1.0 1770 | fs-extra: 7.0.1 1771 | mri: 1.2.0 1772 | outdent: 0.5.0 1773 | p-limit: 2.3.0 1774 | package-manager-detector: 0.2.0 1775 | picocolors: 1.1.0 1776 | resolve-from: 5.0.0 1777 | semver: 7.6.3 1778 | spawndamnit: 2.0.0 1779 | term-size: 2.2.1 1780 | 1781 | '@changesets/config@3.0.3': 1782 | dependencies: 1783 | '@changesets/errors': 0.2.0 1784 | '@changesets/get-dependents-graph': 2.1.2 1785 | '@changesets/logger': 0.1.1 1786 | '@changesets/types': 6.0.0 1787 | '@manypkg/get-packages': 1.1.3 1788 | fs-extra: 7.0.1 1789 | micromatch: 4.0.8 1790 | 1791 | '@changesets/errors@0.2.0': 1792 | dependencies: 1793 | extendable-error: 0.1.7 1794 | 1795 | '@changesets/get-dependents-graph@2.1.2': 1796 | dependencies: 1797 | '@changesets/types': 6.0.0 1798 | '@manypkg/get-packages': 1.1.3 1799 | picocolors: 1.1.0 1800 | semver: 7.6.3 1801 | 1802 | '@changesets/get-release-plan@4.0.4': 1803 | dependencies: 1804 | '@changesets/assemble-release-plan': 6.0.4 1805 | '@changesets/config': 3.0.3 1806 | '@changesets/pre': 2.0.1 1807 | '@changesets/read': 0.6.1 1808 | '@changesets/types': 6.0.0 1809 | '@manypkg/get-packages': 1.1.3 1810 | 1811 | '@changesets/get-version-range-type@0.4.0': {} 1812 | 1813 | '@changesets/git@3.0.1': 1814 | dependencies: 1815 | '@changesets/errors': 0.2.0 1816 | '@manypkg/get-packages': 1.1.3 1817 | is-subdir: 1.2.0 1818 | micromatch: 4.0.8 1819 | spawndamnit: 2.0.0 1820 | 1821 | '@changesets/logger@0.1.1': 1822 | dependencies: 1823 | picocolors: 1.1.0 1824 | 1825 | '@changesets/parse@0.4.0': 1826 | dependencies: 1827 | '@changesets/types': 6.0.0 1828 | js-yaml: 3.14.1 1829 | 1830 | '@changesets/pre@2.0.1': 1831 | dependencies: 1832 | '@changesets/errors': 0.2.0 1833 | '@changesets/types': 6.0.0 1834 | '@manypkg/get-packages': 1.1.3 1835 | fs-extra: 7.0.1 1836 | 1837 | '@changesets/read@0.6.1': 1838 | dependencies: 1839 | '@changesets/git': 3.0.1 1840 | '@changesets/logger': 0.1.1 1841 | '@changesets/parse': 0.4.0 1842 | '@changesets/types': 6.0.0 1843 | fs-extra: 7.0.1 1844 | p-filter: 2.1.0 1845 | picocolors: 1.1.0 1846 | 1847 | '@changesets/should-skip-package@0.1.1': 1848 | dependencies: 1849 | '@changesets/types': 6.0.0 1850 | '@manypkg/get-packages': 1.1.3 1851 | 1852 | '@changesets/types@4.1.0': {} 1853 | 1854 | '@changesets/types@6.0.0': {} 1855 | 1856 | '@changesets/write@0.3.2': 1857 | dependencies: 1858 | '@changesets/types': 6.0.0 1859 | fs-extra: 7.0.1 1860 | human-id: 1.0.2 1861 | prettier: 2.8.8 1862 | 1863 | '@esbuild/aix-ppc64@0.21.5': 1864 | optional: true 1865 | 1866 | '@esbuild/android-arm64@0.21.5': 1867 | optional: true 1868 | 1869 | '@esbuild/android-arm@0.21.5': 1870 | optional: true 1871 | 1872 | '@esbuild/android-x64@0.21.5': 1873 | optional: true 1874 | 1875 | '@esbuild/darwin-arm64@0.21.5': 1876 | optional: true 1877 | 1878 | '@esbuild/darwin-x64@0.21.5': 1879 | optional: true 1880 | 1881 | '@esbuild/freebsd-arm64@0.21.5': 1882 | optional: true 1883 | 1884 | '@esbuild/freebsd-x64@0.21.5': 1885 | optional: true 1886 | 1887 | '@esbuild/linux-arm64@0.21.5': 1888 | optional: true 1889 | 1890 | '@esbuild/linux-arm@0.21.5': 1891 | optional: true 1892 | 1893 | '@esbuild/linux-ia32@0.21.5': 1894 | optional: true 1895 | 1896 | '@esbuild/linux-loong64@0.21.5': 1897 | optional: true 1898 | 1899 | '@esbuild/linux-mips64el@0.21.5': 1900 | optional: true 1901 | 1902 | '@esbuild/linux-ppc64@0.21.5': 1903 | optional: true 1904 | 1905 | '@esbuild/linux-riscv64@0.21.5': 1906 | optional: true 1907 | 1908 | '@esbuild/linux-s390x@0.21.5': 1909 | optional: true 1910 | 1911 | '@esbuild/linux-x64@0.21.5': 1912 | optional: true 1913 | 1914 | '@esbuild/netbsd-x64@0.21.5': 1915 | optional: true 1916 | 1917 | '@esbuild/openbsd-x64@0.21.5': 1918 | optional: true 1919 | 1920 | '@esbuild/sunos-x64@0.21.5': 1921 | optional: true 1922 | 1923 | '@esbuild/win32-arm64@0.21.5': 1924 | optional: true 1925 | 1926 | '@esbuild/win32-ia32@0.21.5': 1927 | optional: true 1928 | 1929 | '@esbuild/win32-x64@0.21.5': 1930 | optional: true 1931 | 1932 | '@eslint-community/eslint-utils@4.4.0(eslint@9.11.1)': 1933 | dependencies: 1934 | eslint: 9.11.1 1935 | eslint-visitor-keys: 3.4.3 1936 | 1937 | '@eslint-community/regexpp@4.11.1': {} 1938 | 1939 | '@eslint/config-array@0.18.0': 1940 | dependencies: 1941 | '@eslint/object-schema': 2.1.4 1942 | debug: 4.3.7 1943 | minimatch: 3.1.2 1944 | transitivePeerDependencies: 1945 | - supports-color 1946 | 1947 | '@eslint/core@0.6.0': {} 1948 | 1949 | '@eslint/eslintrc@3.1.0': 1950 | dependencies: 1951 | ajv: 6.12.6 1952 | debug: 4.3.7 1953 | espree: 10.2.0 1954 | globals: 14.0.0 1955 | ignore: 5.3.2 1956 | import-fresh: 3.3.0 1957 | js-yaml: 4.1.0 1958 | minimatch: 3.1.2 1959 | strip-json-comments: 3.1.1 1960 | transitivePeerDependencies: 1961 | - supports-color 1962 | 1963 | '@eslint/js@9.11.1': {} 1964 | 1965 | '@eslint/object-schema@2.1.4': {} 1966 | 1967 | '@eslint/plugin-kit@0.2.0': 1968 | dependencies: 1969 | levn: 0.4.1 1970 | 1971 | '@humanwhocodes/module-importer@1.0.1': {} 1972 | 1973 | '@humanwhocodes/retry@0.3.0': {} 1974 | 1975 | '@isaacs/cliui@8.0.2': 1976 | dependencies: 1977 | string-width: 5.1.2 1978 | string-width-cjs: string-width@4.2.3 1979 | strip-ansi: 7.1.0 1980 | strip-ansi-cjs: strip-ansi@6.0.1 1981 | wrap-ansi: 8.1.0 1982 | wrap-ansi-cjs: wrap-ansi@7.0.0 1983 | 1984 | '@istanbuljs/schema@0.1.3': {} 1985 | 1986 | '@jridgewell/gen-mapping@0.3.5': 1987 | dependencies: 1988 | '@jridgewell/set-array': 1.2.1 1989 | '@jridgewell/sourcemap-codec': 1.5.0 1990 | '@jridgewell/trace-mapping': 0.3.25 1991 | 1992 | '@jridgewell/resolve-uri@3.1.2': {} 1993 | 1994 | '@jridgewell/set-array@1.2.1': {} 1995 | 1996 | '@jridgewell/sourcemap-codec@1.5.0': {} 1997 | 1998 | '@jridgewell/trace-mapping@0.3.25': 1999 | dependencies: 2000 | '@jridgewell/resolve-uri': 3.1.2 2001 | '@jridgewell/sourcemap-codec': 1.5.0 2002 | 2003 | '@manypkg/find-root@1.1.0': 2004 | dependencies: 2005 | '@babel/runtime': 7.25.7 2006 | '@types/node': 12.20.55 2007 | find-up: 4.1.0 2008 | fs-extra: 8.1.0 2009 | 2010 | '@manypkg/get-packages@1.1.3': 2011 | dependencies: 2012 | '@babel/runtime': 7.25.7 2013 | '@changesets/types': 4.1.0 2014 | '@manypkg/find-root': 1.1.0 2015 | fs-extra: 8.1.0 2016 | globby: 11.1.0 2017 | read-yaml-file: 1.1.0 2018 | 2019 | '@microsoft/api-extractor-model@7.29.6': 2020 | dependencies: 2021 | '@microsoft/tsdoc': 0.15.0 2022 | '@microsoft/tsdoc-config': 0.17.0 2023 | '@rushstack/node-core-library': 5.7.0 2024 | transitivePeerDependencies: 2025 | - '@types/node' 2026 | 2027 | '@microsoft/api-extractor@7.47.7': 2028 | dependencies: 2029 | '@microsoft/api-extractor-model': 7.29.6 2030 | '@microsoft/tsdoc': 0.15.0 2031 | '@microsoft/tsdoc-config': 0.17.0 2032 | '@rushstack/node-core-library': 5.7.0 2033 | '@rushstack/rig-package': 0.5.3 2034 | '@rushstack/terminal': 0.14.0 2035 | '@rushstack/ts-command-line': 4.22.6 2036 | lodash: 4.17.21 2037 | minimatch: 3.0.8 2038 | resolve: 1.22.8 2039 | semver: 7.5.4 2040 | source-map: 0.6.1 2041 | typescript: 5.4.2 2042 | transitivePeerDependencies: 2043 | - '@types/node' 2044 | 2045 | '@microsoft/tsdoc-config@0.17.0': 2046 | dependencies: 2047 | '@microsoft/tsdoc': 0.15.0 2048 | ajv: 8.12.0 2049 | jju: 1.4.0 2050 | resolve: 1.22.8 2051 | 2052 | '@microsoft/tsdoc@0.15.0': {} 2053 | 2054 | '@nodelib/fs.scandir@2.1.5': 2055 | dependencies: 2056 | '@nodelib/fs.stat': 2.0.5 2057 | run-parallel: 1.2.0 2058 | 2059 | '@nodelib/fs.stat@2.0.5': {} 2060 | 2061 | '@nodelib/fs.walk@1.2.8': 2062 | dependencies: 2063 | '@nodelib/fs.scandir': 2.1.5 2064 | fastq: 1.17.1 2065 | 2066 | '@pkgjs/parseargs@0.11.0': 2067 | optional: true 2068 | 2069 | '@polka/url@1.0.0-next.28': {} 2070 | 2071 | '@rollup/pluginutils@5.1.2(rollup@4.24.0)': 2072 | dependencies: 2073 | '@types/estree': 1.0.6 2074 | estree-walker: 2.0.2 2075 | picomatch: 2.3.1 2076 | optionalDependencies: 2077 | rollup: 4.24.0 2078 | 2079 | '@rollup/rollup-android-arm-eabi@4.24.0': 2080 | optional: true 2081 | 2082 | '@rollup/rollup-android-arm64@4.24.0': 2083 | optional: true 2084 | 2085 | '@rollup/rollup-darwin-arm64@4.24.0': 2086 | optional: true 2087 | 2088 | '@rollup/rollup-darwin-x64@4.24.0': 2089 | optional: true 2090 | 2091 | '@rollup/rollup-linux-arm-gnueabihf@4.24.0': 2092 | optional: true 2093 | 2094 | '@rollup/rollup-linux-arm-musleabihf@4.24.0': 2095 | optional: true 2096 | 2097 | '@rollup/rollup-linux-arm64-gnu@4.24.0': 2098 | optional: true 2099 | 2100 | '@rollup/rollup-linux-arm64-musl@4.24.0': 2101 | optional: true 2102 | 2103 | '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': 2104 | optional: true 2105 | 2106 | '@rollup/rollup-linux-riscv64-gnu@4.24.0': 2107 | optional: true 2108 | 2109 | '@rollup/rollup-linux-s390x-gnu@4.24.0': 2110 | optional: true 2111 | 2112 | '@rollup/rollup-linux-x64-gnu@4.24.0': 2113 | optional: true 2114 | 2115 | '@rollup/rollup-linux-x64-musl@4.24.0': 2116 | optional: true 2117 | 2118 | '@rollup/rollup-win32-arm64-msvc@4.24.0': 2119 | optional: true 2120 | 2121 | '@rollup/rollup-win32-ia32-msvc@4.24.0': 2122 | optional: true 2123 | 2124 | '@rollup/rollup-win32-x64-msvc@4.24.0': 2125 | optional: true 2126 | 2127 | '@rushstack/node-core-library@5.7.0': 2128 | dependencies: 2129 | ajv: 8.13.0 2130 | ajv-draft-04: 1.0.0(ajv@8.13.0) 2131 | ajv-formats: 3.0.1(ajv@8.13.0) 2132 | fs-extra: 7.0.1 2133 | import-lazy: 4.0.0 2134 | jju: 1.4.0 2135 | resolve: 1.22.8 2136 | semver: 7.5.4 2137 | 2138 | '@rushstack/rig-package@0.5.3': 2139 | dependencies: 2140 | resolve: 1.22.8 2141 | strip-json-comments: 3.1.1 2142 | 2143 | '@rushstack/terminal@0.14.0': 2144 | dependencies: 2145 | '@rushstack/node-core-library': 5.7.0 2146 | supports-color: 8.1.1 2147 | 2148 | '@rushstack/ts-command-line@4.22.6': 2149 | dependencies: 2150 | '@rushstack/terminal': 0.14.0 2151 | '@types/argparse': 1.0.38 2152 | argparse: 1.0.10 2153 | string-argv: 0.3.2 2154 | transitivePeerDependencies: 2155 | - '@types/node' 2156 | 2157 | '@types/argparse@1.0.38': {} 2158 | 2159 | '@types/estree@1.0.6': {} 2160 | 2161 | '@types/json-schema@7.0.15': {} 2162 | 2163 | '@types/node@12.20.55': {} 2164 | 2165 | '@types/semver@7.5.8': {} 2166 | 2167 | '@typescript-eslint/eslint-plugin@8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1)(typescript@5.8.3))(eslint@9.11.1)(typescript@5.8.3)': 2168 | dependencies: 2169 | '@eslint-community/regexpp': 4.11.1 2170 | '@typescript-eslint/parser': 8.8.0(eslint@9.11.1)(typescript@5.8.3) 2171 | '@typescript-eslint/scope-manager': 8.8.0 2172 | '@typescript-eslint/type-utils': 8.8.0(eslint@9.11.1)(typescript@5.8.3) 2173 | '@typescript-eslint/utils': 8.8.0(eslint@9.11.1)(typescript@5.8.3) 2174 | '@typescript-eslint/visitor-keys': 8.8.0 2175 | eslint: 9.11.1 2176 | graphemer: 1.4.0 2177 | ignore: 5.3.2 2178 | natural-compare: 1.4.0 2179 | ts-api-utils: 1.3.0(typescript@5.8.3) 2180 | optionalDependencies: 2181 | typescript: 5.8.3 2182 | transitivePeerDependencies: 2183 | - supports-color 2184 | 2185 | '@typescript-eslint/parser@8.8.0(eslint@9.11.1)(typescript@5.8.3)': 2186 | dependencies: 2187 | '@typescript-eslint/scope-manager': 8.8.0 2188 | '@typescript-eslint/types': 8.8.0 2189 | '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.8.3) 2190 | '@typescript-eslint/visitor-keys': 8.8.0 2191 | debug: 4.3.7 2192 | eslint: 9.11.1 2193 | optionalDependencies: 2194 | typescript: 5.8.3 2195 | transitivePeerDependencies: 2196 | - supports-color 2197 | 2198 | '@typescript-eslint/scope-manager@8.8.0': 2199 | dependencies: 2200 | '@typescript-eslint/types': 8.8.0 2201 | '@typescript-eslint/visitor-keys': 8.8.0 2202 | 2203 | '@typescript-eslint/type-utils@8.8.0(eslint@9.11.1)(typescript@5.8.3)': 2204 | dependencies: 2205 | '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.8.3) 2206 | '@typescript-eslint/utils': 8.8.0(eslint@9.11.1)(typescript@5.8.3) 2207 | debug: 4.3.7 2208 | ts-api-utils: 1.3.0(typescript@5.8.3) 2209 | optionalDependencies: 2210 | typescript: 5.8.3 2211 | transitivePeerDependencies: 2212 | - eslint 2213 | - supports-color 2214 | 2215 | '@typescript-eslint/types@8.8.0': {} 2216 | 2217 | '@typescript-eslint/typescript-estree@8.8.0(typescript@5.8.3)': 2218 | dependencies: 2219 | '@typescript-eslint/types': 8.8.0 2220 | '@typescript-eslint/visitor-keys': 8.8.0 2221 | debug: 4.3.7 2222 | fast-glob: 3.3.2 2223 | is-glob: 4.0.3 2224 | minimatch: 9.0.5 2225 | semver: 7.6.3 2226 | ts-api-utils: 1.3.0(typescript@5.8.3) 2227 | optionalDependencies: 2228 | typescript: 5.8.3 2229 | transitivePeerDependencies: 2230 | - supports-color 2231 | 2232 | '@typescript-eslint/utils@8.8.0(eslint@9.11.1)(typescript@5.8.3)': 2233 | dependencies: 2234 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1) 2235 | '@typescript-eslint/scope-manager': 8.8.0 2236 | '@typescript-eslint/types': 8.8.0 2237 | '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.8.3) 2238 | eslint: 9.11.1 2239 | transitivePeerDependencies: 2240 | - supports-color 2241 | - typescript 2242 | 2243 | '@typescript-eslint/visitor-keys@8.8.0': 2244 | dependencies: 2245 | '@typescript-eslint/types': 8.8.0 2246 | eslint-visitor-keys: 3.4.3 2247 | 2248 | '@vitest/coverage-v8@2.1.2(vitest@2.1.2)': 2249 | dependencies: 2250 | '@ampproject/remapping': 2.3.0 2251 | '@bcoe/v8-coverage': 0.2.3 2252 | debug: 4.3.7 2253 | istanbul-lib-coverage: 3.2.2 2254 | istanbul-lib-report: 3.0.1 2255 | istanbul-lib-source-maps: 5.0.6 2256 | istanbul-reports: 3.1.7 2257 | magic-string: 0.30.11 2258 | magicast: 0.3.5 2259 | std-env: 3.7.0 2260 | test-exclude: 7.0.1 2261 | tinyrainbow: 1.2.0 2262 | vitest: 2.1.2(@vitest/ui@2.1.2) 2263 | transitivePeerDependencies: 2264 | - supports-color 2265 | 2266 | '@vitest/expect@2.1.2': 2267 | dependencies: 2268 | '@vitest/spy': 2.1.2 2269 | '@vitest/utils': 2.1.2 2270 | chai: 5.1.1 2271 | tinyrainbow: 1.2.0 2272 | 2273 | '@vitest/mocker@2.1.2(@vitest/spy@2.1.2)(vite@5.4.8)': 2274 | dependencies: 2275 | '@vitest/spy': 2.1.2 2276 | estree-walker: 3.0.3 2277 | magic-string: 0.30.11 2278 | optionalDependencies: 2279 | vite: 5.4.8 2280 | 2281 | '@vitest/pretty-format@2.1.2': 2282 | dependencies: 2283 | tinyrainbow: 1.2.0 2284 | 2285 | '@vitest/runner@2.1.2': 2286 | dependencies: 2287 | '@vitest/utils': 2.1.2 2288 | pathe: 1.1.2 2289 | 2290 | '@vitest/snapshot@2.1.2': 2291 | dependencies: 2292 | '@vitest/pretty-format': 2.1.2 2293 | magic-string: 0.30.11 2294 | pathe: 1.1.2 2295 | 2296 | '@vitest/spy@2.1.2': 2297 | dependencies: 2298 | tinyspy: 3.0.2 2299 | 2300 | '@vitest/ui@2.1.2(vitest@2.1.2)': 2301 | dependencies: 2302 | '@vitest/utils': 2.1.2 2303 | fflate: 0.8.2 2304 | flatted: 3.3.1 2305 | pathe: 1.1.2 2306 | sirv: 2.0.4 2307 | tinyglobby: 0.2.9 2308 | tinyrainbow: 1.2.0 2309 | vitest: 2.1.2(@vitest/ui@2.1.2) 2310 | 2311 | '@vitest/utils@2.1.2': 2312 | dependencies: 2313 | '@vitest/pretty-format': 2.1.2 2314 | loupe: 3.1.1 2315 | tinyrainbow: 1.2.0 2316 | 2317 | '@volar/language-core@2.4.5': 2318 | dependencies: 2319 | '@volar/source-map': 2.4.5 2320 | 2321 | '@volar/source-map@2.4.5': {} 2322 | 2323 | '@volar/typescript@2.4.5': 2324 | dependencies: 2325 | '@volar/language-core': 2.4.5 2326 | path-browserify: 1.0.1 2327 | vscode-uri: 3.0.8 2328 | 2329 | '@vue/compiler-core@3.5.10': 2330 | dependencies: 2331 | '@babel/parser': 7.25.7 2332 | '@vue/shared': 3.5.10 2333 | entities: 4.5.0 2334 | estree-walker: 2.0.2 2335 | source-map-js: 1.2.1 2336 | 2337 | '@vue/compiler-dom@3.5.10': 2338 | dependencies: 2339 | '@vue/compiler-core': 3.5.10 2340 | '@vue/shared': 3.5.10 2341 | 2342 | '@vue/compiler-vue2@2.7.16': 2343 | dependencies: 2344 | de-indent: 1.0.2 2345 | he: 1.2.0 2346 | 2347 | '@vue/language-core@2.1.6(typescript@5.8.3)': 2348 | dependencies: 2349 | '@volar/language-core': 2.4.5 2350 | '@vue/compiler-dom': 3.5.10 2351 | '@vue/compiler-vue2': 2.7.16 2352 | '@vue/shared': 3.5.10 2353 | computeds: 0.0.1 2354 | minimatch: 9.0.5 2355 | muggle-string: 0.4.1 2356 | path-browserify: 1.0.1 2357 | optionalDependencies: 2358 | typescript: 5.8.3 2359 | 2360 | '@vue/shared@3.5.10': {} 2361 | 2362 | acorn-jsx@5.3.2(acorn@8.12.1): 2363 | dependencies: 2364 | acorn: 8.12.1 2365 | 2366 | acorn@8.12.1: {} 2367 | 2368 | ajv-draft-04@1.0.0(ajv@8.13.0): 2369 | optionalDependencies: 2370 | ajv: 8.13.0 2371 | 2372 | ajv-formats@3.0.1(ajv@8.13.0): 2373 | optionalDependencies: 2374 | ajv: 8.13.0 2375 | 2376 | ajv@6.12.6: 2377 | dependencies: 2378 | fast-deep-equal: 3.1.3 2379 | fast-json-stable-stringify: 2.1.0 2380 | json-schema-traverse: 0.4.1 2381 | uri-js: 4.4.1 2382 | 2383 | ajv@8.12.0: 2384 | dependencies: 2385 | fast-deep-equal: 3.1.3 2386 | json-schema-traverse: 1.0.0 2387 | require-from-string: 2.0.2 2388 | uri-js: 4.4.1 2389 | 2390 | ajv@8.13.0: 2391 | dependencies: 2392 | fast-deep-equal: 3.1.3 2393 | json-schema-traverse: 1.0.0 2394 | require-from-string: 2.0.2 2395 | uri-js: 4.4.1 2396 | 2397 | ansi-colors@4.1.3: {} 2398 | 2399 | ansi-regex@5.0.1: {} 2400 | 2401 | ansi-regex@6.1.0: {} 2402 | 2403 | ansi-styles@4.3.0: 2404 | dependencies: 2405 | color-convert: 2.0.1 2406 | 2407 | ansi-styles@6.2.1: {} 2408 | 2409 | argparse@1.0.10: 2410 | dependencies: 2411 | sprintf-js: 1.0.3 2412 | 2413 | argparse@2.0.1: {} 2414 | 2415 | array-union@2.1.0: {} 2416 | 2417 | assertion-error@2.0.1: {} 2418 | 2419 | balanced-match@1.0.2: {} 2420 | 2421 | better-path-resolve@1.0.0: 2422 | dependencies: 2423 | is-windows: 1.0.2 2424 | 2425 | brace-expansion@1.1.11: 2426 | dependencies: 2427 | balanced-match: 1.0.2 2428 | concat-map: 0.0.1 2429 | 2430 | brace-expansion@2.0.1: 2431 | dependencies: 2432 | balanced-match: 1.0.2 2433 | 2434 | braces@3.0.3: 2435 | dependencies: 2436 | fill-range: 7.1.1 2437 | 2438 | cac@6.7.14: {} 2439 | 2440 | callsites@3.1.0: {} 2441 | 2442 | chai@5.1.1: 2443 | dependencies: 2444 | assertion-error: 2.0.1 2445 | check-error: 2.1.1 2446 | deep-eql: 5.0.2 2447 | loupe: 3.1.1 2448 | pathval: 2.0.0 2449 | 2450 | chalk@4.1.2: 2451 | dependencies: 2452 | ansi-styles: 4.3.0 2453 | supports-color: 7.2.0 2454 | 2455 | chardet@0.7.0: {} 2456 | 2457 | check-error@2.1.1: {} 2458 | 2459 | ci-info@3.9.0: {} 2460 | 2461 | color-convert@2.0.1: 2462 | dependencies: 2463 | color-name: 1.1.4 2464 | 2465 | color-name@1.1.4: {} 2466 | 2467 | compare-versions@6.1.1: {} 2468 | 2469 | computeds@0.0.1: {} 2470 | 2471 | concat-map@0.0.1: {} 2472 | 2473 | confbox@0.1.7: {} 2474 | 2475 | cross-spawn@5.1.0: 2476 | dependencies: 2477 | lru-cache: 4.1.5 2478 | shebang-command: 1.2.0 2479 | which: 1.3.1 2480 | 2481 | cross-spawn@7.0.3: 2482 | dependencies: 2483 | path-key: 3.1.1 2484 | shebang-command: 2.0.0 2485 | which: 2.0.2 2486 | 2487 | de-indent@1.0.2: {} 2488 | 2489 | debug@4.3.7: 2490 | dependencies: 2491 | ms: 2.1.3 2492 | 2493 | deep-eql@5.0.2: {} 2494 | 2495 | deep-is@0.1.4: {} 2496 | 2497 | detect-indent@6.1.0: {} 2498 | 2499 | dir-glob@3.0.1: 2500 | dependencies: 2501 | path-type: 4.0.0 2502 | 2503 | eastasianwidth@0.2.0: {} 2504 | 2505 | emoji-regex@8.0.0: {} 2506 | 2507 | emoji-regex@9.2.2: {} 2508 | 2509 | enquirer@2.4.1: 2510 | dependencies: 2511 | ansi-colors: 4.1.3 2512 | strip-ansi: 6.0.1 2513 | 2514 | entities@4.5.0: {} 2515 | 2516 | error-kid@1.0.1: {} 2517 | 2518 | esbuild@0.21.5: 2519 | optionalDependencies: 2520 | '@esbuild/aix-ppc64': 0.21.5 2521 | '@esbuild/android-arm': 0.21.5 2522 | '@esbuild/android-arm64': 0.21.5 2523 | '@esbuild/android-x64': 0.21.5 2524 | '@esbuild/darwin-arm64': 0.21.5 2525 | '@esbuild/darwin-x64': 0.21.5 2526 | '@esbuild/freebsd-arm64': 0.21.5 2527 | '@esbuild/freebsd-x64': 0.21.5 2528 | '@esbuild/linux-arm': 0.21.5 2529 | '@esbuild/linux-arm64': 0.21.5 2530 | '@esbuild/linux-ia32': 0.21.5 2531 | '@esbuild/linux-loong64': 0.21.5 2532 | '@esbuild/linux-mips64el': 0.21.5 2533 | '@esbuild/linux-ppc64': 0.21.5 2534 | '@esbuild/linux-riscv64': 0.21.5 2535 | '@esbuild/linux-s390x': 0.21.5 2536 | '@esbuild/linux-x64': 0.21.5 2537 | '@esbuild/netbsd-x64': 0.21.5 2538 | '@esbuild/openbsd-x64': 0.21.5 2539 | '@esbuild/sunos-x64': 0.21.5 2540 | '@esbuild/win32-arm64': 0.21.5 2541 | '@esbuild/win32-ia32': 0.21.5 2542 | '@esbuild/win32-x64': 0.21.5 2543 | 2544 | escape-string-regexp@4.0.0: {} 2545 | 2546 | eslint-scope@8.1.0: 2547 | dependencies: 2548 | esrecurse: 4.3.0 2549 | estraverse: 5.3.0 2550 | 2551 | eslint-visitor-keys@3.4.3: {} 2552 | 2553 | eslint-visitor-keys@4.1.0: {} 2554 | 2555 | eslint@9.11.1: 2556 | dependencies: 2557 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1) 2558 | '@eslint-community/regexpp': 4.11.1 2559 | '@eslint/config-array': 0.18.0 2560 | '@eslint/core': 0.6.0 2561 | '@eslint/eslintrc': 3.1.0 2562 | '@eslint/js': 9.11.1 2563 | '@eslint/plugin-kit': 0.2.0 2564 | '@humanwhocodes/module-importer': 1.0.1 2565 | '@humanwhocodes/retry': 0.3.0 2566 | '@nodelib/fs.walk': 1.2.8 2567 | '@types/estree': 1.0.6 2568 | '@types/json-schema': 7.0.15 2569 | ajv: 6.12.6 2570 | chalk: 4.1.2 2571 | cross-spawn: 7.0.3 2572 | debug: 4.3.7 2573 | escape-string-regexp: 4.0.0 2574 | eslint-scope: 8.1.0 2575 | eslint-visitor-keys: 4.1.0 2576 | espree: 10.2.0 2577 | esquery: 1.6.0 2578 | esutils: 2.0.3 2579 | fast-deep-equal: 3.1.3 2580 | file-entry-cache: 8.0.0 2581 | find-up: 5.0.0 2582 | glob-parent: 6.0.2 2583 | ignore: 5.3.2 2584 | imurmurhash: 0.1.4 2585 | is-glob: 4.0.3 2586 | is-path-inside: 3.0.3 2587 | json-stable-stringify-without-jsonify: 1.0.1 2588 | lodash.merge: 4.6.2 2589 | minimatch: 3.1.2 2590 | natural-compare: 1.4.0 2591 | optionator: 0.9.4 2592 | strip-ansi: 6.0.1 2593 | text-table: 0.2.0 2594 | transitivePeerDependencies: 2595 | - supports-color 2596 | 2597 | espree@10.2.0: 2598 | dependencies: 2599 | acorn: 8.12.1 2600 | acorn-jsx: 5.3.2(acorn@8.12.1) 2601 | eslint-visitor-keys: 4.1.0 2602 | 2603 | esprima@4.0.1: {} 2604 | 2605 | esquery@1.6.0: 2606 | dependencies: 2607 | estraverse: 5.3.0 2608 | 2609 | esrecurse@4.3.0: 2610 | dependencies: 2611 | estraverse: 5.3.0 2612 | 2613 | estraverse@5.3.0: {} 2614 | 2615 | estree-walker@2.0.2: {} 2616 | 2617 | estree-walker@3.0.3: 2618 | dependencies: 2619 | '@types/estree': 1.0.6 2620 | 2621 | esutils@2.0.3: {} 2622 | 2623 | extendable-error@0.1.7: {} 2624 | 2625 | external-editor@3.1.0: 2626 | dependencies: 2627 | chardet: 0.7.0 2628 | iconv-lite: 0.4.24 2629 | tmp: 0.0.33 2630 | 2631 | fast-deep-equal@3.1.3: {} 2632 | 2633 | fast-glob@3.3.2: 2634 | dependencies: 2635 | '@nodelib/fs.stat': 2.0.5 2636 | '@nodelib/fs.walk': 1.2.8 2637 | glob-parent: 5.1.2 2638 | merge2: 1.4.1 2639 | micromatch: 4.0.8 2640 | 2641 | fast-json-stable-stringify@2.1.0: {} 2642 | 2643 | fast-levenshtein@2.0.6: {} 2644 | 2645 | fastq@1.17.1: 2646 | dependencies: 2647 | reusify: 1.0.4 2648 | 2649 | fdir@6.4.0(picomatch@4.0.2): 2650 | optionalDependencies: 2651 | picomatch: 4.0.2 2652 | 2653 | fflate@0.8.2: {} 2654 | 2655 | file-entry-cache@8.0.0: 2656 | dependencies: 2657 | flat-cache: 4.0.1 2658 | 2659 | fill-range@7.1.1: 2660 | dependencies: 2661 | to-regex-range: 5.0.1 2662 | 2663 | find-up@4.1.0: 2664 | dependencies: 2665 | locate-path: 5.0.0 2666 | path-exists: 4.0.0 2667 | 2668 | find-up@5.0.0: 2669 | dependencies: 2670 | locate-path: 6.0.0 2671 | path-exists: 4.0.0 2672 | 2673 | flat-cache@4.0.1: 2674 | dependencies: 2675 | flatted: 3.3.1 2676 | keyv: 4.5.4 2677 | 2678 | flatted@3.3.1: {} 2679 | 2680 | foreground-child@3.3.0: 2681 | dependencies: 2682 | cross-spawn: 7.0.3 2683 | signal-exit: 4.1.0 2684 | 2685 | fs-extra@7.0.1: 2686 | dependencies: 2687 | graceful-fs: 4.2.11 2688 | jsonfile: 4.0.0 2689 | universalify: 0.1.2 2690 | 2691 | fs-extra@8.1.0: 2692 | dependencies: 2693 | graceful-fs: 4.2.11 2694 | jsonfile: 4.0.0 2695 | universalify: 0.1.2 2696 | 2697 | fsevents@2.3.3: 2698 | optional: true 2699 | 2700 | function-bind@1.1.2: {} 2701 | 2702 | get-func-name@2.0.2: {} 2703 | 2704 | glob-parent@5.1.2: 2705 | dependencies: 2706 | is-glob: 4.0.3 2707 | 2708 | glob-parent@6.0.2: 2709 | dependencies: 2710 | is-glob: 4.0.3 2711 | 2712 | glob@10.4.5: 2713 | dependencies: 2714 | foreground-child: 3.3.0 2715 | jackspeak: 3.4.3 2716 | minimatch: 9.0.5 2717 | minipass: 7.1.2 2718 | package-json-from-dist: 1.0.1 2719 | path-scurry: 1.11.1 2720 | 2721 | glob@11.0.0: 2722 | dependencies: 2723 | foreground-child: 3.3.0 2724 | jackspeak: 4.0.2 2725 | minimatch: 10.0.1 2726 | minipass: 7.1.2 2727 | package-json-from-dist: 1.0.1 2728 | path-scurry: 2.0.0 2729 | 2730 | globals@14.0.0: {} 2731 | 2732 | globby@11.1.0: 2733 | dependencies: 2734 | array-union: 2.1.0 2735 | dir-glob: 3.0.1 2736 | fast-glob: 3.3.2 2737 | ignore: 5.3.2 2738 | merge2: 1.4.1 2739 | slash: 3.0.0 2740 | 2741 | graceful-fs@4.2.11: {} 2742 | 2743 | graphemer@1.4.0: {} 2744 | 2745 | has-flag@4.0.0: {} 2746 | 2747 | hasown@2.0.2: 2748 | dependencies: 2749 | function-bind: 1.1.2 2750 | 2751 | he@1.2.0: {} 2752 | 2753 | html-escaper@2.0.2: {} 2754 | 2755 | human-id@1.0.2: {} 2756 | 2757 | iconv-lite@0.4.24: 2758 | dependencies: 2759 | safer-buffer: 2.1.2 2760 | 2761 | ignore@5.3.2: {} 2762 | 2763 | import-fresh@3.3.0: 2764 | dependencies: 2765 | parent-module: 1.0.1 2766 | resolve-from: 4.0.0 2767 | 2768 | import-lazy@4.0.0: {} 2769 | 2770 | imurmurhash@0.1.4: {} 2771 | 2772 | is-core-module@2.15.1: 2773 | dependencies: 2774 | hasown: 2.0.2 2775 | 2776 | is-extglob@2.1.1: {} 2777 | 2778 | is-fullwidth-code-point@3.0.0: {} 2779 | 2780 | is-glob@4.0.3: 2781 | dependencies: 2782 | is-extglob: 2.1.1 2783 | 2784 | is-number@7.0.0: {} 2785 | 2786 | is-path-inside@3.0.3: {} 2787 | 2788 | is-subdir@1.2.0: 2789 | dependencies: 2790 | better-path-resolve: 1.0.0 2791 | 2792 | is-windows@1.0.2: {} 2793 | 2794 | isexe@2.0.0: {} 2795 | 2796 | istanbul-lib-coverage@3.2.2: {} 2797 | 2798 | istanbul-lib-report@3.0.1: 2799 | dependencies: 2800 | istanbul-lib-coverage: 3.2.2 2801 | make-dir: 4.0.0 2802 | supports-color: 7.2.0 2803 | 2804 | istanbul-lib-source-maps@5.0.6: 2805 | dependencies: 2806 | '@jridgewell/trace-mapping': 0.3.25 2807 | debug: 4.3.7 2808 | istanbul-lib-coverage: 3.2.2 2809 | transitivePeerDependencies: 2810 | - supports-color 2811 | 2812 | istanbul-reports@3.1.7: 2813 | dependencies: 2814 | html-escaper: 2.0.2 2815 | istanbul-lib-report: 3.0.1 2816 | 2817 | jackspeak@3.4.3: 2818 | dependencies: 2819 | '@isaacs/cliui': 8.0.2 2820 | optionalDependencies: 2821 | '@pkgjs/parseargs': 0.11.0 2822 | 2823 | jackspeak@4.0.2: 2824 | dependencies: 2825 | '@isaacs/cliui': 8.0.2 2826 | 2827 | jju@1.4.0: {} 2828 | 2829 | js-yaml@3.14.1: 2830 | dependencies: 2831 | argparse: 1.0.10 2832 | esprima: 4.0.1 2833 | 2834 | js-yaml@4.1.0: 2835 | dependencies: 2836 | argparse: 2.0.1 2837 | 2838 | json-buffer@3.0.1: {} 2839 | 2840 | json-schema-traverse@0.4.1: {} 2841 | 2842 | json-schema-traverse@1.0.0: {} 2843 | 2844 | json-stable-stringify-without-jsonify@1.0.1: {} 2845 | 2846 | jsonfile@4.0.0: 2847 | optionalDependencies: 2848 | graceful-fs: 4.2.11 2849 | 2850 | keyv@4.5.4: 2851 | dependencies: 2852 | json-buffer: 3.0.1 2853 | 2854 | kolorist@1.8.0: {} 2855 | 2856 | levn@0.4.1: 2857 | dependencies: 2858 | prelude-ls: 1.2.1 2859 | type-check: 0.4.0 2860 | 2861 | local-pkg@0.5.0: 2862 | dependencies: 2863 | mlly: 1.7.1 2864 | pkg-types: 1.2.0 2865 | 2866 | locate-path@5.0.0: 2867 | dependencies: 2868 | p-locate: 4.1.0 2869 | 2870 | locate-path@6.0.0: 2871 | dependencies: 2872 | p-locate: 5.0.0 2873 | 2874 | lodash.merge@4.6.2: {} 2875 | 2876 | lodash.startcase@4.4.0: {} 2877 | 2878 | lodash@4.17.21: {} 2879 | 2880 | loupe@3.1.1: 2881 | dependencies: 2882 | get-func-name: 2.0.2 2883 | 2884 | lru-cache@10.4.3: {} 2885 | 2886 | lru-cache@11.0.1: {} 2887 | 2888 | lru-cache@4.1.5: 2889 | dependencies: 2890 | pseudomap: 1.0.2 2891 | yallist: 2.1.2 2892 | 2893 | lru-cache@6.0.0: 2894 | dependencies: 2895 | yallist: 4.0.0 2896 | 2897 | magic-string@0.30.11: 2898 | dependencies: 2899 | '@jridgewell/sourcemap-codec': 1.5.0 2900 | 2901 | magicast@0.3.5: 2902 | dependencies: 2903 | '@babel/parser': 7.25.7 2904 | '@babel/types': 7.25.7 2905 | source-map-js: 1.2.1 2906 | 2907 | make-dir@4.0.0: 2908 | dependencies: 2909 | semver: 7.6.3 2910 | 2911 | merge2@1.4.1: {} 2912 | 2913 | micromatch@4.0.8: 2914 | dependencies: 2915 | braces: 3.0.3 2916 | picomatch: 2.3.1 2917 | 2918 | minimatch@10.0.1: 2919 | dependencies: 2920 | brace-expansion: 2.0.1 2921 | 2922 | minimatch@3.0.8: 2923 | dependencies: 2924 | brace-expansion: 1.1.11 2925 | 2926 | minimatch@3.1.2: 2927 | dependencies: 2928 | brace-expansion: 1.1.11 2929 | 2930 | minimatch@9.0.5: 2931 | dependencies: 2932 | brace-expansion: 2.0.1 2933 | 2934 | minipass@7.1.2: {} 2935 | 2936 | mlly@1.7.1: 2937 | dependencies: 2938 | acorn: 8.12.1 2939 | pathe: 1.1.2 2940 | pkg-types: 1.2.0 2941 | ufo: 1.5.4 2942 | 2943 | mri@1.2.0: {} 2944 | 2945 | mrmime@2.0.0: {} 2946 | 2947 | ms@2.1.3: {} 2948 | 2949 | muggle-string@0.4.1: {} 2950 | 2951 | nanoid@3.3.7: {} 2952 | 2953 | natural-compare@1.4.0: {} 2954 | 2955 | optionator@0.9.4: 2956 | dependencies: 2957 | deep-is: 0.1.4 2958 | fast-levenshtein: 2.0.6 2959 | levn: 0.4.1 2960 | prelude-ls: 1.2.1 2961 | type-check: 0.4.0 2962 | word-wrap: 1.2.5 2963 | 2964 | os-tmpdir@1.0.2: {} 2965 | 2966 | outdent@0.5.0: {} 2967 | 2968 | p-filter@2.1.0: 2969 | dependencies: 2970 | p-map: 2.1.0 2971 | 2972 | p-limit@2.3.0: 2973 | dependencies: 2974 | p-try: 2.2.0 2975 | 2976 | p-limit@3.1.0: 2977 | dependencies: 2978 | yocto-queue: 0.1.0 2979 | 2980 | p-locate@4.1.0: 2981 | dependencies: 2982 | p-limit: 2.3.0 2983 | 2984 | p-locate@5.0.0: 2985 | dependencies: 2986 | p-limit: 3.1.0 2987 | 2988 | p-map@2.1.0: {} 2989 | 2990 | p-try@2.2.0: {} 2991 | 2992 | package-json-from-dist@1.0.1: {} 2993 | 2994 | package-manager-detector@0.2.0: {} 2995 | 2996 | parent-module@1.0.1: 2997 | dependencies: 2998 | callsites: 3.1.0 2999 | 3000 | path-browserify@1.0.1: {} 3001 | 3002 | path-exists@4.0.0: {} 3003 | 3004 | path-key@3.1.1: {} 3005 | 3006 | path-parse@1.0.7: {} 3007 | 3008 | path-scurry@1.11.1: 3009 | dependencies: 3010 | lru-cache: 10.4.3 3011 | minipass: 7.1.2 3012 | 3013 | path-scurry@2.0.0: 3014 | dependencies: 3015 | lru-cache: 11.0.1 3016 | minipass: 7.1.2 3017 | 3018 | path-type@4.0.0: {} 3019 | 3020 | pathe@1.1.2: {} 3021 | 3022 | pathval@2.0.0: {} 3023 | 3024 | picocolors@1.1.0: {} 3025 | 3026 | picomatch@2.3.1: {} 3027 | 3028 | picomatch@4.0.2: {} 3029 | 3030 | pify@4.0.1: {} 3031 | 3032 | pkg-types@1.2.0: 3033 | dependencies: 3034 | confbox: 0.1.7 3035 | mlly: 1.7.1 3036 | pathe: 1.1.2 3037 | 3038 | postcss@8.4.47: 3039 | dependencies: 3040 | nanoid: 3.3.7 3041 | picocolors: 1.1.0 3042 | source-map-js: 1.2.1 3043 | 3044 | prelude-ls@1.2.1: {} 3045 | 3046 | prettier@2.8.8: {} 3047 | 3048 | pseudomap@1.0.2: {} 3049 | 3050 | punycode@2.3.1: {} 3051 | 3052 | queue-microtask@1.2.3: {} 3053 | 3054 | read-yaml-file@1.1.0: 3055 | dependencies: 3056 | graceful-fs: 4.2.11 3057 | js-yaml: 3.14.1 3058 | pify: 4.0.1 3059 | strip-bom: 3.0.0 3060 | 3061 | regenerator-runtime@0.14.1: {} 3062 | 3063 | require-from-string@2.0.2: {} 3064 | 3065 | resolve-from@4.0.0: {} 3066 | 3067 | resolve-from@5.0.0: {} 3068 | 3069 | resolve@1.22.8: 3070 | dependencies: 3071 | is-core-module: 2.15.1 3072 | path-parse: 1.0.7 3073 | supports-preserve-symlinks-flag: 1.0.0 3074 | 3075 | reusify@1.0.4: {} 3076 | 3077 | rimraf@6.0.1: 3078 | dependencies: 3079 | glob: 11.0.0 3080 | package-json-from-dist: 1.0.1 3081 | 3082 | rollup@4.24.0: 3083 | dependencies: 3084 | '@types/estree': 1.0.6 3085 | optionalDependencies: 3086 | '@rollup/rollup-android-arm-eabi': 4.24.0 3087 | '@rollup/rollup-android-arm64': 4.24.0 3088 | '@rollup/rollup-darwin-arm64': 4.24.0 3089 | '@rollup/rollup-darwin-x64': 4.24.0 3090 | '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 3091 | '@rollup/rollup-linux-arm-musleabihf': 4.24.0 3092 | '@rollup/rollup-linux-arm64-gnu': 4.24.0 3093 | '@rollup/rollup-linux-arm64-musl': 4.24.0 3094 | '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 3095 | '@rollup/rollup-linux-riscv64-gnu': 4.24.0 3096 | '@rollup/rollup-linux-s390x-gnu': 4.24.0 3097 | '@rollup/rollup-linux-x64-gnu': 4.24.0 3098 | '@rollup/rollup-linux-x64-musl': 4.24.0 3099 | '@rollup/rollup-win32-arm64-msvc': 4.24.0 3100 | '@rollup/rollup-win32-ia32-msvc': 4.24.0 3101 | '@rollup/rollup-win32-x64-msvc': 4.24.0 3102 | fsevents: 2.3.3 3103 | 3104 | run-parallel@1.2.0: 3105 | dependencies: 3106 | queue-microtask: 1.2.3 3107 | 3108 | safer-buffer@2.1.2: {} 3109 | 3110 | semver@7.5.4: 3111 | dependencies: 3112 | lru-cache: 6.0.0 3113 | 3114 | semver@7.6.3: {} 3115 | 3116 | shebang-command@1.2.0: 3117 | dependencies: 3118 | shebang-regex: 1.0.0 3119 | 3120 | shebang-command@2.0.0: 3121 | dependencies: 3122 | shebang-regex: 3.0.0 3123 | 3124 | shebang-regex@1.0.0: {} 3125 | 3126 | shebang-regex@3.0.0: {} 3127 | 3128 | siginfo@2.0.0: {} 3129 | 3130 | signal-exit@3.0.7: {} 3131 | 3132 | signal-exit@4.1.0: {} 3133 | 3134 | sirv@2.0.4: 3135 | dependencies: 3136 | '@polka/url': 1.0.0-next.28 3137 | mrmime: 2.0.0 3138 | totalist: 3.0.1 3139 | 3140 | slash@3.0.0: {} 3141 | 3142 | source-map-js@1.2.1: {} 3143 | 3144 | source-map@0.6.1: {} 3145 | 3146 | spawndamnit@2.0.0: 3147 | dependencies: 3148 | cross-spawn: 5.1.0 3149 | signal-exit: 3.0.7 3150 | 3151 | sprintf-js@1.0.3: {} 3152 | 3153 | stackback@0.0.2: {} 3154 | 3155 | std-env@3.7.0: {} 3156 | 3157 | string-argv@0.3.2: {} 3158 | 3159 | string-width@4.2.3: 3160 | dependencies: 3161 | emoji-regex: 8.0.0 3162 | is-fullwidth-code-point: 3.0.0 3163 | strip-ansi: 6.0.1 3164 | 3165 | string-width@5.1.2: 3166 | dependencies: 3167 | eastasianwidth: 0.2.0 3168 | emoji-regex: 9.2.2 3169 | strip-ansi: 7.1.0 3170 | 3171 | strip-ansi@6.0.1: 3172 | dependencies: 3173 | ansi-regex: 5.0.1 3174 | 3175 | strip-ansi@7.1.0: 3176 | dependencies: 3177 | ansi-regex: 6.1.0 3178 | 3179 | strip-bom@3.0.0: {} 3180 | 3181 | strip-json-comments@3.1.1: {} 3182 | 3183 | supports-color@7.2.0: 3184 | dependencies: 3185 | has-flag: 4.0.0 3186 | 3187 | supports-color@8.1.1: 3188 | dependencies: 3189 | has-flag: 4.0.0 3190 | 3191 | supports-preserve-symlinks-flag@1.0.0: {} 3192 | 3193 | term-size@2.2.1: {} 3194 | 3195 | test-exclude@7.0.1: 3196 | dependencies: 3197 | '@istanbuljs/schema': 0.1.3 3198 | glob: 10.4.5 3199 | minimatch: 9.0.5 3200 | 3201 | text-table@0.2.0: {} 3202 | 3203 | tinybench@2.9.0: {} 3204 | 3205 | tinyexec@0.3.0: {} 3206 | 3207 | tinyglobby@0.2.9: 3208 | dependencies: 3209 | fdir: 6.4.0(picomatch@4.0.2) 3210 | picomatch: 4.0.2 3211 | 3212 | tinypool@1.0.1: {} 3213 | 3214 | tinyrainbow@1.2.0: {} 3215 | 3216 | tinyspy@3.0.2: {} 3217 | 3218 | tmp@0.0.33: 3219 | dependencies: 3220 | os-tmpdir: 1.0.2 3221 | 3222 | to-fast-properties@2.0.0: {} 3223 | 3224 | to-regex-range@5.0.1: 3225 | dependencies: 3226 | is-number: 7.0.0 3227 | 3228 | totalist@3.0.1: {} 3229 | 3230 | ts-api-utils@1.3.0(typescript@5.8.3): 3231 | dependencies: 3232 | typescript: 5.8.3 3233 | 3234 | type-check@0.4.0: 3235 | dependencies: 3236 | prelude-ls: 1.2.1 3237 | 3238 | typescript-eslint@8.8.0(eslint@9.11.1)(typescript@5.8.3): 3239 | dependencies: 3240 | '@typescript-eslint/eslint-plugin': 8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1)(typescript@5.8.3))(eslint@9.11.1)(typescript@5.8.3) 3241 | '@typescript-eslint/parser': 8.8.0(eslint@9.11.1)(typescript@5.8.3) 3242 | '@typescript-eslint/utils': 8.8.0(eslint@9.11.1)(typescript@5.8.3) 3243 | optionalDependencies: 3244 | typescript: 5.8.3 3245 | transitivePeerDependencies: 3246 | - eslint 3247 | - supports-color 3248 | 3249 | typescript@5.4.2: {} 3250 | 3251 | typescript@5.8.3: {} 3252 | 3253 | ufo@1.5.4: {} 3254 | 3255 | universalify@0.1.2: {} 3256 | 3257 | uri-js@4.4.1: 3258 | dependencies: 3259 | punycode: 2.3.1 3260 | 3261 | vite-node@2.1.2: 3262 | dependencies: 3263 | cac: 6.7.14 3264 | debug: 4.3.7 3265 | pathe: 1.1.2 3266 | vite: 5.4.8 3267 | transitivePeerDependencies: 3268 | - '@types/node' 3269 | - less 3270 | - lightningcss 3271 | - sass 3272 | - sass-embedded 3273 | - stylus 3274 | - sugarss 3275 | - supports-color 3276 | - terser 3277 | 3278 | vite-plugin-dts@4.2.3(rollup@4.24.0)(typescript@5.8.3)(vite@5.4.8): 3279 | dependencies: 3280 | '@microsoft/api-extractor': 7.47.7 3281 | '@rollup/pluginutils': 5.1.2(rollup@4.24.0) 3282 | '@volar/typescript': 2.4.5 3283 | '@vue/language-core': 2.1.6(typescript@5.8.3) 3284 | compare-versions: 6.1.1 3285 | debug: 4.3.7 3286 | kolorist: 1.8.0 3287 | local-pkg: 0.5.0 3288 | magic-string: 0.30.11 3289 | typescript: 5.8.3 3290 | optionalDependencies: 3291 | vite: 5.4.8 3292 | transitivePeerDependencies: 3293 | - '@types/node' 3294 | - rollup 3295 | - supports-color 3296 | 3297 | vite@5.4.8: 3298 | dependencies: 3299 | esbuild: 0.21.5 3300 | postcss: 8.4.47 3301 | rollup: 4.24.0 3302 | optionalDependencies: 3303 | fsevents: 2.3.3 3304 | 3305 | vitest@2.1.2(@vitest/ui@2.1.2): 3306 | dependencies: 3307 | '@vitest/expect': 2.1.2 3308 | '@vitest/mocker': 2.1.2(@vitest/spy@2.1.2)(vite@5.4.8) 3309 | '@vitest/pretty-format': 2.1.2 3310 | '@vitest/runner': 2.1.2 3311 | '@vitest/snapshot': 2.1.2 3312 | '@vitest/spy': 2.1.2 3313 | '@vitest/utils': 2.1.2 3314 | chai: 5.1.1 3315 | debug: 4.3.7 3316 | magic-string: 0.30.11 3317 | pathe: 1.1.2 3318 | std-env: 3.7.0 3319 | tinybench: 2.9.0 3320 | tinyexec: 0.3.0 3321 | tinypool: 1.0.1 3322 | tinyrainbow: 1.2.0 3323 | vite: 5.4.8 3324 | vite-node: 2.1.2 3325 | why-is-node-running: 2.3.0 3326 | optionalDependencies: 3327 | '@vitest/ui': 2.1.2(vitest@2.1.2) 3328 | transitivePeerDependencies: 3329 | - less 3330 | - lightningcss 3331 | - msw 3332 | - sass 3333 | - sass-embedded 3334 | - stylus 3335 | - sugarss 3336 | - supports-color 3337 | - terser 3338 | 3339 | vscode-uri@3.0.8: {} 3340 | 3341 | which@1.3.1: 3342 | dependencies: 3343 | isexe: 2.0.0 3344 | 3345 | which@2.0.2: 3346 | dependencies: 3347 | isexe: 2.0.0 3348 | 3349 | why-is-node-running@2.3.0: 3350 | dependencies: 3351 | siginfo: 2.0.0 3352 | stackback: 0.0.2 3353 | 3354 | word-wrap@1.2.5: {} 3355 | 3356 | wrap-ansi@7.0.0: 3357 | dependencies: 3358 | ansi-styles: 4.3.0 3359 | string-width: 4.2.3 3360 | strip-ansi: 6.0.1 3361 | 3362 | wrap-ansi@8.1.0: 3363 | dependencies: 3364 | ansi-styles: 6.2.1 3365 | string-width: 5.1.2 3366 | strip-ansi: 7.1.0 3367 | 3368 | yallist@2.1.2: {} 3369 | 3370 | yallist@4.0.0: {} 3371 | 3372 | yocto-queue@0.1.0: {} 3373 | --------------------------------------------------------------------------------