├── .gitignore ├── tests ├── vitest-in-webcontainer.ts ├── webcontainer-test.ts ├── tutorialkit.ts └── starters.ts ├── src ├── test.ts ├── types.ts ├── index.ts └── utils.ts ├── eslint.config.mjs ├── .github ├── workflows │ ├── ci.yml │ └── ecosystem-ci.yml └── actions │ └── ecosystem-run │ └── action.yml ├── package.json ├── LICENSE ├── README.md └── pnpm-lock.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | workspace 3 | -------------------------------------------------------------------------------- /tests/vitest-in-webcontainer.ts: -------------------------------------------------------------------------------- 1 | import { defineTest } from "../src/test"; 2 | 3 | export default defineTest({ 4 | repo: "vitest-tests/vitest-in-webcontainer", 5 | branch: "main", 6 | test: "test", 7 | beforeTest: "npx playwright install chromium --with-deps --only-shell", 8 | }); 9 | -------------------------------------------------------------------------------- /tests/webcontainer-test.ts: -------------------------------------------------------------------------------- 1 | import { defineTest } from "../src/test"; 2 | 3 | export default defineTest({ 4 | repo: "stackblitz/webcontainer-test", 5 | branch: "main", 6 | test: "test", 7 | beforeTest: 8 | "npx playwright install chromium firefox --with-deps --only-shell", 9 | }); 10 | -------------------------------------------------------------------------------- /tests/tutorialkit.ts: -------------------------------------------------------------------------------- 1 | import { defineTest } from "../src/test"; 2 | 3 | export default defineTest({ 4 | repo: "stackblitz/tutorialkit", 5 | branch: "main", 6 | test: "test:e2e", 7 | build: "build", 8 | beforeTest: 9 | "pnpm --filter=tutorialkit-e2e exec playwright install chromium --with-deps", 10 | }); 11 | -------------------------------------------------------------------------------- /src/test.ts: -------------------------------------------------------------------------------- 1 | import { RepoOptions, RunOptions } from "./types"; 2 | import { runInRepo } from "./utils"; 3 | 4 | export function defineTest(repoOptions: RepoOptions & Partial) { 5 | return async function test(options: RunOptions & Partial) { 6 | await runInRepo({ 7 | ...repoOptions, 8 | ...options, 9 | }); 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /tests/starters.ts: -------------------------------------------------------------------------------- 1 | import { defineTest } from "../src/test"; 2 | 3 | export default defineTest({ 4 | repo: "stackblitz/starters", 5 | branch: "main", 6 | test: [ 7 | "test -- --project chromium", 8 | 9 | // firefox is flaky, run it without parallelism 10 | "test -- --project firefox --no-file-parallelism", 11 | ], 12 | beforeTest: 13 | "npx playwright install chromium firefox --with-deps --only-shell", 14 | }); 15 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import blitzPlugin from "@blitz/eslint-plugin"; 2 | import { jsFileExtensions } from "@blitz/eslint-plugin/dist/configs/javascript.js"; 3 | import { tsFileExtensions } from "@blitz/eslint-plugin/dist/configs/typescript.js"; 4 | 5 | export default [ 6 | { ignores: ["**/dist", "**/node_modules", ".cache", "workspace/**"] }, 7 | 8 | ...blitzPlugin.configs.recommended(), 9 | 10 | { 11 | files: [...tsFileExtensions, ...jsFileExtensions], 12 | }, 13 | ]; 14 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - main 10 | 11 | jobs: 12 | ci: 13 | timeout-minutes: 10 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v4 17 | 18 | - uses: actions/setup-node@v4 19 | 20 | - run: corepack enable 21 | 22 | - run: pnpm --version 23 | 24 | - name: install 25 | run: pnpm install --frozen-lockfile --prefer-offline 26 | 27 | - name: lint 28 | run: pnpm lint 29 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | import type { AGENTS } from "@antfu/ni"; 2 | 3 | export interface CommandOptions { 4 | release: string; 5 | } 6 | 7 | export type Task = string | (() => Promise); 8 | 9 | export interface RunOptions { 10 | workspace: string; 11 | root: string; 12 | release?: string; 13 | agent?: (typeof AGENTS)[number]; 14 | agentVersion?: string; 15 | build?: Task | Task[]; 16 | test?: Task | Task[]; 17 | beforeInstall?: Task | Task[]; 18 | beforeBuild?: Task | Task[]; 19 | beforeTest?: Task | Task[]; 20 | } 21 | 22 | export interface RepoOptions { 23 | repo: string; 24 | dir?: string; 25 | branch?: string; 26 | tag?: string; 27 | commit?: string; 28 | shallow?: boolean; 29 | overrides?: Overrides; 30 | } 31 | 32 | export interface Overrides { 33 | [key: string]: string | boolean; 34 | } 35 | -------------------------------------------------------------------------------- /.github/actions/ecosystem-run/action.yml: -------------------------------------------------------------------------------- 1 | name: Ecosystem Run 2 | description: Run ecosystem CI with specific test suite 3 | inputs: 4 | version: 5 | required: true 6 | description: "@webcontainer/api version to use" 7 | test-suite: 8 | required: true 9 | description: Test suite to run 10 | 11 | runs: 12 | using: composite 13 | 14 | steps: 15 | - uses: actions/setup-node@v4 16 | id: setup-node 17 | continue-on-error: true 18 | with: 19 | node-version: 20 20 | 21 | - run: corepack enable 22 | shell: bash 23 | 24 | - run: pnpm --version 25 | shell: bash 26 | 27 | - run: pnpm i --frozen-lockfile 28 | shell: bash 29 | 30 | - run: >- 31 | pnpm run test 32 | --release ${{ inputs.version }} 33 | ${{ inputs.test-suite }} 34 | id: ecosystem-ci-run 35 | shell: bash 36 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webcontainers-ecosystem-ci", 3 | "version": "0.0.1", 4 | "description": "WebContainers Ecosystem CI", 5 | "license": "MIT", 6 | "type": "module", 7 | "packageManager": "pnpm@10.4.1", 8 | "repository": { 9 | "type": "git", 10 | "url": "git+https://github.com/stackblitz/webcontainers-ecosystem-ci.git" 11 | }, 12 | "bugs": { 13 | "url": "https://github.com/stackblitz/webcontainers-ecosystem-ci/issues" 14 | }, 15 | "homepage": "https://github.com/stackblitz/webcontainers-ecosystem-ci#readme", 16 | "scripts": { 17 | "tsx": "tsx", 18 | "test": "tsx src/index.ts", 19 | "lint": "eslint --cache --cache-location ./node_modules/.cache/eslint ." 20 | }, 21 | "dependencies": { 22 | "@actions/core": "^1.11.1", 23 | "@antfu/ni": "^24.3.0", 24 | "cac": "^6.7.14", 25 | "tinyexec": "^1.0.1" 26 | }, 27 | "devDependencies": { 28 | "@blitz/eslint-plugin": "^0.1.4", 29 | "@types/node": "^22.15.3", 30 | "eslint": "^9.26.0", 31 | "prettier": "^3.5.3", 32 | "tsx": "^4.19.3", 33 | "typescript": "^5.8.3" 34 | }, 35 | "prettier": {} 36 | } 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 StackBlitz 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 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { readdir } from "node:fs/promises"; 2 | import { resolve } from "node:path"; 3 | import { cac } from "cac"; 4 | 5 | import { CommandOptions } from "./types"; 6 | import { setupEnvironment } from "./utils"; 7 | 8 | const cli = cac(); 9 | cli 10 | .command("[...suites]", "run selected suites") 11 | .option( 12 | "--release ", 13 | "@webcontainer/api release to use from npm registry", 14 | ) 15 | .action(async (suites: string[], options: CommandOptions) => { 16 | await assertSuites(suites); 17 | 18 | const { root, workspace } = await setupEnvironment(); 19 | 20 | for (const suite of suites) { 21 | const { default: test } = (await import( 22 | `../tests/${suite}.ts` 23 | )) as typeof import("../tests/starters"); 24 | 25 | await test({ 26 | root, 27 | release: options.release, 28 | workspace: resolve(workspace, suite), 29 | }); 30 | } 31 | }); 32 | 33 | cli.parse(); 34 | 35 | async function assertSuites(suites: string[]) { 36 | const directory = resolve(import.meta.dirname, "../tests"); 37 | const tests = await readdir(directory); 38 | 39 | for (const suite of suites) { 40 | if (!tests.includes(`${suite}.ts`)) { 41 | throw new Error(`"${suite}" does not exist in ${directory}`); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![webcontainer-ecosystem-ci](https://github.com/stackblitz/webcontainer-ecosystem-ci/actions/workflows/ecosystem-ci.yml/badge.svg?event=schedule)](https://github.com/stackblitz/webcontainer-ecosystem-ci/actions/workflows/ecosystem-ci.yml?query=event%3Aschedule) 2 | 3 | # webcontainer-ecosystem-ci 4 | 5 | This repository is used to run tests for WebContainer ecosystem projects. 6 | 7 | ## GitHub workflow 8 | 9 | ### Scheduled 10 | 11 | Workflows are scheduled to run automatically every Monday, Wednesday and Friday. 12 | 13 | ### Manually 14 | 15 | - Open [workflow](../../actions/workflows/ecosystem-ci.yml) 16 | - Click the 'Run workflow' button at the top right of the list 17 | - Select the suite to run in the dropdown 18 | - Start the workflow 19 | 20 | ### Shell script 21 | 22 | - Clone this repo 23 | - Run `pnpm i` 24 | - Run `pnpm test` to execute all suites 25 | - Or `pnpm test ` to select a specific suite 26 | - Or `tsx ecosystem-ci.ts` 27 | 28 | You can pass `--release ` to select a specific `@webcontainer/api` version to use. 29 | 30 | The repositories are checked out into the `workspace` subdirectory as shallow clones. 31 | 32 | ## How to add a new integration test 33 | 34 | - Check out the existing [tests](./tests) and add one yourself. Thanks to some utilities, it is really easy 35 | - Once you are confidente the suite works, add it to the lists of suites in the [workflows](../../actions/) 36 | 37 | ## Credits 38 | 39 | This project is inspired by and based on: 40 | 41 | - https://github.com/vitest-dev/vitest-ecosystem-ci 42 | - https://github.com/vitejs/vite-ecosystem-ci 43 | -------------------------------------------------------------------------------- /.github/workflows/ecosystem-ci.yml: -------------------------------------------------------------------------------- 1 | # integration tests for webcontainer ecosystem projects - scheduled or manual run for all suites 2 | name: webcontainer-ecosystem-ci 3 | 4 | env: 5 | # 7 GiB by default on GitHub, setting to 6 GiB 6 | # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources 7 | NODE_OPTIONS: --max-old-space-size=6144 8 | 9 | on: 10 | schedule: 11 | - cron: "0 5 * * 1,3,5" # monday,wednesday,friday 5AM 12 | workflow_dispatch: 13 | inputs: 14 | version: 15 | description: "@webcontainer/api version to use" 16 | required: true 17 | type: string 18 | default: "latest" 19 | suite: 20 | description: "testsuite to run" 21 | type: choice 22 | default: "all" 23 | options: 24 | - all 25 | - starters 26 | - tutorialkit 27 | - vitest-in-webcontainer 28 | - webcontainer-test 29 | 30 | jobs: 31 | test-ecosystem: 32 | if: inputs.suite == 'all' || github.event_name == 'schedule' 33 | timeout-minutes: 60 34 | runs-on: ubuntu-latest 35 | strategy: 36 | fail-fast: false 37 | matrix: 38 | suite: 39 | - starters 40 | - tutorialkit 41 | - vitest-in-webcontainer 42 | - webcontainer-test 43 | steps: 44 | - uses: actions/checkout@v4 45 | 46 | - name: Run ${{ matrix.suite }} 47 | uses: ./.github/actions/ecosystem-run 48 | with: 49 | test-suite: ${{ matrix.suite }} 50 | version: ${{ inputs.version || github.event.client_payload.version || 'latest' }} 51 | 52 | test-ecosystem-selected: 53 | if: inputs.suite != 'all' && github.event_name == 'workflow_dispatch' 54 | timeout-minutes: 60 55 | runs-on: ubuntu-latest 56 | steps: 57 | - uses: actions/checkout@v4 58 | 59 | - name: Run ${{ inputs.suite }} 60 | uses: ./.github/actions/ecosystem-run 61 | with: 62 | test-suite: ${{ inputs.suite }} 63 | version: ${{ inputs.version || github.event.client_payload.version }} 64 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import { existsSync, lstatSync, rmSync } from "node:fs"; 2 | import { mkdir, readFile, writeFile } from "node:fs/promises"; 3 | import { join, resolve } from "node:path"; 4 | import actionsCore from "@actions/core"; 5 | import { detect, AGENTS, getCommand } from "@antfu/ni"; 6 | import { x } from "tinyexec"; 7 | 8 | import { Overrides, RepoOptions, RunOptions, Task } from "./types"; 9 | 10 | const isGitHubActions = !!process.env.GITHUB_ACTIONS; 11 | 12 | let cwd = process.cwd(); 13 | let env = process.env; 14 | 15 | function cd(dir: string) { 16 | cwd = resolve(cwd, dir); 17 | } 18 | 19 | export async function runInRepo(options: RunOptions & RepoOptions) { 20 | const { 21 | build, 22 | test, 23 | repo, 24 | branch, 25 | tag, 26 | commit, 27 | beforeInstall, 28 | beforeBuild, 29 | beforeTest, 30 | } = options; 31 | 32 | const dir = resolve( 33 | options.workspace, 34 | options.dir || repo.substring(repo.lastIndexOf("/") + 1), 35 | ); 36 | 37 | const overrides = options.overrides || {}; 38 | 39 | if (options.release) { 40 | overrides["@webcontainer/api"] = options.release; 41 | } 42 | 43 | await setupRepo({ repo, dir, branch, tag, commit }); 44 | 45 | if (options.agent == null) { 46 | const detectedAgent = await detect({ cwd: dir, autoInstall: false }); 47 | 48 | if (detectedAgent == null) { 49 | throw new Error(`Failed to detect packagemanager in ${dir}`); 50 | } 51 | 52 | options.agent = detectedAgent; 53 | } 54 | 55 | if (!AGENTS.includes(options.agent)) { 56 | throw new Error( 57 | `Invalid agent ${options.agent}. Allowed values: ${Object.values( 58 | AGENTS, 59 | ).join(", ")}`, 60 | ); 61 | } 62 | 63 | const agent = options.agent; 64 | const beforeInstallCommand = toCommand(beforeInstall, agent); 65 | const beforeBuildCommand = toCommand(beforeBuild, agent); 66 | const beforeTestCommand = toCommand(beforeTest, agent); 67 | const buildCommand = toCommand(build, agent); 68 | const testCommand = toCommand(test, agent); 69 | 70 | const pkgFile = join(dir, "package.json"); 71 | const pkg = JSON.parse(await readFile(pkgFile, "utf-8")); 72 | 73 | await beforeInstallCommand?.(pkg.scripts); 74 | 75 | await applyPackageOverrides(dir, pkg, overrides, options); 76 | await beforeBuildCommand?.(pkg.scripts); 77 | await buildCommand?.(pkg.scripts); 78 | 79 | if (test) { 80 | await beforeTestCommand?.(pkg.scripts); 81 | await testCommand?.(pkg.scripts); 82 | } 83 | 84 | return { dir }; 85 | } 86 | 87 | async function setupRepo(options: RepoOptions) { 88 | if (options.branch == null) { 89 | options.branch = "main"; 90 | } 91 | 92 | if (options.shallow == null) { 93 | options.shallow = true; 94 | } 95 | 96 | const { dir, shallow, tag, branch, commit } = options; 97 | 98 | let { repo } = options; 99 | 100 | if (!dir) { 101 | throw new Error("setupRepo must be called with options.dir"); 102 | } 103 | 104 | if (!repo.includes(":")) { 105 | repo = `https://github.com/${repo}.git`; 106 | } 107 | 108 | let needClone = true; 109 | 110 | if (existsSync(dir)) { 111 | const _cwd = cwd; 112 | cd(dir); 113 | 114 | let currentClonedRepo: string | undefined; 115 | 116 | try { 117 | currentClonedRepo = await $`git ls-remote --get-url`; 118 | } catch { 119 | // when not a git repo 120 | } 121 | cd(_cwd); 122 | 123 | if (repo === currentClonedRepo) { 124 | needClone = false; 125 | } else { 126 | rmSync(dir, { recursive: true, force: true }); 127 | } 128 | } 129 | 130 | if (needClone) { 131 | await $`git -c advice.detachedHead=false clone ${ 132 | shallow ? "--depth=1 --no-tags" : "" 133 | } --branch ${tag || branch} ${repo} ${dir}`; 134 | } 135 | 136 | cd(dir); 137 | await $`git clean -fdxq`; 138 | await $`git fetch ${shallow ? "--depth=1 --no-tags" : "--tags"} origin ${ 139 | tag ? `tag ${tag}` : `${commit || branch}` 140 | }`; 141 | 142 | if (shallow) { 143 | await $`git -c advice.detachedHead=false checkout ${ 144 | tag ? `tags/${tag}` : `${commit || branch}` 145 | }`; 146 | } else { 147 | await $`git checkout ${branch}`; 148 | await $`git merge FETCH_HEAD`; 149 | 150 | if (tag || commit) { 151 | await $`git reset --hard ${tag || commit}`; 152 | } 153 | } 154 | } 155 | 156 | export async function $(literals: TemplateStringsArray, ...values: any[]) { 157 | const fullCmd = literals.reduce( 158 | (result, current, i) => 159 | result + current + (values?.[i] != null ? `${values[i]}` : ""), 160 | "", 161 | ); 162 | 163 | const [cmd, ...options] = fullCmd.split(" "); 164 | 165 | if (isGitHubActions) { 166 | actionsCore.startGroup(`${cwd} $> ${fullCmd}`); 167 | } else { 168 | console.log(`${cwd} $> ${fullCmd}`); 169 | } 170 | 171 | const proc = x(cmd, options, { 172 | nodeOptions: { 173 | env, 174 | stdio: "pipe", 175 | cwd, 176 | }, 177 | }); 178 | 179 | if (proc.process?.stdin) { 180 | process.stdin.pipe(proc.process.stdin); 181 | } 182 | 183 | proc.process?.stdout?.pipe(process.stdout); 184 | proc.process?.stderr?.pipe(process.stderr); 185 | 186 | const result = await proc; 187 | 188 | if (isGitHubActions) { 189 | actionsCore.endGroup(); 190 | } 191 | 192 | return result.stdout; 193 | } 194 | 195 | export async function setupEnvironment() { 196 | const root = import.meta.dirname; 197 | const workspace = resolve(root, "workspace"); 198 | 199 | const cwd = process.cwd(); 200 | env = { 201 | ...process.env, 202 | CI: "true", 203 | NODE_OPTIONS: "--max-old-space-size=6144", // GITHUB CI has 7GB max, stay below 204 | ECOSYSTEM_CI: "true", // flag for tests, can be used to conditionally skip irrelevant tests 205 | }; 206 | 207 | if (!existsSync(workspace)) { 208 | await mkdir(workspace, { recursive: true }); 209 | } 210 | 211 | return { root, workspace, cwd }; 212 | } 213 | 214 | function toCommand( 215 | task: Task | Task[] | void, 216 | agent: NonNullable, 217 | ): ((scripts: any) => Promise) | void { 218 | return async (scripts: any) => { 219 | const tasks = Array.isArray(task) ? task : [task]; 220 | 221 | for (const task of tasks) { 222 | if (task == null || task === "") { 223 | continue; 224 | } 225 | 226 | if (typeof task === "string") { 227 | const scriptOrBin = task.trim().split(/\s+/)[0]; 228 | 229 | if (scripts?.[scriptOrBin] != null) { 230 | const runTaskWithAgent = getCommand(agent, "run", [task]); 231 | 232 | await $`${runTaskWithAgent.command} ${runTaskWithAgent.args.join( 233 | " ", 234 | )}`; 235 | } else { 236 | await $`${task}`; 237 | } 238 | } else if (typeof task === "function") { 239 | await task(); 240 | } else { 241 | throw new Error( 242 | `invalid task, expected string or function but got ${typeof task}: ${task}`, 243 | ); 244 | } 245 | } 246 | }; 247 | } 248 | 249 | export async function applyPackageOverrides( 250 | dir: string, 251 | pkg: any, 252 | overrides: Overrides = {}, 253 | options: RunOptions & RepoOptions, 254 | ) { 255 | const useFileProtocol = (v: string) => 256 | isLocalOverride(v) ? `file:${resolve(v)}` : v; 257 | 258 | // remove boolean flags 259 | overrides = Object.fromEntries( 260 | Object.entries(overrides) 261 | .filter(([_, value]) => typeof value === "string") 262 | .map(([key, value]) => [key, useFileProtocol(value as string)]), 263 | ); 264 | await $`git clean -fdxq`; // remove current install 265 | 266 | const agent = await detect({ cwd: dir, autoInstall: false }); 267 | 268 | if (!agent) { 269 | throw new Error(`failed to detect packageManager in ${dir}`); 270 | } 271 | 272 | /** 273 | * Remove version from agent string: 274 | * yarn@berry => yarn 275 | * pnpm@6, pnpm@7 => pnpm 276 | * . 277 | */ 278 | const pm = agent?.split("@")[0]; 279 | 280 | await overridePackageManagerVersion(pkg, pm, options.agentVersion); 281 | 282 | if (pm === "pnpm") { 283 | pkg.devDependencies ||= {}; 284 | pkg.devDependencies = { 285 | ...pkg.devDependencies, 286 | ...overrides, // overrides must be present in devDependencies or dependencies otherwise they may not work 287 | }; 288 | 289 | pkg.pnpm ||= {}; 290 | pkg.pnpm.overrides = { 291 | ...pkg.pnpm.overrides, 292 | ...overrides, 293 | }; 294 | } else if (pm === "yarn") { 295 | pkg.resolutions = { 296 | ...pkg.resolutions, 297 | ...overrides, 298 | }; 299 | } else if (pm === "npm") { 300 | pkg.overrides = { 301 | ...pkg.overrides, 302 | ...overrides, 303 | }; 304 | 305 | // npm does not allow overriding direct dependencies, force it by updating the blocks themselves 306 | for (const [name, version] of Object.entries(overrides)) { 307 | if (pkg.dependencies?.[name]) { 308 | pkg.dependencies[name] = version; 309 | } 310 | 311 | if (pkg.devDependencies?.[name]) { 312 | pkg.devDependencies[name] = version; 313 | } 314 | } 315 | } else { 316 | throw new Error(`unsupported package manager detected: ${pm}`); 317 | } 318 | 319 | const pkgFile = join(dir, "package.json"); 320 | await writeFile(pkgFile, JSON.stringify(pkg, null, 2), "utf-8"); 321 | 322 | // use of `ni` command here could cause lockfile violation errors so fall back to native commands that avoid these 323 | if (pm === "pnpm") { 324 | await $`pnpm install --prefer-frozen-lockfile --prefer-offline --strict-peer-dependencies false`; 325 | } else if (pm === "yarn") { 326 | await $`yarn install`; 327 | } else if (pm === "npm") { 328 | await $`npm install`; 329 | } else { 330 | throw new Error(`Unable to resolve install command for ${pm}`); 331 | } 332 | } 333 | 334 | function isLocalOverride(v: string): boolean { 335 | if (!v.includes("/") || v.startsWith("@")) { 336 | // not path-like (either a version number or a package name) 337 | return false; 338 | } 339 | 340 | try { 341 | return !!lstatSync(v)?.isDirectory(); 342 | } catch (error) { 343 | if (error.code !== "ENOENT") { 344 | throw error; 345 | } 346 | 347 | return false; 348 | } 349 | } 350 | 351 | /** 352 | * Utility to override packageManager version. 353 | * 354 | * @param pkg parsed package.json 355 | * @param pm package manager to override eg. `pnpm` 356 | * @returns {boolean} true if pkg was updated, caller is responsible for writing it to disk 357 | */ 358 | async function overridePackageManagerVersion( 359 | pkg: { [key: string]: any }, 360 | pm: string, 361 | agentVersion?: string, 362 | ): Promise { 363 | const overrideWithVersion: string | undefined = agentVersion; 364 | 365 | if (overrideWithVersion) { 366 | console.warn( 367 | `Changing pkg.packageManager and pkg.engines.${pm} to enforce use of ${pm}@${overrideWithVersion}`, 368 | ); 369 | 370 | // corepack reads this and uses pnpm @ newVersion then 371 | pkg.packageManager = `${pm}@${overrideWithVersion}`; 372 | 373 | if (!pkg.engines) { 374 | pkg.engines = {}; 375 | } 376 | 377 | pkg.engines[pm] = overrideWithVersion; 378 | 379 | if (pkg.devDependencies?.[pm]) { 380 | /** 381 | * If for some reason the pm is in devDependencies, that would be a local version that'd be preferred over our forced global 382 | * so ensure it here too. 383 | */ 384 | pkg.devDependencies[pm] = overrideWithVersion; 385 | } 386 | 387 | return true; 388 | } 389 | 390 | return false; 391 | } 392 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@actions/core': 12 | specifier: ^1.11.1 13 | version: 1.11.1 14 | '@antfu/ni': 15 | specifier: ^24.3.0 16 | version: 24.3.0 17 | cac: 18 | specifier: ^6.7.14 19 | version: 6.7.14 20 | tinyexec: 21 | specifier: ^1.0.1 22 | version: 1.0.1 23 | devDependencies: 24 | '@blitz/eslint-plugin': 25 | specifier: ^0.1.4 26 | version: 0.1.4(prettier@3.5.3)(typescript@5.8.3) 27 | '@types/node': 28 | specifier: ^22.15.3 29 | version: 22.15.3 30 | eslint: 31 | specifier: ^9.26.0 32 | version: 9.26.0 33 | prettier: 34 | specifier: ^3.5.3 35 | version: 3.5.3 36 | tsx: 37 | specifier: ^4.19.3 38 | version: 4.19.3 39 | typescript: 40 | specifier: ^5.8.3 41 | version: 5.8.3 42 | 43 | packages: 44 | 45 | '@actions/core@1.11.1': 46 | resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} 47 | 48 | '@actions/exec@1.1.1': 49 | resolution: {integrity: sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==} 50 | 51 | '@actions/http-client@2.2.3': 52 | resolution: {integrity: sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==} 53 | 54 | '@actions/io@1.1.3': 55 | resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} 56 | 57 | '@antfu/ni@24.3.0': 58 | resolution: {integrity: sha512-wBSav4mBxvHEW9RbdSo1SWLQ6MAlT0Dc423weC58yOWqW4OcMvtnNDdDrxOZeJ88fEIyPK93gDUWIelBxzSf8g==} 59 | hasBin: true 60 | 61 | '@babel/code-frame@7.27.1': 62 | resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 63 | engines: {node: '>=6.9.0'} 64 | 65 | '@babel/helper-validator-identifier@7.27.1': 66 | resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 67 | engines: {node: '>=6.9.0'} 68 | 69 | '@blitz/eslint-plugin@0.1.4': 70 | resolution: {integrity: sha512-0E+XnXdrya+OvKj6nYg4ioHndLlEEntrRqsje7Bc1c7bSejzNp8sE/kGd0tD+fYQAQZapZPqT3/s8R6fGzq4Zg==} 71 | engines: {node: ^18.0.0 || ^20.0.0} 72 | 73 | '@esbuild/aix-ppc64@0.25.3': 74 | resolution: {integrity: sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==} 75 | engines: {node: '>=18'} 76 | cpu: [ppc64] 77 | os: [aix] 78 | 79 | '@esbuild/android-arm64@0.25.3': 80 | resolution: {integrity: sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==} 81 | engines: {node: '>=18'} 82 | cpu: [arm64] 83 | os: [android] 84 | 85 | '@esbuild/android-arm@0.25.3': 86 | resolution: {integrity: sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==} 87 | engines: {node: '>=18'} 88 | cpu: [arm] 89 | os: [android] 90 | 91 | '@esbuild/android-x64@0.25.3': 92 | resolution: {integrity: sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==} 93 | engines: {node: '>=18'} 94 | cpu: [x64] 95 | os: [android] 96 | 97 | '@esbuild/darwin-arm64@0.25.3': 98 | resolution: {integrity: sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==} 99 | engines: {node: '>=18'} 100 | cpu: [arm64] 101 | os: [darwin] 102 | 103 | '@esbuild/darwin-x64@0.25.3': 104 | resolution: {integrity: sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==} 105 | engines: {node: '>=18'} 106 | cpu: [x64] 107 | os: [darwin] 108 | 109 | '@esbuild/freebsd-arm64@0.25.3': 110 | resolution: {integrity: sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==} 111 | engines: {node: '>=18'} 112 | cpu: [arm64] 113 | os: [freebsd] 114 | 115 | '@esbuild/freebsd-x64@0.25.3': 116 | resolution: {integrity: sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==} 117 | engines: {node: '>=18'} 118 | cpu: [x64] 119 | os: [freebsd] 120 | 121 | '@esbuild/linux-arm64@0.25.3': 122 | resolution: {integrity: sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==} 123 | engines: {node: '>=18'} 124 | cpu: [arm64] 125 | os: [linux] 126 | 127 | '@esbuild/linux-arm@0.25.3': 128 | resolution: {integrity: sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==} 129 | engines: {node: '>=18'} 130 | cpu: [arm] 131 | os: [linux] 132 | 133 | '@esbuild/linux-ia32@0.25.3': 134 | resolution: {integrity: sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==} 135 | engines: {node: '>=18'} 136 | cpu: [ia32] 137 | os: [linux] 138 | 139 | '@esbuild/linux-loong64@0.25.3': 140 | resolution: {integrity: sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==} 141 | engines: {node: '>=18'} 142 | cpu: [loong64] 143 | os: [linux] 144 | 145 | '@esbuild/linux-mips64el@0.25.3': 146 | resolution: {integrity: sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==} 147 | engines: {node: '>=18'} 148 | cpu: [mips64el] 149 | os: [linux] 150 | 151 | '@esbuild/linux-ppc64@0.25.3': 152 | resolution: {integrity: sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==} 153 | engines: {node: '>=18'} 154 | cpu: [ppc64] 155 | os: [linux] 156 | 157 | '@esbuild/linux-riscv64@0.25.3': 158 | resolution: {integrity: sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==} 159 | engines: {node: '>=18'} 160 | cpu: [riscv64] 161 | os: [linux] 162 | 163 | '@esbuild/linux-s390x@0.25.3': 164 | resolution: {integrity: sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==} 165 | engines: {node: '>=18'} 166 | cpu: [s390x] 167 | os: [linux] 168 | 169 | '@esbuild/linux-x64@0.25.3': 170 | resolution: {integrity: sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==} 171 | engines: {node: '>=18'} 172 | cpu: [x64] 173 | os: [linux] 174 | 175 | '@esbuild/netbsd-arm64@0.25.3': 176 | resolution: {integrity: sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==} 177 | engines: {node: '>=18'} 178 | cpu: [arm64] 179 | os: [netbsd] 180 | 181 | '@esbuild/netbsd-x64@0.25.3': 182 | resolution: {integrity: sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==} 183 | engines: {node: '>=18'} 184 | cpu: [x64] 185 | os: [netbsd] 186 | 187 | '@esbuild/openbsd-arm64@0.25.3': 188 | resolution: {integrity: sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==} 189 | engines: {node: '>=18'} 190 | cpu: [arm64] 191 | os: [openbsd] 192 | 193 | '@esbuild/openbsd-x64@0.25.3': 194 | resolution: {integrity: sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==} 195 | engines: {node: '>=18'} 196 | cpu: [x64] 197 | os: [openbsd] 198 | 199 | '@esbuild/sunos-x64@0.25.3': 200 | resolution: {integrity: sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==} 201 | engines: {node: '>=18'} 202 | cpu: [x64] 203 | os: [sunos] 204 | 205 | '@esbuild/win32-arm64@0.25.3': 206 | resolution: {integrity: sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==} 207 | engines: {node: '>=18'} 208 | cpu: [arm64] 209 | os: [win32] 210 | 211 | '@esbuild/win32-ia32@0.25.3': 212 | resolution: {integrity: sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==} 213 | engines: {node: '>=18'} 214 | cpu: [ia32] 215 | os: [win32] 216 | 217 | '@esbuild/win32-x64@0.25.3': 218 | resolution: {integrity: sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==} 219 | engines: {node: '>=18'} 220 | cpu: [x64] 221 | os: [win32] 222 | 223 | '@eslint-community/eslint-utils@4.7.0': 224 | resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 225 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 226 | peerDependencies: 227 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 228 | 229 | '@eslint-community/regexpp@4.12.1': 230 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 231 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 232 | 233 | '@eslint/config-array@0.20.0': 234 | resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} 235 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 236 | 237 | '@eslint/config-helpers@0.2.2': 238 | resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} 239 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 240 | 241 | '@eslint/core@0.13.0': 242 | resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} 243 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 244 | 245 | '@eslint/eslintrc@3.3.1': 246 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 247 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 248 | 249 | '@eslint/js@9.26.0': 250 | resolution: {integrity: sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==} 251 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 252 | 253 | '@eslint/object-schema@2.1.6': 254 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 255 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 256 | 257 | '@eslint/plugin-kit@0.2.8': 258 | resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} 259 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 260 | 261 | '@fastify/busboy@2.1.1': 262 | resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} 263 | engines: {node: '>=14'} 264 | 265 | '@humanfs/core@0.19.1': 266 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 267 | engines: {node: '>=18.18.0'} 268 | 269 | '@humanfs/node@0.16.6': 270 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 271 | engines: {node: '>=18.18.0'} 272 | 273 | '@humanwhocodes/module-importer@1.0.1': 274 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 275 | engines: {node: '>=12.22'} 276 | 277 | '@humanwhocodes/retry@0.3.1': 278 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 279 | engines: {node: '>=18.18'} 280 | 281 | '@humanwhocodes/retry@0.4.2': 282 | resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} 283 | engines: {node: '>=18.18'} 284 | 285 | '@modelcontextprotocol/sdk@1.11.0': 286 | resolution: {integrity: sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==} 287 | engines: {node: '>=18'} 288 | 289 | '@nodelib/fs.scandir@2.1.5': 290 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 291 | engines: {node: '>= 8'} 292 | 293 | '@nodelib/fs.stat@2.0.5': 294 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 295 | engines: {node: '>= 8'} 296 | 297 | '@nodelib/fs.walk@1.2.8': 298 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 299 | engines: {node: '>= 8'} 300 | 301 | '@pkgr/core@0.2.4': 302 | resolution: {integrity: sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==} 303 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 304 | 305 | '@stylistic/eslint-plugin-ts@2.13.0': 306 | resolution: {integrity: sha512-nooe1oTwz60T4wQhZ+5u0/GAu3ygkKF9vPPZeRn/meG71ntQ0EZXVOKEonluAYl/+CV2T+nN0dknHa4evAW13Q==} 307 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 308 | peerDependencies: 309 | eslint: '>=8.40.0' 310 | 311 | '@types/estree@1.0.7': 312 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 313 | 314 | '@types/json-schema@7.0.15': 315 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 316 | 317 | '@types/node@22.15.3': 318 | resolution: {integrity: sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==} 319 | 320 | '@types/normalize-package-data@2.4.4': 321 | resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} 322 | 323 | '@typescript-eslint/eslint-plugin@8.31.1': 324 | resolution: {integrity: sha512-oUlH4h1ABavI4F0Xnl8/fOtML/eu8nI2A1nYd+f+55XI0BLu+RIqKoCiZKNo6DtqZBEQm5aNKA20G3Z5w3R6GQ==} 325 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 326 | peerDependencies: 327 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 328 | eslint: ^8.57.0 || ^9.0.0 329 | typescript: '>=4.8.4 <5.9.0' 330 | 331 | '@typescript-eslint/parser@8.31.1': 332 | resolution: {integrity: sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==} 333 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 334 | peerDependencies: 335 | eslint: ^8.57.0 || ^9.0.0 336 | typescript: '>=4.8.4 <5.9.0' 337 | 338 | '@typescript-eslint/scope-manager@7.18.0': 339 | resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} 340 | engines: {node: ^18.18.0 || >=20.0.0} 341 | 342 | '@typescript-eslint/scope-manager@8.31.1': 343 | resolution: {integrity: sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==} 344 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 345 | 346 | '@typescript-eslint/type-utils@8.31.1': 347 | resolution: {integrity: sha512-fNaT/m9n0+dpSp8G/iOQ05GoHYXbxw81x+yvr7TArTuZuCA6VVKbqWYVZrV5dVagpDTtj/O8k5HBEE/p/HM5LA==} 348 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 349 | peerDependencies: 350 | eslint: ^8.57.0 || ^9.0.0 351 | typescript: '>=4.8.4 <5.9.0' 352 | 353 | '@typescript-eslint/types@7.18.0': 354 | resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} 355 | engines: {node: ^18.18.0 || >=20.0.0} 356 | 357 | '@typescript-eslint/types@8.31.1': 358 | resolution: {integrity: sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==} 359 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 360 | 361 | '@typescript-eslint/typescript-estree@7.18.0': 362 | resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} 363 | engines: {node: ^18.18.0 || >=20.0.0} 364 | peerDependencies: 365 | typescript: '*' 366 | peerDependenciesMeta: 367 | typescript: 368 | optional: true 369 | 370 | '@typescript-eslint/typescript-estree@8.31.1': 371 | resolution: {integrity: sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==} 372 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 373 | peerDependencies: 374 | typescript: '>=4.8.4 <5.9.0' 375 | 376 | '@typescript-eslint/utils@7.18.0': 377 | resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} 378 | engines: {node: ^18.18.0 || >=20.0.0} 379 | peerDependencies: 380 | eslint: ^8.56.0 381 | 382 | '@typescript-eslint/utils@8.31.1': 383 | resolution: {integrity: sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==} 384 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 385 | peerDependencies: 386 | eslint: ^8.57.0 || ^9.0.0 387 | typescript: '>=4.8.4 <5.9.0' 388 | 389 | '@typescript-eslint/visitor-keys@7.18.0': 390 | resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} 391 | engines: {node: ^18.18.0 || >=20.0.0} 392 | 393 | '@typescript-eslint/visitor-keys@8.31.1': 394 | resolution: {integrity: sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==} 395 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 396 | 397 | accepts@2.0.0: 398 | resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} 399 | engines: {node: '>= 0.6'} 400 | 401 | acorn-jsx@5.3.2: 402 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 403 | peerDependencies: 404 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 405 | 406 | acorn@8.14.1: 407 | resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 408 | engines: {node: '>=0.4.0'} 409 | hasBin: true 410 | 411 | ajv@6.12.6: 412 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 413 | 414 | ansi-styles@4.3.0: 415 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 416 | engines: {node: '>=8'} 417 | 418 | ansis@3.17.0: 419 | resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} 420 | engines: {node: '>=14'} 421 | 422 | argparse@2.0.1: 423 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 424 | 425 | array-union@2.1.0: 426 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 427 | engines: {node: '>=8'} 428 | 429 | balanced-match@1.0.2: 430 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 431 | 432 | body-parser@2.2.0: 433 | resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} 434 | engines: {node: '>=18'} 435 | 436 | brace-expansion@1.1.11: 437 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 438 | 439 | brace-expansion@2.0.1: 440 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 441 | 442 | braces@3.0.3: 443 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 444 | engines: {node: '>=8'} 445 | 446 | browserslist@4.24.5: 447 | resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} 448 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 449 | hasBin: true 450 | 451 | builtin-modules@3.3.0: 452 | resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} 453 | engines: {node: '>=6'} 454 | 455 | bytes@3.1.2: 456 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 457 | engines: {node: '>= 0.8'} 458 | 459 | cac@6.7.14: 460 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 461 | engines: {node: '>=8'} 462 | 463 | call-bind-apply-helpers@1.0.2: 464 | resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 465 | engines: {node: '>= 0.4'} 466 | 467 | call-bound@1.0.4: 468 | resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} 469 | engines: {node: '>= 0.4'} 470 | 471 | callsites@3.1.0: 472 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 473 | engines: {node: '>=6'} 474 | 475 | caniuse-lite@1.0.30001717: 476 | resolution: {integrity: sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==} 477 | 478 | chalk@4.1.2: 479 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 480 | engines: {node: '>=10'} 481 | 482 | ci-info@4.2.0: 483 | resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} 484 | engines: {node: '>=8'} 485 | 486 | clean-regexp@1.0.0: 487 | resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} 488 | engines: {node: '>=4'} 489 | 490 | color-convert@2.0.1: 491 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 492 | engines: {node: '>=7.0.0'} 493 | 494 | color-name@1.1.4: 495 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 496 | 497 | common-tags@1.8.2: 498 | resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} 499 | engines: {node: '>=4.0.0'} 500 | 501 | concat-map@0.0.1: 502 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 503 | 504 | content-disposition@1.0.0: 505 | resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} 506 | engines: {node: '>= 0.6'} 507 | 508 | content-type@1.0.5: 509 | resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 510 | engines: {node: '>= 0.6'} 511 | 512 | cookie-signature@1.2.2: 513 | resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} 514 | engines: {node: '>=6.6.0'} 515 | 516 | cookie@0.7.2: 517 | resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} 518 | engines: {node: '>= 0.6'} 519 | 520 | core-js-compat@3.42.0: 521 | resolution: {integrity: sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==} 522 | 523 | cors@2.8.5: 524 | resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} 525 | engines: {node: '>= 0.10'} 526 | 527 | cross-spawn@7.0.6: 528 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 529 | engines: {node: '>= 8'} 530 | 531 | debug@3.2.7: 532 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 533 | peerDependencies: 534 | supports-color: '*' 535 | peerDependenciesMeta: 536 | supports-color: 537 | optional: true 538 | 539 | debug@4.4.0: 540 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 541 | engines: {node: '>=6.0'} 542 | peerDependencies: 543 | supports-color: '*' 544 | peerDependenciesMeta: 545 | supports-color: 546 | optional: true 547 | 548 | deep-is@0.1.4: 549 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 550 | 551 | depd@2.0.0: 552 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 553 | engines: {node: '>= 0.8'} 554 | 555 | dir-glob@3.0.1: 556 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 557 | engines: {node: '>=8'} 558 | 559 | doctrine@3.0.0: 560 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 561 | engines: {node: '>=6.0.0'} 562 | 563 | dunder-proto@1.0.1: 564 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 565 | engines: {node: '>= 0.4'} 566 | 567 | ee-first@1.1.1: 568 | resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 569 | 570 | electron-to-chromium@1.5.149: 571 | resolution: {integrity: sha512-UyiO82eb9dVOx8YO3ajDf9jz2kKyt98DEITRdeLPstOEuTlLzDA4Gyq5K9he71TQziU5jUVu2OAu5N48HmQiyQ==} 572 | 573 | encodeurl@2.0.0: 574 | resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} 575 | engines: {node: '>= 0.8'} 576 | 577 | error-ex@1.3.2: 578 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 579 | 580 | es-define-property@1.0.1: 581 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 582 | engines: {node: '>= 0.4'} 583 | 584 | es-errors@1.3.0: 585 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 586 | engines: {node: '>= 0.4'} 587 | 588 | es-object-atoms@1.1.1: 589 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 590 | engines: {node: '>= 0.4'} 591 | 592 | esbuild@0.25.3: 593 | resolution: {integrity: sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==} 594 | engines: {node: '>=18'} 595 | hasBin: true 596 | 597 | escalade@3.2.0: 598 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 599 | engines: {node: '>=6'} 600 | 601 | escape-html@1.0.3: 602 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 603 | 604 | escape-string-regexp@1.0.5: 605 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 606 | engines: {node: '>=0.8.0'} 607 | 608 | escape-string-regexp@4.0.0: 609 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 610 | engines: {node: '>=10'} 611 | 612 | eslint-compat-utils@0.6.5: 613 | resolution: {integrity: sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==} 614 | engines: {node: '>=12'} 615 | peerDependencies: 616 | eslint: '>=6.0.0' 617 | 618 | eslint-config-prettier@9.1.0: 619 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} 620 | hasBin: true 621 | peerDependencies: 622 | eslint: '>=7.0.0' 623 | 624 | eslint-import-resolver-node@0.3.9: 625 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 626 | 627 | eslint-json-compat-utils@0.2.1: 628 | resolution: {integrity: sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==} 629 | engines: {node: '>=12'} 630 | peerDependencies: 631 | '@eslint/json': '*' 632 | eslint: '*' 633 | jsonc-eslint-parser: ^2.4.0 634 | peerDependenciesMeta: 635 | '@eslint/json': 636 | optional: true 637 | 638 | eslint-plugin-import-x@3.1.0: 639 | resolution: {integrity: sha512-/UbPA+bYY7nIxcjL3kpcDY3UNdoLHFhyBFzHox2M0ypcUoueTn6woZUUmzzi5et/dXChksasYYFeKE2wshOrhg==} 640 | engines: {node: '>=16'} 641 | peerDependencies: 642 | eslint: ^8.56.0 || ^9.0.0-0 643 | 644 | eslint-plugin-jsonc@2.20.0: 645 | resolution: {integrity: sha512-FRgCn9Hzk5eKboCbVMrr9QrhM0eO4G+WKH8IFXoaeqhM/2kuWzbStJn4kkr0VWL8J5H8RYZF+Aoam1vlBaZVkw==} 646 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 647 | peerDependencies: 648 | eslint: '>=6.0.0' 649 | 650 | eslint-plugin-prettier@5.4.0: 651 | resolution: {integrity: sha512-BvQOvUhkVQM1i63iMETK9Hjud9QhqBnbtT1Zc642p9ynzBuCe5pybkOnvqZIBypXmMlsGcnU4HZ8sCTPfpAexA==} 652 | engines: {node: ^14.18.0 || >=16.0.0} 653 | peerDependencies: 654 | '@types/eslint': '>=8.0.0' 655 | eslint: '>=8.0.0' 656 | eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' 657 | prettier: '>=3.0.0' 658 | peerDependenciesMeta: 659 | '@types/eslint': 660 | optional: true 661 | eslint-config-prettier: 662 | optional: true 663 | 664 | eslint-plugin-unicorn@55.0.0: 665 | resolution: {integrity: sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==} 666 | engines: {node: '>=18.18'} 667 | peerDependencies: 668 | eslint: '>=8.56.0' 669 | 670 | eslint-scope@8.3.0: 671 | resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} 672 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 673 | 674 | eslint-visitor-keys@3.4.3: 675 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 676 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 677 | 678 | eslint-visitor-keys@4.2.0: 679 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 680 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 681 | 682 | eslint@9.26.0: 683 | resolution: {integrity: sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==} 684 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 685 | hasBin: true 686 | peerDependencies: 687 | jiti: '*' 688 | peerDependenciesMeta: 689 | jiti: 690 | optional: true 691 | 692 | espree@10.3.0: 693 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 694 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 695 | 696 | espree@9.6.1: 697 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 698 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 699 | 700 | esquery@1.6.0: 701 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 702 | engines: {node: '>=0.10'} 703 | 704 | esrecurse@4.3.0: 705 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 706 | engines: {node: '>=4.0'} 707 | 708 | estraverse@5.3.0: 709 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 710 | engines: {node: '>=4.0'} 711 | 712 | esutils@2.0.3: 713 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 714 | engines: {node: '>=0.10.0'} 715 | 716 | etag@1.8.1: 717 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 718 | engines: {node: '>= 0.6'} 719 | 720 | eventsource-parser@3.0.1: 721 | resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==} 722 | engines: {node: '>=18.0.0'} 723 | 724 | eventsource@3.0.6: 725 | resolution: {integrity: sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==} 726 | engines: {node: '>=18.0.0'} 727 | 728 | express-rate-limit@7.5.0: 729 | resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} 730 | engines: {node: '>= 16'} 731 | peerDependencies: 732 | express: ^4.11 || 5 || ^5.0.0-beta.1 733 | 734 | express@5.1.0: 735 | resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} 736 | engines: {node: '>= 18'} 737 | 738 | fast-deep-equal@3.1.3: 739 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 740 | 741 | fast-diff@1.3.0: 742 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} 743 | 744 | fast-glob@3.3.3: 745 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 746 | engines: {node: '>=8.6.0'} 747 | 748 | fast-json-stable-stringify@2.1.0: 749 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 750 | 751 | fast-levenshtein@2.0.6: 752 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 753 | 754 | fastq@1.19.1: 755 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 756 | 757 | file-entry-cache@8.0.0: 758 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 759 | engines: {node: '>=16.0.0'} 760 | 761 | fill-range@7.1.1: 762 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 763 | engines: {node: '>=8'} 764 | 765 | finalhandler@2.1.0: 766 | resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} 767 | engines: {node: '>= 0.8'} 768 | 769 | find-up@4.1.0: 770 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 771 | engines: {node: '>=8'} 772 | 773 | find-up@5.0.0: 774 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 775 | engines: {node: '>=10'} 776 | 777 | flat-cache@4.0.1: 778 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 779 | engines: {node: '>=16'} 780 | 781 | flatted@3.3.3: 782 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 783 | 784 | forwarded@0.2.0: 785 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 786 | engines: {node: '>= 0.6'} 787 | 788 | fresh@2.0.0: 789 | resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} 790 | engines: {node: '>= 0.8'} 791 | 792 | fsevents@2.3.3: 793 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 794 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 795 | os: [darwin] 796 | 797 | function-bind@1.1.2: 798 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 799 | 800 | fzf@0.5.2: 801 | resolution: {integrity: sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==} 802 | 803 | get-intrinsic@1.3.0: 804 | resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} 805 | engines: {node: '>= 0.4'} 806 | 807 | get-proto@1.0.1: 808 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 809 | engines: {node: '>= 0.4'} 810 | 811 | get-tsconfig@4.10.0: 812 | resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} 813 | 814 | glob-parent@5.1.2: 815 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 816 | engines: {node: '>= 6'} 817 | 818 | glob-parent@6.0.2: 819 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 820 | engines: {node: '>=10.13.0'} 821 | 822 | globals@14.0.0: 823 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 824 | engines: {node: '>=18'} 825 | 826 | globals@15.15.0: 827 | resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} 828 | engines: {node: '>=18'} 829 | 830 | globby@11.1.0: 831 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 832 | engines: {node: '>=10'} 833 | 834 | gopd@1.2.0: 835 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 836 | engines: {node: '>= 0.4'} 837 | 838 | graphemer@1.4.0: 839 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 840 | 841 | has-flag@4.0.0: 842 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 843 | engines: {node: '>=8'} 844 | 845 | has-symbols@1.1.0: 846 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 847 | engines: {node: '>= 0.4'} 848 | 849 | hasown@2.0.2: 850 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 851 | engines: {node: '>= 0.4'} 852 | 853 | hosted-git-info@2.8.9: 854 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 855 | 856 | http-errors@2.0.0: 857 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 858 | engines: {node: '>= 0.8'} 859 | 860 | iconv-lite@0.6.3: 861 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 862 | engines: {node: '>=0.10.0'} 863 | 864 | ignore@5.3.2: 865 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 866 | engines: {node: '>= 4'} 867 | 868 | import-fresh@3.3.1: 869 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 870 | engines: {node: '>=6'} 871 | 872 | imurmurhash@0.1.4: 873 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 874 | engines: {node: '>=0.8.19'} 875 | 876 | indent-string@4.0.0: 877 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 878 | engines: {node: '>=8'} 879 | 880 | inherits@2.0.4: 881 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 882 | 883 | ipaddr.js@1.9.1: 884 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 885 | engines: {node: '>= 0.10'} 886 | 887 | is-arrayish@0.2.1: 888 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 889 | 890 | is-builtin-module@3.2.1: 891 | resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} 892 | engines: {node: '>=6'} 893 | 894 | is-core-module@2.16.1: 895 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 896 | engines: {node: '>= 0.4'} 897 | 898 | is-extglob@2.1.1: 899 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 900 | engines: {node: '>=0.10.0'} 901 | 902 | is-glob@4.0.3: 903 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 904 | engines: {node: '>=0.10.0'} 905 | 906 | is-number@7.0.0: 907 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 908 | engines: {node: '>=0.12.0'} 909 | 910 | is-promise@4.0.0: 911 | resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} 912 | 913 | isexe@2.0.0: 914 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 915 | 916 | js-tokens@4.0.0: 917 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 918 | 919 | js-yaml@4.1.0: 920 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 921 | hasBin: true 922 | 923 | jsesc@0.5.0: 924 | resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} 925 | hasBin: true 926 | 927 | jsesc@3.1.0: 928 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 929 | engines: {node: '>=6'} 930 | hasBin: true 931 | 932 | json-buffer@3.0.1: 933 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 934 | 935 | json-parse-even-better-errors@2.3.1: 936 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 937 | 938 | json-schema-traverse@0.4.1: 939 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 940 | 941 | json-stable-stringify-without-jsonify@1.0.1: 942 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 943 | 944 | jsonc-eslint-parser@2.4.0: 945 | resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} 946 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 947 | 948 | keyv@4.5.4: 949 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 950 | 951 | levn@0.4.1: 952 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 953 | engines: {node: '>= 0.8.0'} 954 | 955 | lines-and-columns@1.2.4: 956 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 957 | 958 | locate-path@5.0.0: 959 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 960 | engines: {node: '>=8'} 961 | 962 | locate-path@6.0.0: 963 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 964 | engines: {node: '>=10'} 965 | 966 | lodash.merge@4.6.2: 967 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 968 | 969 | math-intrinsics@1.1.0: 970 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 971 | engines: {node: '>= 0.4'} 972 | 973 | media-typer@1.1.0: 974 | resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} 975 | engines: {node: '>= 0.8'} 976 | 977 | merge-descriptors@2.0.0: 978 | resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} 979 | engines: {node: '>=18'} 980 | 981 | merge2@1.4.1: 982 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 983 | engines: {node: '>= 8'} 984 | 985 | micromatch@4.0.8: 986 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 987 | engines: {node: '>=8.6'} 988 | 989 | mime-db@1.54.0: 990 | resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} 991 | engines: {node: '>= 0.6'} 992 | 993 | mime-types@3.0.1: 994 | resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} 995 | engines: {node: '>= 0.6'} 996 | 997 | min-indent@1.0.1: 998 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 999 | engines: {node: '>=4'} 1000 | 1001 | minimatch@3.1.2: 1002 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1003 | 1004 | minimatch@9.0.5: 1005 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1006 | engines: {node: '>=16 || 14 >=14.17'} 1007 | 1008 | ms@2.1.3: 1009 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1010 | 1011 | natural-compare@1.4.0: 1012 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1013 | 1014 | negotiator@1.0.0: 1015 | resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} 1016 | engines: {node: '>= 0.6'} 1017 | 1018 | node-releases@2.0.19: 1019 | resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1020 | 1021 | normalize-package-data@2.5.0: 1022 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 1023 | 1024 | object-assign@4.1.1: 1025 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1026 | engines: {node: '>=0.10.0'} 1027 | 1028 | object-inspect@1.13.4: 1029 | resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} 1030 | engines: {node: '>= 0.4'} 1031 | 1032 | on-finished@2.4.1: 1033 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 1034 | engines: {node: '>= 0.8'} 1035 | 1036 | once@1.4.0: 1037 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1038 | 1039 | optionator@0.9.4: 1040 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1041 | engines: {node: '>= 0.8.0'} 1042 | 1043 | p-limit@2.3.0: 1044 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1045 | engines: {node: '>=6'} 1046 | 1047 | p-limit@3.1.0: 1048 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1049 | engines: {node: '>=10'} 1050 | 1051 | p-locate@4.1.0: 1052 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1053 | engines: {node: '>=8'} 1054 | 1055 | p-locate@5.0.0: 1056 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1057 | engines: {node: '>=10'} 1058 | 1059 | p-try@2.2.0: 1060 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1061 | engines: {node: '>=6'} 1062 | 1063 | package-manager-detector@1.2.0: 1064 | resolution: {integrity: sha512-PutJepsOtsqVfUsxCzgTTpyXmiAgvKptIgY4th5eq5UXXFhj5PxfQ9hnGkypMeovpAvVshFRItoFHYO18TCOqA==} 1065 | 1066 | parent-module@1.0.1: 1067 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1068 | engines: {node: '>=6'} 1069 | 1070 | parse-json@5.2.0: 1071 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1072 | engines: {node: '>=8'} 1073 | 1074 | parseurl@1.3.3: 1075 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 1076 | engines: {node: '>= 0.8'} 1077 | 1078 | path-exists@4.0.0: 1079 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1080 | engines: {node: '>=8'} 1081 | 1082 | path-key@3.1.1: 1083 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1084 | engines: {node: '>=8'} 1085 | 1086 | path-parse@1.0.7: 1087 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1088 | 1089 | path-to-regexp@8.2.0: 1090 | resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} 1091 | engines: {node: '>=16'} 1092 | 1093 | path-type@4.0.0: 1094 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1095 | engines: {node: '>=8'} 1096 | 1097 | picocolors@1.1.1: 1098 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1099 | 1100 | picomatch@2.3.1: 1101 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1102 | engines: {node: '>=8.6'} 1103 | 1104 | pkce-challenge@5.0.0: 1105 | resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} 1106 | engines: {node: '>=16.20.0'} 1107 | 1108 | pluralize@8.0.0: 1109 | resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} 1110 | engines: {node: '>=4'} 1111 | 1112 | prelude-ls@1.2.1: 1113 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1114 | engines: {node: '>= 0.8.0'} 1115 | 1116 | prettier-linter-helpers@1.0.0: 1117 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 1118 | engines: {node: '>=6.0.0'} 1119 | 1120 | prettier@3.5.3: 1121 | resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} 1122 | engines: {node: '>=14'} 1123 | hasBin: true 1124 | 1125 | proxy-addr@2.0.7: 1126 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 1127 | engines: {node: '>= 0.10'} 1128 | 1129 | punycode@2.3.1: 1130 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1131 | engines: {node: '>=6'} 1132 | 1133 | qs@6.14.0: 1134 | resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} 1135 | engines: {node: '>=0.6'} 1136 | 1137 | queue-microtask@1.2.3: 1138 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1139 | 1140 | range-parser@1.2.1: 1141 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 1142 | engines: {node: '>= 0.6'} 1143 | 1144 | raw-body@3.0.0: 1145 | resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} 1146 | engines: {node: '>= 0.8'} 1147 | 1148 | read-pkg-up@7.0.1: 1149 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} 1150 | engines: {node: '>=8'} 1151 | 1152 | read-pkg@5.2.0: 1153 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} 1154 | engines: {node: '>=8'} 1155 | 1156 | regexp-tree@0.1.27: 1157 | resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} 1158 | hasBin: true 1159 | 1160 | regjsparser@0.10.0: 1161 | resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} 1162 | hasBin: true 1163 | 1164 | resolve-from@4.0.0: 1165 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1166 | engines: {node: '>=4'} 1167 | 1168 | resolve-pkg-maps@1.0.0: 1169 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1170 | 1171 | resolve@1.22.10: 1172 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 1173 | engines: {node: '>= 0.4'} 1174 | hasBin: true 1175 | 1176 | reusify@1.1.0: 1177 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1178 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1179 | 1180 | router@2.2.0: 1181 | resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} 1182 | engines: {node: '>= 18'} 1183 | 1184 | run-parallel@1.2.0: 1185 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1186 | 1187 | safe-buffer@5.2.1: 1188 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1189 | 1190 | safer-buffer@2.1.2: 1191 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1192 | 1193 | semver@5.7.2: 1194 | resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} 1195 | hasBin: true 1196 | 1197 | semver@7.7.1: 1198 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 1199 | engines: {node: '>=10'} 1200 | hasBin: true 1201 | 1202 | send@1.2.0: 1203 | resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} 1204 | engines: {node: '>= 18'} 1205 | 1206 | serve-static@2.2.0: 1207 | resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} 1208 | engines: {node: '>= 18'} 1209 | 1210 | setprototypeof@1.2.0: 1211 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 1212 | 1213 | shebang-command@2.0.0: 1214 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1215 | engines: {node: '>=8'} 1216 | 1217 | shebang-regex@3.0.0: 1218 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1219 | engines: {node: '>=8'} 1220 | 1221 | side-channel-list@1.0.0: 1222 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} 1223 | engines: {node: '>= 0.4'} 1224 | 1225 | side-channel-map@1.0.1: 1226 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 1227 | engines: {node: '>= 0.4'} 1228 | 1229 | side-channel-weakmap@1.0.2: 1230 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 1231 | engines: {node: '>= 0.4'} 1232 | 1233 | side-channel@1.1.0: 1234 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 1235 | engines: {node: '>= 0.4'} 1236 | 1237 | slash@3.0.0: 1238 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1239 | engines: {node: '>=8'} 1240 | 1241 | spdx-correct@3.2.0: 1242 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} 1243 | 1244 | spdx-exceptions@2.5.0: 1245 | resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} 1246 | 1247 | spdx-expression-parse@3.0.1: 1248 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 1249 | 1250 | spdx-license-ids@3.0.21: 1251 | resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} 1252 | 1253 | stable-hash@0.0.4: 1254 | resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} 1255 | 1256 | statuses@2.0.1: 1257 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 1258 | engines: {node: '>= 0.8'} 1259 | 1260 | strip-indent@3.0.0: 1261 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 1262 | engines: {node: '>=8'} 1263 | 1264 | strip-json-comments@3.1.1: 1265 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1266 | engines: {node: '>=8'} 1267 | 1268 | supports-color@7.2.0: 1269 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1270 | engines: {node: '>=8'} 1271 | 1272 | supports-preserve-symlinks-flag@1.0.0: 1273 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1274 | engines: {node: '>= 0.4'} 1275 | 1276 | synckit@0.10.3: 1277 | resolution: {integrity: sha512-R1urvuyiTaWfeCggqEvpDJwAlDVdsT9NM+IP//Tk2x7qHCkSvBk/fwFgw/TLAHzZlrAnnazMcRw0ZD8HlYFTEQ==} 1278 | engines: {node: ^14.18.0 || >=16.0.0} 1279 | 1280 | synckit@0.11.4: 1281 | resolution: {integrity: sha512-Q/XQKRaJiLiFIBNN+mndW7S/RHxvwzuZS6ZwmRzUBqJBv/5QIKCEwkBC8GBf8EQJKYnaFs0wOZbKTXBPj8L9oQ==} 1282 | engines: {node: ^14.18.0 || >=16.0.0} 1283 | 1284 | tinyexec@1.0.1: 1285 | resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} 1286 | 1287 | to-regex-range@5.0.1: 1288 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1289 | engines: {node: '>=8.0'} 1290 | 1291 | toidentifier@1.0.1: 1292 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 1293 | engines: {node: '>=0.6'} 1294 | 1295 | ts-api-utils@1.4.3: 1296 | resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} 1297 | engines: {node: '>=16'} 1298 | peerDependencies: 1299 | typescript: '>=4.2.0' 1300 | 1301 | ts-api-utils@2.1.0: 1302 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1303 | engines: {node: '>=18.12'} 1304 | peerDependencies: 1305 | typescript: '>=4.8.4' 1306 | 1307 | tslib@2.8.1: 1308 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1309 | 1310 | tsx@4.19.3: 1311 | resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} 1312 | engines: {node: '>=18.0.0'} 1313 | hasBin: true 1314 | 1315 | tunnel@0.0.6: 1316 | resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} 1317 | engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} 1318 | 1319 | type-check@0.4.0: 1320 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1321 | engines: {node: '>= 0.8.0'} 1322 | 1323 | type-fest@0.6.0: 1324 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 1325 | engines: {node: '>=8'} 1326 | 1327 | type-fest@0.8.1: 1328 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} 1329 | engines: {node: '>=8'} 1330 | 1331 | type-is@2.0.1: 1332 | resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} 1333 | engines: {node: '>= 0.6'} 1334 | 1335 | typescript-eslint@8.31.1: 1336 | resolution: {integrity: sha512-j6DsEotD/fH39qKzXTQRwYYWlt7D+0HmfpOK+DVhwJOFLcdmn92hq3mBb7HlKJHbjjI/gTOqEcc9d6JfpFf/VA==} 1337 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1338 | peerDependencies: 1339 | eslint: ^8.57.0 || ^9.0.0 1340 | typescript: '>=4.8.4 <5.9.0' 1341 | 1342 | typescript@5.8.3: 1343 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 1344 | engines: {node: '>=14.17'} 1345 | hasBin: true 1346 | 1347 | undici-types@6.21.0: 1348 | resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 1349 | 1350 | undici@5.29.0: 1351 | resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} 1352 | engines: {node: '>=14.0'} 1353 | 1354 | unpipe@1.0.0: 1355 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 1356 | engines: {node: '>= 0.8'} 1357 | 1358 | update-browserslist-db@1.1.3: 1359 | resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} 1360 | hasBin: true 1361 | peerDependencies: 1362 | browserslist: '>= 4.21.0' 1363 | 1364 | uri-js@4.4.1: 1365 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1366 | 1367 | validate-npm-package-license@3.0.4: 1368 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 1369 | 1370 | vary@1.1.2: 1371 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 1372 | engines: {node: '>= 0.8'} 1373 | 1374 | which@2.0.2: 1375 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1376 | engines: {node: '>= 8'} 1377 | hasBin: true 1378 | 1379 | word-wrap@1.2.5: 1380 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1381 | engines: {node: '>=0.10.0'} 1382 | 1383 | wrappy@1.0.2: 1384 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1385 | 1386 | yocto-queue@0.1.0: 1387 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1388 | engines: {node: '>=10'} 1389 | 1390 | zod-to-json-schema@3.24.5: 1391 | resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} 1392 | peerDependencies: 1393 | zod: ^3.24.1 1394 | 1395 | zod@3.24.4: 1396 | resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} 1397 | 1398 | snapshots: 1399 | 1400 | '@actions/core@1.11.1': 1401 | dependencies: 1402 | '@actions/exec': 1.1.1 1403 | '@actions/http-client': 2.2.3 1404 | 1405 | '@actions/exec@1.1.1': 1406 | dependencies: 1407 | '@actions/io': 1.1.3 1408 | 1409 | '@actions/http-client@2.2.3': 1410 | dependencies: 1411 | tunnel: 0.0.6 1412 | undici: 5.29.0 1413 | 1414 | '@actions/io@1.1.3': {} 1415 | 1416 | '@antfu/ni@24.3.0': 1417 | dependencies: 1418 | ansis: 3.17.0 1419 | fzf: 0.5.2 1420 | package-manager-detector: 1.2.0 1421 | tinyexec: 1.0.1 1422 | 1423 | '@babel/code-frame@7.27.1': 1424 | dependencies: 1425 | '@babel/helper-validator-identifier': 7.27.1 1426 | js-tokens: 4.0.0 1427 | picocolors: 1.1.1 1428 | 1429 | '@babel/helper-validator-identifier@7.27.1': {} 1430 | 1431 | '@blitz/eslint-plugin@0.1.4(prettier@3.5.3)(typescript@5.8.3)': 1432 | dependencies: 1433 | '@stylistic/eslint-plugin-ts': 2.13.0(eslint@9.26.0)(typescript@5.8.3) 1434 | '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3) 1435 | '@typescript-eslint/parser': 8.31.1(eslint@9.26.0)(typescript@5.8.3) 1436 | '@typescript-eslint/utils': 8.31.1(eslint@9.26.0)(typescript@5.8.3) 1437 | common-tags: 1.8.2 1438 | eslint: 9.26.0 1439 | eslint-config-prettier: 9.1.0(eslint@9.26.0) 1440 | eslint-plugin-import-x: 3.1.0(eslint@9.26.0)(typescript@5.8.3) 1441 | eslint-plugin-jsonc: 2.20.0(eslint@9.26.0) 1442 | eslint-plugin-prettier: 5.4.0(eslint-config-prettier@9.1.0(eslint@9.26.0))(eslint@9.26.0)(prettier@3.5.3) 1443 | eslint-plugin-unicorn: 55.0.0(eslint@9.26.0) 1444 | globals: 15.15.0 1445 | typescript-eslint: 8.31.1(eslint@9.26.0)(typescript@5.8.3) 1446 | transitivePeerDependencies: 1447 | - '@eslint/json' 1448 | - '@types/eslint' 1449 | - jiti 1450 | - prettier 1451 | - supports-color 1452 | - typescript 1453 | 1454 | '@esbuild/aix-ppc64@0.25.3': 1455 | optional: true 1456 | 1457 | '@esbuild/android-arm64@0.25.3': 1458 | optional: true 1459 | 1460 | '@esbuild/android-arm@0.25.3': 1461 | optional: true 1462 | 1463 | '@esbuild/android-x64@0.25.3': 1464 | optional: true 1465 | 1466 | '@esbuild/darwin-arm64@0.25.3': 1467 | optional: true 1468 | 1469 | '@esbuild/darwin-x64@0.25.3': 1470 | optional: true 1471 | 1472 | '@esbuild/freebsd-arm64@0.25.3': 1473 | optional: true 1474 | 1475 | '@esbuild/freebsd-x64@0.25.3': 1476 | optional: true 1477 | 1478 | '@esbuild/linux-arm64@0.25.3': 1479 | optional: true 1480 | 1481 | '@esbuild/linux-arm@0.25.3': 1482 | optional: true 1483 | 1484 | '@esbuild/linux-ia32@0.25.3': 1485 | optional: true 1486 | 1487 | '@esbuild/linux-loong64@0.25.3': 1488 | optional: true 1489 | 1490 | '@esbuild/linux-mips64el@0.25.3': 1491 | optional: true 1492 | 1493 | '@esbuild/linux-ppc64@0.25.3': 1494 | optional: true 1495 | 1496 | '@esbuild/linux-riscv64@0.25.3': 1497 | optional: true 1498 | 1499 | '@esbuild/linux-s390x@0.25.3': 1500 | optional: true 1501 | 1502 | '@esbuild/linux-x64@0.25.3': 1503 | optional: true 1504 | 1505 | '@esbuild/netbsd-arm64@0.25.3': 1506 | optional: true 1507 | 1508 | '@esbuild/netbsd-x64@0.25.3': 1509 | optional: true 1510 | 1511 | '@esbuild/openbsd-arm64@0.25.3': 1512 | optional: true 1513 | 1514 | '@esbuild/openbsd-x64@0.25.3': 1515 | optional: true 1516 | 1517 | '@esbuild/sunos-x64@0.25.3': 1518 | optional: true 1519 | 1520 | '@esbuild/win32-arm64@0.25.3': 1521 | optional: true 1522 | 1523 | '@esbuild/win32-ia32@0.25.3': 1524 | optional: true 1525 | 1526 | '@esbuild/win32-x64@0.25.3': 1527 | optional: true 1528 | 1529 | '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0)': 1530 | dependencies: 1531 | eslint: 9.26.0 1532 | eslint-visitor-keys: 3.4.3 1533 | 1534 | '@eslint-community/regexpp@4.12.1': {} 1535 | 1536 | '@eslint/config-array@0.20.0': 1537 | dependencies: 1538 | '@eslint/object-schema': 2.1.6 1539 | debug: 4.4.0 1540 | minimatch: 3.1.2 1541 | transitivePeerDependencies: 1542 | - supports-color 1543 | 1544 | '@eslint/config-helpers@0.2.2': {} 1545 | 1546 | '@eslint/core@0.13.0': 1547 | dependencies: 1548 | '@types/json-schema': 7.0.15 1549 | 1550 | '@eslint/eslintrc@3.3.1': 1551 | dependencies: 1552 | ajv: 6.12.6 1553 | debug: 4.4.0 1554 | espree: 10.3.0 1555 | globals: 14.0.0 1556 | ignore: 5.3.2 1557 | import-fresh: 3.3.1 1558 | js-yaml: 4.1.0 1559 | minimatch: 3.1.2 1560 | strip-json-comments: 3.1.1 1561 | transitivePeerDependencies: 1562 | - supports-color 1563 | 1564 | '@eslint/js@9.26.0': {} 1565 | 1566 | '@eslint/object-schema@2.1.6': {} 1567 | 1568 | '@eslint/plugin-kit@0.2.8': 1569 | dependencies: 1570 | '@eslint/core': 0.13.0 1571 | levn: 0.4.1 1572 | 1573 | '@fastify/busboy@2.1.1': {} 1574 | 1575 | '@humanfs/core@0.19.1': {} 1576 | 1577 | '@humanfs/node@0.16.6': 1578 | dependencies: 1579 | '@humanfs/core': 0.19.1 1580 | '@humanwhocodes/retry': 0.3.1 1581 | 1582 | '@humanwhocodes/module-importer@1.0.1': {} 1583 | 1584 | '@humanwhocodes/retry@0.3.1': {} 1585 | 1586 | '@humanwhocodes/retry@0.4.2': {} 1587 | 1588 | '@modelcontextprotocol/sdk@1.11.0': 1589 | dependencies: 1590 | content-type: 1.0.5 1591 | cors: 2.8.5 1592 | cross-spawn: 7.0.6 1593 | eventsource: 3.0.6 1594 | express: 5.1.0 1595 | express-rate-limit: 7.5.0(express@5.1.0) 1596 | pkce-challenge: 5.0.0 1597 | raw-body: 3.0.0 1598 | zod: 3.24.4 1599 | zod-to-json-schema: 3.24.5(zod@3.24.4) 1600 | transitivePeerDependencies: 1601 | - supports-color 1602 | 1603 | '@nodelib/fs.scandir@2.1.5': 1604 | dependencies: 1605 | '@nodelib/fs.stat': 2.0.5 1606 | run-parallel: 1.2.0 1607 | 1608 | '@nodelib/fs.stat@2.0.5': {} 1609 | 1610 | '@nodelib/fs.walk@1.2.8': 1611 | dependencies: 1612 | '@nodelib/fs.scandir': 2.1.5 1613 | fastq: 1.19.1 1614 | 1615 | '@pkgr/core@0.2.4': {} 1616 | 1617 | '@stylistic/eslint-plugin-ts@2.13.0(eslint@9.26.0)(typescript@5.8.3)': 1618 | dependencies: 1619 | '@typescript-eslint/utils': 8.31.1(eslint@9.26.0)(typescript@5.8.3) 1620 | eslint: 9.26.0 1621 | eslint-visitor-keys: 4.2.0 1622 | espree: 10.3.0 1623 | transitivePeerDependencies: 1624 | - supports-color 1625 | - typescript 1626 | 1627 | '@types/estree@1.0.7': {} 1628 | 1629 | '@types/json-schema@7.0.15': {} 1630 | 1631 | '@types/node@22.15.3': 1632 | dependencies: 1633 | undici-types: 6.21.0 1634 | 1635 | '@types/normalize-package-data@2.4.4': {} 1636 | 1637 | '@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3)': 1638 | dependencies: 1639 | '@eslint-community/regexpp': 4.12.1 1640 | '@typescript-eslint/parser': 8.31.1(eslint@9.26.0)(typescript@5.8.3) 1641 | '@typescript-eslint/scope-manager': 8.31.1 1642 | '@typescript-eslint/type-utils': 8.31.1(eslint@9.26.0)(typescript@5.8.3) 1643 | '@typescript-eslint/utils': 8.31.1(eslint@9.26.0)(typescript@5.8.3) 1644 | '@typescript-eslint/visitor-keys': 8.31.1 1645 | eslint: 9.26.0 1646 | graphemer: 1.4.0 1647 | ignore: 5.3.2 1648 | natural-compare: 1.4.0 1649 | ts-api-utils: 2.1.0(typescript@5.8.3) 1650 | typescript: 5.8.3 1651 | transitivePeerDependencies: 1652 | - supports-color 1653 | 1654 | '@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3)': 1655 | dependencies: 1656 | '@typescript-eslint/scope-manager': 8.31.1 1657 | '@typescript-eslint/types': 8.31.1 1658 | '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) 1659 | '@typescript-eslint/visitor-keys': 8.31.1 1660 | debug: 4.4.0 1661 | eslint: 9.26.0 1662 | typescript: 5.8.3 1663 | transitivePeerDependencies: 1664 | - supports-color 1665 | 1666 | '@typescript-eslint/scope-manager@7.18.0': 1667 | dependencies: 1668 | '@typescript-eslint/types': 7.18.0 1669 | '@typescript-eslint/visitor-keys': 7.18.0 1670 | 1671 | '@typescript-eslint/scope-manager@8.31.1': 1672 | dependencies: 1673 | '@typescript-eslint/types': 8.31.1 1674 | '@typescript-eslint/visitor-keys': 8.31.1 1675 | 1676 | '@typescript-eslint/type-utils@8.31.1(eslint@9.26.0)(typescript@5.8.3)': 1677 | dependencies: 1678 | '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) 1679 | '@typescript-eslint/utils': 8.31.1(eslint@9.26.0)(typescript@5.8.3) 1680 | debug: 4.4.0 1681 | eslint: 9.26.0 1682 | ts-api-utils: 2.1.0(typescript@5.8.3) 1683 | typescript: 5.8.3 1684 | transitivePeerDependencies: 1685 | - supports-color 1686 | 1687 | '@typescript-eslint/types@7.18.0': {} 1688 | 1689 | '@typescript-eslint/types@8.31.1': {} 1690 | 1691 | '@typescript-eslint/typescript-estree@7.18.0(typescript@5.8.3)': 1692 | dependencies: 1693 | '@typescript-eslint/types': 7.18.0 1694 | '@typescript-eslint/visitor-keys': 7.18.0 1695 | debug: 4.4.0 1696 | globby: 11.1.0 1697 | is-glob: 4.0.3 1698 | minimatch: 9.0.5 1699 | semver: 7.7.1 1700 | ts-api-utils: 1.4.3(typescript@5.8.3) 1701 | optionalDependencies: 1702 | typescript: 5.8.3 1703 | transitivePeerDependencies: 1704 | - supports-color 1705 | 1706 | '@typescript-eslint/typescript-estree@8.31.1(typescript@5.8.3)': 1707 | dependencies: 1708 | '@typescript-eslint/types': 8.31.1 1709 | '@typescript-eslint/visitor-keys': 8.31.1 1710 | debug: 4.4.0 1711 | fast-glob: 3.3.3 1712 | is-glob: 4.0.3 1713 | minimatch: 9.0.5 1714 | semver: 7.7.1 1715 | ts-api-utils: 2.1.0(typescript@5.8.3) 1716 | typescript: 5.8.3 1717 | transitivePeerDependencies: 1718 | - supports-color 1719 | 1720 | '@typescript-eslint/utils@7.18.0(eslint@9.26.0)(typescript@5.8.3)': 1721 | dependencies: 1722 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0) 1723 | '@typescript-eslint/scope-manager': 7.18.0 1724 | '@typescript-eslint/types': 7.18.0 1725 | '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) 1726 | eslint: 9.26.0 1727 | transitivePeerDependencies: 1728 | - supports-color 1729 | - typescript 1730 | 1731 | '@typescript-eslint/utils@8.31.1(eslint@9.26.0)(typescript@5.8.3)': 1732 | dependencies: 1733 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0) 1734 | '@typescript-eslint/scope-manager': 8.31.1 1735 | '@typescript-eslint/types': 8.31.1 1736 | '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) 1737 | eslint: 9.26.0 1738 | typescript: 5.8.3 1739 | transitivePeerDependencies: 1740 | - supports-color 1741 | 1742 | '@typescript-eslint/visitor-keys@7.18.0': 1743 | dependencies: 1744 | '@typescript-eslint/types': 7.18.0 1745 | eslint-visitor-keys: 3.4.3 1746 | 1747 | '@typescript-eslint/visitor-keys@8.31.1': 1748 | dependencies: 1749 | '@typescript-eslint/types': 8.31.1 1750 | eslint-visitor-keys: 4.2.0 1751 | 1752 | accepts@2.0.0: 1753 | dependencies: 1754 | mime-types: 3.0.1 1755 | negotiator: 1.0.0 1756 | 1757 | acorn-jsx@5.3.2(acorn@8.14.1): 1758 | dependencies: 1759 | acorn: 8.14.1 1760 | 1761 | acorn@8.14.1: {} 1762 | 1763 | ajv@6.12.6: 1764 | dependencies: 1765 | fast-deep-equal: 3.1.3 1766 | fast-json-stable-stringify: 2.1.0 1767 | json-schema-traverse: 0.4.1 1768 | uri-js: 4.4.1 1769 | 1770 | ansi-styles@4.3.0: 1771 | dependencies: 1772 | color-convert: 2.0.1 1773 | 1774 | ansis@3.17.0: {} 1775 | 1776 | argparse@2.0.1: {} 1777 | 1778 | array-union@2.1.0: {} 1779 | 1780 | balanced-match@1.0.2: {} 1781 | 1782 | body-parser@2.2.0: 1783 | dependencies: 1784 | bytes: 3.1.2 1785 | content-type: 1.0.5 1786 | debug: 4.4.0 1787 | http-errors: 2.0.0 1788 | iconv-lite: 0.6.3 1789 | on-finished: 2.4.1 1790 | qs: 6.14.0 1791 | raw-body: 3.0.0 1792 | type-is: 2.0.1 1793 | transitivePeerDependencies: 1794 | - supports-color 1795 | 1796 | brace-expansion@1.1.11: 1797 | dependencies: 1798 | balanced-match: 1.0.2 1799 | concat-map: 0.0.1 1800 | 1801 | brace-expansion@2.0.1: 1802 | dependencies: 1803 | balanced-match: 1.0.2 1804 | 1805 | braces@3.0.3: 1806 | dependencies: 1807 | fill-range: 7.1.1 1808 | 1809 | browserslist@4.24.5: 1810 | dependencies: 1811 | caniuse-lite: 1.0.30001717 1812 | electron-to-chromium: 1.5.149 1813 | node-releases: 2.0.19 1814 | update-browserslist-db: 1.1.3(browserslist@4.24.5) 1815 | 1816 | builtin-modules@3.3.0: {} 1817 | 1818 | bytes@3.1.2: {} 1819 | 1820 | cac@6.7.14: {} 1821 | 1822 | call-bind-apply-helpers@1.0.2: 1823 | dependencies: 1824 | es-errors: 1.3.0 1825 | function-bind: 1.1.2 1826 | 1827 | call-bound@1.0.4: 1828 | dependencies: 1829 | call-bind-apply-helpers: 1.0.2 1830 | get-intrinsic: 1.3.0 1831 | 1832 | callsites@3.1.0: {} 1833 | 1834 | caniuse-lite@1.0.30001717: {} 1835 | 1836 | chalk@4.1.2: 1837 | dependencies: 1838 | ansi-styles: 4.3.0 1839 | supports-color: 7.2.0 1840 | 1841 | ci-info@4.2.0: {} 1842 | 1843 | clean-regexp@1.0.0: 1844 | dependencies: 1845 | escape-string-regexp: 1.0.5 1846 | 1847 | color-convert@2.0.1: 1848 | dependencies: 1849 | color-name: 1.1.4 1850 | 1851 | color-name@1.1.4: {} 1852 | 1853 | common-tags@1.8.2: {} 1854 | 1855 | concat-map@0.0.1: {} 1856 | 1857 | content-disposition@1.0.0: 1858 | dependencies: 1859 | safe-buffer: 5.2.1 1860 | 1861 | content-type@1.0.5: {} 1862 | 1863 | cookie-signature@1.2.2: {} 1864 | 1865 | cookie@0.7.2: {} 1866 | 1867 | core-js-compat@3.42.0: 1868 | dependencies: 1869 | browserslist: 4.24.5 1870 | 1871 | cors@2.8.5: 1872 | dependencies: 1873 | object-assign: 4.1.1 1874 | vary: 1.1.2 1875 | 1876 | cross-spawn@7.0.6: 1877 | dependencies: 1878 | path-key: 3.1.1 1879 | shebang-command: 2.0.0 1880 | which: 2.0.2 1881 | 1882 | debug@3.2.7: 1883 | dependencies: 1884 | ms: 2.1.3 1885 | 1886 | debug@4.4.0: 1887 | dependencies: 1888 | ms: 2.1.3 1889 | 1890 | deep-is@0.1.4: {} 1891 | 1892 | depd@2.0.0: {} 1893 | 1894 | dir-glob@3.0.1: 1895 | dependencies: 1896 | path-type: 4.0.0 1897 | 1898 | doctrine@3.0.0: 1899 | dependencies: 1900 | esutils: 2.0.3 1901 | 1902 | dunder-proto@1.0.1: 1903 | dependencies: 1904 | call-bind-apply-helpers: 1.0.2 1905 | es-errors: 1.3.0 1906 | gopd: 1.2.0 1907 | 1908 | ee-first@1.1.1: {} 1909 | 1910 | electron-to-chromium@1.5.149: {} 1911 | 1912 | encodeurl@2.0.0: {} 1913 | 1914 | error-ex@1.3.2: 1915 | dependencies: 1916 | is-arrayish: 0.2.1 1917 | 1918 | es-define-property@1.0.1: {} 1919 | 1920 | es-errors@1.3.0: {} 1921 | 1922 | es-object-atoms@1.1.1: 1923 | dependencies: 1924 | es-errors: 1.3.0 1925 | 1926 | esbuild@0.25.3: 1927 | optionalDependencies: 1928 | '@esbuild/aix-ppc64': 0.25.3 1929 | '@esbuild/android-arm': 0.25.3 1930 | '@esbuild/android-arm64': 0.25.3 1931 | '@esbuild/android-x64': 0.25.3 1932 | '@esbuild/darwin-arm64': 0.25.3 1933 | '@esbuild/darwin-x64': 0.25.3 1934 | '@esbuild/freebsd-arm64': 0.25.3 1935 | '@esbuild/freebsd-x64': 0.25.3 1936 | '@esbuild/linux-arm': 0.25.3 1937 | '@esbuild/linux-arm64': 0.25.3 1938 | '@esbuild/linux-ia32': 0.25.3 1939 | '@esbuild/linux-loong64': 0.25.3 1940 | '@esbuild/linux-mips64el': 0.25.3 1941 | '@esbuild/linux-ppc64': 0.25.3 1942 | '@esbuild/linux-riscv64': 0.25.3 1943 | '@esbuild/linux-s390x': 0.25.3 1944 | '@esbuild/linux-x64': 0.25.3 1945 | '@esbuild/netbsd-arm64': 0.25.3 1946 | '@esbuild/netbsd-x64': 0.25.3 1947 | '@esbuild/openbsd-arm64': 0.25.3 1948 | '@esbuild/openbsd-x64': 0.25.3 1949 | '@esbuild/sunos-x64': 0.25.3 1950 | '@esbuild/win32-arm64': 0.25.3 1951 | '@esbuild/win32-ia32': 0.25.3 1952 | '@esbuild/win32-x64': 0.25.3 1953 | 1954 | escalade@3.2.0: {} 1955 | 1956 | escape-html@1.0.3: {} 1957 | 1958 | escape-string-regexp@1.0.5: {} 1959 | 1960 | escape-string-regexp@4.0.0: {} 1961 | 1962 | eslint-compat-utils@0.6.5(eslint@9.26.0): 1963 | dependencies: 1964 | eslint: 9.26.0 1965 | semver: 7.7.1 1966 | 1967 | eslint-config-prettier@9.1.0(eslint@9.26.0): 1968 | dependencies: 1969 | eslint: 9.26.0 1970 | 1971 | eslint-import-resolver-node@0.3.9: 1972 | dependencies: 1973 | debug: 3.2.7 1974 | is-core-module: 2.16.1 1975 | resolve: 1.22.10 1976 | transitivePeerDependencies: 1977 | - supports-color 1978 | 1979 | eslint-json-compat-utils@0.2.1(eslint@9.26.0)(jsonc-eslint-parser@2.4.0): 1980 | dependencies: 1981 | eslint: 9.26.0 1982 | esquery: 1.6.0 1983 | jsonc-eslint-parser: 2.4.0 1984 | 1985 | eslint-plugin-import-x@3.1.0(eslint@9.26.0)(typescript@5.8.3): 1986 | dependencies: 1987 | '@typescript-eslint/utils': 7.18.0(eslint@9.26.0)(typescript@5.8.3) 1988 | debug: 4.4.0 1989 | doctrine: 3.0.0 1990 | eslint: 9.26.0 1991 | eslint-import-resolver-node: 0.3.9 1992 | get-tsconfig: 4.10.0 1993 | is-glob: 4.0.3 1994 | minimatch: 9.0.5 1995 | semver: 7.7.1 1996 | stable-hash: 0.0.4 1997 | tslib: 2.8.1 1998 | transitivePeerDependencies: 1999 | - supports-color 2000 | - typescript 2001 | 2002 | eslint-plugin-jsonc@2.20.0(eslint@9.26.0): 2003 | dependencies: 2004 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0) 2005 | eslint: 9.26.0 2006 | eslint-compat-utils: 0.6.5(eslint@9.26.0) 2007 | eslint-json-compat-utils: 0.2.1(eslint@9.26.0)(jsonc-eslint-parser@2.4.0) 2008 | espree: 10.3.0 2009 | graphemer: 1.4.0 2010 | jsonc-eslint-parser: 2.4.0 2011 | natural-compare: 1.4.0 2012 | synckit: 0.10.3 2013 | transitivePeerDependencies: 2014 | - '@eslint/json' 2015 | 2016 | eslint-plugin-prettier@5.4.0(eslint-config-prettier@9.1.0(eslint@9.26.0))(eslint@9.26.0)(prettier@3.5.3): 2017 | dependencies: 2018 | eslint: 9.26.0 2019 | prettier: 3.5.3 2020 | prettier-linter-helpers: 1.0.0 2021 | synckit: 0.11.4 2022 | optionalDependencies: 2023 | eslint-config-prettier: 9.1.0(eslint@9.26.0) 2024 | 2025 | eslint-plugin-unicorn@55.0.0(eslint@9.26.0): 2026 | dependencies: 2027 | '@babel/helper-validator-identifier': 7.27.1 2028 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0) 2029 | ci-info: 4.2.0 2030 | clean-regexp: 1.0.0 2031 | core-js-compat: 3.42.0 2032 | eslint: 9.26.0 2033 | esquery: 1.6.0 2034 | globals: 15.15.0 2035 | indent-string: 4.0.0 2036 | is-builtin-module: 3.2.1 2037 | jsesc: 3.1.0 2038 | pluralize: 8.0.0 2039 | read-pkg-up: 7.0.1 2040 | regexp-tree: 0.1.27 2041 | regjsparser: 0.10.0 2042 | semver: 7.7.1 2043 | strip-indent: 3.0.0 2044 | 2045 | eslint-scope@8.3.0: 2046 | dependencies: 2047 | esrecurse: 4.3.0 2048 | estraverse: 5.3.0 2049 | 2050 | eslint-visitor-keys@3.4.3: {} 2051 | 2052 | eslint-visitor-keys@4.2.0: {} 2053 | 2054 | eslint@9.26.0: 2055 | dependencies: 2056 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0) 2057 | '@eslint-community/regexpp': 4.12.1 2058 | '@eslint/config-array': 0.20.0 2059 | '@eslint/config-helpers': 0.2.2 2060 | '@eslint/core': 0.13.0 2061 | '@eslint/eslintrc': 3.3.1 2062 | '@eslint/js': 9.26.0 2063 | '@eslint/plugin-kit': 0.2.8 2064 | '@humanfs/node': 0.16.6 2065 | '@humanwhocodes/module-importer': 1.0.1 2066 | '@humanwhocodes/retry': 0.4.2 2067 | '@modelcontextprotocol/sdk': 1.11.0 2068 | '@types/estree': 1.0.7 2069 | '@types/json-schema': 7.0.15 2070 | ajv: 6.12.6 2071 | chalk: 4.1.2 2072 | cross-spawn: 7.0.6 2073 | debug: 4.4.0 2074 | escape-string-regexp: 4.0.0 2075 | eslint-scope: 8.3.0 2076 | eslint-visitor-keys: 4.2.0 2077 | espree: 10.3.0 2078 | esquery: 1.6.0 2079 | esutils: 2.0.3 2080 | fast-deep-equal: 3.1.3 2081 | file-entry-cache: 8.0.0 2082 | find-up: 5.0.0 2083 | glob-parent: 6.0.2 2084 | ignore: 5.3.2 2085 | imurmurhash: 0.1.4 2086 | is-glob: 4.0.3 2087 | json-stable-stringify-without-jsonify: 1.0.1 2088 | lodash.merge: 4.6.2 2089 | minimatch: 3.1.2 2090 | natural-compare: 1.4.0 2091 | optionator: 0.9.4 2092 | zod: 3.24.4 2093 | transitivePeerDependencies: 2094 | - supports-color 2095 | 2096 | espree@10.3.0: 2097 | dependencies: 2098 | acorn: 8.14.1 2099 | acorn-jsx: 5.3.2(acorn@8.14.1) 2100 | eslint-visitor-keys: 4.2.0 2101 | 2102 | espree@9.6.1: 2103 | dependencies: 2104 | acorn: 8.14.1 2105 | acorn-jsx: 5.3.2(acorn@8.14.1) 2106 | eslint-visitor-keys: 3.4.3 2107 | 2108 | esquery@1.6.0: 2109 | dependencies: 2110 | estraverse: 5.3.0 2111 | 2112 | esrecurse@4.3.0: 2113 | dependencies: 2114 | estraverse: 5.3.0 2115 | 2116 | estraverse@5.3.0: {} 2117 | 2118 | esutils@2.0.3: {} 2119 | 2120 | etag@1.8.1: {} 2121 | 2122 | eventsource-parser@3.0.1: {} 2123 | 2124 | eventsource@3.0.6: 2125 | dependencies: 2126 | eventsource-parser: 3.0.1 2127 | 2128 | express-rate-limit@7.5.0(express@5.1.0): 2129 | dependencies: 2130 | express: 5.1.0 2131 | 2132 | express@5.1.0: 2133 | dependencies: 2134 | accepts: 2.0.0 2135 | body-parser: 2.2.0 2136 | content-disposition: 1.0.0 2137 | content-type: 1.0.5 2138 | cookie: 0.7.2 2139 | cookie-signature: 1.2.2 2140 | debug: 4.4.0 2141 | encodeurl: 2.0.0 2142 | escape-html: 1.0.3 2143 | etag: 1.8.1 2144 | finalhandler: 2.1.0 2145 | fresh: 2.0.0 2146 | http-errors: 2.0.0 2147 | merge-descriptors: 2.0.0 2148 | mime-types: 3.0.1 2149 | on-finished: 2.4.1 2150 | once: 1.4.0 2151 | parseurl: 1.3.3 2152 | proxy-addr: 2.0.7 2153 | qs: 6.14.0 2154 | range-parser: 1.2.1 2155 | router: 2.2.0 2156 | send: 1.2.0 2157 | serve-static: 2.2.0 2158 | statuses: 2.0.1 2159 | type-is: 2.0.1 2160 | vary: 1.1.2 2161 | transitivePeerDependencies: 2162 | - supports-color 2163 | 2164 | fast-deep-equal@3.1.3: {} 2165 | 2166 | fast-diff@1.3.0: {} 2167 | 2168 | fast-glob@3.3.3: 2169 | dependencies: 2170 | '@nodelib/fs.stat': 2.0.5 2171 | '@nodelib/fs.walk': 1.2.8 2172 | glob-parent: 5.1.2 2173 | merge2: 1.4.1 2174 | micromatch: 4.0.8 2175 | 2176 | fast-json-stable-stringify@2.1.0: {} 2177 | 2178 | fast-levenshtein@2.0.6: {} 2179 | 2180 | fastq@1.19.1: 2181 | dependencies: 2182 | reusify: 1.1.0 2183 | 2184 | file-entry-cache@8.0.0: 2185 | dependencies: 2186 | flat-cache: 4.0.1 2187 | 2188 | fill-range@7.1.1: 2189 | dependencies: 2190 | to-regex-range: 5.0.1 2191 | 2192 | finalhandler@2.1.0: 2193 | dependencies: 2194 | debug: 4.4.0 2195 | encodeurl: 2.0.0 2196 | escape-html: 1.0.3 2197 | on-finished: 2.4.1 2198 | parseurl: 1.3.3 2199 | statuses: 2.0.1 2200 | transitivePeerDependencies: 2201 | - supports-color 2202 | 2203 | find-up@4.1.0: 2204 | dependencies: 2205 | locate-path: 5.0.0 2206 | path-exists: 4.0.0 2207 | 2208 | find-up@5.0.0: 2209 | dependencies: 2210 | locate-path: 6.0.0 2211 | path-exists: 4.0.0 2212 | 2213 | flat-cache@4.0.1: 2214 | dependencies: 2215 | flatted: 3.3.3 2216 | keyv: 4.5.4 2217 | 2218 | flatted@3.3.3: {} 2219 | 2220 | forwarded@0.2.0: {} 2221 | 2222 | fresh@2.0.0: {} 2223 | 2224 | fsevents@2.3.3: 2225 | optional: true 2226 | 2227 | function-bind@1.1.2: {} 2228 | 2229 | fzf@0.5.2: {} 2230 | 2231 | get-intrinsic@1.3.0: 2232 | dependencies: 2233 | call-bind-apply-helpers: 1.0.2 2234 | es-define-property: 1.0.1 2235 | es-errors: 1.3.0 2236 | es-object-atoms: 1.1.1 2237 | function-bind: 1.1.2 2238 | get-proto: 1.0.1 2239 | gopd: 1.2.0 2240 | has-symbols: 1.1.0 2241 | hasown: 2.0.2 2242 | math-intrinsics: 1.1.0 2243 | 2244 | get-proto@1.0.1: 2245 | dependencies: 2246 | dunder-proto: 1.0.1 2247 | es-object-atoms: 1.1.1 2248 | 2249 | get-tsconfig@4.10.0: 2250 | dependencies: 2251 | resolve-pkg-maps: 1.0.0 2252 | 2253 | glob-parent@5.1.2: 2254 | dependencies: 2255 | is-glob: 4.0.3 2256 | 2257 | glob-parent@6.0.2: 2258 | dependencies: 2259 | is-glob: 4.0.3 2260 | 2261 | globals@14.0.0: {} 2262 | 2263 | globals@15.15.0: {} 2264 | 2265 | globby@11.1.0: 2266 | dependencies: 2267 | array-union: 2.1.0 2268 | dir-glob: 3.0.1 2269 | fast-glob: 3.3.3 2270 | ignore: 5.3.2 2271 | merge2: 1.4.1 2272 | slash: 3.0.0 2273 | 2274 | gopd@1.2.0: {} 2275 | 2276 | graphemer@1.4.0: {} 2277 | 2278 | has-flag@4.0.0: {} 2279 | 2280 | has-symbols@1.1.0: {} 2281 | 2282 | hasown@2.0.2: 2283 | dependencies: 2284 | function-bind: 1.1.2 2285 | 2286 | hosted-git-info@2.8.9: {} 2287 | 2288 | http-errors@2.0.0: 2289 | dependencies: 2290 | depd: 2.0.0 2291 | inherits: 2.0.4 2292 | setprototypeof: 1.2.0 2293 | statuses: 2.0.1 2294 | toidentifier: 1.0.1 2295 | 2296 | iconv-lite@0.6.3: 2297 | dependencies: 2298 | safer-buffer: 2.1.2 2299 | 2300 | ignore@5.3.2: {} 2301 | 2302 | import-fresh@3.3.1: 2303 | dependencies: 2304 | parent-module: 1.0.1 2305 | resolve-from: 4.0.0 2306 | 2307 | imurmurhash@0.1.4: {} 2308 | 2309 | indent-string@4.0.0: {} 2310 | 2311 | inherits@2.0.4: {} 2312 | 2313 | ipaddr.js@1.9.1: {} 2314 | 2315 | is-arrayish@0.2.1: {} 2316 | 2317 | is-builtin-module@3.2.1: 2318 | dependencies: 2319 | builtin-modules: 3.3.0 2320 | 2321 | is-core-module@2.16.1: 2322 | dependencies: 2323 | hasown: 2.0.2 2324 | 2325 | is-extglob@2.1.1: {} 2326 | 2327 | is-glob@4.0.3: 2328 | dependencies: 2329 | is-extglob: 2.1.1 2330 | 2331 | is-number@7.0.0: {} 2332 | 2333 | is-promise@4.0.0: {} 2334 | 2335 | isexe@2.0.0: {} 2336 | 2337 | js-tokens@4.0.0: {} 2338 | 2339 | js-yaml@4.1.0: 2340 | dependencies: 2341 | argparse: 2.0.1 2342 | 2343 | jsesc@0.5.0: {} 2344 | 2345 | jsesc@3.1.0: {} 2346 | 2347 | json-buffer@3.0.1: {} 2348 | 2349 | json-parse-even-better-errors@2.3.1: {} 2350 | 2351 | json-schema-traverse@0.4.1: {} 2352 | 2353 | json-stable-stringify-without-jsonify@1.0.1: {} 2354 | 2355 | jsonc-eslint-parser@2.4.0: 2356 | dependencies: 2357 | acorn: 8.14.1 2358 | eslint-visitor-keys: 3.4.3 2359 | espree: 9.6.1 2360 | semver: 7.7.1 2361 | 2362 | keyv@4.5.4: 2363 | dependencies: 2364 | json-buffer: 3.0.1 2365 | 2366 | levn@0.4.1: 2367 | dependencies: 2368 | prelude-ls: 1.2.1 2369 | type-check: 0.4.0 2370 | 2371 | lines-and-columns@1.2.4: {} 2372 | 2373 | locate-path@5.0.0: 2374 | dependencies: 2375 | p-locate: 4.1.0 2376 | 2377 | locate-path@6.0.0: 2378 | dependencies: 2379 | p-locate: 5.0.0 2380 | 2381 | lodash.merge@4.6.2: {} 2382 | 2383 | math-intrinsics@1.1.0: {} 2384 | 2385 | media-typer@1.1.0: {} 2386 | 2387 | merge-descriptors@2.0.0: {} 2388 | 2389 | merge2@1.4.1: {} 2390 | 2391 | micromatch@4.0.8: 2392 | dependencies: 2393 | braces: 3.0.3 2394 | picomatch: 2.3.1 2395 | 2396 | mime-db@1.54.0: {} 2397 | 2398 | mime-types@3.0.1: 2399 | dependencies: 2400 | mime-db: 1.54.0 2401 | 2402 | min-indent@1.0.1: {} 2403 | 2404 | minimatch@3.1.2: 2405 | dependencies: 2406 | brace-expansion: 1.1.11 2407 | 2408 | minimatch@9.0.5: 2409 | dependencies: 2410 | brace-expansion: 2.0.1 2411 | 2412 | ms@2.1.3: {} 2413 | 2414 | natural-compare@1.4.0: {} 2415 | 2416 | negotiator@1.0.0: {} 2417 | 2418 | node-releases@2.0.19: {} 2419 | 2420 | normalize-package-data@2.5.0: 2421 | dependencies: 2422 | hosted-git-info: 2.8.9 2423 | resolve: 1.22.10 2424 | semver: 5.7.2 2425 | validate-npm-package-license: 3.0.4 2426 | 2427 | object-assign@4.1.1: {} 2428 | 2429 | object-inspect@1.13.4: {} 2430 | 2431 | on-finished@2.4.1: 2432 | dependencies: 2433 | ee-first: 1.1.1 2434 | 2435 | once@1.4.0: 2436 | dependencies: 2437 | wrappy: 1.0.2 2438 | 2439 | optionator@0.9.4: 2440 | dependencies: 2441 | deep-is: 0.1.4 2442 | fast-levenshtein: 2.0.6 2443 | levn: 0.4.1 2444 | prelude-ls: 1.2.1 2445 | type-check: 0.4.0 2446 | word-wrap: 1.2.5 2447 | 2448 | p-limit@2.3.0: 2449 | dependencies: 2450 | p-try: 2.2.0 2451 | 2452 | p-limit@3.1.0: 2453 | dependencies: 2454 | yocto-queue: 0.1.0 2455 | 2456 | p-locate@4.1.0: 2457 | dependencies: 2458 | p-limit: 2.3.0 2459 | 2460 | p-locate@5.0.0: 2461 | dependencies: 2462 | p-limit: 3.1.0 2463 | 2464 | p-try@2.2.0: {} 2465 | 2466 | package-manager-detector@1.2.0: {} 2467 | 2468 | parent-module@1.0.1: 2469 | dependencies: 2470 | callsites: 3.1.0 2471 | 2472 | parse-json@5.2.0: 2473 | dependencies: 2474 | '@babel/code-frame': 7.27.1 2475 | error-ex: 1.3.2 2476 | json-parse-even-better-errors: 2.3.1 2477 | lines-and-columns: 1.2.4 2478 | 2479 | parseurl@1.3.3: {} 2480 | 2481 | path-exists@4.0.0: {} 2482 | 2483 | path-key@3.1.1: {} 2484 | 2485 | path-parse@1.0.7: {} 2486 | 2487 | path-to-regexp@8.2.0: {} 2488 | 2489 | path-type@4.0.0: {} 2490 | 2491 | picocolors@1.1.1: {} 2492 | 2493 | picomatch@2.3.1: {} 2494 | 2495 | pkce-challenge@5.0.0: {} 2496 | 2497 | pluralize@8.0.0: {} 2498 | 2499 | prelude-ls@1.2.1: {} 2500 | 2501 | prettier-linter-helpers@1.0.0: 2502 | dependencies: 2503 | fast-diff: 1.3.0 2504 | 2505 | prettier@3.5.3: {} 2506 | 2507 | proxy-addr@2.0.7: 2508 | dependencies: 2509 | forwarded: 0.2.0 2510 | ipaddr.js: 1.9.1 2511 | 2512 | punycode@2.3.1: {} 2513 | 2514 | qs@6.14.0: 2515 | dependencies: 2516 | side-channel: 1.1.0 2517 | 2518 | queue-microtask@1.2.3: {} 2519 | 2520 | range-parser@1.2.1: {} 2521 | 2522 | raw-body@3.0.0: 2523 | dependencies: 2524 | bytes: 3.1.2 2525 | http-errors: 2.0.0 2526 | iconv-lite: 0.6.3 2527 | unpipe: 1.0.0 2528 | 2529 | read-pkg-up@7.0.1: 2530 | dependencies: 2531 | find-up: 4.1.0 2532 | read-pkg: 5.2.0 2533 | type-fest: 0.8.1 2534 | 2535 | read-pkg@5.2.0: 2536 | dependencies: 2537 | '@types/normalize-package-data': 2.4.4 2538 | normalize-package-data: 2.5.0 2539 | parse-json: 5.2.0 2540 | type-fest: 0.6.0 2541 | 2542 | regexp-tree@0.1.27: {} 2543 | 2544 | regjsparser@0.10.0: 2545 | dependencies: 2546 | jsesc: 0.5.0 2547 | 2548 | resolve-from@4.0.0: {} 2549 | 2550 | resolve-pkg-maps@1.0.0: {} 2551 | 2552 | resolve@1.22.10: 2553 | dependencies: 2554 | is-core-module: 2.16.1 2555 | path-parse: 1.0.7 2556 | supports-preserve-symlinks-flag: 1.0.0 2557 | 2558 | reusify@1.1.0: {} 2559 | 2560 | router@2.2.0: 2561 | dependencies: 2562 | debug: 4.4.0 2563 | depd: 2.0.0 2564 | is-promise: 4.0.0 2565 | parseurl: 1.3.3 2566 | path-to-regexp: 8.2.0 2567 | transitivePeerDependencies: 2568 | - supports-color 2569 | 2570 | run-parallel@1.2.0: 2571 | dependencies: 2572 | queue-microtask: 1.2.3 2573 | 2574 | safe-buffer@5.2.1: {} 2575 | 2576 | safer-buffer@2.1.2: {} 2577 | 2578 | semver@5.7.2: {} 2579 | 2580 | semver@7.7.1: {} 2581 | 2582 | send@1.2.0: 2583 | dependencies: 2584 | debug: 4.4.0 2585 | encodeurl: 2.0.0 2586 | escape-html: 1.0.3 2587 | etag: 1.8.1 2588 | fresh: 2.0.0 2589 | http-errors: 2.0.0 2590 | mime-types: 3.0.1 2591 | ms: 2.1.3 2592 | on-finished: 2.4.1 2593 | range-parser: 1.2.1 2594 | statuses: 2.0.1 2595 | transitivePeerDependencies: 2596 | - supports-color 2597 | 2598 | serve-static@2.2.0: 2599 | dependencies: 2600 | encodeurl: 2.0.0 2601 | escape-html: 1.0.3 2602 | parseurl: 1.3.3 2603 | send: 1.2.0 2604 | transitivePeerDependencies: 2605 | - supports-color 2606 | 2607 | setprototypeof@1.2.0: {} 2608 | 2609 | shebang-command@2.0.0: 2610 | dependencies: 2611 | shebang-regex: 3.0.0 2612 | 2613 | shebang-regex@3.0.0: {} 2614 | 2615 | side-channel-list@1.0.0: 2616 | dependencies: 2617 | es-errors: 1.3.0 2618 | object-inspect: 1.13.4 2619 | 2620 | side-channel-map@1.0.1: 2621 | dependencies: 2622 | call-bound: 1.0.4 2623 | es-errors: 1.3.0 2624 | get-intrinsic: 1.3.0 2625 | object-inspect: 1.13.4 2626 | 2627 | side-channel-weakmap@1.0.2: 2628 | dependencies: 2629 | call-bound: 1.0.4 2630 | es-errors: 1.3.0 2631 | get-intrinsic: 1.3.0 2632 | object-inspect: 1.13.4 2633 | side-channel-map: 1.0.1 2634 | 2635 | side-channel@1.1.0: 2636 | dependencies: 2637 | es-errors: 1.3.0 2638 | object-inspect: 1.13.4 2639 | side-channel-list: 1.0.0 2640 | side-channel-map: 1.0.1 2641 | side-channel-weakmap: 1.0.2 2642 | 2643 | slash@3.0.0: {} 2644 | 2645 | spdx-correct@3.2.0: 2646 | dependencies: 2647 | spdx-expression-parse: 3.0.1 2648 | spdx-license-ids: 3.0.21 2649 | 2650 | spdx-exceptions@2.5.0: {} 2651 | 2652 | spdx-expression-parse@3.0.1: 2653 | dependencies: 2654 | spdx-exceptions: 2.5.0 2655 | spdx-license-ids: 3.0.21 2656 | 2657 | spdx-license-ids@3.0.21: {} 2658 | 2659 | stable-hash@0.0.4: {} 2660 | 2661 | statuses@2.0.1: {} 2662 | 2663 | strip-indent@3.0.0: 2664 | dependencies: 2665 | min-indent: 1.0.1 2666 | 2667 | strip-json-comments@3.1.1: {} 2668 | 2669 | supports-color@7.2.0: 2670 | dependencies: 2671 | has-flag: 4.0.0 2672 | 2673 | supports-preserve-symlinks-flag@1.0.0: {} 2674 | 2675 | synckit@0.10.3: 2676 | dependencies: 2677 | '@pkgr/core': 0.2.4 2678 | tslib: 2.8.1 2679 | 2680 | synckit@0.11.4: 2681 | dependencies: 2682 | '@pkgr/core': 0.2.4 2683 | tslib: 2.8.1 2684 | 2685 | tinyexec@1.0.1: {} 2686 | 2687 | to-regex-range@5.0.1: 2688 | dependencies: 2689 | is-number: 7.0.0 2690 | 2691 | toidentifier@1.0.1: {} 2692 | 2693 | ts-api-utils@1.4.3(typescript@5.8.3): 2694 | dependencies: 2695 | typescript: 5.8.3 2696 | 2697 | ts-api-utils@2.1.0(typescript@5.8.3): 2698 | dependencies: 2699 | typescript: 5.8.3 2700 | 2701 | tslib@2.8.1: {} 2702 | 2703 | tsx@4.19.3: 2704 | dependencies: 2705 | esbuild: 0.25.3 2706 | get-tsconfig: 4.10.0 2707 | optionalDependencies: 2708 | fsevents: 2.3.3 2709 | 2710 | tunnel@0.0.6: {} 2711 | 2712 | type-check@0.4.0: 2713 | dependencies: 2714 | prelude-ls: 1.2.1 2715 | 2716 | type-fest@0.6.0: {} 2717 | 2718 | type-fest@0.8.1: {} 2719 | 2720 | type-is@2.0.1: 2721 | dependencies: 2722 | content-type: 1.0.5 2723 | media-typer: 1.1.0 2724 | mime-types: 3.0.1 2725 | 2726 | typescript-eslint@8.31.1(eslint@9.26.0)(typescript@5.8.3): 2727 | dependencies: 2728 | '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3) 2729 | '@typescript-eslint/parser': 8.31.1(eslint@9.26.0)(typescript@5.8.3) 2730 | '@typescript-eslint/utils': 8.31.1(eslint@9.26.0)(typescript@5.8.3) 2731 | eslint: 9.26.0 2732 | typescript: 5.8.3 2733 | transitivePeerDependencies: 2734 | - supports-color 2735 | 2736 | typescript@5.8.3: {} 2737 | 2738 | undici-types@6.21.0: {} 2739 | 2740 | undici@5.29.0: 2741 | dependencies: 2742 | '@fastify/busboy': 2.1.1 2743 | 2744 | unpipe@1.0.0: {} 2745 | 2746 | update-browserslist-db@1.1.3(browserslist@4.24.5): 2747 | dependencies: 2748 | browserslist: 4.24.5 2749 | escalade: 3.2.0 2750 | picocolors: 1.1.1 2751 | 2752 | uri-js@4.4.1: 2753 | dependencies: 2754 | punycode: 2.3.1 2755 | 2756 | validate-npm-package-license@3.0.4: 2757 | dependencies: 2758 | spdx-correct: 3.2.0 2759 | spdx-expression-parse: 3.0.1 2760 | 2761 | vary@1.1.2: {} 2762 | 2763 | which@2.0.2: 2764 | dependencies: 2765 | isexe: 2.0.0 2766 | 2767 | word-wrap@1.2.5: {} 2768 | 2769 | wrappy@1.0.2: {} 2770 | 2771 | yocto-queue@0.1.0: {} 2772 | 2773 | zod-to-json-schema@3.24.5(zod@3.24.4): 2774 | dependencies: 2775 | zod: 3.24.4 2776 | 2777 | zod@3.24.4: {} 2778 | --------------------------------------------------------------------------------