├── src ├── register.ts ├── utils │ └── global.ts ├── constants.ts ├── typings.ts └── index.ts ├── tests ├── fixtures │ ├── eval-sample.js │ ├── CVE-2023-37903.js │ └── CVE-2023-32313.js └── eval.test.ts ├── .mocharc.json ├── tsup.config.ts ├── tsconfig.json ├── .github ├── renovate.json └── workflows │ ├── ci.yml │ └── release.yml ├── .eslintrc.json ├── LICENSE ├── .prettierignore ├── package.json ├── .gitignore ├── README.md └── pnpm-lock.yaml /src/register.ts: -------------------------------------------------------------------------------- 1 | import { register } from '@/index'; 2 | 3 | register(); 4 | -------------------------------------------------------------------------------- /tests/fixtures/eval-sample.js: -------------------------------------------------------------------------------- 1 | function add(a, b) { 2 | return a + b; 3 | } 4 | 5 | sleep(1000); // Injected 6 | add(1, 2); // RESULT 7 | -------------------------------------------------------------------------------- /.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/mocharc.json", 3 | "require": ["tsx", "chai/register-expect", "chai/register-should"], 4 | "timeout": 10000, 5 | "parallel": false 6 | } 7 | -------------------------------------------------------------------------------- /tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup'; 2 | 3 | export default defineConfig([ 4 | { 5 | clean: true, 6 | dts: true, 7 | minify: false, 8 | entry: ['src/index.ts', 'src/register.ts'], 9 | format: ['cjs', 'esm'], 10 | target: 'esnext', 11 | outDir: 'dist', 12 | }, 13 | ]); 14 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "@shahrad/tsconfig", 4 | "compilerOptions": { 5 | "baseUrl": ".", 6 | "paths": { 7 | "@/*": ["./src/*"] 8 | }, 9 | "outDir": "dist" 10 | }, 11 | "include": ["**/*.ts"], 12 | "exclude": ["node_modules", "dist"] 13 | } 14 | -------------------------------------------------------------------------------- /.github/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": ["config:base"], 4 | "packageRules": [ 5 | { 6 | "groupName": "All Dependencies", 7 | "groupSlug": "minor-patch", 8 | "matchPackagePatterns": ["*"], 9 | "matchUpdateTypes": ["minor", "patch"] 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /tests/fixtures/CVE-2023-37903.js: -------------------------------------------------------------------------------- 1 | const customInspectSymbol = Symbol.for('nodejs.util.inspect.custom'); 2 | 3 | obj = { 4 | [customInspectSymbol]: (depth, opt, inspect) => { 5 | inspect 6 | .constructor('return process')() 7 | .mainModule.require('child_process') 8 | .execSync('touch pwned'); 9 | }, 10 | valueOf: undefined, 11 | constructor: undefined, 12 | }; 13 | 14 | WebAssembly.compileStreaming(obj).then(() => {}); 15 | -------------------------------------------------------------------------------- /src/utils/global.ts: -------------------------------------------------------------------------------- 1 | export function defineGlobally(key: string | symbol, obj: any) { 2 | [ 3 | typeof globalThis === 'object' ? globalThis : null, 4 | typeof global === 'object' ? global : null, 5 | typeof window === 'object' ? window : null, 6 | typeof self === 'object' ? self : null, 7 | ].forEach((context) => { 8 | if (!context) return; 9 | Object.defineProperty(context, key, { 10 | value: obj, 11 | enumerable: true, 12 | }); 13 | }); 14 | } 15 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/eslintrc.json", 3 | "env": { 4 | "es2021": true, 5 | "node": true 6 | }, 7 | "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], 8 | "parserOptions": { 9 | "ecmaVersion": "latest", 10 | "sourceType": "module" 11 | }, 12 | "rules": { 13 | "no-console": "error", 14 | "@typescript-eslint/semi": "off", 15 | "@typescript-eslint/no-explicit-any": "off" 16 | }, 17 | "ignorePatterns": ["dist", "tests/fixtures"] 18 | } 19 | -------------------------------------------------------------------------------- /src/constants.ts: -------------------------------------------------------------------------------- 1 | export const SAFE_GLOBAL = [ 2 | 'Function', 3 | 'eval', 4 | 'isFinite', 5 | 'isNaN', 6 | 'parseFloat', 7 | 'parseInt', 8 | 'decodeURI', 9 | 'decodeURIComponent', 10 | 'encodeURI', 11 | 'encodeURIComponent', 12 | 'escape', 13 | 'unescape', 14 | 'Boolean', 15 | 'Number', 16 | 'BigInt', 17 | 'String', 18 | 'Object', 19 | 'Array', 20 | 'Symbol', 21 | 'Error', 22 | 'EvalError', 23 | 'RangeError', 24 | 'ReferenceError', 25 | 'SyntaxError', 26 | 'TypeError', 27 | 'URIError', 28 | 'Int8Array', 29 | 'Uint8Array', 30 | 'Uint8ClampedArray', 31 | 'Int16Array', 32 | 'Uint16Array', 33 | 'Int32Array', 34 | 'Uint32Array', 35 | 'Float32Array', 36 | 'Float64Array', 37 | 'Map', 38 | 'Set', 39 | 'WeakMap', 40 | 'WeakSet', 41 | 'Promise', 42 | 'Intl', 43 | 'JSON', 44 | 'Math', 45 | ] as const; 46 | -------------------------------------------------------------------------------- /tests/fixtures/CVE-2023-32313.js: -------------------------------------------------------------------------------- 1 | let proxiedInspect; 2 | const source = new Proxy(() => {}, { 3 | get: function (target, prop, receiver) { 4 | if (prop === Symbol.for('nodejs.util.inspect.custom')) { 5 | // https://github.com/nodejs/node/blob/v20.1.0/lib/internal/util/inspect.js#L805-L811 6 | return function (depth, options, inspect) { 7 | proxiedInspect = inspect; 8 | }; 9 | } 10 | return Reflect.get(...arguments); 11 | }, 12 | }); 13 | try { 14 | Buffer.prototype.copy.bind(source)({}); 15 | // Here, util.inspect is called: 16 | // https://github.com/nodejs/node/blob/v20.1.0/lib/buffer.js#L209 17 | // https://github.com/nodejs/node/blob/v20.1.0/lib/internal/errors.js#L1277 18 | // https://github.com/nodejs/node/blob/v20.1.0/lib/internal/errors.js#L890-L891 19 | } catch {} 20 | // Break util.inspect.colors of the host context 21 | for (const key in proxiedInspect.colors) { 22 | proxiedInspect.colors[key] = [{ toString: 1 }]; 23 | } 24 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Shahrad Elahi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | 8 | jobs: 9 | format: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | - uses: pnpm/action-setup@v4 14 | - uses: actions/setup-node@v4 15 | with: 16 | node-version: 18 17 | cache: 'pnpm' 18 | 19 | - run: pnpm install --frozen-lockfile 20 | - run: pnpm format:check 21 | 22 | lint: 23 | runs-on: ubuntu-latest 24 | steps: 25 | - uses: actions/checkout@v4 26 | - uses: pnpm/action-setup@v4 27 | - uses: actions/setup-node@v4 28 | with: 29 | node-version: 18 30 | cache: 'pnpm' 31 | 32 | - run: pnpm install --frozen-lockfile 33 | - run: pnpm lint 34 | 35 | test: 36 | runs-on: ubuntu-latest 37 | steps: 38 | - uses: actions/checkout@v4 39 | - uses: pnpm/action-setup@v4 40 | - uses: actions/setup-node@v4 41 | with: 42 | node-version: 18 43 | cache: 'pnpm' 44 | 45 | - run: pnpm install --frozen-lockfile 46 | - run: pnpm test 47 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | node_modules/ 3 | .pnpm-store/ 4 | .bower_components/ 5 | 6 | # Build output 7 | /build/ 8 | /dist/ 9 | /out/ 10 | /target/ 11 | .lib/ 12 | /esm/ 13 | /cjs/ 14 | 15 | # TypeScript 16 | *.tsbuildinfo 17 | 18 | # Framework-specific caches 19 | .next/ 20 | .cache/ 21 | /public 22 | .nuxt/ 23 | /dist/ 24 | /.svelte-kit 25 | 26 | # Test & coverage 27 | coverage/ 28 | nyc_output/ 29 | jest/ 30 | test-results/ 31 | *.lcov 32 | 33 | # Logs & runtime data 34 | *.log 35 | npm-debug.log* 36 | yarn-debug.log* 37 | yarn-error.log* 38 | pnpm-debug.log* 39 | pids/ 40 | *.pid 41 | *.pid.lock 42 | *.seed 43 | 44 | # Vercel & other deployment 45 | .vercel 46 | .contentlayer 47 | 48 | # Environment files 49 | .env 50 | .env.* 51 | !.env.example 52 | 53 | # Package manager lockfiles 54 | pnpm-lock.yaml 55 | package-lock.json 56 | yarn.lock 57 | 58 | # IDE / editor 59 | .vscode/ 60 | /.vscode-test/ 61 | .idea/ 62 | *.suo 63 | *.ntvs* 64 | *.njsproj 65 | *.sln 66 | *.sw? 67 | 68 | # Miscellaneous 69 | .changeset/ 70 | .grunt/ 71 | lib-cov/ 72 | .DS_Store 73 | Thumbs.db 74 | *.7z 75 | *.dmg 76 | *.gz 77 | *.iso 78 | *.jar 79 | *.rar 80 | *.tar 81 | *.zip 82 | -------------------------------------------------------------------------------- /src/typings.ts: -------------------------------------------------------------------------------- 1 | import type { Context } from 'node:vm'; 2 | 3 | import type { SAFE_GLOBAL } from './constants'; 4 | 5 | export interface EvalOptions { 6 | /** 7 | * This parameter will set the maximum execution time for the code in milliseconds. 8 | */ 9 | timeout?: number; 10 | /** 11 | * If set to false any attempt to compile a WebAssembly module will throw a WebAssembly.CompileError. Default: `false`. 12 | */ 13 | allowWasm?: boolean; 14 | /** 15 | * Inject your own context globals into the sandbox 16 | * 17 | * @example 18 | * ```typescript 19 | * function plus(a: number, b: number) { 20 | * return a + b; 21 | * } 22 | * 23 | * const result = neval('plus(1, 2)', { context: { plus } }); 24 | * console.log(result); // 3 25 | * ``` 26 | */ 27 | context?: Context; 28 | /** 29 | * Add the key of global variable to bypass it in the sandbox 30 | * 31 | * @example 32 | * bypassGlobal: ['process', 'console'] 33 | */ 34 | bypassGlobal?: string[]; 35 | /** 36 | * This parameter will make the predefined safe globals inaccessible in the sandbox 37 | * 38 | * @example 39 | * strictGlobal: ['Math'] 40 | */ 41 | strictGlobal?: SafeGlobal[]; 42 | } 43 | 44 | export type SafeGlobal = (typeof SAFE_GLOBAL)[number]; 45 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Publish Release 2 | 3 | on: 4 | push: 5 | tags: 6 | - v* 7 | 8 | jobs: 9 | create-github-release: 10 | permissions: 11 | contents: write 12 | runs-on: ubuntu-latest 13 | if: startsWith(github.ref, 'refs/tags/v') 14 | steps: 15 | - name: Calculate release name 16 | run: | 17 | GITHUB_REF=${{ github.ref }} 18 | RELEASE_NAME=${GITHUB_REF#"refs/tags/"} 19 | echo "RELEASE_NAME=${RELEASE_NAME}" >> $GITHUB_ENV 20 | 21 | - name: Publish release 22 | uses: actions/create-release@v1 23 | env: 24 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 25 | with: 26 | tag_name: ${{ github.ref }} 27 | release_name: ${{ env.RELEASE_NAME }} 28 | draft: false 29 | prerelease: false 30 | 31 | publish-npm-release: 32 | runs-on: ubuntu-latest 33 | permissions: 34 | contents: read 35 | id-token: write 36 | steps: 37 | - uses: actions/checkout@v4 38 | - uses: pnpm/action-setup@v4 39 | - uses: actions/setup-node@v4 40 | with: 41 | node-version: 18 42 | cache: 'pnpm' 43 | registry-url: 'https://registry.npmjs.org' 44 | 45 | - run: pnpm install --frozen-lockfile 46 | - run: npm install -g npm@latest 47 | - run: npm publish --provenance --access public 48 | env: 49 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 50 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "neval", 3 | "version": "0.1.0", 4 | "description": "A Zero-dependency, lightweight utility for securely evaluating code in a sandboxed environment in Node.js.", 5 | "keywords": [ 6 | "nodejs", 7 | "neval", 8 | "eval", 9 | "javascript", 10 | "sandbox" 11 | ], 12 | "homepage": "https://github.com/shahradelahi/node-eval", 13 | "repository": "github:shahradelahi/node-eval", 14 | "license": "MIT", 15 | "author": "Shahrad Elahi (https://github.com/shahradelahi)", 16 | "type": "module", 17 | "exports": { 18 | ".": { 19 | "require": "./dist/index.cjs", 20 | "import": "./dist/index.js" 21 | }, 22 | "./register": { 23 | "require": "./dist/register.cjs", 24 | "import": "./dist/register.js" 25 | } 26 | }, 27 | "main": "dist/index.js", 28 | "types": "./dist", 29 | "files": [ 30 | "dist/**/*", 31 | "!dist/**/register.d.*" 32 | ], 33 | "scripts": { 34 | "build": "tsup", 35 | "dev": "tsup --watch", 36 | "format": "prettier --write .", 37 | "format:check": "prettier --check .", 38 | "lint": "pnpm typecheck && eslint .", 39 | "lint:fix": "eslint --fix .", 40 | "prepublishOnly": "pnpm test && pnpm lint && pnpm format:check && pnpm build", 41 | "test": "mocha \"**/*.test.ts\"", 42 | "typecheck": "tsc --noEmit" 43 | }, 44 | "prettier": "@shahrad/prettier-config", 45 | "devDependencies": { 46 | "@shahrad/prettier-config": "^1.2.2", 47 | "@shahrad/tsconfig": "^1.1.0", 48 | "@types/chai": "^5.0.1", 49 | "@types/mocha": "^10.0.9", 50 | "@types/node": "^22.9.0", 51 | "@typescript-eslint/eslint-plugin": "^8.14.0", 52 | "chai": "^5.1.2", 53 | "eslint": "^8.57.1", 54 | "mocha": "^10.8.2", 55 | "prettier": "^3.3.3", 56 | "tsup": "^8.3.5", 57 | "tsx": "^4.19.2", 58 | "typescript": "^5.6.3" 59 | }, 60 | "packageManager": "pnpm@9.15.9" 61 | } 62 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # node-eval 2 | 3 | [![CI](https://github.com/shahradelahi/node-eval/actions/workflows/ci.yml/badge.svg)](https://github.com/shahradelahi/node-eval/actions/workflows/ci.yml) 4 | [![NPM Version](https://img.shields.io/npm/v/neval.svg)](https://www.npmjs.com/package/neval) 5 | [![MIT License](https://img.shields.io/badge/License-MIT-blue.svg?style=flat)](/LICENSE) 6 | [![Install Size](https://packagephobia.com/badge?p=neval)](https://packagephobia.com/result?p=neval) 7 | 8 | _neval_ is a zero-dependency, lightweight utility for securely evaluating code in a sandboxed environment in Node.js. 9 | 10 | --- 11 | 12 | - [Installation](#-installation) 13 | - [Usage](#-usage) 14 | - [Documentation](#-documentation) 15 | - [Contributing](#-contributing) 16 | - [License](#license) 17 | 18 | ## 📦 Installation 19 | 20 | ```bash 21 | npm install neval 22 | ``` 23 | 24 | ## 📖 Usage 25 | 26 | ```typescript 27 | import { neval, nevalFile } from 'neval'; 28 | 29 | const result = neval('1 + 1'); 30 | console.log(result); // 2 31 | 32 | const result2 = await nevalFile('./file.js'); 33 | console.log(result2); // Whatever file.js returns 34 | 35 | const result3 = await neval( 36 | ` 37 | async function main() { 38 | await sleep(1e3); // The "sleep" function will be injected through context 39 | return 1 + 1; 40 | } 41 | main(); 42 | `, 43 | { 44 | context: { 45 | sleep: async (ms: number) => { 46 | return new Promise((resolve) => setTimeout(resolve, ms)); 47 | }, 48 | }, 49 | } 50 | ); 51 | console.log(result3); // Result after 1 second is 2 52 | 53 | const result4 = await neval( 54 | ` 55 | fetch('https://example.com', { method: 'HEAD' }) 56 | .then((resp) => resp.statusText); 57 | `, 58 | { 59 | // By default, the "fetch" API is not available, you must add it to the context 60 | context: { fetch }, 61 | } 62 | ); 63 | console.log(result4); // OK 64 | ``` 65 | 66 | Importing `neval/register` will register the `neval` function on the global object and overrides the `eval` function. 67 | 68 | ```typescript 69 | import 'neval/register'; 70 | 71 | console.log(eval('1 + 1')); // 2 72 | ``` 73 | 74 | Why is it important to register it globally? The `neval` is sandboxed and much more secure than just using the `eval` function. Read more about [eval](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval). 75 | 76 | Are you looking for more examples? Check out the [unit tests](/tests/eval.test.ts). 77 | 78 | ## 📚 Documentation 79 | 80 | For all configuration options, please see [the API docs](https://www.jsdocs.io/package/neval). 81 | 82 | ##### API 83 | 84 | ```typescript 85 | function neval(code: any, options?: EvalOptions): any; 86 | function nevalFile(path: string, options?: EvalOptions): Promise; 87 | function register(): void; 88 | ``` 89 | 90 | ## 🤝 Contributing 91 | 92 | Want to contribute? Awesome! To show your support is to star the project, or to raise issues on [GitHub](https://github.com/shahradelahi/node-eval) 93 | 94 | Thanks again for your support, it is much appreciated! 🙏 95 | 96 | ## Relevant 97 | 98 | - [isolated-vm](https://github.com/laverdet/isolated-vm) 99 | 100 | ## License 101 | 102 | [MIT](/LICENSE) © [Shahrad Elahi](https://github.com/shahradelahi) 103 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { promises } from 'node:fs'; 2 | import { resolve } from 'node:path'; 3 | import { runInNewContext } from 'node:vm'; 4 | 5 | import { SAFE_GLOBAL } from '@/constants'; 6 | import { defineGlobally } from '@/utils/global'; 7 | 8 | import { EvalOptions } from './typings'; 9 | 10 | export function neval(code: any, options: EvalOptions = {}) { 11 | if (!code) return; 12 | 13 | const { timeout, context = {}, bypassGlobal = [], strictGlobal = [] } = options; 14 | const resultKey = 'SAFE_EVAL_' + Math.floor(Math.random() * 1000000); 15 | context[resultKey] = undefined; 16 | 17 | bypassGlobal.push(...SAFE_GLOBAL); 18 | bypassGlobal.push(...Object.keys(context)); 19 | 20 | const BypassKey = `__BYPASS_GLOBAL_${Math.floor(Math.random() * 1000000)}`; 21 | 22 | code = code.replace(/`/g, '\\`').replace(/\$/g, '\\$'); 23 | code = [ 24 | String( 25 | `${BypassKey} = Object.freeze(new Set([${bypassGlobal 26 | .filter((v) => !(strictGlobal as string[]).includes(v)) 27 | .map((v) => `"${v}"`) 28 | .join(', ')}]));` 29 | ), 30 | String(`\ 31 | function throwNotAllowed(property) { 32 | const error = new Error( 33 | 'Cannot access properties of "' + String(property) + '" in sandbox environment' 34 | ); 35 | error.name = 'EvalError'; 36 | Error.captureStackTrace(error, throwNotAllowed); 37 | throw error; 38 | } 39 | 40 | Object.getOwnPropertyNames(this ?? {}) 41 | .concat(['constructor']) 42 | .forEach((key) => { 43 | if (key === '${BypassKey}') { 44 | return; 45 | } 46 | if (key === 'global' || key === 'globalThis') { 47 | delete this[key]; 48 | this[key] = new Proxy( 49 | {}, 50 | { 51 | get: (_, property) => { 52 | return this[property]; 53 | }, 54 | } 55 | ); 56 | return; 57 | } 58 | if (key && key in this && typeof this[key] === 'object' && !${BypassKey}.has(key)) { 59 | this[key] = new Proxy(this[key], { 60 | get: (_, property) => { 61 | throwNotAllowed(key); 62 | }, 63 | set: (_, property) => { 64 | throwNotAllowed(key); 65 | }, 66 | }); 67 | } 68 | }); 69 | ['global', 'globalThis'].forEach((key) => { 70 | if (key === 'global' || key === 'globalThis') { 71 | delete this[key]; 72 | this[key] = new Proxy( 73 | {}, 74 | { 75 | get: (_, property) => { 76 | return this[property]; 77 | }, 78 | } 79 | ); 80 | } 81 | });`), 82 | String(`${resultKey} = undefined;`), 83 | String(`(function(){"use strict"; ${resultKey} = eval?.(String(\`${code}\`)) })();`), 84 | String(`this.${resultKey} = ${resultKey};`), 85 | ].join(';\n'); 86 | 87 | runInNewContext(code, context, { 88 | timeout, 89 | breakOnSigint: true, 90 | contextCodeGeneration: { 91 | wasm: options.allowWasm ?? false, 92 | }, 93 | microtaskMode: timeout ? 'afterEvaluate' : undefined, 94 | }); 95 | 96 | return timeout && typeof context[resultKey] === 'object' && 'then' in context[resultKey] 97 | ? Promise.race([ 98 | new Promise((_, reject) => 99 | setTimeout( 100 | () => reject(new Error('Script execution timed out after ' + timeout + 'ms')), 101 | timeout 102 | ) 103 | ), 104 | context[resultKey], 105 | ]) 106 | : context[resultKey]; 107 | } 108 | 109 | export async function nevalFile(path: string, options: EvalOptions = {}) { 110 | const content = await promises.readFile(resolve(path), 'utf-8'); 111 | if (!content || content.length === 0) return; 112 | return neval(content, options); 113 | } 114 | 115 | export function register() { 116 | defineGlobally('eval', neval); 117 | } 118 | -------------------------------------------------------------------------------- /tests/eval.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | 3 | import { neval, nevalFile } from '@/index'; 4 | 5 | describe('Eval', () => { 6 | async function sleep(ms: number) { 7 | return new Promise((resolve) => setTimeout(resolve, ms)); 8 | } 9 | 10 | async function plus(a: number, b: number) { 11 | // ❌ CAUTION: Since the "plus" is injected into the context, it includes the "console" and "process" objects, 12 | // making them available in the eval context. Be cautious about what you're injecting. 13 | // console.log(Object.keys(process.env)); 14 | await sleep(1e3); // This works too! 15 | return a + b; 16 | } 17 | 18 | it('should eval code', () => { 19 | const result = neval('1 + 1', { strictGlobal: [] }); 20 | expect(result).to.eq(2); 21 | }); 22 | 23 | it('should inject context', async () => { 24 | expect(() => neval('plus(1, 2)')).to.throw('plus is not defined'); 25 | const result = await neval('plus(1, 2)', { context: { plus } }); 26 | expect(result).to.eq(3); 27 | }); 28 | 29 | it('should read sample from file and eval', async () => { 30 | const result = await nevalFile('tests/fixtures/eval-sample.js', { context: { sleep } }); 31 | expect(result).to.eq(3); 32 | }); 33 | 34 | it('should not access unsafe context', () => { 35 | const fn1 = () => neval('process.env', { context: { sleep } }); 36 | expect(fn1).to.throw('process is not defined'); 37 | 38 | const fn2 = () => neval(`fetch('https://example.com')`); 39 | expect(fn2).to.throw('fetch is not defined'); 40 | 41 | const fn3 = () => neval(`WebAssembly.compileStreaming({})`); 42 | expect(fn3).to.throw('Cannot access properties of "WebAssembly" in sandbox environment'); 43 | 44 | const fn4 = () => neval(`console.log(1 + 1)`); 45 | expect(fn4).to.throw('Cannot access properties of "console" in sandbox environment'); 46 | }); 47 | 48 | it('should fetch using injected context', async () => { 49 | const result = await neval( 50 | `\ 51 | fetch('https://cloudflare.com/cdn-cgi/trace/', { method: 'HEAD' }) 52 | .then((resp) => resp.statusText); 53 | `, 54 | { context: { fetch } } 55 | ); 56 | expect(result).to.eq('OK'); 57 | }); 58 | 59 | it('should remove "Math" from safe global and face error', () => { 60 | const result = neval('Math.PI'); 61 | expect(result).to.eq(3.141592653589793); 62 | expect(() => neval('Math.PI', { strictGlobal: ['Math'] })).to.throw( 63 | 'Cannot access properties of "Math" in sandbox environment' 64 | ); 65 | }); 66 | 67 | it('should reach the timeout', async () => { 68 | const code = `function loop() { while (1) Date.now(); };Promise.resolve().then(() => loop());`; 69 | expect(() => neval(code, { timeout: 5, context: { console } })).to.throw( 70 | 'Script execution timed out after 5ms' 71 | ); 72 | 73 | neval(`sleep(2000);`, { 74 | timeout: 2, 75 | context: { sleep }, 76 | }) 77 | .then(() => { 78 | expect.fail('should throw error'); 79 | }) 80 | .catch((err: any) => { 81 | expect(err.message).to.eq('Script execution timed out after 2ms'); 82 | }); 83 | }); 84 | 85 | it('should run async function', async () => { 86 | const result = await neval( 87 | `\ 88 | async function sleep(ms){ return new Promise((resolve) => setTimeout(resolve, ms)); } 89 | sleep(10); 90 | Array.from(String('9'+6)).reverse().join(''); 91 | `, 92 | { 93 | context: { setTimeout }, 94 | } 95 | ); 96 | expect(result).to.eq('69'); 97 | }); 98 | 99 | it('should run async function 2', async () => { 100 | const fn = () => neval('async function main() { return 1 + 1; }; main();'); 101 | const result = await fn(); 102 | expect(result).to.eq(2); 103 | }); 104 | 105 | it('should override "console" context', async () => { 106 | const fn = () => 107 | neval('async function main() { return console.log(1 + 1); }; main();', { 108 | context: { 109 | console: { 110 | log: (v: number) => v, 111 | }, 112 | }, 113 | }); 114 | const result = await fn(); 115 | expect(result).to.eq(2); 116 | }); 117 | }); 118 | 119 | describe('Security', () => { 120 | const context = { 121 | setTimeout, 122 | setInterval, 123 | fetch, 124 | console: new Proxy( 125 | {}, 126 | { 127 | get: () => 'no console', 128 | } 129 | ), 130 | }; 131 | 132 | it('CVE-2023-37903', async () => { 133 | expect(neval('typeof process')).to.eq('undefined'); 134 | expect(neval('typeof require')).to.eq('undefined'); 135 | 136 | const asser = expect( 137 | await nevalFile('tests/fixtures/CVE-2023-37903.js', { context }) 138 | .then((v) => v) 139 | .catch((e) => new Error(e)) 140 | ); 141 | asser.be.instanceof(Error); 142 | asser.have.property( 143 | 'message', 144 | 'EvalError: Cannot access properties of "WebAssembly" in sandbox environment' 145 | ); 146 | }); 147 | 148 | it('CVE-2023-32313', async () => { 149 | const asser = expect( 150 | await nevalFile('tests/fixtures/CVE-2023-32313.js', { context }) 151 | .then((v) => v) 152 | .catch((e) => new Error(e)) 153 | ); 154 | 155 | asser.be.instanceof(Error); 156 | asser.have.property( 157 | 'message', 158 | "TypeError: Cannot read properties of undefined (reading 'colors')" 159 | ); 160 | }); 161 | }); 162 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | '@shahrad/prettier-config': 12 | specifier: ^1.2.2 13 | version: 1.2.2(@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.5.3))(prettier-plugin-packagejson@2.5.15(prettier@3.5.3))(prettier-plugin-sh@0.15.0(prettier@3.5.3))(prettier@3.5.3) 14 | '@shahrad/tsconfig': 15 | specifier: ^1.1.0 16 | version: 1.1.0 17 | '@types/chai': 18 | specifier: ^5.0.1 19 | version: 5.2.2 20 | '@types/mocha': 21 | specifier: ^10.0.9 22 | version: 10.0.10 23 | '@types/node': 24 | specifier: ^22.9.0 25 | version: 22.15.31 26 | '@typescript-eslint/eslint-plugin': 27 | specifier: ^8.14.0 28 | version: 8.34.0(@typescript-eslint/parser@8.14.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) 29 | chai: 30 | specifier: ^5.1.2 31 | version: 5.2.0 32 | eslint: 33 | specifier: ^8.57.1 34 | version: 8.57.1 35 | mocha: 36 | specifier: ^10.8.2 37 | version: 10.8.2 38 | prettier: 39 | specifier: ^3.3.3 40 | version: 3.5.3 41 | tsup: 42 | specifier: ^8.3.5 43 | version: 8.5.0(postcss@8.4.49)(tsx@4.20.1)(typescript@5.8.3) 44 | tsx: 45 | specifier: ^4.19.2 46 | version: 4.20.1 47 | typescript: 48 | specifier: ^5.6.3 49 | version: 5.8.3 50 | 51 | packages: 52 | 53 | '@babel/code-frame@7.27.1': 54 | resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 55 | engines: {node: '>=6.9.0'} 56 | 57 | '@babel/generator@7.27.5': 58 | resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} 59 | engines: {node: '>=6.9.0'} 60 | 61 | '@babel/helper-string-parser@7.27.1': 62 | resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 63 | engines: {node: '>=6.9.0'} 64 | 65 | '@babel/helper-validator-identifier@7.27.1': 66 | resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 67 | engines: {node: '>=6.9.0'} 68 | 69 | '@babel/parser@7.27.5': 70 | resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} 71 | engines: {node: '>=6.0.0'} 72 | hasBin: true 73 | 74 | '@babel/template@7.27.2': 75 | resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 76 | engines: {node: '>=6.9.0'} 77 | 78 | '@babel/traverse@7.27.4': 79 | resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} 80 | engines: {node: '>=6.9.0'} 81 | 82 | '@babel/types@7.27.6': 83 | resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} 84 | engines: {node: '>=6.9.0'} 85 | 86 | '@esbuild/aix-ppc64@0.25.5': 87 | resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} 88 | engines: {node: '>=18'} 89 | cpu: [ppc64] 90 | os: [aix] 91 | 92 | '@esbuild/android-arm64@0.25.5': 93 | resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} 94 | engines: {node: '>=18'} 95 | cpu: [arm64] 96 | os: [android] 97 | 98 | '@esbuild/android-arm@0.25.5': 99 | resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} 100 | engines: {node: '>=18'} 101 | cpu: [arm] 102 | os: [android] 103 | 104 | '@esbuild/android-x64@0.25.5': 105 | resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} 106 | engines: {node: '>=18'} 107 | cpu: [x64] 108 | os: [android] 109 | 110 | '@esbuild/darwin-arm64@0.25.5': 111 | resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} 112 | engines: {node: '>=18'} 113 | cpu: [arm64] 114 | os: [darwin] 115 | 116 | '@esbuild/darwin-x64@0.25.5': 117 | resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} 118 | engines: {node: '>=18'} 119 | cpu: [x64] 120 | os: [darwin] 121 | 122 | '@esbuild/freebsd-arm64@0.25.5': 123 | resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} 124 | engines: {node: '>=18'} 125 | cpu: [arm64] 126 | os: [freebsd] 127 | 128 | '@esbuild/freebsd-x64@0.25.5': 129 | resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} 130 | engines: {node: '>=18'} 131 | cpu: [x64] 132 | os: [freebsd] 133 | 134 | '@esbuild/linux-arm64@0.25.5': 135 | resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} 136 | engines: {node: '>=18'} 137 | cpu: [arm64] 138 | os: [linux] 139 | 140 | '@esbuild/linux-arm@0.25.5': 141 | resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} 142 | engines: {node: '>=18'} 143 | cpu: [arm] 144 | os: [linux] 145 | 146 | '@esbuild/linux-ia32@0.25.5': 147 | resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} 148 | engines: {node: '>=18'} 149 | cpu: [ia32] 150 | os: [linux] 151 | 152 | '@esbuild/linux-loong64@0.25.5': 153 | resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} 154 | engines: {node: '>=18'} 155 | cpu: [loong64] 156 | os: [linux] 157 | 158 | '@esbuild/linux-mips64el@0.25.5': 159 | resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} 160 | engines: {node: '>=18'} 161 | cpu: [mips64el] 162 | os: [linux] 163 | 164 | '@esbuild/linux-ppc64@0.25.5': 165 | resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} 166 | engines: {node: '>=18'} 167 | cpu: [ppc64] 168 | os: [linux] 169 | 170 | '@esbuild/linux-riscv64@0.25.5': 171 | resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} 172 | engines: {node: '>=18'} 173 | cpu: [riscv64] 174 | os: [linux] 175 | 176 | '@esbuild/linux-s390x@0.25.5': 177 | resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} 178 | engines: {node: '>=18'} 179 | cpu: [s390x] 180 | os: [linux] 181 | 182 | '@esbuild/linux-x64@0.25.5': 183 | resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} 184 | engines: {node: '>=18'} 185 | cpu: [x64] 186 | os: [linux] 187 | 188 | '@esbuild/netbsd-arm64@0.25.5': 189 | resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} 190 | engines: {node: '>=18'} 191 | cpu: [arm64] 192 | os: [netbsd] 193 | 194 | '@esbuild/netbsd-x64@0.25.5': 195 | resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} 196 | engines: {node: '>=18'} 197 | cpu: [x64] 198 | os: [netbsd] 199 | 200 | '@esbuild/openbsd-arm64@0.25.5': 201 | resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} 202 | engines: {node: '>=18'} 203 | cpu: [arm64] 204 | os: [openbsd] 205 | 206 | '@esbuild/openbsd-x64@0.25.5': 207 | resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} 208 | engines: {node: '>=18'} 209 | cpu: [x64] 210 | os: [openbsd] 211 | 212 | '@esbuild/sunos-x64@0.25.5': 213 | resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} 214 | engines: {node: '>=18'} 215 | cpu: [x64] 216 | os: [sunos] 217 | 218 | '@esbuild/win32-arm64@0.25.5': 219 | resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} 220 | engines: {node: '>=18'} 221 | cpu: [arm64] 222 | os: [win32] 223 | 224 | '@esbuild/win32-ia32@0.25.5': 225 | resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} 226 | engines: {node: '>=18'} 227 | cpu: [ia32] 228 | os: [win32] 229 | 230 | '@esbuild/win32-x64@0.25.5': 231 | resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} 232 | engines: {node: '>=18'} 233 | cpu: [x64] 234 | os: [win32] 235 | 236 | '@eslint-community/eslint-utils@4.4.1': 237 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} 238 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 239 | peerDependencies: 240 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 241 | 242 | '@eslint-community/eslint-utils@4.7.0': 243 | resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 244 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 245 | peerDependencies: 246 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 247 | 248 | '@eslint-community/regexpp@4.12.1': 249 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 250 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 251 | 252 | '@eslint/eslintrc@2.1.4': 253 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 254 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 255 | 256 | '@eslint/js@8.57.1': 257 | resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} 258 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 259 | 260 | '@humanwhocodes/config-array@0.13.0': 261 | resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} 262 | engines: {node: '>=10.10.0'} 263 | deprecated: Use @eslint/config-array instead 264 | 265 | '@humanwhocodes/module-importer@1.0.1': 266 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 267 | engines: {node: '>=12.22'} 268 | 269 | '@humanwhocodes/object-schema@2.0.3': 270 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} 271 | deprecated: Use @eslint/object-schema instead 272 | 273 | '@ianvs/prettier-plugin-sort-imports@4.4.0': 274 | resolution: {integrity: sha512-f4/e+/ANGk3tHuwRW0uh2YuBR50I4h1ZjGQ+5uD8sWfinHTivQsnieR5cz24t8M6Vx4rYvZ5v/IEKZhYpzQm9Q==} 275 | peerDependencies: 276 | '@vue/compiler-sfc': 2.7.x || 3.x 277 | prettier: 2 || 3 278 | peerDependenciesMeta: 279 | '@vue/compiler-sfc': 280 | optional: true 281 | 282 | '@isaacs/cliui@8.0.2': 283 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 284 | engines: {node: '>=12'} 285 | 286 | '@jridgewell/gen-mapping@0.3.8': 287 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 288 | engines: {node: '>=6.0.0'} 289 | 290 | '@jridgewell/resolve-uri@3.1.2': 291 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 292 | engines: {node: '>=6.0.0'} 293 | 294 | '@jridgewell/set-array@1.2.1': 295 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 296 | engines: {node: '>=6.0.0'} 297 | 298 | '@jridgewell/sourcemap-codec@1.5.0': 299 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 300 | 301 | '@jridgewell/trace-mapping@0.3.25': 302 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 303 | 304 | '@nodelib/fs.scandir@2.1.5': 305 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 306 | engines: {node: '>= 8'} 307 | 308 | '@nodelib/fs.stat@2.0.5': 309 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 310 | engines: {node: '>= 8'} 311 | 312 | '@nodelib/fs.walk@1.2.8': 313 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 314 | engines: {node: '>= 8'} 315 | 316 | '@pkgjs/parseargs@0.11.0': 317 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 318 | engines: {node: '>=14'} 319 | 320 | '@pkgr/core@0.2.7': 321 | resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==} 322 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 323 | 324 | '@rollup/rollup-android-arm-eabi@4.43.0': 325 | resolution: {integrity: sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==} 326 | cpu: [arm] 327 | os: [android] 328 | 329 | '@rollup/rollup-android-arm64@4.43.0': 330 | resolution: {integrity: sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==} 331 | cpu: [arm64] 332 | os: [android] 333 | 334 | '@rollup/rollup-darwin-arm64@4.43.0': 335 | resolution: {integrity: sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==} 336 | cpu: [arm64] 337 | os: [darwin] 338 | 339 | '@rollup/rollup-darwin-x64@4.43.0': 340 | resolution: {integrity: sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==} 341 | cpu: [x64] 342 | os: [darwin] 343 | 344 | '@rollup/rollup-freebsd-arm64@4.43.0': 345 | resolution: {integrity: sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==} 346 | cpu: [arm64] 347 | os: [freebsd] 348 | 349 | '@rollup/rollup-freebsd-x64@4.43.0': 350 | resolution: {integrity: sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==} 351 | cpu: [x64] 352 | os: [freebsd] 353 | 354 | '@rollup/rollup-linux-arm-gnueabihf@4.43.0': 355 | resolution: {integrity: sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==} 356 | cpu: [arm] 357 | os: [linux] 358 | 359 | '@rollup/rollup-linux-arm-musleabihf@4.43.0': 360 | resolution: {integrity: sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==} 361 | cpu: [arm] 362 | os: [linux] 363 | 364 | '@rollup/rollup-linux-arm64-gnu@4.43.0': 365 | resolution: {integrity: sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==} 366 | cpu: [arm64] 367 | os: [linux] 368 | 369 | '@rollup/rollup-linux-arm64-musl@4.43.0': 370 | resolution: {integrity: sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==} 371 | cpu: [arm64] 372 | os: [linux] 373 | 374 | '@rollup/rollup-linux-loongarch64-gnu@4.43.0': 375 | resolution: {integrity: sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==} 376 | cpu: [loong64] 377 | os: [linux] 378 | 379 | '@rollup/rollup-linux-powerpc64le-gnu@4.43.0': 380 | resolution: {integrity: sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==} 381 | cpu: [ppc64] 382 | os: [linux] 383 | 384 | '@rollup/rollup-linux-riscv64-gnu@4.43.0': 385 | resolution: {integrity: sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==} 386 | cpu: [riscv64] 387 | os: [linux] 388 | 389 | '@rollup/rollup-linux-riscv64-musl@4.43.0': 390 | resolution: {integrity: sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==} 391 | cpu: [riscv64] 392 | os: [linux] 393 | 394 | '@rollup/rollup-linux-s390x-gnu@4.43.0': 395 | resolution: {integrity: sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==} 396 | cpu: [s390x] 397 | os: [linux] 398 | 399 | '@rollup/rollup-linux-x64-gnu@4.43.0': 400 | resolution: {integrity: sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==} 401 | cpu: [x64] 402 | os: [linux] 403 | 404 | '@rollup/rollup-linux-x64-musl@4.43.0': 405 | resolution: {integrity: sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==} 406 | cpu: [x64] 407 | os: [linux] 408 | 409 | '@rollup/rollup-win32-arm64-msvc@4.43.0': 410 | resolution: {integrity: sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==} 411 | cpu: [arm64] 412 | os: [win32] 413 | 414 | '@rollup/rollup-win32-ia32-msvc@4.43.0': 415 | resolution: {integrity: sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==} 416 | cpu: [ia32] 417 | os: [win32] 418 | 419 | '@rollup/rollup-win32-x64-msvc@4.43.0': 420 | resolution: {integrity: sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==} 421 | cpu: [x64] 422 | os: [win32] 423 | 424 | '@shahrad/prettier-config@1.2.2': 425 | resolution: {integrity: sha512-D6yRqGjD9mhdC5cWQkdoatybNmp6eZJZQ1IerFaANQL1pgtNyEasE2yFy3JdDxJRbHcL2GeaI/03tEPchU+Ddw==} 426 | peerDependencies: 427 | '@ianvs/prettier-plugin-sort-imports': ^4.4 428 | prettier: '>=3.0.0' 429 | prettier-plugin-packagejson: ^2.5 430 | prettier-plugin-sh: ^0.15 431 | 432 | '@shahrad/tsconfig@1.1.0': 433 | resolution: {integrity: sha512-WcziTJWK7DC49kbEKPwdZ/Mnhu3H6ZehpBg4UGbyDwU2Ze/QvSjZq1Nx6Vb2Pfgwjas1CHWkIA2d3GiW35fxsw==} 434 | engines: {node: '>=18'} 435 | 436 | '@types/chai@5.2.2': 437 | resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} 438 | 439 | '@types/deep-eql@4.0.2': 440 | resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} 441 | 442 | '@types/estree@1.0.7': 443 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 444 | 445 | '@types/mocha@10.0.10': 446 | resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} 447 | 448 | '@types/node@22.15.31': 449 | resolution: {integrity: sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==} 450 | 451 | '@typescript-eslint/eslint-plugin@8.34.0': 452 | resolution: {integrity: sha512-QXwAlHlbcAwNlEEMKQS2RCgJsgXrTJdjXT08xEgbPFa2yYQgVjBymxP5DrfrE7X7iodSzd9qBUHUycdyVJTW1w==} 453 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 454 | peerDependencies: 455 | '@typescript-eslint/parser': ^8.34.0 456 | eslint: ^8.57.0 || ^9.0.0 457 | typescript: '>=4.8.4 <5.9.0' 458 | 459 | '@typescript-eslint/parser@8.14.0': 460 | resolution: {integrity: sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==} 461 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 462 | peerDependencies: 463 | eslint: ^8.57.0 || ^9.0.0 464 | typescript: '*' 465 | peerDependenciesMeta: 466 | typescript: 467 | optional: true 468 | 469 | '@typescript-eslint/project-service@8.34.0': 470 | resolution: {integrity: sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==} 471 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 472 | peerDependencies: 473 | typescript: '>=4.8.4 <5.9.0' 474 | 475 | '@typescript-eslint/scope-manager@8.14.0': 476 | resolution: {integrity: sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==} 477 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 478 | 479 | '@typescript-eslint/scope-manager@8.34.0': 480 | resolution: {integrity: sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw==} 481 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 482 | 483 | '@typescript-eslint/tsconfig-utils@8.34.0': 484 | resolution: {integrity: sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==} 485 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 486 | peerDependencies: 487 | typescript: '>=4.8.4 <5.9.0' 488 | 489 | '@typescript-eslint/type-utils@8.34.0': 490 | resolution: {integrity: sha512-n7zSmOcUVhcRYC75W2pnPpbO1iwhJY3NLoHEtbJwJSNlVAZuwqu05zY3f3s2SDWWDSo9FdN5szqc73DCtDObAg==} 491 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 492 | peerDependencies: 493 | eslint: ^8.57.0 || ^9.0.0 494 | typescript: '>=4.8.4 <5.9.0' 495 | 496 | '@typescript-eslint/types@8.14.0': 497 | resolution: {integrity: sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==} 498 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 499 | 500 | '@typescript-eslint/types@8.34.0': 501 | resolution: {integrity: sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA==} 502 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 503 | 504 | '@typescript-eslint/typescript-estree@8.14.0': 505 | resolution: {integrity: sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==} 506 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 507 | peerDependencies: 508 | typescript: '*' 509 | peerDependenciesMeta: 510 | typescript: 511 | optional: true 512 | 513 | '@typescript-eslint/typescript-estree@8.34.0': 514 | resolution: {integrity: sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==} 515 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 516 | peerDependencies: 517 | typescript: '>=4.8.4 <5.9.0' 518 | 519 | '@typescript-eslint/utils@8.34.0': 520 | resolution: {integrity: sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ==} 521 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 522 | peerDependencies: 523 | eslint: ^8.57.0 || ^9.0.0 524 | typescript: '>=4.8.4 <5.9.0' 525 | 526 | '@typescript-eslint/visitor-keys@8.14.0': 527 | resolution: {integrity: sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==} 528 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 529 | 530 | '@typescript-eslint/visitor-keys@8.34.0': 531 | resolution: {integrity: sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==} 532 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 533 | 534 | '@ungap/structured-clone@1.2.0': 535 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 536 | 537 | acorn-jsx@5.3.2: 538 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 539 | peerDependencies: 540 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 541 | 542 | acorn@8.14.0: 543 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 544 | engines: {node: '>=0.4.0'} 545 | hasBin: true 546 | 547 | acorn@8.15.0: 548 | resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 549 | engines: {node: '>=0.4.0'} 550 | hasBin: true 551 | 552 | ajv@6.12.6: 553 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 554 | 555 | ansi-colors@4.1.3: 556 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 557 | engines: {node: '>=6'} 558 | 559 | ansi-regex@5.0.1: 560 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 561 | engines: {node: '>=8'} 562 | 563 | ansi-regex@6.1.0: 564 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 565 | engines: {node: '>=12'} 566 | 567 | ansi-styles@4.3.0: 568 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 569 | engines: {node: '>=8'} 570 | 571 | ansi-styles@6.2.1: 572 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 573 | engines: {node: '>=12'} 574 | 575 | any-promise@1.3.0: 576 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 577 | 578 | anymatch@3.1.3: 579 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 580 | engines: {node: '>= 8'} 581 | 582 | argparse@2.0.1: 583 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 584 | 585 | assertion-error@2.0.1: 586 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 587 | engines: {node: '>=12'} 588 | 589 | balanced-match@1.0.2: 590 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 591 | 592 | binary-extensions@2.3.0: 593 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 594 | engines: {node: '>=8'} 595 | 596 | brace-expansion@1.1.11: 597 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 598 | 599 | brace-expansion@2.0.1: 600 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 601 | 602 | brace-expansion@2.0.2: 603 | resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 604 | 605 | braces@3.0.3: 606 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 607 | engines: {node: '>=8'} 608 | 609 | browser-stdout@1.3.1: 610 | resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} 611 | 612 | bundle-require@5.1.0: 613 | resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} 614 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 615 | peerDependencies: 616 | esbuild: '>=0.18' 617 | 618 | cac@6.7.14: 619 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 620 | engines: {node: '>=8'} 621 | 622 | callsites@3.1.0: 623 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 624 | engines: {node: '>=6'} 625 | 626 | camelcase@6.3.0: 627 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 628 | engines: {node: '>=10'} 629 | 630 | chai@5.2.0: 631 | resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} 632 | engines: {node: '>=12'} 633 | 634 | chalk@4.1.2: 635 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 636 | engines: {node: '>=10'} 637 | 638 | check-error@2.1.1: 639 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 640 | engines: {node: '>= 16'} 641 | 642 | chokidar@3.6.0: 643 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 644 | engines: {node: '>= 8.10.0'} 645 | 646 | chokidar@4.0.3: 647 | resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 648 | engines: {node: '>= 14.16.0'} 649 | 650 | cliui@7.0.4: 651 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} 652 | 653 | color-convert@2.0.1: 654 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 655 | engines: {node: '>=7.0.0'} 656 | 657 | color-name@1.1.4: 658 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 659 | 660 | commander@4.1.1: 661 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 662 | engines: {node: '>= 6'} 663 | 664 | concat-map@0.0.1: 665 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 666 | 667 | confbox@0.1.8: 668 | resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} 669 | 670 | consola@3.4.2: 671 | resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} 672 | engines: {node: ^14.18.0 || >=16.10.0} 673 | 674 | cross-spawn@7.0.5: 675 | resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==} 676 | engines: {node: '>= 8'} 677 | 678 | cross-spawn@7.0.6: 679 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 680 | engines: {node: '>= 8'} 681 | 682 | debug@4.3.7: 683 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} 684 | engines: {node: '>=6.0'} 685 | peerDependencies: 686 | supports-color: '*' 687 | peerDependenciesMeta: 688 | supports-color: 689 | optional: true 690 | 691 | debug@4.4.1: 692 | resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} 693 | engines: {node: '>=6.0'} 694 | peerDependencies: 695 | supports-color: '*' 696 | peerDependenciesMeta: 697 | supports-color: 698 | optional: true 699 | 700 | decamelize@4.0.0: 701 | resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} 702 | engines: {node: '>=10'} 703 | 704 | deep-eql@5.0.2: 705 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 706 | engines: {node: '>=6'} 707 | 708 | deep-is@0.1.4: 709 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 710 | 711 | detect-indent@7.0.1: 712 | resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} 713 | engines: {node: '>=12.20'} 714 | 715 | detect-newline@4.0.1: 716 | resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} 717 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 718 | 719 | diff@5.2.0: 720 | resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} 721 | engines: {node: '>=0.3.1'} 722 | 723 | doctrine@3.0.0: 724 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 725 | engines: {node: '>=6.0.0'} 726 | 727 | eastasianwidth@0.2.0: 728 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 729 | 730 | emoji-regex@8.0.0: 731 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 732 | 733 | emoji-regex@9.2.2: 734 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 735 | 736 | esbuild@0.25.5: 737 | resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} 738 | engines: {node: '>=18'} 739 | hasBin: true 740 | 741 | escalade@3.2.0: 742 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 743 | engines: {node: '>=6'} 744 | 745 | escape-string-regexp@4.0.0: 746 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 747 | engines: {node: '>=10'} 748 | 749 | eslint-scope@7.2.2: 750 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 751 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 752 | 753 | eslint-visitor-keys@3.4.3: 754 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 755 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 756 | 757 | eslint-visitor-keys@4.2.1: 758 | resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 759 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 760 | 761 | eslint@8.57.1: 762 | resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} 763 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 764 | deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. 765 | hasBin: true 766 | 767 | espree@9.6.1: 768 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 769 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 770 | 771 | esquery@1.6.0: 772 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 773 | engines: {node: '>=0.10'} 774 | 775 | esrecurse@4.3.0: 776 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 777 | engines: {node: '>=4.0'} 778 | 779 | estraverse@5.3.0: 780 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 781 | engines: {node: '>=4.0'} 782 | 783 | esutils@2.0.3: 784 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 785 | engines: {node: '>=0.10.0'} 786 | 787 | fast-deep-equal@3.1.3: 788 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 789 | 790 | fast-glob@3.3.3: 791 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 792 | engines: {node: '>=8.6.0'} 793 | 794 | fast-json-stable-stringify@2.1.0: 795 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 796 | 797 | fast-levenshtein@2.0.6: 798 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 799 | 800 | fastq@1.17.1: 801 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 802 | 803 | fdir@6.4.6: 804 | resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} 805 | peerDependencies: 806 | picomatch: ^3 || ^4 807 | peerDependenciesMeta: 808 | picomatch: 809 | optional: true 810 | 811 | file-entry-cache@6.0.1: 812 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 813 | engines: {node: ^10.12.0 || >=12.0.0} 814 | 815 | fill-range@7.1.1: 816 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 817 | engines: {node: '>=8'} 818 | 819 | find-up@5.0.0: 820 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 821 | engines: {node: '>=10'} 822 | 823 | fix-dts-default-cjs-exports@1.0.1: 824 | resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} 825 | 826 | flat-cache@3.2.0: 827 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 828 | engines: {node: ^10.12.0 || >=12.0.0} 829 | 830 | flat@5.0.2: 831 | resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} 832 | hasBin: true 833 | 834 | flatted@3.3.1: 835 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 836 | 837 | foreground-child@3.3.1: 838 | resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} 839 | engines: {node: '>=14'} 840 | 841 | fs.realpath@1.0.0: 842 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 843 | 844 | fsevents@2.3.3: 845 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 846 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 847 | os: [darwin] 848 | 849 | get-caller-file@2.0.5: 850 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 851 | engines: {node: 6.* || 8.* || >= 10.*} 852 | 853 | get-tsconfig@4.10.1: 854 | resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} 855 | 856 | git-hooks-list@4.1.1: 857 | resolution: {integrity: sha512-cmP497iLq54AZnv4YRAEMnEyQ1eIn4tGKbmswqwmFV4GBnAqE8NLtWxxdXa++AalfgL5EBH4IxTPyquEuGY/jA==} 858 | 859 | glob-parent@5.1.2: 860 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 861 | engines: {node: '>= 6'} 862 | 863 | glob-parent@6.0.2: 864 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 865 | engines: {node: '>=10.13.0'} 866 | 867 | glob@10.4.5: 868 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 869 | hasBin: true 870 | 871 | glob@7.2.3: 872 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 873 | deprecated: Glob versions prior to v9 are no longer supported 874 | 875 | glob@8.1.0: 876 | resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} 877 | engines: {node: '>=12'} 878 | deprecated: Glob versions prior to v9 are no longer supported 879 | 880 | globals@11.12.0: 881 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 882 | engines: {node: '>=4'} 883 | 884 | globals@13.24.0: 885 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 886 | engines: {node: '>=8'} 887 | 888 | graphemer@1.4.0: 889 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 890 | 891 | has-flag@4.0.0: 892 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 893 | engines: {node: '>=8'} 894 | 895 | he@1.2.0: 896 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} 897 | hasBin: true 898 | 899 | ignore@5.3.2: 900 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 901 | engines: {node: '>= 4'} 902 | 903 | ignore@7.0.5: 904 | resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} 905 | engines: {node: '>= 4'} 906 | 907 | import-fresh@3.3.0: 908 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 909 | engines: {node: '>=6'} 910 | 911 | imurmurhash@0.1.4: 912 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 913 | engines: {node: '>=0.8.19'} 914 | 915 | inflight@1.0.6: 916 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 917 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. 918 | 919 | inherits@2.0.4: 920 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 921 | 922 | is-binary-path@2.1.0: 923 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 924 | engines: {node: '>=8'} 925 | 926 | is-extglob@2.1.1: 927 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 928 | engines: {node: '>=0.10.0'} 929 | 930 | is-fullwidth-code-point@3.0.0: 931 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 932 | engines: {node: '>=8'} 933 | 934 | is-glob@4.0.3: 935 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 936 | engines: {node: '>=0.10.0'} 937 | 938 | is-number@7.0.0: 939 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 940 | engines: {node: '>=0.12.0'} 941 | 942 | is-path-inside@3.0.3: 943 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 944 | engines: {node: '>=8'} 945 | 946 | is-plain-obj@2.1.0: 947 | resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} 948 | engines: {node: '>=8'} 949 | 950 | is-plain-obj@4.1.0: 951 | resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 952 | engines: {node: '>=12'} 953 | 954 | is-unicode-supported@0.1.0: 955 | resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} 956 | engines: {node: '>=10'} 957 | 958 | isexe@2.0.0: 959 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 960 | 961 | jackspeak@3.4.3: 962 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 963 | 964 | joycon@3.1.1: 965 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 966 | engines: {node: '>=10'} 967 | 968 | js-tokens@4.0.0: 969 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 970 | 971 | js-yaml@4.1.0: 972 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 973 | hasBin: true 974 | 975 | jsesc@3.1.0: 976 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 977 | engines: {node: '>=6'} 978 | hasBin: true 979 | 980 | json-buffer@3.0.1: 981 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 982 | 983 | json-schema-traverse@0.4.1: 984 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 985 | 986 | json-stable-stringify-without-jsonify@1.0.1: 987 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 988 | 989 | keyv@4.5.4: 990 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 991 | 992 | levn@0.4.1: 993 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 994 | engines: {node: '>= 0.8.0'} 995 | 996 | lilconfig@3.1.3: 997 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 998 | engines: {node: '>=14'} 999 | 1000 | lines-and-columns@1.2.4: 1001 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1002 | 1003 | load-tsconfig@0.2.5: 1004 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 1005 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1006 | 1007 | locate-path@6.0.0: 1008 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1009 | engines: {node: '>=10'} 1010 | 1011 | lodash.merge@4.6.2: 1012 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1013 | 1014 | lodash.sortby@4.7.0: 1015 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 1016 | 1017 | log-symbols@4.1.0: 1018 | resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} 1019 | engines: {node: '>=10'} 1020 | 1021 | loupe@3.1.3: 1022 | resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} 1023 | 1024 | lru-cache@10.4.3: 1025 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1026 | 1027 | magic-string@0.30.17: 1028 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1029 | 1030 | merge2@1.4.1: 1031 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1032 | engines: {node: '>= 8'} 1033 | 1034 | micromatch@4.0.8: 1035 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1036 | engines: {node: '>=8.6'} 1037 | 1038 | minimatch@3.1.2: 1039 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1040 | 1041 | minimatch@5.1.6: 1042 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 1043 | engines: {node: '>=10'} 1044 | 1045 | minimatch@9.0.5: 1046 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1047 | engines: {node: '>=16 || 14 >=14.17'} 1048 | 1049 | minipass@7.1.2: 1050 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1051 | engines: {node: '>=16 || 14 >=14.17'} 1052 | 1053 | mlly@1.7.4: 1054 | resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} 1055 | 1056 | mocha@10.8.2: 1057 | resolution: {integrity: sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==} 1058 | engines: {node: '>= 14.0.0'} 1059 | hasBin: true 1060 | 1061 | ms@2.1.3: 1062 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1063 | 1064 | mvdan-sh@0.10.1: 1065 | resolution: {integrity: sha512-kMbrH0EObaKmK3nVRKUIIya1dpASHIEusM13S4V1ViHFuxuNxCo+arxoa6j/dbV22YBGjl7UKJm9QQKJ2Crzhg==} 1066 | deprecated: See https://github.com/mvdan/sh/issues/1145 1067 | 1068 | mz@2.7.0: 1069 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1070 | 1071 | nanoid@3.3.11: 1072 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1073 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1074 | hasBin: true 1075 | 1076 | natural-compare@1.4.0: 1077 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1078 | 1079 | normalize-path@3.0.0: 1080 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1081 | engines: {node: '>=0.10.0'} 1082 | 1083 | object-assign@4.1.1: 1084 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1085 | engines: {node: '>=0.10.0'} 1086 | 1087 | once@1.4.0: 1088 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1089 | 1090 | optionator@0.9.4: 1091 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1092 | engines: {node: '>= 0.8.0'} 1093 | 1094 | p-limit@3.1.0: 1095 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1096 | engines: {node: '>=10'} 1097 | 1098 | p-locate@5.0.0: 1099 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1100 | engines: {node: '>=10'} 1101 | 1102 | package-json-from-dist@1.0.1: 1103 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1104 | 1105 | parent-module@1.0.1: 1106 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1107 | engines: {node: '>=6'} 1108 | 1109 | path-exists@4.0.0: 1110 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1111 | engines: {node: '>=8'} 1112 | 1113 | path-is-absolute@1.0.1: 1114 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1115 | engines: {node: '>=0.10.0'} 1116 | 1117 | path-key@3.1.1: 1118 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1119 | engines: {node: '>=8'} 1120 | 1121 | path-scurry@1.11.1: 1122 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1123 | engines: {node: '>=16 || 14 >=14.18'} 1124 | 1125 | pathe@2.0.3: 1126 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1127 | 1128 | pathval@2.0.0: 1129 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 1130 | engines: {node: '>= 14.16'} 1131 | 1132 | picocolors@1.1.1: 1133 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1134 | 1135 | picomatch@2.3.1: 1136 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1137 | engines: {node: '>=8.6'} 1138 | 1139 | picomatch@4.0.2: 1140 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1141 | engines: {node: '>=12'} 1142 | 1143 | pirates@4.0.7: 1144 | resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} 1145 | engines: {node: '>= 6'} 1146 | 1147 | pkg-types@1.3.1: 1148 | resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} 1149 | 1150 | postcss-load-config@6.0.1: 1151 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} 1152 | engines: {node: '>= 18'} 1153 | peerDependencies: 1154 | jiti: '>=1.21.0' 1155 | postcss: '>=8.0.9' 1156 | tsx: ^4.8.1 1157 | yaml: ^2.4.2 1158 | peerDependenciesMeta: 1159 | jiti: 1160 | optional: true 1161 | postcss: 1162 | optional: true 1163 | tsx: 1164 | optional: true 1165 | yaml: 1166 | optional: true 1167 | 1168 | postcss@8.4.49: 1169 | resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} 1170 | engines: {node: ^10 || ^12 || >=14} 1171 | 1172 | prelude-ls@1.2.1: 1173 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1174 | engines: {node: '>= 0.8.0'} 1175 | 1176 | prettier-plugin-packagejson@2.5.15: 1177 | resolution: {integrity: sha512-2QSx6y4IT6LTwXtCvXAopENW5IP/aujC8fobEM2pDbs0IGkiVjW/ipPuYAHuXigbNe64aGWF7vIetukuzM3CBw==} 1178 | peerDependencies: 1179 | prettier: '>= 1.16.0' 1180 | peerDependenciesMeta: 1181 | prettier: 1182 | optional: true 1183 | 1184 | prettier-plugin-sh@0.15.0: 1185 | resolution: {integrity: sha512-U0PikJr/yr2bzzARl43qI0mApBj0C1xdAfA04AZa6LnvIKawXHhuy2fFo6LNA7weRzGlAiNbaEFfKMFo0nZr/A==} 1186 | engines: {node: '>=16.0.0'} 1187 | peerDependencies: 1188 | prettier: ^3.0.3 1189 | 1190 | prettier@3.5.3: 1191 | resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} 1192 | engines: {node: '>=14'} 1193 | hasBin: true 1194 | 1195 | punycode@2.3.1: 1196 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1197 | engines: {node: '>=6'} 1198 | 1199 | queue-microtask@1.2.3: 1200 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1201 | 1202 | randombytes@2.1.0: 1203 | resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} 1204 | 1205 | readdirp@3.6.0: 1206 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1207 | engines: {node: '>=8.10.0'} 1208 | 1209 | readdirp@4.1.2: 1210 | resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 1211 | engines: {node: '>= 14.18.0'} 1212 | 1213 | require-directory@2.1.1: 1214 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 1215 | engines: {node: '>=0.10.0'} 1216 | 1217 | resolve-from@4.0.0: 1218 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1219 | engines: {node: '>=4'} 1220 | 1221 | resolve-from@5.0.0: 1222 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1223 | engines: {node: '>=8'} 1224 | 1225 | resolve-pkg-maps@1.0.0: 1226 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1227 | 1228 | reusify@1.0.4: 1229 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1230 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1231 | 1232 | rimraf@3.0.2: 1233 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1234 | deprecated: Rimraf versions prior to v4 are no longer supported 1235 | hasBin: true 1236 | 1237 | rollup@4.43.0: 1238 | resolution: {integrity: sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==} 1239 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1240 | hasBin: true 1241 | 1242 | run-parallel@1.2.0: 1243 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1244 | 1245 | safe-buffer@5.2.1: 1246 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1247 | 1248 | semver@7.7.2: 1249 | resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} 1250 | engines: {node: '>=10'} 1251 | hasBin: true 1252 | 1253 | serialize-javascript@6.0.2: 1254 | resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} 1255 | 1256 | sh-syntax@0.4.2: 1257 | resolution: {integrity: sha512-/l2UZ5fhGZLVZa16XQM9/Vq/hezGGbdHeVEA01uWjOL1+7Ek/gt6FquW0iKKws4a9AYPYvlz6RyVvjh3JxOteg==} 1258 | engines: {node: '>=16.0.0'} 1259 | 1260 | shebang-command@2.0.0: 1261 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1262 | engines: {node: '>=8'} 1263 | 1264 | shebang-regex@3.0.0: 1265 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1266 | engines: {node: '>=8'} 1267 | 1268 | signal-exit@4.1.0: 1269 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1270 | engines: {node: '>=14'} 1271 | 1272 | sort-object-keys@1.1.3: 1273 | resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} 1274 | 1275 | sort-package-json@3.2.1: 1276 | resolution: {integrity: sha512-rTfRdb20vuoAn7LDlEtCqOkYfl2X+Qze6cLbNOzcDpbmKEhJI30tTN44d5shbKJnXsvz24QQhlCm81Bag7EOKg==} 1277 | hasBin: true 1278 | 1279 | source-map-js@1.2.1: 1280 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1281 | engines: {node: '>=0.10.0'} 1282 | 1283 | source-map@0.8.0-beta.0: 1284 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 1285 | engines: {node: '>= 8'} 1286 | 1287 | string-width@4.2.3: 1288 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1289 | engines: {node: '>=8'} 1290 | 1291 | string-width@5.1.2: 1292 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1293 | engines: {node: '>=12'} 1294 | 1295 | strip-ansi@6.0.1: 1296 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1297 | engines: {node: '>=8'} 1298 | 1299 | strip-ansi@7.1.0: 1300 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1301 | engines: {node: '>=12'} 1302 | 1303 | strip-json-comments@3.1.1: 1304 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1305 | engines: {node: '>=8'} 1306 | 1307 | sucrase@3.35.0: 1308 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 1309 | engines: {node: '>=16 || 14 >=14.17'} 1310 | hasBin: true 1311 | 1312 | supports-color@7.2.0: 1313 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1314 | engines: {node: '>=8'} 1315 | 1316 | supports-color@8.1.1: 1317 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 1318 | engines: {node: '>=10'} 1319 | 1320 | synckit@0.11.8: 1321 | resolution: {integrity: sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==} 1322 | engines: {node: ^14.18.0 || >=16.0.0} 1323 | 1324 | text-table@0.2.0: 1325 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1326 | 1327 | thenify-all@1.6.0: 1328 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1329 | engines: {node: '>=0.8'} 1330 | 1331 | thenify@3.3.1: 1332 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1333 | 1334 | tinyexec@0.3.2: 1335 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1336 | 1337 | tinyglobby@0.2.14: 1338 | resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} 1339 | engines: {node: '>=12.0.0'} 1340 | 1341 | to-regex-range@5.0.1: 1342 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1343 | engines: {node: '>=8.0'} 1344 | 1345 | tr46@1.0.1: 1346 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 1347 | 1348 | tree-kill@1.2.2: 1349 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 1350 | hasBin: true 1351 | 1352 | ts-api-utils@1.4.3: 1353 | resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} 1354 | engines: {node: '>=16'} 1355 | peerDependencies: 1356 | typescript: '>=4.2.0' 1357 | 1358 | ts-api-utils@2.1.0: 1359 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1360 | engines: {node: '>=18.12'} 1361 | peerDependencies: 1362 | typescript: '>=4.8.4' 1363 | 1364 | ts-interface-checker@0.1.13: 1365 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1366 | 1367 | tslib@2.8.1: 1368 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1369 | 1370 | tsup@8.5.0: 1371 | resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==} 1372 | engines: {node: '>=18'} 1373 | hasBin: true 1374 | peerDependencies: 1375 | '@microsoft/api-extractor': ^7.36.0 1376 | '@swc/core': ^1 1377 | postcss: ^8.4.12 1378 | typescript: '>=4.5.0' 1379 | peerDependenciesMeta: 1380 | '@microsoft/api-extractor': 1381 | optional: true 1382 | '@swc/core': 1383 | optional: true 1384 | postcss: 1385 | optional: true 1386 | typescript: 1387 | optional: true 1388 | 1389 | tsx@4.20.1: 1390 | resolution: {integrity: sha512-JsFUnMHIE+g8KllOvWTrSOwCKM10xLcsesvUQR61znsbrcwZ4U/QaqdymmvTqG5GMD7k2VFv9UG35C4dRy34Ag==} 1391 | engines: {node: '>=18.0.0'} 1392 | hasBin: true 1393 | 1394 | type-check@0.4.0: 1395 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1396 | engines: {node: '>= 0.8.0'} 1397 | 1398 | type-fest@0.20.2: 1399 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 1400 | engines: {node: '>=10'} 1401 | 1402 | typescript@5.8.3: 1403 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 1404 | engines: {node: '>=14.17'} 1405 | hasBin: true 1406 | 1407 | ufo@1.6.1: 1408 | resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} 1409 | 1410 | undici-types@6.21.0: 1411 | resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 1412 | 1413 | uri-js@4.4.1: 1414 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1415 | 1416 | webidl-conversions@4.0.2: 1417 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 1418 | 1419 | whatwg-url@7.1.0: 1420 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 1421 | 1422 | which@2.0.2: 1423 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1424 | engines: {node: '>= 8'} 1425 | hasBin: true 1426 | 1427 | word-wrap@1.2.5: 1428 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1429 | engines: {node: '>=0.10.0'} 1430 | 1431 | workerpool@6.5.1: 1432 | resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} 1433 | 1434 | wrap-ansi@7.0.0: 1435 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1436 | engines: {node: '>=10'} 1437 | 1438 | wrap-ansi@8.1.0: 1439 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1440 | engines: {node: '>=12'} 1441 | 1442 | wrappy@1.0.2: 1443 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1444 | 1445 | y18n@5.0.8: 1446 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 1447 | engines: {node: '>=10'} 1448 | 1449 | yargs-parser@20.2.9: 1450 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} 1451 | engines: {node: '>=10'} 1452 | 1453 | yargs-unparser@2.0.0: 1454 | resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} 1455 | engines: {node: '>=10'} 1456 | 1457 | yargs@16.2.0: 1458 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} 1459 | engines: {node: '>=10'} 1460 | 1461 | yocto-queue@0.1.0: 1462 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1463 | engines: {node: '>=10'} 1464 | 1465 | snapshots: 1466 | 1467 | '@babel/code-frame@7.27.1': 1468 | dependencies: 1469 | '@babel/helper-validator-identifier': 7.27.1 1470 | js-tokens: 4.0.0 1471 | picocolors: 1.1.1 1472 | 1473 | '@babel/generator@7.27.5': 1474 | dependencies: 1475 | '@babel/parser': 7.27.5 1476 | '@babel/types': 7.27.6 1477 | '@jridgewell/gen-mapping': 0.3.8 1478 | '@jridgewell/trace-mapping': 0.3.25 1479 | jsesc: 3.1.0 1480 | 1481 | '@babel/helper-string-parser@7.27.1': {} 1482 | 1483 | '@babel/helper-validator-identifier@7.27.1': {} 1484 | 1485 | '@babel/parser@7.27.5': 1486 | dependencies: 1487 | '@babel/types': 7.27.6 1488 | 1489 | '@babel/template@7.27.2': 1490 | dependencies: 1491 | '@babel/code-frame': 7.27.1 1492 | '@babel/parser': 7.27.5 1493 | '@babel/types': 7.27.6 1494 | 1495 | '@babel/traverse@7.27.4': 1496 | dependencies: 1497 | '@babel/code-frame': 7.27.1 1498 | '@babel/generator': 7.27.5 1499 | '@babel/parser': 7.27.5 1500 | '@babel/template': 7.27.2 1501 | '@babel/types': 7.27.6 1502 | debug: 4.4.1 1503 | globals: 11.12.0 1504 | transitivePeerDependencies: 1505 | - supports-color 1506 | 1507 | '@babel/types@7.27.6': 1508 | dependencies: 1509 | '@babel/helper-string-parser': 7.27.1 1510 | '@babel/helper-validator-identifier': 7.27.1 1511 | 1512 | '@esbuild/aix-ppc64@0.25.5': 1513 | optional: true 1514 | 1515 | '@esbuild/android-arm64@0.25.5': 1516 | optional: true 1517 | 1518 | '@esbuild/android-arm@0.25.5': 1519 | optional: true 1520 | 1521 | '@esbuild/android-x64@0.25.5': 1522 | optional: true 1523 | 1524 | '@esbuild/darwin-arm64@0.25.5': 1525 | optional: true 1526 | 1527 | '@esbuild/darwin-x64@0.25.5': 1528 | optional: true 1529 | 1530 | '@esbuild/freebsd-arm64@0.25.5': 1531 | optional: true 1532 | 1533 | '@esbuild/freebsd-x64@0.25.5': 1534 | optional: true 1535 | 1536 | '@esbuild/linux-arm64@0.25.5': 1537 | optional: true 1538 | 1539 | '@esbuild/linux-arm@0.25.5': 1540 | optional: true 1541 | 1542 | '@esbuild/linux-ia32@0.25.5': 1543 | optional: true 1544 | 1545 | '@esbuild/linux-loong64@0.25.5': 1546 | optional: true 1547 | 1548 | '@esbuild/linux-mips64el@0.25.5': 1549 | optional: true 1550 | 1551 | '@esbuild/linux-ppc64@0.25.5': 1552 | optional: true 1553 | 1554 | '@esbuild/linux-riscv64@0.25.5': 1555 | optional: true 1556 | 1557 | '@esbuild/linux-s390x@0.25.5': 1558 | optional: true 1559 | 1560 | '@esbuild/linux-x64@0.25.5': 1561 | optional: true 1562 | 1563 | '@esbuild/netbsd-arm64@0.25.5': 1564 | optional: true 1565 | 1566 | '@esbuild/netbsd-x64@0.25.5': 1567 | optional: true 1568 | 1569 | '@esbuild/openbsd-arm64@0.25.5': 1570 | optional: true 1571 | 1572 | '@esbuild/openbsd-x64@0.25.5': 1573 | optional: true 1574 | 1575 | '@esbuild/sunos-x64@0.25.5': 1576 | optional: true 1577 | 1578 | '@esbuild/win32-arm64@0.25.5': 1579 | optional: true 1580 | 1581 | '@esbuild/win32-ia32@0.25.5': 1582 | optional: true 1583 | 1584 | '@esbuild/win32-x64@0.25.5': 1585 | optional: true 1586 | 1587 | '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)': 1588 | dependencies: 1589 | eslint: 8.57.1 1590 | eslint-visitor-keys: 3.4.3 1591 | 1592 | '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': 1593 | dependencies: 1594 | eslint: 8.57.1 1595 | eslint-visitor-keys: 3.4.3 1596 | 1597 | '@eslint-community/regexpp@4.12.1': {} 1598 | 1599 | '@eslint/eslintrc@2.1.4': 1600 | dependencies: 1601 | ajv: 6.12.6 1602 | debug: 4.3.7(supports-color@8.1.1) 1603 | espree: 9.6.1 1604 | globals: 13.24.0 1605 | ignore: 5.3.2 1606 | import-fresh: 3.3.0 1607 | js-yaml: 4.1.0 1608 | minimatch: 3.1.2 1609 | strip-json-comments: 3.1.1 1610 | transitivePeerDependencies: 1611 | - supports-color 1612 | 1613 | '@eslint/js@8.57.1': {} 1614 | 1615 | '@humanwhocodes/config-array@0.13.0': 1616 | dependencies: 1617 | '@humanwhocodes/object-schema': 2.0.3 1618 | debug: 4.3.7(supports-color@8.1.1) 1619 | minimatch: 3.1.2 1620 | transitivePeerDependencies: 1621 | - supports-color 1622 | 1623 | '@humanwhocodes/module-importer@1.0.1': {} 1624 | 1625 | '@humanwhocodes/object-schema@2.0.3': {} 1626 | 1627 | '@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.5.3)': 1628 | dependencies: 1629 | '@babel/generator': 7.27.5 1630 | '@babel/parser': 7.27.5 1631 | '@babel/traverse': 7.27.4 1632 | '@babel/types': 7.27.6 1633 | prettier: 3.5.3 1634 | semver: 7.7.2 1635 | transitivePeerDependencies: 1636 | - supports-color 1637 | 1638 | '@isaacs/cliui@8.0.2': 1639 | dependencies: 1640 | string-width: 5.1.2 1641 | string-width-cjs: string-width@4.2.3 1642 | strip-ansi: 7.1.0 1643 | strip-ansi-cjs: strip-ansi@6.0.1 1644 | wrap-ansi: 8.1.0 1645 | wrap-ansi-cjs: wrap-ansi@7.0.0 1646 | 1647 | '@jridgewell/gen-mapping@0.3.8': 1648 | dependencies: 1649 | '@jridgewell/set-array': 1.2.1 1650 | '@jridgewell/sourcemap-codec': 1.5.0 1651 | '@jridgewell/trace-mapping': 0.3.25 1652 | 1653 | '@jridgewell/resolve-uri@3.1.2': {} 1654 | 1655 | '@jridgewell/set-array@1.2.1': {} 1656 | 1657 | '@jridgewell/sourcemap-codec@1.5.0': {} 1658 | 1659 | '@jridgewell/trace-mapping@0.3.25': 1660 | dependencies: 1661 | '@jridgewell/resolve-uri': 3.1.2 1662 | '@jridgewell/sourcemap-codec': 1.5.0 1663 | 1664 | '@nodelib/fs.scandir@2.1.5': 1665 | dependencies: 1666 | '@nodelib/fs.stat': 2.0.5 1667 | run-parallel: 1.2.0 1668 | 1669 | '@nodelib/fs.stat@2.0.5': {} 1670 | 1671 | '@nodelib/fs.walk@1.2.8': 1672 | dependencies: 1673 | '@nodelib/fs.scandir': 2.1.5 1674 | fastq: 1.17.1 1675 | 1676 | '@pkgjs/parseargs@0.11.0': 1677 | optional: true 1678 | 1679 | '@pkgr/core@0.2.7': {} 1680 | 1681 | '@rollup/rollup-android-arm-eabi@4.43.0': 1682 | optional: true 1683 | 1684 | '@rollup/rollup-android-arm64@4.43.0': 1685 | optional: true 1686 | 1687 | '@rollup/rollup-darwin-arm64@4.43.0': 1688 | optional: true 1689 | 1690 | '@rollup/rollup-darwin-x64@4.43.0': 1691 | optional: true 1692 | 1693 | '@rollup/rollup-freebsd-arm64@4.43.0': 1694 | optional: true 1695 | 1696 | '@rollup/rollup-freebsd-x64@4.43.0': 1697 | optional: true 1698 | 1699 | '@rollup/rollup-linux-arm-gnueabihf@4.43.0': 1700 | optional: true 1701 | 1702 | '@rollup/rollup-linux-arm-musleabihf@4.43.0': 1703 | optional: true 1704 | 1705 | '@rollup/rollup-linux-arm64-gnu@4.43.0': 1706 | optional: true 1707 | 1708 | '@rollup/rollup-linux-arm64-musl@4.43.0': 1709 | optional: true 1710 | 1711 | '@rollup/rollup-linux-loongarch64-gnu@4.43.0': 1712 | optional: true 1713 | 1714 | '@rollup/rollup-linux-powerpc64le-gnu@4.43.0': 1715 | optional: true 1716 | 1717 | '@rollup/rollup-linux-riscv64-gnu@4.43.0': 1718 | optional: true 1719 | 1720 | '@rollup/rollup-linux-riscv64-musl@4.43.0': 1721 | optional: true 1722 | 1723 | '@rollup/rollup-linux-s390x-gnu@4.43.0': 1724 | optional: true 1725 | 1726 | '@rollup/rollup-linux-x64-gnu@4.43.0': 1727 | optional: true 1728 | 1729 | '@rollup/rollup-linux-x64-musl@4.43.0': 1730 | optional: true 1731 | 1732 | '@rollup/rollup-win32-arm64-msvc@4.43.0': 1733 | optional: true 1734 | 1735 | '@rollup/rollup-win32-ia32-msvc@4.43.0': 1736 | optional: true 1737 | 1738 | '@rollup/rollup-win32-x64-msvc@4.43.0': 1739 | optional: true 1740 | 1741 | '@shahrad/prettier-config@1.2.2(@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.5.3))(prettier-plugin-packagejson@2.5.15(prettier@3.5.3))(prettier-plugin-sh@0.15.0(prettier@3.5.3))(prettier@3.5.3)': 1742 | dependencies: 1743 | '@ianvs/prettier-plugin-sort-imports': 4.4.0(prettier@3.5.3) 1744 | prettier: 3.5.3 1745 | prettier-plugin-packagejson: 2.5.15(prettier@3.5.3) 1746 | prettier-plugin-sh: 0.15.0(prettier@3.5.3) 1747 | 1748 | '@shahrad/tsconfig@1.1.0': {} 1749 | 1750 | '@types/chai@5.2.2': 1751 | dependencies: 1752 | '@types/deep-eql': 4.0.2 1753 | 1754 | '@types/deep-eql@4.0.2': {} 1755 | 1756 | '@types/estree@1.0.7': {} 1757 | 1758 | '@types/mocha@10.0.10': {} 1759 | 1760 | '@types/node@22.15.31': 1761 | dependencies: 1762 | undici-types: 6.21.0 1763 | 1764 | '@typescript-eslint/eslint-plugin@8.34.0(@typescript-eslint/parser@8.14.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': 1765 | dependencies: 1766 | '@eslint-community/regexpp': 4.12.1 1767 | '@typescript-eslint/parser': 8.14.0(eslint@8.57.1)(typescript@5.8.3) 1768 | '@typescript-eslint/scope-manager': 8.34.0 1769 | '@typescript-eslint/type-utils': 8.34.0(eslint@8.57.1)(typescript@5.8.3) 1770 | '@typescript-eslint/utils': 8.34.0(eslint@8.57.1)(typescript@5.8.3) 1771 | '@typescript-eslint/visitor-keys': 8.34.0 1772 | eslint: 8.57.1 1773 | graphemer: 1.4.0 1774 | ignore: 7.0.5 1775 | natural-compare: 1.4.0 1776 | ts-api-utils: 2.1.0(typescript@5.8.3) 1777 | typescript: 5.8.3 1778 | transitivePeerDependencies: 1779 | - supports-color 1780 | 1781 | '@typescript-eslint/parser@8.14.0(eslint@8.57.1)(typescript@5.8.3)': 1782 | dependencies: 1783 | '@typescript-eslint/scope-manager': 8.14.0 1784 | '@typescript-eslint/types': 8.14.0 1785 | '@typescript-eslint/typescript-estree': 8.14.0(typescript@5.8.3) 1786 | '@typescript-eslint/visitor-keys': 8.14.0 1787 | debug: 4.4.1 1788 | eslint: 8.57.1 1789 | optionalDependencies: 1790 | typescript: 5.8.3 1791 | transitivePeerDependencies: 1792 | - supports-color 1793 | 1794 | '@typescript-eslint/project-service@8.34.0(typescript@5.8.3)': 1795 | dependencies: 1796 | '@typescript-eslint/tsconfig-utils': 8.34.0(typescript@5.8.3) 1797 | '@typescript-eslint/types': 8.34.0 1798 | debug: 4.4.1 1799 | typescript: 5.8.3 1800 | transitivePeerDependencies: 1801 | - supports-color 1802 | 1803 | '@typescript-eslint/scope-manager@8.14.0': 1804 | dependencies: 1805 | '@typescript-eslint/types': 8.14.0 1806 | '@typescript-eslint/visitor-keys': 8.14.0 1807 | 1808 | '@typescript-eslint/scope-manager@8.34.0': 1809 | dependencies: 1810 | '@typescript-eslint/types': 8.34.0 1811 | '@typescript-eslint/visitor-keys': 8.34.0 1812 | 1813 | '@typescript-eslint/tsconfig-utils@8.34.0(typescript@5.8.3)': 1814 | dependencies: 1815 | typescript: 5.8.3 1816 | 1817 | '@typescript-eslint/type-utils@8.34.0(eslint@8.57.1)(typescript@5.8.3)': 1818 | dependencies: 1819 | '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.8.3) 1820 | '@typescript-eslint/utils': 8.34.0(eslint@8.57.1)(typescript@5.8.3) 1821 | debug: 4.4.1 1822 | eslint: 8.57.1 1823 | ts-api-utils: 2.1.0(typescript@5.8.3) 1824 | typescript: 5.8.3 1825 | transitivePeerDependencies: 1826 | - supports-color 1827 | 1828 | '@typescript-eslint/types@8.14.0': {} 1829 | 1830 | '@typescript-eslint/types@8.34.0': {} 1831 | 1832 | '@typescript-eslint/typescript-estree@8.14.0(typescript@5.8.3)': 1833 | dependencies: 1834 | '@typescript-eslint/types': 8.14.0 1835 | '@typescript-eslint/visitor-keys': 8.14.0 1836 | debug: 4.4.1 1837 | fast-glob: 3.3.3 1838 | is-glob: 4.0.3 1839 | minimatch: 9.0.5 1840 | semver: 7.7.2 1841 | ts-api-utils: 1.4.3(typescript@5.8.3) 1842 | optionalDependencies: 1843 | typescript: 5.8.3 1844 | transitivePeerDependencies: 1845 | - supports-color 1846 | 1847 | '@typescript-eslint/typescript-estree@8.34.0(typescript@5.8.3)': 1848 | dependencies: 1849 | '@typescript-eslint/project-service': 8.34.0(typescript@5.8.3) 1850 | '@typescript-eslint/tsconfig-utils': 8.34.0(typescript@5.8.3) 1851 | '@typescript-eslint/types': 8.34.0 1852 | '@typescript-eslint/visitor-keys': 8.34.0 1853 | debug: 4.4.1 1854 | fast-glob: 3.3.3 1855 | is-glob: 4.0.3 1856 | minimatch: 9.0.5 1857 | semver: 7.7.2 1858 | ts-api-utils: 2.1.0(typescript@5.8.3) 1859 | typescript: 5.8.3 1860 | transitivePeerDependencies: 1861 | - supports-color 1862 | 1863 | '@typescript-eslint/utils@8.34.0(eslint@8.57.1)(typescript@5.8.3)': 1864 | dependencies: 1865 | '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) 1866 | '@typescript-eslint/scope-manager': 8.34.0 1867 | '@typescript-eslint/types': 8.34.0 1868 | '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.8.3) 1869 | eslint: 8.57.1 1870 | typescript: 5.8.3 1871 | transitivePeerDependencies: 1872 | - supports-color 1873 | 1874 | '@typescript-eslint/visitor-keys@8.14.0': 1875 | dependencies: 1876 | '@typescript-eslint/types': 8.14.0 1877 | eslint-visitor-keys: 3.4.3 1878 | 1879 | '@typescript-eslint/visitor-keys@8.34.0': 1880 | dependencies: 1881 | '@typescript-eslint/types': 8.34.0 1882 | eslint-visitor-keys: 4.2.1 1883 | 1884 | '@ungap/structured-clone@1.2.0': {} 1885 | 1886 | acorn-jsx@5.3.2(acorn@8.14.0): 1887 | dependencies: 1888 | acorn: 8.14.0 1889 | 1890 | acorn@8.14.0: {} 1891 | 1892 | acorn@8.15.0: {} 1893 | 1894 | ajv@6.12.6: 1895 | dependencies: 1896 | fast-deep-equal: 3.1.3 1897 | fast-json-stable-stringify: 2.1.0 1898 | json-schema-traverse: 0.4.1 1899 | uri-js: 4.4.1 1900 | 1901 | ansi-colors@4.1.3: {} 1902 | 1903 | ansi-regex@5.0.1: {} 1904 | 1905 | ansi-regex@6.1.0: {} 1906 | 1907 | ansi-styles@4.3.0: 1908 | dependencies: 1909 | color-convert: 2.0.1 1910 | 1911 | ansi-styles@6.2.1: {} 1912 | 1913 | any-promise@1.3.0: {} 1914 | 1915 | anymatch@3.1.3: 1916 | dependencies: 1917 | normalize-path: 3.0.0 1918 | picomatch: 2.3.1 1919 | 1920 | argparse@2.0.1: {} 1921 | 1922 | assertion-error@2.0.1: {} 1923 | 1924 | balanced-match@1.0.2: {} 1925 | 1926 | binary-extensions@2.3.0: {} 1927 | 1928 | brace-expansion@1.1.11: 1929 | dependencies: 1930 | balanced-match: 1.0.2 1931 | concat-map: 0.0.1 1932 | 1933 | brace-expansion@2.0.1: 1934 | dependencies: 1935 | balanced-match: 1.0.2 1936 | 1937 | brace-expansion@2.0.2: 1938 | dependencies: 1939 | balanced-match: 1.0.2 1940 | 1941 | braces@3.0.3: 1942 | dependencies: 1943 | fill-range: 7.1.1 1944 | 1945 | browser-stdout@1.3.1: {} 1946 | 1947 | bundle-require@5.1.0(esbuild@0.25.5): 1948 | dependencies: 1949 | esbuild: 0.25.5 1950 | load-tsconfig: 0.2.5 1951 | 1952 | cac@6.7.14: {} 1953 | 1954 | callsites@3.1.0: {} 1955 | 1956 | camelcase@6.3.0: {} 1957 | 1958 | chai@5.2.0: 1959 | dependencies: 1960 | assertion-error: 2.0.1 1961 | check-error: 2.1.1 1962 | deep-eql: 5.0.2 1963 | loupe: 3.1.3 1964 | pathval: 2.0.0 1965 | 1966 | chalk@4.1.2: 1967 | dependencies: 1968 | ansi-styles: 4.3.0 1969 | supports-color: 7.2.0 1970 | 1971 | check-error@2.1.1: {} 1972 | 1973 | chokidar@3.6.0: 1974 | dependencies: 1975 | anymatch: 3.1.3 1976 | braces: 3.0.3 1977 | glob-parent: 5.1.2 1978 | is-binary-path: 2.1.0 1979 | is-glob: 4.0.3 1980 | normalize-path: 3.0.0 1981 | readdirp: 3.6.0 1982 | optionalDependencies: 1983 | fsevents: 2.3.3 1984 | 1985 | chokidar@4.0.3: 1986 | dependencies: 1987 | readdirp: 4.1.2 1988 | 1989 | cliui@7.0.4: 1990 | dependencies: 1991 | string-width: 4.2.3 1992 | strip-ansi: 6.0.1 1993 | wrap-ansi: 7.0.0 1994 | 1995 | color-convert@2.0.1: 1996 | dependencies: 1997 | color-name: 1.1.4 1998 | 1999 | color-name@1.1.4: {} 2000 | 2001 | commander@4.1.1: {} 2002 | 2003 | concat-map@0.0.1: {} 2004 | 2005 | confbox@0.1.8: {} 2006 | 2007 | consola@3.4.2: {} 2008 | 2009 | cross-spawn@7.0.5: 2010 | dependencies: 2011 | path-key: 3.1.1 2012 | shebang-command: 2.0.0 2013 | which: 2.0.2 2014 | 2015 | cross-spawn@7.0.6: 2016 | dependencies: 2017 | path-key: 3.1.1 2018 | shebang-command: 2.0.0 2019 | which: 2.0.2 2020 | 2021 | debug@4.3.7(supports-color@8.1.1): 2022 | dependencies: 2023 | ms: 2.1.3 2024 | optionalDependencies: 2025 | supports-color: 8.1.1 2026 | 2027 | debug@4.4.1: 2028 | dependencies: 2029 | ms: 2.1.3 2030 | 2031 | decamelize@4.0.0: {} 2032 | 2033 | deep-eql@5.0.2: {} 2034 | 2035 | deep-is@0.1.4: {} 2036 | 2037 | detect-indent@7.0.1: {} 2038 | 2039 | detect-newline@4.0.1: {} 2040 | 2041 | diff@5.2.0: {} 2042 | 2043 | doctrine@3.0.0: 2044 | dependencies: 2045 | esutils: 2.0.3 2046 | 2047 | eastasianwidth@0.2.0: {} 2048 | 2049 | emoji-regex@8.0.0: {} 2050 | 2051 | emoji-regex@9.2.2: {} 2052 | 2053 | esbuild@0.25.5: 2054 | optionalDependencies: 2055 | '@esbuild/aix-ppc64': 0.25.5 2056 | '@esbuild/android-arm': 0.25.5 2057 | '@esbuild/android-arm64': 0.25.5 2058 | '@esbuild/android-x64': 0.25.5 2059 | '@esbuild/darwin-arm64': 0.25.5 2060 | '@esbuild/darwin-x64': 0.25.5 2061 | '@esbuild/freebsd-arm64': 0.25.5 2062 | '@esbuild/freebsd-x64': 0.25.5 2063 | '@esbuild/linux-arm': 0.25.5 2064 | '@esbuild/linux-arm64': 0.25.5 2065 | '@esbuild/linux-ia32': 0.25.5 2066 | '@esbuild/linux-loong64': 0.25.5 2067 | '@esbuild/linux-mips64el': 0.25.5 2068 | '@esbuild/linux-ppc64': 0.25.5 2069 | '@esbuild/linux-riscv64': 0.25.5 2070 | '@esbuild/linux-s390x': 0.25.5 2071 | '@esbuild/linux-x64': 0.25.5 2072 | '@esbuild/netbsd-arm64': 0.25.5 2073 | '@esbuild/netbsd-x64': 0.25.5 2074 | '@esbuild/openbsd-arm64': 0.25.5 2075 | '@esbuild/openbsd-x64': 0.25.5 2076 | '@esbuild/sunos-x64': 0.25.5 2077 | '@esbuild/win32-arm64': 0.25.5 2078 | '@esbuild/win32-ia32': 0.25.5 2079 | '@esbuild/win32-x64': 0.25.5 2080 | 2081 | escalade@3.2.0: {} 2082 | 2083 | escape-string-regexp@4.0.0: {} 2084 | 2085 | eslint-scope@7.2.2: 2086 | dependencies: 2087 | esrecurse: 4.3.0 2088 | estraverse: 5.3.0 2089 | 2090 | eslint-visitor-keys@3.4.3: {} 2091 | 2092 | eslint-visitor-keys@4.2.1: {} 2093 | 2094 | eslint@8.57.1: 2095 | dependencies: 2096 | '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) 2097 | '@eslint-community/regexpp': 4.12.1 2098 | '@eslint/eslintrc': 2.1.4 2099 | '@eslint/js': 8.57.1 2100 | '@humanwhocodes/config-array': 0.13.0 2101 | '@humanwhocodes/module-importer': 1.0.1 2102 | '@nodelib/fs.walk': 1.2.8 2103 | '@ungap/structured-clone': 1.2.0 2104 | ajv: 6.12.6 2105 | chalk: 4.1.2 2106 | cross-spawn: 7.0.5 2107 | debug: 4.3.7(supports-color@8.1.1) 2108 | doctrine: 3.0.0 2109 | escape-string-regexp: 4.0.0 2110 | eslint-scope: 7.2.2 2111 | eslint-visitor-keys: 3.4.3 2112 | espree: 9.6.1 2113 | esquery: 1.6.0 2114 | esutils: 2.0.3 2115 | fast-deep-equal: 3.1.3 2116 | file-entry-cache: 6.0.1 2117 | find-up: 5.0.0 2118 | glob-parent: 6.0.2 2119 | globals: 13.24.0 2120 | graphemer: 1.4.0 2121 | ignore: 5.3.2 2122 | imurmurhash: 0.1.4 2123 | is-glob: 4.0.3 2124 | is-path-inside: 3.0.3 2125 | js-yaml: 4.1.0 2126 | json-stable-stringify-without-jsonify: 1.0.1 2127 | levn: 0.4.1 2128 | lodash.merge: 4.6.2 2129 | minimatch: 3.1.2 2130 | natural-compare: 1.4.0 2131 | optionator: 0.9.4 2132 | strip-ansi: 6.0.1 2133 | text-table: 0.2.0 2134 | transitivePeerDependencies: 2135 | - supports-color 2136 | 2137 | espree@9.6.1: 2138 | dependencies: 2139 | acorn: 8.14.0 2140 | acorn-jsx: 5.3.2(acorn@8.14.0) 2141 | eslint-visitor-keys: 3.4.3 2142 | 2143 | esquery@1.6.0: 2144 | dependencies: 2145 | estraverse: 5.3.0 2146 | 2147 | esrecurse@4.3.0: 2148 | dependencies: 2149 | estraverse: 5.3.0 2150 | 2151 | estraverse@5.3.0: {} 2152 | 2153 | esutils@2.0.3: {} 2154 | 2155 | fast-deep-equal@3.1.3: {} 2156 | 2157 | fast-glob@3.3.3: 2158 | dependencies: 2159 | '@nodelib/fs.stat': 2.0.5 2160 | '@nodelib/fs.walk': 1.2.8 2161 | glob-parent: 5.1.2 2162 | merge2: 1.4.1 2163 | micromatch: 4.0.8 2164 | 2165 | fast-json-stable-stringify@2.1.0: {} 2166 | 2167 | fast-levenshtein@2.0.6: {} 2168 | 2169 | fastq@1.17.1: 2170 | dependencies: 2171 | reusify: 1.0.4 2172 | 2173 | fdir@6.4.6(picomatch@4.0.2): 2174 | optionalDependencies: 2175 | picomatch: 4.0.2 2176 | 2177 | file-entry-cache@6.0.1: 2178 | dependencies: 2179 | flat-cache: 3.2.0 2180 | 2181 | fill-range@7.1.1: 2182 | dependencies: 2183 | to-regex-range: 5.0.1 2184 | 2185 | find-up@5.0.0: 2186 | dependencies: 2187 | locate-path: 6.0.0 2188 | path-exists: 4.0.0 2189 | 2190 | fix-dts-default-cjs-exports@1.0.1: 2191 | dependencies: 2192 | magic-string: 0.30.17 2193 | mlly: 1.7.4 2194 | rollup: 4.43.0 2195 | 2196 | flat-cache@3.2.0: 2197 | dependencies: 2198 | flatted: 3.3.1 2199 | keyv: 4.5.4 2200 | rimraf: 3.0.2 2201 | 2202 | flat@5.0.2: {} 2203 | 2204 | flatted@3.3.1: {} 2205 | 2206 | foreground-child@3.3.1: 2207 | dependencies: 2208 | cross-spawn: 7.0.6 2209 | signal-exit: 4.1.0 2210 | 2211 | fs.realpath@1.0.0: {} 2212 | 2213 | fsevents@2.3.3: 2214 | optional: true 2215 | 2216 | get-caller-file@2.0.5: {} 2217 | 2218 | get-tsconfig@4.10.1: 2219 | dependencies: 2220 | resolve-pkg-maps: 1.0.0 2221 | 2222 | git-hooks-list@4.1.1: {} 2223 | 2224 | glob-parent@5.1.2: 2225 | dependencies: 2226 | is-glob: 4.0.3 2227 | 2228 | glob-parent@6.0.2: 2229 | dependencies: 2230 | is-glob: 4.0.3 2231 | 2232 | glob@10.4.5: 2233 | dependencies: 2234 | foreground-child: 3.3.1 2235 | jackspeak: 3.4.3 2236 | minimatch: 9.0.5 2237 | minipass: 7.1.2 2238 | package-json-from-dist: 1.0.1 2239 | path-scurry: 1.11.1 2240 | 2241 | glob@7.2.3: 2242 | dependencies: 2243 | fs.realpath: 1.0.0 2244 | inflight: 1.0.6 2245 | inherits: 2.0.4 2246 | minimatch: 3.1.2 2247 | once: 1.4.0 2248 | path-is-absolute: 1.0.1 2249 | 2250 | glob@8.1.0: 2251 | dependencies: 2252 | fs.realpath: 1.0.0 2253 | inflight: 1.0.6 2254 | inherits: 2.0.4 2255 | minimatch: 5.1.6 2256 | once: 1.4.0 2257 | 2258 | globals@11.12.0: {} 2259 | 2260 | globals@13.24.0: 2261 | dependencies: 2262 | type-fest: 0.20.2 2263 | 2264 | graphemer@1.4.0: {} 2265 | 2266 | has-flag@4.0.0: {} 2267 | 2268 | he@1.2.0: {} 2269 | 2270 | ignore@5.3.2: {} 2271 | 2272 | ignore@7.0.5: {} 2273 | 2274 | import-fresh@3.3.0: 2275 | dependencies: 2276 | parent-module: 1.0.1 2277 | resolve-from: 4.0.0 2278 | 2279 | imurmurhash@0.1.4: {} 2280 | 2281 | inflight@1.0.6: 2282 | dependencies: 2283 | once: 1.4.0 2284 | wrappy: 1.0.2 2285 | 2286 | inherits@2.0.4: {} 2287 | 2288 | is-binary-path@2.1.0: 2289 | dependencies: 2290 | binary-extensions: 2.3.0 2291 | 2292 | is-extglob@2.1.1: {} 2293 | 2294 | is-fullwidth-code-point@3.0.0: {} 2295 | 2296 | is-glob@4.0.3: 2297 | dependencies: 2298 | is-extglob: 2.1.1 2299 | 2300 | is-number@7.0.0: {} 2301 | 2302 | is-path-inside@3.0.3: {} 2303 | 2304 | is-plain-obj@2.1.0: {} 2305 | 2306 | is-plain-obj@4.1.0: {} 2307 | 2308 | is-unicode-supported@0.1.0: {} 2309 | 2310 | isexe@2.0.0: {} 2311 | 2312 | jackspeak@3.4.3: 2313 | dependencies: 2314 | '@isaacs/cliui': 8.0.2 2315 | optionalDependencies: 2316 | '@pkgjs/parseargs': 0.11.0 2317 | 2318 | joycon@3.1.1: {} 2319 | 2320 | js-tokens@4.0.0: {} 2321 | 2322 | js-yaml@4.1.0: 2323 | dependencies: 2324 | argparse: 2.0.1 2325 | 2326 | jsesc@3.1.0: {} 2327 | 2328 | json-buffer@3.0.1: {} 2329 | 2330 | json-schema-traverse@0.4.1: {} 2331 | 2332 | json-stable-stringify-without-jsonify@1.0.1: {} 2333 | 2334 | keyv@4.5.4: 2335 | dependencies: 2336 | json-buffer: 3.0.1 2337 | 2338 | levn@0.4.1: 2339 | dependencies: 2340 | prelude-ls: 1.2.1 2341 | type-check: 0.4.0 2342 | 2343 | lilconfig@3.1.3: {} 2344 | 2345 | lines-and-columns@1.2.4: {} 2346 | 2347 | load-tsconfig@0.2.5: {} 2348 | 2349 | locate-path@6.0.0: 2350 | dependencies: 2351 | p-locate: 5.0.0 2352 | 2353 | lodash.merge@4.6.2: {} 2354 | 2355 | lodash.sortby@4.7.0: {} 2356 | 2357 | log-symbols@4.1.0: 2358 | dependencies: 2359 | chalk: 4.1.2 2360 | is-unicode-supported: 0.1.0 2361 | 2362 | loupe@3.1.3: {} 2363 | 2364 | lru-cache@10.4.3: {} 2365 | 2366 | magic-string@0.30.17: 2367 | dependencies: 2368 | '@jridgewell/sourcemap-codec': 1.5.0 2369 | 2370 | merge2@1.4.1: {} 2371 | 2372 | micromatch@4.0.8: 2373 | dependencies: 2374 | braces: 3.0.3 2375 | picomatch: 2.3.1 2376 | 2377 | minimatch@3.1.2: 2378 | dependencies: 2379 | brace-expansion: 1.1.11 2380 | 2381 | minimatch@5.1.6: 2382 | dependencies: 2383 | brace-expansion: 2.0.1 2384 | 2385 | minimatch@9.0.5: 2386 | dependencies: 2387 | brace-expansion: 2.0.2 2388 | 2389 | minipass@7.1.2: {} 2390 | 2391 | mlly@1.7.4: 2392 | dependencies: 2393 | acorn: 8.15.0 2394 | pathe: 2.0.3 2395 | pkg-types: 1.3.1 2396 | ufo: 1.6.1 2397 | 2398 | mocha@10.8.2: 2399 | dependencies: 2400 | ansi-colors: 4.1.3 2401 | browser-stdout: 1.3.1 2402 | chokidar: 3.6.0 2403 | debug: 4.3.7(supports-color@8.1.1) 2404 | diff: 5.2.0 2405 | escape-string-regexp: 4.0.0 2406 | find-up: 5.0.0 2407 | glob: 8.1.0 2408 | he: 1.2.0 2409 | js-yaml: 4.1.0 2410 | log-symbols: 4.1.0 2411 | minimatch: 5.1.6 2412 | ms: 2.1.3 2413 | serialize-javascript: 6.0.2 2414 | strip-json-comments: 3.1.1 2415 | supports-color: 8.1.1 2416 | workerpool: 6.5.1 2417 | yargs: 16.2.0 2418 | yargs-parser: 20.2.9 2419 | yargs-unparser: 2.0.0 2420 | 2421 | ms@2.1.3: {} 2422 | 2423 | mvdan-sh@0.10.1: {} 2424 | 2425 | mz@2.7.0: 2426 | dependencies: 2427 | any-promise: 1.3.0 2428 | object-assign: 4.1.1 2429 | thenify-all: 1.6.0 2430 | 2431 | nanoid@3.3.11: 2432 | optional: true 2433 | 2434 | natural-compare@1.4.0: {} 2435 | 2436 | normalize-path@3.0.0: {} 2437 | 2438 | object-assign@4.1.1: {} 2439 | 2440 | once@1.4.0: 2441 | dependencies: 2442 | wrappy: 1.0.2 2443 | 2444 | optionator@0.9.4: 2445 | dependencies: 2446 | deep-is: 0.1.4 2447 | fast-levenshtein: 2.0.6 2448 | levn: 0.4.1 2449 | prelude-ls: 1.2.1 2450 | type-check: 0.4.0 2451 | word-wrap: 1.2.5 2452 | 2453 | p-limit@3.1.0: 2454 | dependencies: 2455 | yocto-queue: 0.1.0 2456 | 2457 | p-locate@5.0.0: 2458 | dependencies: 2459 | p-limit: 3.1.0 2460 | 2461 | package-json-from-dist@1.0.1: {} 2462 | 2463 | parent-module@1.0.1: 2464 | dependencies: 2465 | callsites: 3.1.0 2466 | 2467 | path-exists@4.0.0: {} 2468 | 2469 | path-is-absolute@1.0.1: {} 2470 | 2471 | path-key@3.1.1: {} 2472 | 2473 | path-scurry@1.11.1: 2474 | dependencies: 2475 | lru-cache: 10.4.3 2476 | minipass: 7.1.2 2477 | 2478 | pathe@2.0.3: {} 2479 | 2480 | pathval@2.0.0: {} 2481 | 2482 | picocolors@1.1.1: {} 2483 | 2484 | picomatch@2.3.1: {} 2485 | 2486 | picomatch@4.0.2: {} 2487 | 2488 | pirates@4.0.7: {} 2489 | 2490 | pkg-types@1.3.1: 2491 | dependencies: 2492 | confbox: 0.1.8 2493 | mlly: 1.7.4 2494 | pathe: 2.0.3 2495 | 2496 | postcss-load-config@6.0.1(postcss@8.4.49)(tsx@4.20.1): 2497 | dependencies: 2498 | lilconfig: 3.1.3 2499 | optionalDependencies: 2500 | postcss: 8.4.49 2501 | tsx: 4.20.1 2502 | 2503 | postcss@8.4.49: 2504 | dependencies: 2505 | nanoid: 3.3.11 2506 | picocolors: 1.1.1 2507 | source-map-js: 1.2.1 2508 | optional: true 2509 | 2510 | prelude-ls@1.2.1: {} 2511 | 2512 | prettier-plugin-packagejson@2.5.15(prettier@3.5.3): 2513 | dependencies: 2514 | sort-package-json: 3.2.1 2515 | synckit: 0.11.8 2516 | optionalDependencies: 2517 | prettier: 3.5.3 2518 | 2519 | prettier-plugin-sh@0.15.0(prettier@3.5.3): 2520 | dependencies: 2521 | mvdan-sh: 0.10.1 2522 | prettier: 3.5.3 2523 | sh-syntax: 0.4.2 2524 | 2525 | prettier@3.5.3: {} 2526 | 2527 | punycode@2.3.1: {} 2528 | 2529 | queue-microtask@1.2.3: {} 2530 | 2531 | randombytes@2.1.0: 2532 | dependencies: 2533 | safe-buffer: 5.2.1 2534 | 2535 | readdirp@3.6.0: 2536 | dependencies: 2537 | picomatch: 2.3.1 2538 | 2539 | readdirp@4.1.2: {} 2540 | 2541 | require-directory@2.1.1: {} 2542 | 2543 | resolve-from@4.0.0: {} 2544 | 2545 | resolve-from@5.0.0: {} 2546 | 2547 | resolve-pkg-maps@1.0.0: {} 2548 | 2549 | reusify@1.0.4: {} 2550 | 2551 | rimraf@3.0.2: 2552 | dependencies: 2553 | glob: 7.2.3 2554 | 2555 | rollup@4.43.0: 2556 | dependencies: 2557 | '@types/estree': 1.0.7 2558 | optionalDependencies: 2559 | '@rollup/rollup-android-arm-eabi': 4.43.0 2560 | '@rollup/rollup-android-arm64': 4.43.0 2561 | '@rollup/rollup-darwin-arm64': 4.43.0 2562 | '@rollup/rollup-darwin-x64': 4.43.0 2563 | '@rollup/rollup-freebsd-arm64': 4.43.0 2564 | '@rollup/rollup-freebsd-x64': 4.43.0 2565 | '@rollup/rollup-linux-arm-gnueabihf': 4.43.0 2566 | '@rollup/rollup-linux-arm-musleabihf': 4.43.0 2567 | '@rollup/rollup-linux-arm64-gnu': 4.43.0 2568 | '@rollup/rollup-linux-arm64-musl': 4.43.0 2569 | '@rollup/rollup-linux-loongarch64-gnu': 4.43.0 2570 | '@rollup/rollup-linux-powerpc64le-gnu': 4.43.0 2571 | '@rollup/rollup-linux-riscv64-gnu': 4.43.0 2572 | '@rollup/rollup-linux-riscv64-musl': 4.43.0 2573 | '@rollup/rollup-linux-s390x-gnu': 4.43.0 2574 | '@rollup/rollup-linux-x64-gnu': 4.43.0 2575 | '@rollup/rollup-linux-x64-musl': 4.43.0 2576 | '@rollup/rollup-win32-arm64-msvc': 4.43.0 2577 | '@rollup/rollup-win32-ia32-msvc': 4.43.0 2578 | '@rollup/rollup-win32-x64-msvc': 4.43.0 2579 | fsevents: 2.3.3 2580 | 2581 | run-parallel@1.2.0: 2582 | dependencies: 2583 | queue-microtask: 1.2.3 2584 | 2585 | safe-buffer@5.2.1: {} 2586 | 2587 | semver@7.7.2: {} 2588 | 2589 | serialize-javascript@6.0.2: 2590 | dependencies: 2591 | randombytes: 2.1.0 2592 | 2593 | sh-syntax@0.4.2: 2594 | dependencies: 2595 | tslib: 2.8.1 2596 | 2597 | shebang-command@2.0.0: 2598 | dependencies: 2599 | shebang-regex: 3.0.0 2600 | 2601 | shebang-regex@3.0.0: {} 2602 | 2603 | signal-exit@4.1.0: {} 2604 | 2605 | sort-object-keys@1.1.3: {} 2606 | 2607 | sort-package-json@3.2.1: 2608 | dependencies: 2609 | detect-indent: 7.0.1 2610 | detect-newline: 4.0.1 2611 | git-hooks-list: 4.1.1 2612 | is-plain-obj: 4.1.0 2613 | semver: 7.7.2 2614 | sort-object-keys: 1.1.3 2615 | tinyglobby: 0.2.14 2616 | 2617 | source-map-js@1.2.1: 2618 | optional: true 2619 | 2620 | source-map@0.8.0-beta.0: 2621 | dependencies: 2622 | whatwg-url: 7.1.0 2623 | 2624 | string-width@4.2.3: 2625 | dependencies: 2626 | emoji-regex: 8.0.0 2627 | is-fullwidth-code-point: 3.0.0 2628 | strip-ansi: 6.0.1 2629 | 2630 | string-width@5.1.2: 2631 | dependencies: 2632 | eastasianwidth: 0.2.0 2633 | emoji-regex: 9.2.2 2634 | strip-ansi: 7.1.0 2635 | 2636 | strip-ansi@6.0.1: 2637 | dependencies: 2638 | ansi-regex: 5.0.1 2639 | 2640 | strip-ansi@7.1.0: 2641 | dependencies: 2642 | ansi-regex: 6.1.0 2643 | 2644 | strip-json-comments@3.1.1: {} 2645 | 2646 | sucrase@3.35.0: 2647 | dependencies: 2648 | '@jridgewell/gen-mapping': 0.3.8 2649 | commander: 4.1.1 2650 | glob: 10.4.5 2651 | lines-and-columns: 1.2.4 2652 | mz: 2.7.0 2653 | pirates: 4.0.7 2654 | ts-interface-checker: 0.1.13 2655 | 2656 | supports-color@7.2.0: 2657 | dependencies: 2658 | has-flag: 4.0.0 2659 | 2660 | supports-color@8.1.1: 2661 | dependencies: 2662 | has-flag: 4.0.0 2663 | 2664 | synckit@0.11.8: 2665 | dependencies: 2666 | '@pkgr/core': 0.2.7 2667 | 2668 | text-table@0.2.0: {} 2669 | 2670 | thenify-all@1.6.0: 2671 | dependencies: 2672 | thenify: 3.3.1 2673 | 2674 | thenify@3.3.1: 2675 | dependencies: 2676 | any-promise: 1.3.0 2677 | 2678 | tinyexec@0.3.2: {} 2679 | 2680 | tinyglobby@0.2.14: 2681 | dependencies: 2682 | fdir: 6.4.6(picomatch@4.0.2) 2683 | picomatch: 4.0.2 2684 | 2685 | to-regex-range@5.0.1: 2686 | dependencies: 2687 | is-number: 7.0.0 2688 | 2689 | tr46@1.0.1: 2690 | dependencies: 2691 | punycode: 2.3.1 2692 | 2693 | tree-kill@1.2.2: {} 2694 | 2695 | ts-api-utils@1.4.3(typescript@5.8.3): 2696 | dependencies: 2697 | typescript: 5.8.3 2698 | 2699 | ts-api-utils@2.1.0(typescript@5.8.3): 2700 | dependencies: 2701 | typescript: 5.8.3 2702 | 2703 | ts-interface-checker@0.1.13: {} 2704 | 2705 | tslib@2.8.1: {} 2706 | 2707 | tsup@8.5.0(postcss@8.4.49)(tsx@4.20.1)(typescript@5.8.3): 2708 | dependencies: 2709 | bundle-require: 5.1.0(esbuild@0.25.5) 2710 | cac: 6.7.14 2711 | chokidar: 4.0.3 2712 | consola: 3.4.2 2713 | debug: 4.4.1 2714 | esbuild: 0.25.5 2715 | fix-dts-default-cjs-exports: 1.0.1 2716 | joycon: 3.1.1 2717 | picocolors: 1.1.1 2718 | postcss-load-config: 6.0.1(postcss@8.4.49)(tsx@4.20.1) 2719 | resolve-from: 5.0.0 2720 | rollup: 4.43.0 2721 | source-map: 0.8.0-beta.0 2722 | sucrase: 3.35.0 2723 | tinyexec: 0.3.2 2724 | tinyglobby: 0.2.14 2725 | tree-kill: 1.2.2 2726 | optionalDependencies: 2727 | postcss: 8.4.49 2728 | typescript: 5.8.3 2729 | transitivePeerDependencies: 2730 | - jiti 2731 | - supports-color 2732 | - tsx 2733 | - yaml 2734 | 2735 | tsx@4.20.1: 2736 | dependencies: 2737 | esbuild: 0.25.5 2738 | get-tsconfig: 4.10.1 2739 | optionalDependencies: 2740 | fsevents: 2.3.3 2741 | 2742 | type-check@0.4.0: 2743 | dependencies: 2744 | prelude-ls: 1.2.1 2745 | 2746 | type-fest@0.20.2: {} 2747 | 2748 | typescript@5.8.3: {} 2749 | 2750 | ufo@1.6.1: {} 2751 | 2752 | undici-types@6.21.0: {} 2753 | 2754 | uri-js@4.4.1: 2755 | dependencies: 2756 | punycode: 2.3.1 2757 | 2758 | webidl-conversions@4.0.2: {} 2759 | 2760 | whatwg-url@7.1.0: 2761 | dependencies: 2762 | lodash.sortby: 4.7.0 2763 | tr46: 1.0.1 2764 | webidl-conversions: 4.0.2 2765 | 2766 | which@2.0.2: 2767 | dependencies: 2768 | isexe: 2.0.0 2769 | 2770 | word-wrap@1.2.5: {} 2771 | 2772 | workerpool@6.5.1: {} 2773 | 2774 | wrap-ansi@7.0.0: 2775 | dependencies: 2776 | ansi-styles: 4.3.0 2777 | string-width: 4.2.3 2778 | strip-ansi: 6.0.1 2779 | 2780 | wrap-ansi@8.1.0: 2781 | dependencies: 2782 | ansi-styles: 6.2.1 2783 | string-width: 5.1.2 2784 | strip-ansi: 7.1.0 2785 | 2786 | wrappy@1.0.2: {} 2787 | 2788 | y18n@5.0.8: {} 2789 | 2790 | yargs-parser@20.2.9: {} 2791 | 2792 | yargs-unparser@2.0.0: 2793 | dependencies: 2794 | camelcase: 6.3.0 2795 | decamelize: 4.0.0 2796 | flat: 5.0.2 2797 | is-plain-obj: 2.1.0 2798 | 2799 | yargs@16.2.0: 2800 | dependencies: 2801 | cliui: 7.0.4 2802 | escalade: 3.2.0 2803 | get-caller-file: 2.0.5 2804 | require-directory: 2.1.1 2805 | string-width: 4.2.3 2806 | y18n: 5.0.8 2807 | yargs-parser: 20.2.9 2808 | 2809 | yocto-queue@0.1.0: {} 2810 | --------------------------------------------------------------------------------