Initial scaffold: ACP client extension for siGit Code

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014EUvyohLND97Xxew23jN2d

paydii committed Jun 25, 2026 at 16:51 UTC 803500e391a15227291cd5e2011f711792fca77d
21 files changed +6092
.eslintrc.json new
+25
@@ -0,0 +1,25 @@
1 +{
2 + "root": true,
3 + "parser": "@typescript-eslint/parser",
4 + "parserOptions": {
5 + "ecmaVersion": 2022,
6 + "sourceType": "module"
7 + },
8 + "plugins": ["@typescript-eslint"],
9 + "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
10 + "env": {
11 + "node": true,
12 + "es2022": true
13 + },
14 + "rules": {
15 + "@typescript-eslint/no-explicit-any": "off",
16 + "@typescript-eslint/no-unused-vars": [
17 + "warn",
18 + { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }
19 + ],
20 + "semi": ["warn", "always"],
21 + "curly": "warn",
22 + "eqeqeq": ["warn", "always"]
23 + },
24 + "ignorePatterns": ["dist", "node_modules", "esbuild.js", "media"]
25 +}
.github/workflows/ci.yml new
+31
@@ -0,0 +1,31 @@
1 +name: CI
2 +
3 +on:
4 + push:
5 + branches: ["**"]
6 + pull_request:
7 + branches: ["**"]
8 +
9 +jobs:
10 + build:
11 + runs-on: ubuntu-latest
12 + steps:
13 + - uses: actions/checkout@v4
14 +
15 + - name: Setup Node.js
16 + uses: actions/setup-node@v4
17 + with:
18 + node-version: "20"
19 + cache: npm
20 +
21 + - name: Install dependencies
22 + run: npm ci
23 +
24 + - name: Lint
25 + run: npm run lint
26 +
27 + - name: Type check
28 + run: npm run compile
29 +
30 + - name: Build
31 + run: npm run build
.gitignore new
+5
@@ -0,0 +1,5 @@
1 +node_modules/
2 +dist/
3 +*.vsix
4 +*.log
5 +.DS_Store
.vscode/launch.json new
+13
@@ -0,0 +1,13 @@
1 +{
2 + "version": "0.2.0",
3 + "configurations": [
4 + {
5 + "name": "Run Extension",
6 + "type": "extensionHost",
7 + "request": "launch",
8 + "args": ["--extensionDevelopmentPath=${workspaceFolder}"],
9 + "outFiles": ["${workspaceFolder}/dist/**/*.js"],
10 + "preLaunchTask": "${defaultBuildTask}"
11 + }
12 + ]
13 +}
.vscode/tasks.json new
+35
@@ -0,0 +1,35 @@
1 +{
2 + "version": "2.0.0",
3 + "tasks": [
4 + {
5 + "label": "npm: watch",
6 + "type": "npm",
7 + "script": "watch",
8 + "isBackground": true,
9 + "group": {
10 + "kind": "build",
11 + "isDefault": true
12 + },
13 + "presentation": {
14 + "reveal": "never",
15 + "group": "watch"
16 + },
17 + "problemMatcher": {
18 + "owner": "esbuild",
19 + "pattern": {
20 + "regexp": "^\\s*(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
21 + "file": 1,
22 + "line": 2,
23 + "column": 3,
24 + "severity": 4,
25 + "message": 5
26 + },
27 + "background": {
28 + "activeOnStart": true,
29 + "beginsPattern": "\\[esbuild\\] watching for changes",
30 + "endsPattern": "\\[esbuild\\] (build complete|watching for changes)"
31 + }
32 + }
33 + }
34 + ]
35 +}
.vscodeignore new
+13
@@ -0,0 +1,13 @@
1 +.vscode/**
2 +.github/**
3 +src/**
4 +node_modules/**
5 +**/*.ts
6 +**/*.map
7 +esbuild.js
8 +tsconfig.json
9 +.eslintrc.json
10 +.gitignore
11 +.vscodeignore
12 +**/.DS_Store
13 +*.vsix
CHANGELOG.md new
+21
@@ -0,0 +1,21 @@
1 +# Changelog
2 +
3 +All notable changes to the **siGit Code** extension are documented here.
4 +
5 +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6 +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7 +
8 +## [Unreleased]
9 +
10 +### Added
11 +
12 +- Initial scaffold: ACP (Agent Client Protocol) client extension for siGit Code.
13 +- On-device `sigit` agent as the local-first default.
14 +- JSON-RPC 2.0 peer over newline-delimited JSON for ACP transport.
15 +- ACP handshake (`initialize` → `session/new` → `session/prompt`) with streaming
16 + `session/update` notifications (message, thought, and tool-call chunks).
17 +- Inbound agent requests: `session/request_permission`, `fs/read_text_file`,
18 + `fs/write_text_file`.
19 +- Webview chat view in the Activity Bar with streaming output.
20 +- Agent registry (`sigit.agents`) and permission modes (`prompt`/`allow`/`deny`).
21 +- Commands: open chat, new session, select agent, restart agent.
LICENSE new
+21
@@ -0,0 +1,21 @@
1 +MIT License
2 +
3 +Copyright (c) 2026 siGit
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.
README.md new
+112
@@ -0,0 +1,112 @@
1 +# siGit Code — On-device AI Coding Agent
2 +
3 +**Your code never has to leave your machine.** siGit Code is a local-first AI
4 +coding agent for VS Code. It runs the on-device [`sigit`](https://code.sigit.si)
5 +agent, a quantized (GGUF) model that executes entirely on your hardware and
6 +works offline, and brings it into the editor as a chat-driven pair programmer.
7 +
8 +There are no cloud round-trips and no API keys for the default agent. The model
9 +lives on your device, and so does your code.
10 +
11 +siGit Code also speaks the open [Agent Client
12 +Protocol](https://agentclientprotocol.com) (ACP), so it can drive other
13 +ACP-compatible agents over stdio. The on-device agent is still the point.
14 +
15 +## Why local-first
16 +
17 +- Your prompts and file contents stay on your machine.
18 +- It works offline, including on a plane or behind an air gap.
19 +- There is no per-token billing, so you can run it as much as your hardware allows.
20 +- You choose the model and the weights, and they do not change underneath you.
21 +
22 +ACP and multi-agent support are there for when you need a hosted agent. They are
23 +not the headline.
24 +
25 +## Requirements
26 +
27 +- VS Code `^1.90.0`
28 +- The `sigit` binary on your `PATH`.
29 + Install it from [code.sigit.si](https://code.sigit.si).
30 +
31 +> siGit Code only *spawns* the `sigit` binary over ACP, so it has no build-time
32 +> dependency on the agent. Install the agent separately.
33 +
34 +## Getting started
35 +
36 +1. Install the `sigit` agent (see [code.sigit.si](https://code.sigit.si)) and
37 + confirm `sigit` runs from your terminal.
38 +2. Install this extension.
39 +3. Click the **siGit Code** icon in the Activity Bar to open the chat view.
40 +4. Type a prompt and press **Enter**. The extension spawns the agent, opens a
41 + session in your workspace folder, and streams the response.
42 +
43 +Commands (Command Palette):
44 +
45 +| Command | Description |
46 +| --- | --- |
47 +| `siGit: Open Chat` | Reveal the chat view. |
48 +| `siGit: New Session` | Start a fresh session with the active agent. |
49 +| `siGit: Select Agent` | Pick an agent from the registry. |
50 +| `siGit: Restart Agent` | Restart the active agent process. |
51 +
52 +## Configuration
53 +
54 +| Setting | Type | Default | Description |
55 +| --- | --- | --- | --- |
56 +| `sigit.agent.default` | string | `"sigit"` | Key of the agent used by default, looked up in `sigit.agents`. |
57 +| `sigit.agents` | object | on-device `sigit` | Registry of ACP agents (`{ name, command, args, env }`). |
58 +| `sigit.permission.mode` | enum | `"prompt"` | `prompt`, `allow`, or `deny` for agent-requested actions. |
59 +
60 +### Add another ACP agent
61 +
62 +The default registry contains only the on-device agent. To add another
63 +ACP-compatible agent, extend `sigit.agents` in your `settings.json`:
64 +
65 +```jsonc
66 +{
67 + "sigit.agents": {
68 + "sigit": {
69 + "name": "siGit (on-device)",
70 + "command": "sigit",
71 + "args": [],
72 + "env": {}
73 + },
74 + "claude-code": {
75 + "name": "Claude Code (ACP)",
76 + "command": "claude-code-acp",
77 + "args": [],
78 + "env": {}
79 + },
80 + "gemini": {
81 + "name": "Gemini CLI (ACP)",
82 + "command": "gemini",
83 + "args": ["--experimental-acp"],
84 + "env": {}
85 + }
86 + },
87 + "sigit.agent.default": "sigit"
88 +}
89 +```
90 +
91 +Then run **`siGit: Select Agent`** to switch between them.
92 +
93 +## Development
94 +
95 +```bash
96 +npm install
97 +npm run watch # esbuild in watch mode
98 +# Press F5 to launch the Extension Development Host
99 +```
100 +
101 +Other scripts:
102 +
103 +```bash
104 +npm run compile # tsc --noEmit type check
105 +npm run lint # eslint
106 +npm run build # production bundle (esbuild)
107 +npm run package # vsce package (.vsix)
108 +```
109 +
110 +## License
111 +
112 +[MIT](./LICENSE) © 2026 siGit
esbuild.js new
+34
@@ -0,0 +1,34 @@
1 +const esbuild = require("esbuild");
2 +
3 +const production = process.argv.includes("--production");
4 +const watch = process.argv.includes("--watch");
5 +
6 +/** @type {import('esbuild').BuildOptions} */
7 +const options = {
8 + entryPoints: ["src/extension.ts"],
9 + bundle: true,
10 + outfile: "dist/extension.js",
11 + format: "cjs",
12 + platform: "node",
13 + target: "node18",
14 + external: ["vscode"],
15 + sourcemap: !production,
16 + minify: production,
17 + logLevel: "info"
18 +};
19 +
20 +async function main() {
21 + if (watch) {
22 + const ctx = await esbuild.context(options);
23 + await ctx.watch();
24 + console.log("[esbuild] watching for changes...");
25 + } else {
26 + await esbuild.build(options);
27 + console.log("[esbuild] build complete");
28 + }
29 +}
30 +
31 +main().catch((err) => {
32 + console.error(err);
33 + process.exit(1);
34 +});
media/activity-icon.svg new
+5
@@ -0,0 +1,5 @@
1 +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2 + <path d="M21 12a9 9 0 1 1-3.6-7.2" />
3 + <polyline points="21 4 21 9 16 9" />
4 + <circle cx="12" cy="12" r="3" />
5 +</svg>
media/main.css new
+131
@@ -0,0 +1,131 @@
1 +:root {
2 + --sigit-gap: 8px;
3 +}
4 +
5 +* {
6 + box-sizing: border-box;
7 +}
8 +
9 +html,
10 +body {
11 + height: 100%;
12 + margin: 0;
13 + padding: 0;
14 +}
15 +
16 +body {
17 + display: flex;
18 + flex-direction: column;
19 + font-family: var(--vscode-font-family);
20 + font-size: var(--vscode-font-size);
21 + color: var(--vscode-foreground);
22 + background-color: var(--vscode-sideBar-background);
23 +}
24 +
25 +.messages {
26 + flex: 1;
27 + overflow-y: auto;
28 + padding: var(--sigit-gap);
29 + display: flex;
30 + flex-direction: column;
31 + gap: var(--sigit-gap);
32 +}
33 +
34 +.message {
35 + display: flex;
36 +}
37 +
38 +.message-user {
39 + justify-content: flex-end;
40 +}
41 +
42 +.bubble {
43 + max-width: 92%;
44 + padding: 6px 10px;
45 + border-radius: 6px;
46 + white-space: pre-wrap;
47 + word-wrap: break-word;
48 + line-height: 1.4;
49 +}
50 +
51 +.message-user .bubble {
52 + background-color: var(--vscode-button-background);
53 + color: var(--vscode-button-foreground);
54 +}
55 +
56 +.message-assistant .bubble {
57 + background-color: var(--vscode-editor-inactiveSelectionBackground);
58 + color: var(--vscode-foreground);
59 +}
60 +
61 +.message-thought .bubble {
62 + background-color: transparent;
63 + color: var(--vscode-descriptionForeground);
64 + font-style: italic;
65 + border-left: 2px solid var(--vscode-panel-border);
66 + border-radius: 0;
67 +}
68 +
69 +.message-tool .bubble {
70 + background-color: transparent;
71 + color: var(--vscode-descriptionForeground);
72 + font-family: var(--vscode-editor-font-family, monospace);
73 + font-size: 0.9em;
74 + border: 1px solid var(--vscode-panel-border);
75 +}
76 +
77 +.message-error .bubble {
78 + background-color: var(--vscode-inputValidation-errorBackground);
79 + color: var(--vscode-foreground);
80 + border: 1px solid var(--vscode-inputValidation-errorBorder);
81 +}
82 +
83 +.status {
84 + padding: 2px var(--sigit-gap);
85 + font-size: 0.85em;
86 + color: var(--vscode-descriptionForeground);
87 + min-height: 1.2em;
88 +}
89 +
90 +.composer {
91 + display: flex;
92 + gap: var(--sigit-gap);
93 + padding: var(--sigit-gap);
94 + border-top: 1px solid var(--vscode-panel-border);
95 +}
96 +
97 +.input {
98 + flex: 1;
99 + resize: none;
100 + font-family: inherit;
101 + font-size: inherit;
102 + color: var(--vscode-input-foreground);
103 + background-color: var(--vscode-input-background);
104 + border: 1px solid var(--vscode-input-border, transparent);
105 + border-radius: 4px;
106 + padding: 6px 8px;
107 +}
108 +
109 +.input:focus {
110 + outline: 1px solid var(--vscode-focusBorder);
111 + outline-offset: -1px;
112 +}
113 +
114 +.send {
115 + align-self: flex-end;
116 + color: var(--vscode-button-foreground);
117 + background-color: var(--vscode-button-background);
118 + border: none;
119 + border-radius: 4px;
120 + padding: 6px 12px;
121 + cursor: pointer;
122 +}
123 +
124 +.send:hover {
125 + background-color: var(--vscode-button-hoverBackground);
126 +}
127 +
128 +.send:disabled {
129 + opacity: 0.6;
130 + cursor: default;
131 +}
media/main.js new
+125
@@ -0,0 +1,125 @@
1 +// @ts-check
2 +(function () {
3 + const vscode = acquireVsCodeApi();
4 +
5 + const messagesEl = document.getElementById("messages");
6 + const statusEl = document.getElementById("status");
7 + const formEl = document.getElementById("composer");
8 + const inputEl = /** @type {HTMLTextAreaElement} */ (document.getElementById("input"));
9 + const sendEl = /** @type {HTMLButtonElement} */ (document.getElementById("send"));
10 +
11 + // The assistant streams in chunks; keep a handle to the current bubble so we
12 + // can append to it rather than creating a new one per chunk.
13 + let currentAssistant = null;
14 + let busy = false;
15 +
16 + function scrollToBottom() {
17 + messagesEl.scrollTop = messagesEl.scrollHeight;
18 + }
19 +
20 + function addMessage(role, text) {
21 + const el = document.createElement("div");
22 + el.className = "message message-" + role;
23 + const body = document.createElement("div");
24 + body.className = "bubble";
25 + body.textContent = text;
26 + el.appendChild(body);
27 + messagesEl.appendChild(el);
28 + scrollToBottom();
29 + return body;
30 + }
31 +
32 + function appendAssistant(text) {
33 + if (!currentAssistant) {
34 + currentAssistant = addMessage("assistant", "");
35 + }
36 + currentAssistant.textContent += text;
37 + scrollToBottom();
38 + }
39 +
40 + function endAssistant() {
41 + currentAssistant = null;
42 + }
43 +
44 + function setStatus(text) {
45 + statusEl.textContent = text;
46 + }
47 +
48 + function setBusy(value) {
49 + busy = value;
50 + sendEl.disabled = value;
51 + sendEl.textContent = value ? "…" : "Send";
52 + }
53 +
54 + function send() {
55 + const text = inputEl.value.trim();
56 + if (!text || busy) {
57 + return;
58 + }
59 + endAssistant();
60 + vscode.postMessage({ type: "prompt", text });
61 + inputEl.value = "";
62 + }
63 +
64 + formEl.addEventListener("submit", (e) => {
65 + e.preventDefault();
66 + send();
67 + });
68 +
69 + inputEl.addEventListener("keydown", (e) => {
70 + // Enter sends; Shift+Enter inserts a newline.
71 + if (e.key === "Enter" && !e.shiftKey) {
72 + e.preventDefault();
73 + send();
74 + }
75 + });
76 +
77 + window.addEventListener("message", (event) => {
78 + const message = event.data;
79 + switch (message.type) {
80 + case "user":
81 + endAssistant();
82 + addMessage("user", message.text);
83 + break;
84 + case "assistant":
85 + appendAssistant(message.text || "");
86 + break;
87 + case "thought":
88 + addMessage("thought", message.text || "");
89 + break;
90 + case "tool": {
91 + const label = message.title + (message.status ? " — " + message.status : "");
92 + addMessage("tool", label);
93 + break;
94 + }
95 + case "status":
96 + setStatus(message.text || "");
97 + break;
98 + case "error":
99 + endAssistant();
100 + addMessage("error", message.text || "Error");
101 + break;
102 + case "log":
103 + // Agent stderr — surface quietly in the status line.
104 + if (message.text) {
105 + setStatus(String(message.text).trim().split("\n").pop() || "");
106 + }
107 + break;
108 + case "busy":
109 + setBusy(!!message.busy);
110 + break;
111 + case "turnEnd":
112 + endAssistant();
113 + setBusy(false);
114 + break;
115 + case "clear":
116 + messagesEl.innerHTML = "";
117 + endAssistant();
118 + break;
119 + default:
120 + break;
121 + }
122 + });
123 +
124 + vscode.postMessage({ type: "ready" });
125 +})();
package-lock.json new
+4505
@@ -0,0 +1,4505 @@
1 +{
2 + "name": "sigit-code",
3 + "version": "0.0.1",
4 + "lockfileVersion": 3,
5 + "requires": true,
6 + "packages": {
7 + "": {
8 + "name": "sigit-code",
9 + "version": "0.0.1",
10 + "license": "MIT",
11 + "devDependencies": {
12 + "@types/node": "^20.11.0",
13 + "@types/vscode": "^1.90.0",
14 + "@typescript-eslint/eslint-plugin": "^7.0.0",
15 + "@typescript-eslint/parser": "^7.0.0",
16 + "@vscode/vsce": "^2.24.0",
17 + "esbuild": "^0.20.0",
18 + "eslint": "^8.57.0",
19 + "typescript": "^5.4.0"
20 + },
21 + "engines": {
22 + "vscode": "^1.90.0"
23 + }
24 + },
25 + "node_modules/@azure/abort-controller": {
26 + "version": "2.1.2",
27 + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
28 + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
29 + "dev": true,
30 + "license": "MIT",
31 + "dependencies": {
32 + "tslib": "^2.6.2"
33 + },
34 + "engines": {
35 + "node": ">=18.0.0"
36 + }
37 + },
38 + "node_modules/@azure/core-auth": {
39 + "version": "1.10.1",
40 + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz",
41 + "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==",
42 + "dev": true,
43 + "license": "MIT",
44 + "dependencies": {
45 + "@azure/abort-controller": "^2.1.2",
46 + "@azure/core-util": "^1.13.0",
47 + "tslib": "^2.6.2"
48 + },
49 + "engines": {
50 + "node": ">=20.0.0"
51 + }
52 + },
53 + "node_modules/@azure/core-client": {
54 + "version": "1.10.2",
55 + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.2.tgz",
56 + "integrity": "sha512-1D2LpsU7y9xrqKjdIbsB7PlrRePw0xsVV8p+AKTlzITrWmscajryfJCdDJB/oGwvDI5HmRo04eMMADB67uwAwQ==",
57 + "dev": true,
58 + "license": "MIT",
59 + "dependencies": {
60 + "@azure/abort-controller": "^2.1.2",
61 + "@azure/core-auth": "^1.10.0",
62 + "@azure/core-rest-pipeline": "^1.22.0",
63 + "@azure/core-tracing": "^1.3.0",
64 + "@azure/core-util": "^1.13.0",
65 + "@azure/logger": "^1.3.0",
66 + "tslib": "^2.6.2"
67 + },
68 + "engines": {
69 + "node": ">=20.0.0"
70 + }
71 + },
72 + "node_modules/@azure/core-rest-pipeline": {
73 + "version": "1.24.0",
74 + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.24.0.tgz",
75 + "integrity": "sha512-PpLsoDQ3AMmKZ0VU+0GrmqMxgp/sExjlVm4R+nLWngeoEGAzOIPVifaxKGU5gMv+nWELUoHfvrolWD+ZS/nFJg==",
76 + "dev": true,
77 + "license": "MIT",
78 + "dependencies": {
79 + "@azure/abort-controller": "^2.1.2",
80 + "@azure/core-auth": "^1.10.0",
81 + "@azure/core-tracing": "^1.3.0",
82 + "@azure/core-util": "^1.13.0",
83 + "@azure/logger": "^1.3.0",
84 + "@typespec/ts-http-runtime": "^0.3.4",
85 + "tslib": "^2.6.2"
86 + },
87 + "engines": {
88 + "node": ">=20.0.0"
89 + }
90 + },
91 + "node_modules/@azure/core-tracing": {
92 + "version": "1.3.1",
93 + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz",
94 + "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==",
95 + "dev": true,
96 + "license": "MIT",
97 + "dependencies": {
98 + "tslib": "^2.6.2"
99 + },
100 + "engines": {
101 + "node": ">=20.0.0"
102 + }
103 + },
104 + "node_modules/@azure/core-util": {
105 + "version": "1.13.1",
106 + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz",
107 + "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==",
108 + "dev": true,
109 + "license": "MIT",
110 + "dependencies": {
111 + "@azure/abort-controller": "^2.1.2",
112 + "@typespec/ts-http-runtime": "^0.3.0",
113 + "tslib": "^2.6.2"
114 + },
115 + "engines": {
116 + "node": ">=20.0.0"
117 + }
118 + },
119 + "node_modules/@azure/identity": {
120 + "version": "4.13.1",
121 + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.13.1.tgz",
122 + "integrity": "sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==",
123 + "dev": true,
124 + "license": "MIT",
125 + "dependencies": {
126 + "@azure/abort-controller": "^2.0.0",
127 + "@azure/core-auth": "^1.9.0",
128 + "@azure/core-client": "^1.9.2",
129 + "@azure/core-rest-pipeline": "^1.17.0",
130 + "@azure/core-tracing": "^1.0.0",
131 + "@azure/core-util": "^1.11.0",
132 + "@azure/logger": "^1.0.0",
133 + "@azure/msal-browser": "^5.5.0",
134 + "@azure/msal-node": "^5.1.0",
135 + "open": "^10.1.0",
136 + "tslib": "^2.2.0"
137 + },
138 + "engines": {
139 + "node": ">=20.0.0"
140 + }
141 + },
142 + "node_modules/@azure/logger": {
143 + "version": "1.3.0",
144 + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz",
145 + "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==",
146 + "dev": true,
147 + "license": "MIT",
148 + "dependencies": {
149 + "@typespec/ts-http-runtime": "^0.3.0",
150 + "tslib": "^2.6.2"
151 + },
152 + "engines": {
153 + "node": ">=20.0.0"
154 + }
155 + },
156 + "node_modules/@azure/msal-browser": {
157 + "version": "5.15.0",
158 + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-5.15.0.tgz",
159 + "integrity": "sha512-2NYT6v+eeQn8kmNddr9LnbXSvXbVELpmFMmfFvtRxD7I/5+5GlkMlncApeuRFj+mY6C9syOwQip1a0Y+TIbyiA==",
160 + "dev": true,
161 + "license": "MIT",
162 + "dependencies": {
163 + "@azure/msal-common": "16.10.0"
164 + },
165 + "engines": {
166 + "node": ">=0.8.0"
167 + }
168 + },
169 + "node_modules/@azure/msal-common": {
170 + "version": "16.10.0",
171 + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.10.0.tgz",
172 + "integrity": "sha512-iYtjpanlv6963Jprs0MvzIap07V+QhultjQctfbEDQCflsDAEeO3R7XnVA5gk30fhoBFLdgJT7VqO0TGsEsN9w==",
173 + "dev": true,
174 + "license": "MIT",
175 + "engines": {
176 + "node": ">=0.8.0"
177 + }
178 + },
179 + "node_modules/@azure/msal-node": {
180 + "version": "5.3.0",
181 + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.3.0.tgz",
182 + "integrity": "sha512-fXtJX811pX8y8QlrQqBSH6+plvWyKZDI0IxkheAcyAw9OtcpXyFivmTC7eGUqutLWaDlKXuQ3yOESD4zAmkjHg==",
183 + "dev": true,
184 + "license": "MIT",
185 + "dependencies": {
186 + "@azure/msal-common": "16.10.0",
187 + "jsonwebtoken": "^9.0.0"
188 + },
189 + "engines": {
190 + "node": ">=20"
191 + }
192 + },
193 + "node_modules/@esbuild/aix-ppc64": {
194 + "version": "0.20.2",
195 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
196 + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
197 + "cpu": [
198 + "ppc64"
199 + ],
200 + "dev": true,
201 + "license": "MIT",
202 + "optional": true,
203 + "os": [
204 + "aix"
205 + ],
206 + "engines": {
207 + "node": ">=12"
208 + }
209 + },
210 + "node_modules/@esbuild/android-arm": {
211 + "version": "0.20.2",
212 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
213 + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
214 + "cpu": [
215 + "arm"
216 + ],
217 + "dev": true,
218 + "license": "MIT",
219 + "optional": true,
220 + "os": [
221 + "android"
222 + ],
223 + "engines": {
224 + "node": ">=12"
225 + }
226 + },
227 + "node_modules/@esbuild/android-arm64": {
228 + "version": "0.20.2",
229 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
230 + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
231 + "cpu": [
232 + "arm64"
233 + ],
234 + "dev": true,
235 + "license": "MIT",
236 + "optional": true,
237 + "os": [
238 + "android"
239 + ],
240 + "engines": {
241 + "node": ">=12"
242 + }
243 + },
244 + "node_modules/@esbuild/android-x64": {
245 + "version": "0.20.2",
246 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
247 + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
248 + "cpu": [
249 + "x64"
250 + ],
251 + "dev": true,
252 + "license": "MIT",
253 + "optional": true,
254 + "os": [
255 + "android"
256 + ],
257 + "engines": {
258 + "node": ">=12"
259 + }
260 + },
261 + "node_modules/@esbuild/darwin-arm64": {
262 + "version": "0.20.2",
263 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
264 + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
265 + "cpu": [
266 + "arm64"
267 + ],
268 + "dev": true,
269 + "license": "MIT",
270 + "optional": true,
271 + "os": [
272 + "darwin"
273 + ],
274 + "engines": {
275 + "node": ">=12"
276 + }
277 + },
278 + "node_modules/@esbuild/darwin-x64": {
279 + "version": "0.20.2",
280 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
281 + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
282 + "cpu": [
283 + "x64"
284 + ],
285 + "dev": true,
286 + "license": "MIT",
287 + "optional": true,
288 + "os": [
289 + "darwin"
290 + ],
291 + "engines": {
292 + "node": ">=12"
293 + }
294 + },
295 + "node_modules/@esbuild/freebsd-arm64": {
296 + "version": "0.20.2",
297 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
298 + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
299 + "cpu": [
300 + "arm64"
301 + ],
302 + "dev": true,
303 + "license": "MIT",
304 + "optional": true,
305 + "os": [
306 + "freebsd"
307 + ],
308 + "engines": {
309 + "node": ">=12"
310 + }
311 + },
312 + "node_modules/@esbuild/freebsd-x64": {
313 + "version": "0.20.2",
314 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
315 + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
316 + "cpu": [
317 + "x64"
318 + ],
319 + "dev": true,
320 + "license": "MIT",
321 + "optional": true,
322 + "os": [
323 + "freebsd"
324 + ],
325 + "engines": {
326 + "node": ">=12"
327 + }
328 + },
329 + "node_modules/@esbuild/linux-arm": {
330 + "version": "0.20.2",
331 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
332 + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
333 + "cpu": [
334 + "arm"
335 + ],
336 + "dev": true,
337 + "license": "MIT",
338 + "optional": true,
339 + "os": [
340 + "linux"
341 + ],
342 + "engines": {
343 + "node": ">=12"
344 + }
345 + },
346 + "node_modules/@esbuild/linux-arm64": {
347 + "version": "0.20.2",
348 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
349 + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
350 + "cpu": [
351 + "arm64"
352 + ],
353 + "dev": true,
354 + "license": "MIT",
355 + "optional": true,
356 + "os": [
357 + "linux"
358 + ],
359 + "engines": {
360 + "node": ">=12"
361 + }
362 + },
363 + "node_modules/@esbuild/linux-ia32": {
364 + "version": "0.20.2",
365 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
366 + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
367 + "cpu": [
368 + "ia32"
369 + ],
370 + "dev": true,
371 + "license": "MIT",
372 + "optional": true,
373 + "os": [
374 + "linux"
375 + ],
376 + "engines": {
377 + "node": ">=12"
378 + }
379 + },
380 + "node_modules/@esbuild/linux-loong64": {
381 + "version": "0.20.2",
382 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
383 + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
384 + "cpu": [
385 + "loong64"
386 + ],
387 + "dev": true,
388 + "license": "MIT",
389 + "optional": true,
390 + "os": [
391 + "linux"
392 + ],
393 + "engines": {
394 + "node": ">=12"
395 + }
396 + },
397 + "node_modules/@esbuild/linux-mips64el": {
398 + "version": "0.20.2",
399 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
400 + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
401 + "cpu": [
402 + "mips64el"
403 + ],
404 + "dev": true,
405 + "license": "MIT",
406 + "optional": true,
407 + "os": [
408 + "linux"
409 + ],
410 + "engines": {
411 + "node": ">=12"
412 + }
413 + },
414 + "node_modules/@esbuild/linux-ppc64": {
415 + "version": "0.20.2",
416 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
417 + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
418 + "cpu": [
419 + "ppc64"
420 + ],
421 + "dev": true,
422 + "license": "MIT",
423 + "optional": true,
424 + "os": [
425 + "linux"
426 + ],
427 + "engines": {
428 + "node": ">=12"
429 + }
430 + },
431 + "node_modules/@esbuild/linux-riscv64": {
432 + "version": "0.20.2",
433 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
434 + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
435 + "cpu": [
436 + "riscv64"
437 + ],
438 + "dev": true,
439 + "license": "MIT",
440 + "optional": true,
441 + "os": [
442 + "linux"
443 + ],
444 + "engines": {
445 + "node": ">=12"
446 + }
447 + },
448 + "node_modules/@esbuild/linux-s390x": {
449 + "version": "0.20.2",
450 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
451 + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
452 + "cpu": [
453 + "s390x"
454 + ],
455 + "dev": true,
456 + "license": "MIT",
457 + "optional": true,
458 + "os": [
459 + "linux"
460 + ],
461 + "engines": {
462 + "node": ">=12"
463 + }
464 + },
465 + "node_modules/@esbuild/linux-x64": {
466 + "version": "0.20.2",
467 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
468 + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
469 + "cpu": [
470 + "x64"
471 + ],
472 + "dev": true,
473 + "license": "MIT",
474 + "optional": true,
475 + "os": [
476 + "linux"
477 + ],
478 + "engines": {
479 + "node": ">=12"
480 + }
481 + },
482 + "node_modules/@esbuild/netbsd-x64": {
483 + "version": "0.20.2",
484 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
485 + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
486 + "cpu": [
487 + "x64"
488 + ],
489 + "dev": true,
490 + "license": "MIT",
491 + "optional": true,
492 + "os": [
493 + "netbsd"
494 + ],
495 + "engines": {
496 + "node": ">=12"
497 + }
498 + },
499 + "node_modules/@esbuild/openbsd-x64": {
500 + "version": "0.20.2",
501 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
502 + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
503 + "cpu": [
504 + "x64"
505 + ],
506 + "dev": true,
507 + "license": "MIT",
508 + "optional": true,
509 + "os": [
510 + "openbsd"
511 + ],
512 + "engines": {
513 + "node": ">=12"
514 + }
515 + },
516 + "node_modules/@esbuild/sunos-x64": {
517 + "version": "0.20.2",
518 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
519 + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
520 + "cpu": [
521 + "x64"
522 + ],
523 + "dev": true,
524 + "license": "MIT",
525 + "optional": true,
526 + "os": [
527 + "sunos"
528 + ],
529 + "engines": {
530 + "node": ">=12"
531 + }
532 + },
533 + "node_modules/@esbuild/win32-arm64": {
534 + "version": "0.20.2",
535 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
536 + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
537 + "cpu": [
538 + "arm64"
539 + ],
540 + "dev": true,
541 + "license": "MIT",
542 + "optional": true,
543 + "os": [
544 + "win32"
545 + ],
546 + "engines": {
547 + "node": ">=12"
548 + }
549 + },
550 + "node_modules/@esbuild/win32-ia32": {
551 + "version": "0.20.2",
552 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
553 + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
554 + "cpu": [
555 + "ia32"
556 + ],
557 + "dev": true,
558 + "license": "MIT",
559 + "optional": true,
560 + "os": [
561 + "win32"
562 + ],
563 + "engines": {
564 + "node": ">=12"
565 + }
566 + },
567 + "node_modules/@esbuild/win32-x64": {
568 + "version": "0.20.2",
569 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
570 + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
571 + "cpu": [
572 + "x64"
573 + ],
574 + "dev": true,
575 + "license": "MIT",
576 + "optional": true,
577 + "os": [
578 + "win32"
579 + ],
580 + "engines": {
581 + "node": ">=12"
582 + }
583 + },
584 + "node_modules/@eslint-community/eslint-utils": {
585 + "version": "4.9.1",
586 + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
587 + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
588 + "dev": true,
589 + "license": "MIT",
590 + "dependencies": {
591 + "eslint-visitor-keys": "^3.4.3"
592 + },
593 + "engines": {
594 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
595 + },
596 + "funding": {
597 + "url": "https://opencollective.com/eslint"
598 + },
599 + "peerDependencies": {
600 + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
601 + }
602 + },
603 + "node_modules/@eslint-community/regexpp": {
604 + "version": "4.12.2",
605 + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
606 + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
607 + "dev": true,
608 + "license": "MIT",
609 + "engines": {
610 + "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
611 + }
612 + },
613 + "node_modules/@eslint/eslintrc": {
614 + "version": "2.1.4",
615 + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
616 + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
617 + "dev": true,
618 + "license": "MIT",
619 + "dependencies": {
620 + "ajv": "^6.12.4",
621 + "debug": "^4.3.2",
622 + "espree": "^9.6.0",
623 + "globals": "^13.19.0",
624 + "ignore": "^5.2.0",
625 + "import-fresh": "^3.2.1",
626 + "js-yaml": "^4.1.0",
627 + "minimatch": "^3.1.2",
628 + "strip-json-comments": "^3.1.1"
629 + },
630 + "engines": {
631 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
632 + },
633 + "funding": {
634 + "url": "https://opencollective.com/eslint"
635 + }
636 + },
637 + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
638 + "version": "1.1.15",
639 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
640 + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
641 + "dev": true,
642 + "license": "MIT",
643 + "dependencies": {
644 + "balanced-match": "^1.0.0",
645 + "concat-map": "0.0.1"
646 + }
647 + },
648 + "node_modules/@eslint/eslintrc/node_modules/minimatch": {
649 + "version": "3.1.5",
650 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
651 + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
652 + "dev": true,
653 + "license": "ISC",
654 + "dependencies": {
655 + "brace-expansion": "^1.1.7"
656 + },
657 + "engines": {
658 + "node": "*"
659 + }
660 + },
661 + "node_modules/@eslint/js": {
662 + "version": "8.57.1",
663 + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
664 + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
665 + "dev": true,
666 + "license": "MIT",
667 + "engines": {
668 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
669 + }
670 + },
671 + "node_modules/@humanwhocodes/config-array": {
672 + "version": "0.13.0",
673 + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
674 + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
675 + "deprecated": "Use @eslint/config-array instead",
676 + "dev": true,
677 + "license": "Apache-2.0",
678 + "dependencies": {
679 + "@humanwhocodes/object-schema": "^2.0.3",
680 + "debug": "^4.3.1",
681 + "minimatch": "^3.0.5"
682 + },
683 + "engines": {
684 + "node": ">=10.10.0"
685 + }
686 + },
687 + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
688 + "version": "1.1.15",
689 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
690 + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
691 + "dev": true,
692 + "license": "MIT",
693 + "dependencies": {
694 + "balanced-match": "^1.0.0",
695 + "concat-map": "0.0.1"
696 + }
697 + },
698 + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
699 + "version": "3.1.5",
700 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
701 + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
702 + "dev": true,
703 + "license": "ISC",
704 + "dependencies": {
705 + "brace-expansion": "^1.1.7"
706 + },
707 + "engines": {
708 + "node": "*"
709 + }
710 + },
711 + "node_modules/@humanwhocodes/module-importer": {
712 + "version": "1.0.1",
713 + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
714 + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
715 + "dev": true,
716 + "license": "Apache-2.0",
717 + "engines": {
718 + "node": ">=12.22"
719 + },
720 + "funding": {
721 + "type": "github",
722 + "url": "https://github.com/sponsors/nzakas"
723 + }
724 + },
725 + "node_modules/@humanwhocodes/object-schema": {
726 + "version": "2.0.3",
727 + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
728 + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
729 + "deprecated": "Use @eslint/object-schema instead",
730 + "dev": true,
731 + "license": "BSD-3-Clause"
732 + },
733 + "node_modules/@nodelib/fs.scandir": {
734 + "version": "2.1.5",
735 + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
736 + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
737 + "dev": true,
738 + "license": "MIT",
739 + "dependencies": {
740 + "@nodelib/fs.stat": "2.0.5",
741 + "run-parallel": "^1.1.9"
742 + },
743 + "engines": {
744 + "node": ">= 8"
745 + }
746 + },
747 + "node_modules/@nodelib/fs.stat": {
748 + "version": "2.0.5",
749 + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
750 + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
751 + "dev": true,
752 + "license": "MIT",
753 + "engines": {
754 + "node": ">= 8"
755 + }
756 + },
757 + "node_modules/@nodelib/fs.walk": {
758 + "version": "1.2.8",
759 + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
760 + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
761 + "dev": true,
762 + "license": "MIT",
763 + "dependencies": {
764 + "@nodelib/fs.scandir": "2.1.5",
765 + "fastq": "^1.6.0"
766 + },
767 + "engines": {
768 + "node": ">= 8"
769 + }
770 + },
771 + "node_modules/@types/node": {
772 + "version": "20.19.43",
773 + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.43.tgz",
774 + "integrity": "sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==",
775 + "dev": true,
776 + "license": "MIT",
777 + "dependencies": {
778 + "undici-types": "~6.21.0"
779 + }
780 + },
781 + "node_modules/@types/vscode": {
782 + "version": "1.125.0",
783 + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.125.0.tgz",
784 + "integrity": "sha512-0icm/ZQAaism87P0ekHqi4/Ju9du+Tm0RUW+y7vqRsxY2cY0FNRX1nAnaW7nT6npPt2tfHiheZ55Zm9UhqonFA==",
785 + "dev": true,
786 + "license": "MIT"
787 + },
788 + "node_modules/@typescript-eslint/eslint-plugin": {
789 + "version": "7.18.0",
790 + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz",
791 + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==",
792 + "dev": true,
793 + "license": "MIT",
794 + "dependencies": {
795 + "@eslint-community/regexpp": "^4.10.0",
796 + "@typescript-eslint/scope-manager": "7.18.0",
797 + "@typescript-eslint/type-utils": "7.18.0",
798 + "@typescript-eslint/utils": "7.18.0",
799 + "@typescript-eslint/visitor-keys": "7.18.0",
800 + "graphemer": "^1.4.0",
801 + "ignore": "^5.3.1",
802 + "natural-compare": "^1.4.0",
803 + "ts-api-utils": "^1.3.0"
804 + },
805 + "engines": {
806 + "node": "^18.18.0 || >=20.0.0"
807 + },
808 + "funding": {
809 + "type": "opencollective",
810 + "url": "https://opencollective.com/typescript-eslint"
811 + },
812 + "peerDependencies": {
813 + "@typescript-eslint/parser": "^7.0.0",
814 + "eslint": "^8.56.0"
815 + },
816 + "peerDependenciesMeta": {
817 + "typescript": {
818 + "optional": true
819 + }
820 + }
821 + },
822 + "node_modules/@typescript-eslint/parser": {
823 + "version": "7.18.0",
824 + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz",
825 + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==",
826 + "dev": true,
827 + "license": "BSD-2-Clause",
828 + "dependencies": {
829 + "@typescript-eslint/scope-manager": "7.18.0",
830 + "@typescript-eslint/types": "7.18.0",
831 + "@typescript-eslint/typescript-estree": "7.18.0",
832 + "@typescript-eslint/visitor-keys": "7.18.0",
833 + "debug": "^4.3.4"
834 + },
835 + "engines": {
836 + "node": "^18.18.0 || >=20.0.0"
837 + },
838 + "funding": {
839 + "type": "opencollective",
840 + "url": "https://opencollective.com/typescript-eslint"
841 + },
842 + "peerDependencies": {
843 + "eslint": "^8.56.0"
844 + },
845 + "peerDependenciesMeta": {
846 + "typescript": {
847 + "optional": true
848 + }
849 + }
850 + },
851 + "node_modules/@typescript-eslint/scope-manager": {
852 + "version": "7.18.0",
853 + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
854 + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
855 + "dev": true,
856 + "license": "MIT",
857 + "dependencies": {
858 + "@typescript-eslint/types": "7.18.0",
859 + "@typescript-eslint/visitor-keys": "7.18.0"
860 + },
861 + "engines": {
862 + "node": "^18.18.0 || >=20.0.0"
863 + },
864 + "funding": {
865 + "type": "opencollective",
866 + "url": "https://opencollective.com/typescript-eslint"
867 + }
868 + },
869 + "node_modules/@typescript-eslint/type-utils": {
870 + "version": "7.18.0",
871 + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz",
872 + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==",
873 + "dev": true,
874 + "license": "MIT",
875 + "dependencies": {
876 + "@typescript-eslint/typescript-estree": "7.18.0",
877 + "@typescript-eslint/utils": "7.18.0",
878 + "debug": "^4.3.4",
879 + "ts-api-utils": "^1.3.0"
880 + },
881 + "engines": {
882 + "node": "^18.18.0 || >=20.0.0"
883 + },
884 + "funding": {
885 + "type": "opencollective",
886 + "url": "https://opencollective.com/typescript-eslint"
887 + },
888 + "peerDependencies": {
889 + "eslint": "^8.56.0"
890 + },
891 + "peerDependenciesMeta": {
892 + "typescript": {
893 + "optional": true
894 + }
895 + }
896 + },
897 + "node_modules/@typescript-eslint/types": {
898 + "version": "7.18.0",
899 + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
900 + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
901 + "dev": true,
902 + "license": "MIT",
903 + "engines": {
904 + "node": "^18.18.0 || >=20.0.0"
905 + },
906 + "funding": {
907 + "type": "opencollective",
908 + "url": "https://opencollective.com/typescript-eslint"
909 + }
910 + },
911 + "node_modules/@typescript-eslint/typescript-estree": {
912 + "version": "7.18.0",
913 + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
914 + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
915 + "dev": true,
916 + "license": "BSD-2-Clause",
917 + "dependencies": {
918 + "@typescript-eslint/types": "7.18.0",
919 + "@typescript-eslint/visitor-keys": "7.18.0",
920 + "debug": "^4.3.4",
921 + "globby": "^11.1.0",
922 + "is-glob": "^4.0.3",
923 + "minimatch": "^9.0.4",
924 + "semver": "^7.6.0",
925 + "ts-api-utils": "^1.3.0"
926 + },
927 + "engines": {
928 + "node": "^18.18.0 || >=20.0.0"
929 + },
930 + "funding": {
931 + "type": "opencollective",
932 + "url": "https://opencollective.com/typescript-eslint"
933 + },
934 + "peerDependenciesMeta": {
935 + "typescript": {
936 + "optional": true
937 + }
938 + }
939 + },
940 + "node_modules/@typescript-eslint/utils": {
941 + "version": "7.18.0",
942 + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
943 + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
944 + "dev": true,
945 + "license": "MIT",
946 + "dependencies": {
947 + "@eslint-community/eslint-utils": "^4.4.0",
948 + "@typescript-eslint/scope-manager": "7.18.0",
949 + "@typescript-eslint/types": "7.18.0",
950 + "@typescript-eslint/typescript-estree": "7.18.0"
951 + },
952 + "engines": {
953 + "node": "^18.18.0 || >=20.0.0"
954 + },
955 + "funding": {
956 + "type": "opencollective",
957 + "url": "https://opencollective.com/typescript-eslint"
958 + },
959 + "peerDependencies": {
960 + "eslint": "^8.56.0"
961 + }
962 + },
963 + "node_modules/@typescript-eslint/visitor-keys": {
964 + "version": "7.18.0",
965 + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
966 + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
967 + "dev": true,
968 + "license": "MIT",
969 + "dependencies": {
970 + "@typescript-eslint/types": "7.18.0",
971 + "eslint-visitor-keys": "^3.4.3"
972 + },
973 + "engines": {
974 + "node": "^18.18.0 || >=20.0.0"
975 + },
976 + "funding": {
977 + "type": "opencollective",
978 + "url": "https://opencollective.com/typescript-eslint"
979 + }
980 + },
981 + "node_modules/@typespec/ts-http-runtime": {
982 + "version": "0.3.6",
983 + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.6.tgz",
984 + "integrity": "sha512-jIXhD0eWQ1JA6ln/5Dltyx22UxWNrw0hZmhy2rlv6m6KgF7kplHx3g0fzi09lNmTJQRR91OlemYp3xFnvDK9og==",
985 + "dev": true,
986 + "license": "MIT",
987 + "dependencies": {
988 + "http-proxy-agent": "^7.0.0",
989 + "https-proxy-agent": "^7.0.0",
990 + "tslib": "^2.6.2"
991 + },
992 + "engines": {
993 + "node": ">=20.0.0"
994 + }
995 + },
996 + "node_modules/@ungap/structured-clone": {
997 + "version": "1.3.2",
998 + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.2.tgz",
999 + "integrity": "sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA==",
1000 + "dev": true,
1001 + "license": "ISC"
1002 + },
1003 + "node_modules/@vscode/vsce": {
1004 + "version": "2.32.0",
1005 + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.32.0.tgz",
1006 + "integrity": "sha512-3EFJfsgrSftIqt3EtdRcAygy/OJ3hstyI1cDmIgkU9CFZW5C+3djr6mfosndCUqcVYuyjmxOK1xmFp/Bq7+NIg==",
1007 + "dev": true,
1008 + "license": "MIT",
1009 + "dependencies": {
1010 + "@azure/identity": "^4.1.0",
1011 + "@vscode/vsce-sign": "^2.0.0",
1012 + "azure-devops-node-api": "^12.5.0",
1013 + "chalk": "^2.4.2",
1014 + "cheerio": "^1.0.0-rc.9",
1015 + "cockatiel": "^3.1.2",
1016 + "commander": "^6.2.1",
1017 + "form-data": "^4.0.0",
1018 + "glob": "^7.0.6",
1019 + "hosted-git-info": "^4.0.2",
1020 + "jsonc-parser": "^3.2.0",
1021 + "leven": "^3.1.0",
1022 + "markdown-it": "^12.3.2",
1023 + "mime": "^1.3.4",
1024 + "minimatch": "^3.0.3",
1025 + "parse-semver": "^1.1.1",
1026 + "read": "^1.0.7",
1027 + "semver": "^7.5.2",
1028 + "tmp": "^0.2.1",
1029 + "typed-rest-client": "^1.8.4",
1030 + "url-join": "^4.0.1",
1031 + "xml2js": "^0.5.0",
1032 + "yauzl": "^2.3.1",
1033 + "yazl": "^2.2.2"
1034 + },
1035 + "bin": {
1036 + "vsce": "vsce"
1037 + },
1038 + "engines": {
1039 + "node": ">= 16"
1040 + },
1041 + "optionalDependencies": {
1042 + "keytar": "^7.7.0"
1043 + }
1044 + },
1045 + "node_modules/@vscode/vsce-sign": {
1046 + "version": "2.0.9",
1047 + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.9.tgz",
1048 + "integrity": "sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g==",
1049 + "dev": true,
1050 + "hasInstallScript": true,
1051 + "license": "SEE LICENSE IN LICENSE.txt",
1052 + "optionalDependencies": {
1053 + "@vscode/vsce-sign-alpine-arm64": "2.0.6",
1054 + "@vscode/vsce-sign-alpine-x64": "2.0.6",
1055 + "@vscode/vsce-sign-darwin-arm64": "2.0.6",
1056 + "@vscode/vsce-sign-darwin-x64": "2.0.6",
1057 + "@vscode/vsce-sign-linux-arm": "2.0.6",
1058 + "@vscode/vsce-sign-linux-arm64": "2.0.6",
1059 + "@vscode/vsce-sign-linux-x64": "2.0.6",
1060 + "@vscode/vsce-sign-win32-arm64": "2.0.6",
1061 + "@vscode/vsce-sign-win32-x64": "2.0.6"
1062 + }
1063 + },
1064 + "node_modules/@vscode/vsce-sign-alpine-arm64": {
1065 + "version": "2.0.6",
1066 + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz",
1067 + "integrity": "sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==",
1068 + "cpu": [
1069 + "arm64"
1070 + ],
1071 + "dev": true,
1072 + "license": "SEE LICENSE IN LICENSE.txt",
1073 + "optional": true,
1074 + "os": [
1075 + "alpine"
1076 + ]
1077 + },
1078 + "node_modules/@vscode/vsce-sign-alpine-x64": {
1079 + "version": "2.0.6",
1080 + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz",
1081 + "integrity": "sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==",
1082 + "cpu": [
1083 + "x64"
1084 + ],
1085 + "dev": true,
1086 + "license": "SEE LICENSE IN LICENSE.txt",
1087 + "optional": true,
1088 + "os": [
1089 + "alpine"
1090 + ]
1091 + },
1092 + "node_modules/@vscode/vsce-sign-darwin-arm64": {
1093 + "version": "2.0.6",
1094 + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz",
1095 + "integrity": "sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==",
1096 + "cpu": [
1097 + "arm64"
1098 + ],
1099 + "dev": true,
1100 + "license": "SEE LICENSE IN LICENSE.txt",
1101 + "optional": true,
1102 + "os": [
1103 + "darwin"
1104 + ]
1105 + },
1106 + "node_modules/@vscode/vsce-sign-darwin-x64": {
1107 + "version": "2.0.6",
1108 + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz",
1109 + "integrity": "sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==",
1110 + "cpu": [
1111 + "x64"
1112 + ],
1113 + "dev": true,
1114 + "license": "SEE LICENSE IN LICENSE.txt",
1115 + "optional": true,
1116 + "os": [
1117 + "darwin"
1118 + ]
1119 + },
1120 + "node_modules/@vscode/vsce-sign-linux-arm": {
1121 + "version": "2.0.6",
1122 + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz",
1123 + "integrity": "sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==",
1124 + "cpu": [
1125 + "arm"
1126 + ],
1127 + "dev": true,
1128 + "license": "SEE LICENSE IN LICENSE.txt",
1129 + "optional": true,
1130 + "os": [
1131 + "linux"
1132 + ]
1133 + },
1134 + "node_modules/@vscode/vsce-sign-linux-arm64": {
1135 + "version": "2.0.6",
1136 + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz",
1137 + "integrity": "sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==",
1138 + "cpu": [
1139 + "arm64"
1140 + ],
1141 + "dev": true,
1142 + "license": "SEE LICENSE IN LICENSE.txt",
1143 + "optional": true,
1144 + "os": [
1145 + "linux"
1146 + ]
1147 + },
1148 + "node_modules/@vscode/vsce-sign-linux-x64": {
1149 + "version": "2.0.6",
1150 + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz",
1151 + "integrity": "sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==",
1152 + "cpu": [
1153 + "x64"
1154 + ],
1155 + "dev": true,
1156 + "license": "SEE LICENSE IN LICENSE.txt",
1157 + "optional": true,
1158 + "os": [
1159 + "linux"
1160 + ]
1161 + },
1162 + "node_modules/@vscode/vsce-sign-win32-arm64": {
1163 + "version": "2.0.6",
1164 + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz",
1165 + "integrity": "sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==",
1166 + "cpu": [
1167 + "arm64"
1168 + ],
1169 + "dev": true,
1170 + "license": "SEE LICENSE IN LICENSE.txt",
1171 + "optional": true,
1172 + "os": [
1173 + "win32"
1174 + ]
1175 + },
1176 + "node_modules/@vscode/vsce-sign-win32-x64": {
1177 + "version": "2.0.6",
1178 + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz",
1179 + "integrity": "sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==",
1180 + "cpu": [
1181 + "x64"
1182 + ],
1183 + "dev": true,
1184 + "license": "SEE LICENSE IN LICENSE.txt",
1185 + "optional": true,
1186 + "os": [
1187 + "win32"
1188 + ]
1189 + },
1190 + "node_modules/@vscode/vsce/node_modules/brace-expansion": {
1191 + "version": "1.1.15",
1192 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
1193 + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
1194 + "dev": true,
1195 + "license": "MIT",
1196 + "dependencies": {
1197 + "balanced-match": "^1.0.0",
1198 + "concat-map": "0.0.1"
1199 + }
1200 + },
1201 + "node_modules/@vscode/vsce/node_modules/minimatch": {
1202 + "version": "3.1.5",
1203 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
1204 + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
1205 + "dev": true,
1206 + "license": "ISC",
1207 + "dependencies": {
1208 + "brace-expansion": "^1.1.7"
1209 + },
1210 + "engines": {
1211 + "node": "*"
1212 + }
1213 + },
1214 + "node_modules/acorn": {
1215 + "version": "8.17.0",
1216 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz",
1217 + "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==",
1218 + "dev": true,
1219 + "license": "MIT",
1220 + "bin": {
1221 + "acorn": "bin/acorn"
1222 + },
1223 + "engines": {
1224 + "node": ">=0.4.0"
1225 + }
1226 + },
1227 + "node_modules/acorn-jsx": {
1228 + "version": "5.3.2",
1229 + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
1230 + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
1231 + "dev": true,
1232 + "license": "MIT",
1233 + "peerDependencies": {
1234 + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
1235 + }
1236 + },
1237 + "node_modules/agent-base": {
1238 + "version": "7.1.4",
1239 + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
1240 + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
1241 + "dev": true,
1242 + "license": "MIT",
1243 + "engines": {
1244 + "node": ">= 14"
1245 + }
1246 + },
1247 + "node_modules/ajv": {
1248 + "version": "6.15.0",
1249 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz",
1250 + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==",
1251 + "dev": true,
1252 + "license": "MIT",
1253 + "dependencies": {
1254 + "fast-deep-equal": "^3.1.1",
1255 + "fast-json-stable-stringify": "^2.0.0",
1256 + "json-schema-traverse": "^0.4.1",
1257 + "uri-js": "^4.2.2"
1258 + },
1259 + "funding": {
1260 + "type": "github",
1261 + "url": "https://github.com/sponsors/epoberezkin"
1262 + }
1263 + },
1264 + "node_modules/ansi-regex": {
1265 + "version": "5.0.1",
1266 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1267 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1268 + "dev": true,
1269 + "license": "MIT",
1270 + "engines": {
1271 + "node": ">=8"
1272 + }
1273 + },
1274 + "node_modules/ansi-styles": {
1275 + "version": "3.2.1",
1276 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1277 + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1278 + "dev": true,
1279 + "license": "MIT",
1280 + "dependencies": {
1281 + "color-convert": "^1.9.0"
1282 + },
1283 + "engines": {
1284 + "node": ">=4"
1285 + }
1286 + },
1287 + "node_modules/argparse": {
1288 + "version": "2.0.1",
1289 + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
1290 + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
1291 + "dev": true,
1292 + "license": "Python-2.0"
1293 + },
1294 + "node_modules/array-union": {
1295 + "version": "2.1.0",
1296 + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
1297 + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
1298 + "dev": true,
1299 + "license": "MIT",
1300 + "engines": {
1301 + "node": ">=8"
1302 + }
1303 + },
1304 + "node_modules/asynckit": {
1305 + "version": "0.4.0",
1306 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
1307 + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
1308 + "dev": true,
1309 + "license": "MIT"
1310 + },
1311 + "node_modules/azure-devops-node-api": {
1312 + "version": "12.5.0",
1313 + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz",
1314 + "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==",
1315 + "dev": true,
1316 + "license": "MIT",
1317 + "dependencies": {
1318 + "tunnel": "0.0.6",
1319 + "typed-rest-client": "^1.8.4"
1320 + }
1321 + },
1322 + "node_modules/balanced-match": {
1323 + "version": "1.0.2",
1324 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1325 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1326 + "dev": true,
1327 + "license": "MIT"
1328 + },
1329 + "node_modules/base64-js": {
1330 + "version": "1.5.1",
1331 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
1332 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
1333 + "dev": true,
1334 + "funding": [
1335 + {
1336 + "type": "github",
1337 + "url": "https://github.com/sponsors/feross"
1338 + },
1339 + {
1340 + "type": "patreon",
1341 + "url": "https://www.patreon.com/feross"
1342 + },
1343 + {
1344 + "type": "consulting",
1345 + "url": "https://feross.org/support"
1346 + }
1347 + ],
1348 + "license": "MIT",
1349 + "optional": true
1350 + },
1351 + "node_modules/bl": {
1352 + "version": "4.1.0",
1353 + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
1354 + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
1355 + "dev": true,
1356 + "license": "MIT",
1357 + "optional": true,
1358 + "dependencies": {
1359 + "buffer": "^5.5.0",
1360 + "inherits": "^2.0.4",
1361 + "readable-stream": "^3.4.0"
1362 + }
1363 + },
1364 + "node_modules/boolbase": {
1365 + "version": "1.0.0",
1366 + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
1367 + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
1368 + "dev": true,
1369 + "license": "ISC"
1370 + },
1371 + "node_modules/brace-expansion": {
1372 + "version": "2.1.1",
1373 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
1374 + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
1375 + "dev": true,
1376 + "license": "MIT",
1377 + "dependencies": {
1378 + "balanced-match": "^1.0.0"
1379 + }
1380 + },
1381 + "node_modules/braces": {
1382 + "version": "3.0.3",
1383 + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
1384 + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
1385 + "dev": true,
1386 + "license": "MIT",
1387 + "dependencies": {
1388 + "fill-range": "^7.1.1"
1389 + },
1390 + "engines": {
1391 + "node": ">=8"
1392 + }
1393 + },
1394 + "node_modules/buffer": {
1395 + "version": "5.7.1",
1396 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
1397 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
1398 + "dev": true,
1399 + "funding": [
1400 + {
1401 + "type": "github",
1402 + "url": "https://github.com/sponsors/feross"
1403 + },
1404 + {
1405 + "type": "patreon",
1406 + "url": "https://www.patreon.com/feross"
1407 + },
1408 + {
1409 + "type": "consulting",
1410 + "url": "https://feross.org/support"
1411 + }
1412 + ],
1413 + "license": "MIT",
1414 + "optional": true,
1415 + "dependencies": {
1416 + "base64-js": "^1.3.1",
1417 + "ieee754": "^1.1.13"
1418 + }
1419 + },
1420 + "node_modules/buffer-crc32": {
1421 + "version": "0.2.13",
1422 + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
1423 + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
1424 + "dev": true,
1425 + "license": "MIT",
1426 + "engines": {
1427 + "node": "*"
1428 + }
1429 + },
1430 + "node_modules/buffer-equal-constant-time": {
1431 + "version": "1.0.1",
1432 + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
1433 + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
1434 + "dev": true,
1435 + "license": "BSD-3-Clause"
1436 + },
1437 + "node_modules/bundle-name": {
1438 + "version": "4.1.0",
1439 + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
1440 + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
1441 + "dev": true,
1442 + "license": "MIT",
1443 + "dependencies": {
1444 + "run-applescript": "^7.0.0"
1445 + },
1446 + "engines": {
1447 + "node": ">=18"
1448 + },
1449 + "funding": {
1450 + "url": "https://github.com/sponsors/sindresorhus"
1451 + }
1452 + },
1453 + "node_modules/call-bind-apply-helpers": {
1454 + "version": "1.0.2",
1455 + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
1456 + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
1457 + "dev": true,
1458 + "license": "MIT",
1459 + "dependencies": {
1460 + "es-errors": "^1.3.0",
1461 + "function-bind": "^1.1.2"
1462 + },
1463 + "engines": {
1464 + "node": ">= 0.4"
1465 + }
1466 + },
1467 + "node_modules/call-bound": {
1468 + "version": "1.0.4",
1469 + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
1470 + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
1471 + "dev": true,
1472 + "license": "MIT",
1473 + "dependencies": {
1474 + "call-bind-apply-helpers": "^1.0.2",
1475 + "get-intrinsic": "^1.3.0"
1476 + },
1477 + "engines": {
1478 + "node": ">= 0.4"
1479 + },
1480 + "funding": {
1481 + "url": "https://github.com/sponsors/ljharb"
1482 + }
1483 + },
1484 + "node_modules/callsites": {
1485 + "version": "3.1.0",
1486 + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
1487 + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
1488 + "dev": true,
1489 + "license": "MIT",
1490 + "engines": {
1491 + "node": ">=6"
1492 + }
1493 + },
1494 + "node_modules/chalk": {
1495 + "version": "2.4.2",
1496 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
1497 + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
1498 + "dev": true,
1499 + "license": "MIT",
1500 + "dependencies": {
1501 + "ansi-styles": "^3.2.1",
1502 + "escape-string-regexp": "^1.0.5",
1503 + "supports-color": "^5.3.0"
1504 + },
1505 + "engines": {
1506 + "node": ">=4"
1507 + }
1508 + },
1509 + "node_modules/cheerio": {
1510 + "version": "1.2.0",
1511 + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz",
1512 + "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==",
1513 + "dev": true,
1514 + "license": "MIT",
1515 + "dependencies": {
1516 + "cheerio-select": "^2.1.0",
1517 + "dom-serializer": "^2.0.0",
1518 + "domhandler": "^5.0.3",
1519 + "domutils": "^3.2.2",
1520 + "encoding-sniffer": "^0.2.1",
1521 + "htmlparser2": "^10.1.0",
1522 + "parse5": "^7.3.0",
1523 + "parse5-htmlparser2-tree-adapter": "^7.1.0",
1524 + "parse5-parser-stream": "^7.1.2",
1525 + "undici": "^7.19.0",
1526 + "whatwg-mimetype": "^4.0.0"
1527 + },
1528 + "engines": {
1529 + "node": ">=20.18.1"
1530 + },
1531 + "funding": {
1532 + "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
1533 + }
1534 + },
1535 + "node_modules/cheerio-select": {
1536 + "version": "2.1.0",
1537 + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
1538 + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
1539 + "dev": true,
1540 + "license": "BSD-2-Clause",
1541 + "dependencies": {
1542 + "boolbase": "^1.0.0",
1543 + "css-select": "^5.1.0",
1544 + "css-what": "^6.1.0",
1545 + "domelementtype": "^2.3.0",
1546 + "domhandler": "^5.0.3",
1547 + "domutils": "^3.0.1"
1548 + },
1549 + "funding": {
1550 + "url": "https://github.com/sponsors/fb55"
1551 + }
1552 + },
1553 + "node_modules/chownr": {
1554 + "version": "1.1.4",
1555 + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
1556 + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
1557 + "dev": true,
1558 + "license": "ISC",
1559 + "optional": true
1560 + },
1561 + "node_modules/cockatiel": {
1562 + "version": "3.2.1",
1563 + "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz",
1564 + "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==",
1565 + "dev": true,
1566 + "license": "MIT",
1567 + "engines": {
1568 + "node": ">=16"
1569 + }
1570 + },
1571 + "node_modules/color-convert": {
1572 + "version": "1.9.3",
1573 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
1574 + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
1575 + "dev": true,
1576 + "license": "MIT",
1577 + "dependencies": {
1578 + "color-name": "1.1.3"
1579 + }
1580 + },
1581 + "node_modules/color-name": {
1582 + "version": "1.1.3",
1583 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
1584 + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
1585 + "dev": true,
1586 + "license": "MIT"
1587 + },
1588 + "node_modules/combined-stream": {
1589 + "version": "1.0.8",
1590 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
1591 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
1592 + "dev": true,
1593 + "license": "MIT",
1594 + "dependencies": {
1595 + "delayed-stream": "~1.0.0"
1596 + },
1597 + "engines": {
1598 + "node": ">= 0.8"
1599 + }
1600 + },
1601 + "node_modules/commander": {
1602 + "version": "6.2.1",
1603 + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
1604 + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
1605 + "dev": true,
1606 + "license": "MIT",
1607 + "engines": {
1608 + "node": ">= 6"
1609 + }
1610 + },
1611 + "node_modules/concat-map": {
1612 + "version": "0.0.1",
1613 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1614 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
1615 + "dev": true,
1616 + "license": "MIT"
1617 + },
1618 + "node_modules/cross-spawn": {
1619 + "version": "7.0.6",
1620 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
1621 + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
1622 + "dev": true,
1623 + "license": "MIT",
1624 + "dependencies": {
1625 + "path-key": "^3.1.0",
1626 + "shebang-command": "^2.0.0",
1627 + "which": "^2.0.1"
1628 + },
1629 + "engines": {
1630 + "node": ">= 8"
1631 + }
1632 + },
1633 + "node_modules/css-select": {
1634 + "version": "5.2.2",
1635 + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
1636 + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
1637 + "dev": true,
1638 + "license": "BSD-2-Clause",
1639 + "dependencies": {
1640 + "boolbase": "^1.0.0",
1641 + "css-what": "^6.1.0",
1642 + "domhandler": "^5.0.2",
1643 + "domutils": "^3.0.1",
1644 + "nth-check": "^2.0.1"
1645 + },
1646 + "funding": {
1647 + "url": "https://github.com/sponsors/fb55"
1648 + }
1649 + },
1650 + "node_modules/css-what": {
1651 + "version": "6.2.2",
1652 + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
1653 + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
1654 + "dev": true,
1655 + "license": "BSD-2-Clause",
1656 + "engines": {
1657 + "node": ">= 6"
1658 + },
1659 + "funding": {
1660 + "url": "https://github.com/sponsors/fb55"
1661 + }
1662 + },
1663 + "node_modules/debug": {
1664 + "version": "4.4.3",
1665 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
1666 + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
1667 + "dev": true,
1668 + "license": "MIT",
1669 + "dependencies": {
1670 + "ms": "^2.1.3"
1671 + },
1672 + "engines": {
1673 + "node": ">=6.0"
1674 + },
1675 + "peerDependenciesMeta": {
1676 + "supports-color": {
1677 + "optional": true
1678 + }
1679 + }
1680 + },
1681 + "node_modules/decompress-response": {
1682 + "version": "6.0.0",
1683 + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
1684 + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
1685 + "dev": true,
1686 + "license": "MIT",
1687 + "optional": true,
1688 + "dependencies": {
1689 + "mimic-response": "^3.1.0"
1690 + },
1691 + "engines": {
1692 + "node": ">=10"
1693 + },
1694 + "funding": {
1695 + "url": "https://github.com/sponsors/sindresorhus"
1696 + }
1697 + },
1698 + "node_modules/deep-extend": {
1699 + "version": "0.6.0",
1700 + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
1701 + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
1702 + "dev": true,
1703 + "license": "MIT",
1704 + "optional": true,
1705 + "engines": {
1706 + "node": ">=4.0.0"
1707 + }
1708 + },
1709 + "node_modules/deep-is": {
1710 + "version": "0.1.4",
1711 + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
1712 + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
1713 + "dev": true,
1714 + "license": "MIT"
1715 + },
1716 + "node_modules/default-browser": {
1717 + "version": "5.5.0",
1718 + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz",
1719 + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==",
1720 + "dev": true,
1721 + "license": "MIT",
1722 + "dependencies": {
1723 + "bundle-name": "^4.1.0",
1724 + "default-browser-id": "^5.0.0"
1725 + },
1726 + "engines": {
1727 + "node": ">=18"
1728 + },
1729 + "funding": {
1730 + "url": "https://github.com/sponsors/sindresorhus"
1731 + }
1732 + },
1733 + "node_modules/default-browser-id": {
1734 + "version": "5.0.1",
1735 + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz",
1736 + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
1737 + "dev": true,
1738 + "license": "MIT",
1739 + "engines": {
1740 + "node": ">=18"
1741 + },
1742 + "funding": {
1743 + "url": "https://github.com/sponsors/sindresorhus"
1744 + }
1745 + },
1746 + "node_modules/define-lazy-prop": {
1747 + "version": "3.0.0",
1748 + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
1749 + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
1750 + "dev": true,
1751 + "license": "MIT",
1752 + "engines": {
1753 + "node": ">=12"
1754 + },
1755 + "funding": {
1756 + "url": "https://github.com/sponsors/sindresorhus"
1757 + }
1758 + },
1759 + "node_modules/delayed-stream": {
1760 + "version": "1.0.0",
1761 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
1762 + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
1763 + "dev": true,
1764 + "license": "MIT",
1765 + "engines": {
1766 + "node": ">=0.4.0"
1767 + }
1768 + },
1769 + "node_modules/detect-libc": {
1770 + "version": "2.1.2",
1771 + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
1772 + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
1773 + "dev": true,
1774 + "license": "Apache-2.0",
1775 + "optional": true,
1776 + "engines": {
1777 + "node": ">=8"
1778 + }
1779 + },
1780 + "node_modules/dir-glob": {
1781 + "version": "3.0.1",
1782 + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
1783 + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
1784 + "dev": true,
1785 + "license": "MIT",
1786 + "dependencies": {
1787 + "path-type": "^4.0.0"
1788 + },
1789 + "engines": {
1790 + "node": ">=8"
1791 + }
1792 + },
1793 + "node_modules/doctrine": {
1794 + "version": "3.0.0",
1795 + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
1796 + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
1797 + "dev": true,
1798 + "license": "Apache-2.0",
1799 + "dependencies": {
1800 + "esutils": "^2.0.2"
1801 + },
1802 + "engines": {
1803 + "node": ">=6.0.0"
1804 + }
1805 + },
1806 + "node_modules/dom-serializer": {
1807 + "version": "2.0.0",
1808 + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
1809 + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
1810 + "dev": true,
1811 + "license": "MIT",
1812 + "dependencies": {
1813 + "domelementtype": "^2.3.0",
1814 + "domhandler": "^5.0.2",
1815 + "entities": "^4.2.0"
1816 + },
1817 + "funding": {
1818 + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
1819 + }
1820 + },
1821 + "node_modules/domelementtype": {
1822 + "version": "2.3.0",
1823 + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
1824 + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
1825 + "dev": true,
1826 + "funding": [
1827 + {
1828 + "type": "github",
1829 + "url": "https://github.com/sponsors/fb55"
1830 + }
1831 + ],
1832 + "license": "BSD-2-Clause"
1833 + },
1834 + "node_modules/domhandler": {
1835 + "version": "5.0.3",
1836 + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
1837 + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
1838 + "dev": true,
1839 + "license": "BSD-2-Clause",
1840 + "dependencies": {
1841 + "domelementtype": "^2.3.0"
1842 + },
1843 + "engines": {
1844 + "node": ">= 4"
1845 + },
1846 + "funding": {
1847 + "url": "https://github.com/fb55/domhandler?sponsor=1"
1848 + }
1849 + },
1850 + "node_modules/domutils": {
1851 + "version": "3.2.2",
1852 + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
1853 + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
1854 + "dev": true,
1855 + "license": "BSD-2-Clause",
1856 + "dependencies": {
1857 + "dom-serializer": "^2.0.0",
1858 + "domelementtype": "^2.3.0",
1859 + "domhandler": "^5.0.3"
1860 + },
1861 + "funding": {
1862 + "url": "https://github.com/fb55/domutils?sponsor=1"
1863 + }
1864 + },
1865 + "node_modules/dunder-proto": {
1866 + "version": "1.0.1",
1867 + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
1868 + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
1869 + "dev": true,
1870 + "license": "MIT",
1871 + "dependencies": {
1872 + "call-bind-apply-helpers": "^1.0.1",
1873 + "es-errors": "^1.3.0",
1874 + "gopd": "^1.2.0"
1875 + },
1876 + "engines": {
1877 + "node": ">= 0.4"
1878 + }
1879 + },
1880 + "node_modules/ecdsa-sig-formatter": {
1881 + "version": "1.0.11",
1882 + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
1883 + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
1884 + "dev": true,
1885 + "license": "Apache-2.0",
1886 + "dependencies": {
1887 + "safe-buffer": "^5.0.1"
1888 + }
1889 + },
1890 + "node_modules/encoding-sniffer": {
1891 + "version": "0.2.1",
1892 + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
1893 + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==",
1894 + "dev": true,
1895 + "license": "MIT",
1896 + "dependencies": {
1897 + "iconv-lite": "^0.6.3",
1898 + "whatwg-encoding": "^3.1.1"
1899 + },
1900 + "funding": {
1901 + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
1902 + }
1903 + },
1904 + "node_modules/end-of-stream": {
1905 + "version": "1.4.5",
1906 + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
1907 + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
1908 + "dev": true,
1909 + "license": "MIT",
1910 + "optional": true,
1911 + "dependencies": {
1912 + "once": "^1.4.0"
1913 + }
1914 + },
1915 + "node_modules/entities": {
1916 + "version": "4.5.0",
1917 + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
1918 + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
1919 + "dev": true,
1920 + "license": "BSD-2-Clause",
1921 + "engines": {
1922 + "node": ">=0.12"
1923 + },
1924 + "funding": {
1925 + "url": "https://github.com/fb55/entities?sponsor=1"
1926 + }
1927 + },
1928 + "node_modules/es-define-property": {
1929 + "version": "1.0.1",
1930 + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
1931 + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
1932 + "dev": true,
1933 + "license": "MIT",
1934 + "engines": {
1935 + "node": ">= 0.4"
1936 + }
1937 + },
1938 + "node_modules/es-errors": {
1939 + "version": "1.3.0",
1940 + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
1941 + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
1942 + "dev": true,
1943 + "license": "MIT",
1944 + "engines": {
1945 + "node": ">= 0.4"
1946 + }
1947 + },
1948 + "node_modules/es-object-atoms": {
1949 + "version": "1.1.2",
1950 + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
1951 + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
1952 + "dev": true,
1953 + "license": "MIT",
1954 + "dependencies": {
1955 + "es-errors": "^1.3.0"
1956 + },
1957 + "engines": {
1958 + "node": ">= 0.4"
1959 + }
1960 + },
1961 + "node_modules/es-set-tostringtag": {
1962 + "version": "2.1.0",
1963 + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
1964 + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
1965 + "dev": true,
1966 + "license": "MIT",
1967 + "dependencies": {
1968 + "es-errors": "^1.3.0",
1969 + "get-intrinsic": "^1.2.6",
1970 + "has-tostringtag": "^1.0.2",
1971 + "hasown": "^2.0.2"
1972 + },
1973 + "engines": {
1974 + "node": ">= 0.4"
1975 + }
1976 + },
1977 + "node_modules/esbuild": {
1978 + "version": "0.20.2",
1979 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
1980 + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
1981 + "dev": true,
1982 + "hasInstallScript": true,
1983 + "license": "MIT",
1984 + "bin": {
1985 + "esbuild": "bin/esbuild"
1986 + },
1987 + "engines": {
1988 + "node": ">=12"
1989 + },
1990 + "optionalDependencies": {
1991 + "@esbuild/aix-ppc64": "0.20.2",
1992 + "@esbuild/android-arm": "0.20.2",
1993 + "@esbuild/android-arm64": "0.20.2",
1994 + "@esbuild/android-x64": "0.20.2",
1995 + "@esbuild/darwin-arm64": "0.20.2",
1996 + "@esbuild/darwin-x64": "0.20.2",
1997 + "@esbuild/freebsd-arm64": "0.20.2",
1998 + "@esbuild/freebsd-x64": "0.20.2",
1999 + "@esbuild/linux-arm": "0.20.2",
2000 + "@esbuild/linux-arm64": "0.20.2",
2001 + "@esbuild/linux-ia32": "0.20.2",
2002 + "@esbuild/linux-loong64": "0.20.2",
2003 + "@esbuild/linux-mips64el": "0.20.2",
2004 + "@esbuild/linux-ppc64": "0.20.2",
2005 + "@esbuild/linux-riscv64": "0.20.2",
2006 + "@esbuild/linux-s390x": "0.20.2",
2007 + "@esbuild/linux-x64": "0.20.2",
2008 + "@esbuild/netbsd-x64": "0.20.2",
2009 + "@esbuild/openbsd-x64": "0.20.2",
2010 + "@esbuild/sunos-x64": "0.20.2",
2011 + "@esbuild/win32-arm64": "0.20.2",
2012 + "@esbuild/win32-ia32": "0.20.2",
2013 + "@esbuild/win32-x64": "0.20.2"
2014 + }
2015 + },
2016 + "node_modules/escape-string-regexp": {
2017 + "version": "1.0.5",
2018 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
2019 + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
2020 + "dev": true,
2021 + "license": "MIT",
2022 + "engines": {
2023 + "node": ">=0.8.0"
2024 + }
2025 + },
2026 + "node_modules/eslint": {
2027 + "version": "8.57.1",
2028 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
2029 + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
2030 + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
2031 + "dev": true,
2032 + "license": "MIT",
2033 + "dependencies": {
2034 + "@eslint-community/eslint-utils": "^4.2.0",
2035 + "@eslint-community/regexpp": "^4.6.1",
2036 + "@eslint/eslintrc": "^2.1.4",
2037 + "@eslint/js": "8.57.1",
2038 + "@humanwhocodes/config-array": "^0.13.0",
2039 + "@humanwhocodes/module-importer": "^1.0.1",
2040 + "@nodelib/fs.walk": "^1.2.8",
2041 + "@ungap/structured-clone": "^1.2.0",
2042 + "ajv": "^6.12.4",
2043 + "chalk": "^4.0.0",
2044 + "cross-spawn": "^7.0.2",
2045 + "debug": "^4.3.2",
2046 + "doctrine": "^3.0.0",
2047 + "escape-string-regexp": "^4.0.0",
2048 + "eslint-scope": "^7.2.2",
2049 + "eslint-visitor-keys": "^3.4.3",
2050 + "espree": "^9.6.1",
2051 + "esquery": "^1.4.2",
2052 + "esutils": "^2.0.2",
2053 + "fast-deep-equal": "^3.1.3",
2054 + "file-entry-cache": "^6.0.1",
2055 + "find-up": "^5.0.0",
2056 + "glob-parent": "^6.0.2",
2057 + "globals": "^13.19.0",
2058 + "graphemer": "^1.4.0",
2059 + "ignore": "^5.2.0",
2060 + "imurmurhash": "^0.1.4",
2061 + "is-glob": "^4.0.0",
2062 + "is-path-inside": "^3.0.3",
2063 + "js-yaml": "^4.1.0",
2064 + "json-stable-stringify-without-jsonify": "^1.0.1",
2065 + "levn": "^0.4.1",
2066 + "lodash.merge": "^4.6.2",
2067 + "minimatch": "^3.1.2",
2068 + "natural-compare": "^1.4.0",
2069 + "optionator": "^0.9.3",
2070 + "strip-ansi": "^6.0.1",
2071 + "text-table": "^0.2.0"
2072 + },
2073 + "bin": {
2074 + "eslint": "bin/eslint.js"
2075 + },
2076 + "engines": {
2077 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
2078 + },
2079 + "funding": {
2080 + "url": "https://opencollective.com/eslint"
2081 + }
2082 + },
2083 + "node_modules/eslint-scope": {
2084 + "version": "7.2.2",
2085 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
2086 + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
2087 + "dev": true,
2088 + "license": "BSD-2-Clause",
2089 + "dependencies": {
2090 + "esrecurse": "^4.3.0",
2091 + "estraverse": "^5.2.0"
2092 + },
2093 + "engines": {
2094 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
2095 + },
2096 + "funding": {
2097 + "url": "https://opencollective.com/eslint"
2098 + }
2099 + },
2100 + "node_modules/eslint-visitor-keys": {
2101 + "version": "3.4.3",
2102 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
2103 + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
2104 + "dev": true,
2105 + "license": "Apache-2.0",
2106 + "engines": {
2107 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
2108 + },
2109 + "funding": {
2110 + "url": "https://opencollective.com/eslint"
2111 + }
2112 + },
2113 + "node_modules/eslint/node_modules/ansi-styles": {
2114 + "version": "4.3.0",
2115 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
2116 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2117 + "dev": true,
2118 + "license": "MIT",
2119 + "dependencies": {
2120 + "color-convert": "^2.0.1"
2121 + },
2122 + "engines": {
2123 + "node": ">=8"
2124 + },
2125 + "funding": {
2126 + "url": "https://github.com/chalk/ansi-styles?sponsor=1"
2127 + }
2128 + },
2129 + "node_modules/eslint/node_modules/brace-expansion": {
2130 + "version": "1.1.15",
2131 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
2132 + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
2133 + "dev": true,
2134 + "license": "MIT",
2135 + "dependencies": {
2136 + "balanced-match": "^1.0.0",
2137 + "concat-map": "0.0.1"
2138 + }
2139 + },
2140 + "node_modules/eslint/node_modules/chalk": {
2141 + "version": "4.1.2",
2142 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
2143 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
2144 + "dev": true,
2145 + "license": "MIT",
2146 + "dependencies": {
2147 + "ansi-styles": "^4.1.0",
2148 + "supports-color": "^7.1.0"
2149 + },
2150 + "engines": {
2151 + "node": ">=10"
2152 + },
2153 + "funding": {
2154 + "url": "https://github.com/chalk/chalk?sponsor=1"
2155 + }
2156 + },
2157 + "node_modules/eslint/node_modules/color-convert": {
2158 + "version": "2.0.1",
2159 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
2160 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
2161 + "dev": true,
2162 + "license": "MIT",
2163 + "dependencies": {
2164 + "color-name": "~1.1.4"
2165 + },
2166 + "engines": {
2167 + "node": ">=7.0.0"
2168 + }
2169 + },
2170 + "node_modules/eslint/node_modules/color-name": {
2171 + "version": "1.1.4",
2172 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
2173 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
2174 + "dev": true,
2175 + "license": "MIT"
2176 + },
2177 + "node_modules/eslint/node_modules/escape-string-regexp": {
2178 + "version": "4.0.0",
2179 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
2180 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
2181 + "dev": true,
2182 + "license": "MIT",
2183 + "engines": {
2184 + "node": ">=10"
2185 + },
2186 + "funding": {
2187 + "url": "https://github.com/sponsors/sindresorhus"
2188 + }
2189 + },
2190 + "node_modules/eslint/node_modules/has-flag": {
2191 + "version": "4.0.0",
2192 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
2193 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
2194 + "dev": true,
2195 + "license": "MIT",
2196 + "engines": {
2197 + "node": ">=8"
2198 + }
2199 + },
2200 + "node_modules/eslint/node_modules/minimatch": {
2201 + "version": "3.1.5",
2202 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
2203 + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
2204 + "dev": true,
2205 + "license": "ISC",
2206 + "dependencies": {
2207 + "brace-expansion": "^1.1.7"
2208 + },
2209 + "engines": {
2210 + "node": "*"
2211 + }
2212 + },
2213 + "node_modules/eslint/node_modules/supports-color": {
2214 + "version": "7.2.0",
2215 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
2216 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2217 + "dev": true,
2218 + "license": "MIT",
2219 + "dependencies": {
2220 + "has-flag": "^4.0.0"
2221 + },
2222 + "engines": {
2223 + "node": ">=8"
2224 + }
2225 + },
2226 + "node_modules/espree": {
2227 + "version": "9.6.1",
2228 + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
2229 + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
2230 + "dev": true,
2231 + "license": "BSD-2-Clause",
2232 + "dependencies": {
2233 + "acorn": "^8.9.0",
2234 + "acorn-jsx": "^5.3.2",
2235 + "eslint-visitor-keys": "^3.4.1"
2236 + },
2237 + "engines": {
2238 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
2239 + },
2240 + "funding": {
2241 + "url": "https://opencollective.com/eslint"
2242 + }
2243 + },
2244 + "node_modules/esquery": {
2245 + "version": "1.7.0",
2246 + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
2247 + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
2248 + "dev": true,
2249 + "license": "BSD-3-Clause",
2250 + "dependencies": {
2251 + "estraverse": "^5.1.0"
2252 + },
2253 + "engines": {
2254 + "node": ">=0.10"
2255 + }
2256 + },
2257 + "node_modules/esrecurse": {
2258 + "version": "4.3.0",
2259 + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
2260 + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
2261 + "dev": true,
2262 + "license": "BSD-2-Clause",
2263 + "dependencies": {
2264 + "estraverse": "^5.2.0"
2265 + },
2266 + "engines": {
2267 + "node": ">=4.0"
2268 + }
2269 + },
2270 + "node_modules/estraverse": {
2271 + "version": "5.3.0",
2272 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
2273 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
2274 + "dev": true,
2275 + "license": "BSD-2-Clause",
2276 + "engines": {
2277 + "node": ">=4.0"
2278 + }
2279 + },
2280 + "node_modules/esutils": {
2281 + "version": "2.0.3",
2282 + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
2283 + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
2284 + "dev": true,
2285 + "license": "BSD-2-Clause",
2286 + "engines": {
2287 + "node": ">=0.10.0"
2288 + }
2289 + },
2290 + "node_modules/expand-template": {
2291 + "version": "2.0.3",
2292 + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
2293 + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
2294 + "dev": true,
2295 + "license": "(MIT OR WTFPL)",
2296 + "optional": true,
2297 + "engines": {
2298 + "node": ">=6"
2299 + }
2300 + },
2301 + "node_modules/fast-deep-equal": {
2302 + "version": "3.1.3",
2303 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
2304 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
2305 + "dev": true,
2306 + "license": "MIT"
2307 + },
2308 + "node_modules/fast-glob": {
2309 + "version": "3.3.3",
2310 + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
2311 + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
2312 + "dev": true,
2313 + "license": "MIT",
2314 + "dependencies": {
2315 + "@nodelib/fs.stat": "^2.0.2",
2316 + "@nodelib/fs.walk": "^1.2.3",
2317 + "glob-parent": "^5.1.2",
2318 + "merge2": "^1.3.0",
2319 + "micromatch": "^4.0.8"
2320 + },
2321 + "engines": {
2322 + "node": ">=8.6.0"
2323 + }
2324 + },
2325 + "node_modules/fast-glob/node_modules/glob-parent": {
2326 + "version": "5.1.2",
2327 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
2328 + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
2329 + "dev": true,
2330 + "license": "ISC",
2331 + "dependencies": {
2332 + "is-glob": "^4.0.1"
2333 + },
2334 + "engines": {
2335 + "node": ">= 6"
2336 + }
2337 + },
2338 + "node_modules/fast-json-stable-stringify": {
2339 + "version": "2.1.0",
2340 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
2341 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
2342 + "dev": true,
2343 + "license": "MIT"
2344 + },
2345 + "node_modules/fast-levenshtein": {
2346 + "version": "2.0.6",
2347 + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
2348 + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
2349 + "dev": true,
2350 + "license": "MIT"
2351 + },
2352 + "node_modules/fastq": {
2353 + "version": "1.20.1",
2354 + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
2355 + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
2356 + "dev": true,
2357 + "license": "ISC",
2358 + "dependencies": {
2359 + "reusify": "^1.0.4"
2360 + }
2361 + },
2362 + "node_modules/fd-slicer": {
2363 + "version": "1.1.0",
2364 + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
2365 + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
2366 + "dev": true,
2367 + "license": "MIT",
2368 + "dependencies": {
2369 + "pend": "~1.2.0"
2370 + }
2371 + },
2372 + "node_modules/file-entry-cache": {
2373 + "version": "6.0.1",
2374 + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
2375 + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
2376 + "dev": true,
2377 + "license": "MIT",
2378 + "dependencies": {
2379 + "flat-cache": "^3.0.4"
2380 + },
2381 + "engines": {
2382 + "node": "^10.12.0 || >=12.0.0"
2383 + }
2384 + },
2385 + "node_modules/fill-range": {
2386 + "version": "7.1.1",
2387 + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
2388 + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
2389 + "dev": true,
2390 + "license": "MIT",
2391 + "dependencies": {
2392 + "to-regex-range": "^5.0.1"
2393 + },
2394 + "engines": {
2395 + "node": ">=8"
2396 + }
2397 + },
2398 + "node_modules/find-up": {
2399 + "version": "5.0.0",
2400 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
2401 + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
2402 + "dev": true,
2403 + "license": "MIT",
2404 + "dependencies": {
2405 + "locate-path": "^6.0.0",
2406 + "path-exists": "^4.0.0"
2407 + },
2408 + "engines": {
2409 + "node": ">=10"
2410 + },
2411 + "funding": {
2412 + "url": "https://github.com/sponsors/sindresorhus"
2413 + }
2414 + },
2415 + "node_modules/flat-cache": {
2416 + "version": "3.2.0",
2417 + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
2418 + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
2419 + "dev": true,
2420 + "license": "MIT",
2421 + "dependencies": {
2422 + "flatted": "^3.2.9",
2423 + "keyv": "^4.5.3",
2424 + "rimraf": "^3.0.2"
2425 + },
2426 + "engines": {
2427 + "node": "^10.12.0 || >=12.0.0"
2428 + }
2429 + },
2430 + "node_modules/flatted": {
2431 + "version": "3.4.2",
2432 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
2433 + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
2434 + "dev": true,
2435 + "license": "ISC"
2436 + },
2437 + "node_modules/form-data": {
2438 + "version": "4.0.6",
2439 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz",
2440 + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==",
2441 + "dev": true,
2442 + "license": "MIT",
2443 + "dependencies": {
2444 + "asynckit": "^0.4.0",
2445 + "combined-stream": "^1.0.8",
2446 + "es-set-tostringtag": "^2.1.0",
2447 + "hasown": "^2.0.4",
2448 + "mime-types": "^2.1.35"
2449 + },
2450 + "engines": {
2451 + "node": ">= 6"
2452 + }
2453 + },
2454 + "node_modules/fs-constants": {
2455 + "version": "1.0.0",
2456 + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
2457 + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
2458 + "dev": true,
2459 + "license": "MIT",
2460 + "optional": true
2461 + },
2462 + "node_modules/fs.realpath": {
2463 + "version": "1.0.0",
2464 + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
2465 + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
2466 + "dev": true,
2467 + "license": "ISC"
2468 + },
2469 + "node_modules/function-bind": {
2470 + "version": "1.1.2",
2471 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
2472 + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
2473 + "dev": true,
2474 + "license": "MIT",
2475 + "funding": {
2476 + "url": "https://github.com/sponsors/ljharb"
2477 + }
2478 + },
2479 + "node_modules/get-intrinsic": {
2480 + "version": "1.3.0",
2481 + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
2482 + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
2483 + "dev": true,
2484 + "license": "MIT",
2485 + "dependencies": {
2486 + "call-bind-apply-helpers": "^1.0.2",
2487 + "es-define-property": "^1.0.1",
2488 + "es-errors": "^1.3.0",
2489 + "es-object-atoms": "^1.1.1",
2490 + "function-bind": "^1.1.2",
2491 + "get-proto": "^1.0.1",
2492 + "gopd": "^1.2.0",
2493 + "has-symbols": "^1.1.0",
2494 + "hasown": "^2.0.2",
2495 + "math-intrinsics": "^1.1.0"
2496 + },
2497 + "engines": {
2498 + "node": ">= 0.4"
2499 + },
2500 + "funding": {
2501 + "url": "https://github.com/sponsors/ljharb"
2502 + }
2503 + },
2504 + "node_modules/get-proto": {
2505 + "version": "1.0.1",
2506 + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
2507 + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
2508 + "dev": true,
2509 + "license": "MIT",
2510 + "dependencies": {
2511 + "dunder-proto": "^1.0.1",
2512 + "es-object-atoms": "^1.0.0"
2513 + },
2514 + "engines": {
2515 + "node": ">= 0.4"
2516 + }
2517 + },
2518 + "node_modules/github-from-package": {
2519 + "version": "0.0.0",
2520 + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
2521 + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
2522 + "dev": true,
2523 + "license": "MIT",
2524 + "optional": true
2525 + },
2526 + "node_modules/glob": {
2527 + "version": "7.2.3",
2528 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
2529 + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
2530 + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
2531 + "dev": true,
2532 + "license": "ISC",
2533 + "dependencies": {
2534 + "fs.realpath": "^1.0.0",
2535 + "inflight": "^1.0.4",
2536 + "inherits": "2",
2537 + "minimatch": "^3.1.1",
2538 + "once": "^1.3.0",
2539 + "path-is-absolute": "^1.0.0"
2540 + },
2541 + "engines": {
2542 + "node": "*"
2543 + },
2544 + "funding": {
2545 + "url": "https://github.com/sponsors/isaacs"
2546 + }
2547 + },
2548 + "node_modules/glob-parent": {
2549 + "version": "6.0.2",
2550 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
2551 + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
2552 + "dev": true,
2553 + "license": "ISC",
2554 + "dependencies": {
2555 + "is-glob": "^4.0.3"
2556 + },
2557 + "engines": {
2558 + "node": ">=10.13.0"
2559 + }
2560 + },
2561 + "node_modules/glob/node_modules/brace-expansion": {
2562 + "version": "1.1.15",
2563 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
2564 + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
2565 + "dev": true,
2566 + "license": "MIT",
2567 + "dependencies": {
2568 + "balanced-match": "^1.0.0",
2569 + "concat-map": "0.0.1"
2570 + }
2571 + },
2572 + "node_modules/glob/node_modules/minimatch": {
2573 + "version": "3.1.5",
2574 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
2575 + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
2576 + "dev": true,
2577 + "license": "ISC",
2578 + "dependencies": {
2579 + "brace-expansion": "^1.1.7"
2580 + },
2581 + "engines": {
2582 + "node": "*"
2583 + }
2584 + },
2585 + "node_modules/globals": {
2586 + "version": "13.24.0",
2587 + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
2588 + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
2589 + "dev": true,
2590 + "license": "MIT",
2591 + "dependencies": {
2592 + "type-fest": "^0.20.2"
2593 + },
2594 + "engines": {
2595 + "node": ">=8"
2596 + },
2597 + "funding": {
2598 + "url": "https://github.com/sponsors/sindresorhus"
2599 + }
2600 + },
2601 + "node_modules/globby": {
2602 + "version": "11.1.0",
2603 + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
2604 + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
2605 + "dev": true,
2606 + "license": "MIT",
2607 + "dependencies": {
2608 + "array-union": "^2.1.0",
2609 + "dir-glob": "^3.0.1",
2610 + "fast-glob": "^3.2.9",
2611 + "ignore": "^5.2.0",
2612 + "merge2": "^1.4.1",
2613 + "slash": "^3.0.0"
2614 + },
2615 + "engines": {
2616 + "node": ">=10"
2617 + },
2618 + "funding": {
2619 + "url": "https://github.com/sponsors/sindresorhus"
2620 + }
2621 + },
2622 + "node_modules/gopd": {
2623 + "version": "1.2.0",
2624 + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
2625 + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
2626 + "dev": true,
2627 + "license": "MIT",
2628 + "engines": {
2629 + "node": ">= 0.4"
2630 + },
2631 + "funding": {
2632 + "url": "https://github.com/sponsors/ljharb"
2633 + }
2634 + },
2635 + "node_modules/graphemer": {
2636 + "version": "1.4.0",
2637 + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
2638 + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
2639 + "dev": true,
2640 + "license": "MIT"
2641 + },
2642 + "node_modules/has-flag": {
2643 + "version": "3.0.0",
2644 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
2645 + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
2646 + "dev": true,
2647 + "license": "MIT",
2648 + "engines": {
2649 + "node": ">=4"
2650 + }
2651 + },
2652 + "node_modules/has-symbols": {
2653 + "version": "1.1.0",
2654 + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
2655 + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
2656 + "dev": true,
2657 + "license": "MIT",
2658 + "engines": {
2659 + "node": ">= 0.4"
2660 + },
2661 + "funding": {
2662 + "url": "https://github.com/sponsors/ljharb"
2663 + }
2664 + },
2665 + "node_modules/has-tostringtag": {
2666 + "version": "1.0.2",
2667 + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
2668 + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
2669 + "dev": true,
2670 + "license": "MIT",
2671 + "dependencies": {
2672 + "has-symbols": "^1.0.3"
2673 + },
2674 + "engines": {
2675 + "node": ">= 0.4"
2676 + },
2677 + "funding": {
2678 + "url": "https://github.com/sponsors/ljharb"
2679 + }
2680 + },
2681 + "node_modules/hasown": {
2682 + "version": "2.0.4",
2683 + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
2684 + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
2685 + "dev": true,
2686 + "license": "MIT",
2687 + "dependencies": {
2688 + "function-bind": "^1.1.2"
2689 + },
2690 + "engines": {
2691 + "node": ">= 0.4"
2692 + }
2693 + },
2694 + "node_modules/hosted-git-info": {
2695 + "version": "4.1.0",
2696 + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
2697 + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
2698 + "dev": true,
2699 + "license": "ISC",
2700 + "dependencies": {
2701 + "lru-cache": "^6.0.0"
2702 + },
2703 + "engines": {
2704 + "node": ">=10"
2705 + }
2706 + },
2707 + "node_modules/htmlparser2": {
2708 + "version": "10.1.0",
2709 + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
2710 + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==",
2711 + "dev": true,
2712 + "funding": [
2713 + "https://github.com/fb55/htmlparser2?sponsor=1",
2714 + {
2715 + "type": "github",
2716 + "url": "https://github.com/sponsors/fb55"
2717 + }
2718 + ],
2719 + "license": "MIT",
2720 + "dependencies": {
2721 + "domelementtype": "^2.3.0",
2722 + "domhandler": "^5.0.3",
2723 + "domutils": "^3.2.2",
2724 + "entities": "^7.0.1"
2725 + }
2726 + },
2727 + "node_modules/htmlparser2/node_modules/entities": {
2728 + "version": "7.0.1",
2729 + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
2730 + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
2731 + "dev": true,
2732 + "license": "BSD-2-Clause",
2733 + "engines": {
2734 + "node": ">=0.12"
2735 + },
2736 + "funding": {
2737 + "url": "https://github.com/fb55/entities?sponsor=1"
2738 + }
2739 + },
2740 + "node_modules/http-proxy-agent": {
2741 + "version": "7.0.2",
2742 + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
2743 + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
2744 + "dev": true,
2745 + "license": "MIT",
2746 + "dependencies": {
2747 + "agent-base": "^7.1.0",
2748 + "debug": "^4.3.4"
2749 + },
2750 + "engines": {
2751 + "node": ">= 14"
2752 + }
2753 + },
2754 + "node_modules/https-proxy-agent": {
2755 + "version": "7.0.6",
2756 + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
2757 + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
2758 + "dev": true,
2759 + "license": "MIT",
2760 + "dependencies": {
2761 + "agent-base": "^7.1.2",
2762 + "debug": "4"
2763 + },
2764 + "engines": {
2765 + "node": ">= 14"
2766 + }
2767 + },
2768 + "node_modules/iconv-lite": {
2769 + "version": "0.6.3",
2770 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
2771 + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
2772 + "dev": true,
2773 + "license": "MIT",
2774 + "dependencies": {
2775 + "safer-buffer": ">= 2.1.2 < 3.0.0"
2776 + },
2777 + "engines": {
2778 + "node": ">=0.10.0"
2779 + }
2780 + },
2781 + "node_modules/ieee754": {
2782 + "version": "1.2.1",
2783 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
2784 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
2785 + "dev": true,
2786 + "funding": [
2787 + {
2788 + "type": "github",
2789 + "url": "https://github.com/sponsors/feross"
2790 + },
2791 + {
2792 + "type": "patreon",
2793 + "url": "https://www.patreon.com/feross"
2794 + },
2795 + {
2796 + "type": "consulting",
2797 + "url": "https://feross.org/support"
2798 + }
2799 + ],
2800 + "license": "BSD-3-Clause",
2801 + "optional": true
2802 + },
2803 + "node_modules/ignore": {
2804 + "version": "5.3.2",
2805 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
2806 + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
2807 + "dev": true,
2808 + "license": "MIT",
2809 + "engines": {
2810 + "node": ">= 4"
2811 + }
2812 + },
2813 + "node_modules/import-fresh": {
2814 + "version": "3.3.1",
2815 + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
2816 + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
2817 + "dev": true,
2818 + "license": "MIT",
2819 + "dependencies": {
2820 + "parent-module": "^1.0.0",
2821 + "resolve-from": "^4.0.0"
2822 + },
2823 + "engines": {
2824 + "node": ">=6"
2825 + },
2826 + "funding": {
2827 + "url": "https://github.com/sponsors/sindresorhus"
2828 + }
2829 + },
2830 + "node_modules/imurmurhash": {
2831 + "version": "0.1.4",
2832 + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
2833 + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
2834 + "dev": true,
2835 + "license": "MIT",
2836 + "engines": {
2837 + "node": ">=0.8.19"
2838 + }
2839 + },
2840 + "node_modules/inflight": {
2841 + "version": "1.0.6",
2842 + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
2843 + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
2844 + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
2845 + "dev": true,
2846 + "license": "ISC",
2847 + "dependencies": {
2848 + "once": "^1.3.0",
2849 + "wrappy": "1"
2850 + }
2851 + },
2852 + "node_modules/inherits": {
2853 + "version": "2.0.4",
2854 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
2855 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
2856 + "dev": true,
2857 + "license": "ISC"
2858 + },
2859 + "node_modules/ini": {
2860 + "version": "1.3.8",
2861 + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
2862 + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
2863 + "dev": true,
2864 + "license": "ISC",
2865 + "optional": true
2866 + },
2867 + "node_modules/is-docker": {
2868 + "version": "3.0.0",
2869 + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
2870 + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
2871 + "dev": true,
2872 + "license": "MIT",
2873 + "bin": {
2874 + "is-docker": "cli.js"
2875 + },
2876 + "engines": {
2877 + "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
2878 + },
2879 + "funding": {
2880 + "url": "https://github.com/sponsors/sindresorhus"
2881 + }
2882 + },
2883 + "node_modules/is-extglob": {
2884 + "version": "2.1.1",
2885 + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2886 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
2887 + "dev": true,
2888 + "license": "MIT",
2889 + "engines": {
2890 + "node": ">=0.10.0"
2891 + }
2892 + },
2893 + "node_modules/is-glob": {
2894 + "version": "4.0.3",
2895 + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
2896 + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
2897 + "dev": true,
2898 + "license": "MIT",
2899 + "dependencies": {
2900 + "is-extglob": "^2.1.1"
2901 + },
2902 + "engines": {
2903 + "node": ">=0.10.0"
2904 + }
2905 + },
2906 + "node_modules/is-inside-container": {
2907 + "version": "1.0.0",
2908 + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
2909 + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
2910 + "dev": true,
2911 + "license": "MIT",
2912 + "dependencies": {
2913 + "is-docker": "^3.0.0"
2914 + },
2915 + "bin": {
2916 + "is-inside-container": "cli.js"
2917 + },
2918 + "engines": {
2919 + "node": ">=14.16"
2920 + },
2921 + "funding": {
2922 + "url": "https://github.com/sponsors/sindresorhus"
2923 + }
2924 + },
2925 + "node_modules/is-number": {
2926 + "version": "7.0.0",
2927 + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
2928 + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
2929 + "dev": true,
2930 + "license": "MIT",
2931 + "engines": {
2932 + "node": ">=0.12.0"
2933 + }
2934 + },
2935 + "node_modules/is-path-inside": {
2936 + "version": "3.0.3",
2937 + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
2938 + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
2939 + "dev": true,
2940 + "license": "MIT",
2941 + "engines": {
2942 + "node": ">=8"
2943 + }
2944 + },
2945 + "node_modules/is-wsl": {
2946 + "version": "3.1.1",
2947 + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz",
2948 + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
2949 + "dev": true,
2950 + "license": "MIT",
2951 + "dependencies": {
2952 + "is-inside-container": "^1.0.0"
2953 + },
2954 + "engines": {
2955 + "node": ">=16"
2956 + },
2957 + "funding": {
2958 + "url": "https://github.com/sponsors/sindresorhus"
2959 + }
2960 + },
2961 + "node_modules/isexe": {
2962 + "version": "2.0.0",
2963 + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2964 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
2965 + "dev": true,
2966 + "license": "ISC"
2967 + },
2968 + "node_modules/js-yaml": {
2969 + "version": "4.2.0",
2970 + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz",
2971 + "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==",
2972 + "dev": true,
2973 + "funding": [
2974 + {
2975 + "type": "github",
2976 + "url": "https://github.com/sponsors/puzrin"
2977 + },
2978 + {
2979 + "type": "github",
2980 + "url": "https://github.com/sponsors/nodeca"
2981 + }
2982 + ],
2983 + "license": "MIT",
2984 + "dependencies": {
2985 + "argparse": "^2.0.1"
2986 + },
2987 + "bin": {
2988 + "js-yaml": "bin/js-yaml.js"
2989 + }
2990 + },
2991 + "node_modules/json-buffer": {
2992 + "version": "3.0.1",
2993 + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
2994 + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
2995 + "dev": true,
2996 + "license": "MIT"
2997 + },
2998 + "node_modules/json-schema-traverse": {
2999 + "version": "0.4.1",
3000 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
3001 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
3002 + "dev": true,
3003 + "license": "MIT"
3004 + },
3005 + "node_modules/json-stable-stringify-without-jsonify": {
3006 + "version": "1.0.1",
3007 + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
3008 + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
3009 + "dev": true,
3010 + "license": "MIT"
3011 + },
3012 + "node_modules/jsonc-parser": {
3013 + "version": "3.3.1",
3014 + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
3015 + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
3016 + "dev": true,
3017 + "license": "MIT"
3018 + },
3019 + "node_modules/jsonwebtoken": {
3020 + "version": "9.0.3",
3021 + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz",
3022 + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==",
3023 + "dev": true,
3024 + "license": "MIT",
3025 + "dependencies": {
3026 + "jws": "^4.0.1",
3027 + "lodash.includes": "^4.3.0",
3028 + "lodash.isboolean": "^3.0.3",
3029 + "lodash.isinteger": "^4.0.4",
3030 + "lodash.isnumber": "^3.0.3",
3031 + "lodash.isplainobject": "^4.0.6",
3032 + "lodash.isstring": "^4.0.1",
3033 + "lodash.once": "^4.0.0",
3034 + "ms": "^2.1.1",
3035 + "semver": "^7.5.4"
3036 + },
3037 + "engines": {
3038 + "node": ">=12",
3039 + "npm": ">=6"
3040 + }
3041 + },
3042 + "node_modules/jwa": {
3043 + "version": "2.0.1",
3044 + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz",
3045 + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==",
3046 + "dev": true,
3047 + "license": "MIT",
3048 + "dependencies": {
3049 + "buffer-equal-constant-time": "^1.0.1",
3050 + "ecdsa-sig-formatter": "1.0.11",
3051 + "safe-buffer": "^5.0.1"
3052 + }
3053 + },
3054 + "node_modules/jws": {
3055 + "version": "4.0.1",
3056 + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz",
3057 + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==",
3058 + "dev": true,
3059 + "license": "MIT",
3060 + "dependencies": {
3061 + "jwa": "^2.0.1",
3062 + "safe-buffer": "^5.0.1"
3063 + }
3064 + },
3065 + "node_modules/keytar": {
3066 + "version": "7.9.0",
3067 + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz",
3068 + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==",
3069 + "dev": true,
3070 + "hasInstallScript": true,
3071 + "license": "MIT",
3072 + "optional": true,
3073 + "dependencies": {
3074 + "node-addon-api": "^4.3.0",
3075 + "prebuild-install": "^7.0.1"
3076 + }
3077 + },
3078 + "node_modules/keyv": {
3079 + "version": "4.5.4",
3080 + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
3081 + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
3082 + "dev": true,
3083 + "license": "MIT",
3084 + "dependencies": {
3085 + "json-buffer": "3.0.1"
3086 + }
3087 + },
3088 + "node_modules/leven": {
3089 + "version": "3.1.0",
3090 + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
3091 + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
3092 + "dev": true,
3093 + "license": "MIT",
3094 + "engines": {
3095 + "node": ">=6"
3096 + }
3097 + },
3098 + "node_modules/levn": {
3099 + "version": "0.4.1",
3100 + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
3101 + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
3102 + "dev": true,
3103 + "license": "MIT",
3104 + "dependencies": {
3105 + "prelude-ls": "^1.2.1",
3106 + "type-check": "~0.4.0"
3107 + },
3108 + "engines": {
3109 + "node": ">= 0.8.0"
3110 + }
3111 + },
3112 + "node_modules/linkify-it": {
3113 + "version": "3.0.3",
3114 + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
3115 + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
3116 + "dev": true,
3117 + "license": "MIT",
3118 + "dependencies": {
3119 + "uc.micro": "^1.0.1"
3120 + }
3121 + },
3122 + "node_modules/locate-path": {
3123 + "version": "6.0.0",
3124 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
3125 + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
3126 + "dev": true,
3127 + "license": "MIT",
3128 + "dependencies": {
3129 + "p-locate": "^5.0.0"
3130 + },
3131 + "engines": {
3132 + "node": ">=10"
3133 + },
3134 + "funding": {
3135 + "url": "https://github.com/sponsors/sindresorhus"
3136 + }
3137 + },
3138 + "node_modules/lodash.includes": {
3139 + "version": "4.3.0",
3140 + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
3141 + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
3142 + "dev": true,
3143 + "license": "MIT"
3144 + },
3145 + "node_modules/lodash.isboolean": {
3146 + "version": "3.0.3",
3147 + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
3148 + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
3149 + "dev": true,
3150 + "license": "MIT"
3151 + },
3152 + "node_modules/lodash.isinteger": {
3153 + "version": "4.0.4",
3154 + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
3155 + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
3156 + "dev": true,
3157 + "license": "MIT"
3158 + },
3159 + "node_modules/lodash.isnumber": {
3160 + "version": "3.0.3",
3161 + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
3162 + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
3163 + "dev": true,
3164 + "license": "MIT"
3165 + },
3166 + "node_modules/lodash.isplainobject": {
3167 + "version": "4.0.6",
3168 + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
3169 + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
3170 + "dev": true,
3171 + "license": "MIT"
3172 + },
3173 + "node_modules/lodash.isstring": {
3174 + "version": "4.0.1",
3175 + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
3176 + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
3177 + "dev": true,
3178 + "license": "MIT"
3179 + },
3180 + "node_modules/lodash.merge": {
3181 + "version": "4.6.2",
3182 + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
3183 + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
3184 + "dev": true,
3185 + "license": "MIT"
3186 + },
3187 + "node_modules/lodash.once": {
3188 + "version": "4.1.1",
3189 + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
3190 + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
3191 + "dev": true,
3192 + "license": "MIT"
3193 + },
3194 + "node_modules/lru-cache": {
3195 + "version": "6.0.0",
3196 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
3197 + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
3198 + "dev": true,
3199 + "license": "ISC",
3200 + "dependencies": {
3201 + "yallist": "^4.0.0"
3202 + },
3203 + "engines": {
3204 + "node": ">=10"
3205 + }
3206 + },
3207 + "node_modules/markdown-it": {
3208 + "version": "12.3.2",
3209 + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
3210 + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
3211 + "dev": true,
3212 + "license": "MIT",
3213 + "dependencies": {
3214 + "argparse": "^2.0.1",
3215 + "entities": "~2.1.0",
3216 + "linkify-it": "^3.0.1",
3217 + "mdurl": "^1.0.1",
3218 + "uc.micro": "^1.0.5"
3219 + },
3220 + "bin": {
3221 + "markdown-it": "bin/markdown-it.js"
3222 + }
3223 + },
3224 + "node_modules/markdown-it/node_modules/entities": {
3225 + "version": "2.1.0",
3226 + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
3227 + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
3228 + "dev": true,
3229 + "license": "BSD-2-Clause",
3230 + "funding": {
3231 + "url": "https://github.com/fb55/entities?sponsor=1"
3232 + }
3233 + },
3234 + "node_modules/math-intrinsics": {
3235 + "version": "1.1.0",
3236 + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
3237 + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
3238 + "dev": true,
3239 + "license": "MIT",
3240 + "engines": {
3241 + "node": ">= 0.4"
3242 + }
3243 + },
3244 + "node_modules/mdurl": {
3245 + "version": "1.0.1",
3246 + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
3247 + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
3248 + "dev": true,
3249 + "license": "MIT"
3250 + },
3251 + "node_modules/merge2": {
3252 + "version": "1.4.1",
3253 + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
3254 + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
3255 + "dev": true,
3256 + "license": "MIT",
3257 + "engines": {
3258 + "node": ">= 8"
3259 + }
3260 + },
3261 + "node_modules/micromatch": {
3262 + "version": "4.0.8",
3263 + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
3264 + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
3265 + "dev": true,
3266 + "license": "MIT",
3267 + "dependencies": {
3268 + "braces": "^3.0.3",
3269 + "picomatch": "^2.3.1"
3270 + },
3271 + "engines": {
3272 + "node": ">=8.6"
3273 + }
3274 + },
3275 + "node_modules/mime": {
3276 + "version": "1.6.0",
3277 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
3278 + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
3279 + "dev": true,
3280 + "license": "MIT",
3281 + "bin": {
3282 + "mime": "cli.js"
3283 + },
3284 + "engines": {
3285 + "node": ">=4"
3286 + }
3287 + },
3288 + "node_modules/mime-db": {
3289 + "version": "1.52.0",
3290 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
3291 + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
3292 + "dev": true,
3293 + "license": "MIT",
3294 + "engines": {
3295 + "node": ">= 0.6"
3296 + }
3297 + },
3298 + "node_modules/mime-types": {
3299 + "version": "2.1.35",
3300 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
3301 + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
3302 + "dev": true,
3303 + "license": "MIT",
3304 + "dependencies": {
3305 + "mime-db": "1.52.0"
3306 + },
3307 + "engines": {
3308 + "node": ">= 0.6"
3309 + }
3310 + },
3311 + "node_modules/mimic-response": {
3312 + "version": "3.1.0",
3313 + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
3314 + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
3315 + "dev": true,
3316 + "license": "MIT",
3317 + "optional": true,
3318 + "engines": {
3319 + "node": ">=10"
3320 + },
3321 + "funding": {
3322 + "url": "https://github.com/sponsors/sindresorhus"
3323 + }
3324 + },
3325 + "node_modules/minimatch": {
3326 + "version": "9.0.9",
3327 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
3328 + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
3329 + "dev": true,
3330 + "license": "ISC",
3331 + "dependencies": {
3332 + "brace-expansion": "^2.0.2"
3333 + },
3334 + "engines": {
3335 + "node": ">=16 || 14 >=14.17"
3336 + },
3337 + "funding": {
3338 + "url": "https://github.com/sponsors/isaacs"
3339 + }
3340 + },
3341 + "node_modules/minimist": {
3342 + "version": "1.2.8",
3343 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
3344 + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
3345 + "dev": true,
3346 + "license": "MIT",
3347 + "optional": true,
3348 + "funding": {
3349 + "url": "https://github.com/sponsors/ljharb"
3350 + }
3351 + },
3352 + "node_modules/mkdirp-classic": {
3353 + "version": "0.5.3",
3354 + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
3355 + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
3356 + "dev": true,
3357 + "license": "MIT",
3358 + "optional": true
3359 + },
3360 + "node_modules/ms": {
3361 + "version": "2.1.3",
3362 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
3363 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
3364 + "dev": true,
3365 + "license": "MIT"
3366 + },
3367 + "node_modules/mute-stream": {
3368 + "version": "0.0.8",
3369 + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
3370 + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
3371 + "dev": true,
3372 + "license": "ISC"
3373 + },
3374 + "node_modules/napi-build-utils": {
3375 + "version": "2.0.0",
3376 + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz",
3377 + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==",
3378 + "dev": true,
3379 + "license": "MIT",
3380 + "optional": true
3381 + },
3382 + "node_modules/natural-compare": {
3383 + "version": "1.4.0",
3384 + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
3385 + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
3386 + "dev": true,
3387 + "license": "MIT"
3388 + },
3389 + "node_modules/node-abi": {
3390 + "version": "3.92.0",
3391 + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.92.0.tgz",
3392 + "integrity": "sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==",
3393 + "dev": true,
3394 + "license": "MIT",
3395 + "optional": true,
3396 + "dependencies": {
3397 + "semver": "^7.3.5"
3398 + },
3399 + "engines": {
3400 + "node": ">=10"
3401 + }
3402 + },
3403 + "node_modules/node-addon-api": {
3404 + "version": "4.3.0",
3405 + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
3406 + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
3407 + "dev": true,
3408 + "license": "MIT",
3409 + "optional": true
3410 + },
3411 + "node_modules/nth-check": {
3412 + "version": "2.1.1",
3413 + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
3414 + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
3415 + "dev": true,
3416 + "license": "BSD-2-Clause",
3417 + "dependencies": {
3418 + "boolbase": "^1.0.0"
3419 + },
3420 + "funding": {
3421 + "url": "https://github.com/fb55/nth-check?sponsor=1"
3422 + }
3423 + },
3424 + "node_modules/object-inspect": {
3425 + "version": "1.13.4",
3426 + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
3427 + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
3428 + "dev": true,
3429 + "license": "MIT",
3430 + "engines": {
3431 + "node": ">= 0.4"
3432 + },
3433 + "funding": {
3434 + "url": "https://github.com/sponsors/ljharb"
3435 + }
3436 + },
3437 + "node_modules/once": {
3438 + "version": "1.4.0",
3439 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
3440 + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
3441 + "dev": true,
3442 + "license": "ISC",
3443 + "dependencies": {
3444 + "wrappy": "1"
3445 + }
3446 + },
3447 + "node_modules/open": {
3448 + "version": "10.2.0",
3449 + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz",
3450 + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==",
3451 + "dev": true,
3452 + "license": "MIT",
3453 + "dependencies": {
3454 + "default-browser": "^5.2.1",
3455 + "define-lazy-prop": "^3.0.0",
3456 + "is-inside-container": "^1.0.0",
3457 + "wsl-utils": "^0.1.0"
3458 + },
3459 + "engines": {
3460 + "node": ">=18"
3461 + },
3462 + "funding": {
3463 + "url": "https://github.com/sponsors/sindresorhus"
3464 + }
3465 + },
3466 + "node_modules/optionator": {
3467 + "version": "0.9.4",
3468 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
3469 + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
3470 + "dev": true,
3471 + "license": "MIT",
3472 + "dependencies": {
3473 + "deep-is": "^0.1.3",
3474 + "fast-levenshtein": "^2.0.6",
3475 + "levn": "^0.4.1",
3476 + "prelude-ls": "^1.2.1",
3477 + "type-check": "^0.4.0",
3478 + "word-wrap": "^1.2.5"
3479 + },
3480 + "engines": {
3481 + "node": ">= 0.8.0"
3482 + }
3483 + },
3484 + "node_modules/p-limit": {
3485 + "version": "3.1.0",
3486 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
3487 + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
3488 + "dev": true,
3489 + "license": "MIT",
3490 + "dependencies": {
3491 + "yocto-queue": "^0.1.0"
3492 + },
3493 + "engines": {
3494 + "node": ">=10"
3495 + },
3496 + "funding": {
3497 + "url": "https://github.com/sponsors/sindresorhus"
3498 + }
3499 + },
3500 + "node_modules/p-locate": {
3501 + "version": "5.0.0",
3502 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
3503 + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
3504 + "dev": true,
3505 + "license": "MIT",
3506 + "dependencies": {
3507 + "p-limit": "^3.0.2"
3508 + },
3509 + "engines": {
3510 + "node": ">=10"
3511 + },
3512 + "funding": {
3513 + "url": "https://github.com/sponsors/sindresorhus"
3514 + }
3515 + },
3516 + "node_modules/parent-module": {
3517 + "version": "1.0.1",
3518 + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
3519 + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
3520 + "dev": true,
3521 + "license": "MIT",
3522 + "dependencies": {
3523 + "callsites": "^3.0.0"
3524 + },
3525 + "engines": {
3526 + "node": ">=6"
3527 + }
3528 + },
3529 + "node_modules/parse-semver": {
3530 + "version": "1.1.1",
3531 + "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
3532 + "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==",
3533 + "dev": true,
3534 + "license": "MIT",
3535 + "dependencies": {
3536 + "semver": "^5.1.0"
3537 + }
3538 + },
3539 + "node_modules/parse-semver/node_modules/semver": {
3540 + "version": "5.7.2",
3541 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
3542 + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
3543 + "dev": true,
3544 + "license": "ISC",
3545 + "bin": {
3546 + "semver": "bin/semver"
3547 + }
3548 + },
3549 + "node_modules/parse5": {
3550 + "version": "7.3.0",
3551 + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
3552 + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
3553 + "dev": true,
3554 + "license": "MIT",
3555 + "dependencies": {
3556 + "entities": "^6.0.0"
3557 + },
3558 + "funding": {
3559 + "url": "https://github.com/inikulin/parse5?sponsor=1"
3560 + }
3561 + },
3562 + "node_modules/parse5-htmlparser2-tree-adapter": {
3563 + "version": "7.1.0",
3564 + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
3565 + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==",
3566 + "dev": true,
3567 + "license": "MIT",
3568 + "dependencies": {
3569 + "domhandler": "^5.0.3",
3570 + "parse5": "^7.0.0"
3571 + },
3572 + "funding": {
3573 + "url": "https://github.com/inikulin/parse5?sponsor=1"
3574 + }
3575 + },
3576 + "node_modules/parse5-parser-stream": {
3577 + "version": "7.1.2",
3578 + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
3579 + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
3580 + "dev": true,
3581 + "license": "MIT",
3582 + "dependencies": {
3583 + "parse5": "^7.0.0"
3584 + },
3585 + "funding": {
3586 + "url": "https://github.com/inikulin/parse5?sponsor=1"
3587 + }
3588 + },
3589 + "node_modules/parse5/node_modules/entities": {
3590 + "version": "6.0.1",
3591 + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
3592 + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
3593 + "dev": true,
3594 + "license": "BSD-2-Clause",
3595 + "engines": {
3596 + "node": ">=0.12"
3597 + },
3598 + "funding": {
3599 + "url": "https://github.com/fb55/entities?sponsor=1"
3600 + }
3601 + },
3602 + "node_modules/path-exists": {
3603 + "version": "4.0.0",
3604 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
3605 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
3606 + "dev": true,
3607 + "license": "MIT",
3608 + "engines": {
3609 + "node": ">=8"
3610 + }
3611 + },
3612 + "node_modules/path-is-absolute": {
3613 + "version": "1.0.1",
3614 + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
3615 + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
3616 + "dev": true,
3617 + "license": "MIT",
3618 + "engines": {
3619 + "node": ">=0.10.0"
3620 + }
3621 + },
3622 + "node_modules/path-key": {
3623 + "version": "3.1.1",
3624 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
3625 + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
3626 + "dev": true,
3627 + "license": "MIT",
3628 + "engines": {
3629 + "node": ">=8"
3630 + }
3631 + },
3632 + "node_modules/path-type": {
3633 + "version": "4.0.0",
3634 + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
3635 + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
3636 + "dev": true,
3637 + "license": "MIT",
3638 + "engines": {
3639 + "node": ">=8"
3640 + }
3641 + },
3642 + "node_modules/pend": {
3643 + "version": "1.2.0",
3644 + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
3645 + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
3646 + "dev": true,
3647 + "license": "MIT"
3648 + },
3649 + "node_modules/picomatch": {
3650 + "version": "2.3.2",
3651 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
3652 + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
3653 + "dev": true,
3654 + "license": "MIT",
3655 + "engines": {
3656 + "node": ">=8.6"
3657 + },
3658 + "funding": {
3659 + "url": "https://github.com/sponsors/jonschlinkert"
3660 + }
3661 + },
3662 + "node_modules/prebuild-install": {
3663 + "version": "7.1.3",
3664 + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
3665 + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==",
3666 + "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.",
3667 + "dev": true,
3668 + "license": "MIT",
3669 + "optional": true,
3670 + "dependencies": {
3671 + "detect-libc": "^2.0.0",
3672 + "expand-template": "^2.0.3",
3673 + "github-from-package": "0.0.0",
3674 + "minimist": "^1.2.3",
3675 + "mkdirp-classic": "^0.5.3",
3676 + "napi-build-utils": "^2.0.0",
3677 + "node-abi": "^3.3.0",
3678 + "pump": "^3.0.0",
3679 + "rc": "^1.2.7",
3680 + "simple-get": "^4.0.0",
3681 + "tar-fs": "^2.0.0",
3682 + "tunnel-agent": "^0.6.0"
3683 + },
3684 + "bin": {
3685 + "prebuild-install": "bin.js"
3686 + },
3687 + "engines": {
3688 + "node": ">=10"
3689 + }
3690 + },
3691 + "node_modules/prelude-ls": {
3692 + "version": "1.2.1",
3693 + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
3694 + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
3695 + "dev": true,
3696 + "license": "MIT",
3697 + "engines": {
3698 + "node": ">= 0.8.0"
3699 + }
3700 + },
3701 + "node_modules/pump": {
3702 + "version": "3.0.4",
3703 + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz",
3704 + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==",
3705 + "dev": true,
3706 + "license": "MIT",
3707 + "optional": true,
3708 + "dependencies": {
3709 + "end-of-stream": "^1.1.0",
3710 + "once": "^1.3.1"
3711 + }
3712 + },
3713 + "node_modules/punycode": {
3714 + "version": "2.3.1",
3715 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
3716 + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
3717 + "dev": true,
3718 + "license": "MIT",
3719 + "engines": {
3720 + "node": ">=6"
3721 + }
3722 + },
3723 + "node_modules/qs": {
3724 + "version": "6.15.3",
3725 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz",
3726 + "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==",
3727 + "dev": true,
3728 + "license": "BSD-3-Clause",
3729 + "dependencies": {
3730 + "es-define-property": "^1.0.1",
3731 + "side-channel": "^1.1.1"
3732 + },
3733 + "engines": {
3734 + "node": ">=0.6"
3735 + },
3736 + "funding": {
3737 + "url": "https://github.com/sponsors/ljharb"
3738 + }
3739 + },
3740 + "node_modules/queue-microtask": {
3741 + "version": "1.2.3",
3742 + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
3743 + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
3744 + "dev": true,
3745 + "funding": [
3746 + {
3747 + "type": "github",
3748 + "url": "https://github.com/sponsors/feross"
3749 + },
3750 + {
3751 + "type": "patreon",
3752 + "url": "https://www.patreon.com/feross"
3753 + },
3754 + {
3755 + "type": "consulting",
3756 + "url": "https://feross.org/support"
3757 + }
3758 + ],
3759 + "license": "MIT"
3760 + },
3761 + "node_modules/rc": {
3762 + "version": "1.2.8",
3763 + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
3764 + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
3765 + "dev": true,
3766 + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
3767 + "optional": true,
3768 + "dependencies": {
3769 + "deep-extend": "^0.6.0",
3770 + "ini": "~1.3.0",
3771 + "minimist": "^1.2.0",
3772 + "strip-json-comments": "~2.0.1"
3773 + },
3774 + "bin": {
3775 + "rc": "cli.js"
3776 + }
3777 + },
3778 + "node_modules/rc/node_modules/strip-json-comments": {
3779 + "version": "2.0.1",
3780 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
3781 + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
3782 + "dev": true,
3783 + "license": "MIT",
3784 + "optional": true,
3785 + "engines": {
3786 + "node": ">=0.10.0"
3787 + }
3788 + },
3789 + "node_modules/read": {
3790 + "version": "1.0.7",
3791 + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
3792 + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==",
3793 + "dev": true,
3794 + "license": "ISC",
3795 + "dependencies": {
3796 + "mute-stream": "~0.0.4"
3797 + },
3798 + "engines": {
3799 + "node": ">=0.8"
3800 + }
3801 + },
3802 + "node_modules/readable-stream": {
3803 + "version": "3.6.2",
3804 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
3805 + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
3806 + "dev": true,
3807 + "license": "MIT",
3808 + "optional": true,
3809 + "dependencies": {
3810 + "inherits": "^2.0.3",
3811 + "string_decoder": "^1.1.1",
3812 + "util-deprecate": "^1.0.1"
3813 + },
3814 + "engines": {
3815 + "node": ">= 6"
3816 + }
3817 + },
3818 + "node_modules/resolve-from": {
3819 + "version": "4.0.0",
3820 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
3821 + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
3822 + "dev": true,
3823 + "license": "MIT",
3824 + "engines": {
3825 + "node": ">=4"
3826 + }
3827 + },
3828 + "node_modules/reusify": {
3829 + "version": "1.1.0",
3830 + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
3831 + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
3832 + "dev": true,
3833 + "license": "MIT",
3834 + "engines": {
3835 + "iojs": ">=1.0.0",
3836 + "node": ">=0.10.0"
3837 + }
3838 + },
3839 + "node_modules/rimraf": {
3840 + "version": "3.0.2",
3841 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
3842 + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
3843 + "deprecated": "Rimraf versions prior to v4 are no longer supported",
3844 + "dev": true,
3845 + "license": "ISC",
3846 + "dependencies": {
3847 + "glob": "^7.1.3"
3848 + },
3849 + "bin": {
3850 + "rimraf": "bin.js"
3851 + },
3852 + "funding": {
3853 + "url": "https://github.com/sponsors/isaacs"
3854 + }
3855 + },
3856 + "node_modules/run-applescript": {
3857 + "version": "7.1.0",
3858 + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
3859 + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
3860 + "dev": true,
3861 + "license": "MIT",
3862 + "engines": {
3863 + "node": ">=18"
3864 + },
3865 + "funding": {
3866 + "url": "https://github.com/sponsors/sindresorhus"
3867 + }
3868 + },
3869 + "node_modules/run-parallel": {
3870 + "version": "1.2.0",
3871 + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
3872 + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
3873 + "dev": true,
3874 + "funding": [
3875 + {
3876 + "type": "github",
3877 + "url": "https://github.com/sponsors/feross"
3878 + },
3879 + {
3880 + "type": "patreon",
3881 + "url": "https://www.patreon.com/feross"
3882 + },
3883 + {
3884 + "type": "consulting",
3885 + "url": "https://feross.org/support"
3886 + }
3887 + ],
3888 + "license": "MIT",
3889 + "dependencies": {
3890 + "queue-microtask": "^1.2.2"
3891 + }
3892 + },
3893 + "node_modules/safe-buffer": {
3894 + "version": "5.2.1",
3895 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
3896 + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
3897 + "dev": true,
3898 + "funding": [
3899 + {
3900 + "type": "github",
3901 + "url": "https://github.com/sponsors/feross"
3902 + },
3903 + {
3904 + "type": "patreon",
3905 + "url": "https://www.patreon.com/feross"
3906 + },
3907 + {
3908 + "type": "consulting",
3909 + "url": "https://feross.org/support"
3910 + }
3911 + ],
3912 + "license": "MIT"
3913 + },
3914 + "node_modules/safer-buffer": {
3915 + "version": "2.1.2",
3916 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
3917 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
3918 + "dev": true,
3919 + "license": "MIT"
3920 + },
3921 + "node_modules/sax": {
3922 + "version": "1.6.0",
3923 + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz",
3924 + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==",
3925 + "dev": true,
3926 + "license": "BlueOak-1.0.0",
3927 + "engines": {
3928 + "node": ">=11.0.0"
3929 + }
3930 + },
3931 + "node_modules/semver": {
3932 + "version": "7.8.5",
3933 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
3934 + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
3935 + "dev": true,
3936 + "license": "ISC",
3937 + "bin": {
3938 + "semver": "bin/semver.js"
3939 + },
3940 + "engines": {
3941 + "node": ">=10"
3942 + }
3943 + },
3944 + "node_modules/shebang-command": {
3945 + "version": "2.0.0",
3946 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
3947 + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
3948 + "dev": true,
3949 + "license": "MIT",
3950 + "dependencies": {
3951 + "shebang-regex": "^3.0.0"
3952 + },
3953 + "engines": {
3954 + "node": ">=8"
3955 + }
3956 + },
3957 + "node_modules/shebang-regex": {
3958 + "version": "3.0.0",
3959 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
3960 + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
3961 + "dev": true,
3962 + "license": "MIT",
3963 + "engines": {
3964 + "node": ">=8"
3965 + }
3966 + },
3967 + "node_modules/side-channel": {
3968 + "version": "1.1.1",
3969 + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
3970 + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
3971 + "dev": true,
3972 + "license": "MIT",
3973 + "dependencies": {
3974 + "es-errors": "^1.3.0",
3975 + "object-inspect": "^1.13.4",
3976 + "side-channel-list": "^1.0.1",
3977 + "side-channel-map": "^1.0.1",
3978 + "side-channel-weakmap": "^1.0.2"
3979 + },
3980 + "engines": {
3981 + "node": ">= 0.4"
3982 + },
3983 + "funding": {
3984 + "url": "https://github.com/sponsors/ljharb"
3985 + }
3986 + },
3987 + "node_modules/side-channel-list": {
3988 + "version": "1.0.1",
3989 + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
3990 + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
3991 + "dev": true,
3992 + "license": "MIT",
3993 + "dependencies": {
3994 + "es-errors": "^1.3.0",
3995 + "object-inspect": "^1.13.4"
3996 + },
3997 + "engines": {
3998 + "node": ">= 0.4"
3999 + },
4000 + "funding": {
4001 + "url": "https://github.com/sponsors/ljharb"
4002 + }
4003 + },
4004 + "node_modules/side-channel-map": {
4005 + "version": "1.0.1",
4006 + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
4007 + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
4008 + "dev": true,
4009 + "license": "MIT",
4010 + "dependencies": {
4011 + "call-bound": "^1.0.2",
4012 + "es-errors": "^1.3.0",
4013 + "get-intrinsic": "^1.2.5",
4014 + "object-inspect": "^1.13.3"
4015 + },
4016 + "engines": {
4017 + "node": ">= 0.4"
4018 + },
4019 + "funding": {
4020 + "url": "https://github.com/sponsors/ljharb"
4021 + }
4022 + },
4023 + "node_modules/side-channel-weakmap": {
4024 + "version": "1.0.2",
4025 + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
4026 + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
4027 + "dev": true,
4028 + "license": "MIT",
4029 + "dependencies": {
4030 + "call-bound": "^1.0.2",
4031 + "es-errors": "^1.3.0",
4032 + "get-intrinsic": "^1.2.5",
4033 + "object-inspect": "^1.13.3",
4034 + "side-channel-map": "^1.0.1"
4035 + },
4036 + "engines": {
4037 + "node": ">= 0.4"
4038 + },
4039 + "funding": {
4040 + "url": "https://github.com/sponsors/ljharb"
4041 + }
4042 + },
4043 + "node_modules/simple-concat": {
4044 + "version": "1.0.1",
4045 + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
4046 + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
4047 + "dev": true,
4048 + "funding": [
4049 + {
4050 + "type": "github",
4051 + "url": "https://github.com/sponsors/feross"
4052 + },
4053 + {
4054 + "type": "patreon",
4055 + "url": "https://www.patreon.com/feross"
4056 + },
4057 + {
4058 + "type": "consulting",
4059 + "url": "https://feross.org/support"
4060 + }
4061 + ],
4062 + "license": "MIT",
4063 + "optional": true
4064 + },
4065 + "node_modules/simple-get": {
4066 + "version": "4.0.1",
4067 + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
4068 + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
4069 + "dev": true,
4070 + "funding": [
4071 + {
4072 + "type": "github",
4073 + "url": "https://github.com/sponsors/feross"
4074 + },
4075 + {
4076 + "type": "patreon",
4077 + "url": "https://www.patreon.com/feross"
4078 + },
4079 + {
4080 + "type": "consulting",
4081 + "url": "https://feross.org/support"
4082 + }
4083 + ],
4084 + "license": "MIT",
4085 + "optional": true,
4086 + "dependencies": {
4087 + "decompress-response": "^6.0.0",
4088 + "once": "^1.3.1",
4089 + "simple-concat": "^1.0.0"
4090 + }
4091 + },
4092 + "node_modules/slash": {
4093 + "version": "3.0.0",
4094 + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
4095 + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
4096 + "dev": true,
4097 + "license": "MIT",
4098 + "engines": {
4099 + "node": ">=8"
4100 + }
4101 + },
4102 + "node_modules/string_decoder": {
4103 + "version": "1.3.0",
4104 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
4105 + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
4106 + "dev": true,
4107 + "license": "MIT",
4108 + "optional": true,
4109 + "dependencies": {
4110 + "safe-buffer": "~5.2.0"
4111 + }
4112 + },
4113 + "node_modules/strip-ansi": {
4114 + "version": "6.0.1",
4115 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
4116 + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
4117 + "dev": true,
4118 + "license": "MIT",
4119 + "dependencies": {
4120 + "ansi-regex": "^5.0.1"
4121 + },
4122 + "engines": {
4123 + "node": ">=8"
4124 + }
4125 + },
4126 + "node_modules/strip-json-comments": {
4127 + "version": "3.1.1",
4128 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
4129 + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
4130 + "dev": true,
4131 + "license": "MIT",
4132 + "engines": {
4133 + "node": ">=8"
4134 + },
4135 + "funding": {
4136 + "url": "https://github.com/sponsors/sindresorhus"
4137 + }
4138 + },
4139 + "node_modules/supports-color": {
4140 + "version": "5.5.0",
4141 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
4142 + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
4143 + "dev": true,
4144 + "license": "MIT",
4145 + "dependencies": {
4146 + "has-flag": "^3.0.0"
4147 + },
4148 + "engines": {
4149 + "node": ">=4"
4150 + }
4151 + },
4152 + "node_modules/tar-fs": {
4153 + "version": "2.1.4",
4154 + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz",
4155 + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==",
4156 + "dev": true,
4157 + "license": "MIT",
4158 + "optional": true,
4159 + "dependencies": {
4160 + "chownr": "^1.1.1",
4161 + "mkdirp-classic": "^0.5.2",
4162 + "pump": "^3.0.0",
4163 + "tar-stream": "^2.1.4"
4164 + }
4165 + },
4166 + "node_modules/tar-stream": {
4167 + "version": "2.2.0",
4168 + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
4169 + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
4170 + "dev": true,
4171 + "license": "MIT",
4172 + "optional": true,
4173 + "dependencies": {
4174 + "bl": "^4.0.3",
4175 + "end-of-stream": "^1.4.1",
4176 + "fs-constants": "^1.0.0",
4177 + "inherits": "^2.0.3",
4178 + "readable-stream": "^3.1.1"
4179 + },
4180 + "engines": {
4181 + "node": ">=6"
4182 + }
4183 + },
4184 + "node_modules/text-table": {
4185 + "version": "0.2.0",
4186 + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
4187 + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
4188 + "dev": true,
4189 + "license": "MIT"
4190 + },
4191 + "node_modules/tmp": {
4192 + "version": "0.2.7",
4193 + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz",
4194 + "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==",
4195 + "dev": true,
4196 + "license": "MIT",
4197 + "engines": {
4198 + "node": ">=14.14"
4199 + }
4200 + },
4201 + "node_modules/to-regex-range": {
4202 + "version": "5.0.1",
4203 + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
4204 + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
4205 + "dev": true,
4206 + "license": "MIT",
4207 + "dependencies": {
4208 + "is-number": "^7.0.0"
4209 + },
4210 + "engines": {
4211 + "node": ">=8.0"
4212 + }
4213 + },
4214 + "node_modules/ts-api-utils": {
4215 + "version": "1.4.3",
4216 + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz",
4217 + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==",
4218 + "dev": true,
4219 + "license": "MIT",
4220 + "engines": {
4221 + "node": ">=16"
4222 + },
4223 + "peerDependencies": {
4224 + "typescript": ">=4.2.0"
4225 + }
4226 + },
4227 + "node_modules/tslib": {
4228 + "version": "2.8.1",
4229 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
4230 + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
4231 + "dev": true,
4232 + "license": "0BSD"
4233 + },
4234 + "node_modules/tunnel": {
4235 + "version": "0.0.6",
4236 + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
4237 + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
4238 + "dev": true,
4239 + "license": "MIT",
4240 + "engines": {
4241 + "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
4242 + }
4243 + },
4244 + "node_modules/tunnel-agent": {
4245 + "version": "0.6.0",
4246 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
4247 + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
4248 + "dev": true,
4249 + "license": "Apache-2.0",
4250 + "optional": true,
4251 + "dependencies": {
4252 + "safe-buffer": "^5.0.1"
4253 + },
4254 + "engines": {
4255 + "node": "*"
4256 + }
4257 + },
4258 + "node_modules/type-check": {
4259 + "version": "0.4.0",
4260 + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
4261 + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
4262 + "dev": true,
4263 + "license": "MIT",
4264 + "dependencies": {
4265 + "prelude-ls": "^1.2.1"
4266 + },
4267 + "engines": {
4268 + "node": ">= 0.8.0"
4269 + }
4270 + },
4271 + "node_modules/type-fest": {
4272 + "version": "0.20.2",
4273 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
4274 + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
4275 + "dev": true,
4276 + "license": "(MIT OR CC0-1.0)",
4277 + "engines": {
4278 + "node": ">=10"
4279 + },
4280 + "funding": {
4281 + "url": "https://github.com/sponsors/sindresorhus"
4282 + }
4283 + },
4284 + "node_modules/typed-rest-client": {
4285 + "version": "1.8.11",
4286 + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz",
4287 + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==",
4288 + "dev": true,
4289 + "license": "MIT",
4290 + "dependencies": {
4291 + "qs": "^6.9.1",
4292 + "tunnel": "0.0.6",
4293 + "underscore": "^1.12.1"
4294 + }
4295 + },
4296 + "node_modules/typescript": {
4297 + "version": "5.9.3",
4298 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
4299 + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
4300 + "dev": true,
4301 + "license": "Apache-2.0",
4302 + "bin": {
4303 + "tsc": "bin/tsc",
4304 + "tsserver": "bin/tsserver"
4305 + },
4306 + "engines": {
4307 + "node": ">=14.17"
4308 + }
4309 + },
4310 + "node_modules/uc.micro": {
4311 + "version": "1.0.6",
4312 + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
4313 + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
4314 + "dev": true,
4315 + "license": "MIT"
4316 + },
4317 + "node_modules/underscore": {
4318 + "version": "1.13.8",
4319 + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz",
4320 + "integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==",
4321 + "dev": true,
4322 + "license": "MIT"
4323 + },
4324 + "node_modules/undici": {
4325 + "version": "7.28.0",
4326 + "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz",
4327 + "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==",
4328 + "dev": true,
4329 + "license": "MIT",
4330 + "engines": {
4331 + "node": ">=20.18.1"
4332 + }
4333 + },
4334 + "node_modules/undici-types": {
4335 + "version": "6.21.0",
4336 + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
4337 + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
4338 + "dev": true,
4339 + "license": "MIT"
4340 + },
4341 + "node_modules/uri-js": {
4342 + "version": "4.4.1",
4343 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
4344 + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
4345 + "dev": true,
4346 + "license": "BSD-2-Clause",
4347 + "dependencies": {
4348 + "punycode": "^2.1.0"
4349 + }
4350 + },
4351 + "node_modules/url-join": {
4352 + "version": "4.0.1",
4353 + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
4354 + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
4355 + "dev": true,
4356 + "license": "MIT"
4357 + },
4358 + "node_modules/util-deprecate": {
4359 + "version": "1.0.2",
4360 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
4361 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
4362 + "dev": true,
4363 + "license": "MIT",
4364 + "optional": true
4365 + },
4366 + "node_modules/whatwg-encoding": {
4367 + "version": "3.1.1",
4368 + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
4369 + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
4370 + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation",
4371 + "dev": true,
4372 + "license": "MIT",
4373 + "dependencies": {
4374 + "iconv-lite": "0.6.3"
4375 + },
4376 + "engines": {
4377 + "node": ">=18"
4378 + }
4379 + },
4380 + "node_modules/whatwg-mimetype": {
4381 + "version": "4.0.0",
4382 + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
4383 + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
4384 + "dev": true,
4385 + "license": "MIT",
4386 + "engines": {
4387 + "node": ">=18"
4388 + }
4389 + },
4390 + "node_modules/which": {
4391 + "version": "2.0.2",
4392 + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
4393 + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
4394 + "dev": true,
4395 + "license": "ISC",
4396 + "dependencies": {
4397 + "isexe": "^2.0.0"
4398 + },
4399 + "bin": {
4400 + "node-which": "bin/node-which"
4401 + },
4402 + "engines": {
4403 + "node": ">= 8"
4404 + }
4405 + },
4406 + "node_modules/word-wrap": {
4407 + "version": "1.2.5",
4408 + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
4409 + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
4410 + "dev": true,
4411 + "license": "MIT",
4412 + "engines": {
4413 + "node": ">=0.10.0"
4414 + }
4415 + },
4416 + "node_modules/wrappy": {
4417 + "version": "1.0.2",
4418 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
4419 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
4420 + "dev": true,
4421 + "license": "ISC"
4422 + },
4423 + "node_modules/wsl-utils": {
4424 + "version": "0.1.0",
4425 + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz",
4426 + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==",
4427 + "dev": true,
4428 + "license": "MIT",
4429 + "dependencies": {
4430 + "is-wsl": "^3.1.0"
4431 + },
4432 + "engines": {
4433 + "node": ">=18"
4434 + },
4435 + "funding": {
4436 + "url": "https://github.com/sponsors/sindresorhus"
4437 + }
4438 + },
4439 + "node_modules/xml2js": {
4440 + "version": "0.5.0",
4441 + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
4442 + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
4443 + "dev": true,
4444 + "license": "MIT",
4445 + "dependencies": {
4446 + "sax": ">=0.6.0",
4447 + "xmlbuilder": "~11.0.0"
4448 + },
4449 + "engines": {
4450 + "node": ">=4.0.0"
4451 + }
4452 + },
4453 + "node_modules/xmlbuilder": {
4454 + "version": "11.0.1",
4455 + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
4456 + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
4457 + "dev": true,
4458 + "license": "MIT",
4459 + "engines": {
4460 + "node": ">=4.0"
4461 + }
4462 + },
4463 + "node_modules/yallist": {
4464 + "version": "4.0.0",
4465 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
4466 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
4467 + "dev": true,
4468 + "license": "ISC"
4469 + },
4470 + "node_modules/yauzl": {
4471 + "version": "2.10.0",
4472 + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
4473 + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
4474 + "dev": true,
4475 + "license": "MIT",
4476 + "dependencies": {
4477 + "buffer-crc32": "~0.2.3",
4478 + "fd-slicer": "~1.1.0"
4479 + }
4480 + },
4481 + "node_modules/yazl": {
4482 + "version": "2.5.1",
4483 + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz",
4484 + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==",
4485 + "dev": true,
4486 + "license": "MIT",
4487 + "dependencies": {
4488 + "buffer-crc32": "~0.2.3"
4489 + }
4490 + },
4491 + "node_modules/yocto-queue": {
4492 + "version": "0.1.0",
4493 + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
4494 + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
4495 + "dev": true,
4496 + "license": "MIT",
4497 + "engines": {
4498 + "node": ">=10"
4499 + },
4500 + "funding": {
4501 + "url": "https://github.com/sponsors/sindresorhus"
4502 + }
4503 + }
4504 + }
4505 +}
package.json new
+168
@@ -0,0 +1,168 @@
1 +{
2 + "name": "sigit-code",
3 + "displayName": "siGit Code — On-device AI Coding Agent",
4 + "description": "Local-first AI coding agent for VS Code. Runs the on-device sigit agent, and other ACP-compatible agents, over stdio.",
5 + "version": "0.0.1",
6 + "publisher": "getsigit",
7 + "license": "MIT",
8 + "homepage": "https://code.sigit.si",
9 + "//icon": "TODO: add media/icon.png (128x128) before publishing, then set \"icon\": \"media/icon.png\"",
10 + "repository": {
11 + "type": "git",
12 + "url": "https://github.com/getsigit/sigit-vscode"
13 + },
14 + "bugs": {
15 + "url": "https://github.com/getsigit/sigit-vscode/issues"
16 + },
17 + "engines": {
18 + "vscode": "^1.90.0"
19 + },
20 + "categories": [
21 + "AI",
22 + "Chat",
23 + "Programming Languages",
24 + "Other"
25 + ],
26 + "keywords": [
27 + "acp",
28 + "agent client protocol",
29 + "ai",
30 + "coding agent",
31 + "local llm",
32 + "on-device",
33 + "gguf",
34 + "offline",
35 + "claude code",
36 + "gemini",
37 + "copilot alternative"
38 + ],
39 + "main": "./dist/extension.js",
40 + "activationEvents": [],
41 + "contributes": {
42 + "commands": [
43 + {
44 + "command": "sigit.openChat",
45 + "title": "siGit: Open Chat",
46 + "category": "siGit"
47 + },
48 + {
49 + "command": "sigit.newSession",
50 + "title": "siGit: New Session",
51 + "category": "siGit"
52 + },
53 + {
54 + "command": "sigit.selectAgent",
55 + "title": "siGit: Select Agent",
56 + "category": "siGit"
57 + },
58 + {
59 + "command": "sigit.restartAgent",
60 + "title": "siGit: Restart Agent",
61 + "category": "siGit"
62 + }
63 + ],
64 + "viewsContainers": {
65 + "activitybar": [
66 + {
67 + "id": "sigit",
68 + "title": "siGit Code",
69 + "icon": "media/activity-icon.svg"
70 + }
71 + ]
72 + },
73 + "views": {
74 + "sigit": [
75 + {
76 + "type": "webview",
77 + "id": "sigit.chat",
78 + "name": "Chat"
79 + }
80 + ]
81 + },
82 + "configuration": {
83 + "title": "siGit Code",
84 + "properties": {
85 + "sigit.agent.default": {
86 + "type": "string",
87 + "default": "sigit",
88 + "markdownDescription": "Key of the agent to use by default, looked up in `#sigit.agents#`. Defaults to the on-device `sigit` binary."
89 + },
90 + "sigit.agents": {
91 + "type": "object",
92 + "markdownDescription": "Registry of ACP agents that siGit Code can spawn. Each entry maps a key to an agent definition. The on-device `sigit` agent is the local-first default; add other ACP-compatible agents here.",
93 + "default": {
94 + "sigit": {
95 + "name": "siGit (on-device)",
96 + "command": "sigit",
97 + "args": [],
98 + "env": {}
99 + }
100 + },
101 + "additionalProperties": {
102 + "type": "object",
103 + "properties": {
104 + "name": {
105 + "type": "string",
106 + "description": "Human-readable display name."
107 + },
108 + "command": {
109 + "type": "string",
110 + "description": "Executable to spawn (on PATH or an absolute path)."
111 + },
112 + "args": {
113 + "type": "array",
114 + "items": {
115 + "type": "string"
116 + },
117 + "description": "Arguments passed to the agent binary."
118 + },
119 + "env": {
120 + "type": "object",
121 + "additionalProperties": {
122 + "type": "string"
123 + },
124 + "description": "Extra environment variables for the agent process."
125 + }
126 + },
127 + "required": [
128 + "command"
129 + ]
130 + }
131 + },
132 + "sigit.permission.mode": {
133 + "type": "string",
134 + "enum": [
135 + "prompt",
136 + "allow",
137 + "deny"
138 + ],
139 + "enumDescriptions": [
140 + "Ask before every agent-requested action.",
141 + "Automatically allow agent-requested actions.",
142 + "Automatically deny agent-requested actions."
143 + ],
144 + "default": "prompt",
145 + "description": "How to handle permission requests from the agent (file writes, tool calls, etc.)."
146 + }
147 + }
148 + }
149 + },
150 + "scripts": {
151 + "vscode:prepublish": "npm run build",
152 + "build": "node esbuild.js --production",
153 + "watch": "node esbuild.js --watch",
154 + "compile": "tsc --noEmit",
155 + "lint": "eslint src --ext ts",
156 + "package": "vsce package"
157 + },
158 + "devDependencies": {
159 + "@types/node": "^20.11.0",
160 + "@types/vscode": "^1.90.0",
161 + "@typescript-eslint/eslint-plugin": "^7.0.0",
162 + "@typescript-eslint/parser": "^7.0.0",
163 + "@vscode/vsce": "^2.24.0",
164 + "esbuild": "^0.20.0",
165 + "eslint": "^8.57.0",
166 + "typescript": "^5.4.0"
167 + }
168 +}
src/acp/client.ts new
+172
@@ -0,0 +1,172 @@
1 +import { ChildProcessWithoutNullStreams, spawn } from "child_process";
2 +import { EventEmitter } from "events";
3 +import { Connection } from "./connection";
4 +
5 +/**
6 + * AcpClient — spawns an Agent Client Protocol agent over stdio and drives the
7 + * ACP handshake and prompt turns.
8 + *
9 + * Protocol reference: https://agentclientprotocol.com
10 + */
11 +
12 +export interface AgentSpawnConfig {
13 + command: string;
14 + args?: string[];
15 + cwd?: string;
16 + env?: Record<string, string>;
17 +}
18 +
19 +export interface PermissionRequest {
20 + sessionId: string;
21 + toolCall?: unknown;
22 + options?: Array<{ optionId: string; name: string; kind?: string }>;
23 + [key: string]: unknown;
24 +}
25 +
26 +export interface PermissionResponse {
27 + outcome: { outcome: "selected"; optionId: string } | { outcome: "cancelled" };
28 +}
29 +
30 +/** Callbacks the host injects so the agent can act on the workspace. */
31 +export interface AcpCallbacks {
32 + requestPermission: (request: PermissionRequest) => Promise<PermissionResponse>;
33 + readTextFile: (params: { path: string; line?: number; limit?: number }) => Promise<string>;
34 + writeTextFile: (params: { path: string; content: string }) => Promise<void>;
35 +}
36 +
37 +export interface SessionUpdate {
38 + sessionId: string;
39 + update: {
40 + sessionUpdate: string;
41 + [key: string]: unknown;
42 + };
43 +}
44 +
45 +const PROTOCOL_VERSION = 1;
46 +
47 +export class AcpClient extends EventEmitter {
48 + private child: ChildProcessWithoutNullStreams | undefined;
49 + private connection: Connection | undefined;
50 + private callbacks: AcpCallbacks;
51 + private sessionId: string | undefined;
52 + private disposed = false;
53 +
54 + constructor(callbacks: AcpCallbacks) {
55 + super();
56 + this.callbacks = callbacks;
57 + }
58 +
59 + get currentSessionId(): string | undefined {
60 + return this.sessionId;
61 + }
62 +
63 + /** Spawn the agent process and wire up the JSON-RPC connection. */
64 + spawn(config: AgentSpawnConfig): void {
65 + const env = { ...process.env, ...(config.env ?? {}) };
66 + const child = spawn(config.command, config.args ?? [], {
67 + cwd: config.cwd,
68 + env,
69 + stdio: ["pipe", "pipe", "pipe"]
70 + });
71 +
72 + child.on("error", (err) => this.emit("error", err));
73 + child.on("exit", (code, signal) => this.emit("exit", code, signal));
74 + child.stderr.on("data", (chunk: Buffer) => this.emit("stderr", chunk.toString()));
75 +
76 + const connection = new Connection(child.stdout, child.stdin);
77 + connection.on("error", (err) => this.emit("error", err));
78 +
79 + connection.onNotification("session/update", (params) => {
80 + this.emit("update", params as SessionUpdate);
81 + });
82 +
83 + connection.onRequest("session/request_permission", async (params) => {
84 + return this.callbacks.requestPermission(params as PermissionRequest);
85 + });
86 +
87 + connection.onRequest("fs/read_text_file", async (params) => {
88 + const p = params as { path: string; line?: number; limit?: number };
89 + const content = await this.callbacks.readTextFile(p);
90 + return { content };
91 + });
92 +
93 + connection.onRequest("fs/write_text_file", async (params) => {
94 + const p = params as { path: string; content: string };
95 + await this.callbacks.writeTextFile(p);
96 + return null;
97 + });
98 +
99 + this.child = child;
100 + this.connection = connection;
101 + }
102 +
103 + /** Run the ACP handshake: initialize → session/new. Returns the session id. */
104 + async initialize(cwd: string): Promise<string> {
105 + const connection = this.requireConnection();
106 +
107 + await connection.request("initialize", {
108 + protocolVersion: PROTOCOL_VERSION,
109 + clientCapabilities: {
110 + fs: {
111 + readTextFile: true,
112 + writeTextFile: true
113 + }
114 + }
115 + });
116 +
117 + const session = await connection.request<{ sessionId: string }>("session/new", {
118 + cwd,
119 + mcpServers: []
120 + });
121 +
122 + this.sessionId = session.sessionId;
123 + return session.sessionId;
124 + }
125 +
126 + /** Send a text prompt and resolve with the stop reason for the turn. */
127 + async prompt(text: string): Promise<string> {
128 + const connection = this.requireConnection();
129 + if (!this.sessionId) {
130 + throw new Error("No active session; call initialize() first");
131 + }
132 + const result = await connection.request<{ stopReason: string }>("session/prompt", {
133 + sessionId: this.sessionId,
134 + prompt: [{ type: "text", text }]
135 + });
136 + return result.stopReason;
137 + }
138 +
139 + /** Ask the agent to cancel the current turn. */
140 + cancel(): void {
141 + if (!this.connection || !this.sessionId) {
142 + return;
143 + }
144 + this.connection.notify("session/cancel", { sessionId: this.sessionId });
145 + }
146 +
147 + dispose(): void {
148 + if (this.disposed) {
149 + return;
150 + }
151 + this.disposed = true;
152 + this.connection?.dispose();
153 + this.connection = undefined;
154 + if (this.child) {
155 + try {
156 + this.child.kill();
157 + } catch {
158 + // ignore
159 + }
160 + this.child = undefined;
161 + }
162 + this.sessionId = undefined;
163 + this.removeAllListeners();
164 + }
165 +
166 + private requireConnection(): Connection {
167 + if (!this.connection) {
168 + throw new Error("Agent not spawned; call spawn() first");
169 + }
170 + return this.connection;
171 + }
172 +}
src/acp/connection.ts new
+216
@@ -0,0 +1,216 @@
1 +import { EventEmitter } from "events";
2 +import { Readable, Writable } from "stream";
3 +
4 +/**
5 + * A generic JSON-RPC 2.0 peer over newline-delimited JSON (ndjson).
6 + *
7 + * Reads from a readable stream (the agent's stdout) and writes to a writable
8 + * stream (the agent's stdin). Both incoming requests/notifications and our own
9 + * outbound requests/notifications are supported, so this is a symmetric peer
10 + * rather than a one-directional client.
11 + */
12 +
13 +type JsonValue =
14 + | null
15 + | boolean
16 + | number
17 + | string
18 + | JsonValue[]
19 + | { [key: string]: JsonValue };
20 +
21 +interface JsonRpcRequest {
22 + jsonrpc: "2.0";
23 + id: number | string;
24 + method: string;
25 + params?: unknown;
26 +}
27 +
28 +interface JsonRpcNotification {
29 + jsonrpc: "2.0";
30 + method: string;
31 + params?: unknown;
32 +}
33 +
34 +interface JsonRpcResponse {
35 + jsonrpc: "2.0";
36 + id: number | string;
37 + result?: unknown;
38 + error?: JsonRpcError;
39 +}
40 +
41 +interface JsonRpcError {
42 + code: number;
43 + message: string;
44 + data?: unknown;
45 +}
46 +
47 +type RequestHandler = (params: unknown) => unknown | Promise<unknown>;
48 +type NotificationHandler = (params: unknown) => void;
49 +
50 +interface PendingRequest {
51 + resolve: (value: unknown) => void;
52 + reject: (reason: unknown) => void;
53 +}
54 +
55 +export class Connection extends EventEmitter {
56 + private readonly writable: Writable;
57 + private readonly pending = new Map<number | string, PendingRequest>();
58 + private readonly requestHandlers = new Map<string, RequestHandler>();
59 + private readonly notificationHandlers = new Map<string, NotificationHandler>();
60 + private buffer = "";
61 + private nextId = 1;
62 + private disposed = false;
63 +
64 + constructor(readable: Readable, writable: Writable) {
65 + super();
66 + this.writable = writable;
67 + readable.on("data", (chunk: Buffer | string) => this.onData(chunk.toString()));
68 + readable.on("error", (err) => this.emit("error", err));
69 + readable.on("close", () => this.emit("close"));
70 + }
71 +
72 + /** Send a request and resolve with its result (or reject on error). */
73 + request<T = unknown>(method: string, params?: unknown): Promise<T> {
74 + if (this.disposed) {
75 + return Promise.reject(new Error("Connection disposed"));
76 + }
77 + const id = this.nextId++;
78 + const payload: JsonRpcRequest = { jsonrpc: "2.0", id, method, params };
79 + return new Promise<T>((resolve, reject) => {
80 + this.pending.set(id, {
81 + resolve: resolve as (value: unknown) => void,
82 + reject
83 + });
84 + this.send(payload);
85 + });
86 + }
87 +
88 + /** Send a fire-and-forget notification. */
89 + notify(method: string, params?: unknown): void {
90 + if (this.disposed) {
91 + return;
92 + }
93 + const payload: JsonRpcNotification = { jsonrpc: "2.0", method, params };
94 + this.send(payload);
95 + }
96 +
97 + /** Register a handler for inbound requests of a given method. */
98 + onRequest(method: string, handler: RequestHandler): void {
99 + this.requestHandlers.set(method, handler);
100 + }
101 +
102 + /** Register a handler for inbound notifications of a given method. */
103 + onNotification(method: string, handler: NotificationHandler): void {
104 + this.notificationHandlers.set(method, handler);
105 + }
106 +
107 + dispose(): void {
108 + if (this.disposed) {
109 + return;
110 + }
111 + this.disposed = true;
112 + const err = new Error("Connection disposed");
113 + for (const { reject } of this.pending.values()) {
114 + reject(err);
115 + }
116 + this.pending.clear();
117 + this.requestHandlers.clear();
118 + this.notificationHandlers.clear();
119 + this.removeAllListeners();
120 + }
121 +
122 + private send(message: JsonValue | JsonRpcRequest | JsonRpcNotification | JsonRpcResponse): void {
123 + try {
124 + this.writable.write(JSON.stringify(message) + "\n");
125 + } catch (err) {
126 + this.emit("error", err);
127 + }
128 + }
129 +
130 + private onData(text: string): void {
131 + this.buffer += text;
132 + let newlineIndex: number;
133 + while ((newlineIndex = this.buffer.indexOf("\n")) !== -1) {
134 + const line = this.buffer.slice(0, newlineIndex).trim();
135 + this.buffer = this.buffer.slice(newlineIndex + 1);
136 + if (line.length === 0) {
137 + continue;
138 + }
139 + this.handleLine(line);
140 + }
141 + }
142 +
143 + private handleLine(line: string): void {
144 + let message: JsonRpcRequest | JsonRpcResponse | JsonRpcNotification;
145 + try {
146 + message = JSON.parse(line);
147 + } catch (err) {
148 + this.emit("error", new Error(`Failed to parse message: ${line}`));
149 + return;
150 + }
151 +
152 + if ("id" in message && ("result" in message || "error" in message)) {
153 + this.handleResponse(message as JsonRpcResponse);
154 + } else if ("method" in message && "id" in message) {
155 + void this.handleRequest(message as JsonRpcRequest);
156 + } else if ("method" in message) {
157 + this.handleNotification(message as JsonRpcNotification);
158 + } else {
159 + this.emit("error", new Error(`Unrecognized message: ${line}`));
160 + }
161 + }
162 +
163 + private handleResponse(message: JsonRpcResponse): void {
164 + const pending = this.pending.get(message.id);
165 + if (!pending) {
166 + return;
167 + }
168 + this.pending.delete(message.id);
169 + if (message.error) {
170 + const err = new Error(message.error.message);
171 + (err as Error & { code?: number; data?: unknown }).code = message.error.code;
172 + (err as Error & { code?: number; data?: unknown }).data = message.error.data;
173 + pending.reject(err);
174 + } else {
175 + pending.resolve(message.result);
176 + }
177 + }
178 +
179 + private async handleRequest(message: JsonRpcRequest): Promise<void> {
180 + const handler = this.requestHandlers.get(message.method);
181 + if (!handler) {
182 + this.send({
183 + jsonrpc: "2.0",
184 + id: message.id,
185 + error: { code: -32601, message: `Method not found: ${message.method}` }
186 + });
187 + return;
188 + }
189 + try {
190 + const result = await handler(message.params);
191 + this.send({ jsonrpc: "2.0", id: message.id, result: (result ?? null) as JsonValue });
192 + } catch (err) {
193 + const error = err as Error & { code?: number; data?: unknown };
194 + this.send({
195 + jsonrpc: "2.0",
196 + id: message.id,
197 + error: {
198 + code: typeof error.code === "number" ? error.code : -32603,
199 + message: error.message ?? "Internal error",
200 + data: error.data
201 + }
202 + });
203 + }
204 + }
205 +
206 + private handleNotification(message: JsonRpcNotification): void {
207 + const handler = this.notificationHandlers.get(message.method);
208 + if (handler) {
209 + try {
210 + handler(message.params);
211 + } catch (err) {
212 + this.emit("error", err);
213 + }
214 + }
215 + }
216 +}
src/agents.ts new
+73
@@ -0,0 +1,73 @@
1 +import * as vscode from "vscode";
2 +
3 +/**
4 + * Reads the siGit agent registry and permission settings from the workspace
5 + * configuration. Falls back to the on-device `sigit` binary when the registry
6 + * is empty — local-first is always the default.
7 + */
8 +
9 +export interface AgentDefinition {
10 + key: string;
11 + name: string;
12 + command: string;
13 + args: string[];
14 + env: Record<string, string>;
15 +}
16 +
17 +export type PermissionMode = "prompt" | "allow" | "deny";
18 +
19 +const FALLBACK_AGENT: AgentDefinition = {
20 + key: "sigit",
21 + name: "siGit (on-device)",
22 + command: "sigit",
23 + args: [],
24 + env: {}
25 +};
26 +
27 +interface RawAgent {
28 + name?: string;
29 + command: string;
30 + args?: string[];
31 + env?: Record<string, string>;
32 +}
33 +
34 +function config(): vscode.WorkspaceConfiguration {
35 + return vscode.workspace.getConfiguration("sigit");
36 +}
37 +
38 +function normalize(key: string, raw: RawAgent): AgentDefinition {
39 + return {
40 + key,
41 + name: raw.name ?? key,
42 + command: raw.command,
43 + args: raw.args ?? [],
44 + env: raw.env ?? {}
45 + };
46 +}
47 +
48 +/** All configured agents, never empty (falls back to on-device `sigit`). */
49 +export function listAgents(): AgentDefinition[] {
50 + const registry = config().get<Record<string, RawAgent>>("agents") ?? {};
51 + const entries = Object.entries(registry).filter(([, raw]) => raw && raw.command);
52 + if (entries.length === 0) {
53 + return [FALLBACK_AGENT];
54 + }
55 + return entries.map(([key, raw]) => normalize(key, raw));
56 +}
57 +
58 +/** Resolve a specific agent by key, or the configured default when omitted. */
59 +export function resolveAgent(key?: string): AgentDefinition {
60 + const agents = listAgents();
61 + const wanted = key ?? config().get<string>("agent.default") ?? FALLBACK_AGENT.key;
62 + return agents.find((agent) => agent.key === wanted) ?? agents[0];
63 +}
64 +
65 +/** The key of the default agent. */
66 +export function defaultAgentKey(): string {
67 + return config().get<string>("agent.default") ?? FALLBACK_AGENT.key;
68 +}
69 +
70 +/** Current permission handling mode. */
71 +export function permissionMode(): PermissionMode {
72 + return config().get<PermissionMode>("permission.mode") ?? "prompt";
73 +}
src/chatView.ts new
+344
@@ -0,0 +1,344 @@
1 +import * as vscode from "vscode";
2 +import { AcpClient, PermissionRequest, PermissionResponse, SessionUpdate } from "./acp/client";
3 +import { defaultAgentKey, listAgents, permissionMode, resolveAgent } from "./agents";
4 +
5 +/**
6 + * The siGit chat webview. Owns a single AcpClient at a time, streams agent
7 + * output into the webview, and bridges file reads/writes and permission
8 + * requests back to VS Code.
9 + */
10 +export class ChatViewProvider implements vscode.WebviewViewProvider {
11 + public static readonly viewType = "sigit.chat";
12 +
13 + private view: vscode.WebviewView | undefined;
14 + private client: AcpClient | undefined;
15 + private activeAgentKey: string;
16 + private starting: Promise<void> | undefined;
17 +
18 + constructor(private readonly context: vscode.ExtensionContext) {
19 + this.activeAgentKey = defaultAgentKey();
20 + }
21 +
22 + resolveWebviewView(webviewView: vscode.WebviewView): void {
23 + this.view = webviewView;
24 + webviewView.webview.options = {
25 + enableScripts: true,
26 + localResourceRoots: [vscode.Uri.joinPath(this.context.extensionUri, "media")]
27 + };
28 + webviewView.webview.html = this.getHtml(webviewView.webview);
29 +
30 + webviewView.webview.onDidReceiveMessage((message) => {
31 + switch (message?.type) {
32 + case "prompt":
33 + void this.handlePrompt(String(message.text ?? ""));
34 + break;
35 + case "cancel":
36 + this.client?.cancel();
37 + break;
38 + case "ready":
39 + this.postStatus(`Agent: ${this.activeAgentKey}`);
40 + break;
41 + default:
42 + break;
43 + }
44 + });
45 +
46 + webviewView.onDidDispose(() => {
47 + this.disposeClient();
48 + this.view = undefined;
49 + });
50 + }
51 +
52 + reveal(): void {
53 + this.view?.show?.(true);
54 + }
55 +
56 + /** Start a fresh session, discarding any existing client. */
57 + async newSession(): Promise<void> {
58 + this.disposeClient();
59 + this.post({ type: "clear" });
60 + await this.ensureClient();
61 + this.postStatus("New session started");
62 + }
63 +
64 + /** Restart the active agent process. */
65 + async restart(): Promise<void> {
66 + this.disposeClient();
67 + this.postStatus("Restarting agent…");
68 + await this.ensureClient();
69 + this.postStatus(`Agent restarted: ${this.activeAgentKey}`);
70 + }
71 +
72 + /** Pick an agent from the registry and switch to it. */
73 + async selectAgent(): Promise<void> {
74 + const agents = listAgents();
75 + const picked = await vscode.window.showQuickPick(
76 + agents.map((agent) => ({
77 + label: agent.name,
78 + description: agent.key,
79 + detail: `${agent.command} ${agent.args.join(" ")}`.trim(),
80 + agent
81 + })),
82 + { placeHolder: "Select an ACP agent" }
83 + );
84 + if (!picked) {
85 + return;
86 + }
87 + this.activeAgentKey = picked.agent.key;
88 + this.disposeClient();
89 + this.post({ type: "clear" });
90 + await this.ensureClient();
91 + this.postStatus(`Agent: ${picked.agent.name}`);
92 + }
93 +
94 + private async handlePrompt(text: string): Promise<void> {
95 + const trimmed = text.trim();
96 + if (!trimmed) {
97 + return;
98 + }
99 + try {
100 + await this.ensureClient();
101 + } catch (err) {
102 + this.postError(`Failed to start agent: ${(err as Error).message}`);
103 + return;
104 + }
105 + if (!this.client) {
106 + this.postError("No agent available.");
107 + return;
108 + }
109 + this.post({ type: "user", text: trimmed });
110 + this.post({ type: "busy", busy: true });
111 + try {
112 + const stopReason = await this.client.prompt(trimmed);
113 + this.post({ type: "turnEnd", stopReason });
114 + } catch (err) {
115 + this.postError(`Prompt failed: ${(err as Error).message}`);
116 + } finally {
117 + this.post({ type: "busy", busy: false });
118 + }
119 + }
120 +
121 + /** Spawn the active agent and open a session if not already running. */
122 + private ensureClient(): Promise<void> {
123 + if (this.client) {
124 + return Promise.resolve();
125 + }
126 + if (this.starting) {
127 + return this.starting;
128 + }
129 + this.starting = this.startClient().finally(() => {
130 + this.starting = undefined;
131 + });
132 + return this.starting;
133 + }
134 +
135 + private async startClient(): Promise<void> {
136 + const agent = resolveAgent(this.activeAgentKey);
137 + this.activeAgentKey = agent.key;
138 + const cwd = this.workspaceFolder();
139 +
140 + const client = new AcpClient({
141 + requestPermission: (request) => this.handlePermission(request),
142 + readTextFile: (params) => this.readFile(params),
143 + writeTextFile: (params) => this.writeFile(params)
144 + });
145 +
146 + client.on("update", (update: SessionUpdate) => this.handleUpdate(update));
147 + client.on("stderr", (chunk: string) => this.post({ type: "log", text: chunk }));
148 + client.on("error", (err: Error) => this.postError(`Agent error: ${err.message}`));
149 + client.on("exit", (code: number | null) => {
150 + this.postStatus(`Agent exited${code === null ? "" : ` (code ${code})`}`);
151 + if (this.client === client) {
152 + this.client = undefined;
153 + }
154 + });
155 +
156 + try {
157 + client.spawn({ command: agent.command, args: agent.args, cwd, env: agent.env });
158 + await client.initialize(cwd);
159 + } catch (err) {
160 + client.dispose();
161 + throw err;
162 + }
163 +
164 + this.client = client;
165 + this.postStatus(`Connected to ${agent.name}`);
166 + }
167 +
168 + private handleUpdate(update: SessionUpdate): void {
169 + const inner = update.update;
170 + if (!inner || typeof inner.sessionUpdate !== "string") {
171 + return;
172 + }
173 + switch (inner.sessionUpdate) {
174 + case "agent_message_chunk":
175 + this.post({ type: "assistant", text: this.contentText(inner.content) });
176 + break;
177 + case "agent_thought_chunk":
178 + this.post({ type: "thought", text: this.contentText(inner.content) });
179 + break;
180 + case "tool_call":
181 + case "tool_call_update":
182 + this.post({
183 + type: "tool",
184 + title: (inner.title as string) ?? (inner.kind as string) ?? "tool",
185 + status: (inner.status as string) ?? "",
186 + toolCallId: inner.toolCallId as string | undefined
187 + });
188 + break;
189 + default:
190 + break;
191 + }
192 + }
193 +
194 + private async handlePermission(request: PermissionRequest): Promise<PermissionResponse> {
195 + const mode = permissionMode();
196 + const options = request.options ?? [];
197 + const allowOption = options.find((o) => /allow|yes|approve/i.test(o.name ?? o.optionId));
198 + const denyOption = options.find((o) => /deny|no|reject|cancel/i.test(o.name ?? o.optionId));
199 +
200 + if (mode === "allow" && allowOption) {
201 + return { outcome: { outcome: "selected", optionId: allowOption.optionId } };
202 + }
203 + if (mode === "deny") {
204 + return denyOption
205 + ? { outcome: { outcome: "selected", optionId: denyOption.optionId } }
206 + : { outcome: { outcome: "cancelled" } };
207 + }
208 +
209 + // prompt mode → ask the user
210 + const label = this.permissionLabel(request);
211 + if (options.length > 0) {
212 + const choice = await vscode.window.showInformationMessage(
213 + label,
214 + { modal: true },
215 + ...options.map((o) => o.name ?? o.optionId)
216 + );
217 + if (!choice) {
218 + return { outcome: { outcome: "cancelled" } };
219 + }
220 + const selected = options.find((o) => (o.name ?? o.optionId) === choice);
221 + return selected
222 + ? { outcome: { outcome: "selected", optionId: selected.optionId } }
223 + : { outcome: { outcome: "cancelled" } };
224 + }
225 +
226 + const choice = await vscode.window.showInformationMessage(
227 + label,
228 + { modal: true },
229 + "Allow",
230 + "Deny"
231 + );
232 + if (choice === "Allow" && allowOption) {
233 + return { outcome: { outcome: "selected", optionId: allowOption.optionId } };
234 + }
235 + return { outcome: { outcome: "cancelled" } };
236 + }
237 +
238 + private permissionLabel(request: PermissionRequest): string {
239 + const tc = request.toolCall as { title?: string; kind?: string } | undefined;
240 + const what = tc?.title ?? tc?.kind ?? "perform an action";
241 + return `The agent wants to ${what}. Allow?`;
242 + }
243 +
244 + private async readFile(params: { path: string }): Promise<string> {
245 + const uri = this.resolveUri(params.path);
246 + const bytes = await vscode.workspace.fs.readFile(uri);
247 + return Buffer.from(bytes).toString("utf8");
248 + }
249 +
250 + private async writeFile(params: { path: string; content: string }): Promise<void> {
251 + const uri = this.resolveUri(params.path);
252 + await vscode.workspace.fs.writeFile(uri, Buffer.from(params.content, "utf8"));
253 + }
254 +
255 + private resolveUri(p: string): vscode.Uri {
256 + if (p.startsWith("/") || /^[a-zA-Z]:[\\/]/.test(p)) {
257 + return vscode.Uri.file(p);
258 + }
259 + const folder = vscode.workspace.workspaceFolders?.[0];
260 + if (folder) {
261 + return vscode.Uri.joinPath(folder.uri, p);
262 + }
263 + return vscode.Uri.file(p);
264 + }
265 +
266 + private workspaceFolder(): string {
267 + return vscode.workspace.workspaceFolders?.[0]?.uri.fsPath ?? process.cwd();
268 + }
269 +
270 + private contentText(content: unknown): string {
271 + if (typeof content === "string") {
272 + return content;
273 + }
274 + if (content && typeof content === "object") {
275 + const c = content as { type?: string; text?: string };
276 + if (c.type === "text" && typeof c.text === "string") {
277 + return c.text;
278 + }
279 + }
280 + return "";
281 + }
282 +
283 + private post(message: Record<string, unknown>): void {
284 + void this.view?.webview.postMessage(message);
285 + }
286 +
287 + private postStatus(text: string): void {
288 + this.post({ type: "status", text });
289 + }
290 +
291 + private postError(text: string): void {
292 + this.post({ type: "error", text });
293 + }
294 +
295 + private disposeClient(): void {
296 + this.client?.dispose();
297 + this.client = undefined;
298 + }
299 +
300 + private getHtml(webview: vscode.Webview): string {
301 + const nonce = getNonce();
302 + const scriptUri = webview.asWebviewUri(
303 + vscode.Uri.joinPath(this.context.extensionUri, "media", "main.js")
304 + );
305 + const styleUri = webview.asWebviewUri(
306 + vscode.Uri.joinPath(this.context.extensionUri, "media", "main.css")
307 + );
308 + const csp = [
309 + `default-src 'none'`,
310 + `style-src ${webview.cspSource}`,
311 + `script-src 'nonce-${nonce}'`,
312 + `font-src ${webview.cspSource}`
313 + ].join("; ");
314 +
315 + return /* html */ `<!DOCTYPE html>
316 +<html lang="en">
317 +<head>
318 + <meta charset="UTF-8" />
319 + <meta http-equiv="Content-Security-Policy" content="${csp}" />
320 + <meta name="viewport" content="width=device-width, initial-scale=1.0" />
321 + <link href="${styleUri}" rel="stylesheet" />
322 + <title>siGit Chat</title>
323 +</head>
324 +<body>
325 + <div id="messages" class="messages"></div>
326 + <div id="status" class="status"></div>
327 + <form id="composer" class="composer">
328 + <textarea id="input" class="input" rows="2" placeholder="Ask the on-device agent…"></textarea>
329 + <button id="send" class="send" type="submit">Send</button>
330 + </form>
331 + <script nonce="${nonce}" src="${scriptUri}"></script>
332 +</body>
333 +</html>`;
334 + }
335 +}
336 +
337 +function getNonce(): string {
338 + const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
339 + let text = "";
340 + for (let i = 0; i < 32; i++) {
341 + text += chars.charAt(Math.floor(Math.random() * chars.length));
342 + }
343 + return text;
344 +}
src/extension.ts new
+26
@@ -0,0 +1,26 @@
1 +import * as vscode from "vscode";
2 +import { ChatViewProvider } from "./chatView";
3 +
4 +export function activate(context: vscode.ExtensionContext): void {
5 + const provider = new ChatViewProvider(context);
6 +
7 + context.subscriptions.push(
8 + vscode.window.registerWebviewViewProvider(ChatViewProvider.viewType, provider, {
9 + webviewOptions: { retainContextWhenHidden: true }
10 + })
11 + );
12 +
13 + context.subscriptions.push(
14 + vscode.commands.registerCommand("sigit.openChat", async () => {
15 + await vscode.commands.executeCommand("sigit.chat.focus");
16 + provider.reveal();
17 + }),
18 + vscode.commands.registerCommand("sigit.newSession", () => provider.newSession()),
19 + vscode.commands.registerCommand("sigit.selectAgent", () => provider.selectAgent()),
20 + vscode.commands.registerCommand("sigit.restartAgent", () => provider.restart())
21 + );
22 +}
23 +
24 +export function deactivate(): void {
25 + // Resources are tied to context.subscriptions and disposed automatically.
26 +}
tsconfig.json new
+17
@@ -0,0 +1,17 @@
1 +{
2 + "compilerOptions": {
3 + "module": "Node16",
4 + "moduleResolution": "Node16",
5 + "target": "ES2022",
6 + "lib": ["ES2022"],
7 + "outDir": "dist",
8 + "rootDir": "src",
9 + "sourceMap": true,
10 + "strict": true,
11 + "esModuleInterop": true,
12 + "forceConsistentCasingInFileNames": true,
13 + "skipLibCheck": true
14 + },
15 + "include": ["src"],
16 + "exclude": ["node_modules", "dist"]
17 +}