├── .gitignore
├── images
└── wow.gif
├── tsconfig.json
├── package.json
├── LICENSE
├── src
├── schemas.ts
└── index.ts
├── README.md
└── pnpm-lock.yaml
/.gitignore:
--------------------------------------------------------------------------------
1 | .env
2 | node_modules
3 | .DS_Store
4 | dist
--------------------------------------------------------------------------------
/images/wow.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Scrapybara/scrapybara-mcp/HEAD/images/wow.gif
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2022",
4 | "module": "ESNext",
5 | "moduleResolution": "node",
6 | "outDir": "./dist",
7 | "rootDir": "./src",
8 | "strict": true,
9 | "esModuleInterop": true,
10 | "skipLibCheck": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "allowImportingTsExtensions": false,
13 | "noEmit": false
14 | },
15 | "include": ["src/**/*.ts"],
16 | "exclude": ["node_modules"]
17 | }
18 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "scrapybara-mcp",
3 | "version": "0.1.0",
4 | "description": "MCP server for Scrapybara",
5 | "license": "MIT",
6 | "author": "Scrapybara",
7 | "homepage": "https://scrapybara.com",
8 | "bugs": "https://github.com/scrapybara/scrapybara-mcp/issues",
9 | "type": "module",
10 | "bin": {
11 | "mcp-server-scrapybara": "dist/index.js"
12 | },
13 | "files": [
14 | "dist"
15 | ],
16 | "scripts": {
17 | "build": "tsc && shx chmod +x dist/*.js",
18 | "watch": "tsc --watch"
19 | },
20 | "dependencies": {
21 | "@modelcontextprotocol/sdk": "^1.7.0",
22 | "scrapybara": "^2.4.1",
23 | "zod": "^3.24.2",
24 | "zod-to-json-schema": "^3.24.4"
25 | },
26 | "devDependencies": {
27 | "@types/node": "^22",
28 | "shx": "^0.3.4",
29 | "typescript": "^5.6.2"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 Scrapybara Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/schemas.ts:
--------------------------------------------------------------------------------
1 | import { z } from "zod";
2 |
3 | export const CancellationNotificationSchema = z.object({
4 | method: z.literal("notifications/cancelled"),
5 | params: z.object({
6 | requestId: z.string(),
7 | }),
8 | });
9 |
10 | export const StartInstanceSchema = z.object({});
11 |
12 | export const GetInstancesSchema = z.object({});
13 |
14 | export const StopInstanceSchema = z.object({
15 | instance_id: z.string().describe("The ID of the instance to stop."),
16 | });
17 |
18 | export const BashSchema = z.object({
19 | instance_id: z
20 | .string()
21 | .describe("The ID of the instance to run the command on."),
22 | command: z.string().describe("The command to run in the instance shell."),
23 | });
24 |
25 | export const ActSchema = z.object({
26 | instance_id: z.string().describe("The ID of the instance to act on."),
27 | prompt: z.string().describe(`The prompt to act on.
28 |
29 | - Go to https://ycombinator.com/companies, set batch filter to W25, and extract all company names.
30 | - Find the best way to contact Scrapybara.
31 | - Order a Big Mac from McDonald's on Doordash.
32 |
33 | `),
34 | schema: z
35 | .any()
36 | .optional()
37 | .describe("Optional schema if you want to extract structured output."),
38 | });
39 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Scrapybara MCP 
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | A Model Context Protocol server for [Scrapybara](https://scrapybara.com). This server enables MCP clients such as [Claude Desktop](https://claude.ai/download), [Cursor](https://www.cursor.com/), and [Windsurf](https://codeium.com/windsurf) to interact with virtual Ubuntu desktops and take actions such as browsing the web, running code, and more.
15 |
16 | ## Prerequisites
17 |
18 | - Node.js 18+
19 | - pnpm
20 | - Scrapybara API key (get one at [scrapybara.com](https://scrapybara.com))
21 |
22 | ## Installation
23 |
24 | 1. Clone the repository:
25 |
26 | ```bash
27 | git clone https://github.com/scrapybara/scrapybara-mcp.git
28 | cd scrapybara-mcp
29 | ```
30 |
31 | 2. Install dependencies:
32 |
33 | ```bash
34 | pnpm install
35 | ```
36 |
37 | 3. Build the project:
38 |
39 | ```bash
40 | pnpm build
41 | ```
42 |
43 | 4. Add the following to your MCP client config:
44 |
45 | ```json
46 | {
47 | "mcpServers": {
48 | "scrapybara-mcp": {
49 | "command": "node",
50 | "args": ["path/to/scrapybara-mcp/dist/index.js"],
51 | "env": {
52 | "SCRAPYBARA_API_KEY": "",
53 | "ACT_MODEL": "", // "anthropic" or "openai"
54 | "AUTH_STATE_ID": "" // Optional, for authenticating the browser
55 | }
56 | }
57 | }
58 | }
59 | ```
60 |
61 | 5. Restart your MCP client and you're good to go!
62 |
63 | ## Tools
64 |
65 | - **start_instance** - Start a Scrapybara Ubuntu instance. Use it as a desktop sandbox to access the web or run code. Always present the stream URL to the user afterwards so they can watch the instance in real time.
66 | - **get_instances** - Get all running Scrapybara instances.
67 | - **stop_instance** - Stop a running Scrapybara instance.
68 | - **bash** - Run a bash command in a Scrapybara instance.
69 | - **act** - Take action on a Scrapybara instance through an agent. The agent can control the instance with mouse/keyboard and bash commands.
70 |
71 | ## Contributing
72 |
73 | Scrapybara MCP is a community-driven project. Whether you're submitting an idea, fixing a typo, adding a new tool, or improving an existing one, your contributions are greatly appreciated!
74 |
75 | Before contributing, read through the existing issues and pull requests to see if someone else is already working on something similar. That way you can avoid duplicating efforts.
76 |
77 | If there are more tools or features you'd like to see, feel free to suggest them on the [issues page](https://github.com/scrapybara/scrapybara-mcp/issues).
78 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | import { Server } from "@modelcontextprotocol/sdk/server/index.js";
4 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5 | import {
6 | CallToolRequestSchema,
7 | ListToolsRequestSchema,
8 | TextContent,
9 | } from "@modelcontextprotocol/sdk/types.js";
10 | import { zodToJsonSchema } from "zod-to-json-schema";
11 | import { z } from "zod";
12 |
13 | import { ScrapybaraClient, UbuntuInstance, Scrapybara } from "scrapybara";
14 | import {
15 | anthropic,
16 | UBUNTU_SYSTEM_PROMPT as ANTHROPIC_UBUNTU_SYSTEM_PROMPT,
17 | } from "scrapybara/anthropic/index.js";
18 | import {
19 | openai,
20 | UBUNTU_SYSTEM_PROMPT as OPENAI_UBUNTU_SYSTEM_PROMPT,
21 | } from "scrapybara/openai/index.js";
22 | import { bashTool, computerTool, editTool } from "scrapybara/tools/index.js";
23 |
24 | import {
25 | StopInstanceSchema,
26 | BashSchema,
27 | ActSchema,
28 | StartInstanceSchema,
29 | GetInstancesSchema,
30 | CancellationNotificationSchema,
31 | } from "./schemas.js";
32 |
33 | let actModel =
34 | process.env.ACT_MODEL === "anthropic"
35 | ? anthropic()
36 | : process.env.ACT_MODEL === "openai"
37 | ? openai()
38 | : anthropic(); // Default to Anthropic
39 |
40 | let actSystem =
41 | process.env.ACT_MODEL === "anthropic"
42 | ? ANTHROPIC_UBUNTU_SYSTEM_PROMPT
43 | : process.env.ACT_MODEL === "openai"
44 | ? OPENAI_UBUNTU_SYSTEM_PROMPT
45 | : ANTHROPIC_UBUNTU_SYSTEM_PROMPT; // Default to Anthropic's prompt
46 |
47 | let currentController: AbortController | null = null;
48 |
49 | const server = new Server(
50 | {
51 | name: "scrapybara-mcp",
52 | version: "0.1.0",
53 | },
54 | {
55 | capabilities: {
56 | tools: {},
57 | notifications: {},
58 | },
59 | }
60 | );
61 |
62 | server.setNotificationHandler(CancellationNotificationSchema, async () => {
63 | if (currentController) {
64 | currentController.abort();
65 | currentController = null;
66 | }
67 | });
68 |
69 | server.setRequestHandler(ListToolsRequestSchema, async () => {
70 | return {
71 | tools: [
72 | {
73 | name: "start_instance",
74 | description:
75 | "Start a Scrapybara Ubuntu instance. Use it as a desktop sandbox to access the web or run code. Always present the stream URL to the user afterwards so they can watch the instance in real time.",
76 | inputSchema: zodToJsonSchema(StartInstanceSchema),
77 | },
78 | {
79 | name: "get_instances",
80 | description: "Get all running Scrapybara instances.",
81 | inputSchema: zodToJsonSchema(GetInstancesSchema),
82 | },
83 | {
84 | name: "stop_instance",
85 | description: "Stop a running Scrapybara instance.",
86 | inputSchema: zodToJsonSchema(StopInstanceSchema),
87 | },
88 | {
89 | name: "bash",
90 | description: "Run a bash command in a Scrapybara instance.",
91 | inputSchema: zodToJsonSchema(BashSchema),
92 | },
93 | {
94 | name: "act",
95 | description:
96 | "Take action on a Scrapybara instance through an agent. The agent can control the instance with mouse/keyboard and bash commands.",
97 | inputSchema: zodToJsonSchema(ActSchema),
98 | },
99 | ],
100 | };
101 | });
102 |
103 | server.setRequestHandler(CallToolRequestSchema, async (request) => {
104 | try {
105 | if (!request.params.arguments) {
106 | throw new Error("Arguments are required");
107 | }
108 |
109 | currentController = new AbortController();
110 |
111 | const client = new ScrapybaraClient({
112 | apiKey: process.env.SCRAPYBARA_API_KEY,
113 | });
114 |
115 | switch (request.params.name) {
116 | case "start_instance": {
117 | const instance = await client.startUbuntu();
118 | await instance.browser.start({
119 | abortSignal: currentController.signal,
120 | });
121 |
122 | if (process.env.AUTH_STATE_ID) {
123 | await instance.browser.authenticate(
124 | {
125 | authStateId: process.env.AUTH_STATE_ID,
126 | },
127 | { abortSignal: currentController.signal }
128 | );
129 | }
130 |
131 | const streamUrlResponse = await instance.getStreamUrl({
132 | abortSignal: currentController.signal,
133 | });
134 |
135 | const streamUrl = streamUrlResponse.streamUrl;
136 | return {
137 | content: [
138 | {
139 | type: "text",
140 | text: JSON.stringify({ ...instance, streamUrl }, null, 2),
141 | } as TextContent,
142 | ],
143 | };
144 | }
145 |
146 | case "get_instances": {
147 | const instances = await client.getInstances({
148 | abortSignal: currentController.signal,
149 | });
150 |
151 | return {
152 | content: [
153 | {
154 | type: "text",
155 | text: JSON.stringify(instances, null, 2),
156 | } as TextContent,
157 | ],
158 | };
159 | }
160 |
161 | case "stop_instance": {
162 | const args = StopInstanceSchema.parse(request.params.arguments);
163 | const instance = await client.get(args.instance_id, {
164 | abortSignal: currentController.signal,
165 | });
166 |
167 | const response = await instance.stop({
168 | abortSignal: currentController.signal,
169 | });
170 |
171 | return {
172 | content: [
173 | {
174 | type: "text",
175 | text: JSON.stringify(response, null, 2),
176 | } as TextContent,
177 | ],
178 | };
179 | }
180 |
181 | case "bash": {
182 | const args = BashSchema.parse(request.params.arguments);
183 | const instance = await client.get(args.instance_id, {
184 | abortSignal: currentController.signal,
185 | });
186 |
187 | if ("bash" in instance) {
188 | const response = await instance.bash(
189 | { command: args.command },
190 | { abortSignal: currentController.signal }
191 | );
192 |
193 | return {
194 | content: [
195 | {
196 | type: "text",
197 | text: JSON.stringify(response, null, 2),
198 | } as TextContent,
199 | ],
200 | };
201 | } else {
202 | throw new Error("Instance does not support bash commands");
203 | }
204 | }
205 |
206 | case "act": {
207 | const args = ActSchema.parse(request.params.arguments);
208 | const instance = await client.get(args.instance_id, {
209 | abortSignal: currentController.signal,
210 | });
211 |
212 | const tools: Scrapybara.Tool[] = [computerTool(instance)];
213 |
214 | if (instance instanceof UbuntuInstance) {
215 | tools.push(bashTool(instance));
216 | tools.push(editTool(instance));
217 | }
218 |
219 | const actResponse = await client.act({
220 | model: actModel,
221 | tools,
222 | system: actSystem,
223 | prompt: args.prompt,
224 | schema: args.schema,
225 | requestOptions: {
226 | abortSignal: currentController.signal,
227 | },
228 | });
229 |
230 | return {
231 | content: [
232 | {
233 | type: "text",
234 | text: JSON.stringify(
235 | { text: actResponse.text, output: actResponse.output },
236 | null,
237 | 2
238 | ),
239 | } as TextContent,
240 | ],
241 | };
242 | }
243 |
244 | default:
245 | throw new Error(`Unknown tool: ${request.params.name}`);
246 | }
247 | } catch (error) {
248 | if (error instanceof z.ZodError) {
249 | throw new Error(`Invalid input: ${JSON.stringify(error.errors)}`);
250 | }
251 | if (error instanceof Error && error.name === "AbortError") {
252 | return {
253 | content: [
254 | {
255 | type: "text",
256 | text: JSON.stringify(
257 | { status: "Operation was cancelled." },
258 | null,
259 | 2
260 | ),
261 | } as TextContent,
262 | ],
263 | };
264 | }
265 | throw error;
266 | }
267 | });
268 |
269 | async function runServer() {
270 | const transport = new StdioServerTransport();
271 | await server.connect(transport);
272 | }
273 |
274 | runServer().catch((error) => {
275 | const errorMsg = error instanceof Error ? error.message : String(error);
276 | console.error(errorMsg);
277 | });
278 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | '@modelcontextprotocol/sdk':
12 | specifier: ^1.7.0
13 | version: 1.7.0
14 | scrapybara:
15 | specifier: ^2.4.1
16 | version: 2.4.1
17 | zod:
18 | specifier: ^3.24.2
19 | version: 3.24.2
20 | zod-to-json-schema:
21 | specifier: ^3.24.4
22 | version: 3.24.4(zod@3.24.2)
23 | devDependencies:
24 | '@types/node':
25 | specifier: ^22
26 | version: 22.13.10
27 | shx:
28 | specifier: ^0.3.4
29 | version: 0.3.4
30 | typescript:
31 | specifier: ^5.6.2
32 | version: 5.8.2
33 |
34 | packages:
35 |
36 | '@modelcontextprotocol/sdk@1.7.0':
37 | resolution: {integrity: sha512-IYPe/FLpvF3IZrd/f5p5ffmWhMc3aEMuM2wGJASDqC2Ge7qatVCdbfPx3n/5xFeb19xN0j/911M2AaFuircsWA==}
38 | engines: {node: '>=18'}
39 |
40 | '@types/node@22.13.10':
41 | resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==}
42 |
43 | abort-controller@3.0.0:
44 | resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
45 | engines: {node: '>=6.5'}
46 |
47 | accepts@2.0.0:
48 | resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
49 | engines: {node: '>= 0.6'}
50 |
51 | asynckit@0.4.0:
52 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
53 |
54 | balanced-match@1.0.2:
55 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
56 |
57 | base64-js@1.5.1:
58 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
59 |
60 | body-parser@2.1.0:
61 | resolution: {integrity: sha512-/hPxh61E+ll0Ujp24Ilm64cykicul1ypfwjVttduAiEdtnJFvLePSrIPk+HMImtNv5270wOGCb1Tns2rybMkoQ==}
62 | engines: {node: '>=18'}
63 |
64 | brace-expansion@1.1.11:
65 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
66 |
67 | buffer@6.0.3:
68 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
69 |
70 | bytes@3.1.2:
71 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
72 | engines: {node: '>= 0.8'}
73 |
74 | call-bind-apply-helpers@1.0.2:
75 | resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
76 | engines: {node: '>= 0.4'}
77 |
78 | call-bound@1.0.4:
79 | resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
80 | engines: {node: '>= 0.4'}
81 |
82 | combined-stream@1.0.8:
83 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
84 | engines: {node: '>= 0.8'}
85 |
86 | concat-map@0.0.1:
87 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
88 |
89 | content-disposition@1.0.0:
90 | resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==}
91 | engines: {node: '>= 0.6'}
92 |
93 | content-type@1.0.5:
94 | resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
95 | engines: {node: '>= 0.6'}
96 |
97 | cookie-signature@1.2.2:
98 | resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==}
99 | engines: {node: '>=6.6.0'}
100 |
101 | cookie@0.7.1:
102 | resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
103 | engines: {node: '>= 0.6'}
104 |
105 | cors@2.8.5:
106 | resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
107 | engines: {node: '>= 0.10'}
108 |
109 | debug@4.3.6:
110 | resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
111 | engines: {node: '>=6.0'}
112 | peerDependencies:
113 | supports-color: '*'
114 | peerDependenciesMeta:
115 | supports-color:
116 | optional: true
117 |
118 | debug@4.4.0:
119 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
120 | engines: {node: '>=6.0'}
121 | peerDependencies:
122 | supports-color: '*'
123 | peerDependenciesMeta:
124 | supports-color:
125 | optional: true
126 |
127 | delayed-stream@1.0.0:
128 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
129 | engines: {node: '>=0.4.0'}
130 |
131 | depd@2.0.0:
132 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
133 | engines: {node: '>= 0.8'}
134 |
135 | destroy@1.2.0:
136 | resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
137 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
138 |
139 | dunder-proto@1.0.1:
140 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
141 | engines: {node: '>= 0.4'}
142 |
143 | ee-first@1.1.1:
144 | resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
145 |
146 | encodeurl@2.0.0:
147 | resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
148 | engines: {node: '>= 0.8'}
149 |
150 | es-define-property@1.0.1:
151 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
152 | engines: {node: '>= 0.4'}
153 |
154 | es-errors@1.3.0:
155 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
156 | engines: {node: '>= 0.4'}
157 |
158 | es-object-atoms@1.1.1:
159 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
160 | engines: {node: '>= 0.4'}
161 |
162 | es-set-tostringtag@2.1.0:
163 | resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
164 | engines: {node: '>= 0.4'}
165 |
166 | escape-html@1.0.3:
167 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
168 |
169 | etag@1.8.1:
170 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
171 | engines: {node: '>= 0.6'}
172 |
173 | event-target-shim@5.0.1:
174 | resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
175 | engines: {node: '>=6'}
176 |
177 | events@3.3.0:
178 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
179 | engines: {node: '>=0.8.x'}
180 |
181 | eventsource-parser@3.0.0:
182 | resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==}
183 | engines: {node: '>=18.0.0'}
184 |
185 | eventsource@3.0.5:
186 | resolution: {integrity: sha512-LT/5J605bx5SNyE+ITBDiM3FxffBiq9un7Vx0EwMDM3vg8sWKx/tO2zC+LMqZ+smAM0F2hblaDZUVZF0te2pSw==}
187 | engines: {node: '>=18.0.0'}
188 |
189 | express-rate-limit@7.5.0:
190 | resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==}
191 | engines: {node: '>= 16'}
192 | peerDependencies:
193 | express: ^4.11 || 5 || ^5.0.0-beta.1
194 |
195 | express@5.0.1:
196 | resolution: {integrity: sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==}
197 | engines: {node: '>= 18'}
198 |
199 | finalhandler@2.1.0:
200 | resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==}
201 | engines: {node: '>= 0.8'}
202 |
203 | form-data@4.0.2:
204 | resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==}
205 | engines: {node: '>= 6'}
206 |
207 | formdata-node@6.0.3:
208 | resolution: {integrity: sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg==}
209 | engines: {node: '>= 18'}
210 |
211 | forwarded@0.2.0:
212 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
213 | engines: {node: '>= 0.6'}
214 |
215 | fresh@0.5.2:
216 | resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
217 | engines: {node: '>= 0.6'}
218 |
219 | fresh@2.0.0:
220 | resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
221 | engines: {node: '>= 0.8'}
222 |
223 | fs.realpath@1.0.0:
224 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
225 |
226 | function-bind@1.1.2:
227 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
228 |
229 | get-intrinsic@1.3.0:
230 | resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
231 | engines: {node: '>= 0.4'}
232 |
233 | get-proto@1.0.1:
234 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
235 | engines: {node: '>= 0.4'}
236 |
237 | glob@7.2.3:
238 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
239 | deprecated: Glob versions prior to v9 are no longer supported
240 |
241 | gopd@1.2.0:
242 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
243 | engines: {node: '>= 0.4'}
244 |
245 | has-symbols@1.1.0:
246 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
247 | engines: {node: '>= 0.4'}
248 |
249 | has-tostringtag@1.0.2:
250 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
251 | engines: {node: '>= 0.4'}
252 |
253 | hasown@2.0.2:
254 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
255 | engines: {node: '>= 0.4'}
256 |
257 | http-errors@2.0.0:
258 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
259 | engines: {node: '>= 0.8'}
260 |
261 | iconv-lite@0.5.2:
262 | resolution: {integrity: sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==}
263 | engines: {node: '>=0.10.0'}
264 |
265 | iconv-lite@0.6.3:
266 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
267 | engines: {node: '>=0.10.0'}
268 |
269 | ieee754@1.2.1:
270 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
271 |
272 | inflight@1.0.6:
273 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
274 | 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.
275 |
276 | inherits@2.0.4:
277 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
278 |
279 | interpret@1.4.0:
280 | resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==}
281 | engines: {node: '>= 0.10'}
282 |
283 | ipaddr.js@1.9.1:
284 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
285 | engines: {node: '>= 0.10'}
286 |
287 | is-core-module@2.16.1:
288 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
289 | engines: {node: '>= 0.4'}
290 |
291 | is-promise@4.0.0:
292 | resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
293 |
294 | math-intrinsics@1.1.0:
295 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
296 | engines: {node: '>= 0.4'}
297 |
298 | media-typer@1.1.0:
299 | resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
300 | engines: {node: '>= 0.8'}
301 |
302 | merge-descriptors@2.0.0:
303 | resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
304 | engines: {node: '>=18'}
305 |
306 | methods@1.1.2:
307 | resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
308 | engines: {node: '>= 0.6'}
309 |
310 | mime-db@1.52.0:
311 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
312 | engines: {node: '>= 0.6'}
313 |
314 | mime-db@1.53.0:
315 | resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==}
316 | engines: {node: '>= 0.6'}
317 |
318 | mime-types@2.1.35:
319 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
320 | engines: {node: '>= 0.6'}
321 |
322 | mime-types@3.0.0:
323 | resolution: {integrity: sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==}
324 | engines: {node: '>= 0.6'}
325 |
326 | minimatch@3.1.2:
327 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
328 |
329 | minimist@1.2.8:
330 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
331 |
332 | ms@2.1.2:
333 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
334 |
335 | ms@2.1.3:
336 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
337 |
338 | negotiator@1.0.0:
339 | resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
340 | engines: {node: '>= 0.6'}
341 |
342 | node-fetch@2.7.0:
343 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
344 | engines: {node: 4.x || >=6.0.0}
345 | peerDependencies:
346 | encoding: ^0.1.0
347 | peerDependenciesMeta:
348 | encoding:
349 | optional: true
350 |
351 | object-assign@4.1.1:
352 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
353 | engines: {node: '>=0.10.0'}
354 |
355 | object-inspect@1.13.4:
356 | resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
357 | engines: {node: '>= 0.4'}
358 |
359 | on-finished@2.4.1:
360 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
361 | engines: {node: '>= 0.8'}
362 |
363 | once@1.4.0:
364 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
365 |
366 | parseurl@1.3.3:
367 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
368 | engines: {node: '>= 0.8'}
369 |
370 | path-is-absolute@1.0.1:
371 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
372 | engines: {node: '>=0.10.0'}
373 |
374 | path-parse@1.0.7:
375 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
376 |
377 | path-to-regexp@8.2.0:
378 | resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==}
379 | engines: {node: '>=16'}
380 |
381 | pkce-challenge@4.1.0:
382 | resolution: {integrity: sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==}
383 | engines: {node: '>=16.20.0'}
384 |
385 | process@0.11.10:
386 | resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
387 | engines: {node: '>= 0.6.0'}
388 |
389 | proxy-addr@2.0.7:
390 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
391 | engines: {node: '>= 0.10'}
392 |
393 | qs@6.13.0:
394 | resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
395 | engines: {node: '>=0.6'}
396 |
397 | qs@6.14.0:
398 | resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
399 | engines: {node: '>=0.6'}
400 |
401 | range-parser@1.2.1:
402 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
403 | engines: {node: '>= 0.6'}
404 |
405 | raw-body@3.0.0:
406 | resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==}
407 | engines: {node: '>= 0.8'}
408 |
409 | readable-stream@4.7.0:
410 | resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==}
411 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
412 |
413 | rechoir@0.6.2:
414 | resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==}
415 | engines: {node: '>= 0.10'}
416 |
417 | resolve@1.22.10:
418 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
419 | engines: {node: '>= 0.4'}
420 | hasBin: true
421 |
422 | router@2.1.0:
423 | resolution: {integrity: sha512-/m/NSLxeYEgWNtyC+WtNHCF7jbGxOibVWKnn+1Psff4dJGOfoXP+MuC/f2CwSmyiHdOIzYnYFp4W6GxWfekaLA==}
424 | engines: {node: '>= 18'}
425 |
426 | safe-buffer@5.2.1:
427 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
428 |
429 | safer-buffer@2.1.2:
430 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
431 |
432 | scrapybara@2.4.1:
433 | resolution: {integrity: sha512-WMlJUX8jHc1HdeNmPXe9PO1OR6083GC/EQ/+KOdXYV07sv+F0XmLan8lmrCeW+qAliAgS+usTRgQeIte13JVyw==}
434 |
435 | send@1.1.0:
436 | resolution: {integrity: sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==}
437 | engines: {node: '>= 18'}
438 |
439 | serve-static@2.1.0:
440 | resolution: {integrity: sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==}
441 | engines: {node: '>= 18'}
442 |
443 | setprototypeof@1.2.0:
444 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
445 |
446 | shelljs@0.8.5:
447 | resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==}
448 | engines: {node: '>=4'}
449 | hasBin: true
450 |
451 | shx@0.3.4:
452 | resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==}
453 | engines: {node: '>=6'}
454 | hasBin: true
455 |
456 | side-channel-list@1.0.0:
457 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
458 | engines: {node: '>= 0.4'}
459 |
460 | side-channel-map@1.0.1:
461 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
462 | engines: {node: '>= 0.4'}
463 |
464 | side-channel-weakmap@1.0.2:
465 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
466 | engines: {node: '>= 0.4'}
467 |
468 | side-channel@1.1.0:
469 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
470 | engines: {node: '>= 0.4'}
471 |
472 | statuses@2.0.1:
473 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
474 | engines: {node: '>= 0.8'}
475 |
476 | string_decoder@1.3.0:
477 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
478 |
479 | supports-preserve-symlinks-flag@1.0.0:
480 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
481 | engines: {node: '>= 0.4'}
482 |
483 | toidentifier@1.0.1:
484 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
485 | engines: {node: '>=0.6'}
486 |
487 | tr46@0.0.3:
488 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
489 |
490 | type-is@2.0.0:
491 | resolution: {integrity: sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==}
492 | engines: {node: '>= 0.6'}
493 |
494 | typescript@5.8.2:
495 | resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
496 | engines: {node: '>=14.17'}
497 | hasBin: true
498 |
499 | undici-types@6.20.0:
500 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
501 |
502 | unpipe@1.0.0:
503 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
504 | engines: {node: '>= 0.8'}
505 |
506 | url-join@4.0.1:
507 | resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==}
508 |
509 | utils-merge@1.0.1:
510 | resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
511 | engines: {node: '>= 0.4.0'}
512 |
513 | vary@1.1.2:
514 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
515 | engines: {node: '>= 0.8'}
516 |
517 | webidl-conversions@3.0.1:
518 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
519 |
520 | whatwg-url@5.0.0:
521 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
522 |
523 | wrappy@1.0.2:
524 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
525 |
526 | zod-to-json-schema@3.24.4:
527 | resolution: {integrity: sha512-0uNlcvgabyrni9Ag8Vghj21drk7+7tp7VTwwR7KxxXXc/3pbXz2PHlDgj3cICahgF1kHm4dExBFj7BXrZJXzig==}
528 | peerDependencies:
529 | zod: ^3.24.1
530 |
531 | zod@3.24.2:
532 | resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==}
533 |
534 | snapshots:
535 |
536 | '@modelcontextprotocol/sdk@1.7.0':
537 | dependencies:
538 | content-type: 1.0.5
539 | cors: 2.8.5
540 | eventsource: 3.0.5
541 | express: 5.0.1
542 | express-rate-limit: 7.5.0(express@5.0.1)
543 | pkce-challenge: 4.1.0
544 | raw-body: 3.0.0
545 | zod: 3.24.2
546 | zod-to-json-schema: 3.24.4(zod@3.24.2)
547 | transitivePeerDependencies:
548 | - supports-color
549 |
550 | '@types/node@22.13.10':
551 | dependencies:
552 | undici-types: 6.20.0
553 |
554 | abort-controller@3.0.0:
555 | dependencies:
556 | event-target-shim: 5.0.1
557 |
558 | accepts@2.0.0:
559 | dependencies:
560 | mime-types: 3.0.0
561 | negotiator: 1.0.0
562 |
563 | asynckit@0.4.0: {}
564 |
565 | balanced-match@1.0.2: {}
566 |
567 | base64-js@1.5.1: {}
568 |
569 | body-parser@2.1.0:
570 | dependencies:
571 | bytes: 3.1.2
572 | content-type: 1.0.5
573 | debug: 4.4.0
574 | http-errors: 2.0.0
575 | iconv-lite: 0.5.2
576 | on-finished: 2.4.1
577 | qs: 6.14.0
578 | raw-body: 3.0.0
579 | type-is: 2.0.0
580 | transitivePeerDependencies:
581 | - supports-color
582 |
583 | brace-expansion@1.1.11:
584 | dependencies:
585 | balanced-match: 1.0.2
586 | concat-map: 0.0.1
587 |
588 | buffer@6.0.3:
589 | dependencies:
590 | base64-js: 1.5.1
591 | ieee754: 1.2.1
592 |
593 | bytes@3.1.2: {}
594 |
595 | call-bind-apply-helpers@1.0.2:
596 | dependencies:
597 | es-errors: 1.3.0
598 | function-bind: 1.1.2
599 |
600 | call-bound@1.0.4:
601 | dependencies:
602 | call-bind-apply-helpers: 1.0.2
603 | get-intrinsic: 1.3.0
604 |
605 | combined-stream@1.0.8:
606 | dependencies:
607 | delayed-stream: 1.0.0
608 |
609 | concat-map@0.0.1: {}
610 |
611 | content-disposition@1.0.0:
612 | dependencies:
613 | safe-buffer: 5.2.1
614 |
615 | content-type@1.0.5: {}
616 |
617 | cookie-signature@1.2.2: {}
618 |
619 | cookie@0.7.1: {}
620 |
621 | cors@2.8.5:
622 | dependencies:
623 | object-assign: 4.1.1
624 | vary: 1.1.2
625 |
626 | debug@4.3.6:
627 | dependencies:
628 | ms: 2.1.2
629 |
630 | debug@4.4.0:
631 | dependencies:
632 | ms: 2.1.3
633 |
634 | delayed-stream@1.0.0: {}
635 |
636 | depd@2.0.0: {}
637 |
638 | destroy@1.2.0: {}
639 |
640 | dunder-proto@1.0.1:
641 | dependencies:
642 | call-bind-apply-helpers: 1.0.2
643 | es-errors: 1.3.0
644 | gopd: 1.2.0
645 |
646 | ee-first@1.1.1: {}
647 |
648 | encodeurl@2.0.0: {}
649 |
650 | es-define-property@1.0.1: {}
651 |
652 | es-errors@1.3.0: {}
653 |
654 | es-object-atoms@1.1.1:
655 | dependencies:
656 | es-errors: 1.3.0
657 |
658 | es-set-tostringtag@2.1.0:
659 | dependencies:
660 | es-errors: 1.3.0
661 | get-intrinsic: 1.3.0
662 | has-tostringtag: 1.0.2
663 | hasown: 2.0.2
664 |
665 | escape-html@1.0.3: {}
666 |
667 | etag@1.8.1: {}
668 |
669 | event-target-shim@5.0.1: {}
670 |
671 | events@3.3.0: {}
672 |
673 | eventsource-parser@3.0.0: {}
674 |
675 | eventsource@3.0.5:
676 | dependencies:
677 | eventsource-parser: 3.0.0
678 |
679 | express-rate-limit@7.5.0(express@5.0.1):
680 | dependencies:
681 | express: 5.0.1
682 |
683 | express@5.0.1:
684 | dependencies:
685 | accepts: 2.0.0
686 | body-parser: 2.1.0
687 | content-disposition: 1.0.0
688 | content-type: 1.0.5
689 | cookie: 0.7.1
690 | cookie-signature: 1.2.2
691 | debug: 4.3.6
692 | depd: 2.0.0
693 | encodeurl: 2.0.0
694 | escape-html: 1.0.3
695 | etag: 1.8.1
696 | finalhandler: 2.1.0
697 | fresh: 2.0.0
698 | http-errors: 2.0.0
699 | merge-descriptors: 2.0.0
700 | methods: 1.1.2
701 | mime-types: 3.0.0
702 | on-finished: 2.4.1
703 | once: 1.4.0
704 | parseurl: 1.3.3
705 | proxy-addr: 2.0.7
706 | qs: 6.13.0
707 | range-parser: 1.2.1
708 | router: 2.1.0
709 | safe-buffer: 5.2.1
710 | send: 1.1.0
711 | serve-static: 2.1.0
712 | setprototypeof: 1.2.0
713 | statuses: 2.0.1
714 | type-is: 2.0.0
715 | utils-merge: 1.0.1
716 | vary: 1.1.2
717 | transitivePeerDependencies:
718 | - supports-color
719 |
720 | finalhandler@2.1.0:
721 | dependencies:
722 | debug: 4.4.0
723 | encodeurl: 2.0.0
724 | escape-html: 1.0.3
725 | on-finished: 2.4.1
726 | parseurl: 1.3.3
727 | statuses: 2.0.1
728 | transitivePeerDependencies:
729 | - supports-color
730 |
731 | form-data@4.0.2:
732 | dependencies:
733 | asynckit: 0.4.0
734 | combined-stream: 1.0.8
735 | es-set-tostringtag: 2.1.0
736 | mime-types: 2.1.35
737 |
738 | formdata-node@6.0.3: {}
739 |
740 | forwarded@0.2.0: {}
741 |
742 | fresh@0.5.2: {}
743 |
744 | fresh@2.0.0: {}
745 |
746 | fs.realpath@1.0.0: {}
747 |
748 | function-bind@1.1.2: {}
749 |
750 | get-intrinsic@1.3.0:
751 | dependencies:
752 | call-bind-apply-helpers: 1.0.2
753 | es-define-property: 1.0.1
754 | es-errors: 1.3.0
755 | es-object-atoms: 1.1.1
756 | function-bind: 1.1.2
757 | get-proto: 1.0.1
758 | gopd: 1.2.0
759 | has-symbols: 1.1.0
760 | hasown: 2.0.2
761 | math-intrinsics: 1.1.0
762 |
763 | get-proto@1.0.1:
764 | dependencies:
765 | dunder-proto: 1.0.1
766 | es-object-atoms: 1.1.1
767 |
768 | glob@7.2.3:
769 | dependencies:
770 | fs.realpath: 1.0.0
771 | inflight: 1.0.6
772 | inherits: 2.0.4
773 | minimatch: 3.1.2
774 | once: 1.4.0
775 | path-is-absolute: 1.0.1
776 |
777 | gopd@1.2.0: {}
778 |
779 | has-symbols@1.1.0: {}
780 |
781 | has-tostringtag@1.0.2:
782 | dependencies:
783 | has-symbols: 1.1.0
784 |
785 | hasown@2.0.2:
786 | dependencies:
787 | function-bind: 1.1.2
788 |
789 | http-errors@2.0.0:
790 | dependencies:
791 | depd: 2.0.0
792 | inherits: 2.0.4
793 | setprototypeof: 1.2.0
794 | statuses: 2.0.1
795 | toidentifier: 1.0.1
796 |
797 | iconv-lite@0.5.2:
798 | dependencies:
799 | safer-buffer: 2.1.2
800 |
801 | iconv-lite@0.6.3:
802 | dependencies:
803 | safer-buffer: 2.1.2
804 |
805 | ieee754@1.2.1: {}
806 |
807 | inflight@1.0.6:
808 | dependencies:
809 | once: 1.4.0
810 | wrappy: 1.0.2
811 |
812 | inherits@2.0.4: {}
813 |
814 | interpret@1.4.0: {}
815 |
816 | ipaddr.js@1.9.1: {}
817 |
818 | is-core-module@2.16.1:
819 | dependencies:
820 | hasown: 2.0.2
821 |
822 | is-promise@4.0.0: {}
823 |
824 | math-intrinsics@1.1.0: {}
825 |
826 | media-typer@1.1.0: {}
827 |
828 | merge-descriptors@2.0.0: {}
829 |
830 | methods@1.1.2: {}
831 |
832 | mime-db@1.52.0: {}
833 |
834 | mime-db@1.53.0: {}
835 |
836 | mime-types@2.1.35:
837 | dependencies:
838 | mime-db: 1.52.0
839 |
840 | mime-types@3.0.0:
841 | dependencies:
842 | mime-db: 1.53.0
843 |
844 | minimatch@3.1.2:
845 | dependencies:
846 | brace-expansion: 1.1.11
847 |
848 | minimist@1.2.8: {}
849 |
850 | ms@2.1.2: {}
851 |
852 | ms@2.1.3: {}
853 |
854 | negotiator@1.0.0: {}
855 |
856 | node-fetch@2.7.0:
857 | dependencies:
858 | whatwg-url: 5.0.0
859 |
860 | object-assign@4.1.1: {}
861 |
862 | object-inspect@1.13.4: {}
863 |
864 | on-finished@2.4.1:
865 | dependencies:
866 | ee-first: 1.1.1
867 |
868 | once@1.4.0:
869 | dependencies:
870 | wrappy: 1.0.2
871 |
872 | parseurl@1.3.3: {}
873 |
874 | path-is-absolute@1.0.1: {}
875 |
876 | path-parse@1.0.7: {}
877 |
878 | path-to-regexp@8.2.0: {}
879 |
880 | pkce-challenge@4.1.0: {}
881 |
882 | process@0.11.10: {}
883 |
884 | proxy-addr@2.0.7:
885 | dependencies:
886 | forwarded: 0.2.0
887 | ipaddr.js: 1.9.1
888 |
889 | qs@6.13.0:
890 | dependencies:
891 | side-channel: 1.1.0
892 |
893 | qs@6.14.0:
894 | dependencies:
895 | side-channel: 1.1.0
896 |
897 | range-parser@1.2.1: {}
898 |
899 | raw-body@3.0.0:
900 | dependencies:
901 | bytes: 3.1.2
902 | http-errors: 2.0.0
903 | iconv-lite: 0.6.3
904 | unpipe: 1.0.0
905 |
906 | readable-stream@4.7.0:
907 | dependencies:
908 | abort-controller: 3.0.0
909 | buffer: 6.0.3
910 | events: 3.3.0
911 | process: 0.11.10
912 | string_decoder: 1.3.0
913 |
914 | rechoir@0.6.2:
915 | dependencies:
916 | resolve: 1.22.10
917 |
918 | resolve@1.22.10:
919 | dependencies:
920 | is-core-module: 2.16.1
921 | path-parse: 1.0.7
922 | supports-preserve-symlinks-flag: 1.0.0
923 |
924 | router@2.1.0:
925 | dependencies:
926 | is-promise: 4.0.0
927 | parseurl: 1.3.3
928 | path-to-regexp: 8.2.0
929 |
930 | safe-buffer@5.2.1: {}
931 |
932 | safer-buffer@2.1.2: {}
933 |
934 | scrapybara@2.4.1:
935 | dependencies:
936 | form-data: 4.0.2
937 | formdata-node: 6.0.3
938 | node-fetch: 2.7.0
939 | qs: 6.14.0
940 | readable-stream: 4.7.0
941 | url-join: 4.0.1
942 | zod: 3.24.2
943 | zod-to-json-schema: 3.24.4(zod@3.24.2)
944 | transitivePeerDependencies:
945 | - encoding
946 |
947 | send@1.1.0:
948 | dependencies:
949 | debug: 4.3.6
950 | destroy: 1.2.0
951 | encodeurl: 2.0.0
952 | escape-html: 1.0.3
953 | etag: 1.8.1
954 | fresh: 0.5.2
955 | http-errors: 2.0.0
956 | mime-types: 2.1.35
957 | ms: 2.1.3
958 | on-finished: 2.4.1
959 | range-parser: 1.2.1
960 | statuses: 2.0.1
961 | transitivePeerDependencies:
962 | - supports-color
963 |
964 | serve-static@2.1.0:
965 | dependencies:
966 | encodeurl: 2.0.0
967 | escape-html: 1.0.3
968 | parseurl: 1.3.3
969 | send: 1.1.0
970 | transitivePeerDependencies:
971 | - supports-color
972 |
973 | setprototypeof@1.2.0: {}
974 |
975 | shelljs@0.8.5:
976 | dependencies:
977 | glob: 7.2.3
978 | interpret: 1.4.0
979 | rechoir: 0.6.2
980 |
981 | shx@0.3.4:
982 | dependencies:
983 | minimist: 1.2.8
984 | shelljs: 0.8.5
985 |
986 | side-channel-list@1.0.0:
987 | dependencies:
988 | es-errors: 1.3.0
989 | object-inspect: 1.13.4
990 |
991 | side-channel-map@1.0.1:
992 | dependencies:
993 | call-bound: 1.0.4
994 | es-errors: 1.3.0
995 | get-intrinsic: 1.3.0
996 | object-inspect: 1.13.4
997 |
998 | side-channel-weakmap@1.0.2:
999 | dependencies:
1000 | call-bound: 1.0.4
1001 | es-errors: 1.3.0
1002 | get-intrinsic: 1.3.0
1003 | object-inspect: 1.13.4
1004 | side-channel-map: 1.0.1
1005 |
1006 | side-channel@1.1.0:
1007 | dependencies:
1008 | es-errors: 1.3.0
1009 | object-inspect: 1.13.4
1010 | side-channel-list: 1.0.0
1011 | side-channel-map: 1.0.1
1012 | side-channel-weakmap: 1.0.2
1013 |
1014 | statuses@2.0.1: {}
1015 |
1016 | string_decoder@1.3.0:
1017 | dependencies:
1018 | safe-buffer: 5.2.1
1019 |
1020 | supports-preserve-symlinks-flag@1.0.0: {}
1021 |
1022 | toidentifier@1.0.1: {}
1023 |
1024 | tr46@0.0.3: {}
1025 |
1026 | type-is@2.0.0:
1027 | dependencies:
1028 | content-type: 1.0.5
1029 | media-typer: 1.1.0
1030 | mime-types: 3.0.0
1031 |
1032 | typescript@5.8.2: {}
1033 |
1034 | undici-types@6.20.0: {}
1035 |
1036 | unpipe@1.0.0: {}
1037 |
1038 | url-join@4.0.1: {}
1039 |
1040 | utils-merge@1.0.1: {}
1041 |
1042 | vary@1.1.2: {}
1043 |
1044 | webidl-conversions@3.0.1: {}
1045 |
1046 | whatwg-url@5.0.0:
1047 | dependencies:
1048 | tr46: 0.0.3
1049 | webidl-conversions: 3.0.1
1050 |
1051 | wrappy@1.0.2: {}
1052 |
1053 | zod-to-json-schema@3.24.4(zod@3.24.2):
1054 | dependencies:
1055 | zod: 3.24.2
1056 |
1057 | zod@3.24.2: {}
1058 |
--------------------------------------------------------------------------------