├── .prettierrc ├── .prettierignore ├── test ├── fixture │ ├── .gitignore │ ├── node_modules │ │ └── @fixture │ │ │ ├── nitro-utils │ │ │ ├── index.mjs │ │ │ ├── extra.mjs │ │ │ ├── extra2.mjs │ │ │ └── package.json │ │ │ ├── nitro-lib │ │ │ ├── subpath.mjs │ │ │ ├── node_modules │ │ │ │ └── @fixture │ │ │ │ │ └── nested-lib │ │ │ │ │ ├── index.mjs │ │ │ │ │ └── package.json │ │ │ ├── index.mjs │ │ │ └── package.json │ │ │ ├── nitro-dep-a │ │ │ ├── index.mjs │ │ │ ├── node_modules │ │ │ │ └── @fixture │ │ │ │ │ └── nitro-lib │ │ │ │ │ ├── node_modules │ │ │ │ │ └── @fixture │ │ │ │ │ │ └── nested-lib │ │ │ │ │ │ ├── index.mjs │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── index.mjs │ │ │ │ │ └── package.json │ │ │ └── package.json │ │ │ └── nitro-dep-b │ │ │ ├── index.mjs │ │ │ ├── node_modules │ │ │ └── @fixture │ │ │ │ └── nitro-lib │ │ │ │ ├── subpath.mjs │ │ │ │ ├── node_modules │ │ │ │ └── @fixture │ │ │ │ │ └── nested-lib │ │ │ │ │ ├── index.mjs │ │ │ │ │ └── package.json │ │ │ │ ├── index.mjs │ │ │ │ └── package.json │ │ │ └── package.json │ └── index.mjs ├── trace.test.ts ├── plugin.test.ts └── condition.test.ts ├── renovate.json ├── src ├── index.ts ├── types.ts ├── _utils.ts ├── plugin.ts └── trace.ts ├── .gitignore ├── vitest.config.mjs ├── eslint.config.mjs ├── .editorconfig ├── .github └── workflows │ ├── autofix.yml │ └── checks.yml ├── tsconfig.json ├── package.json ├── LICENSE ├── README.md ├── CHANGELOG.md └── pnpm-lock.yaml /.prettierrc: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | pnpm-lock.yaml 2 | CHANGELOG.md 3 | -------------------------------------------------------------------------------- /test/fixture/.gitignore: -------------------------------------------------------------------------------- 1 | !node_modules 2 | !.env 3 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["github>unjs/renovate-config"] 3 | } 4 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-utils/index.mjs: -------------------------------------------------------------------------------- 1 | export default '@fixture/nitro-utils' 2 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-lib/subpath.mjs: -------------------------------------------------------------------------------- 1 | export default '@fixture/nitro-lib@2.0.0'; 2 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-dep-a/index.mjs: -------------------------------------------------------------------------------- 1 | export { default } from '@fixture/nitro-lib' 2 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-dep-b/index.mjs: -------------------------------------------------------------------------------- 1 | export { default } from '@fixture/nitro-lib' 2 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-utils/extra.mjs: -------------------------------------------------------------------------------- 1 | export default '@fixture/nitro-utils/extra' 2 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-utils/extra2.mjs: -------------------------------------------------------------------------------- 1 | export default '@fixture/nitro-utils/extra2' 2 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-dep-b/node_modules/@fixture/nitro-lib/subpath.mjs: -------------------------------------------------------------------------------- 1 | export default '2.0.1'; 2 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { traceNodeModules } from "./trace.ts"; 2 | export type { ExternalsTraceOptions } from "./types.ts"; 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | coverage 3 | dist 4 | .vscode 5 | .DS_Store 6 | .eslintcache 7 | *.log* 8 | *.env* 9 | *.tgz 10 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-lib/node_modules/@fixture/nested-lib/index.mjs: -------------------------------------------------------------------------------- 1 | export default '@fixture/nested-lib@2.0.0' 2 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-dep-a/node_modules/@fixture/nitro-lib/node_modules/@fixture/nested-lib/index.mjs: -------------------------------------------------------------------------------- 1 | export default '@fixture/nested-lib@1.0.0' 2 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-dep-b/node_modules/@fixture/nitro-lib/node_modules/@fixture/nested-lib/index.mjs: -------------------------------------------------------------------------------- 1 | export default '@fixture/nested-lib@2.0.1' 2 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-lib/index.mjs: -------------------------------------------------------------------------------- 1 | import nestedLib from '@fixture/nested-lib' 2 | 3 | export default '@fixture/nitro-lib@2.0.0+' + nestedLib 4 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-lib/node_modules/@fixture/nested-lib/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@fixture/nested-lib", 3 | "version": "2.0.0", 4 | "exports": "./index.mjs" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-dep-a/node_modules/@fixture/nitro-lib/index.mjs: -------------------------------------------------------------------------------- 1 | import nestedLib from '@fixture/nested-lib' 2 | 3 | export default '@fixture/nitro-lib@1.0.0+' + nestedLib 4 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-dep-b/node_modules/@fixture/nitro-lib/index.mjs: -------------------------------------------------------------------------------- 1 | import nestedLib from '@fixture/nested-lib' 2 | 3 | export default '@fixture/nitro-lib@2.0.1+' + nestedLib 4 | -------------------------------------------------------------------------------- /vitest.config.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vitest/config"; 2 | 3 | export default defineConfig({ 4 | server: { 5 | watch: { 6 | ignored: ["**/dist/**"], 7 | }, 8 | }, 9 | }); 10 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-dep-a/node_modules/@fixture/nitro-lib/node_modules/@fixture/nested-lib/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@fixture/nested-lib", 3 | "version": "1.0.0", 4 | "exports": "./index.mjs" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-dep-b/node_modules/@fixture/nitro-lib/node_modules/@fixture/nested-lib/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@fixture/nested-lib", 3 | "version": "2.0.1", 4 | "exports": "./index.mjs" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-dep-a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@fixture/nitro-dep-a", 3 | "version": "1.0.0", 4 | "exports": "./index.mjs", 5 | "dependencies": { 6 | "@fixture/nitro-lib": "1.0.0" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-dep-b/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@fixture/nitro-dep-b", 3 | "version": "2.0.1", 4 | "exports": "./index.mjs", 5 | "dependencies": { 6 | "@fixture/nitro-lib": "2.0.1" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-dep-a/node_modules/@fixture/nitro-lib/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nitro-lib", 3 | "version": "1.0.0", 4 | "exports": "./index.mjs", 5 | "dependencies": { 6 | "nested-lib": "1.0.0" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import unjs from "eslint-config-unjs"; 2 | 3 | export default unjs({ 4 | ignores: ["**/dist/**"], 5 | rules: { 6 | "unicorn/no-null": "off", 7 | "eslint/no-control-regex": "off", 8 | }, 9 | markdown: { 10 | rules: {}, 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-utils/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@fixture/nitro-utils", 3 | "private": true, 4 | "type": "module", 5 | "exports": { 6 | ".": "./index.mjs", 7 | "./extra": "./extra.mjs", 8 | "./extra2": "./extra2.mjs" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.js] 10 | indent_style = space 11 | indent_size = 2 12 | 13 | [{package.json,*.yml,*.cjson}] 14 | indent_style = space 15 | indent_size = 2 16 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-dep-b/node_modules/@fixture/nitro-lib/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nitro-lib", 3 | "version": "2.0.1", 4 | "exports": { 5 | ".": "./index.mjs", 6 | "./subpath": "./subpath.mjs" 7 | }, 8 | "dependencies": { 9 | "nested-lib": "2.0.1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixture/node_modules/@fixture/nitro-lib/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@fixture/nitro-lib-aliased-from-another-name", 3 | "version": "2.0.0", 4 | "exports": { 5 | ".": "./index.mjs", 6 | "./subpath": "./subpath.mjs" 7 | }, 8 | "dependencies": { 9 | "@fixture/nested-lib": "2.0.0" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.github/workflows/autofix.yml: -------------------------------------------------------------------------------- 1 | name: autofix.ci 2 | on: { push: {}, pull_request: {} } 3 | permissions: { contents: read } 4 | jobs: 5 | autofix: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v6 9 | - run: npm i -fg corepack && corepack enable 10 | - uses: actions/setup-node@v6 11 | with: { node-version: lts/*, cache: "pnpm" } 12 | - run: pnpm install 13 | - run: pnpm lint:fix 14 | - uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27 15 | with: { commit-message: "chore: apply automated updates" } 16 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "nodenext", 5 | "moduleResolution": "nodenext", 6 | "moduleDetection": "force", 7 | "esModuleInterop": true, 8 | "allowSyntheticDefaultImports": true, 9 | "allowJs": true, 10 | "resolveJsonModule": true, 11 | "strict": true, 12 | "isolatedModules": true, 13 | "verbatimModuleSyntax": true, 14 | "noUncheckedIndexedAccess": true, 15 | "forceConsistentCasingInFileNames": true, 16 | "allowImportingTsExtensions": true, 17 | "noImplicitOverride": true, 18 | "noEmit": true 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /.github/workflows/checks.yml: -------------------------------------------------------------------------------- 1 | name: checks 2 | on: { push: {}, pull_request: {} } 3 | 4 | jobs: 5 | checks: 6 | runs-on: ${{ matrix.os }} 7 | strategy: 8 | matrix: { os: [ubuntu-latest, windows-latest] } 9 | 10 | steps: 11 | - uses: actions/checkout@v6 12 | - run: npm i -fg corepack && corepack enable 13 | - uses: actions/setup-node@v6 14 | with: { node-version: lts/*, cache: "pnpm" } 15 | - run: pnpm install 16 | - run: pnpm run build 17 | - run: pnpm run lint 18 | if: runner.os == 'Linux' 19 | - run: pnpm vitest --coverage 20 | - uses: codecov/codecov-action@v5 21 | with: { token: "${{ secrets.CODECOV_TOKEN }}" } 22 | -------------------------------------------------------------------------------- /test/fixture/index.mjs: -------------------------------------------------------------------------------- 1 | import depA from "@fixture/nitro-dep-a"; 2 | import depB from "@fixture/nitro-dep-b"; 3 | import depLib from "@fixture/nitro-lib"; 4 | import subpathLib from "@fixture/nitro-lib/subpath"; 5 | import extraUtils from "@fixture/nitro-utils/extra"; 6 | 7 | // fileURLToPath(new URL("node_modules/@fixture/nitro-utils/extra2.mjs", import.meta.url)) 8 | // import extraUtilsAbsolute from "#fixture-nitro-utils-extra-absolute"; 9 | 10 | export default { 11 | depA, // expected to all be 1.0.0 12 | depB, // expected to all be 2.0.1 13 | depLib, // expected to all be 2.0.0 14 | subpathLib, // expected to 2.0.0 15 | extraUtils, // expected @fixture/nitro-utils/extra 16 | // extraUtilsAbsolute, 17 | }; 18 | -------------------------------------------------------------------------------- /test/trace.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, expect, it, vi } from "vitest"; 2 | import { traceNodeModules } from "../src/index.ts"; 3 | import { fileURLToPath } from "node:url"; 4 | import { cp } from "node:fs/promises"; 5 | import type { TraceHooks } from "../src/types.ts"; 6 | 7 | describe("traceNodeModules", () => { 8 | it("traceNodeModules", async () => { 9 | const input = fileURLToPath(new URL("fixture/index.mjs", import.meta.url)); 10 | const outDir = fileURLToPath(new URL("dist/trace", import.meta.url)); 11 | 12 | await cp(input, `${outDir}/index.mjs`); 13 | 14 | const hooks: TraceHooks = { 15 | traceStart: vi.fn(), 16 | traceResult: vi.fn(), 17 | tracedFiles: vi.fn(), 18 | tracedPackages: vi.fn(), 19 | }; 20 | 21 | await traceNodeModules([input], { outDir, hooks }); 22 | 23 | const entry = await import(`${outDir}/index.mjs`); 24 | 25 | expect(entry.default).toMatchObject({ 26 | depA: "@fixture/nitro-lib@1.0.0+@fixture/nested-lib@1.0.0", 27 | depB: "@fixture/nitro-lib@2.0.1+@fixture/nested-lib@2.0.1", 28 | depLib: "@fixture/nitro-lib@2.0.0+@fixture/nested-lib@2.0.0", 29 | extraUtils: "@fixture/nitro-utils/extra", 30 | subpathLib: "@fixture/nitro-lib@2.0.0", 31 | }); 32 | 33 | expect(hooks.traceStart).toHaveBeenCalledOnce(); 34 | expect(hooks.traceResult).toHaveBeenCalledOnce(); 35 | expect(hooks.tracedFiles).toHaveBeenCalledOnce(); 36 | expect(hooks.tracedPackages).toHaveBeenCalledOnce(); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nf3", 3 | "version": "0.3.0", 4 | "description": "", 5 | "repository": "unjs/nf3", 6 | "license": "MIT", 7 | "sideEffects": false, 8 | "type": "module", 9 | "exports": { 10 | ".": "./dist/index.mjs", 11 | "./plugin": "./dist/plugin.mjs" 12 | }, 13 | "types": "./dist/index.d.mts", 14 | "files": [ 15 | "dist" 16 | ], 17 | "scripts": { 18 | "build": "obuild", 19 | "dev": "vitest dev", 20 | "lint": "eslint . && prettier -c .", 21 | "lint:fix": "automd && eslint . --fix && prettier -w .", 22 | "prepack": "pnpm build", 23 | "release": "pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags", 24 | "test": "pnpm lint && pnpm test:types && vitest run --coverage", 25 | "test:types": "tsc --noEmit --skipLibCheck" 26 | }, 27 | "devDependencies": { 28 | "@rollup/plugin-node-resolve": "^16.0.3", 29 | "@types/node": "^24.10.2", 30 | "@types/semver": "^7.7.1", 31 | "@vercel/nft": "^1.1.1", 32 | "@vitest/coverage-v8": "^4.0.15", 33 | "automd": "^0.4.2", 34 | "changelogen": "^0.6.2", 35 | "eslint": "^9.39.1", 36 | "eslint-config-unjs": "^0.5.0", 37 | "exsolve": "^1.0.8", 38 | "obuild": "^0.4.7", 39 | "oxc-minify": "^0.102.0", 40 | "pathe": "^2.0.3", 41 | "pkg-types": "^2.3.0", 42 | "prettier": "^3.7.4", 43 | "rolldown": "^1.0.0-beta.53", 44 | "rollup": "^4.53.3", 45 | "rollup-plugin-esbuild": "^6.2.1", 46 | "semver": "^7.7.3", 47 | "typescript": "^5.9.3", 48 | "vitest": "^4.0.15" 49 | }, 50 | "packageManager": "pnpm@10.25.0" 51 | } 52 | -------------------------------------------------------------------------------- /test/plugin.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it } from "vitest"; 2 | import { fileURLToPath } from "node:url"; 3 | import { builtinModules } from "node:module"; 4 | import * as rolldown from "rolldown"; 5 | import * as rollup from "rollup"; 6 | import esbuild from "rollup-plugin-esbuild"; 7 | import { nodeResolve } from "@rollup/plugin-node-resolve"; 8 | import { rm } from "node:fs/promises"; 9 | 10 | import { externals } from "../src/plugin.ts"; 11 | 12 | describe("plugin", () => { 13 | const pkgDir = fileURLToPath(new URL("../", import.meta.url)); 14 | const input = fileURLToPath(new URL("../src/index.ts", import.meta.url)); 15 | 16 | it("rollup", async () => { 17 | await rm(fileURLToPath(new URL("dist/rollup", import.meta.url)), { 18 | recursive: true, 19 | force: true, 20 | }); 21 | 22 | const out = await rollup.rollup({ 23 | input, 24 | output: { format: "esm" }, 25 | external: [...builtinModules, ...builtinModules.map((m) => `node:${m}`)], 26 | plugins: [externals({ rootDir: pkgDir }), nodeResolve({}), esbuild()], 27 | }); 28 | await out.write({ 29 | dir: fileURLToPath(new URL("dist/rollup", import.meta.url)), 30 | }); 31 | }); 32 | 33 | it("rolldown", async () => { 34 | await rm(fileURLToPath(new URL("dist/rolldown", import.meta.url)), { 35 | recursive: true, 36 | force: true, 37 | }); 38 | 39 | await rolldown.build({ 40 | input, 41 | output: { 42 | dir: fileURLToPath(new URL("dist/rolldown", import.meta.url)), 43 | format: "esm", 44 | }, 45 | external: [...builtinModules, ...builtinModules.map((m) => `node:${m}`)], 46 | plugins: [externals({ rootDir: pkgDir })], 47 | }); 48 | }); 49 | }); 50 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Pooya Parsa 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 | 23 | --- 24 | 25 | Bundled with @vercel/nft (https://github.com/vercel/nft) 26 | 27 | Copyright 2019 Vercel, Inc. 28 | 29 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 30 | 31 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 32 | 33 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 34 | -------------------------------------------------------------------------------- /test/condition.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, expect, it } from "vitest"; 2 | import { applyProductionCondition } from "../src/trace.ts"; 3 | 4 | describe("externals:applyProductionCondition", () => { 5 | const applyProductionConditionCases = [ 6 | { 7 | name: "vue-router@4.1.6", 8 | in: { 9 | ".": { 10 | types: "./dist/vue-router.d.ts", 11 | node: { 12 | import: { 13 | production: "./dist/vue-router.node.mjs", 14 | development: "./dist/vue-router.node.mjs", 15 | default: "./dist/vue-router.node.mjs", 16 | }, 17 | require: { 18 | production: "./dist/vue-router.prod.cjs", 19 | development: "./dist/vue-router.cjs", 20 | default: "./index.js", 21 | }, 22 | }, 23 | import: "./dist/vue-router.mjs", 24 | require: "./index.js", 25 | }, 26 | "./dist/*": "./dist/*", 27 | "./vetur/*": "./vetur/*", 28 | "./package.json": "./package.json", 29 | }, 30 | out: { 31 | ".": { 32 | types: "./dist/vue-router.d.ts", 33 | node: { 34 | import: { 35 | production: "./dist/vue-router.node.mjs", 36 | development: "./dist/vue-router.node.mjs", 37 | default: "./dist/vue-router.node.mjs", 38 | }, 39 | require: { 40 | production: "./dist/vue-router.prod.cjs", 41 | development: "./dist/vue-router.cjs", 42 | default: "./dist/vue-router.prod.cjs", 43 | }, 44 | }, 45 | import: "./dist/vue-router.mjs", 46 | require: "./index.js", 47 | }, 48 | "./dist/*": "./dist/*", 49 | "./vetur/*": "./vetur/*", 50 | "./package.json": "./package.json", 51 | }, 52 | }, 53 | { 54 | name: "fluent-vue@3.2.0", 55 | in: { 56 | ".": { 57 | production: { 58 | require: "./dist/prod/index.cjs", 59 | import: "./dist/prod/index.mjs", 60 | }, 61 | types: "./index.d.ts", 62 | require: "./dist/index.cjs", 63 | import: "./dist/index.mjs", 64 | }, 65 | }, 66 | out: { 67 | ".": { 68 | import: "./dist/prod/index.mjs", 69 | production: { 70 | import: "./dist/prod/index.mjs", 71 | require: "./dist/prod/index.cjs", 72 | }, 73 | require: "./dist/prod/index.cjs", 74 | types: "./index.d.ts", 75 | }, 76 | }, 77 | }, 78 | ]; 79 | for (const t of applyProductionConditionCases) { 80 | it(t.name, () => { 81 | applyProductionCondition(t.in as any); 82 | expect(t.in).toEqual(t.out); 83 | }); 84 | } 85 | }); 86 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 📦 nf3 2 | 3 | 4 | 5 | [![npm version](https://img.shields.io/npm/v/nf3?color=yellow)](https://npmjs.com/package/nf3) 6 | [![npm downloads](https://img.shields.io/npm/dm/nf3?color=yellow)](https://npm.chart.dev/nf3) 7 | [![install size](https://badgen.net/packagephobia/install/nf3?color=yellow)](https://packagephobia.com/result?p=nf3) 8 | [![codecov](https://img.shields.io/codecov/c/gh/unjs/nf3?color=yellow)](https://codecov.io/gh/unjs/nf3) 9 | 10 | 11 | 12 | This plugin traces and copies only the `node_modules` that are actually required at runtime for your built output — powered by [@vercel/nft](https://github.com/vercel/nft). 13 | 14 | Bundling external dependencies can sometimes fail or cause issues, especially when modules rely on relative paths, native bindings, or dynamic imports. 15 | 16 | To solve this, the plugin analyzes your build output, traces its runtime dependencies, and copies a **tree-shaken**, **deduplicated**, and **runtime-only** subset of `node_modules` into `dist/node_modules`. 17 | The result is a minimal, self-contained distribution directory that just works. 18 | 19 | Originally extracted from [Nitro](https://nitro.build) and used for optimizing `nf3` package dist itself! 20 | 21 | ## Usage 22 | 23 | ### API 24 | 25 | ```js 26 | import { traceNodeModules } from "nf3"; 27 | 28 | await traceNodeModules(["./index.mjs"], { 29 | // outDir: "dist", 30 | // chmod: 0o755, 31 | // writePackageJson: true, 32 | // traceAlias: {}, 33 | // hooks: {}, 34 | // nft: {}, // https://github.com/vercel/nft#options 35 | }); 36 | ``` 37 | 38 | ### Rollup/Rolldown/Vite Plugin 39 | 40 | ```js 41 | import { externals } from "nf3/plugin"; 42 | 43 | export default { 44 | plugins: [ 45 | externals({ 46 | // rootDir: ".", 47 | // conditions: ["node", "import", "default"], 48 | // include: [/^@my-scope\//], 49 | // exclude: ["fsevents"], 50 | // traceInclude: ["some-lib"], 51 | // trace: {} 52 | }), 53 | ], 54 | }; 55 | ``` 56 | 57 | ### Hooks 58 | 59 | After the Rollup plugin traces the required files, `traceNodeModules` processes them into an optimized `node_modules` output. 60 | 61 | Each phase can be extended through hooks: 62 | 63 | ```js 64 | rollupNodeFileTrace({ 65 | hooks: { 66 | traceStart: (files) => {}, 67 | traceResult: (result) => {}, 68 | tracedFiles: (files) => {}, 69 | tracedPackages: (packages) => {}, 70 | }, 71 | }); 72 | ``` 73 | 74 | ### Transforming 75 | 76 | Before writing files, you can transform some of them. 77 | 78 | **Example:** 79 | 80 | ```js 81 | import { minify } from "oxc-minify"; 82 | 83 | rollupNodeFileTrace({ 84 | transform: [ 85 | { 86 | filter: (id) => /\.[mc]?js$/.test(id), 87 | handler: (code, id) => minify(id, code, {}).code, 88 | }, 89 | ], 90 | }); 91 | ``` 92 | 93 | ## Development 94 | 95 |
96 | 97 | local development 98 | 99 | - Clone this repository 100 | - Install latest LTS version of [Node.js](https://nodejs.org/en/) 101 | - Enable [Corepack](https://github.com/nodejs/corepack) using `corepack enable` 102 | - Install dependencies using `pnpm install` 103 | - Run interactive tests using `pnpm dev` 104 | 105 |
106 | 107 | ## License 108 | 109 | Published under the [MIT](https://github.com/unjs/nf3/blob/main/LICENSE) license. 110 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | import type { NodeFileTraceOptions, NodeFileTraceResult } from "@vercel/nft"; 2 | import type { PackageJson } from "pkg-types"; 3 | 4 | export interface ExternalsPluginOptions { 5 | /** 6 | * The root directory to use when resolving files. Defaults to `process.cwd()`. 7 | */ 8 | rootDir?: string; 9 | 10 | /** 11 | * Patterns to trace or externalize. 12 | */ 13 | include?: (string | RegExp)[]; 14 | 15 | /** 16 | * Patterns to exclude from tracing or externalizing (makes them to be bundled). 17 | */ 18 | exclude?: (string | RegExp)[]; 19 | 20 | /** 21 | * 22 | * Tracing options. 23 | * 24 | * If `false`, disables automatic tracing of `node_modules` dependencies and keeps them as absolute external paths. 25 | */ 26 | trace?: boolean | ExternalsTraceOptions; 27 | 28 | /** 29 | * Patterns to force trace even if not resolved. 30 | */ 31 | traceInclude?: string[]; 32 | 33 | /** 34 | * Resolve conditions to use when resolving packages. Defaults to `["node", "import", "default"]` 35 | */ 36 | conditions?: string[]; 37 | } 38 | 39 | export interface ExternalsTraceOptions { 40 | /** 41 | * The root directory to use when resolving files. Defaults to `process.cwd()`. 42 | */ 43 | rootDir?: string; 44 | 45 | /** 46 | * The output directory where traced files will be copied. Defaults to `dist`. 47 | */ 48 | outDir?: string; 49 | 50 | /** 51 | * Options to pass to `@vercel/nft` for file tracing. 52 | * 53 | * @see https://github.com/vercel/nft#options 54 | */ 55 | nft?: NodeFileTraceOptions; 56 | 57 | /** 58 | * Module resolution conditions to use when resolving packages. 59 | * 60 | * Defaults to `["node", "import", "default"]` 61 | */ 62 | conditions?: string[]; 63 | 64 | /** 65 | * Alias for module paths when tracing files. 66 | */ 67 | traceAlias?: Record; 68 | 69 | /** 70 | * Preserve file permissions when copying files. If set to `true`, original file permissions are preserved. If set to a number, that value is used as the permission mode (e.g., `0o755`). 71 | */ 72 | chmod?: boolean | number; 73 | 74 | /** 75 | * If `true`, writes a `package.json` file to the output directory (parent) with the traced files as dependencies. 76 | */ 77 | writePackageJson?: boolean; 78 | 79 | /** 80 | * Hook functions for allow extending tracing behavior. 81 | */ 82 | hooks?: TraceHooks; 83 | 84 | /** Transform traced files */ 85 | transform?: Transformer[]; 86 | } 87 | 88 | export type Transformer = { 89 | filter: (id: string) => boolean; 90 | handler: ( 91 | code: string, 92 | id: string, 93 | ) => string | undefined | Promise; 94 | }; 95 | 96 | export type TracedFile = { 97 | path: string; 98 | subpath: string; 99 | parents: string[]; 100 | pkgPath: string; 101 | pkgName: string; 102 | pkgVersion: string; 103 | }; 104 | 105 | export type TracedPackage = { 106 | name: string; 107 | versions: Record< 108 | string, 109 | { 110 | pkgJSON: PackageJson; 111 | path: string; 112 | files: string[]; 113 | } 114 | >; 115 | }; 116 | 117 | export interface TraceHooks { 118 | traceStart?: (files: string[]) => void | Promise; 119 | traceResult?: (result: NodeFileTraceResult) => void | Promise; 120 | tracedFiles?: (files: Record) => void | Promise; 121 | tracedPackages?: ( 122 | packages: Record, 123 | ) => void | Promise; 124 | } 125 | -------------------------------------------------------------------------------- /src/_utils.ts: -------------------------------------------------------------------------------- 1 | import { createRequire } from "node:module"; 2 | import { isAbsolute, join } from "pathe"; 3 | 4 | import type { PackageJson } from "pkg-types"; 5 | 6 | export const isWindows = process.platform === "win32"; 7 | 8 | const NODE_MODULES_RE = 9 | /^(?.+[\\/]node_modules[\\/])(?[^@\\/]+|@[^\\/]+[\\/][^\\/]+)(?:[\\/](?.+))?$/; 10 | 11 | export function parseNodeModulePath(path: string): { 12 | dir?: string; 13 | name?: string; 14 | subpath?: string; 15 | } { 16 | return NODE_MODULES_RE.exec(path)?.groups || {}; 17 | } 18 | 19 | const IMPORT_RE = 20 | /^(?!\.)(?[^@/\\]+|@[^/\\]+[/\\][^/\\]+)(?:[/\\](?.+))?$/; 21 | 22 | export function toImport(id: string): string | undefined { 23 | if (isAbsolute(id)) { 24 | const { name, subpath } = parseNodeModulePath(id) || {}; 25 | if (name && subpath) { 26 | return join(name, subpath); 27 | } 28 | } else if (IMPORT_RE.test(id)) { 29 | return id; 30 | } 31 | } 32 | 33 | export function guessSubpath( 34 | path: string, 35 | conditions: string[], 36 | ): string | undefined { 37 | const { dir, name, subpath } = NODE_MODULES_RE.exec(path)?.groups || {}; 38 | if (!dir || !name || !subpath) { 39 | return; 40 | } 41 | const pkgDir = join(dir, name) + "/"; 42 | const exports = getPkgJSON(pkgDir)?.exports; 43 | if (!exports || typeof exports !== "object") { 44 | return; 45 | } 46 | for (const e of flattenExports(exports)) { 47 | if (!conditions.includes(e.condition || "default")) { 48 | continue; 49 | } 50 | if (e.fsPath === subpath) { 51 | return join(name, e.subpath); 52 | } 53 | if (e.fsPath.includes("*")) { 54 | const fsPathRe: RegExp = new RegExp( 55 | "^" + escapeRegExp(e.fsPath).replace(String.raw`\*`, "(.+?)") + "$", 56 | ); 57 | if (fsPathRe.test(subpath)) { 58 | const matched = fsPathRe.exec(subpath)?.[1]; 59 | if (matched) { 60 | return join(name, e.subpath.replace("*", matched)); 61 | } 62 | } 63 | } 64 | } 65 | } 66 | 67 | export function getPkgJSON(dir: string): PackageJson | undefined { 68 | const cache = ((getPkgJSON as any)._cache ||= new Map()); 69 | if (cache.has(dir)) { 70 | return cache.get(dir); 71 | } 72 | try { 73 | const pkg = createRequire(dir)("./package.json"); 74 | cache.set(dir, pkg); 75 | return pkg; 76 | } catch { 77 | /* ignore */ 78 | } 79 | } 80 | 81 | // Based on mlly 82 | function flattenExports( 83 | exports: Exclude = {}, 84 | parentSubpath = "./", 85 | ): { subpath: string; fsPath: string; condition?: string }[] { 86 | return Object.entries(exports).flatMap(([key, value]) => { 87 | const [subpath, condition] = key.startsWith(".") 88 | ? [key.slice(1)] 89 | : [undefined, key]; 90 | const _subPath = join(parentSubpath, subpath || ""); 91 | if (typeof value === "string") { 92 | return [ 93 | { subpath: _subPath, fsPath: value.replace(/^\.\//, ""), condition }, 94 | ]; 95 | } 96 | return typeof value === "object" ? flattenExports(value, _subPath) : []; 97 | }); 98 | } 99 | 100 | export function escapeRegExp(string: string): string { 101 | return string.replace(/[-\\^$*+?.()|[\]{}]/g, String.raw`\$&`); 102 | } 103 | 104 | export function pathRegExp(string: string): string { 105 | if (isWindows) { 106 | string = string.replace(/\\/g, "/"); 107 | } 108 | let escaped = escapeRegExp(string); 109 | if (isWindows) { 110 | escaped = escaped.replace(/\//g, String.raw`[/\\]`); 111 | } 112 | return escaped; 113 | } 114 | 115 | export function toPathRegExp(input: string | RegExp): RegExp { 116 | if (input instanceof RegExp) { 117 | return input; 118 | } 119 | if (typeof input === "string") { 120 | return new RegExp(pathRegExp(input)); 121 | } 122 | throw new TypeError("Expected a string or RegExp", { cause: input }); 123 | } 124 | -------------------------------------------------------------------------------- /src/plugin.ts: -------------------------------------------------------------------------------- 1 | import { pathToFileURL } from "node:url"; 2 | import { builtinModules } from "node:module"; 3 | import { isAbsolute, resolve } from "pathe"; 4 | import { resolveModulePath } from "exsolve"; 5 | import { guessSubpath, toImport, pathRegExp, toPathRegExp } from "./_utils.ts"; 6 | import { DEFAULT_CONDITIONS } from "./trace.ts"; 7 | 8 | import type { Plugin } from "rollup"; 9 | import type { ExternalsPluginOptions } from "./types.ts"; 10 | export type { ExternalsPluginOptions } from "./types.ts"; 11 | 12 | const PLUGIN_NAME = "nitro:externals"; 13 | 14 | export function externals(opts: ExternalsPluginOptions): Plugin { 15 | const rootDir = resolve(opts.rootDir || "."); 16 | 17 | const include: RegExp[] | undefined = opts?.include 18 | ? opts.include.map((p) => toPathRegExp(p)) 19 | : undefined; 20 | 21 | const exclude: RegExp[] = [ 22 | /^(?:[\0#~.]|[a-z0-9]{2,}:)|\?/, 23 | new RegExp("^" + pathRegExp(rootDir) + "(?!.*node_modules)"), 24 | ...(opts?.exclude || []).map((p) => toPathRegExp(p)), 25 | ]; 26 | 27 | const filter = (id: string) => { 28 | // Most match at least one include (if specified) 29 | if (include && !include.some((r) => r.test(id))) { 30 | return false; 31 | } 32 | // Most not match any exclude 33 | if (exclude.some((r) => r.test(id))) { 34 | return false; 35 | } 36 | return true; 37 | }; 38 | 39 | const tryResolve = (id: string, from: string | undefined) => 40 | resolveModulePath(id, { 41 | try: true, 42 | from: from && isAbsolute(from) ? from : rootDir, 43 | conditions: opts.conditions, 44 | }); 45 | 46 | const tracedPaths = new Set(); 47 | 48 | return { 49 | name: PLUGIN_NAME, 50 | resolveId: { 51 | order: "pre", 52 | filter: { id: { exclude, include } }, 53 | async handler(id, importer, rOpts) { 54 | // Externalize built-in modules with normalized prefix 55 | if (builtinModules.includes(id)) { 56 | return { 57 | resolvedBy: PLUGIN_NAME, 58 | external: true, 59 | id: id.includes(":") ? id : `node:${id}`, 60 | }; 61 | } 62 | 63 | // Skip nested rollup-node resolutions 64 | if (rOpts.custom?.["node-resolve"]) { 65 | return null; 66 | } 67 | 68 | // Resolve by other resolvers 69 | let resolved = await this.resolve(id, importer, rOpts); 70 | 71 | // Skip rolldown-plugin-commonjs resolver for externals 72 | const cjsResolved = resolved?.meta?.commonjs?.resolved; 73 | if (cjsResolved) { 74 | if (!filter(cjsResolved.id)) { 75 | return resolved; // Bundled and wrapped by CJS plugin 76 | } 77 | resolved = cjsResolved /* non-wrapped */; 78 | } 79 | 80 | // Check if not resolved or explicitly marked as excluded 81 | if (!resolved?.id || !filter(resolved!.id)) { 82 | return resolved; 83 | } 84 | 85 | // Normalize to absolute path 86 | let resolvedPath = resolved.id; 87 | if (!isAbsolute(resolvedPath)) { 88 | resolvedPath = tryResolve(resolvedPath, importer) || resolvedPath; 89 | } 90 | 91 | // Tracing mode 92 | if (opts.trace !== false) { 93 | let importId = toImport(id) || toImport(resolvedPath); 94 | if (!importId) { 95 | return resolved; 96 | } 97 | if (!tryResolve(importId, importer)) { 98 | const guessed = await guessSubpath( 99 | resolvedPath, 100 | opts.conditions || DEFAULT_CONDITIONS, 101 | ); 102 | if (!guessed) { 103 | return resolved; 104 | } 105 | importId = guessed; 106 | } 107 | tracedPaths.add(resolvedPath); 108 | return { 109 | ...resolved, 110 | resolvedBy: PLUGIN_NAME, 111 | external: true, 112 | id: importId, 113 | }; 114 | } 115 | 116 | // Resolve as absolute path external 117 | return { 118 | ...resolved, 119 | resolvedBy: PLUGIN_NAME, 120 | external: true, 121 | id: isAbsolute(resolvedPath) 122 | ? pathToFileURL(resolvedPath).href // windows compat 123 | : resolvedPath, 124 | }; 125 | }, 126 | }, 127 | buildEnd: { 128 | order: "post", 129 | async handler() { 130 | if (opts.trace === false || tracedPaths.size === 0) { 131 | return; 132 | } 133 | const { traceNodeModules } = await import("./trace.ts"); 134 | await traceNodeModules([...tracedPaths], { 135 | conditions: opts.conditions, 136 | rootDir, 137 | ...(opts.trace === true ? {} : opts.trace), 138 | }); 139 | }, 140 | }, 141 | }; 142 | } 143 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## v0.3.0 4 | 5 | [compare changes](https://github.com/unjs/nf3/compare/v0.2.0...v0.3.0) 6 | 7 | ### 🚀 Enhancements 8 | 9 | - ⚠️ Rewrite plugin ([#14](https://github.com/unjs/nf3/pull/14)) 10 | 11 | ### 🏡 Chore 12 | 13 | - Apply automated updates ([c61a383](https://github.com/unjs/nf3/commit/c61a383)) 14 | - Update dependencies ([e0b1711](https://github.com/unjs/nf3/commit/e0b1711)) 15 | - Update build script ([e99969a](https://github.com/unjs/nf3/commit/e99969a)) 16 | 17 | #### ⚠️ Breaking Changes 18 | 19 | - ⚠️ Rewrite plugin ([#14](https://github.com/unjs/nf3/pull/14)) 20 | 21 | ### ❤️ Contributors 22 | 23 | - Pooya Parsa ([@pi0](https://github.com/pi0)) 24 | 25 | ## v0.2.0 26 | 27 | [compare changes](https://github.com/unjs/nf3/compare/v0.1.11...v0.2.0) 28 | 29 | ### 🩹 Fixes 30 | 31 | - ⚠️ Prioritize string patterns over regexp ([97e764b](https://github.com/unjs/nf3/commit/97e764b)) 32 | 33 | #### ⚠️ Breaking Changes 34 | 35 | - ⚠️ Prioritize string patterns over regexp ([97e764b](https://github.com/unjs/nf3/commit/97e764b)) 36 | 37 | ### ❤️ Contributors 38 | 39 | - Pooya Parsa ([@pi0](https://github.com/pi0)) 40 | 41 | ## v0.1.11 42 | 43 | [compare changes](https://github.com/unjs/nf3/compare/v0.1.10...v0.1.11) 44 | 45 | ### 🩹 Fixes 46 | 47 | - Prioritize regex matchers ([43ecddd](https://github.com/unjs/nf3/commit/43ecddd)) 48 | 49 | ### 🏡 Chore 50 | 51 | - Update deps ([40dd864](https://github.com/unjs/nf3/commit/40dd864)) 52 | 53 | ### ❤️ Contributors 54 | 55 | - Pooya Parsa ([@pi0](https://github.com/pi0)) 56 | 57 | ## v0.1.10 58 | 59 | [compare changes](https://github.com/unjs/nf3/compare/v0.1.9...v0.1.10) 60 | 61 | ### 🔥 Performance 62 | 63 | - Reduce `tryResolve` overhead ([c87d4ea](https://github.com/unjs/nf3/commit/c87d4ea)) 64 | 65 | ### 🏡 Chore 66 | 67 | - Update deps ([3311ee7](https://github.com/unjs/nf3/commit/3311ee7)) 68 | 69 | ### ❤️ Contributors 70 | 71 | - Pooya Parsa ([@pi0](https://github.com/pi0)) 72 | 73 | ## v0.1.9 74 | 75 | [compare changes](https://github.com/unjs/nf3/compare/v0.1.8...v0.1.9) 76 | 77 | ### 🩹 Fixes 78 | 79 | - Limit source exclude to .d.ts files ([8cb24fb](https://github.com/unjs/nf3/commit/8cb24fb)) 80 | 81 | ### 🏡 Chore 82 | 83 | - Apply automated updates ([50066d7](https://github.com/unjs/nf3/commit/50066d7)) 84 | 85 | ### ❤️ Contributors 86 | 87 | - Pooya Parsa ([@pi0](https://github.com/pi0)) 88 | 89 | ## v0.1.8 90 | 91 | [compare changes](https://github.com/unjs/nf3/compare/v0.1.7...v0.1.8) 92 | 93 | ### 📦 Build 94 | 95 | - Improve dist ([4c80956](https://github.com/unjs/nf3/commit/4c80956)) 96 | 97 | ### 🏡 Chore 98 | 99 | - Gitignore \*.tgz ([47b7fcf](https://github.com/unjs/nf3/commit/47b7fcf)) 100 | 101 | ### ❤️ Contributors 102 | 103 | - Pooya Parsa ([@pi0](https://github.com/pi0)) 104 | 105 | ## v0.1.7 106 | 107 | [compare changes](https://github.com/unjs/nf3/compare/v0.1.6...v0.1.7) 108 | 109 | ### 🩹 Fixes 110 | 111 | - Fix optional types ([58bebf6](https://github.com/unjs/nf3/commit/58bebf6)) 112 | 113 | ### 🏡 Chore 114 | 115 | - Update readme and build config ([e42985e](https://github.com/unjs/nf3/commit/e42985e)) 116 | 117 | ### ❤️ Contributors 118 | 119 | - Pooya Parsa ([@pi0](https://github.com/pi0)) 120 | 121 | ## v0.1.6 122 | 123 | [compare changes](https://github.com/unjs/nf3/compare/v0.1.5...v0.1.6) 124 | 125 | ### 🚀 Enhancements 126 | 127 | - Trace hooks ([#8](https://github.com/unjs/nf3/pull/8)) 128 | - Transform plugins ([#9](https://github.com/unjs/nf3/pull/9)) 129 | 130 | ### 🩹 Fixes 131 | 132 | - **plugin:** Exclude non js sources ([704c3d3](https://github.com/unjs/nf3/commit/704c3d3)) 133 | 134 | ### 💅 Refactors 135 | 136 | - Use `.nf3` for multi version dir ([3e3eeb6](https://github.com/unjs/nf3/commit/3e3eeb6)) 137 | 138 | ### 📦 Build 139 | 140 | - Manually exclude extra deps ([6638346](https://github.com/unjs/nf3/commit/6638346)) 141 | - Treeshake dist packages ([9ac9152](https://github.com/unjs/nf3/commit/9ac9152)) 142 | - Also minify `.cjs` in dist ([cf2b516](https://github.com/unjs/nf3/commit/cf2b516)) 143 | 144 | ### 🏡 Chore 145 | 146 | - Update build deps ([ee8a4a4](https://github.com/unjs/nf3/commit/ee8a4a4)) 147 | - Update lockfile ([997b345](https://github.com/unjs/nf3/commit/997b345)) 148 | - Update ci ([4d76c6c](https://github.com/unjs/nf3/commit/4d76c6c)) 149 | 150 | ### ❤️ Contributors 151 | 152 | - Pooya Parsa ([@pi0](https://github.com/pi0)) 153 | 154 | ## v0.1.5 155 | 156 | [compare changes](https://github.com/unjs/nf3/compare/v0.1.4...v0.1.5) 157 | 158 | ### 📦 Build 159 | 160 | - Run build script before publish ([a6e6311](https://github.com/unjs/nf3/commit/a6e6311)) 161 | 162 | ### ❤️ Contributors 163 | 164 | - Pooya Parsa ([@pi0](https://github.com/pi0)) 165 | 166 | ## v0.1.4 167 | 168 | [compare changes](https://github.com/unjs/nf3/compare/v0.1.3...v0.1.4) 169 | 170 | ### 🩹 Fixes 171 | 172 | - Skip resolving ids with protocol ([4b1eed1](https://github.com/unjs/nf3/commit/4b1eed1)) 173 | 174 | ### ❤️ Contributors 175 | 176 | - Pooya Parsa ([@pi0](https://github.com/pi0)) 177 | 178 | ## v0.1.3 179 | 180 | [compare changes](https://github.com/unjs/nf3/compare/v0.1.2...v0.1.3) 181 | 182 | ### 🩹 Fixes 183 | 184 | - Add order to `resolveId` and `buildEnd` hooks ([5831b74](https://github.com/unjs/nf3/commit/5831b74)) 185 | 186 | ### 💅 Refactors 187 | 188 | - Rename plugin ([ce8e792](https://github.com/unjs/nf3/commit/ce8e792)) 189 | 190 | ### 🏡 Chore 191 | 192 | - Update deps ([94860c3](https://github.com/unjs/nf3/commit/94860c3)) 193 | 194 | ### ❤️ Contributors 195 | 196 | - Pooya Parsa ([@pi0](https://github.com/pi0)) 197 | 198 | ## v0.1.2 199 | 200 | [compare changes](https://github.com/unjs/nf3/compare/v0.1.1...v0.1.2) 201 | 202 | ### 🩹 Fixes 203 | 204 | - Ignore `EEXIST` link errors ([c8d05d3](https://github.com/unjs/nf3/commit/c8d05d3)) 205 | 206 | ### 🏡 Chore 207 | 208 | - Apply automated updates ([13fad08](https://github.com/unjs/nf3/commit/13fad08)) 209 | - Update deps ([6ff203b](https://github.com/unjs/nf3/commit/6ff203b)) 210 | - Remove unused import ([ff72e4a](https://github.com/unjs/nf3/commit/ff72e4a)) 211 | 212 | ### ❤️ Contributors 213 | 214 | - Pooya Parsa ([@pi0](https://github.com/pi0)) 215 | 216 | ## v0.1.1 217 | 218 | [compare changes](https://github.com/unjs/nf3/compare/v0.1.0...v0.1.1) 219 | 220 | ### 🩹 Fixes 221 | 222 | - Write package.json to parent + opt-in ([3f52298](https://github.com/unjs/nf3/commit/3f52298)) 223 | 224 | ### 🏡 Chore 225 | 226 | - Add untracked fixture files ([4213403](https://github.com/unjs/nf3/commit/4213403)) 227 | - Fix typo in docs ([#3](https://github.com/unjs/nf3/pull/3)) 228 | 229 | ### ❤️ Contributors 230 | 231 | - Pooya Parsa ([@pi0](https://github.com/pi0)) 232 | - João Lucas De Oliveira Lopes ([@jlucaso1](https://github.com/jlucaso1)) 233 | -------------------------------------------------------------------------------- /src/trace.ts: -------------------------------------------------------------------------------- 1 | import { promises as fsp } from "node:fs"; 2 | import { nodeFileTrace } from "@vercel/nft"; 3 | import { dirname, join, normalize, relative, resolve } from "pathe"; 4 | import { readPackageJSON, writePackageJSON } from "pkg-types"; 5 | import semver from "semver"; 6 | import { isWindows, parseNodeModulePath } from "./_utils.ts"; 7 | 8 | import type { PackageJson } from "pkg-types"; 9 | import type { 10 | ExternalsTraceOptions, 11 | TracedFile, 12 | TracedPackage, 13 | } from "./types.ts"; 14 | export type { ExternalsTraceOptions } from "./types.ts"; 15 | 16 | export const DEFAULT_CONDITIONS = ["node", "import", "default"]; 17 | 18 | export async function traceNodeModules( 19 | input: string[], 20 | opts: ExternalsTraceOptions, 21 | ) { 22 | const rootDir = resolve(opts.rootDir || "."); 23 | 24 | await opts?.hooks?.traceStart?.(input); 25 | 26 | // Trace used files using nft 27 | const traceResult = await nodeFileTrace([...input], { 28 | base: "/", 29 | exportsOnly: true, 30 | processCwd: rootDir, 31 | // https://github.com/nitrojs/nitro/pull/1562 32 | conditions: (opts.conditions || DEFAULT_CONDITIONS).filter( 33 | (c) => !["require", "import", "default"].includes(c), 34 | ), 35 | ...opts.nft, 36 | }); 37 | 38 | await opts?.hooks?.traceResult?.(traceResult); 39 | 40 | // Resolve traced files 41 | const _resolveTracedPath = (p: string) => 42 | fsp.realpath(resolve(opts.nft?.base || "/", p)).then((p) => normalize(p)); 43 | 44 | const tracedFiles: Record = Object.fromEntries( 45 | (await Promise.all( 46 | [...traceResult.reasons.entries()].map(async ([_path, reasons]) => { 47 | if (reasons.ignored) { 48 | return; 49 | } 50 | const path = await _resolveTracedPath(_path); 51 | if (!path.includes("node_modules")) { 52 | return; 53 | } 54 | if (!(await isFile(path))) { 55 | return; 56 | } 57 | const { 58 | dir: baseDir, 59 | name: pkgName, 60 | subpath, 61 | } = parseNodeModulePath(path); 62 | if (!baseDir || !pkgName) { 63 | return; 64 | } 65 | const pkgPath = join(baseDir, pkgName); 66 | const parents = await Promise.all( 67 | [...reasons.parents].map((p) => _resolveTracedPath(p)), 68 | ); 69 | const tracedFile = { 70 | path, 71 | parents, 72 | subpath, 73 | pkgName, 74 | pkgPath, 75 | }; 76 | return [path, tracedFile]; 77 | }), 78 | ).then((r) => r.filter(Boolean))) as [string, TracedFile][], 79 | ); 80 | 81 | await opts?.hooks?.tracedFiles?.(tracedFiles); 82 | 83 | // Resolve traced packages 84 | const tracedPackages: Record = {}; 85 | for (const tracedFile of Object.values(tracedFiles)) { 86 | // Use `node_modules/{name}` in path as name to support aliases 87 | const pkgName = tracedFile.pkgName; 88 | let tracedPackage = tracedPackages[pkgName]; 89 | 90 | // Read package.json for file 91 | let pkgJSON = await readPackageJSON(tracedFile.pkgPath, { 92 | cache: true, 93 | }).catch( 94 | () => {}, // TODO: Only catch ENOENT 95 | ); 96 | if (!pkgJSON) { 97 | pkgJSON = { name: pkgName, version: "0.0.0" }; 98 | } 99 | if (!tracedPackage) { 100 | tracedPackage = { 101 | name: pkgName, 102 | versions: {}, 103 | }; 104 | tracedPackages[pkgName] = tracedPackage; 105 | } 106 | let tracedPackageVersion = 107 | tracedPackage.versions[pkgJSON.version || "0.0.0"]; 108 | if (!tracedPackageVersion) { 109 | tracedPackageVersion = { 110 | path: tracedFile.pkgPath, 111 | files: [], 112 | pkgJSON, 113 | }; 114 | tracedPackage.versions[pkgJSON.version || "0.0.0"] = tracedPackageVersion; 115 | } 116 | tracedPackageVersion.files.push(tracedFile.path); 117 | tracedFile.pkgName = pkgName; 118 | if (pkgJSON.version) { 119 | tracedFile.pkgVersion = pkgJSON.version; 120 | } 121 | } 122 | 123 | await opts?.hooks?.tracedPackages?.(tracedPackages); 124 | 125 | const usedAliases: Record = {}; 126 | 127 | const outDir = resolve(rootDir, opts.outDir || "dist", "node_modules"); 128 | 129 | const writePackage = async ( 130 | name: string, 131 | version: string, 132 | _pkgPath?: string, 133 | ) => { 134 | // Find pkg 135 | const pkg = tracedPackages[name]!; 136 | const pkgPath = _pkgPath || pkg.name; 137 | 138 | // Copy files 139 | for (const src of pkg.versions[version]!.files) { 140 | const { subpath } = parseNodeModulePath(src); 141 | if (!subpath) { 142 | continue; 143 | } 144 | const dst = resolve(outDir, pkgPath, subpath); 145 | await fsp.mkdir(dirname(dst), { recursive: true }); 146 | 147 | const transformers = (opts.transform || []).filter( 148 | (t) => t?.filter?.(src) && t.handler, 149 | ); 150 | if (transformers.length > 0) { 151 | let content = await fsp.readFile(src, "utf8"); 152 | for (const transformer of transformers) { 153 | content = (await transformer.handler(content, src)) ?? content; 154 | } 155 | await fsp.writeFile(dst, content, "utf8"); 156 | } else { 157 | await fsp.copyFile(src, dst); 158 | } 159 | if (opts.chmod) { 160 | await fsp.chmod(dst, opts.chmod === true ? 0o644 : opts.chmod); 161 | } 162 | } 163 | 164 | // Copy package.json 165 | const pkgJSON = pkg.versions[version]!.pkgJSON; 166 | applyProductionCondition(pkgJSON.exports); 167 | const pkgJSONPath = join(outDir, pkgPath, "package.json"); 168 | await fsp.mkdir(dirname(pkgJSONPath), { recursive: true }); 169 | await fsp.writeFile(pkgJSONPath, JSON.stringify(pkgJSON, null, 2), "utf8"); 170 | 171 | // Link aliases 172 | if (opts.traceAlias && opts.traceAlias[pkgPath]) { 173 | usedAliases[opts.traceAlias[pkgPath]] = version; 174 | await linkPackage(pkgPath, opts.traceAlias[pkgPath]); 175 | } 176 | }; 177 | 178 | const linkPackage = async (from: string, to: string) => { 179 | const src = join(outDir, from); 180 | const dst = join(outDir, to); 181 | const dstStat = await fsp.lstat(dst).catch(() => null); 182 | const exists = dstStat?.isSymbolicLink(); 183 | // console.log("Linking", from, "to", to, exists ? "!!!!" : ""); 184 | if (exists) { 185 | return; 186 | } 187 | await fsp.mkdir(dirname(dst), { recursive: true }); 188 | await fsp 189 | .symlink(relative(dirname(dst), src), dst, isWindows ? "junction" : "dir") 190 | .catch((error) => { 191 | if (error.code !== "EEXIST") { 192 | console.error("Cannot link", from, "to", to, error); 193 | } 194 | }); 195 | }; 196 | 197 | // Utility to find package parents 198 | const findPackageParents = (pkg: TracedPackage, version: string) => { 199 | // Try to find parent packages 200 | const versionFiles: TracedFile[] = pkg.versions[version]!.files.map( 201 | (path) => tracedFiles[path]!, 202 | ); 203 | const parentPkgs = [ 204 | ...new Set( 205 | versionFiles.flatMap((file) => 206 | file.parents 207 | .map((parentPath) => { 208 | const parentFile = tracedFiles[parentPath]; 209 | if (!parentFile || parentFile!.pkgName === pkg.name) { 210 | return null; 211 | } 212 | return `${parentFile!.pkgName}@${parentFile!.pkgVersion}`; 213 | }) 214 | .filter(Boolean), 215 | ) as string[], 216 | ), 217 | ]; 218 | return parentPkgs; 219 | }; 220 | 221 | // Analyze dependency tree 222 | const multiVersionPkgs: Record = {}; 223 | const singleVersionPackages: string[] = []; 224 | for (const tracedPackage of Object.values(tracedPackages)) { 225 | const versions = Object.keys(tracedPackage.versions); 226 | if (versions.length === 1) { 227 | singleVersionPackages.push(tracedPackage.name); 228 | continue; 229 | } 230 | multiVersionPkgs[tracedPackage.name] = {}; 231 | for (const version of versions) { 232 | multiVersionPkgs[tracedPackage.name]![version] = findPackageParents( 233 | tracedPackage, 234 | version, 235 | ); 236 | } 237 | } 238 | 239 | // Directly write single version packages 240 | await Promise.all( 241 | singleVersionPackages.map((pkgName) => { 242 | const pkg = tracedPackages[pkgName]; 243 | const version = Object.keys(pkg!.versions)[0]; 244 | return writePackage(pkgName, version!); 245 | }), 246 | ); 247 | 248 | // Write packages with multiple versions 249 | for (const [pkgName, pkgVersions] of Object.entries(multiVersionPkgs)) { 250 | const versionEntries = Object.entries(pkgVersions).sort( 251 | ([v1, p1], [v2, p2]) => { 252 | // 1. Package with no parent packages to be hoisted 253 | if (p1.length === 0) { 254 | return -1; 255 | } 256 | if (p2.length === 0) { 257 | return 1; 258 | } 259 | // 2. Newest version to be hoisted 260 | return compareVersions(v1, v2); 261 | }, 262 | ); 263 | for (const [version, parentPkgs] of versionEntries) { 264 | // Write each version into node_modules/.nf3/{name}@{version} 265 | await writePackage(pkgName, version, `.nf3/${pkgName}@${version}`); 266 | // Link one version to the top level (for indirect bundle deps) 267 | await linkPackage(`.nf3/${pkgName}@${version}`, `${pkgName}`); 268 | // Link to parent packages 269 | for (const parentPkg of parentPkgs) { 270 | const parentPkgName = parentPkg.replace(/@[^@]+$/, ""); 271 | await (multiVersionPkgs[parentPkgName] 272 | ? linkPackage( 273 | `.nf3/${pkgName}@${version}`, 274 | `.nf3/${parentPkg}/node_modules/${pkgName}`, 275 | ) 276 | : linkPackage( 277 | `.nf3/${pkgName}@${version}`, 278 | `${parentPkgName}/node_modules/${pkgName}`, 279 | )); 280 | } 281 | } 282 | } 283 | 284 | // Write an informative package.json 285 | if (opts.writePackageJson) { 286 | await writePackageJSON(resolve(outDir, "../package.json"), { 287 | name: "traced-node-modules", 288 | version: "1.0.0", 289 | type: "module", 290 | private: true, 291 | dependencies: Object.fromEntries( 292 | [ 293 | ...Object.values(tracedPackages).map((pkg) => [ 294 | pkg.name, 295 | Object.keys(pkg.versions)[0], 296 | ]), 297 | ...Object.entries(usedAliases), 298 | ].sort(([a], [b]) => a!.localeCompare(b!)), 299 | ), 300 | }); 301 | } 302 | } 303 | 304 | function compareVersions(v1 = "0.0.0", v2 = "0.0.0") { 305 | try { 306 | return semver.lt(v1, v2, { loose: true }) ? 1 : -1; 307 | } catch { 308 | return v1.localeCompare(v2); 309 | } 310 | } 311 | 312 | export function applyProductionCondition(exports: PackageJson["exports"]) { 313 | if ( 314 | !exports || 315 | typeof exports === "string" || 316 | Array.isArray(exports) /* TODO: unhandled */ 317 | ) { 318 | return; 319 | } 320 | if ("production" in exports) { 321 | if (typeof exports.production === "string") { 322 | exports.default = exports.production; 323 | } else { 324 | Object.assign(exports, exports.production); 325 | } 326 | } 327 | for (const key in exports) { 328 | applyProductionCondition(exports[key as keyof typeof exports]); 329 | } 330 | } 331 | 332 | async function isFile(file: string) { 333 | try { 334 | const stat = await fsp.stat(file); 335 | return stat.isFile(); 336 | } catch (error) { 337 | if ((error as any)?.code === "ENOENT") { 338 | return false; 339 | } 340 | throw error; 341 | } 342 | } 343 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | '@rollup/plugin-node-resolve': 12 | specifier: ^16.0.3 13 | version: 16.0.3(rollup@4.53.3) 14 | '@types/node': 15 | specifier: ^24.10.2 16 | version: 24.10.2 17 | '@types/semver': 18 | specifier: ^7.7.1 19 | version: 7.7.1 20 | '@vercel/nft': 21 | specifier: ^1.1.1 22 | version: 1.1.1(rollup@4.53.3) 23 | '@vitest/coverage-v8': 24 | specifier: ^4.0.15 25 | version: 4.0.15(vitest@4.0.15(@types/node@24.10.2)(jiti@2.6.1)) 26 | automd: 27 | specifier: ^0.4.2 28 | version: 0.4.2(magicast@0.5.1) 29 | changelogen: 30 | specifier: ^0.6.2 31 | version: 0.6.2(magicast@0.5.1) 32 | eslint: 33 | specifier: ^9.39.1 34 | version: 9.39.1(jiti@2.6.1) 35 | eslint-config-unjs: 36 | specifier: ^0.5.0 37 | version: 0.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 38 | exsolve: 39 | specifier: ^1.0.8 40 | version: 1.0.8 41 | obuild: 42 | specifier: ^0.4.7 43 | version: 0.4.7(magicast@0.5.1)(typescript@5.9.3) 44 | oxc-minify: 45 | specifier: ^0.102.0 46 | version: 0.102.0 47 | pathe: 48 | specifier: ^2.0.3 49 | version: 2.0.3 50 | pkg-types: 51 | specifier: ^2.3.0 52 | version: 2.3.0 53 | prettier: 54 | specifier: ^3.7.4 55 | version: 3.7.4 56 | rolldown: 57 | specifier: ^1.0.0-beta.53 58 | version: 1.0.0-beta.53 59 | rollup: 60 | specifier: ^4.53.3 61 | version: 4.53.3 62 | rollup-plugin-esbuild: 63 | specifier: ^6.2.1 64 | version: 6.2.1(esbuild@0.25.12)(rollup@4.53.3) 65 | semver: 66 | specifier: ^7.7.3 67 | version: 7.7.3 68 | typescript: 69 | specifier: ^5.9.3 70 | version: 5.9.3 71 | vitest: 72 | specifier: ^4.0.15 73 | version: 4.0.15(@types/node@24.10.2)(jiti@2.6.1) 74 | 75 | packages: 76 | 77 | '@babel/generator@7.28.5': 78 | resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} 79 | engines: {node: '>=6.9.0'} 80 | 81 | '@babel/helper-string-parser@7.27.1': 82 | resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 83 | engines: {node: '>=6.9.0'} 84 | 85 | '@babel/helper-validator-identifier@7.28.5': 86 | resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} 87 | engines: {node: '>=6.9.0'} 88 | 89 | '@babel/parser@7.28.5': 90 | resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} 91 | engines: {node: '>=6.0.0'} 92 | hasBin: true 93 | 94 | '@babel/runtime@7.28.4': 95 | resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} 96 | engines: {node: '>=6.9.0'} 97 | 98 | '@babel/types@7.28.5': 99 | resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} 100 | engines: {node: '>=6.9.0'} 101 | 102 | '@bcoe/v8-coverage@1.0.2': 103 | resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} 104 | engines: {node: '>=18'} 105 | 106 | '@emnapi/core@1.7.1': 107 | resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} 108 | 109 | '@emnapi/runtime@1.7.1': 110 | resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} 111 | 112 | '@emnapi/wasi-threads@1.1.0': 113 | resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} 114 | 115 | '@esbuild/aix-ppc64@0.25.12': 116 | resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} 117 | engines: {node: '>=18'} 118 | cpu: [ppc64] 119 | os: [aix] 120 | 121 | '@esbuild/android-arm64@0.25.12': 122 | resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} 123 | engines: {node: '>=18'} 124 | cpu: [arm64] 125 | os: [android] 126 | 127 | '@esbuild/android-arm@0.25.12': 128 | resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} 129 | engines: {node: '>=18'} 130 | cpu: [arm] 131 | os: [android] 132 | 133 | '@esbuild/android-x64@0.25.12': 134 | resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} 135 | engines: {node: '>=18'} 136 | cpu: [x64] 137 | os: [android] 138 | 139 | '@esbuild/darwin-arm64@0.25.12': 140 | resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} 141 | engines: {node: '>=18'} 142 | cpu: [arm64] 143 | os: [darwin] 144 | 145 | '@esbuild/darwin-x64@0.25.12': 146 | resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} 147 | engines: {node: '>=18'} 148 | cpu: [x64] 149 | os: [darwin] 150 | 151 | '@esbuild/freebsd-arm64@0.25.12': 152 | resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} 153 | engines: {node: '>=18'} 154 | cpu: [arm64] 155 | os: [freebsd] 156 | 157 | '@esbuild/freebsd-x64@0.25.12': 158 | resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} 159 | engines: {node: '>=18'} 160 | cpu: [x64] 161 | os: [freebsd] 162 | 163 | '@esbuild/linux-arm64@0.25.12': 164 | resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} 165 | engines: {node: '>=18'} 166 | cpu: [arm64] 167 | os: [linux] 168 | 169 | '@esbuild/linux-arm@0.25.12': 170 | resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} 171 | engines: {node: '>=18'} 172 | cpu: [arm] 173 | os: [linux] 174 | 175 | '@esbuild/linux-ia32@0.25.12': 176 | resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} 177 | engines: {node: '>=18'} 178 | cpu: [ia32] 179 | os: [linux] 180 | 181 | '@esbuild/linux-loong64@0.25.12': 182 | resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} 183 | engines: {node: '>=18'} 184 | cpu: [loong64] 185 | os: [linux] 186 | 187 | '@esbuild/linux-mips64el@0.25.12': 188 | resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} 189 | engines: {node: '>=18'} 190 | cpu: [mips64el] 191 | os: [linux] 192 | 193 | '@esbuild/linux-ppc64@0.25.12': 194 | resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} 195 | engines: {node: '>=18'} 196 | cpu: [ppc64] 197 | os: [linux] 198 | 199 | '@esbuild/linux-riscv64@0.25.12': 200 | resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} 201 | engines: {node: '>=18'} 202 | cpu: [riscv64] 203 | os: [linux] 204 | 205 | '@esbuild/linux-s390x@0.25.12': 206 | resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} 207 | engines: {node: '>=18'} 208 | cpu: [s390x] 209 | os: [linux] 210 | 211 | '@esbuild/linux-x64@0.25.12': 212 | resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} 213 | engines: {node: '>=18'} 214 | cpu: [x64] 215 | os: [linux] 216 | 217 | '@esbuild/netbsd-arm64@0.25.12': 218 | resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} 219 | engines: {node: '>=18'} 220 | cpu: [arm64] 221 | os: [netbsd] 222 | 223 | '@esbuild/netbsd-x64@0.25.12': 224 | resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} 225 | engines: {node: '>=18'} 226 | cpu: [x64] 227 | os: [netbsd] 228 | 229 | '@esbuild/openbsd-arm64@0.25.12': 230 | resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} 231 | engines: {node: '>=18'} 232 | cpu: [arm64] 233 | os: [openbsd] 234 | 235 | '@esbuild/openbsd-x64@0.25.12': 236 | resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} 237 | engines: {node: '>=18'} 238 | cpu: [x64] 239 | os: [openbsd] 240 | 241 | '@esbuild/openharmony-arm64@0.25.12': 242 | resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} 243 | engines: {node: '>=18'} 244 | cpu: [arm64] 245 | os: [openharmony] 246 | 247 | '@esbuild/sunos-x64@0.25.12': 248 | resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} 249 | engines: {node: '>=18'} 250 | cpu: [x64] 251 | os: [sunos] 252 | 253 | '@esbuild/win32-arm64@0.25.12': 254 | resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} 255 | engines: {node: '>=18'} 256 | cpu: [arm64] 257 | os: [win32] 258 | 259 | '@esbuild/win32-ia32@0.25.12': 260 | resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} 261 | engines: {node: '>=18'} 262 | cpu: [ia32] 263 | os: [win32] 264 | 265 | '@esbuild/win32-x64@0.25.12': 266 | resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} 267 | engines: {node: '>=18'} 268 | cpu: [x64] 269 | os: [win32] 270 | 271 | '@eslint-community/eslint-utils@4.9.0': 272 | resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} 273 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 274 | peerDependencies: 275 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 276 | 277 | '@eslint-community/regexpp@4.12.2': 278 | resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} 279 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 280 | 281 | '@eslint/config-array@0.21.1': 282 | resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} 283 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 284 | 285 | '@eslint/config-helpers@0.4.2': 286 | resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} 287 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 288 | 289 | '@eslint/core@0.13.0': 290 | resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} 291 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 292 | 293 | '@eslint/core@0.17.0': 294 | resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} 295 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 296 | 297 | '@eslint/eslintrc@3.3.3': 298 | resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} 299 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 300 | 301 | '@eslint/js@9.39.1': 302 | resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} 303 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 304 | 305 | '@eslint/object-schema@2.1.7': 306 | resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} 307 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 308 | 309 | '@eslint/plugin-kit@0.2.8': 310 | resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} 311 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 312 | 313 | '@eslint/plugin-kit@0.4.1': 314 | resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} 315 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 316 | 317 | '@humanfs/core@0.19.1': 318 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 319 | engines: {node: '>=18.18.0'} 320 | 321 | '@humanfs/node@0.16.7': 322 | resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} 323 | engines: {node: '>=18.18.0'} 324 | 325 | '@humanwhocodes/module-importer@1.0.1': 326 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 327 | engines: {node: '>=12.22'} 328 | 329 | '@humanwhocodes/retry@0.4.3': 330 | resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 331 | engines: {node: '>=18.18'} 332 | 333 | '@isaacs/balanced-match@4.0.1': 334 | resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} 335 | engines: {node: 20 || >=22} 336 | 337 | '@isaacs/brace-expansion@5.0.0': 338 | resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} 339 | engines: {node: 20 || >=22} 340 | 341 | '@isaacs/fs-minipass@4.0.1': 342 | resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} 343 | engines: {node: '>=18.0.0'} 344 | 345 | '@jridgewell/gen-mapping@0.3.13': 346 | resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} 347 | 348 | '@jridgewell/resolve-uri@3.1.2': 349 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 350 | engines: {node: '>=6.0.0'} 351 | 352 | '@jridgewell/sourcemap-codec@1.5.5': 353 | resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 354 | 355 | '@jridgewell/trace-mapping@0.3.31': 356 | resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 357 | 358 | '@mapbox/node-pre-gyp@2.0.3': 359 | resolution: {integrity: sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==} 360 | engines: {node: '>=18'} 361 | hasBin: true 362 | 363 | '@napi-rs/wasm-runtime@1.1.0': 364 | resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} 365 | 366 | '@oxc-minify/binding-android-arm64@0.101.0': 367 | resolution: {integrity: sha512-BsiE1+5kouWKqSujg2v0Ju0H+VpSntQvIXeh/MBTkrwdpxBo6SHvlGEA+H0LZmb8GEwb1igm0G+ziCx8uuobrw==} 368 | engines: {node: ^20.19.0 || >=22.12.0} 369 | cpu: [arm64] 370 | os: [android] 371 | 372 | '@oxc-minify/binding-android-arm64@0.102.0': 373 | resolution: {integrity: sha512-pknM+ttJTwRr7ezn1v5K+o2P4RRjLAzKI10bjVDPybwWQ544AZW6jxm7/YDgF2yUbWEV9o7cAQPkIUOmCiW8vg==} 374 | engines: {node: ^20.19.0 || >=22.12.0} 375 | cpu: [arm64] 376 | os: [android] 377 | 378 | '@oxc-minify/binding-darwin-arm64@0.101.0': 379 | resolution: {integrity: sha512-dZBr4dVuUk5jjxXYJyUN3uMLGU5onaxOmcBhQYXWicXTnEY7gvFVWxiIj3Mc4yaYYBPG7uU0//leEIKV5yazfQ==} 380 | engines: {node: ^20.19.0 || >=22.12.0} 381 | cpu: [arm64] 382 | os: [darwin] 383 | 384 | '@oxc-minify/binding-darwin-arm64@0.102.0': 385 | resolution: {integrity: sha512-BDLiH41ZctNND38+GCEL3ZxFn9j7qMZJLrr6SLWMt8xlG4Sl64xTkZ0zeUy4RdVEatKKZdrRIhFZ2e5wPDQT6Q==} 386 | engines: {node: ^20.19.0 || >=22.12.0} 387 | cpu: [arm64] 388 | os: [darwin] 389 | 390 | '@oxc-minify/binding-darwin-x64@0.101.0': 391 | resolution: {integrity: sha512-5PTMwp/RP7QnGoaI9VRixQDJC+YvqKaGZk9SdQpAOf5k+WDVINiQGN3o+D6DNk8N2rsWmRjuUQb471+Z2JVu4w==} 392 | engines: {node: ^20.19.0 || >=22.12.0} 393 | cpu: [x64] 394 | os: [darwin] 395 | 396 | '@oxc-minify/binding-darwin-x64@0.102.0': 397 | resolution: {integrity: sha512-AcB8ZZ711w4hTDhMfMHNjT2d+hekTQ2XmNSUBqJdXB+a2bJbE50UCRq/nxXl44zkjaQTit3lcQbFvhk2wwKcpw==} 398 | engines: {node: ^20.19.0 || >=22.12.0} 399 | cpu: [x64] 400 | os: [darwin] 401 | 402 | '@oxc-minify/binding-freebsd-x64@0.101.0': 403 | resolution: {integrity: sha512-yDz0fV6ngwsqIx5q64Hj3UR60Rtr7UrdFJLYG0RwiONU6LUCXLX5yfoJwBwyMsGQlOyTSwItABZKamyAhUKOEw==} 404 | engines: {node: ^20.19.0 || >=22.12.0} 405 | cpu: [x64] 406 | os: [freebsd] 407 | 408 | '@oxc-minify/binding-freebsd-x64@0.102.0': 409 | resolution: {integrity: sha512-UlLEN9mR5QaviYVMWZQsN9DgAH3qyV67XUXDEzSrbVMLsqHsVHhFU8ZIeO0fxWTQW/cgpvldvKp9/+RdrggqWw==} 410 | engines: {node: ^20.19.0 || >=22.12.0} 411 | cpu: [x64] 412 | os: [freebsd] 413 | 414 | '@oxc-minify/binding-linux-arm-gnueabihf@0.101.0': 415 | resolution: {integrity: sha512-ksy8AG2BZoCRi8mjTy4K+wtJR4cDcWA25OUw3QNrZ3apaVeCGakwCciOvTpj58FYCV72vtZqyykA1NFr6mEEVg==} 416 | engines: {node: ^20.19.0 || >=22.12.0} 417 | cpu: [arm] 418 | os: [linux] 419 | 420 | '@oxc-minify/binding-linux-arm-gnueabihf@0.102.0': 421 | resolution: {integrity: sha512-CWyCwedZrUt47n56/RwHSwKXxVI3p98hB0ntLaBNeH5qjjBujs9uOh4bQ0aAlzUWunT77b3/Y+xcQnmV42HN4A==} 422 | engines: {node: ^20.19.0 || >=22.12.0} 423 | cpu: [arm] 424 | os: [linux] 425 | 426 | '@oxc-minify/binding-linux-arm64-gnu@0.101.0': 427 | resolution: {integrity: sha512-b4BzBNV+vYcz2CUgHJMzi/iZAVK28qfaQCFg3O8o3bAE/TuLFl8ndCdHqP17s+3eEDinRp5Xpk8W0/jaBZfFlw==} 428 | engines: {node: ^20.19.0 || >=22.12.0} 429 | cpu: [arm64] 430 | os: [linux] 431 | 432 | '@oxc-minify/binding-linux-arm64-gnu@0.102.0': 433 | resolution: {integrity: sha512-W/DCw+Ys8rXj4j38ylJ2l6Kvp6SV+eO5SUWA11imz7yCWntNL001KJyGQ9PJNUFHg0jbxe3yqm4M50v6miWzeA==} 434 | engines: {node: ^20.19.0 || >=22.12.0} 435 | cpu: [arm64] 436 | os: [linux] 437 | 438 | '@oxc-minify/binding-linux-arm64-musl@0.101.0': 439 | resolution: {integrity: sha512-jjJ9qfa7iFbMeHJnbt8I43HRUEX16N79VAm7F1VNYp4gPBb0eP8wUqXsWAuFFRjH4ofK0UU6LM+IbbAyn2HcGw==} 440 | engines: {node: ^20.19.0 || >=22.12.0} 441 | cpu: [arm64] 442 | os: [linux] 443 | 444 | '@oxc-minify/binding-linux-arm64-musl@0.102.0': 445 | resolution: {integrity: sha512-DyH/t/zSZHuX4Nn239oBteeMC4OP7B13EyXWX18Qg8aJoZ+lZo90WPGOvhP04zII33jJ7di+vrtAUhsX64lp+A==} 446 | engines: {node: ^20.19.0 || >=22.12.0} 447 | cpu: [arm64] 448 | os: [linux] 449 | 450 | '@oxc-minify/binding-linux-riscv64-gnu@0.101.0': 451 | resolution: {integrity: sha512-9hxzW09GKgkg8CCtMTqJmyA3nlUIaHOCD/ERAsF7NYNefHAzZ96XVcw9RquZxZfomD4s5hfJKRjHq5EwrxL9IA==} 452 | engines: {node: ^20.19.0 || >=22.12.0} 453 | cpu: [riscv64] 454 | os: [linux] 455 | 456 | '@oxc-minify/binding-linux-riscv64-gnu@0.102.0': 457 | resolution: {integrity: sha512-CMvzrmOg+Gs44E7TRK/IgrHYp+wwVJxVV8niUrDR2b3SsrCO3NQz5LI+7bM1qDbWnuu5Cl1aiitoMfjRY61dSg==} 458 | engines: {node: ^20.19.0 || >=22.12.0} 459 | cpu: [riscv64] 460 | os: [linux] 461 | 462 | '@oxc-minify/binding-linux-s390x-gnu@0.101.0': 463 | resolution: {integrity: sha512-W/MkwsxTT1rxnvX/oRKK9uHtD2et8sBYDYLkYLRO8uWcgV4G2ENzge3JSB8pc/dBUHL4vrysozRUeaw/WiAD/g==} 464 | engines: {node: ^20.19.0 || >=22.12.0} 465 | cpu: [s390x] 466 | os: [linux] 467 | 468 | '@oxc-minify/binding-linux-s390x-gnu@0.102.0': 469 | resolution: {integrity: sha512-tZWr6j2s0ddm9MTfWTI3myaAArg9GDy4UgvpF00kMQAjLcGUNhEEQbB9Bd9KtCvDQzaan8HQs0GVWUp+DWrymw==} 470 | engines: {node: ^20.19.0 || >=22.12.0} 471 | cpu: [s390x] 472 | os: [linux] 473 | 474 | '@oxc-minify/binding-linux-x64-gnu@0.101.0': 475 | resolution: {integrity: sha512-HRJxY94+uhrpkFEPNKH3/7THqnRdy4HbkHbRjbZiJ9SH1Lo1joX2wmQZdUUWXDHPMEtzDF4WP9IUtAc8qMIZGA==} 476 | engines: {node: ^20.19.0 || >=22.12.0} 477 | cpu: [x64] 478 | os: [linux] 479 | 480 | '@oxc-minify/binding-linux-x64-gnu@0.102.0': 481 | resolution: {integrity: sha512-0YEKmAIun1bS+Iy5Shx6WOTSj3GuilVuctJjc5/vP8/EMTZ/RI8j0eq0Mu3UFPoT/bMULL3MBXuHuEIXmq7Ddg==} 482 | engines: {node: ^20.19.0 || >=22.12.0} 483 | cpu: [x64] 484 | os: [linux] 485 | 486 | '@oxc-minify/binding-linux-x64-musl@0.101.0': 487 | resolution: {integrity: sha512-5Sw9j6xSSFkUi84kGXhthxZeM+JL3OKPRmol2aThJ/V38YP0hGDl/q1STx5KGpgcHVgrVIrBOABNnMrvn2In0A==} 488 | engines: {node: ^20.19.0 || >=22.12.0} 489 | cpu: [x64] 490 | os: [linux] 491 | 492 | '@oxc-minify/binding-linux-x64-musl@0.102.0': 493 | resolution: {integrity: sha512-Ew4QDpEsXoV+pG5+bJpheEy3GH436GBe6ASPB0X27Hh9cQ2gb1NVZ7cY7xJj68+fizwS/PtT8GHoG3uxyH17Pg==} 494 | engines: {node: ^20.19.0 || >=22.12.0} 495 | cpu: [x64] 496 | os: [linux] 497 | 498 | '@oxc-minify/binding-openharmony-arm64@0.101.0': 499 | resolution: {integrity: sha512-8M9RUb0ERObHrq+U4RAQ+aFHX+gpviDtZrvLpBCSqM2lDHzzzgCU1kNlZxV4m4W4FyfnbaPKDwkeUclctXC1Ag==} 500 | engines: {node: ^20.19.0 || >=22.12.0} 501 | cpu: [arm64] 502 | os: [openharmony] 503 | 504 | '@oxc-minify/binding-openharmony-arm64@0.102.0': 505 | resolution: {integrity: sha512-wYPXS8IOu/sXiP3CGHJNPzZo4hfPAwJKevcFH2syvU2zyqUxym7hx6smfcK/mgJBiX7VchwArdGRwrEQKcBSaQ==} 506 | engines: {node: ^20.19.0 || >=22.12.0} 507 | cpu: [arm64] 508 | os: [openharmony] 509 | 510 | '@oxc-minify/binding-wasm32-wasi@0.101.0': 511 | resolution: {integrity: sha512-k208dXvhBpyCET35UTDRlNS19Z0d53dB5UqvpIjUrzZb+ructXs6Cffxceei8EYUHnOzqNLQ6fnKxHja8yV1Dg==} 512 | engines: {node: '>=14.0.0'} 513 | cpu: [wasm32] 514 | 515 | '@oxc-minify/binding-wasm32-wasi@0.102.0': 516 | resolution: {integrity: sha512-52SepCb9e+8cVisGa9S/F14K8PxW0AnbV1j4KEYi8uwfkUIxeDNKRHVHzPoBXNrr0yxW0EHLn/3i8J7a2YCpWw==} 517 | engines: {node: '>=14.0.0'} 518 | cpu: [wasm32] 519 | 520 | '@oxc-minify/binding-win32-arm64-msvc@0.101.0': 521 | resolution: {integrity: sha512-u0PTuX59X2BggiMG64uadwuqPLtxEkfsNbBQ162sLGAPxg3VZaGcpCxHzm4dXtjUoBXheIpaHxqYcq+3NRHr8A==} 522 | engines: {node: ^20.19.0 || >=22.12.0} 523 | cpu: [arm64] 524 | os: [win32] 525 | 526 | '@oxc-minify/binding-win32-arm64-msvc@0.102.0': 527 | resolution: {integrity: sha512-kLs6H1y6sDBKcIimkNwu5th28SLkyvFpHNxdLtCChda0KIGeIXNSiupy5BqEutY+VlWJivKT1OV3Ev3KC5Euzg==} 528 | engines: {node: ^20.19.0 || >=22.12.0} 529 | cpu: [arm64] 530 | os: [win32] 531 | 532 | '@oxc-minify/binding-win32-x64-msvc@0.101.0': 533 | resolution: {integrity: sha512-ntwPl6erDXK51Fz/U5trqH9FHkQIZL1mZxW4M/2+VJujT6hxL8tzIQaZKSnwrRgFBGZhQzO+i7CSlb1keEax6w==} 534 | engines: {node: ^20.19.0 || >=22.12.0} 535 | cpu: [x64] 536 | os: [win32] 537 | 538 | '@oxc-minify/binding-win32-x64-msvc@0.102.0': 539 | resolution: {integrity: sha512-XdyJZdSMN8rbBXH10CrFuU+Q9jIP2+MnxHmNzjK4+bldbTI1UxqwjUMS9bKVC5VCaIEZhh8IE8x4Vf8gmCgrKQ==} 540 | engines: {node: ^20.19.0 || >=22.12.0} 541 | cpu: [x64] 542 | os: [win32] 543 | 544 | '@oxc-parser/binding-android-arm64@0.101.0': 545 | resolution: {integrity: sha512-dh1thtigwmLtJTF3BbgC+5lucGYdBAsnLE02scOSOZpiaEcsl5acMwwPBlhjHrHGWS/xBRz53Z178ilO0q+sWg==} 546 | engines: {node: ^20.19.0 || >=22.12.0} 547 | cpu: [arm64] 548 | os: [android] 549 | 550 | '@oxc-parser/binding-darwin-arm64@0.101.0': 551 | resolution: {integrity: sha512-DCy7zJDxHo7iT9Y8eDSvBt4HN5pOSb+8y+eJv5Kq8plMQF5oatcu5ZvHvP6Hij3jRNBgpwTC4vWLdND7l/zsCA==} 552 | engines: {node: ^20.19.0 || >=22.12.0} 553 | cpu: [arm64] 554 | os: [darwin] 555 | 556 | '@oxc-parser/binding-darwin-x64@0.101.0': 557 | resolution: {integrity: sha512-M5oPJFQ/B7wXOjL8r/qezIngLdypH8aCsJx2cb94Eo/gGix0AgEr9ojVF1P/3kJu2Oi/prZf5Cgf0XfbRfm9Gw==} 558 | engines: {node: ^20.19.0 || >=22.12.0} 559 | cpu: [x64] 560 | os: [darwin] 561 | 562 | '@oxc-parser/binding-freebsd-x64@0.101.0': 563 | resolution: {integrity: sha512-IG9smLrG7jh/VjKR7haW07+cC0cxq9i74iTNmS73cKo43VrfFxce6f+qXPaZj8EDizoFDqn5imWOb8tc2dBxTA==} 564 | engines: {node: ^20.19.0 || >=22.12.0} 565 | cpu: [x64] 566 | os: [freebsd] 567 | 568 | '@oxc-parser/binding-linux-arm-gnueabihf@0.101.0': 569 | resolution: {integrity: sha512-AW8JrXyf2e9y4KlF5cFFYyD1+eKp1PSUKeg5FUevAn5QBFjr/IO2iZ+bLkK66M4z/oRma62pFjo3ubVEggenVw==} 570 | engines: {node: ^20.19.0 || >=22.12.0} 571 | cpu: [arm] 572 | os: [linux] 573 | 574 | '@oxc-parser/binding-linux-arm64-gnu@0.101.0': 575 | resolution: {integrity: sha512-c7myby84UFxRqGPM0wEhdIqz0Ta4GZHoj0IVUSYNNar4j0Cmll1H/f/43cJGj2EwL4sDVDPRrF526JwJIHOZYg==} 576 | engines: {node: ^20.19.0 || >=22.12.0} 577 | cpu: [arm64] 578 | os: [linux] 579 | 580 | '@oxc-parser/binding-linux-arm64-musl@0.101.0': 581 | resolution: {integrity: sha512-LZ7o9sFafyIVOwpHQkEPyF3EfZYzGWXNkzznSSASlHxoyo/Uk3EIqL1B2UG0bWxHsz7nNIhv9ItyfGm+/7QHXQ==} 582 | engines: {node: ^20.19.0 || >=22.12.0} 583 | cpu: [arm64] 584 | os: [linux] 585 | 586 | '@oxc-parser/binding-linux-riscv64-gnu@0.101.0': 587 | resolution: {integrity: sha512-3LyKucFn9Yu9IggO4FPkbaghcMvr+fWO3krdcQBm6MDZiRsx8c+xcqmGji8l4evaAA6oHFg3eYNKsFgjQoHnkA==} 588 | engines: {node: ^20.19.0 || >=22.12.0} 589 | cpu: [riscv64] 590 | os: [linux] 591 | 592 | '@oxc-parser/binding-linux-s390x-gnu@0.101.0': 593 | resolution: {integrity: sha512-TCJhU5WTdvua4IMXz67CUESbxYZT9Adyt9KhKC+7H6hcjCJd111kTMG5AIqegeaZjxs7tDCyDCtymvKtD6BvCg==} 594 | engines: {node: ^20.19.0 || >=22.12.0} 595 | cpu: [s390x] 596 | os: [linux] 597 | 598 | '@oxc-parser/binding-linux-x64-gnu@0.101.0': 599 | resolution: {integrity: sha512-owQQTlvFDn496Rcx+aHvxcaVHeX/iQX2zNYB9mh8XywIyO1QLhOVDxNHrFYnbMoXGNnwXnN4CPtpYXPuMS338g==} 600 | engines: {node: ^20.19.0 || >=22.12.0} 601 | cpu: [x64] 602 | os: [linux] 603 | 604 | '@oxc-parser/binding-linux-x64-musl@0.101.0': 605 | resolution: {integrity: sha512-NcGgxNoVM/cjTqbMsq8olHWV0obfCnTYic/d12c49e0p8CV412xOrB1C9dXO8POd1evrrIIXCeMaroliRgl9/w==} 606 | engines: {node: ^20.19.0 || >=22.12.0} 607 | cpu: [x64] 608 | os: [linux] 609 | 610 | '@oxc-parser/binding-openharmony-arm64@0.101.0': 611 | resolution: {integrity: sha512-pLTLWauhjrNq7dn+l1316Q98k4SCSlLFfhor0evbA+e0pPDrxQvCL0K4Jfn+zLTV086f9SD3/XJ3rHVE91UiJw==} 612 | engines: {node: ^20.19.0 || >=22.12.0} 613 | cpu: [arm64] 614 | os: [openharmony] 615 | 616 | '@oxc-parser/binding-wasm32-wasi@0.101.0': 617 | resolution: {integrity: sha512-6jZ5fDUOlHICoTpcz7oHKyy3mF7RfM/hmSMnY1/b99Z+7hFql4yNlyHJ0RS1lS11H3V2qzxXXWXocGlOz3qmWw==} 618 | engines: {node: '>=14.0.0'} 619 | cpu: [wasm32] 620 | 621 | '@oxc-parser/binding-win32-arm64-msvc@0.101.0': 622 | resolution: {integrity: sha512-BRcLSzo0NZUSB5vJTW9NEnnIHOYLfiOVgXl+a0Hbv7sr/3xl3E4arkx/btNL441uDSEPFtrM1rcclpICDuYhlA==} 623 | engines: {node: ^20.19.0 || >=22.12.0} 624 | cpu: [arm64] 625 | os: [win32] 626 | 627 | '@oxc-parser/binding-win32-x64-msvc@0.101.0': 628 | resolution: {integrity: sha512-HF6deX1VgbzVXl+v/7j02uQKXJtUtMhIQQMbmTg1wZVDbSOPgIVdwrOqUhSdaCt7gnbiD4KR3TAI1tJgqY8LxQ==} 629 | engines: {node: ^20.19.0 || >=22.12.0} 630 | cpu: [x64] 631 | os: [win32] 632 | 633 | '@oxc-project/types@0.101.0': 634 | resolution: {integrity: sha512-nuFhqlUzJX+gVIPPfuE6xurd4lST3mdcWOhyK/rZO0B9XWMKm79SuszIQEnSMmmDhq1DC8WWVYGVd+6F93o1gQ==} 635 | 636 | '@oxc-transform/binding-android-arm64@0.101.0': 637 | resolution: {integrity: sha512-lT+hqOzjIV2AtbKyRVyRGXyHuFO6+MBRtISENcSDWZsjATDSUtLf1RfKW7V7+iF8BFlmTlxdmsaSJCtevESIlA==} 638 | engines: {node: ^20.19.0 || >=22.12.0} 639 | cpu: [arm64] 640 | os: [android] 641 | 642 | '@oxc-transform/binding-darwin-arm64@0.101.0': 643 | resolution: {integrity: sha512-qZpGsns3Hb/plFVyyoh2j49I7rag0Taw/y1WDC27a2Lzcmp5FnBv3FX+Zyo4cf9j8y7DSuMNoffvhcBI4Q4mcQ==} 644 | engines: {node: ^20.19.0 || >=22.12.0} 645 | cpu: [arm64] 646 | os: [darwin] 647 | 648 | '@oxc-transform/binding-darwin-x64@0.101.0': 649 | resolution: {integrity: sha512-nv1PmUP/MiQruFxEmaCVhvgacEOL1cfZiTynjaa855YUSSbKqwzoEDV3m6eqrCiYwVhRRdMj4KvbrhO9Mnx7sA==} 650 | engines: {node: ^20.19.0 || >=22.12.0} 651 | cpu: [x64] 652 | os: [darwin] 653 | 654 | '@oxc-transform/binding-freebsd-x64@0.101.0': 655 | resolution: {integrity: sha512-Xwv1OH0ekowrIhvbimOsOjhKYlK1wTeAQNS0tXD6VTHmulLaAohu7AsehoP+wBL1bJtZznmXOokBt72NwRtk2Q==} 656 | engines: {node: ^20.19.0 || >=22.12.0} 657 | cpu: [x64] 658 | os: [freebsd] 659 | 660 | '@oxc-transform/binding-linux-arm-gnueabihf@0.101.0': 661 | resolution: {integrity: sha512-N79DO6eWwhQqMvd4LOuRPJj3tciFGlC9opxpY6MOdmCgOw2FDkA01411FNQvuGh/vNe2FyZqx/dsH5mxH5prRw==} 662 | engines: {node: ^20.19.0 || >=22.12.0} 663 | cpu: [arm] 664 | os: [linux] 665 | 666 | '@oxc-transform/binding-linux-arm64-gnu@0.101.0': 667 | resolution: {integrity: sha512-xYJAhFZFJy/vQZgDMAHYJiS92D8eIA6V6b6+9U2f9JwwoGwrJmcIOJXZNiaAzwZY+eIs2yf2H3Z0ijGh/bYSwg==} 668 | engines: {node: ^20.19.0 || >=22.12.0} 669 | cpu: [arm64] 670 | os: [linux] 671 | 672 | '@oxc-transform/binding-linux-arm64-musl@0.101.0': 673 | resolution: {integrity: sha512-SNsXOj3w7FHRJVcaRb9gT5RC9xxmRzkQLmYQx/Y2Ve70uOFNByr5Hrt4aaREjs7LtU1PQAHuYmfe3AHGESOPjQ==} 674 | engines: {node: ^20.19.0 || >=22.12.0} 675 | cpu: [arm64] 676 | os: [linux] 677 | 678 | '@oxc-transform/binding-linux-riscv64-gnu@0.101.0': 679 | resolution: {integrity: sha512-vXktY7rDZqR+jARqyyoro8hDfESAUtIQPbRgChbsIYyQ6pOqhiiNqLmZAMkW3EhKc68vUoBXGCoNQbpILsjb6w==} 680 | engines: {node: ^20.19.0 || >=22.12.0} 681 | cpu: [riscv64] 682 | os: [linux] 683 | 684 | '@oxc-transform/binding-linux-s390x-gnu@0.101.0': 685 | resolution: {integrity: sha512-ZU9RPoBdvu+aKgqaK04NEAYabZpdUyE2hynENZ+sVvfkU8Ywl4cM6wjo04aJYV0jZj2ETITJQSYba5t0P+hKPA==} 686 | engines: {node: ^20.19.0 || >=22.12.0} 687 | cpu: [s390x] 688 | os: [linux] 689 | 690 | '@oxc-transform/binding-linux-x64-gnu@0.101.0': 691 | resolution: {integrity: sha512-xSiZUfUpjcxWehC1cDOFjk4kHvKEvKLOmIyoYI85e60FCLMe0XcWzfnh3lHxccuhA+Mcu4K1wpTHb4uJ2WcVAQ==} 692 | engines: {node: ^20.19.0 || >=22.12.0} 693 | cpu: [x64] 694 | os: [linux] 695 | 696 | '@oxc-transform/binding-linux-x64-musl@0.101.0': 697 | resolution: {integrity: sha512-9RXKmQMWqz17Oiv6jYcPewaaI6JcbIJ7ZK05v3PhrpGVDzpc82oV8HS4w5EMZ2v6Th2t+2U7RVQFF+oefRgctg==} 698 | engines: {node: ^20.19.0 || >=22.12.0} 699 | cpu: [x64] 700 | os: [linux] 701 | 702 | '@oxc-transform/binding-openharmony-arm64@0.101.0': 703 | resolution: {integrity: sha512-7fgo6noOzQVrwOsI4mcUdBY726PesLn5coF/FRooUrOR6wWeZkQnZXGcNto+8uCUcY32r1q8dbNNaQjJzainuA==} 704 | engines: {node: ^20.19.0 || >=22.12.0} 705 | cpu: [arm64] 706 | os: [openharmony] 707 | 708 | '@oxc-transform/binding-wasm32-wasi@0.101.0': 709 | resolution: {integrity: sha512-9u5kFAL6wUGY8Z8zH0fSEPCnJW/tEPRFh+G2xBoRbjqmkjyOhlxSM3qgZ6Gc4hKIrpcNAUEIL74ZS6Jw2XcvJg==} 710 | engines: {node: '>=14.0.0'} 711 | cpu: [wasm32] 712 | 713 | '@oxc-transform/binding-win32-arm64-msvc@0.101.0': 714 | resolution: {integrity: sha512-uApeorjS6V9/QQOjranp4p27y49yh9aW/rKiExCm2Iw3377FwZ/ic0homfvuW+S9duFFXVYAMDkeKM+4yj/blQ==} 715 | engines: {node: ^20.19.0 || >=22.12.0} 716 | cpu: [arm64] 717 | os: [win32] 718 | 719 | '@oxc-transform/binding-win32-x64-msvc@0.101.0': 720 | resolution: {integrity: sha512-rKVXD87+8dyHX77qFuv9ByTvYCPNhHw+x61QomUg3Qz5DAz1yRmcYVMhT9ICQRFwe/k9ZJ25z7+pM9Es4UPViA==} 721 | engines: {node: ^20.19.0 || >=22.12.0} 722 | cpu: [x64] 723 | os: [win32] 724 | 725 | '@parcel/watcher-android-arm64@2.5.1': 726 | resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} 727 | engines: {node: '>= 10.0.0'} 728 | cpu: [arm64] 729 | os: [android] 730 | 731 | '@parcel/watcher-darwin-arm64@2.5.1': 732 | resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} 733 | engines: {node: '>= 10.0.0'} 734 | cpu: [arm64] 735 | os: [darwin] 736 | 737 | '@parcel/watcher-darwin-x64@2.5.1': 738 | resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} 739 | engines: {node: '>= 10.0.0'} 740 | cpu: [x64] 741 | os: [darwin] 742 | 743 | '@parcel/watcher-freebsd-x64@2.5.1': 744 | resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} 745 | engines: {node: '>= 10.0.0'} 746 | cpu: [x64] 747 | os: [freebsd] 748 | 749 | '@parcel/watcher-linux-arm-glibc@2.5.1': 750 | resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} 751 | engines: {node: '>= 10.0.0'} 752 | cpu: [arm] 753 | os: [linux] 754 | 755 | '@parcel/watcher-linux-arm-musl@2.5.1': 756 | resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} 757 | engines: {node: '>= 10.0.0'} 758 | cpu: [arm] 759 | os: [linux] 760 | 761 | '@parcel/watcher-linux-arm64-glibc@2.5.1': 762 | resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} 763 | engines: {node: '>= 10.0.0'} 764 | cpu: [arm64] 765 | os: [linux] 766 | 767 | '@parcel/watcher-linux-arm64-musl@2.5.1': 768 | resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} 769 | engines: {node: '>= 10.0.0'} 770 | cpu: [arm64] 771 | os: [linux] 772 | 773 | '@parcel/watcher-linux-x64-glibc@2.5.1': 774 | resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} 775 | engines: {node: '>= 10.0.0'} 776 | cpu: [x64] 777 | os: [linux] 778 | 779 | '@parcel/watcher-linux-x64-musl@2.5.1': 780 | resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} 781 | engines: {node: '>= 10.0.0'} 782 | cpu: [x64] 783 | os: [linux] 784 | 785 | '@parcel/watcher-win32-arm64@2.5.1': 786 | resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} 787 | engines: {node: '>= 10.0.0'} 788 | cpu: [arm64] 789 | os: [win32] 790 | 791 | '@parcel/watcher-win32-ia32@2.5.1': 792 | resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} 793 | engines: {node: '>= 10.0.0'} 794 | cpu: [ia32] 795 | os: [win32] 796 | 797 | '@parcel/watcher-win32-x64@2.5.1': 798 | resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} 799 | engines: {node: '>= 10.0.0'} 800 | cpu: [x64] 801 | os: [win32] 802 | 803 | '@parcel/watcher@2.5.1': 804 | resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} 805 | engines: {node: '>= 10.0.0'} 806 | 807 | '@rolldown/binding-android-arm64@1.0.0-beta.53': 808 | resolution: {integrity: sha512-Ok9V8o7o6YfSdTTYA/uHH30r3YtOxLD6G3wih/U9DO0ucBBFq8WPt/DslU53OgfteLRHITZny9N/qCUxMf9kjQ==} 809 | engines: {node: ^20.19.0 || >=22.12.0} 810 | cpu: [arm64] 811 | os: [android] 812 | 813 | '@rolldown/binding-darwin-arm64@1.0.0-beta.53': 814 | resolution: {integrity: sha512-yIsKqMz0CtRnVa6x3Pa+mzTihr4Ty+Z6HfPbZ7RVbk1Uxnco4+CUn7Qbm/5SBol1JD/7nvY8rphAgyAi7Lj6Vg==} 815 | engines: {node: ^20.19.0 || >=22.12.0} 816 | cpu: [arm64] 817 | os: [darwin] 818 | 819 | '@rolldown/binding-darwin-x64@1.0.0-beta.53': 820 | resolution: {integrity: sha512-GTXe+mxsCGUnJOFMhfGWmefP7Q9TpYUseHvhAhr21nCTgdS8jPsvirb0tJwM3lN0/u/cg7bpFNa16fQrjKrCjQ==} 821 | engines: {node: ^20.19.0 || >=22.12.0} 822 | cpu: [x64] 823 | os: [darwin] 824 | 825 | '@rolldown/binding-freebsd-x64@1.0.0-beta.53': 826 | resolution: {integrity: sha512-9Tmp7bBvKqyDkMcL4e089pH3RsjD3SUungjmqWtyhNOxoQMh0fSmINTyYV8KXtE+JkxYMPWvnEt+/mfpVCkk8w==} 827 | engines: {node: ^20.19.0 || >=22.12.0} 828 | cpu: [x64] 829 | os: [freebsd] 830 | 831 | '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': 832 | resolution: {integrity: sha512-a1y5fiB0iovuzdbjUxa7+Zcvgv+mTmlGGC4XydVIsyl48eoxgaYkA3l9079hyTyhECsPq+mbr0gVQsFU11OJAQ==} 833 | engines: {node: ^20.19.0 || >=22.12.0} 834 | cpu: [arm] 835 | os: [linux] 836 | 837 | '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': 838 | resolution: {integrity: sha512-bpIGX+ov9PhJYV+wHNXl9rzq4F0QvILiURn0y0oepbQx+7stmQsKA0DhPGwmhfvF856wq+gbM8L92SAa/CBcLg==} 839 | engines: {node: ^20.19.0 || >=22.12.0} 840 | cpu: [arm64] 841 | os: [linux] 842 | 843 | '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': 844 | resolution: {integrity: sha512-bGe5EBB8FVjHBR1mOLOPEFg1Lp3//7geqWkU5NIhxe+yH0W8FVrQ6WRYOap4SUTKdklD/dC4qPLREkMMQ855FA==} 845 | engines: {node: ^20.19.0 || >=22.12.0} 846 | cpu: [arm64] 847 | os: [linux] 848 | 849 | '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': 850 | resolution: {integrity: sha512-qL+63WKVQs1CMvFedlPt0U9PiEKJOAL/bsHMKUDS6Vp2Q+YAv/QLPu8rcvkfIMvQ0FPU2WL0aX4eWwF6e/GAnA==} 851 | engines: {node: ^20.19.0 || >=22.12.0} 852 | cpu: [x64] 853 | os: [linux] 854 | 855 | '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': 856 | resolution: {integrity: sha512-VGl9JIGjoJh3H8Mb+7xnVqODajBmrdOOb9lxWXdcmxyI+zjB2sux69br0hZJDTyLJfvBoYm439zPACYbCjGRmw==} 857 | engines: {node: ^20.19.0 || >=22.12.0} 858 | cpu: [x64] 859 | os: [linux] 860 | 861 | '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': 862 | resolution: {integrity: sha512-B4iIserJXuSnNzA5xBLFUIjTfhNy7d9sq4FUMQY3GhQWGVhS2RWWzzDnkSU6MUt7/aHUrep0CdQfXUJI9D3W7A==} 863 | engines: {node: ^20.19.0 || >=22.12.0} 864 | cpu: [arm64] 865 | os: [openharmony] 866 | 867 | '@rolldown/binding-wasm32-wasi@1.0.0-beta.53': 868 | resolution: {integrity: sha512-BUjAEgpABEJXilGq/BPh7jeU3WAJ5o15c1ZEgHaDWSz3LB881LQZnbNJHmUiM4d1JQWMYYyR1Y490IBHi2FPJg==} 869 | engines: {node: '>=14.0.0'} 870 | cpu: [wasm32] 871 | 872 | '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': 873 | resolution: {integrity: sha512-s27uU7tpCWSjHBnxyVXHt3rMrQdJq5MHNv3BzsewCIroIw3DJFjMH1dzCPPMUFxnh1r52Nf9IJ/eWp6LDoyGcw==} 874 | engines: {node: ^20.19.0 || >=22.12.0} 875 | cpu: [arm64] 876 | os: [win32] 877 | 878 | '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': 879 | resolution: {integrity: sha512-cjWL/USPJ1g0en2htb4ssMjIycc36RvdQAx1WlXnS6DpULswiUTVXPDesTifSKYSyvx24E0YqQkEm0K/M2Z/AA==} 880 | engines: {node: ^20.19.0 || >=22.12.0} 881 | cpu: [x64] 882 | os: [win32] 883 | 884 | '@rolldown/pluginutils@1.0.0-beta.53': 885 | resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} 886 | 887 | '@rollup/plugin-node-resolve@16.0.3': 888 | resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} 889 | engines: {node: '>=14.0.0'} 890 | peerDependencies: 891 | rollup: ^2.78.0||^3.0.0||^4.0.0 892 | peerDependenciesMeta: 893 | rollup: 894 | optional: true 895 | 896 | '@rollup/pluginutils@5.3.0': 897 | resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} 898 | engines: {node: '>=14.0.0'} 899 | peerDependencies: 900 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 901 | peerDependenciesMeta: 902 | rollup: 903 | optional: true 904 | 905 | '@rollup/rollup-android-arm-eabi@4.53.3': 906 | resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} 907 | cpu: [arm] 908 | os: [android] 909 | 910 | '@rollup/rollup-android-arm64@4.53.3': 911 | resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} 912 | cpu: [arm64] 913 | os: [android] 914 | 915 | '@rollup/rollup-darwin-arm64@4.53.3': 916 | resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} 917 | cpu: [arm64] 918 | os: [darwin] 919 | 920 | '@rollup/rollup-darwin-x64@4.53.3': 921 | resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} 922 | cpu: [x64] 923 | os: [darwin] 924 | 925 | '@rollup/rollup-freebsd-arm64@4.53.3': 926 | resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} 927 | cpu: [arm64] 928 | os: [freebsd] 929 | 930 | '@rollup/rollup-freebsd-x64@4.53.3': 931 | resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} 932 | cpu: [x64] 933 | os: [freebsd] 934 | 935 | '@rollup/rollup-linux-arm-gnueabihf@4.53.3': 936 | resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} 937 | cpu: [arm] 938 | os: [linux] 939 | 940 | '@rollup/rollup-linux-arm-musleabihf@4.53.3': 941 | resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} 942 | cpu: [arm] 943 | os: [linux] 944 | 945 | '@rollup/rollup-linux-arm64-gnu@4.53.3': 946 | resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} 947 | cpu: [arm64] 948 | os: [linux] 949 | 950 | '@rollup/rollup-linux-arm64-musl@4.53.3': 951 | resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} 952 | cpu: [arm64] 953 | os: [linux] 954 | 955 | '@rollup/rollup-linux-loong64-gnu@4.53.3': 956 | resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} 957 | cpu: [loong64] 958 | os: [linux] 959 | 960 | '@rollup/rollup-linux-ppc64-gnu@4.53.3': 961 | resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} 962 | cpu: [ppc64] 963 | os: [linux] 964 | 965 | '@rollup/rollup-linux-riscv64-gnu@4.53.3': 966 | resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} 967 | cpu: [riscv64] 968 | os: [linux] 969 | 970 | '@rollup/rollup-linux-riscv64-musl@4.53.3': 971 | resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} 972 | cpu: [riscv64] 973 | os: [linux] 974 | 975 | '@rollup/rollup-linux-s390x-gnu@4.53.3': 976 | resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} 977 | cpu: [s390x] 978 | os: [linux] 979 | 980 | '@rollup/rollup-linux-x64-gnu@4.53.3': 981 | resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} 982 | cpu: [x64] 983 | os: [linux] 984 | 985 | '@rollup/rollup-linux-x64-musl@4.53.3': 986 | resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} 987 | cpu: [x64] 988 | os: [linux] 989 | 990 | '@rollup/rollup-openharmony-arm64@4.53.3': 991 | resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} 992 | cpu: [arm64] 993 | os: [openharmony] 994 | 995 | '@rollup/rollup-win32-arm64-msvc@4.53.3': 996 | resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} 997 | cpu: [arm64] 998 | os: [win32] 999 | 1000 | '@rollup/rollup-win32-ia32-msvc@4.53.3': 1001 | resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} 1002 | cpu: [ia32] 1003 | os: [win32] 1004 | 1005 | '@rollup/rollup-win32-x64-gnu@4.53.3': 1006 | resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} 1007 | cpu: [x64] 1008 | os: [win32] 1009 | 1010 | '@rollup/rollup-win32-x64-msvc@4.53.3': 1011 | resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} 1012 | cpu: [x64] 1013 | os: [win32] 1014 | 1015 | '@standard-schema/spec@1.0.0': 1016 | resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} 1017 | 1018 | '@tybys/wasm-util@0.10.1': 1019 | resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} 1020 | 1021 | '@types/chai@5.2.3': 1022 | resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} 1023 | 1024 | '@types/deep-eql@4.0.2': 1025 | resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} 1026 | 1027 | '@types/estree@1.0.8': 1028 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 1029 | 1030 | '@types/json-schema@7.0.15': 1031 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 1032 | 1033 | '@types/mdast@3.0.15': 1034 | resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} 1035 | 1036 | '@types/node@24.10.2': 1037 | resolution: {integrity: sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==} 1038 | 1039 | '@types/resolve@1.20.2': 1040 | resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} 1041 | 1042 | '@types/semver@7.7.1': 1043 | resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} 1044 | 1045 | '@types/unist@2.0.11': 1046 | resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} 1047 | 1048 | '@typescript-eslint/eslint-plugin@8.49.0': 1049 | resolution: {integrity: sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==} 1050 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1051 | peerDependencies: 1052 | '@typescript-eslint/parser': ^8.49.0 1053 | eslint: ^8.57.0 || ^9.0.0 1054 | typescript: '>=4.8.4 <6.0.0' 1055 | 1056 | '@typescript-eslint/parser@8.49.0': 1057 | resolution: {integrity: sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==} 1058 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1059 | peerDependencies: 1060 | eslint: ^8.57.0 || ^9.0.0 1061 | typescript: '>=4.8.4 <6.0.0' 1062 | 1063 | '@typescript-eslint/project-service@8.49.0': 1064 | resolution: {integrity: sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==} 1065 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1066 | peerDependencies: 1067 | typescript: '>=4.8.4 <6.0.0' 1068 | 1069 | '@typescript-eslint/scope-manager@8.49.0': 1070 | resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} 1071 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1072 | 1073 | '@typescript-eslint/tsconfig-utils@8.49.0': 1074 | resolution: {integrity: sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==} 1075 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1076 | peerDependencies: 1077 | typescript: '>=4.8.4 <6.0.0' 1078 | 1079 | '@typescript-eslint/type-utils@8.49.0': 1080 | resolution: {integrity: sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==} 1081 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1082 | peerDependencies: 1083 | eslint: ^8.57.0 || ^9.0.0 1084 | typescript: '>=4.8.4 <6.0.0' 1085 | 1086 | '@typescript-eslint/types@8.49.0': 1087 | resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} 1088 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1089 | 1090 | '@typescript-eslint/typescript-estree@8.49.0': 1091 | resolution: {integrity: sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==} 1092 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1093 | peerDependencies: 1094 | typescript: '>=4.8.4 <6.0.0' 1095 | 1096 | '@typescript-eslint/utils@8.49.0': 1097 | resolution: {integrity: sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==} 1098 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1099 | peerDependencies: 1100 | eslint: ^8.57.0 || ^9.0.0 1101 | typescript: '>=4.8.4 <6.0.0' 1102 | 1103 | '@typescript-eslint/visitor-keys@8.49.0': 1104 | resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} 1105 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1106 | 1107 | '@vercel/nft@1.1.1': 1108 | resolution: {integrity: sha512-mKMGa7CEUcXU75474kOeqHbtvK1kAcu4wiahhmlUenB5JbTQB8wVlDI8CyHR3rpGo0qlzoRWqcDzI41FUoBJCA==} 1109 | engines: {node: '>=20'} 1110 | hasBin: true 1111 | 1112 | '@vitest/coverage-v8@4.0.15': 1113 | resolution: {integrity: sha512-FUJ+1RkpTFW7rQITdgTi93qOCWJobWhBirEPCeXh2SW2wsTlFxy51apDz5gzG+ZEYt/THvWeNmhdAoS9DTwpCw==} 1114 | peerDependencies: 1115 | '@vitest/browser': 4.0.15 1116 | vitest: 4.0.15 1117 | peerDependenciesMeta: 1118 | '@vitest/browser': 1119 | optional: true 1120 | 1121 | '@vitest/expect@4.0.15': 1122 | resolution: {integrity: sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==} 1123 | 1124 | '@vitest/mocker@4.0.15': 1125 | resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==} 1126 | peerDependencies: 1127 | msw: ^2.4.9 1128 | vite: ^6.0.0 || ^7.0.0-0 1129 | peerDependenciesMeta: 1130 | msw: 1131 | optional: true 1132 | vite: 1133 | optional: true 1134 | 1135 | '@vitest/pretty-format@4.0.15': 1136 | resolution: {integrity: sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==} 1137 | 1138 | '@vitest/runner@4.0.15': 1139 | resolution: {integrity: sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==} 1140 | 1141 | '@vitest/snapshot@4.0.15': 1142 | resolution: {integrity: sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==} 1143 | 1144 | '@vitest/spy@4.0.15': 1145 | resolution: {integrity: sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==} 1146 | 1147 | '@vitest/utils@4.0.15': 1148 | resolution: {integrity: sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==} 1149 | 1150 | abbrev@3.0.1: 1151 | resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} 1152 | engines: {node: ^18.17.0 || >=20.5.0} 1153 | 1154 | acorn-import-attributes@1.9.5: 1155 | resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} 1156 | peerDependencies: 1157 | acorn: ^8 1158 | 1159 | acorn-jsx@5.3.2: 1160 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 1161 | peerDependencies: 1162 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 1163 | 1164 | acorn@8.15.0: 1165 | resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 1166 | engines: {node: '>=0.4.0'} 1167 | hasBin: true 1168 | 1169 | agent-base@7.1.4: 1170 | resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} 1171 | engines: {node: '>= 14'} 1172 | 1173 | ajv@6.12.6: 1174 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 1175 | 1176 | ansi-styles@4.3.0: 1177 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 1178 | engines: {node: '>=8'} 1179 | 1180 | argparse@2.0.1: 1181 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 1182 | 1183 | assertion-error@2.0.1: 1184 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 1185 | engines: {node: '>=12'} 1186 | 1187 | ast-kit@2.2.0: 1188 | resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} 1189 | engines: {node: '>=20.19.0'} 1190 | 1191 | ast-v8-to-istanbul@0.3.8: 1192 | resolution: {integrity: sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==} 1193 | 1194 | async-sema@3.1.1: 1195 | resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} 1196 | 1197 | automd@0.4.2: 1198 | resolution: {integrity: sha512-9Gey0OG4gu2IzoLbwRj2fqyntJPbEFox/5KdOgg0zflkzq5lyOapWE324xYOvVdk9hgyjiMvDcT6XUPAIJhmag==} 1199 | hasBin: true 1200 | 1201 | balanced-match@1.0.2: 1202 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1203 | 1204 | baseline-browser-mapping@2.9.5: 1205 | resolution: {integrity: sha512-D5vIoztZOq1XM54LUdttJVc96ggEsIfju2JBvht06pSzpckp3C7HReun67Bghzrtdsq9XdMGbSSB3v3GhMNmAA==} 1206 | hasBin: true 1207 | 1208 | bindings@1.5.0: 1209 | resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 1210 | 1211 | birpc@3.0.0: 1212 | resolution: {integrity: sha512-by+04pHuxpCEQcucAXqzopqfhyI8TLK5Qg5MST0cB6MP+JhHna9ollrtK9moVh27aq6Q6MEJgebD0cVm//yBkg==} 1213 | 1214 | brace-expansion@1.1.12: 1215 | resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} 1216 | 1217 | brace-expansion@2.0.2: 1218 | resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 1219 | 1220 | braces@3.0.3: 1221 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 1222 | engines: {node: '>=8'} 1223 | 1224 | browserslist@4.28.1: 1225 | resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} 1226 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1227 | hasBin: true 1228 | 1229 | builtin-modules@5.0.0: 1230 | resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} 1231 | engines: {node: '>=18.20'} 1232 | 1233 | bundle-name@4.1.0: 1234 | resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} 1235 | engines: {node: '>=18'} 1236 | 1237 | c12@3.3.2: 1238 | resolution: {integrity: sha512-QkikB2X5voO1okL3QsES0N690Sn/K9WokXqUsDQsWy5SnYb+psYQFGA10iy1bZHj3fjISKsI67Q90gruvWWM3A==} 1239 | peerDependencies: 1240 | magicast: '*' 1241 | peerDependenciesMeta: 1242 | magicast: 1243 | optional: true 1244 | 1245 | callsites@3.1.0: 1246 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1247 | engines: {node: '>=6'} 1248 | 1249 | caniuse-lite@1.0.30001760: 1250 | resolution: {integrity: sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==} 1251 | 1252 | chai@6.2.1: 1253 | resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} 1254 | engines: {node: '>=18'} 1255 | 1256 | chalk@4.1.2: 1257 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1258 | engines: {node: '>=10'} 1259 | 1260 | changelogen@0.6.2: 1261 | resolution: {integrity: sha512-QtC7+r9BxoUm+XDAwhLbz3CgU134J1ytfE3iCpLpA4KFzX2P1e6s21RrWDwUBzfx66b1Rv+6lOA2nS2btprd+A==} 1262 | hasBin: true 1263 | 1264 | character-entities-legacy@1.1.4: 1265 | resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} 1266 | 1267 | character-entities@1.2.4: 1268 | resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} 1269 | 1270 | character-reference-invalid@1.1.4: 1271 | resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} 1272 | 1273 | chokidar@4.0.3: 1274 | resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 1275 | engines: {node: '>= 14.16.0'} 1276 | 1277 | chownr@3.0.0: 1278 | resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} 1279 | engines: {node: '>=18'} 1280 | 1281 | ci-info@4.3.1: 1282 | resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} 1283 | engines: {node: '>=8'} 1284 | 1285 | citty@0.1.6: 1286 | resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} 1287 | 1288 | clean-regexp@1.0.0: 1289 | resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} 1290 | engines: {node: '>=4'} 1291 | 1292 | color-convert@2.0.1: 1293 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1294 | engines: {node: '>=7.0.0'} 1295 | 1296 | color-name@1.1.4: 1297 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1298 | 1299 | concat-map@0.0.1: 1300 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1301 | 1302 | confbox@0.1.8: 1303 | resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} 1304 | 1305 | confbox@0.2.2: 1306 | resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} 1307 | 1308 | consola@3.4.2: 1309 | resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} 1310 | engines: {node: ^14.18.0 || >=16.10.0} 1311 | 1312 | convert-gitmoji@0.1.5: 1313 | resolution: {integrity: sha512-4wqOafJdk2tqZC++cjcbGcaJ13BZ3kwldf06PTiAQRAB76Z1KJwZNL1SaRZMi2w1FM9RYTgZ6QErS8NUl/GBmQ==} 1314 | 1315 | core-js-compat@3.47.0: 1316 | resolution: {integrity: sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==} 1317 | 1318 | cross-spawn@7.0.6: 1319 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 1320 | engines: {node: '>= 8'} 1321 | 1322 | debug@4.4.3: 1323 | resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 1324 | engines: {node: '>=6.0'} 1325 | peerDependencies: 1326 | supports-color: '*' 1327 | peerDependenciesMeta: 1328 | supports-color: 1329 | optional: true 1330 | 1331 | deep-is@0.1.4: 1332 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1333 | 1334 | deepmerge@4.3.1: 1335 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 1336 | engines: {node: '>=0.10.0'} 1337 | 1338 | default-browser-id@5.0.1: 1339 | resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} 1340 | engines: {node: '>=18'} 1341 | 1342 | default-browser@5.4.0: 1343 | resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} 1344 | engines: {node: '>=18'} 1345 | 1346 | define-lazy-prop@3.0.0: 1347 | resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} 1348 | engines: {node: '>=12'} 1349 | 1350 | defu@6.1.4: 1351 | resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 1352 | 1353 | destr@2.0.5: 1354 | resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} 1355 | 1356 | detect-libc@1.0.3: 1357 | resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} 1358 | engines: {node: '>=0.10'} 1359 | hasBin: true 1360 | 1361 | detect-libc@2.1.2: 1362 | resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} 1363 | engines: {node: '>=8'} 1364 | 1365 | didyoumean2@7.0.4: 1366 | resolution: {integrity: sha512-+yW4SNY7W2DOWe2Jx5H4c2qMTFbLGM6wIyoDPkAPy66X+sD1KfYjBPAIWPVsYqMxelflaMQCloZDudELIPhLqA==} 1367 | engines: {node: ^18.12.0 || >=20.9.0} 1368 | 1369 | dotenv@17.2.3: 1370 | resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} 1371 | engines: {node: '>=12'} 1372 | 1373 | dts-resolver@2.1.3: 1374 | resolution: {integrity: sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==} 1375 | engines: {node: '>=20.19.0'} 1376 | peerDependencies: 1377 | oxc-resolver: '>=11.0.0' 1378 | peerDependenciesMeta: 1379 | oxc-resolver: 1380 | optional: true 1381 | 1382 | electron-to-chromium@1.5.267: 1383 | resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} 1384 | 1385 | es-module-lexer@1.7.0: 1386 | resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 1387 | 1388 | esbuild@0.25.12: 1389 | resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} 1390 | engines: {node: '>=18'} 1391 | hasBin: true 1392 | 1393 | escalade@3.2.0: 1394 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 1395 | engines: {node: '>=6'} 1396 | 1397 | escape-string-regexp@1.0.5: 1398 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1399 | engines: {node: '>=0.8.0'} 1400 | 1401 | escape-string-regexp@4.0.0: 1402 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1403 | engines: {node: '>=10'} 1404 | 1405 | eslint-config-unjs@0.5.0: 1406 | resolution: {integrity: sha512-yXLFwCShcz0dwfSZjDL6sVu8PKZ0f/3kuOCoXQuuiM1OvggbrIXy0WCKIpWsomlbBM2Oy0jv6eZTML9LhaLpJQ==} 1407 | peerDependencies: 1408 | eslint: '*' 1409 | typescript: '*' 1410 | 1411 | eslint-plugin-markdown@5.1.0: 1412 | resolution: {integrity: sha512-SJeyKko1K6GwI0AN6xeCDToXDkfKZfXcexA6B+O2Wr2btUS9GrC+YgwSyVli5DJnctUHjFXcQ2cqTaAmVoLi2A==} 1413 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1414 | deprecated: Please use @eslint/markdown instead 1415 | peerDependencies: 1416 | eslint: '>=8' 1417 | 1418 | eslint-plugin-unicorn@59.0.1: 1419 | resolution: {integrity: sha512-EtNXYuWPUmkgSU2E7Ttn57LbRREQesIP1BiLn7OZLKodopKfDXfBUkC/0j6mpw2JExwf43Uf3qLSvrSvppgy8Q==} 1420 | engines: {node: ^18.20.0 || ^20.10.0 || >=21.0.0} 1421 | peerDependencies: 1422 | eslint: '>=9.22.0' 1423 | 1424 | eslint-scope@8.4.0: 1425 | resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} 1426 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1427 | 1428 | eslint-visitor-keys@3.4.3: 1429 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1430 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1431 | 1432 | eslint-visitor-keys@4.2.1: 1433 | resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 1434 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1435 | 1436 | eslint@9.39.1: 1437 | resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==} 1438 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1439 | hasBin: true 1440 | peerDependencies: 1441 | jiti: '*' 1442 | peerDependenciesMeta: 1443 | jiti: 1444 | optional: true 1445 | 1446 | espree@10.4.0: 1447 | resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} 1448 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1449 | 1450 | esquery@1.6.0: 1451 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1452 | engines: {node: '>=0.10'} 1453 | 1454 | esrecurse@4.3.0: 1455 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1456 | engines: {node: '>=4.0'} 1457 | 1458 | estraverse@5.3.0: 1459 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1460 | engines: {node: '>=4.0'} 1461 | 1462 | estree-walker@2.0.2: 1463 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1464 | 1465 | estree-walker@3.0.3: 1466 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 1467 | 1468 | esutils@2.0.3: 1469 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1470 | engines: {node: '>=0.10.0'} 1471 | 1472 | expect-type@1.3.0: 1473 | resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} 1474 | engines: {node: '>=12.0.0'} 1475 | 1476 | exsolve@1.0.8: 1477 | resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} 1478 | 1479 | fast-deep-equal@3.1.3: 1480 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1481 | 1482 | fast-json-stable-stringify@2.1.0: 1483 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1484 | 1485 | fast-levenshtein@2.0.6: 1486 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1487 | 1488 | fastest-levenshtein@1.0.16: 1489 | resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} 1490 | engines: {node: '>= 4.9.1'} 1491 | 1492 | fdir@6.5.0: 1493 | resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 1494 | engines: {node: '>=12.0.0'} 1495 | peerDependencies: 1496 | picomatch: ^3 || ^4 1497 | peerDependenciesMeta: 1498 | picomatch: 1499 | optional: true 1500 | 1501 | file-entry-cache@8.0.0: 1502 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1503 | engines: {node: '>=16.0.0'} 1504 | 1505 | file-uri-to-path@1.0.0: 1506 | resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} 1507 | 1508 | fill-range@7.1.1: 1509 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1510 | engines: {node: '>=8'} 1511 | 1512 | find-up-simple@1.0.1: 1513 | resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} 1514 | engines: {node: '>=18'} 1515 | 1516 | find-up@5.0.0: 1517 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1518 | engines: {node: '>=10'} 1519 | 1520 | flat-cache@4.0.1: 1521 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1522 | engines: {node: '>=16'} 1523 | 1524 | flatted@3.3.3: 1525 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 1526 | 1527 | fsevents@2.3.3: 1528 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1529 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1530 | os: [darwin] 1531 | 1532 | function-bind@1.1.2: 1533 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1534 | 1535 | get-tsconfig@4.13.0: 1536 | resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} 1537 | 1538 | giget@2.0.0: 1539 | resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} 1540 | hasBin: true 1541 | 1542 | glob-parent@6.0.2: 1543 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1544 | engines: {node: '>=10.13.0'} 1545 | 1546 | glob@13.0.0: 1547 | resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} 1548 | engines: {node: 20 || >=22} 1549 | 1550 | globals@14.0.0: 1551 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1552 | engines: {node: '>=18'} 1553 | 1554 | globals@16.5.0: 1555 | resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} 1556 | engines: {node: '>=18'} 1557 | 1558 | graceful-fs@4.2.11: 1559 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1560 | 1561 | has-flag@4.0.0: 1562 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1563 | engines: {node: '>=8'} 1564 | 1565 | hasown@2.0.2: 1566 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1567 | engines: {node: '>= 0.4'} 1568 | 1569 | html-escaper@2.0.2: 1570 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 1571 | 1572 | https-proxy-agent@7.0.6: 1573 | resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} 1574 | engines: {node: '>= 14'} 1575 | 1576 | ignore@5.3.2: 1577 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1578 | engines: {node: '>= 4'} 1579 | 1580 | ignore@7.0.5: 1581 | resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} 1582 | engines: {node: '>= 4'} 1583 | 1584 | import-fresh@3.3.1: 1585 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 1586 | engines: {node: '>=6'} 1587 | 1588 | imurmurhash@0.1.4: 1589 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1590 | engines: {node: '>=0.8.19'} 1591 | 1592 | indent-string@5.0.0: 1593 | resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} 1594 | engines: {node: '>=12'} 1595 | 1596 | is-alphabetical@1.0.4: 1597 | resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} 1598 | 1599 | is-alphanumerical@1.0.4: 1600 | resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} 1601 | 1602 | is-builtin-module@5.0.0: 1603 | resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} 1604 | engines: {node: '>=18.20'} 1605 | 1606 | is-core-module@2.16.1: 1607 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 1608 | engines: {node: '>= 0.4'} 1609 | 1610 | is-decimal@1.0.4: 1611 | resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} 1612 | 1613 | is-docker@3.0.0: 1614 | resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} 1615 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1616 | hasBin: true 1617 | 1618 | is-extglob@2.1.1: 1619 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1620 | engines: {node: '>=0.10.0'} 1621 | 1622 | is-glob@4.0.3: 1623 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1624 | engines: {node: '>=0.10.0'} 1625 | 1626 | is-hexadecimal@1.0.4: 1627 | resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} 1628 | 1629 | is-inside-container@1.0.0: 1630 | resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} 1631 | engines: {node: '>=14.16'} 1632 | hasBin: true 1633 | 1634 | is-module@1.0.0: 1635 | resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} 1636 | 1637 | is-number@7.0.0: 1638 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1639 | engines: {node: '>=0.12.0'} 1640 | 1641 | is-wsl@3.1.0: 1642 | resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} 1643 | engines: {node: '>=16'} 1644 | 1645 | isexe@2.0.0: 1646 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1647 | 1648 | istanbul-lib-coverage@3.2.2: 1649 | resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} 1650 | engines: {node: '>=8'} 1651 | 1652 | istanbul-lib-report@3.0.1: 1653 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} 1654 | engines: {node: '>=10'} 1655 | 1656 | istanbul-lib-source-maps@5.0.6: 1657 | resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} 1658 | engines: {node: '>=10'} 1659 | 1660 | istanbul-reports@3.2.0: 1661 | resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} 1662 | engines: {node: '>=8'} 1663 | 1664 | jiti@2.6.1: 1665 | resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} 1666 | hasBin: true 1667 | 1668 | js-tokens@9.0.1: 1669 | resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} 1670 | 1671 | js-yaml@4.1.1: 1672 | resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} 1673 | hasBin: true 1674 | 1675 | jsesc@3.0.2: 1676 | resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} 1677 | engines: {node: '>=6'} 1678 | hasBin: true 1679 | 1680 | jsesc@3.1.0: 1681 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1682 | engines: {node: '>=6'} 1683 | hasBin: true 1684 | 1685 | json-buffer@3.0.1: 1686 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1687 | 1688 | json-schema-traverse@0.4.1: 1689 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1690 | 1691 | json-stable-stringify-without-jsonify@1.0.1: 1692 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1693 | 1694 | keyv@4.5.4: 1695 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1696 | 1697 | knitwork@1.3.0: 1698 | resolution: {integrity: sha512-4LqMNoONzR43B1W0ek0fhXMsDNW/zxa1NdFAVMY+k28pgZLovR4G3PB5MrpTxCy1QaZCqNoiaKPr5w5qZHfSNw==} 1699 | 1700 | levn@0.4.1: 1701 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1702 | engines: {node: '>= 0.8.0'} 1703 | 1704 | locate-path@6.0.0: 1705 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1706 | engines: {node: '>=10'} 1707 | 1708 | lodash.deburr@4.1.0: 1709 | resolution: {integrity: sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==} 1710 | 1711 | lodash.merge@4.6.2: 1712 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1713 | 1714 | lru-cache@11.2.4: 1715 | resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} 1716 | engines: {node: 20 || >=22} 1717 | 1718 | magic-string@0.30.21: 1719 | resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} 1720 | 1721 | magicast@0.5.1: 1722 | resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} 1723 | 1724 | make-dir@4.0.0: 1725 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} 1726 | engines: {node: '>=10'} 1727 | 1728 | md4w@0.2.7: 1729 | resolution: {integrity: sha512-lFM7vwk3d4MzkV2mija7aPkK6OjKXZDQsH2beX+e2cvccBoqc6RraheMtAO0Wcr/gjj5L+WS5zhb+06AmuGZrg==} 1730 | 1731 | mdast-util-from-markdown@0.8.5: 1732 | resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} 1733 | 1734 | mdast-util-to-string@2.0.0: 1735 | resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} 1736 | 1737 | mdbox@0.1.1: 1738 | resolution: {integrity: sha512-jvLISenzbLRPWWamTG3THlhTcMbKWzJQNyTi61AVXhCBOC+gsldNTUfUNH8d3Vay83zGehFw3wZpF3xChzkTIQ==} 1739 | 1740 | micromark@2.11.4: 1741 | resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} 1742 | 1743 | micromatch@4.0.8: 1744 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1745 | engines: {node: '>=8.6'} 1746 | 1747 | minimatch@10.1.1: 1748 | resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} 1749 | engines: {node: 20 || >=22} 1750 | 1751 | minimatch@3.1.2: 1752 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1753 | 1754 | minimatch@9.0.5: 1755 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1756 | engines: {node: '>=16 || 14 >=14.17'} 1757 | 1758 | minipass@7.1.2: 1759 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1760 | engines: {node: '>=16 || 14 >=14.17'} 1761 | 1762 | minizlib@3.1.0: 1763 | resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} 1764 | engines: {node: '>= 18'} 1765 | 1766 | mlly@1.8.0: 1767 | resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} 1768 | 1769 | mri@1.2.0: 1770 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1771 | engines: {node: '>=4'} 1772 | 1773 | ms@2.1.3: 1774 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1775 | 1776 | nanoid@3.3.11: 1777 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1778 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1779 | hasBin: true 1780 | 1781 | natural-compare@1.4.0: 1782 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1783 | 1784 | node-addon-api@7.1.1: 1785 | resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} 1786 | 1787 | node-fetch-native@1.6.7: 1788 | resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} 1789 | 1790 | node-fetch@2.7.0: 1791 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 1792 | engines: {node: 4.x || >=6.0.0} 1793 | peerDependencies: 1794 | encoding: ^0.1.0 1795 | peerDependenciesMeta: 1796 | encoding: 1797 | optional: true 1798 | 1799 | node-gyp-build@4.8.4: 1800 | resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} 1801 | hasBin: true 1802 | 1803 | node-releases@2.0.27: 1804 | resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} 1805 | 1806 | nopt@8.1.0: 1807 | resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} 1808 | engines: {node: ^18.17.0 || >=20.5.0} 1809 | hasBin: true 1810 | 1811 | nypm@0.6.2: 1812 | resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==} 1813 | engines: {node: ^14.16.0 || >=16.10.0} 1814 | hasBin: true 1815 | 1816 | obug@2.1.1: 1817 | resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} 1818 | 1819 | obuild@0.4.7: 1820 | resolution: {integrity: sha512-UQmpTF8uIakLSfsWnDHqdINRfnWAF11WWjG0MVr/LoQlsh9cxKjx5umi8a3FNDxtDPXR/wy8DOrsG+4iTGqqTA==} 1821 | hasBin: true 1822 | 1823 | ofetch@1.5.1: 1824 | resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} 1825 | 1826 | ohash@2.0.11: 1827 | resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 1828 | 1829 | open@10.2.0: 1830 | resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} 1831 | engines: {node: '>=18'} 1832 | 1833 | optionator@0.9.4: 1834 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1835 | engines: {node: '>= 0.8.0'} 1836 | 1837 | oxc-minify@0.101.0: 1838 | resolution: {integrity: sha512-HbndptRRVTuLNiuNsd/uP75u8t2t1V+xNPz/+U486cyTBMkJyyNbKvf5TeDszSw4dKX6WjpjCo9P9dV99SR9KQ==} 1839 | engines: {node: ^20.19.0 || >=22.12.0} 1840 | 1841 | oxc-minify@0.102.0: 1842 | resolution: {integrity: sha512-FphAHDyTCNepQbiQTSyWFMbNc9zdUmj1WBsoLwvZhWm7rEe/IeIKYKRhy75lWOjwFsi5/i4Qucq43hgs3n2Exw==} 1843 | engines: {node: ^20.19.0 || >=22.12.0} 1844 | 1845 | oxc-parser@0.101.0: 1846 | resolution: {integrity: sha512-Njg0KoSisH57AWzKTImV0JpjUBu0riCwbMTnnSH8H/deHpJaVpcbmwsiKkSd7ViX6lxaXiOiBVZH2quWPUFtUg==} 1847 | engines: {node: ^20.19.0 || >=22.12.0} 1848 | 1849 | oxc-transform@0.101.0: 1850 | resolution: {integrity: sha512-I3+aYE4dQaN/jD0NgTylF20a5IxgD4OL7gGSkQfvKQ/rGc3dFZJH5b0rkVDCELQpFzCtxaD+sPYOYhazubhNNg==} 1851 | engines: {node: ^20.19.0 || >=22.12.0} 1852 | 1853 | p-limit@3.1.0: 1854 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1855 | engines: {node: '>=10'} 1856 | 1857 | p-locate@5.0.0: 1858 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1859 | engines: {node: '>=10'} 1860 | 1861 | parent-module@1.0.1: 1862 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1863 | engines: {node: '>=6'} 1864 | 1865 | parse-entities@2.0.0: 1866 | resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} 1867 | 1868 | path-exists@4.0.0: 1869 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1870 | engines: {node: '>=8'} 1871 | 1872 | path-key@3.1.1: 1873 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1874 | engines: {node: '>=8'} 1875 | 1876 | path-parse@1.0.7: 1877 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1878 | 1879 | path-scurry@2.0.1: 1880 | resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} 1881 | engines: {node: 20 || >=22} 1882 | 1883 | pathe@2.0.3: 1884 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1885 | 1886 | perfect-debounce@2.0.0: 1887 | resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==} 1888 | 1889 | picocolors@1.1.1: 1890 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1891 | 1892 | picomatch@2.3.1: 1893 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1894 | engines: {node: '>=8.6'} 1895 | 1896 | picomatch@4.0.3: 1897 | resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 1898 | engines: {node: '>=12'} 1899 | 1900 | pkg-types@1.3.1: 1901 | resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} 1902 | 1903 | pkg-types@2.3.0: 1904 | resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} 1905 | 1906 | pluralize@8.0.0: 1907 | resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} 1908 | engines: {node: '>=4'} 1909 | 1910 | postcss@8.5.6: 1911 | resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 1912 | engines: {node: ^10 || ^12 || >=14} 1913 | 1914 | prelude-ls@1.2.1: 1915 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1916 | engines: {node: '>= 0.8.0'} 1917 | 1918 | prettier@3.7.4: 1919 | resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} 1920 | engines: {node: '>=14'} 1921 | hasBin: true 1922 | 1923 | pretty-bytes@7.1.0: 1924 | resolution: {integrity: sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==} 1925 | engines: {node: '>=20'} 1926 | 1927 | punycode@2.3.1: 1928 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1929 | engines: {node: '>=6'} 1930 | 1931 | rc9@2.1.2: 1932 | resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} 1933 | 1934 | readdirp@4.1.2: 1935 | resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 1936 | engines: {node: '>= 14.18.0'} 1937 | 1938 | regexp-tree@0.1.27: 1939 | resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} 1940 | hasBin: true 1941 | 1942 | regjsparser@0.12.0: 1943 | resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} 1944 | hasBin: true 1945 | 1946 | resolve-from@4.0.0: 1947 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1948 | engines: {node: '>=4'} 1949 | 1950 | resolve-from@5.0.0: 1951 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1952 | engines: {node: '>=8'} 1953 | 1954 | resolve-pkg-maps@1.0.0: 1955 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1956 | 1957 | resolve@1.22.11: 1958 | resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} 1959 | engines: {node: '>= 0.4'} 1960 | hasBin: true 1961 | 1962 | rolldown-plugin-dts@0.18.3: 1963 | resolution: {integrity: sha512-rd1LZ0Awwfyn89UndUF/HoFF4oH9a5j+2ZeuKSJYM80vmeN/p0gslYMnHTQHBEXPhUlvAlqGA3tVgXB/1qFNDg==} 1964 | engines: {node: '>=20.19.0'} 1965 | peerDependencies: 1966 | '@ts-macro/tsc': ^0.3.6 1967 | '@typescript/native-preview': '>=7.0.0-dev.20250601.1' 1968 | rolldown: ^1.0.0-beta.51 1969 | typescript: ^5.0.0 1970 | vue-tsc: ~3.1.0 1971 | peerDependenciesMeta: 1972 | '@ts-macro/tsc': 1973 | optional: true 1974 | '@typescript/native-preview': 1975 | optional: true 1976 | typescript: 1977 | optional: true 1978 | vue-tsc: 1979 | optional: true 1980 | 1981 | rolldown@1.0.0-beta.53: 1982 | resolution: {integrity: sha512-Qd9c2p0XKZdgT5AYd+KgAMggJ8ZmCs3JnS9PTMWkyUfteKlfmKtxJbWTHkVakxwXs1Ub7jrRYVeFeF7N0sQxyw==} 1983 | engines: {node: ^20.19.0 || >=22.12.0} 1984 | hasBin: true 1985 | 1986 | rollup-plugin-esbuild@6.2.1: 1987 | resolution: {integrity: sha512-jTNOMGoMRhs0JuueJrJqbW8tOwxumaWYq+V5i+PD+8ecSCVkuX27tGW7BXqDgoULQ55rO7IdNxPcnsWtshz3AA==} 1988 | engines: {node: '>=14.18.0'} 1989 | peerDependencies: 1990 | esbuild: '>=0.18.0' 1991 | rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 1992 | 1993 | rollup@4.53.3: 1994 | resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} 1995 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1996 | hasBin: true 1997 | 1998 | run-applescript@7.1.0: 1999 | resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} 2000 | engines: {node: '>=18'} 2001 | 2002 | scule@1.3.0: 2003 | resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} 2004 | 2005 | semver@7.7.3: 2006 | resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} 2007 | engines: {node: '>=10'} 2008 | hasBin: true 2009 | 2010 | shebang-command@2.0.0: 2011 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2012 | engines: {node: '>=8'} 2013 | 2014 | shebang-regex@3.0.0: 2015 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2016 | engines: {node: '>=8'} 2017 | 2018 | siginfo@2.0.0: 2019 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 2020 | 2021 | source-map-js@1.2.1: 2022 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 2023 | engines: {node: '>=0.10.0'} 2024 | 2025 | stackback@0.0.2: 2026 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 2027 | 2028 | std-env@3.10.0: 2029 | resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} 2030 | 2031 | strip-indent@4.1.1: 2032 | resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} 2033 | engines: {node: '>=12'} 2034 | 2035 | strip-json-comments@3.1.1: 2036 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2037 | engines: {node: '>=8'} 2038 | 2039 | supports-color@7.2.0: 2040 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2041 | engines: {node: '>=8'} 2042 | 2043 | supports-preserve-symlinks-flag@1.0.0: 2044 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2045 | engines: {node: '>= 0.4'} 2046 | 2047 | tar@7.5.2: 2048 | resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} 2049 | engines: {node: '>=18'} 2050 | 2051 | tinybench@2.9.0: 2052 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 2053 | 2054 | tinyexec@1.0.2: 2055 | resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} 2056 | engines: {node: '>=18'} 2057 | 2058 | tinyglobby@0.2.15: 2059 | resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 2060 | engines: {node: '>=12.0.0'} 2061 | 2062 | tinyrainbow@3.0.3: 2063 | resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} 2064 | engines: {node: '>=14.0.0'} 2065 | 2066 | to-regex-range@5.0.1: 2067 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2068 | engines: {node: '>=8.0'} 2069 | 2070 | tr46@0.0.3: 2071 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 2072 | 2073 | ts-api-utils@2.1.0: 2074 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 2075 | engines: {node: '>=18.12'} 2076 | peerDependencies: 2077 | typescript: '>=4.8.4' 2078 | 2079 | tslib@2.8.1: 2080 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 2081 | 2082 | type-check@0.4.0: 2083 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2084 | engines: {node: '>= 0.8.0'} 2085 | 2086 | typescript-eslint@8.49.0: 2087 | resolution: {integrity: sha512-zRSVH1WXD0uXczCXw+nsdjGPUdx4dfrs5VQoHnUWmv1U3oNlAKv4FUNdLDhVUg+gYn+a5hUESqch//Rv5wVhrg==} 2088 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2089 | peerDependencies: 2090 | eslint: ^8.57.0 || ^9.0.0 2091 | typescript: '>=4.8.4 <6.0.0' 2092 | 2093 | typescript@5.9.3: 2094 | resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} 2095 | engines: {node: '>=14.17'} 2096 | hasBin: true 2097 | 2098 | ufo@1.6.1: 2099 | resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} 2100 | 2101 | undici-types@7.16.0: 2102 | resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} 2103 | 2104 | unist-util-stringify-position@2.0.3: 2105 | resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} 2106 | 2107 | unplugin-utils@0.2.5: 2108 | resolution: {integrity: sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg==} 2109 | engines: {node: '>=18.12.0'} 2110 | 2111 | untyped@2.0.0: 2112 | resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==} 2113 | hasBin: true 2114 | 2115 | update-browserslist-db@1.2.2: 2116 | resolution: {integrity: sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==} 2117 | hasBin: true 2118 | peerDependencies: 2119 | browserslist: '>= 4.21.0' 2120 | 2121 | uri-js@4.4.1: 2122 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2123 | 2124 | vite@7.2.7: 2125 | resolution: {integrity: sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==} 2126 | engines: {node: ^20.19.0 || >=22.12.0} 2127 | hasBin: true 2128 | peerDependencies: 2129 | '@types/node': ^20.19.0 || >=22.12.0 2130 | jiti: '>=1.21.0' 2131 | less: ^4.0.0 2132 | lightningcss: ^1.21.0 2133 | sass: ^1.70.0 2134 | sass-embedded: ^1.70.0 2135 | stylus: '>=0.54.8' 2136 | sugarss: ^5.0.0 2137 | terser: ^5.16.0 2138 | tsx: ^4.8.1 2139 | yaml: ^2.4.2 2140 | peerDependenciesMeta: 2141 | '@types/node': 2142 | optional: true 2143 | jiti: 2144 | optional: true 2145 | less: 2146 | optional: true 2147 | lightningcss: 2148 | optional: true 2149 | sass: 2150 | optional: true 2151 | sass-embedded: 2152 | optional: true 2153 | stylus: 2154 | optional: true 2155 | sugarss: 2156 | optional: true 2157 | terser: 2158 | optional: true 2159 | tsx: 2160 | optional: true 2161 | yaml: 2162 | optional: true 2163 | 2164 | vitest@4.0.15: 2165 | resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==} 2166 | engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} 2167 | hasBin: true 2168 | peerDependencies: 2169 | '@edge-runtime/vm': '*' 2170 | '@opentelemetry/api': ^1.9.0 2171 | '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 2172 | '@vitest/browser-playwright': 4.0.15 2173 | '@vitest/browser-preview': 4.0.15 2174 | '@vitest/browser-webdriverio': 4.0.15 2175 | '@vitest/ui': 4.0.15 2176 | happy-dom: '*' 2177 | jsdom: '*' 2178 | peerDependenciesMeta: 2179 | '@edge-runtime/vm': 2180 | optional: true 2181 | '@opentelemetry/api': 2182 | optional: true 2183 | '@types/node': 2184 | optional: true 2185 | '@vitest/browser-playwright': 2186 | optional: true 2187 | '@vitest/browser-preview': 2188 | optional: true 2189 | '@vitest/browser-webdriverio': 2190 | optional: true 2191 | '@vitest/ui': 2192 | optional: true 2193 | happy-dom: 2194 | optional: true 2195 | jsdom: 2196 | optional: true 2197 | 2198 | webidl-conversions@3.0.1: 2199 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 2200 | 2201 | whatwg-url@5.0.0: 2202 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 2203 | 2204 | which@2.0.2: 2205 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2206 | engines: {node: '>= 8'} 2207 | hasBin: true 2208 | 2209 | why-is-node-running@2.3.0: 2210 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 2211 | engines: {node: '>=8'} 2212 | hasBin: true 2213 | 2214 | word-wrap@1.2.5: 2215 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 2216 | engines: {node: '>=0.10.0'} 2217 | 2218 | wsl-utils@0.1.0: 2219 | resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} 2220 | engines: {node: '>=18'} 2221 | 2222 | yallist@5.0.0: 2223 | resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} 2224 | engines: {node: '>=18'} 2225 | 2226 | yocto-queue@0.1.0: 2227 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2228 | engines: {node: '>=10'} 2229 | 2230 | snapshots: 2231 | 2232 | '@babel/generator@7.28.5': 2233 | dependencies: 2234 | '@babel/parser': 7.28.5 2235 | '@babel/types': 7.28.5 2236 | '@jridgewell/gen-mapping': 0.3.13 2237 | '@jridgewell/trace-mapping': 0.3.31 2238 | jsesc: 3.1.0 2239 | 2240 | '@babel/helper-string-parser@7.27.1': {} 2241 | 2242 | '@babel/helper-validator-identifier@7.28.5': {} 2243 | 2244 | '@babel/parser@7.28.5': 2245 | dependencies: 2246 | '@babel/types': 7.28.5 2247 | 2248 | '@babel/runtime@7.28.4': {} 2249 | 2250 | '@babel/types@7.28.5': 2251 | dependencies: 2252 | '@babel/helper-string-parser': 7.27.1 2253 | '@babel/helper-validator-identifier': 7.28.5 2254 | 2255 | '@bcoe/v8-coverage@1.0.2': {} 2256 | 2257 | '@emnapi/core@1.7.1': 2258 | dependencies: 2259 | '@emnapi/wasi-threads': 1.1.0 2260 | tslib: 2.8.1 2261 | optional: true 2262 | 2263 | '@emnapi/runtime@1.7.1': 2264 | dependencies: 2265 | tslib: 2.8.1 2266 | optional: true 2267 | 2268 | '@emnapi/wasi-threads@1.1.0': 2269 | dependencies: 2270 | tslib: 2.8.1 2271 | optional: true 2272 | 2273 | '@esbuild/aix-ppc64@0.25.12': 2274 | optional: true 2275 | 2276 | '@esbuild/android-arm64@0.25.12': 2277 | optional: true 2278 | 2279 | '@esbuild/android-arm@0.25.12': 2280 | optional: true 2281 | 2282 | '@esbuild/android-x64@0.25.12': 2283 | optional: true 2284 | 2285 | '@esbuild/darwin-arm64@0.25.12': 2286 | optional: true 2287 | 2288 | '@esbuild/darwin-x64@0.25.12': 2289 | optional: true 2290 | 2291 | '@esbuild/freebsd-arm64@0.25.12': 2292 | optional: true 2293 | 2294 | '@esbuild/freebsd-x64@0.25.12': 2295 | optional: true 2296 | 2297 | '@esbuild/linux-arm64@0.25.12': 2298 | optional: true 2299 | 2300 | '@esbuild/linux-arm@0.25.12': 2301 | optional: true 2302 | 2303 | '@esbuild/linux-ia32@0.25.12': 2304 | optional: true 2305 | 2306 | '@esbuild/linux-loong64@0.25.12': 2307 | optional: true 2308 | 2309 | '@esbuild/linux-mips64el@0.25.12': 2310 | optional: true 2311 | 2312 | '@esbuild/linux-ppc64@0.25.12': 2313 | optional: true 2314 | 2315 | '@esbuild/linux-riscv64@0.25.12': 2316 | optional: true 2317 | 2318 | '@esbuild/linux-s390x@0.25.12': 2319 | optional: true 2320 | 2321 | '@esbuild/linux-x64@0.25.12': 2322 | optional: true 2323 | 2324 | '@esbuild/netbsd-arm64@0.25.12': 2325 | optional: true 2326 | 2327 | '@esbuild/netbsd-x64@0.25.12': 2328 | optional: true 2329 | 2330 | '@esbuild/openbsd-arm64@0.25.12': 2331 | optional: true 2332 | 2333 | '@esbuild/openbsd-x64@0.25.12': 2334 | optional: true 2335 | 2336 | '@esbuild/openharmony-arm64@0.25.12': 2337 | optional: true 2338 | 2339 | '@esbuild/sunos-x64@0.25.12': 2340 | optional: true 2341 | 2342 | '@esbuild/win32-arm64@0.25.12': 2343 | optional: true 2344 | 2345 | '@esbuild/win32-ia32@0.25.12': 2346 | optional: true 2347 | 2348 | '@esbuild/win32-x64@0.25.12': 2349 | optional: true 2350 | 2351 | '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': 2352 | dependencies: 2353 | eslint: 9.39.1(jiti@2.6.1) 2354 | eslint-visitor-keys: 3.4.3 2355 | 2356 | '@eslint-community/regexpp@4.12.2': {} 2357 | 2358 | '@eslint/config-array@0.21.1': 2359 | dependencies: 2360 | '@eslint/object-schema': 2.1.7 2361 | debug: 4.4.3 2362 | minimatch: 3.1.2 2363 | transitivePeerDependencies: 2364 | - supports-color 2365 | 2366 | '@eslint/config-helpers@0.4.2': 2367 | dependencies: 2368 | '@eslint/core': 0.17.0 2369 | 2370 | '@eslint/core@0.13.0': 2371 | dependencies: 2372 | '@types/json-schema': 7.0.15 2373 | 2374 | '@eslint/core@0.17.0': 2375 | dependencies: 2376 | '@types/json-schema': 7.0.15 2377 | 2378 | '@eslint/eslintrc@3.3.3': 2379 | dependencies: 2380 | ajv: 6.12.6 2381 | debug: 4.4.3 2382 | espree: 10.4.0 2383 | globals: 14.0.0 2384 | ignore: 5.3.2 2385 | import-fresh: 3.3.1 2386 | js-yaml: 4.1.1 2387 | minimatch: 3.1.2 2388 | strip-json-comments: 3.1.1 2389 | transitivePeerDependencies: 2390 | - supports-color 2391 | 2392 | '@eslint/js@9.39.1': {} 2393 | 2394 | '@eslint/object-schema@2.1.7': {} 2395 | 2396 | '@eslint/plugin-kit@0.2.8': 2397 | dependencies: 2398 | '@eslint/core': 0.13.0 2399 | levn: 0.4.1 2400 | 2401 | '@eslint/plugin-kit@0.4.1': 2402 | dependencies: 2403 | '@eslint/core': 0.17.0 2404 | levn: 0.4.1 2405 | 2406 | '@humanfs/core@0.19.1': {} 2407 | 2408 | '@humanfs/node@0.16.7': 2409 | dependencies: 2410 | '@humanfs/core': 0.19.1 2411 | '@humanwhocodes/retry': 0.4.3 2412 | 2413 | '@humanwhocodes/module-importer@1.0.1': {} 2414 | 2415 | '@humanwhocodes/retry@0.4.3': {} 2416 | 2417 | '@isaacs/balanced-match@4.0.1': {} 2418 | 2419 | '@isaacs/brace-expansion@5.0.0': 2420 | dependencies: 2421 | '@isaacs/balanced-match': 4.0.1 2422 | 2423 | '@isaacs/fs-minipass@4.0.1': 2424 | dependencies: 2425 | minipass: 7.1.2 2426 | 2427 | '@jridgewell/gen-mapping@0.3.13': 2428 | dependencies: 2429 | '@jridgewell/sourcemap-codec': 1.5.5 2430 | '@jridgewell/trace-mapping': 0.3.31 2431 | 2432 | '@jridgewell/resolve-uri@3.1.2': {} 2433 | 2434 | '@jridgewell/sourcemap-codec@1.5.5': {} 2435 | 2436 | '@jridgewell/trace-mapping@0.3.31': 2437 | dependencies: 2438 | '@jridgewell/resolve-uri': 3.1.2 2439 | '@jridgewell/sourcemap-codec': 1.5.5 2440 | 2441 | '@mapbox/node-pre-gyp@2.0.3': 2442 | dependencies: 2443 | consola: 3.4.2 2444 | detect-libc: 2.1.2 2445 | https-proxy-agent: 7.0.6 2446 | node-fetch: 2.7.0 2447 | nopt: 8.1.0 2448 | semver: 7.7.3 2449 | tar: 7.5.2 2450 | transitivePeerDependencies: 2451 | - encoding 2452 | - supports-color 2453 | 2454 | '@napi-rs/wasm-runtime@1.1.0': 2455 | dependencies: 2456 | '@emnapi/core': 1.7.1 2457 | '@emnapi/runtime': 1.7.1 2458 | '@tybys/wasm-util': 0.10.1 2459 | optional: true 2460 | 2461 | '@oxc-minify/binding-android-arm64@0.101.0': 2462 | optional: true 2463 | 2464 | '@oxc-minify/binding-android-arm64@0.102.0': 2465 | optional: true 2466 | 2467 | '@oxc-minify/binding-darwin-arm64@0.101.0': 2468 | optional: true 2469 | 2470 | '@oxc-minify/binding-darwin-arm64@0.102.0': 2471 | optional: true 2472 | 2473 | '@oxc-minify/binding-darwin-x64@0.101.0': 2474 | optional: true 2475 | 2476 | '@oxc-minify/binding-darwin-x64@0.102.0': 2477 | optional: true 2478 | 2479 | '@oxc-minify/binding-freebsd-x64@0.101.0': 2480 | optional: true 2481 | 2482 | '@oxc-minify/binding-freebsd-x64@0.102.0': 2483 | optional: true 2484 | 2485 | '@oxc-minify/binding-linux-arm-gnueabihf@0.101.0': 2486 | optional: true 2487 | 2488 | '@oxc-minify/binding-linux-arm-gnueabihf@0.102.0': 2489 | optional: true 2490 | 2491 | '@oxc-minify/binding-linux-arm64-gnu@0.101.0': 2492 | optional: true 2493 | 2494 | '@oxc-minify/binding-linux-arm64-gnu@0.102.0': 2495 | optional: true 2496 | 2497 | '@oxc-minify/binding-linux-arm64-musl@0.101.0': 2498 | optional: true 2499 | 2500 | '@oxc-minify/binding-linux-arm64-musl@0.102.0': 2501 | optional: true 2502 | 2503 | '@oxc-minify/binding-linux-riscv64-gnu@0.101.0': 2504 | optional: true 2505 | 2506 | '@oxc-minify/binding-linux-riscv64-gnu@0.102.0': 2507 | optional: true 2508 | 2509 | '@oxc-minify/binding-linux-s390x-gnu@0.101.0': 2510 | optional: true 2511 | 2512 | '@oxc-minify/binding-linux-s390x-gnu@0.102.0': 2513 | optional: true 2514 | 2515 | '@oxc-minify/binding-linux-x64-gnu@0.101.0': 2516 | optional: true 2517 | 2518 | '@oxc-minify/binding-linux-x64-gnu@0.102.0': 2519 | optional: true 2520 | 2521 | '@oxc-minify/binding-linux-x64-musl@0.101.0': 2522 | optional: true 2523 | 2524 | '@oxc-minify/binding-linux-x64-musl@0.102.0': 2525 | optional: true 2526 | 2527 | '@oxc-minify/binding-openharmony-arm64@0.101.0': 2528 | optional: true 2529 | 2530 | '@oxc-minify/binding-openharmony-arm64@0.102.0': 2531 | optional: true 2532 | 2533 | '@oxc-minify/binding-wasm32-wasi@0.101.0': 2534 | dependencies: 2535 | '@napi-rs/wasm-runtime': 1.1.0 2536 | optional: true 2537 | 2538 | '@oxc-minify/binding-wasm32-wasi@0.102.0': 2539 | dependencies: 2540 | '@napi-rs/wasm-runtime': 1.1.0 2541 | optional: true 2542 | 2543 | '@oxc-minify/binding-win32-arm64-msvc@0.101.0': 2544 | optional: true 2545 | 2546 | '@oxc-minify/binding-win32-arm64-msvc@0.102.0': 2547 | optional: true 2548 | 2549 | '@oxc-minify/binding-win32-x64-msvc@0.101.0': 2550 | optional: true 2551 | 2552 | '@oxc-minify/binding-win32-x64-msvc@0.102.0': 2553 | optional: true 2554 | 2555 | '@oxc-parser/binding-android-arm64@0.101.0': 2556 | optional: true 2557 | 2558 | '@oxc-parser/binding-darwin-arm64@0.101.0': 2559 | optional: true 2560 | 2561 | '@oxc-parser/binding-darwin-x64@0.101.0': 2562 | optional: true 2563 | 2564 | '@oxc-parser/binding-freebsd-x64@0.101.0': 2565 | optional: true 2566 | 2567 | '@oxc-parser/binding-linux-arm-gnueabihf@0.101.0': 2568 | optional: true 2569 | 2570 | '@oxc-parser/binding-linux-arm64-gnu@0.101.0': 2571 | optional: true 2572 | 2573 | '@oxc-parser/binding-linux-arm64-musl@0.101.0': 2574 | optional: true 2575 | 2576 | '@oxc-parser/binding-linux-riscv64-gnu@0.101.0': 2577 | optional: true 2578 | 2579 | '@oxc-parser/binding-linux-s390x-gnu@0.101.0': 2580 | optional: true 2581 | 2582 | '@oxc-parser/binding-linux-x64-gnu@0.101.0': 2583 | optional: true 2584 | 2585 | '@oxc-parser/binding-linux-x64-musl@0.101.0': 2586 | optional: true 2587 | 2588 | '@oxc-parser/binding-openharmony-arm64@0.101.0': 2589 | optional: true 2590 | 2591 | '@oxc-parser/binding-wasm32-wasi@0.101.0': 2592 | dependencies: 2593 | '@napi-rs/wasm-runtime': 1.1.0 2594 | optional: true 2595 | 2596 | '@oxc-parser/binding-win32-arm64-msvc@0.101.0': 2597 | optional: true 2598 | 2599 | '@oxc-parser/binding-win32-x64-msvc@0.101.0': 2600 | optional: true 2601 | 2602 | '@oxc-project/types@0.101.0': {} 2603 | 2604 | '@oxc-transform/binding-android-arm64@0.101.0': 2605 | optional: true 2606 | 2607 | '@oxc-transform/binding-darwin-arm64@0.101.0': 2608 | optional: true 2609 | 2610 | '@oxc-transform/binding-darwin-x64@0.101.0': 2611 | optional: true 2612 | 2613 | '@oxc-transform/binding-freebsd-x64@0.101.0': 2614 | optional: true 2615 | 2616 | '@oxc-transform/binding-linux-arm-gnueabihf@0.101.0': 2617 | optional: true 2618 | 2619 | '@oxc-transform/binding-linux-arm64-gnu@0.101.0': 2620 | optional: true 2621 | 2622 | '@oxc-transform/binding-linux-arm64-musl@0.101.0': 2623 | optional: true 2624 | 2625 | '@oxc-transform/binding-linux-riscv64-gnu@0.101.0': 2626 | optional: true 2627 | 2628 | '@oxc-transform/binding-linux-s390x-gnu@0.101.0': 2629 | optional: true 2630 | 2631 | '@oxc-transform/binding-linux-x64-gnu@0.101.0': 2632 | optional: true 2633 | 2634 | '@oxc-transform/binding-linux-x64-musl@0.101.0': 2635 | optional: true 2636 | 2637 | '@oxc-transform/binding-openharmony-arm64@0.101.0': 2638 | optional: true 2639 | 2640 | '@oxc-transform/binding-wasm32-wasi@0.101.0': 2641 | dependencies: 2642 | '@napi-rs/wasm-runtime': 1.1.0 2643 | optional: true 2644 | 2645 | '@oxc-transform/binding-win32-arm64-msvc@0.101.0': 2646 | optional: true 2647 | 2648 | '@oxc-transform/binding-win32-x64-msvc@0.101.0': 2649 | optional: true 2650 | 2651 | '@parcel/watcher-android-arm64@2.5.1': 2652 | optional: true 2653 | 2654 | '@parcel/watcher-darwin-arm64@2.5.1': 2655 | optional: true 2656 | 2657 | '@parcel/watcher-darwin-x64@2.5.1': 2658 | optional: true 2659 | 2660 | '@parcel/watcher-freebsd-x64@2.5.1': 2661 | optional: true 2662 | 2663 | '@parcel/watcher-linux-arm-glibc@2.5.1': 2664 | optional: true 2665 | 2666 | '@parcel/watcher-linux-arm-musl@2.5.1': 2667 | optional: true 2668 | 2669 | '@parcel/watcher-linux-arm64-glibc@2.5.1': 2670 | optional: true 2671 | 2672 | '@parcel/watcher-linux-arm64-musl@2.5.1': 2673 | optional: true 2674 | 2675 | '@parcel/watcher-linux-x64-glibc@2.5.1': 2676 | optional: true 2677 | 2678 | '@parcel/watcher-linux-x64-musl@2.5.1': 2679 | optional: true 2680 | 2681 | '@parcel/watcher-win32-arm64@2.5.1': 2682 | optional: true 2683 | 2684 | '@parcel/watcher-win32-ia32@2.5.1': 2685 | optional: true 2686 | 2687 | '@parcel/watcher-win32-x64@2.5.1': 2688 | optional: true 2689 | 2690 | '@parcel/watcher@2.5.1': 2691 | dependencies: 2692 | detect-libc: 1.0.3 2693 | is-glob: 4.0.3 2694 | micromatch: 4.0.8 2695 | node-addon-api: 7.1.1 2696 | optionalDependencies: 2697 | '@parcel/watcher-android-arm64': 2.5.1 2698 | '@parcel/watcher-darwin-arm64': 2.5.1 2699 | '@parcel/watcher-darwin-x64': 2.5.1 2700 | '@parcel/watcher-freebsd-x64': 2.5.1 2701 | '@parcel/watcher-linux-arm-glibc': 2.5.1 2702 | '@parcel/watcher-linux-arm-musl': 2.5.1 2703 | '@parcel/watcher-linux-arm64-glibc': 2.5.1 2704 | '@parcel/watcher-linux-arm64-musl': 2.5.1 2705 | '@parcel/watcher-linux-x64-glibc': 2.5.1 2706 | '@parcel/watcher-linux-x64-musl': 2.5.1 2707 | '@parcel/watcher-win32-arm64': 2.5.1 2708 | '@parcel/watcher-win32-ia32': 2.5.1 2709 | '@parcel/watcher-win32-x64': 2.5.1 2710 | 2711 | '@rolldown/binding-android-arm64@1.0.0-beta.53': 2712 | optional: true 2713 | 2714 | '@rolldown/binding-darwin-arm64@1.0.0-beta.53': 2715 | optional: true 2716 | 2717 | '@rolldown/binding-darwin-x64@1.0.0-beta.53': 2718 | optional: true 2719 | 2720 | '@rolldown/binding-freebsd-x64@1.0.0-beta.53': 2721 | optional: true 2722 | 2723 | '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': 2724 | optional: true 2725 | 2726 | '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': 2727 | optional: true 2728 | 2729 | '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': 2730 | optional: true 2731 | 2732 | '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': 2733 | optional: true 2734 | 2735 | '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': 2736 | optional: true 2737 | 2738 | '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': 2739 | optional: true 2740 | 2741 | '@rolldown/binding-wasm32-wasi@1.0.0-beta.53': 2742 | dependencies: 2743 | '@napi-rs/wasm-runtime': 1.1.0 2744 | optional: true 2745 | 2746 | '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': 2747 | optional: true 2748 | 2749 | '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': 2750 | optional: true 2751 | 2752 | '@rolldown/pluginutils@1.0.0-beta.53': {} 2753 | 2754 | '@rollup/plugin-node-resolve@16.0.3(rollup@4.53.3)': 2755 | dependencies: 2756 | '@rollup/pluginutils': 5.3.0(rollup@4.53.3) 2757 | '@types/resolve': 1.20.2 2758 | deepmerge: 4.3.1 2759 | is-module: 1.0.0 2760 | resolve: 1.22.11 2761 | optionalDependencies: 2762 | rollup: 4.53.3 2763 | 2764 | '@rollup/pluginutils@5.3.0(rollup@4.53.3)': 2765 | dependencies: 2766 | '@types/estree': 1.0.8 2767 | estree-walker: 2.0.2 2768 | picomatch: 4.0.3 2769 | optionalDependencies: 2770 | rollup: 4.53.3 2771 | 2772 | '@rollup/rollup-android-arm-eabi@4.53.3': 2773 | optional: true 2774 | 2775 | '@rollup/rollup-android-arm64@4.53.3': 2776 | optional: true 2777 | 2778 | '@rollup/rollup-darwin-arm64@4.53.3': 2779 | optional: true 2780 | 2781 | '@rollup/rollup-darwin-x64@4.53.3': 2782 | optional: true 2783 | 2784 | '@rollup/rollup-freebsd-arm64@4.53.3': 2785 | optional: true 2786 | 2787 | '@rollup/rollup-freebsd-x64@4.53.3': 2788 | optional: true 2789 | 2790 | '@rollup/rollup-linux-arm-gnueabihf@4.53.3': 2791 | optional: true 2792 | 2793 | '@rollup/rollup-linux-arm-musleabihf@4.53.3': 2794 | optional: true 2795 | 2796 | '@rollup/rollup-linux-arm64-gnu@4.53.3': 2797 | optional: true 2798 | 2799 | '@rollup/rollup-linux-arm64-musl@4.53.3': 2800 | optional: true 2801 | 2802 | '@rollup/rollup-linux-loong64-gnu@4.53.3': 2803 | optional: true 2804 | 2805 | '@rollup/rollup-linux-ppc64-gnu@4.53.3': 2806 | optional: true 2807 | 2808 | '@rollup/rollup-linux-riscv64-gnu@4.53.3': 2809 | optional: true 2810 | 2811 | '@rollup/rollup-linux-riscv64-musl@4.53.3': 2812 | optional: true 2813 | 2814 | '@rollup/rollup-linux-s390x-gnu@4.53.3': 2815 | optional: true 2816 | 2817 | '@rollup/rollup-linux-x64-gnu@4.53.3': 2818 | optional: true 2819 | 2820 | '@rollup/rollup-linux-x64-musl@4.53.3': 2821 | optional: true 2822 | 2823 | '@rollup/rollup-openharmony-arm64@4.53.3': 2824 | optional: true 2825 | 2826 | '@rollup/rollup-win32-arm64-msvc@4.53.3': 2827 | optional: true 2828 | 2829 | '@rollup/rollup-win32-ia32-msvc@4.53.3': 2830 | optional: true 2831 | 2832 | '@rollup/rollup-win32-x64-gnu@4.53.3': 2833 | optional: true 2834 | 2835 | '@rollup/rollup-win32-x64-msvc@4.53.3': 2836 | optional: true 2837 | 2838 | '@standard-schema/spec@1.0.0': {} 2839 | 2840 | '@tybys/wasm-util@0.10.1': 2841 | dependencies: 2842 | tslib: 2.8.1 2843 | optional: true 2844 | 2845 | '@types/chai@5.2.3': 2846 | dependencies: 2847 | '@types/deep-eql': 4.0.2 2848 | assertion-error: 2.0.1 2849 | 2850 | '@types/deep-eql@4.0.2': {} 2851 | 2852 | '@types/estree@1.0.8': {} 2853 | 2854 | '@types/json-schema@7.0.15': {} 2855 | 2856 | '@types/mdast@3.0.15': 2857 | dependencies: 2858 | '@types/unist': 2.0.11 2859 | 2860 | '@types/node@24.10.2': 2861 | dependencies: 2862 | undici-types: 7.16.0 2863 | 2864 | '@types/resolve@1.20.2': {} 2865 | 2866 | '@types/semver@7.7.1': {} 2867 | 2868 | '@types/unist@2.0.11': {} 2869 | 2870 | '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': 2871 | dependencies: 2872 | '@eslint-community/regexpp': 4.12.2 2873 | '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 2874 | '@typescript-eslint/scope-manager': 8.49.0 2875 | '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 2876 | '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 2877 | '@typescript-eslint/visitor-keys': 8.49.0 2878 | eslint: 9.39.1(jiti@2.6.1) 2879 | ignore: 7.0.5 2880 | natural-compare: 1.4.0 2881 | ts-api-utils: 2.1.0(typescript@5.9.3) 2882 | typescript: 5.9.3 2883 | transitivePeerDependencies: 2884 | - supports-color 2885 | 2886 | '@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': 2887 | dependencies: 2888 | '@typescript-eslint/scope-manager': 8.49.0 2889 | '@typescript-eslint/types': 8.49.0 2890 | '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) 2891 | '@typescript-eslint/visitor-keys': 8.49.0 2892 | debug: 4.4.3 2893 | eslint: 9.39.1(jiti@2.6.1) 2894 | typescript: 5.9.3 2895 | transitivePeerDependencies: 2896 | - supports-color 2897 | 2898 | '@typescript-eslint/project-service@8.49.0(typescript@5.9.3)': 2899 | dependencies: 2900 | '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) 2901 | '@typescript-eslint/types': 8.49.0 2902 | debug: 4.4.3 2903 | typescript: 5.9.3 2904 | transitivePeerDependencies: 2905 | - supports-color 2906 | 2907 | '@typescript-eslint/scope-manager@8.49.0': 2908 | dependencies: 2909 | '@typescript-eslint/types': 8.49.0 2910 | '@typescript-eslint/visitor-keys': 8.49.0 2911 | 2912 | '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.3)': 2913 | dependencies: 2914 | typescript: 5.9.3 2915 | 2916 | '@typescript-eslint/type-utils@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': 2917 | dependencies: 2918 | '@typescript-eslint/types': 8.49.0 2919 | '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) 2920 | '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 2921 | debug: 4.4.3 2922 | eslint: 9.39.1(jiti@2.6.1) 2923 | ts-api-utils: 2.1.0(typescript@5.9.3) 2924 | typescript: 5.9.3 2925 | transitivePeerDependencies: 2926 | - supports-color 2927 | 2928 | '@typescript-eslint/types@8.49.0': {} 2929 | 2930 | '@typescript-eslint/typescript-estree@8.49.0(typescript@5.9.3)': 2931 | dependencies: 2932 | '@typescript-eslint/project-service': 8.49.0(typescript@5.9.3) 2933 | '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) 2934 | '@typescript-eslint/types': 8.49.0 2935 | '@typescript-eslint/visitor-keys': 8.49.0 2936 | debug: 4.4.3 2937 | minimatch: 9.0.5 2938 | semver: 7.7.3 2939 | tinyglobby: 0.2.15 2940 | ts-api-utils: 2.1.0(typescript@5.9.3) 2941 | typescript: 5.9.3 2942 | transitivePeerDependencies: 2943 | - supports-color 2944 | 2945 | '@typescript-eslint/utils@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': 2946 | dependencies: 2947 | '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) 2948 | '@typescript-eslint/scope-manager': 8.49.0 2949 | '@typescript-eslint/types': 8.49.0 2950 | '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) 2951 | eslint: 9.39.1(jiti@2.6.1) 2952 | typescript: 5.9.3 2953 | transitivePeerDependencies: 2954 | - supports-color 2955 | 2956 | '@typescript-eslint/visitor-keys@8.49.0': 2957 | dependencies: 2958 | '@typescript-eslint/types': 8.49.0 2959 | eslint-visitor-keys: 4.2.1 2960 | 2961 | '@vercel/nft@1.1.1(rollup@4.53.3)': 2962 | dependencies: 2963 | '@mapbox/node-pre-gyp': 2.0.3 2964 | '@rollup/pluginutils': 5.3.0(rollup@4.53.3) 2965 | acorn: 8.15.0 2966 | acorn-import-attributes: 1.9.5(acorn@8.15.0) 2967 | async-sema: 3.1.1 2968 | bindings: 1.5.0 2969 | estree-walker: 2.0.2 2970 | glob: 13.0.0 2971 | graceful-fs: 4.2.11 2972 | node-gyp-build: 4.8.4 2973 | picomatch: 4.0.3 2974 | resolve-from: 5.0.0 2975 | transitivePeerDependencies: 2976 | - encoding 2977 | - rollup 2978 | - supports-color 2979 | 2980 | '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@types/node@24.10.2)(jiti@2.6.1))': 2981 | dependencies: 2982 | '@bcoe/v8-coverage': 1.0.2 2983 | '@vitest/utils': 4.0.15 2984 | ast-v8-to-istanbul: 0.3.8 2985 | istanbul-lib-coverage: 3.2.2 2986 | istanbul-lib-report: 3.0.1 2987 | istanbul-lib-source-maps: 5.0.6 2988 | istanbul-reports: 3.2.0 2989 | magicast: 0.5.1 2990 | obug: 2.1.1 2991 | std-env: 3.10.0 2992 | tinyrainbow: 3.0.3 2993 | vitest: 4.0.15(@types/node@24.10.2)(jiti@2.6.1) 2994 | transitivePeerDependencies: 2995 | - supports-color 2996 | 2997 | '@vitest/expect@4.0.15': 2998 | dependencies: 2999 | '@standard-schema/spec': 1.0.0 3000 | '@types/chai': 5.2.3 3001 | '@vitest/spy': 4.0.15 3002 | '@vitest/utils': 4.0.15 3003 | chai: 6.2.1 3004 | tinyrainbow: 3.0.3 3005 | 3006 | '@vitest/mocker@4.0.15(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1))': 3007 | dependencies: 3008 | '@vitest/spy': 4.0.15 3009 | estree-walker: 3.0.3 3010 | magic-string: 0.30.21 3011 | optionalDependencies: 3012 | vite: 7.2.7(@types/node@24.10.2)(jiti@2.6.1) 3013 | 3014 | '@vitest/pretty-format@4.0.15': 3015 | dependencies: 3016 | tinyrainbow: 3.0.3 3017 | 3018 | '@vitest/runner@4.0.15': 3019 | dependencies: 3020 | '@vitest/utils': 4.0.15 3021 | pathe: 2.0.3 3022 | 3023 | '@vitest/snapshot@4.0.15': 3024 | dependencies: 3025 | '@vitest/pretty-format': 4.0.15 3026 | magic-string: 0.30.21 3027 | pathe: 2.0.3 3028 | 3029 | '@vitest/spy@4.0.15': {} 3030 | 3031 | '@vitest/utils@4.0.15': 3032 | dependencies: 3033 | '@vitest/pretty-format': 4.0.15 3034 | tinyrainbow: 3.0.3 3035 | 3036 | abbrev@3.0.1: {} 3037 | 3038 | acorn-import-attributes@1.9.5(acorn@8.15.0): 3039 | dependencies: 3040 | acorn: 8.15.0 3041 | 3042 | acorn-jsx@5.3.2(acorn@8.15.0): 3043 | dependencies: 3044 | acorn: 8.15.0 3045 | 3046 | acorn@8.15.0: {} 3047 | 3048 | agent-base@7.1.4: {} 3049 | 3050 | ajv@6.12.6: 3051 | dependencies: 3052 | fast-deep-equal: 3.1.3 3053 | fast-json-stable-stringify: 2.1.0 3054 | json-schema-traverse: 0.4.1 3055 | uri-js: 4.4.1 3056 | 3057 | ansi-styles@4.3.0: 3058 | dependencies: 3059 | color-convert: 2.0.1 3060 | 3061 | argparse@2.0.1: {} 3062 | 3063 | assertion-error@2.0.1: {} 3064 | 3065 | ast-kit@2.2.0: 3066 | dependencies: 3067 | '@babel/parser': 7.28.5 3068 | pathe: 2.0.3 3069 | 3070 | ast-v8-to-istanbul@0.3.8: 3071 | dependencies: 3072 | '@jridgewell/trace-mapping': 0.3.31 3073 | estree-walker: 3.0.3 3074 | js-tokens: 9.0.1 3075 | 3076 | async-sema@3.1.1: {} 3077 | 3078 | automd@0.4.2(magicast@0.5.1): 3079 | dependencies: 3080 | '@parcel/watcher': 2.5.1 3081 | c12: 3.3.2(magicast@0.5.1) 3082 | citty: 0.1.6 3083 | consola: 3.4.2 3084 | defu: 6.1.4 3085 | destr: 2.0.5 3086 | didyoumean2: 7.0.4 3087 | magic-string: 0.30.21 3088 | mdbox: 0.1.1 3089 | mlly: 1.8.0 3090 | ofetch: 1.5.1 3091 | pathe: 2.0.3 3092 | perfect-debounce: 2.0.0 3093 | pkg-types: 2.3.0 3094 | scule: 1.3.0 3095 | tinyglobby: 0.2.15 3096 | untyped: 2.0.0 3097 | transitivePeerDependencies: 3098 | - magicast 3099 | 3100 | balanced-match@1.0.2: {} 3101 | 3102 | baseline-browser-mapping@2.9.5: {} 3103 | 3104 | bindings@1.5.0: 3105 | dependencies: 3106 | file-uri-to-path: 1.0.0 3107 | 3108 | birpc@3.0.0: {} 3109 | 3110 | brace-expansion@1.1.12: 3111 | dependencies: 3112 | balanced-match: 1.0.2 3113 | concat-map: 0.0.1 3114 | 3115 | brace-expansion@2.0.2: 3116 | dependencies: 3117 | balanced-match: 1.0.2 3118 | 3119 | braces@3.0.3: 3120 | dependencies: 3121 | fill-range: 7.1.1 3122 | 3123 | browserslist@4.28.1: 3124 | dependencies: 3125 | baseline-browser-mapping: 2.9.5 3126 | caniuse-lite: 1.0.30001760 3127 | electron-to-chromium: 1.5.267 3128 | node-releases: 2.0.27 3129 | update-browserslist-db: 1.2.2(browserslist@4.28.1) 3130 | 3131 | builtin-modules@5.0.0: {} 3132 | 3133 | bundle-name@4.1.0: 3134 | dependencies: 3135 | run-applescript: 7.1.0 3136 | 3137 | c12@3.3.2(magicast@0.5.1): 3138 | dependencies: 3139 | chokidar: 4.0.3 3140 | confbox: 0.2.2 3141 | defu: 6.1.4 3142 | dotenv: 17.2.3 3143 | exsolve: 1.0.8 3144 | giget: 2.0.0 3145 | jiti: 2.6.1 3146 | ohash: 2.0.11 3147 | pathe: 2.0.3 3148 | perfect-debounce: 2.0.0 3149 | pkg-types: 2.3.0 3150 | rc9: 2.1.2 3151 | optionalDependencies: 3152 | magicast: 0.5.1 3153 | 3154 | callsites@3.1.0: {} 3155 | 3156 | caniuse-lite@1.0.30001760: {} 3157 | 3158 | chai@6.2.1: {} 3159 | 3160 | chalk@4.1.2: 3161 | dependencies: 3162 | ansi-styles: 4.3.0 3163 | supports-color: 7.2.0 3164 | 3165 | changelogen@0.6.2(magicast@0.5.1): 3166 | dependencies: 3167 | c12: 3.3.2(magicast@0.5.1) 3168 | confbox: 0.2.2 3169 | consola: 3.4.2 3170 | convert-gitmoji: 0.1.5 3171 | mri: 1.2.0 3172 | node-fetch-native: 1.6.7 3173 | ofetch: 1.5.1 3174 | open: 10.2.0 3175 | pathe: 2.0.3 3176 | pkg-types: 2.3.0 3177 | scule: 1.3.0 3178 | semver: 7.7.3 3179 | std-env: 3.10.0 3180 | transitivePeerDependencies: 3181 | - magicast 3182 | 3183 | character-entities-legacy@1.1.4: {} 3184 | 3185 | character-entities@1.2.4: {} 3186 | 3187 | character-reference-invalid@1.1.4: {} 3188 | 3189 | chokidar@4.0.3: 3190 | dependencies: 3191 | readdirp: 4.1.2 3192 | 3193 | chownr@3.0.0: {} 3194 | 3195 | ci-info@4.3.1: {} 3196 | 3197 | citty@0.1.6: 3198 | dependencies: 3199 | consola: 3.4.2 3200 | 3201 | clean-regexp@1.0.0: 3202 | dependencies: 3203 | escape-string-regexp: 1.0.5 3204 | 3205 | color-convert@2.0.1: 3206 | dependencies: 3207 | color-name: 1.1.4 3208 | 3209 | color-name@1.1.4: {} 3210 | 3211 | concat-map@0.0.1: {} 3212 | 3213 | confbox@0.1.8: {} 3214 | 3215 | confbox@0.2.2: {} 3216 | 3217 | consola@3.4.2: {} 3218 | 3219 | convert-gitmoji@0.1.5: {} 3220 | 3221 | core-js-compat@3.47.0: 3222 | dependencies: 3223 | browserslist: 4.28.1 3224 | 3225 | cross-spawn@7.0.6: 3226 | dependencies: 3227 | path-key: 3.1.1 3228 | shebang-command: 2.0.0 3229 | which: 2.0.2 3230 | 3231 | debug@4.4.3: 3232 | dependencies: 3233 | ms: 2.1.3 3234 | 3235 | deep-is@0.1.4: {} 3236 | 3237 | deepmerge@4.3.1: {} 3238 | 3239 | default-browser-id@5.0.1: {} 3240 | 3241 | default-browser@5.4.0: 3242 | dependencies: 3243 | bundle-name: 4.1.0 3244 | default-browser-id: 5.0.1 3245 | 3246 | define-lazy-prop@3.0.0: {} 3247 | 3248 | defu@6.1.4: {} 3249 | 3250 | destr@2.0.5: {} 3251 | 3252 | detect-libc@1.0.3: {} 3253 | 3254 | detect-libc@2.1.2: {} 3255 | 3256 | didyoumean2@7.0.4: 3257 | dependencies: 3258 | '@babel/runtime': 7.28.4 3259 | fastest-levenshtein: 1.0.16 3260 | lodash.deburr: 4.1.0 3261 | 3262 | dotenv@17.2.3: {} 3263 | 3264 | dts-resolver@2.1.3: {} 3265 | 3266 | electron-to-chromium@1.5.267: {} 3267 | 3268 | es-module-lexer@1.7.0: {} 3269 | 3270 | esbuild@0.25.12: 3271 | optionalDependencies: 3272 | '@esbuild/aix-ppc64': 0.25.12 3273 | '@esbuild/android-arm': 0.25.12 3274 | '@esbuild/android-arm64': 0.25.12 3275 | '@esbuild/android-x64': 0.25.12 3276 | '@esbuild/darwin-arm64': 0.25.12 3277 | '@esbuild/darwin-x64': 0.25.12 3278 | '@esbuild/freebsd-arm64': 0.25.12 3279 | '@esbuild/freebsd-x64': 0.25.12 3280 | '@esbuild/linux-arm': 0.25.12 3281 | '@esbuild/linux-arm64': 0.25.12 3282 | '@esbuild/linux-ia32': 0.25.12 3283 | '@esbuild/linux-loong64': 0.25.12 3284 | '@esbuild/linux-mips64el': 0.25.12 3285 | '@esbuild/linux-ppc64': 0.25.12 3286 | '@esbuild/linux-riscv64': 0.25.12 3287 | '@esbuild/linux-s390x': 0.25.12 3288 | '@esbuild/linux-x64': 0.25.12 3289 | '@esbuild/netbsd-arm64': 0.25.12 3290 | '@esbuild/netbsd-x64': 0.25.12 3291 | '@esbuild/openbsd-arm64': 0.25.12 3292 | '@esbuild/openbsd-x64': 0.25.12 3293 | '@esbuild/openharmony-arm64': 0.25.12 3294 | '@esbuild/sunos-x64': 0.25.12 3295 | '@esbuild/win32-arm64': 0.25.12 3296 | '@esbuild/win32-ia32': 0.25.12 3297 | '@esbuild/win32-x64': 0.25.12 3298 | 3299 | escalade@3.2.0: {} 3300 | 3301 | escape-string-regexp@1.0.5: {} 3302 | 3303 | escape-string-regexp@4.0.0: {} 3304 | 3305 | eslint-config-unjs@0.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): 3306 | dependencies: 3307 | '@eslint/js': 9.39.1 3308 | eslint: 9.39.1(jiti@2.6.1) 3309 | eslint-plugin-markdown: 5.1.0(eslint@9.39.1(jiti@2.6.1)) 3310 | eslint-plugin-unicorn: 59.0.1(eslint@9.39.1(jiti@2.6.1)) 3311 | globals: 16.5.0 3312 | typescript: 5.9.3 3313 | typescript-eslint: 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 3314 | transitivePeerDependencies: 3315 | - supports-color 3316 | 3317 | eslint-plugin-markdown@5.1.0(eslint@9.39.1(jiti@2.6.1)): 3318 | dependencies: 3319 | eslint: 9.39.1(jiti@2.6.1) 3320 | mdast-util-from-markdown: 0.8.5 3321 | transitivePeerDependencies: 3322 | - supports-color 3323 | 3324 | eslint-plugin-unicorn@59.0.1(eslint@9.39.1(jiti@2.6.1)): 3325 | dependencies: 3326 | '@babel/helper-validator-identifier': 7.28.5 3327 | '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) 3328 | '@eslint/plugin-kit': 0.2.8 3329 | ci-info: 4.3.1 3330 | clean-regexp: 1.0.0 3331 | core-js-compat: 3.47.0 3332 | eslint: 9.39.1(jiti@2.6.1) 3333 | esquery: 1.6.0 3334 | find-up-simple: 1.0.1 3335 | globals: 16.5.0 3336 | indent-string: 5.0.0 3337 | is-builtin-module: 5.0.0 3338 | jsesc: 3.1.0 3339 | pluralize: 8.0.0 3340 | regexp-tree: 0.1.27 3341 | regjsparser: 0.12.0 3342 | semver: 7.7.3 3343 | strip-indent: 4.1.1 3344 | 3345 | eslint-scope@8.4.0: 3346 | dependencies: 3347 | esrecurse: 4.3.0 3348 | estraverse: 5.3.0 3349 | 3350 | eslint-visitor-keys@3.4.3: {} 3351 | 3352 | eslint-visitor-keys@4.2.1: {} 3353 | 3354 | eslint@9.39.1(jiti@2.6.1): 3355 | dependencies: 3356 | '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) 3357 | '@eslint-community/regexpp': 4.12.2 3358 | '@eslint/config-array': 0.21.1 3359 | '@eslint/config-helpers': 0.4.2 3360 | '@eslint/core': 0.17.0 3361 | '@eslint/eslintrc': 3.3.3 3362 | '@eslint/js': 9.39.1 3363 | '@eslint/plugin-kit': 0.4.1 3364 | '@humanfs/node': 0.16.7 3365 | '@humanwhocodes/module-importer': 1.0.1 3366 | '@humanwhocodes/retry': 0.4.3 3367 | '@types/estree': 1.0.8 3368 | ajv: 6.12.6 3369 | chalk: 4.1.2 3370 | cross-spawn: 7.0.6 3371 | debug: 4.4.3 3372 | escape-string-regexp: 4.0.0 3373 | eslint-scope: 8.4.0 3374 | eslint-visitor-keys: 4.2.1 3375 | espree: 10.4.0 3376 | esquery: 1.6.0 3377 | esutils: 2.0.3 3378 | fast-deep-equal: 3.1.3 3379 | file-entry-cache: 8.0.0 3380 | find-up: 5.0.0 3381 | glob-parent: 6.0.2 3382 | ignore: 5.3.2 3383 | imurmurhash: 0.1.4 3384 | is-glob: 4.0.3 3385 | json-stable-stringify-without-jsonify: 1.0.1 3386 | lodash.merge: 4.6.2 3387 | minimatch: 3.1.2 3388 | natural-compare: 1.4.0 3389 | optionator: 0.9.4 3390 | optionalDependencies: 3391 | jiti: 2.6.1 3392 | transitivePeerDependencies: 3393 | - supports-color 3394 | 3395 | espree@10.4.0: 3396 | dependencies: 3397 | acorn: 8.15.0 3398 | acorn-jsx: 5.3.2(acorn@8.15.0) 3399 | eslint-visitor-keys: 4.2.1 3400 | 3401 | esquery@1.6.0: 3402 | dependencies: 3403 | estraverse: 5.3.0 3404 | 3405 | esrecurse@4.3.0: 3406 | dependencies: 3407 | estraverse: 5.3.0 3408 | 3409 | estraverse@5.3.0: {} 3410 | 3411 | estree-walker@2.0.2: {} 3412 | 3413 | estree-walker@3.0.3: 3414 | dependencies: 3415 | '@types/estree': 1.0.8 3416 | 3417 | esutils@2.0.3: {} 3418 | 3419 | expect-type@1.3.0: {} 3420 | 3421 | exsolve@1.0.8: {} 3422 | 3423 | fast-deep-equal@3.1.3: {} 3424 | 3425 | fast-json-stable-stringify@2.1.0: {} 3426 | 3427 | fast-levenshtein@2.0.6: {} 3428 | 3429 | fastest-levenshtein@1.0.16: {} 3430 | 3431 | fdir@6.5.0(picomatch@4.0.3): 3432 | optionalDependencies: 3433 | picomatch: 4.0.3 3434 | 3435 | file-entry-cache@8.0.0: 3436 | dependencies: 3437 | flat-cache: 4.0.1 3438 | 3439 | file-uri-to-path@1.0.0: {} 3440 | 3441 | fill-range@7.1.1: 3442 | dependencies: 3443 | to-regex-range: 5.0.1 3444 | 3445 | find-up-simple@1.0.1: {} 3446 | 3447 | find-up@5.0.0: 3448 | dependencies: 3449 | locate-path: 6.0.0 3450 | path-exists: 4.0.0 3451 | 3452 | flat-cache@4.0.1: 3453 | dependencies: 3454 | flatted: 3.3.3 3455 | keyv: 4.5.4 3456 | 3457 | flatted@3.3.3: {} 3458 | 3459 | fsevents@2.3.3: 3460 | optional: true 3461 | 3462 | function-bind@1.1.2: {} 3463 | 3464 | get-tsconfig@4.13.0: 3465 | dependencies: 3466 | resolve-pkg-maps: 1.0.0 3467 | 3468 | giget@2.0.0: 3469 | dependencies: 3470 | citty: 0.1.6 3471 | consola: 3.4.2 3472 | defu: 6.1.4 3473 | node-fetch-native: 1.6.7 3474 | nypm: 0.6.2 3475 | pathe: 2.0.3 3476 | 3477 | glob-parent@6.0.2: 3478 | dependencies: 3479 | is-glob: 4.0.3 3480 | 3481 | glob@13.0.0: 3482 | dependencies: 3483 | minimatch: 10.1.1 3484 | minipass: 7.1.2 3485 | path-scurry: 2.0.1 3486 | 3487 | globals@14.0.0: {} 3488 | 3489 | globals@16.5.0: {} 3490 | 3491 | graceful-fs@4.2.11: {} 3492 | 3493 | has-flag@4.0.0: {} 3494 | 3495 | hasown@2.0.2: 3496 | dependencies: 3497 | function-bind: 1.1.2 3498 | 3499 | html-escaper@2.0.2: {} 3500 | 3501 | https-proxy-agent@7.0.6: 3502 | dependencies: 3503 | agent-base: 7.1.4 3504 | debug: 4.4.3 3505 | transitivePeerDependencies: 3506 | - supports-color 3507 | 3508 | ignore@5.3.2: {} 3509 | 3510 | ignore@7.0.5: {} 3511 | 3512 | import-fresh@3.3.1: 3513 | dependencies: 3514 | parent-module: 1.0.1 3515 | resolve-from: 4.0.0 3516 | 3517 | imurmurhash@0.1.4: {} 3518 | 3519 | indent-string@5.0.0: {} 3520 | 3521 | is-alphabetical@1.0.4: {} 3522 | 3523 | is-alphanumerical@1.0.4: 3524 | dependencies: 3525 | is-alphabetical: 1.0.4 3526 | is-decimal: 1.0.4 3527 | 3528 | is-builtin-module@5.0.0: 3529 | dependencies: 3530 | builtin-modules: 5.0.0 3531 | 3532 | is-core-module@2.16.1: 3533 | dependencies: 3534 | hasown: 2.0.2 3535 | 3536 | is-decimal@1.0.4: {} 3537 | 3538 | is-docker@3.0.0: {} 3539 | 3540 | is-extglob@2.1.1: {} 3541 | 3542 | is-glob@4.0.3: 3543 | dependencies: 3544 | is-extglob: 2.1.1 3545 | 3546 | is-hexadecimal@1.0.4: {} 3547 | 3548 | is-inside-container@1.0.0: 3549 | dependencies: 3550 | is-docker: 3.0.0 3551 | 3552 | is-module@1.0.0: {} 3553 | 3554 | is-number@7.0.0: {} 3555 | 3556 | is-wsl@3.1.0: 3557 | dependencies: 3558 | is-inside-container: 1.0.0 3559 | 3560 | isexe@2.0.0: {} 3561 | 3562 | istanbul-lib-coverage@3.2.2: {} 3563 | 3564 | istanbul-lib-report@3.0.1: 3565 | dependencies: 3566 | istanbul-lib-coverage: 3.2.2 3567 | make-dir: 4.0.0 3568 | supports-color: 7.2.0 3569 | 3570 | istanbul-lib-source-maps@5.0.6: 3571 | dependencies: 3572 | '@jridgewell/trace-mapping': 0.3.31 3573 | debug: 4.4.3 3574 | istanbul-lib-coverage: 3.2.2 3575 | transitivePeerDependencies: 3576 | - supports-color 3577 | 3578 | istanbul-reports@3.2.0: 3579 | dependencies: 3580 | html-escaper: 2.0.2 3581 | istanbul-lib-report: 3.0.1 3582 | 3583 | jiti@2.6.1: {} 3584 | 3585 | js-tokens@9.0.1: {} 3586 | 3587 | js-yaml@4.1.1: 3588 | dependencies: 3589 | argparse: 2.0.1 3590 | 3591 | jsesc@3.0.2: {} 3592 | 3593 | jsesc@3.1.0: {} 3594 | 3595 | json-buffer@3.0.1: {} 3596 | 3597 | json-schema-traverse@0.4.1: {} 3598 | 3599 | json-stable-stringify-without-jsonify@1.0.1: {} 3600 | 3601 | keyv@4.5.4: 3602 | dependencies: 3603 | json-buffer: 3.0.1 3604 | 3605 | knitwork@1.3.0: {} 3606 | 3607 | levn@0.4.1: 3608 | dependencies: 3609 | prelude-ls: 1.2.1 3610 | type-check: 0.4.0 3611 | 3612 | locate-path@6.0.0: 3613 | dependencies: 3614 | p-locate: 5.0.0 3615 | 3616 | lodash.deburr@4.1.0: {} 3617 | 3618 | lodash.merge@4.6.2: {} 3619 | 3620 | lru-cache@11.2.4: {} 3621 | 3622 | magic-string@0.30.21: 3623 | dependencies: 3624 | '@jridgewell/sourcemap-codec': 1.5.5 3625 | 3626 | magicast@0.5.1: 3627 | dependencies: 3628 | '@babel/parser': 7.28.5 3629 | '@babel/types': 7.28.5 3630 | source-map-js: 1.2.1 3631 | 3632 | make-dir@4.0.0: 3633 | dependencies: 3634 | semver: 7.7.3 3635 | 3636 | md4w@0.2.7: {} 3637 | 3638 | mdast-util-from-markdown@0.8.5: 3639 | dependencies: 3640 | '@types/mdast': 3.0.15 3641 | mdast-util-to-string: 2.0.0 3642 | micromark: 2.11.4 3643 | parse-entities: 2.0.0 3644 | unist-util-stringify-position: 2.0.3 3645 | transitivePeerDependencies: 3646 | - supports-color 3647 | 3648 | mdast-util-to-string@2.0.0: {} 3649 | 3650 | mdbox@0.1.1: 3651 | dependencies: 3652 | md4w: 0.2.7 3653 | 3654 | micromark@2.11.4: 3655 | dependencies: 3656 | debug: 4.4.3 3657 | parse-entities: 2.0.0 3658 | transitivePeerDependencies: 3659 | - supports-color 3660 | 3661 | micromatch@4.0.8: 3662 | dependencies: 3663 | braces: 3.0.3 3664 | picomatch: 2.3.1 3665 | 3666 | minimatch@10.1.1: 3667 | dependencies: 3668 | '@isaacs/brace-expansion': 5.0.0 3669 | 3670 | minimatch@3.1.2: 3671 | dependencies: 3672 | brace-expansion: 1.1.12 3673 | 3674 | minimatch@9.0.5: 3675 | dependencies: 3676 | brace-expansion: 2.0.2 3677 | 3678 | minipass@7.1.2: {} 3679 | 3680 | minizlib@3.1.0: 3681 | dependencies: 3682 | minipass: 7.1.2 3683 | 3684 | mlly@1.8.0: 3685 | dependencies: 3686 | acorn: 8.15.0 3687 | pathe: 2.0.3 3688 | pkg-types: 1.3.1 3689 | ufo: 1.6.1 3690 | 3691 | mri@1.2.0: {} 3692 | 3693 | ms@2.1.3: {} 3694 | 3695 | nanoid@3.3.11: {} 3696 | 3697 | natural-compare@1.4.0: {} 3698 | 3699 | node-addon-api@7.1.1: {} 3700 | 3701 | node-fetch-native@1.6.7: {} 3702 | 3703 | node-fetch@2.7.0: 3704 | dependencies: 3705 | whatwg-url: 5.0.0 3706 | 3707 | node-gyp-build@4.8.4: {} 3708 | 3709 | node-releases@2.0.27: {} 3710 | 3711 | nopt@8.1.0: 3712 | dependencies: 3713 | abbrev: 3.0.1 3714 | 3715 | nypm@0.6.2: 3716 | dependencies: 3717 | citty: 0.1.6 3718 | consola: 3.4.2 3719 | pathe: 2.0.3 3720 | pkg-types: 2.3.0 3721 | tinyexec: 1.0.2 3722 | 3723 | obug@2.1.1: {} 3724 | 3725 | obuild@0.4.7(magicast@0.5.1)(typescript@5.9.3): 3726 | dependencies: 3727 | c12: 3.3.2(magicast@0.5.1) 3728 | consola: 3.4.2 3729 | defu: 6.1.4 3730 | exsolve: 1.0.8 3731 | magic-string: 0.30.21 3732 | oxc-minify: 0.101.0 3733 | oxc-parser: 0.101.0 3734 | oxc-transform: 0.101.0 3735 | pathe: 2.0.3 3736 | pretty-bytes: 7.1.0 3737 | rolldown: 1.0.0-beta.53 3738 | rolldown-plugin-dts: 0.18.3(rolldown@1.0.0-beta.53)(typescript@5.9.3) 3739 | tinyglobby: 0.2.15 3740 | transitivePeerDependencies: 3741 | - '@ts-macro/tsc' 3742 | - '@typescript/native-preview' 3743 | - magicast 3744 | - oxc-resolver 3745 | - typescript 3746 | - vue-tsc 3747 | 3748 | ofetch@1.5.1: 3749 | dependencies: 3750 | destr: 2.0.5 3751 | node-fetch-native: 1.6.7 3752 | ufo: 1.6.1 3753 | 3754 | ohash@2.0.11: {} 3755 | 3756 | open@10.2.0: 3757 | dependencies: 3758 | default-browser: 5.4.0 3759 | define-lazy-prop: 3.0.0 3760 | is-inside-container: 1.0.0 3761 | wsl-utils: 0.1.0 3762 | 3763 | optionator@0.9.4: 3764 | dependencies: 3765 | deep-is: 0.1.4 3766 | fast-levenshtein: 2.0.6 3767 | levn: 0.4.1 3768 | prelude-ls: 1.2.1 3769 | type-check: 0.4.0 3770 | word-wrap: 1.2.5 3771 | 3772 | oxc-minify@0.101.0: 3773 | optionalDependencies: 3774 | '@oxc-minify/binding-android-arm64': 0.101.0 3775 | '@oxc-minify/binding-darwin-arm64': 0.101.0 3776 | '@oxc-minify/binding-darwin-x64': 0.101.0 3777 | '@oxc-minify/binding-freebsd-x64': 0.101.0 3778 | '@oxc-minify/binding-linux-arm-gnueabihf': 0.101.0 3779 | '@oxc-minify/binding-linux-arm64-gnu': 0.101.0 3780 | '@oxc-minify/binding-linux-arm64-musl': 0.101.0 3781 | '@oxc-minify/binding-linux-riscv64-gnu': 0.101.0 3782 | '@oxc-minify/binding-linux-s390x-gnu': 0.101.0 3783 | '@oxc-minify/binding-linux-x64-gnu': 0.101.0 3784 | '@oxc-minify/binding-linux-x64-musl': 0.101.0 3785 | '@oxc-minify/binding-openharmony-arm64': 0.101.0 3786 | '@oxc-minify/binding-wasm32-wasi': 0.101.0 3787 | '@oxc-minify/binding-win32-arm64-msvc': 0.101.0 3788 | '@oxc-minify/binding-win32-x64-msvc': 0.101.0 3789 | 3790 | oxc-minify@0.102.0: 3791 | optionalDependencies: 3792 | '@oxc-minify/binding-android-arm64': 0.102.0 3793 | '@oxc-minify/binding-darwin-arm64': 0.102.0 3794 | '@oxc-minify/binding-darwin-x64': 0.102.0 3795 | '@oxc-minify/binding-freebsd-x64': 0.102.0 3796 | '@oxc-minify/binding-linux-arm-gnueabihf': 0.102.0 3797 | '@oxc-minify/binding-linux-arm64-gnu': 0.102.0 3798 | '@oxc-minify/binding-linux-arm64-musl': 0.102.0 3799 | '@oxc-minify/binding-linux-riscv64-gnu': 0.102.0 3800 | '@oxc-minify/binding-linux-s390x-gnu': 0.102.0 3801 | '@oxc-minify/binding-linux-x64-gnu': 0.102.0 3802 | '@oxc-minify/binding-linux-x64-musl': 0.102.0 3803 | '@oxc-minify/binding-openharmony-arm64': 0.102.0 3804 | '@oxc-minify/binding-wasm32-wasi': 0.102.0 3805 | '@oxc-minify/binding-win32-arm64-msvc': 0.102.0 3806 | '@oxc-minify/binding-win32-x64-msvc': 0.102.0 3807 | 3808 | oxc-parser@0.101.0: 3809 | dependencies: 3810 | '@oxc-project/types': 0.101.0 3811 | optionalDependencies: 3812 | '@oxc-parser/binding-android-arm64': 0.101.0 3813 | '@oxc-parser/binding-darwin-arm64': 0.101.0 3814 | '@oxc-parser/binding-darwin-x64': 0.101.0 3815 | '@oxc-parser/binding-freebsd-x64': 0.101.0 3816 | '@oxc-parser/binding-linux-arm-gnueabihf': 0.101.0 3817 | '@oxc-parser/binding-linux-arm64-gnu': 0.101.0 3818 | '@oxc-parser/binding-linux-arm64-musl': 0.101.0 3819 | '@oxc-parser/binding-linux-riscv64-gnu': 0.101.0 3820 | '@oxc-parser/binding-linux-s390x-gnu': 0.101.0 3821 | '@oxc-parser/binding-linux-x64-gnu': 0.101.0 3822 | '@oxc-parser/binding-linux-x64-musl': 0.101.0 3823 | '@oxc-parser/binding-openharmony-arm64': 0.101.0 3824 | '@oxc-parser/binding-wasm32-wasi': 0.101.0 3825 | '@oxc-parser/binding-win32-arm64-msvc': 0.101.0 3826 | '@oxc-parser/binding-win32-x64-msvc': 0.101.0 3827 | 3828 | oxc-transform@0.101.0: 3829 | optionalDependencies: 3830 | '@oxc-transform/binding-android-arm64': 0.101.0 3831 | '@oxc-transform/binding-darwin-arm64': 0.101.0 3832 | '@oxc-transform/binding-darwin-x64': 0.101.0 3833 | '@oxc-transform/binding-freebsd-x64': 0.101.0 3834 | '@oxc-transform/binding-linux-arm-gnueabihf': 0.101.0 3835 | '@oxc-transform/binding-linux-arm64-gnu': 0.101.0 3836 | '@oxc-transform/binding-linux-arm64-musl': 0.101.0 3837 | '@oxc-transform/binding-linux-riscv64-gnu': 0.101.0 3838 | '@oxc-transform/binding-linux-s390x-gnu': 0.101.0 3839 | '@oxc-transform/binding-linux-x64-gnu': 0.101.0 3840 | '@oxc-transform/binding-linux-x64-musl': 0.101.0 3841 | '@oxc-transform/binding-openharmony-arm64': 0.101.0 3842 | '@oxc-transform/binding-wasm32-wasi': 0.101.0 3843 | '@oxc-transform/binding-win32-arm64-msvc': 0.101.0 3844 | '@oxc-transform/binding-win32-x64-msvc': 0.101.0 3845 | 3846 | p-limit@3.1.0: 3847 | dependencies: 3848 | yocto-queue: 0.1.0 3849 | 3850 | p-locate@5.0.0: 3851 | dependencies: 3852 | p-limit: 3.1.0 3853 | 3854 | parent-module@1.0.1: 3855 | dependencies: 3856 | callsites: 3.1.0 3857 | 3858 | parse-entities@2.0.0: 3859 | dependencies: 3860 | character-entities: 1.2.4 3861 | character-entities-legacy: 1.1.4 3862 | character-reference-invalid: 1.1.4 3863 | is-alphanumerical: 1.0.4 3864 | is-decimal: 1.0.4 3865 | is-hexadecimal: 1.0.4 3866 | 3867 | path-exists@4.0.0: {} 3868 | 3869 | path-key@3.1.1: {} 3870 | 3871 | path-parse@1.0.7: {} 3872 | 3873 | path-scurry@2.0.1: 3874 | dependencies: 3875 | lru-cache: 11.2.4 3876 | minipass: 7.1.2 3877 | 3878 | pathe@2.0.3: {} 3879 | 3880 | perfect-debounce@2.0.0: {} 3881 | 3882 | picocolors@1.1.1: {} 3883 | 3884 | picomatch@2.3.1: {} 3885 | 3886 | picomatch@4.0.3: {} 3887 | 3888 | pkg-types@1.3.1: 3889 | dependencies: 3890 | confbox: 0.1.8 3891 | mlly: 1.8.0 3892 | pathe: 2.0.3 3893 | 3894 | pkg-types@2.3.0: 3895 | dependencies: 3896 | confbox: 0.2.2 3897 | exsolve: 1.0.8 3898 | pathe: 2.0.3 3899 | 3900 | pluralize@8.0.0: {} 3901 | 3902 | postcss@8.5.6: 3903 | dependencies: 3904 | nanoid: 3.3.11 3905 | picocolors: 1.1.1 3906 | source-map-js: 1.2.1 3907 | 3908 | prelude-ls@1.2.1: {} 3909 | 3910 | prettier@3.7.4: {} 3911 | 3912 | pretty-bytes@7.1.0: {} 3913 | 3914 | punycode@2.3.1: {} 3915 | 3916 | rc9@2.1.2: 3917 | dependencies: 3918 | defu: 6.1.4 3919 | destr: 2.0.5 3920 | 3921 | readdirp@4.1.2: {} 3922 | 3923 | regexp-tree@0.1.27: {} 3924 | 3925 | regjsparser@0.12.0: 3926 | dependencies: 3927 | jsesc: 3.0.2 3928 | 3929 | resolve-from@4.0.0: {} 3930 | 3931 | resolve-from@5.0.0: {} 3932 | 3933 | resolve-pkg-maps@1.0.0: {} 3934 | 3935 | resolve@1.22.11: 3936 | dependencies: 3937 | is-core-module: 2.16.1 3938 | path-parse: 1.0.7 3939 | supports-preserve-symlinks-flag: 1.0.0 3940 | 3941 | rolldown-plugin-dts@0.18.3(rolldown@1.0.0-beta.53)(typescript@5.9.3): 3942 | dependencies: 3943 | '@babel/generator': 7.28.5 3944 | '@babel/parser': 7.28.5 3945 | '@babel/types': 7.28.5 3946 | ast-kit: 2.2.0 3947 | birpc: 3.0.0 3948 | dts-resolver: 2.1.3 3949 | get-tsconfig: 4.13.0 3950 | magic-string: 0.30.21 3951 | obug: 2.1.1 3952 | rolldown: 1.0.0-beta.53 3953 | optionalDependencies: 3954 | typescript: 5.9.3 3955 | transitivePeerDependencies: 3956 | - oxc-resolver 3957 | 3958 | rolldown@1.0.0-beta.53: 3959 | dependencies: 3960 | '@oxc-project/types': 0.101.0 3961 | '@rolldown/pluginutils': 1.0.0-beta.53 3962 | optionalDependencies: 3963 | '@rolldown/binding-android-arm64': 1.0.0-beta.53 3964 | '@rolldown/binding-darwin-arm64': 1.0.0-beta.53 3965 | '@rolldown/binding-darwin-x64': 1.0.0-beta.53 3966 | '@rolldown/binding-freebsd-x64': 1.0.0-beta.53 3967 | '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.53 3968 | '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.53 3969 | '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.53 3970 | '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.53 3971 | '@rolldown/binding-linux-x64-musl': 1.0.0-beta.53 3972 | '@rolldown/binding-openharmony-arm64': 1.0.0-beta.53 3973 | '@rolldown/binding-wasm32-wasi': 1.0.0-beta.53 3974 | '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.53 3975 | '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.53 3976 | 3977 | rollup-plugin-esbuild@6.2.1(esbuild@0.25.12)(rollup@4.53.3): 3978 | dependencies: 3979 | debug: 4.4.3 3980 | es-module-lexer: 1.7.0 3981 | esbuild: 0.25.12 3982 | get-tsconfig: 4.13.0 3983 | rollup: 4.53.3 3984 | unplugin-utils: 0.2.5 3985 | transitivePeerDependencies: 3986 | - supports-color 3987 | 3988 | rollup@4.53.3: 3989 | dependencies: 3990 | '@types/estree': 1.0.8 3991 | optionalDependencies: 3992 | '@rollup/rollup-android-arm-eabi': 4.53.3 3993 | '@rollup/rollup-android-arm64': 4.53.3 3994 | '@rollup/rollup-darwin-arm64': 4.53.3 3995 | '@rollup/rollup-darwin-x64': 4.53.3 3996 | '@rollup/rollup-freebsd-arm64': 4.53.3 3997 | '@rollup/rollup-freebsd-x64': 4.53.3 3998 | '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 3999 | '@rollup/rollup-linux-arm-musleabihf': 4.53.3 4000 | '@rollup/rollup-linux-arm64-gnu': 4.53.3 4001 | '@rollup/rollup-linux-arm64-musl': 4.53.3 4002 | '@rollup/rollup-linux-loong64-gnu': 4.53.3 4003 | '@rollup/rollup-linux-ppc64-gnu': 4.53.3 4004 | '@rollup/rollup-linux-riscv64-gnu': 4.53.3 4005 | '@rollup/rollup-linux-riscv64-musl': 4.53.3 4006 | '@rollup/rollup-linux-s390x-gnu': 4.53.3 4007 | '@rollup/rollup-linux-x64-gnu': 4.53.3 4008 | '@rollup/rollup-linux-x64-musl': 4.53.3 4009 | '@rollup/rollup-openharmony-arm64': 4.53.3 4010 | '@rollup/rollup-win32-arm64-msvc': 4.53.3 4011 | '@rollup/rollup-win32-ia32-msvc': 4.53.3 4012 | '@rollup/rollup-win32-x64-gnu': 4.53.3 4013 | '@rollup/rollup-win32-x64-msvc': 4.53.3 4014 | fsevents: 2.3.3 4015 | 4016 | run-applescript@7.1.0: {} 4017 | 4018 | scule@1.3.0: {} 4019 | 4020 | semver@7.7.3: {} 4021 | 4022 | shebang-command@2.0.0: 4023 | dependencies: 4024 | shebang-regex: 3.0.0 4025 | 4026 | shebang-regex@3.0.0: {} 4027 | 4028 | siginfo@2.0.0: {} 4029 | 4030 | source-map-js@1.2.1: {} 4031 | 4032 | stackback@0.0.2: {} 4033 | 4034 | std-env@3.10.0: {} 4035 | 4036 | strip-indent@4.1.1: {} 4037 | 4038 | strip-json-comments@3.1.1: {} 4039 | 4040 | supports-color@7.2.0: 4041 | dependencies: 4042 | has-flag: 4.0.0 4043 | 4044 | supports-preserve-symlinks-flag@1.0.0: {} 4045 | 4046 | tar@7.5.2: 4047 | dependencies: 4048 | '@isaacs/fs-minipass': 4.0.1 4049 | chownr: 3.0.0 4050 | minipass: 7.1.2 4051 | minizlib: 3.1.0 4052 | yallist: 5.0.0 4053 | 4054 | tinybench@2.9.0: {} 4055 | 4056 | tinyexec@1.0.2: {} 4057 | 4058 | tinyglobby@0.2.15: 4059 | dependencies: 4060 | fdir: 6.5.0(picomatch@4.0.3) 4061 | picomatch: 4.0.3 4062 | 4063 | tinyrainbow@3.0.3: {} 4064 | 4065 | to-regex-range@5.0.1: 4066 | dependencies: 4067 | is-number: 7.0.0 4068 | 4069 | tr46@0.0.3: {} 4070 | 4071 | ts-api-utils@2.1.0(typescript@5.9.3): 4072 | dependencies: 4073 | typescript: 5.9.3 4074 | 4075 | tslib@2.8.1: 4076 | optional: true 4077 | 4078 | type-check@0.4.0: 4079 | dependencies: 4080 | prelude-ls: 1.2.1 4081 | 4082 | typescript-eslint@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): 4083 | dependencies: 4084 | '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 4085 | '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 4086 | '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) 4087 | '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 4088 | eslint: 9.39.1(jiti@2.6.1) 4089 | typescript: 5.9.3 4090 | transitivePeerDependencies: 4091 | - supports-color 4092 | 4093 | typescript@5.9.3: {} 4094 | 4095 | ufo@1.6.1: {} 4096 | 4097 | undici-types@7.16.0: {} 4098 | 4099 | unist-util-stringify-position@2.0.3: 4100 | dependencies: 4101 | '@types/unist': 2.0.11 4102 | 4103 | unplugin-utils@0.2.5: 4104 | dependencies: 4105 | pathe: 2.0.3 4106 | picomatch: 4.0.3 4107 | 4108 | untyped@2.0.0: 4109 | dependencies: 4110 | citty: 0.1.6 4111 | defu: 6.1.4 4112 | jiti: 2.6.1 4113 | knitwork: 1.3.0 4114 | scule: 1.3.0 4115 | 4116 | update-browserslist-db@1.2.2(browserslist@4.28.1): 4117 | dependencies: 4118 | browserslist: 4.28.1 4119 | escalade: 3.2.0 4120 | picocolors: 1.1.1 4121 | 4122 | uri-js@4.4.1: 4123 | dependencies: 4124 | punycode: 2.3.1 4125 | 4126 | vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1): 4127 | dependencies: 4128 | esbuild: 0.25.12 4129 | fdir: 6.5.0(picomatch@4.0.3) 4130 | picomatch: 4.0.3 4131 | postcss: 8.5.6 4132 | rollup: 4.53.3 4133 | tinyglobby: 0.2.15 4134 | optionalDependencies: 4135 | '@types/node': 24.10.2 4136 | fsevents: 2.3.3 4137 | jiti: 2.6.1 4138 | 4139 | vitest@4.0.15(@types/node@24.10.2)(jiti@2.6.1): 4140 | dependencies: 4141 | '@vitest/expect': 4.0.15 4142 | '@vitest/mocker': 4.0.15(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)) 4143 | '@vitest/pretty-format': 4.0.15 4144 | '@vitest/runner': 4.0.15 4145 | '@vitest/snapshot': 4.0.15 4146 | '@vitest/spy': 4.0.15 4147 | '@vitest/utils': 4.0.15 4148 | es-module-lexer: 1.7.0 4149 | expect-type: 1.3.0 4150 | magic-string: 0.30.21 4151 | obug: 2.1.1 4152 | pathe: 2.0.3 4153 | picomatch: 4.0.3 4154 | std-env: 3.10.0 4155 | tinybench: 2.9.0 4156 | tinyexec: 1.0.2 4157 | tinyglobby: 0.2.15 4158 | tinyrainbow: 3.0.3 4159 | vite: 7.2.7(@types/node@24.10.2)(jiti@2.6.1) 4160 | why-is-node-running: 2.3.0 4161 | optionalDependencies: 4162 | '@types/node': 24.10.2 4163 | transitivePeerDependencies: 4164 | - jiti 4165 | - less 4166 | - lightningcss 4167 | - msw 4168 | - sass 4169 | - sass-embedded 4170 | - stylus 4171 | - sugarss 4172 | - terser 4173 | - tsx 4174 | - yaml 4175 | 4176 | webidl-conversions@3.0.1: {} 4177 | 4178 | whatwg-url@5.0.0: 4179 | dependencies: 4180 | tr46: 0.0.3 4181 | webidl-conversions: 3.0.1 4182 | 4183 | which@2.0.2: 4184 | dependencies: 4185 | isexe: 2.0.0 4186 | 4187 | why-is-node-running@2.3.0: 4188 | dependencies: 4189 | siginfo: 2.0.0 4190 | stackback: 0.0.2 4191 | 4192 | word-wrap@1.2.5: {} 4193 | 4194 | wsl-utils@0.1.0: 4195 | dependencies: 4196 | is-wsl: 3.1.0 4197 | 4198 | yallist@5.0.0: {} 4199 | 4200 | yocto-queue@0.1.0: {} 4201 | --------------------------------------------------------------------------------