├── .gitattributes ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── glama.json ├── index.ts ├── package-lock.json ├── package.json ├── smithery.yaml └── tsconfig.json /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile 2 | FROM node:lts-alpine 3 | 4 | WORKDIR /app 5 | 6 | # Copy package files and install dependencies 7 | COPY package.json package-lock.json ./ 8 | RUN npm install --ignore-scripts 9 | 10 | # Copy the remainder of the application 11 | COPY . . 12 | 13 | # Build the application 14 | RUN npm run build 15 | 16 | # Expose port if necessary (optional) 17 | # EXPOSE 3000 18 | 19 | CMD [ "node", "dist/index.js" ] 20 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2025 Third Strand Studio LLC 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 13 | all 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 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MCP Tool Chainer 2 | 3 | [![Visit Third Strand Studio](https://img.shields.io/badge/Visit-Third%20Strand%20Studio-blue)](https://tss.topiray.com/products/mcp-chain) 4 | 5 | An MCP (Model Context Protocol) server that chains calls to other MCP tools, reducing token usage by allowing sequential tool execution with result passing. 6 | Designed to solve [https://github.com/modelcontextprotocol/specification/issues/215](https://github.com/modelcontextprotocol/specification/issues/215) 7 | 8 | ![image](https://github.com/user-attachments/assets/3c0336a3-dd24-4dd9-88db-ac4704ee437e) 9 | 10 | 11 | Step function like JSON paths: 12 | 13 | ![image](https://github.com/user-attachments/assets/79ef5c3e-6166-4bc4-b571-e7b3176e777c) 14 | 15 | 16 | ## Features 17 | 18 | - Chain multiple MCP tools together in sequence 19 | - Pass results from one tool as input to another tool using `CHAIN_RESULT` placeholder 20 | - Filter and extract specific data using JsonPath with `inputPath` and `outputPath` parameters 21 | - Automatic tool discovery from configured MCP servers 22 | - Minimal token usage compared to individual tool calls 23 | 24 | ## Tools 25 | 26 | This server implements the following MCP tools: 27 | 28 | 1. `mcp_chain` - Chain together multiple MCP servers 29 | 2. `chainable_tools` - Discover tools from all MCP servers so the mcp_chain tool can be used 30 | 3. `discover_tools` - Rediscover tools from all MCP servers 31 | 32 | ## Installation 33 | 34 | ### Prerequisites 35 | 36 | * Node.js (v16 or later) 37 | * npm 38 | 39 | ### Installing from npm 40 | 41 | ```bash 42 | # Install 43 | npm install @thirdstrandstudio/mcp-tool-chainer 44 | 45 | # Or use with npx directly 46 | npx -y @thirdstrandstudio/mcp-tool-chainer 47 | ``` 48 | 49 | ### Installing from source 50 | 51 | ```bash 52 | # Clone the repository 53 | git clone https://github.com/thirdstrandstudio/mcp-tool-chainer.git 54 | cd mcp-tool-chainer 55 | 56 | # Install dependencies 57 | npm install 58 | 59 | # Build the package 60 | npm run build 61 | ``` 62 | 63 | ## Usage with Claude Desktop, Cursor etc 64 | 65 | ENSURE IT IS THE LAST MCP TO RUN OTHERWISE IT WILL HAVE TO RUN DISCOVERY AGAIN 66 | 67 | Add the following to your `claude_desktop_config.json` or `mcp.json`: 68 | 69 | ### If installed from npm globally 70 | 71 | ```json 72 | { 73 | "mcpServers": { 74 | "mcp_tool_chainer": { 75 | "command": "npx", 76 | "args": ["-y", "@thirdstrandstudio/mcp-tool-chainer", "`claude_desktop_config.json` or `mcp.json`"], 77 | "env": {} 78 | } 79 | } 80 | } 81 | ``` 82 | 83 | ### If installed from source 84 | 85 | ```json 86 | { 87 | "mcpServers": { 88 | "mcp_tool_chainer": { 89 | "command": "node", 90 | "args": ["/path/to/mcp-tool-chainer/dist/index.js", "`claude_desktop_config.json` or `mcp.json`"], 91 | "env": {} 92 | } 93 | } 94 | } 95 | ``` 96 | 97 | Replace `/path/to/mcp-tool-chainer` with the actual path to your repository. 98 | 99 | ![image](https://github.com/user-attachments/assets/667468c4-aeba-4ea1-b65a-fd7a5922a23b) 100 | 101 | 102 | ## Examples 103 | 104 | ### Chain Browser and XPath Tools 105 | 106 | ```javascript 107 | // Fetch a webpage and then extract specific content with XPath 108 | const result = await callTool("mcp_chain", { 109 | "mcpPath": [ 110 | { 111 | "toolName": "mcp_browser_mcp_fetch_url", 112 | "toolArgs": "{\"url\": \"https://example.com\"}" 113 | }, 114 | { 115 | "toolName": "mcp_xpath_xpath", 116 | "toolArgs": "{\"xml\": CHAIN_RESULT, \"query\": \"//h1\"}" 117 | } 118 | ] 119 | }); 120 | ``` 121 | 122 | ### Using JsonPath with InputPath and OutputPath 123 | 124 | ```javascript 125 | // Fetch a webpage, extract specific content with XPath, then extract part of the result 126 | const result = await callTool("mcp_chain", { 127 | "mcpPath": [ 128 | { 129 | "toolName": "mcp_fetch_fetch", 130 | "toolArgs": "{\"url\": \"https://api.example.com/data\"}" 131 | }, 132 | { 133 | "toolName": "web_search", 134 | "toolArgs": "{\"search_term\": CHAIN_RESULT}", 135 | "inputPath": "$.results[0].title", // Extract only the first result's title from previous output 136 | "outputPath": "$.snippets[*].text" // Extract only the text snippets from the search results 137 | }, 138 | { 139 | "toolName": "another_tool", 140 | "toolArgs": "{\"content\": CHAIN_RESULT}" 141 | } 142 | ] 143 | }); 144 | ``` 145 | 146 | ## JsonPath Support 147 | 148 | MCP Tool Chainer now supports AWS Step Functions-style InputPath and OutputPath features: 149 | 150 | - **inputPath**: JsonPath expression to extract specific portions of the input before passing to a tool 151 | - **outputPath**: JsonPath expression to extract specific portions of the output before passing to the next tool 152 | 153 | These features work only when the input/output is valid JSON. If JsonPath extraction fails, the original input/output is used. 154 | 155 | For JsonPath syntax reference, see [JsonPath Syntax](https://goessner.net/articles/JsonPath/). 156 | 157 | ## Benefits 158 | 159 | - **Reduced Token Usage**: By chaining tools together, you avoid sending large intermediate results back to the LLM 160 | - **Simplified Workflows**: Create complex data processing pipelines with a single tool call 161 | - **Improved Performance**: Reduce latency by minimizing round-trips between the LLM and tools 162 | - **Precise Data Flow Control**: Extract only the data you need with JsonPath expressions 163 | 164 | ## Development 165 | 166 | ```bash 167 | # Install dependencies 168 | npm install 169 | 170 | # Start the server 171 | node dist/index.js config.json 172 | 173 | # List available tools 174 | node dist/index.js config.json discover_tools 175 | ``` 176 | 177 | ## License 178 | 179 | This MCP server is licensed under the MIT License. 180 | 181 | --- 182 | 183 | Created by [Third Strand Studio](https://tss.topiray.com/products/mcp-chain) 184 | -------------------------------------------------------------------------------- /glama.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://glama.ai/mcp/schemas/server.json", 3 | "maintainers": [ 4 | "thirdstrandstudio" 5 | ] 6 | } -------------------------------------------------------------------------------- /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 | Tool, 9 | } from "@modelcontextprotocol/sdk/types.js"; 10 | import { z } from 'zod'; 11 | import { zodToJsonSchema } from 'zod-to-json-schema'; 12 | import { Client } from "@modelcontextprotocol/sdk/client/index.js"; 13 | import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"; 14 | import fs from 'fs'; 15 | import { JSONPath } from 'jsonpath-plus'; 16 | 17 | const CHAIN_RESULT = "CHAIN_RESULT"; 18 | 19 | let config: McpConfig; 20 | 21 | let tools: McpTool[] = []; 22 | 23 | interface McpToolWithoutInformation { 24 | name: string; 25 | version: string; 26 | serverJsonKey: string; 27 | clientTransportInitializer: { 28 | command: string; 29 | args: string[]; 30 | env: Record; 31 | } 32 | } 33 | 34 | interface McpTool extends McpToolWithoutInformation { 35 | tool: Tool; 36 | } 37 | 38 | 39 | interface McpConfig { 40 | mcpServers: McpServers; 41 | } 42 | 43 | interface McpServers { 44 | [key: string]: ServerConfig; 45 | } 46 | 47 | interface ServerConfig { 48 | command: string; 49 | args: string[]; 50 | env: Record; 51 | } 52 | 53 | const McpChainRequestSchema = z.object({ 54 | mcpPath: z.array(z.object({ 55 | toolName: z.string().describe("The fully qualified name of the tool to execute in the chain (e.g., 'browser_mcp_fetch_url', 'memory_server_create_entities'). This must match an available tool name exactly."), 56 | toolArgs: z.string().describe("JSON string containing the arguments for the tool. To pass the result from the previous tool in the chain, use the placeholder \"CHAIN_RESULT\". When passing to an array parameter, use [\"CHAIN_RESULT\"] format."), 57 | inputPath: z.string().optional().describe("Optional JSONPath expression to extract specific data from the previous tool's result before passing to this tool. Example: '$.count' will extract just the count field from a JSON response."), 58 | outputPath: z.string().optional().describe("Optional JSONPath expression to extract specific data from this tool's result before passing to the next tool in the chain. Example: '$.entities[0].name' would extract just the first entity name.") 59 | })).describe("An ordered array of tool configurations that will be executed sequentially to form a processing chain. Each tool receives the (optionally filtered) output from the previous tool.") 60 | }); 61 | 62 | function deepUnescape(str: string, depth: number = 0, maxDepth: number = 10) { 63 | try { 64 | // First try parsing directly 65 | return JSON.parse(str); 66 | } catch (e) { 67 | // If that fails, it might be a string with escaped content 68 | try { 69 | return JSON.parse(`"${str.replace(/"/g, '\\"')}"`); 70 | } catch (e2) { 71 | // For deeply nested escaping, try to recursively unescape 72 | if (str.includes('\\') && depth < maxDepth) { 73 | return deepUnescape(str.replace(/\\(.)/g, '$1'), depth + 1, maxDepth); 74 | } 75 | return str; 76 | } 77 | } 78 | } 79 | 80 | 81 | async function chainTools(mcpPath: { toolName: string; toolArgs: string; inputPath?: string; outputPath?: string; }[]) { 82 | // Implement MCP chaining 83 | let result: any = null; 84 | 85 | // Chain each MCP server 86 | for (let i = 0; i < mcpPath.length; i++) { 87 | const { toolName, inputPath, outputPath } = mcpPath[i]; 88 | 89 | // Create client for the current server 90 | const { client, tool } = await createToolClient(toolName); 91 | try { 92 | // Process the result with inputPath if specified (for all steps except first since no result yet) 93 | let processedResult = result; 94 | if (inputPath && i > 0 && result) { 95 | try { 96 | // If the text contains escaped characters that need unescaping 97 | if (typeof result === 'string') { 98 | try { 99 | // Try to parse the result string as JSON 100 | result = JSON.parse(result); 101 | } catch (e) { 102 | // If parsing fails, attempt to extract JSON portion 103 | const jsonStart = result.indexOf('{'); 104 | if (jsonStart >= 0) { 105 | result = result.substring(jsonStart) 106 | result = deepUnescape(result); 107 | } 108 | } 109 | } 110 | 111 | // Ensure we have a valid JSON object 112 | const jsonResult = typeof result === 'string' ? JSON.parse(result) : result; 113 | 114 | // Extract the specified path 115 | const extractedInput = JSONPath({ path: inputPath, json: jsonResult }); 116 | 117 | // If extractedInput is an array with one item, use that item 118 | // This handles the common JSONPath behavior of returning arrays 119 | processedResult = extractedInput.length === 1 ? extractedInput[0] : extractedInput; 120 | 121 | // If processedResult is a primitive value, just use it directly 122 | if (typeof processedResult !== 'object' || processedResult === null) { 123 | processedResult = processedResult; 124 | } else { 125 | // Otherwise, stringify the object 126 | processedResult = JSON.stringify(processedResult); 127 | } 128 | } catch (error) { 129 | console.warn(`Failed to apply inputPath '${inputPath}'. Input may not be valid JSON. Using original result.`); 130 | // Keep the original result 131 | } 132 | } 133 | 134 | // Define the input to use - either current chain result or the next input from inputs array 135 | let toolInput; 136 | if (i === 0) { 137 | // First tool just uses its args directly 138 | toolInput = mcpPath[i].toolArgs; 139 | } else { 140 | // For subsequent tools, replace CHAIN_RESULT with the processed result 141 | let isJson = false; 142 | try { 143 | JSON.parse(processedResult); 144 | isJson = true; 145 | } catch (e) { 146 | isJson = false; 147 | processedResult = JSON.stringify(processedResult).slice(1, -1); 148 | } 149 | if (typeof processedResult === 'string') { 150 | // Handle string replacements more robustly 151 | const jsonSafeResult = processedResult; 152 | 153 | if (mcpPath[i].toolArgs.includes(`"${CHAIN_RESULT}"`)) { 154 | // If CHAIN_RESULT is in quotes, replace the quoted version 155 | toolInput = mcpPath[i].toolArgs.replace(`"${CHAIN_RESULT}"`, `"${processedResult}"`); 156 | } else { 157 | // Otherwise replace just the token 158 | toolInput = mcpPath[i].toolArgs.replace(CHAIN_RESULT, jsonSafeResult); 159 | } 160 | 161 | } else { 162 | // This is a primitive value (number, boolean, etc.) that can be stringified 163 | toolInput = mcpPath[i].toolArgs.replace(CHAIN_RESULT, String(processedResult)); 164 | } 165 | } 166 | 167 | // Call the tool with the input 168 | const toolResponse = await client.callTool({ 169 | name: tool.name, 170 | arguments: JSON.parse(toolInput) 171 | }); 172 | 173 | // Update current input for the next MCP in the chain 174 | if (toolResponse.content) { 175 | result = JSON.parse(JSON.stringify(toolResponse.content))[0].text; 176 | // Apply outputPath if specified 177 | if (outputPath) { 178 | try { 179 | // Process result similarly to inputPath 180 | if (typeof result === 'string') { 181 | try { 182 | // Try to parse the result string as JSON 183 | result = JSON.parse(result); 184 | } catch (e) { 185 | // If parsing fails, attempt to extract JSON portion 186 | const jsonStart = result.indexOf('{'); 187 | if (jsonStart >= 0) { 188 | result = result.substring(jsonStart) 189 | result = deepUnescape(result); 190 | } 191 | } 192 | } 193 | 194 | // Ensure we have a valid JSON object 195 | const jsonResult = typeof result === 'string' ? JSON.parse(result) : result; 196 | 197 | // Extract the specified path 198 | const extractedOutput = JSONPath({ path: outputPath, json: jsonResult }); 199 | // If extractedOutput is an array with one item, use that item 200 | // This handles the common JSONPath behavior of returning arrays 201 | result = extractedOutput.length === 1 ? extractedOutput[0] : extractedOutput; 202 | 203 | // If result is a primitive value, stringify it properly 204 | result = JSON.stringify(result); 205 | } catch (error) { 206 | console.warn(`Failed to apply outputPath '${outputPath}'. Output may not be valid JSON. Using original output.`); 207 | } 208 | } 209 | } else { 210 | throw new Error(`Empty response from MCP server ${i + 1}`); 211 | } 212 | } finally { 213 | // Close the client transport if it exists 214 | if (client.transport) { 215 | await client.transport.close(); 216 | } 217 | await client.close(); 218 | } 219 | } 220 | 221 | return { content: [{ type: "text", text: result }] }; 222 | } 223 | 224 | // Add a utility function to help with conversion 225 | function convertZodToJsonSchema(schema: z.ZodType) { 226 | const jsonSchema = zodToJsonSchema(schema); 227 | return { 228 | ...jsonSchema 229 | }; 230 | } 231 | 232 | const serverInfo = { 233 | name: "mcp_tool_chainer", 234 | version: "0.6.2" 235 | } 236 | 237 | // Create server instance 238 | const server = new Server( 239 | serverInfo, 240 | { 241 | capabilities: { 242 | tools: {} 243 | } 244 | } 245 | ); 246 | 247 | // List available tools 248 | server.setRequestHandler(ListToolsRequestSchema, async () => { 249 | return { 250 | tools: [ 251 | { 252 | name: "mcp_chain", 253 | description: "Chain together multiple MCP servers", 254 | inputSchema: convertZodToJsonSchema(McpChainRequestSchema) 255 | }, 256 | { 257 | name: "chainable_tools", 258 | description: "Discover tools from all MCP servers so the mcp_chain tool can be used", 259 | inputSchema: { 260 | type: "object", 261 | properties: {}, 262 | required: [] 263 | } 264 | }, 265 | { 266 | name: "discover_tools", 267 | description: "Rediscover tools from all MCP servers so the mcp_chain tool can be used", 268 | inputSchema: { 269 | type: "object", 270 | properties: {}, 271 | required: [] 272 | } 273 | } 274 | ] 275 | }; 276 | }); 277 | 278 | // Function to create a client for a specific MCP server 279 | async function createClientTransport(command: string, args: string[], env: Record): Promise { 280 | const clientTransport = new StdioClientTransport({ 281 | command: command, 282 | args: args, 283 | env: env 284 | }); 285 | return clientTransport; 286 | } 287 | 288 | async function createToolClient(toolName: string): Promise<{ tool: Tool, client: Client }> { 289 | 290 | //Server names (t.name) are replaced by underscores? 291 | const storedTool = tools.find(t => ((formatName(t.name) + "_" + t.tool.name) === toolName) || t.tool.name === toolName || (formatName(t.serverJsonKey) + "_" + t.tool.name) === toolName); 292 | 293 | if (!storedTool) { 294 | throw new Error(`Tool ${toolName} not found`); 295 | } 296 | 297 | const client = new Client({ 298 | name: storedTool.name, 299 | version: storedTool.version, 300 | }); 301 | const clientTransport = await createClientTransport(storedTool.clientTransportInitializer.command, storedTool.clientTransportInitializer.args, storedTool.clientTransportInitializer.env); 302 | await client.connect(clientTransport); 303 | return { 304 | tool: storedTool.tool, 305 | client: client 306 | }; 307 | } 308 | 309 | 310 | // Handle tool execution 311 | server.setRequestHandler(CallToolRequestSchema, async (request) => { 312 | const { name, arguments: args } = request.params; 313 | 314 | try { 315 | switch (name) { 316 | case "chainable_tools": 317 | return { 318 | content: [{ type: "text", text: tools.map(t => formatName(t.name) + "_" + t.tool.name).join(", ") }] 319 | }; 320 | case "discover_tools": 321 | await startDiscovery(); 322 | //delay 3s 323 | await new Promise(resolve => setTimeout(resolve, 3000)); 324 | return { 325 | content: [{ type: "text", text: tools.map(t => formatName(t.name) + "_" + t.tool.name).join(", ") }] 326 | }; 327 | 328 | break; 329 | case "mcp_chain": 330 | const { mcpPath } = McpChainRequestSchema.parse(args); 331 | return chainTools(mcpPath); 332 | default: 333 | throw new Error(`Unknown tool: ${name}`); 334 | } 335 | 336 | } catch (error) { 337 | if (error instanceof z.ZodError) { 338 | throw new Error( 339 | `Invalid arguments: ${error.errors 340 | .map((e) => `${e.path.join(".")}: ${e.message}`) 341 | .join(", ")}` 342 | ); 343 | } 344 | 345 | // Add detailed error logging 346 | const err = error as any; 347 | console.error("Error details:", { 348 | message: err.message, 349 | stack: err.stack, 350 | response: err.response?.data || null, 351 | status: err.response?.status || null, 352 | headers: err.response?.headers || null, 353 | name: err.name, 354 | fullError: JSON.stringify(err, Object.getOwnPropertyNames(err), 2) 355 | }); 356 | 357 | throw new Error(`Error executing tool ${name}: ${err.message}${err.response?.data ? ` - Response: ${JSON.stringify(err.response.data)}` : ''}`); 358 | } 359 | }); 360 | 361 | function formatName(name: string) { 362 | return name.replace("-", "_"); 363 | } 364 | 365 | async function startDiscovery() { 366 | tools = []; 367 | for (const serverKey of Object.keys(config.mcpServers)) { 368 | if (serverKey === "mcp_tool_chainer") { 369 | continue; 370 | } 371 | const serverData = config.mcpServers[serverKey]; 372 | const clientTransport = await createClientTransport(serverData.command, serverData.args, serverData.env); 373 | await clientTransport.start(); 374 | try { 375 | let sk = serverKey; 376 | clientTransport.onmessage = (message) => { 377 | let ct = clientTransport; 378 | ct.close(); 379 | let s = serverData; 380 | const parsedMessage = JSON.parse(JSON.stringify(message)); //Obviously i don't know how to use ZOD properly 381 | 382 | if (parsedMessage.id === 1) { 383 | const name = parsedMessage.result.serverInfo.name; 384 | const version = parsedMessage.result.serverInfo.version; 385 | 386 | if (name === serverInfo.name && version === serverInfo.version) { 387 | return; 388 | } 389 | 390 | const mapping = { 391 | name: name, 392 | version: version, 393 | clientTransportInitializer: { 394 | command: serverData.command, 395 | args: serverData.args, 396 | env: serverData.env 397 | } 398 | }; 399 | 400 | const client = new Client({ 401 | name: name, 402 | version: version, 403 | }); 404 | 405 | client.connect(new StdioClientTransport({ 406 | command: s.command, 407 | args: s.args, 408 | env: s.env 409 | })).then(() => { 410 | client.listTools().then((availTools) => { 411 | for (const t of availTools.tools) { 412 | tools.push({ 413 | ...mapping, 414 | tool: t, 415 | serverJsonKey: sk 416 | }); 417 | } 418 | }).catch((err) => { 419 | console.error("Error sending tools list request:", err); 420 | }).finally(() => { 421 | client.transport?.close(); 422 | client.close(); 423 | }); 424 | }); 425 | } 426 | } 427 | 428 | await clientTransport.send({ 429 | jsonrpc: "2.0", 430 | id: 1, 431 | method: "initialize", 432 | params: { 433 | protocolVersion: "latest", 434 | capabilities: { 435 | tools: {} 436 | }, 437 | clientInfo: serverInfo 438 | } 439 | }); 440 | } catch (error) { 441 | console.error("Error during startup:", error); 442 | } 443 | } 444 | } 445 | 446 | // Start the server 447 | async function main() { 448 | try { 449 | const configFile = process.argv[2]; 450 | config = JSON.parse(fs.readFileSync(configFile, 'utf8')) as McpConfig; 451 | await startDiscovery(); 452 | const transport = new StdioServerTransport(); 453 | await server.connect(transport); 454 | } catch (error) { 455 | console.error("Error during startup:", error); 456 | process.exit(1); 457 | } 458 | } 459 | 460 | 461 | main().catch((error) => { 462 | console.error("Fatal error in main():", error); 463 | process.exit(1); 464 | }); 465 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@thirdstrandstudio/mcp-tool-chainer", 3 | "version": "0.7.9", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "@thirdstrandstudio/mcp-tool-chainer", 9 | "version": "0.7.9", 10 | "license": "MIT", 11 | "dependencies": { 12 | "@modelcontextprotocol/sdk": "^1.7.0", 13 | "jsonpath-plus": "^10.3.0", 14 | "zod": "^3.24.2", 15 | "zod-to-json-schema": "^3.24.4" 16 | }, 17 | "bin": { 18 | "mcp-tool-chainer": "dist/index.js" 19 | }, 20 | "devDependencies": { 21 | "@types/jest": "^29.5.12", 22 | "jest": "^29.7.0", 23 | "rimraf": "^6.0.1", 24 | "shx": "^0.3.4", 25 | "ts-jest": "^29.1.2", 26 | "typescript": "^5.6.2" 27 | } 28 | }, 29 | "node_modules/@ampproject/remapping": { 30 | "version": "2.3.0", 31 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", 32 | "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 33 | "dev": true, 34 | "dependencies": { 35 | "@jridgewell/gen-mapping": "^0.3.5", 36 | "@jridgewell/trace-mapping": "^0.3.24" 37 | }, 38 | "engines": { 39 | "node": ">=6.0.0" 40 | } 41 | }, 42 | "node_modules/@babel/code-frame": { 43 | "version": "7.26.2", 44 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", 45 | "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", 46 | "dev": true, 47 | "dependencies": { 48 | "@babel/helper-validator-identifier": "^7.25.9", 49 | "js-tokens": "^4.0.0", 50 | "picocolors": "^1.0.0" 51 | }, 52 | "engines": { 53 | "node": ">=6.9.0" 54 | } 55 | }, 56 | "node_modules/@babel/compat-data": { 57 | "version": "7.26.8", 58 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", 59 | "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", 60 | "dev": true, 61 | "engines": { 62 | "node": ">=6.9.0" 63 | } 64 | }, 65 | "node_modules/@babel/core": { 66 | "version": "7.26.10", 67 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", 68 | "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", 69 | "dev": true, 70 | "dependencies": { 71 | "@ampproject/remapping": "^2.2.0", 72 | "@babel/code-frame": "^7.26.2", 73 | "@babel/generator": "^7.26.10", 74 | "@babel/helper-compilation-targets": "^7.26.5", 75 | "@babel/helper-module-transforms": "^7.26.0", 76 | "@babel/helpers": "^7.26.10", 77 | "@babel/parser": "^7.26.10", 78 | "@babel/template": "^7.26.9", 79 | "@babel/traverse": "^7.26.10", 80 | "@babel/types": "^7.26.10", 81 | "convert-source-map": "^2.0.0", 82 | "debug": "^4.1.0", 83 | "gensync": "^1.0.0-beta.2", 84 | "json5": "^2.2.3", 85 | "semver": "^6.3.1" 86 | }, 87 | "engines": { 88 | "node": ">=6.9.0" 89 | }, 90 | "funding": { 91 | "type": "opencollective", 92 | "url": "https://opencollective.com/babel" 93 | } 94 | }, 95 | "node_modules/@babel/generator": { 96 | "version": "7.26.10", 97 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", 98 | "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", 99 | "dev": true, 100 | "dependencies": { 101 | "@babel/parser": "^7.26.10", 102 | "@babel/types": "^7.26.10", 103 | "@jridgewell/gen-mapping": "^0.3.5", 104 | "@jridgewell/trace-mapping": "^0.3.25", 105 | "jsesc": "^3.0.2" 106 | }, 107 | "engines": { 108 | "node": ">=6.9.0" 109 | } 110 | }, 111 | "node_modules/@babel/helper-compilation-targets": { 112 | "version": "7.26.5", 113 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", 114 | "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", 115 | "dev": true, 116 | "dependencies": { 117 | "@babel/compat-data": "^7.26.5", 118 | "@babel/helper-validator-option": "^7.25.9", 119 | "browserslist": "^4.24.0", 120 | "lru-cache": "^5.1.1", 121 | "semver": "^6.3.1" 122 | }, 123 | "engines": { 124 | "node": ">=6.9.0" 125 | } 126 | }, 127 | "node_modules/@babel/helper-module-imports": { 128 | "version": "7.25.9", 129 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", 130 | "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", 131 | "dev": true, 132 | "dependencies": { 133 | "@babel/traverse": "^7.25.9", 134 | "@babel/types": "^7.25.9" 135 | }, 136 | "engines": { 137 | "node": ">=6.9.0" 138 | } 139 | }, 140 | "node_modules/@babel/helper-module-transforms": { 141 | "version": "7.26.0", 142 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", 143 | "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", 144 | "dev": true, 145 | "dependencies": { 146 | "@babel/helper-module-imports": "^7.25.9", 147 | "@babel/helper-validator-identifier": "^7.25.9", 148 | "@babel/traverse": "^7.25.9" 149 | }, 150 | "engines": { 151 | "node": ">=6.9.0" 152 | }, 153 | "peerDependencies": { 154 | "@babel/core": "^7.0.0" 155 | } 156 | }, 157 | "node_modules/@babel/helper-plugin-utils": { 158 | "version": "7.26.5", 159 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", 160 | "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", 161 | "dev": true, 162 | "engines": { 163 | "node": ">=6.9.0" 164 | } 165 | }, 166 | "node_modules/@babel/helper-string-parser": { 167 | "version": "7.25.9", 168 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", 169 | "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", 170 | "dev": true, 171 | "engines": { 172 | "node": ">=6.9.0" 173 | } 174 | }, 175 | "node_modules/@babel/helper-validator-identifier": { 176 | "version": "7.25.9", 177 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", 178 | "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", 179 | "dev": true, 180 | "engines": { 181 | "node": ">=6.9.0" 182 | } 183 | }, 184 | "node_modules/@babel/helper-validator-option": { 185 | "version": "7.25.9", 186 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", 187 | "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", 188 | "dev": true, 189 | "engines": { 190 | "node": ">=6.9.0" 191 | } 192 | }, 193 | "node_modules/@babel/helpers": { 194 | "version": "7.26.10", 195 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz", 196 | "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==", 197 | "dev": true, 198 | "dependencies": { 199 | "@babel/template": "^7.26.9", 200 | "@babel/types": "^7.26.10" 201 | }, 202 | "engines": { 203 | "node": ">=6.9.0" 204 | } 205 | }, 206 | "node_modules/@babel/parser": { 207 | "version": "7.26.10", 208 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz", 209 | "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==", 210 | "dev": true, 211 | "dependencies": { 212 | "@babel/types": "^7.26.10" 213 | }, 214 | "bin": { 215 | "parser": "bin/babel-parser.js" 216 | }, 217 | "engines": { 218 | "node": ">=6.0.0" 219 | } 220 | }, 221 | "node_modules/@babel/plugin-syntax-async-generators": { 222 | "version": "7.8.4", 223 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", 224 | "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", 225 | "dev": true, 226 | "dependencies": { 227 | "@babel/helper-plugin-utils": "^7.8.0" 228 | }, 229 | "peerDependencies": { 230 | "@babel/core": "^7.0.0-0" 231 | } 232 | }, 233 | "node_modules/@babel/plugin-syntax-bigint": { 234 | "version": "7.8.3", 235 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", 236 | "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", 237 | "dev": true, 238 | "dependencies": { 239 | "@babel/helper-plugin-utils": "^7.8.0" 240 | }, 241 | "peerDependencies": { 242 | "@babel/core": "^7.0.0-0" 243 | } 244 | }, 245 | "node_modules/@babel/plugin-syntax-class-properties": { 246 | "version": "7.12.13", 247 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", 248 | "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", 249 | "dev": true, 250 | "dependencies": { 251 | "@babel/helper-plugin-utils": "^7.12.13" 252 | }, 253 | "peerDependencies": { 254 | "@babel/core": "^7.0.0-0" 255 | } 256 | }, 257 | "node_modules/@babel/plugin-syntax-class-static-block": { 258 | "version": "7.14.5", 259 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", 260 | "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", 261 | "dev": true, 262 | "dependencies": { 263 | "@babel/helper-plugin-utils": "^7.14.5" 264 | }, 265 | "engines": { 266 | "node": ">=6.9.0" 267 | }, 268 | "peerDependencies": { 269 | "@babel/core": "^7.0.0-0" 270 | } 271 | }, 272 | "node_modules/@babel/plugin-syntax-import-attributes": { 273 | "version": "7.26.0", 274 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", 275 | "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", 276 | "dev": true, 277 | "dependencies": { 278 | "@babel/helper-plugin-utils": "^7.25.9" 279 | }, 280 | "engines": { 281 | "node": ">=6.9.0" 282 | }, 283 | "peerDependencies": { 284 | "@babel/core": "^7.0.0-0" 285 | } 286 | }, 287 | "node_modules/@babel/plugin-syntax-import-meta": { 288 | "version": "7.10.4", 289 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", 290 | "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", 291 | "dev": true, 292 | "dependencies": { 293 | "@babel/helper-plugin-utils": "^7.10.4" 294 | }, 295 | "peerDependencies": { 296 | "@babel/core": "^7.0.0-0" 297 | } 298 | }, 299 | "node_modules/@babel/plugin-syntax-json-strings": { 300 | "version": "7.8.3", 301 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", 302 | "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", 303 | "dev": true, 304 | "dependencies": { 305 | "@babel/helper-plugin-utils": "^7.8.0" 306 | }, 307 | "peerDependencies": { 308 | "@babel/core": "^7.0.0-0" 309 | } 310 | }, 311 | "node_modules/@babel/plugin-syntax-jsx": { 312 | "version": "7.25.9", 313 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", 314 | "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", 315 | "dev": true, 316 | "dependencies": { 317 | "@babel/helper-plugin-utils": "^7.25.9" 318 | }, 319 | "engines": { 320 | "node": ">=6.9.0" 321 | }, 322 | "peerDependencies": { 323 | "@babel/core": "^7.0.0-0" 324 | } 325 | }, 326 | "node_modules/@babel/plugin-syntax-logical-assignment-operators": { 327 | "version": "7.10.4", 328 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", 329 | "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", 330 | "dev": true, 331 | "dependencies": { 332 | "@babel/helper-plugin-utils": "^7.10.4" 333 | }, 334 | "peerDependencies": { 335 | "@babel/core": "^7.0.0-0" 336 | } 337 | }, 338 | "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { 339 | "version": "7.8.3", 340 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", 341 | "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", 342 | "dev": true, 343 | "dependencies": { 344 | "@babel/helper-plugin-utils": "^7.8.0" 345 | }, 346 | "peerDependencies": { 347 | "@babel/core": "^7.0.0-0" 348 | } 349 | }, 350 | "node_modules/@babel/plugin-syntax-numeric-separator": { 351 | "version": "7.10.4", 352 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", 353 | "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", 354 | "dev": true, 355 | "dependencies": { 356 | "@babel/helper-plugin-utils": "^7.10.4" 357 | }, 358 | "peerDependencies": { 359 | "@babel/core": "^7.0.0-0" 360 | } 361 | }, 362 | "node_modules/@babel/plugin-syntax-object-rest-spread": { 363 | "version": "7.8.3", 364 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", 365 | "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", 366 | "dev": true, 367 | "dependencies": { 368 | "@babel/helper-plugin-utils": "^7.8.0" 369 | }, 370 | "peerDependencies": { 371 | "@babel/core": "^7.0.0-0" 372 | } 373 | }, 374 | "node_modules/@babel/plugin-syntax-optional-catch-binding": { 375 | "version": "7.8.3", 376 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", 377 | "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", 378 | "dev": true, 379 | "dependencies": { 380 | "@babel/helper-plugin-utils": "^7.8.0" 381 | }, 382 | "peerDependencies": { 383 | "@babel/core": "^7.0.0-0" 384 | } 385 | }, 386 | "node_modules/@babel/plugin-syntax-optional-chaining": { 387 | "version": "7.8.3", 388 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", 389 | "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", 390 | "dev": true, 391 | "dependencies": { 392 | "@babel/helper-plugin-utils": "^7.8.0" 393 | }, 394 | "peerDependencies": { 395 | "@babel/core": "^7.0.0-0" 396 | } 397 | }, 398 | "node_modules/@babel/plugin-syntax-private-property-in-object": { 399 | "version": "7.14.5", 400 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", 401 | "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", 402 | "dev": true, 403 | "dependencies": { 404 | "@babel/helper-plugin-utils": "^7.14.5" 405 | }, 406 | "engines": { 407 | "node": ">=6.9.0" 408 | }, 409 | "peerDependencies": { 410 | "@babel/core": "^7.0.0-0" 411 | } 412 | }, 413 | "node_modules/@babel/plugin-syntax-top-level-await": { 414 | "version": "7.14.5", 415 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", 416 | "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", 417 | "dev": true, 418 | "dependencies": { 419 | "@babel/helper-plugin-utils": "^7.14.5" 420 | }, 421 | "engines": { 422 | "node": ">=6.9.0" 423 | }, 424 | "peerDependencies": { 425 | "@babel/core": "^7.0.0-0" 426 | } 427 | }, 428 | "node_modules/@babel/plugin-syntax-typescript": { 429 | "version": "7.25.9", 430 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", 431 | "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", 432 | "dev": true, 433 | "dependencies": { 434 | "@babel/helper-plugin-utils": "^7.25.9" 435 | }, 436 | "engines": { 437 | "node": ">=6.9.0" 438 | }, 439 | "peerDependencies": { 440 | "@babel/core": "^7.0.0-0" 441 | } 442 | }, 443 | "node_modules/@babel/template": { 444 | "version": "7.26.9", 445 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", 446 | "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", 447 | "dev": true, 448 | "dependencies": { 449 | "@babel/code-frame": "^7.26.2", 450 | "@babel/parser": "^7.26.9", 451 | "@babel/types": "^7.26.9" 452 | }, 453 | "engines": { 454 | "node": ">=6.9.0" 455 | } 456 | }, 457 | "node_modules/@babel/traverse": { 458 | "version": "7.26.10", 459 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz", 460 | "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==", 461 | "dev": true, 462 | "dependencies": { 463 | "@babel/code-frame": "^7.26.2", 464 | "@babel/generator": "^7.26.10", 465 | "@babel/parser": "^7.26.10", 466 | "@babel/template": "^7.26.9", 467 | "@babel/types": "^7.26.10", 468 | "debug": "^4.3.1", 469 | "globals": "^11.1.0" 470 | }, 471 | "engines": { 472 | "node": ">=6.9.0" 473 | } 474 | }, 475 | "node_modules/@babel/types": { 476 | "version": "7.26.10", 477 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz", 478 | "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", 479 | "dev": true, 480 | "dependencies": { 481 | "@babel/helper-string-parser": "^7.25.9", 482 | "@babel/helper-validator-identifier": "^7.25.9" 483 | }, 484 | "engines": { 485 | "node": ">=6.9.0" 486 | } 487 | }, 488 | "node_modules/@bcoe/v8-coverage": { 489 | "version": "0.2.3", 490 | "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", 491 | "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", 492 | "dev": true 493 | }, 494 | "node_modules/@isaacs/cliui": { 495 | "version": "8.0.2", 496 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 497 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 498 | "dev": true, 499 | "dependencies": { 500 | "string-width": "^5.1.2", 501 | "string-width-cjs": "npm:string-width@^4.2.0", 502 | "strip-ansi": "^7.0.1", 503 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 504 | "wrap-ansi": "^8.1.0", 505 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 506 | }, 507 | "engines": { 508 | "node": ">=12" 509 | } 510 | }, 511 | "node_modules/@isaacs/cliui/node_modules/ansi-regex": { 512 | "version": "6.1.0", 513 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", 514 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", 515 | "dev": true, 516 | "engines": { 517 | "node": ">=12" 518 | }, 519 | "funding": { 520 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 521 | } 522 | }, 523 | "node_modules/@isaacs/cliui/node_modules/ansi-styles": { 524 | "version": "6.2.1", 525 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 526 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 527 | "dev": true, 528 | "engines": { 529 | "node": ">=12" 530 | }, 531 | "funding": { 532 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 533 | } 534 | }, 535 | "node_modules/@isaacs/cliui/node_modules/emoji-regex": { 536 | "version": "9.2.2", 537 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 538 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 539 | "dev": true 540 | }, 541 | "node_modules/@isaacs/cliui/node_modules/string-width": { 542 | "version": "5.1.2", 543 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 544 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 545 | "dev": true, 546 | "dependencies": { 547 | "eastasianwidth": "^0.2.0", 548 | "emoji-regex": "^9.2.2", 549 | "strip-ansi": "^7.0.1" 550 | }, 551 | "engines": { 552 | "node": ">=12" 553 | }, 554 | "funding": { 555 | "url": "https://github.com/sponsors/sindresorhus" 556 | } 557 | }, 558 | "node_modules/@isaacs/cliui/node_modules/strip-ansi": { 559 | "version": "7.1.0", 560 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 561 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 562 | "dev": true, 563 | "dependencies": { 564 | "ansi-regex": "^6.0.1" 565 | }, 566 | "engines": { 567 | "node": ">=12" 568 | }, 569 | "funding": { 570 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 571 | } 572 | }, 573 | "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { 574 | "version": "8.1.0", 575 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 576 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 577 | "dev": true, 578 | "dependencies": { 579 | "ansi-styles": "^6.1.0", 580 | "string-width": "^5.0.1", 581 | "strip-ansi": "^7.0.1" 582 | }, 583 | "engines": { 584 | "node": ">=12" 585 | }, 586 | "funding": { 587 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 588 | } 589 | }, 590 | "node_modules/@istanbuljs/load-nyc-config": { 591 | "version": "1.1.0", 592 | "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", 593 | "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", 594 | "dev": true, 595 | "dependencies": { 596 | "camelcase": "^5.3.1", 597 | "find-up": "^4.1.0", 598 | "get-package-type": "^0.1.0", 599 | "js-yaml": "^3.13.1", 600 | "resolve-from": "^5.0.0" 601 | }, 602 | "engines": { 603 | "node": ">=8" 604 | } 605 | }, 606 | "node_modules/@istanbuljs/schema": { 607 | "version": "0.1.3", 608 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", 609 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", 610 | "dev": true, 611 | "engines": { 612 | "node": ">=8" 613 | } 614 | }, 615 | "node_modules/@jest/console": { 616 | "version": "29.7.0", 617 | "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", 618 | "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", 619 | "dev": true, 620 | "dependencies": { 621 | "@jest/types": "^29.6.3", 622 | "@types/node": "*", 623 | "chalk": "^4.0.0", 624 | "jest-message-util": "^29.7.0", 625 | "jest-util": "^29.7.0", 626 | "slash": "^3.0.0" 627 | }, 628 | "engines": { 629 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 630 | } 631 | }, 632 | "node_modules/@jest/core": { 633 | "version": "29.7.0", 634 | "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", 635 | "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", 636 | "dev": true, 637 | "dependencies": { 638 | "@jest/console": "^29.7.0", 639 | "@jest/reporters": "^29.7.0", 640 | "@jest/test-result": "^29.7.0", 641 | "@jest/transform": "^29.7.0", 642 | "@jest/types": "^29.6.3", 643 | "@types/node": "*", 644 | "ansi-escapes": "^4.2.1", 645 | "chalk": "^4.0.0", 646 | "ci-info": "^3.2.0", 647 | "exit": "^0.1.2", 648 | "graceful-fs": "^4.2.9", 649 | "jest-changed-files": "^29.7.0", 650 | "jest-config": "^29.7.0", 651 | "jest-haste-map": "^29.7.0", 652 | "jest-message-util": "^29.7.0", 653 | "jest-regex-util": "^29.6.3", 654 | "jest-resolve": "^29.7.0", 655 | "jest-resolve-dependencies": "^29.7.0", 656 | "jest-runner": "^29.7.0", 657 | "jest-runtime": "^29.7.0", 658 | "jest-snapshot": "^29.7.0", 659 | "jest-util": "^29.7.0", 660 | "jest-validate": "^29.7.0", 661 | "jest-watcher": "^29.7.0", 662 | "micromatch": "^4.0.4", 663 | "pretty-format": "^29.7.0", 664 | "slash": "^3.0.0", 665 | "strip-ansi": "^6.0.0" 666 | }, 667 | "engines": { 668 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 669 | }, 670 | "peerDependencies": { 671 | "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" 672 | }, 673 | "peerDependenciesMeta": { 674 | "node-notifier": { 675 | "optional": true 676 | } 677 | } 678 | }, 679 | "node_modules/@jest/environment": { 680 | "version": "29.7.0", 681 | "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", 682 | "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", 683 | "dev": true, 684 | "dependencies": { 685 | "@jest/fake-timers": "^29.7.0", 686 | "@jest/types": "^29.6.3", 687 | "@types/node": "*", 688 | "jest-mock": "^29.7.0" 689 | }, 690 | "engines": { 691 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 692 | } 693 | }, 694 | "node_modules/@jest/expect": { 695 | "version": "29.7.0", 696 | "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", 697 | "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", 698 | "dev": true, 699 | "dependencies": { 700 | "expect": "^29.7.0", 701 | "jest-snapshot": "^29.7.0" 702 | }, 703 | "engines": { 704 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 705 | } 706 | }, 707 | "node_modules/@jest/expect-utils": { 708 | "version": "29.7.0", 709 | "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", 710 | "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", 711 | "dev": true, 712 | "dependencies": { 713 | "jest-get-type": "^29.6.3" 714 | }, 715 | "engines": { 716 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 717 | } 718 | }, 719 | "node_modules/@jest/fake-timers": { 720 | "version": "29.7.0", 721 | "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", 722 | "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", 723 | "dev": true, 724 | "dependencies": { 725 | "@jest/types": "^29.6.3", 726 | "@sinonjs/fake-timers": "^10.0.2", 727 | "@types/node": "*", 728 | "jest-message-util": "^29.7.0", 729 | "jest-mock": "^29.7.0", 730 | "jest-util": "^29.7.0" 731 | }, 732 | "engines": { 733 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 734 | } 735 | }, 736 | "node_modules/@jest/globals": { 737 | "version": "29.7.0", 738 | "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", 739 | "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", 740 | "dev": true, 741 | "dependencies": { 742 | "@jest/environment": "^29.7.0", 743 | "@jest/expect": "^29.7.0", 744 | "@jest/types": "^29.6.3", 745 | "jest-mock": "^29.7.0" 746 | }, 747 | "engines": { 748 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 749 | } 750 | }, 751 | "node_modules/@jest/reporters": { 752 | "version": "29.7.0", 753 | "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", 754 | "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", 755 | "dev": true, 756 | "dependencies": { 757 | "@bcoe/v8-coverage": "^0.2.3", 758 | "@jest/console": "^29.7.0", 759 | "@jest/test-result": "^29.7.0", 760 | "@jest/transform": "^29.7.0", 761 | "@jest/types": "^29.6.3", 762 | "@jridgewell/trace-mapping": "^0.3.18", 763 | "@types/node": "*", 764 | "chalk": "^4.0.0", 765 | "collect-v8-coverage": "^1.0.0", 766 | "exit": "^0.1.2", 767 | "glob": "^7.1.3", 768 | "graceful-fs": "^4.2.9", 769 | "istanbul-lib-coverage": "^3.0.0", 770 | "istanbul-lib-instrument": "^6.0.0", 771 | "istanbul-lib-report": "^3.0.0", 772 | "istanbul-lib-source-maps": "^4.0.0", 773 | "istanbul-reports": "^3.1.3", 774 | "jest-message-util": "^29.7.0", 775 | "jest-util": "^29.7.0", 776 | "jest-worker": "^29.7.0", 777 | "slash": "^3.0.0", 778 | "string-length": "^4.0.1", 779 | "strip-ansi": "^6.0.0", 780 | "v8-to-istanbul": "^9.0.1" 781 | }, 782 | "engines": { 783 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 784 | }, 785 | "peerDependencies": { 786 | "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" 787 | }, 788 | "peerDependenciesMeta": { 789 | "node-notifier": { 790 | "optional": true 791 | } 792 | } 793 | }, 794 | "node_modules/@jest/schemas": { 795 | "version": "29.6.3", 796 | "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", 797 | "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", 798 | "dev": true, 799 | "dependencies": { 800 | "@sinclair/typebox": "^0.27.8" 801 | }, 802 | "engines": { 803 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 804 | } 805 | }, 806 | "node_modules/@jest/source-map": { 807 | "version": "29.6.3", 808 | "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", 809 | "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", 810 | "dev": true, 811 | "dependencies": { 812 | "@jridgewell/trace-mapping": "^0.3.18", 813 | "callsites": "^3.0.0", 814 | "graceful-fs": "^4.2.9" 815 | }, 816 | "engines": { 817 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 818 | } 819 | }, 820 | "node_modules/@jest/test-result": { 821 | "version": "29.7.0", 822 | "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", 823 | "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", 824 | "dev": true, 825 | "dependencies": { 826 | "@jest/console": "^29.7.0", 827 | "@jest/types": "^29.6.3", 828 | "@types/istanbul-lib-coverage": "^2.0.0", 829 | "collect-v8-coverage": "^1.0.0" 830 | }, 831 | "engines": { 832 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 833 | } 834 | }, 835 | "node_modules/@jest/test-sequencer": { 836 | "version": "29.7.0", 837 | "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", 838 | "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", 839 | "dev": true, 840 | "dependencies": { 841 | "@jest/test-result": "^29.7.0", 842 | "graceful-fs": "^4.2.9", 843 | "jest-haste-map": "^29.7.0", 844 | "slash": "^3.0.0" 845 | }, 846 | "engines": { 847 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 848 | } 849 | }, 850 | "node_modules/@jest/transform": { 851 | "version": "29.7.0", 852 | "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", 853 | "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", 854 | "dev": true, 855 | "dependencies": { 856 | "@babel/core": "^7.11.6", 857 | "@jest/types": "^29.6.3", 858 | "@jridgewell/trace-mapping": "^0.3.18", 859 | "babel-plugin-istanbul": "^6.1.1", 860 | "chalk": "^4.0.0", 861 | "convert-source-map": "^2.0.0", 862 | "fast-json-stable-stringify": "^2.1.0", 863 | "graceful-fs": "^4.2.9", 864 | "jest-haste-map": "^29.7.0", 865 | "jest-regex-util": "^29.6.3", 866 | "jest-util": "^29.7.0", 867 | "micromatch": "^4.0.4", 868 | "pirates": "^4.0.4", 869 | "slash": "^3.0.0", 870 | "write-file-atomic": "^4.0.2" 871 | }, 872 | "engines": { 873 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 874 | } 875 | }, 876 | "node_modules/@jest/types": { 877 | "version": "29.6.3", 878 | "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", 879 | "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", 880 | "dev": true, 881 | "dependencies": { 882 | "@jest/schemas": "^29.6.3", 883 | "@types/istanbul-lib-coverage": "^2.0.0", 884 | "@types/istanbul-reports": "^3.0.0", 885 | "@types/node": "*", 886 | "@types/yargs": "^17.0.8", 887 | "chalk": "^4.0.0" 888 | }, 889 | "engines": { 890 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 891 | } 892 | }, 893 | "node_modules/@jridgewell/gen-mapping": { 894 | "version": "0.3.8", 895 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", 896 | "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", 897 | "dev": true, 898 | "dependencies": { 899 | "@jridgewell/set-array": "^1.2.1", 900 | "@jridgewell/sourcemap-codec": "^1.4.10", 901 | "@jridgewell/trace-mapping": "^0.3.24" 902 | }, 903 | "engines": { 904 | "node": ">=6.0.0" 905 | } 906 | }, 907 | "node_modules/@jridgewell/resolve-uri": { 908 | "version": "3.1.2", 909 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 910 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 911 | "dev": true, 912 | "engines": { 913 | "node": ">=6.0.0" 914 | } 915 | }, 916 | "node_modules/@jridgewell/set-array": { 917 | "version": "1.2.1", 918 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 919 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 920 | "dev": true, 921 | "engines": { 922 | "node": ">=6.0.0" 923 | } 924 | }, 925 | "node_modules/@jridgewell/sourcemap-codec": { 926 | "version": "1.5.0", 927 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 928 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 929 | "dev": true 930 | }, 931 | "node_modules/@jridgewell/trace-mapping": { 932 | "version": "0.3.25", 933 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 934 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 935 | "dev": true, 936 | "dependencies": { 937 | "@jridgewell/resolve-uri": "^3.1.0", 938 | "@jridgewell/sourcemap-codec": "^1.4.14" 939 | } 940 | }, 941 | "node_modules/@jsep-plugin/assignment": { 942 | "version": "1.3.0", 943 | "resolved": "https://registry.npmjs.org/@jsep-plugin/assignment/-/assignment-1.3.0.tgz", 944 | "integrity": "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==", 945 | "engines": { 946 | "node": ">= 10.16.0" 947 | }, 948 | "peerDependencies": { 949 | "jsep": "^0.4.0||^1.0.0" 950 | } 951 | }, 952 | "node_modules/@jsep-plugin/regex": { 953 | "version": "1.0.4", 954 | "resolved": "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.4.tgz", 955 | "integrity": "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==", 956 | "engines": { 957 | "node": ">= 10.16.0" 958 | }, 959 | "peerDependencies": { 960 | "jsep": "^0.4.0||^1.0.0" 961 | } 962 | }, 963 | "node_modules/@modelcontextprotocol/sdk": { 964 | "version": "1.7.0", 965 | "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.7.0.tgz", 966 | "integrity": "sha512-IYPe/FLpvF3IZrd/f5p5ffmWhMc3aEMuM2wGJASDqC2Ge7qatVCdbfPx3n/5xFeb19xN0j/911M2AaFuircsWA==", 967 | "dependencies": { 968 | "content-type": "^1.0.5", 969 | "cors": "^2.8.5", 970 | "eventsource": "^3.0.2", 971 | "express": "^5.0.1", 972 | "express-rate-limit": "^7.5.0", 973 | "pkce-challenge": "^4.1.0", 974 | "raw-body": "^3.0.0", 975 | "zod": "^3.23.8", 976 | "zod-to-json-schema": "^3.24.1" 977 | }, 978 | "engines": { 979 | "node": ">=18" 980 | } 981 | }, 982 | "node_modules/@sinclair/typebox": { 983 | "version": "0.27.8", 984 | "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", 985 | "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", 986 | "dev": true 987 | }, 988 | "node_modules/@sinonjs/commons": { 989 | "version": "3.0.1", 990 | "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", 991 | "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", 992 | "dev": true, 993 | "dependencies": { 994 | "type-detect": "4.0.8" 995 | } 996 | }, 997 | "node_modules/@sinonjs/fake-timers": { 998 | "version": "10.3.0", 999 | "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", 1000 | "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", 1001 | "dev": true, 1002 | "dependencies": { 1003 | "@sinonjs/commons": "^3.0.0" 1004 | } 1005 | }, 1006 | "node_modules/@types/babel__core": { 1007 | "version": "7.20.5", 1008 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", 1009 | "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", 1010 | "dev": true, 1011 | "dependencies": { 1012 | "@babel/parser": "^7.20.7", 1013 | "@babel/types": "^7.20.7", 1014 | "@types/babel__generator": "*", 1015 | "@types/babel__template": "*", 1016 | "@types/babel__traverse": "*" 1017 | } 1018 | }, 1019 | "node_modules/@types/babel__generator": { 1020 | "version": "7.6.8", 1021 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", 1022 | "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", 1023 | "dev": true, 1024 | "dependencies": { 1025 | "@babel/types": "^7.0.0" 1026 | } 1027 | }, 1028 | "node_modules/@types/babel__template": { 1029 | "version": "7.4.4", 1030 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", 1031 | "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", 1032 | "dev": true, 1033 | "dependencies": { 1034 | "@babel/parser": "^7.1.0", 1035 | "@babel/types": "^7.0.0" 1036 | } 1037 | }, 1038 | "node_modules/@types/babel__traverse": { 1039 | "version": "7.20.6", 1040 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", 1041 | "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", 1042 | "dev": true, 1043 | "dependencies": { 1044 | "@babel/types": "^7.20.7" 1045 | } 1046 | }, 1047 | "node_modules/@types/graceful-fs": { 1048 | "version": "4.1.9", 1049 | "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", 1050 | "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", 1051 | "dev": true, 1052 | "dependencies": { 1053 | "@types/node": "*" 1054 | } 1055 | }, 1056 | "node_modules/@types/istanbul-lib-coverage": { 1057 | "version": "2.0.6", 1058 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", 1059 | "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", 1060 | "dev": true 1061 | }, 1062 | "node_modules/@types/istanbul-lib-report": { 1063 | "version": "3.0.3", 1064 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", 1065 | "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", 1066 | "dev": true, 1067 | "dependencies": { 1068 | "@types/istanbul-lib-coverage": "*" 1069 | } 1070 | }, 1071 | "node_modules/@types/istanbul-reports": { 1072 | "version": "3.0.4", 1073 | "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", 1074 | "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", 1075 | "dev": true, 1076 | "dependencies": { 1077 | "@types/istanbul-lib-report": "*" 1078 | } 1079 | }, 1080 | "node_modules/@types/jest": { 1081 | "version": "29.5.14", 1082 | "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", 1083 | "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", 1084 | "dev": true, 1085 | "dependencies": { 1086 | "expect": "^29.0.0", 1087 | "pretty-format": "^29.0.0" 1088 | } 1089 | }, 1090 | "node_modules/@types/node": { 1091 | "version": "22.13.11", 1092 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.11.tgz", 1093 | "integrity": "sha512-iEUCUJoU0i3VnrCmgoWCXttklWcvoCIx4jzcP22fioIVSdTmjgoEvmAO/QPw6TcS9k5FrNgn4w7q5lGOd1CT5g==", 1094 | "dev": true, 1095 | "dependencies": { 1096 | "undici-types": "~6.20.0" 1097 | } 1098 | }, 1099 | "node_modules/@types/stack-utils": { 1100 | "version": "2.0.3", 1101 | "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", 1102 | "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", 1103 | "dev": true 1104 | }, 1105 | "node_modules/@types/yargs": { 1106 | "version": "17.0.33", 1107 | "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", 1108 | "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", 1109 | "dev": true, 1110 | "dependencies": { 1111 | "@types/yargs-parser": "*" 1112 | } 1113 | }, 1114 | "node_modules/@types/yargs-parser": { 1115 | "version": "21.0.3", 1116 | "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", 1117 | "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", 1118 | "dev": true 1119 | }, 1120 | "node_modules/accepts": { 1121 | "version": "2.0.0", 1122 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", 1123 | "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", 1124 | "dependencies": { 1125 | "mime-types": "^3.0.0", 1126 | "negotiator": "^1.0.0" 1127 | }, 1128 | "engines": { 1129 | "node": ">= 0.6" 1130 | } 1131 | }, 1132 | "node_modules/ansi-escapes": { 1133 | "version": "4.3.2", 1134 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 1135 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 1136 | "dev": true, 1137 | "dependencies": { 1138 | "type-fest": "^0.21.3" 1139 | }, 1140 | "engines": { 1141 | "node": ">=8" 1142 | }, 1143 | "funding": { 1144 | "url": "https://github.com/sponsors/sindresorhus" 1145 | } 1146 | }, 1147 | "node_modules/ansi-regex": { 1148 | "version": "5.0.1", 1149 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1150 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1151 | "dev": true, 1152 | "engines": { 1153 | "node": ">=8" 1154 | } 1155 | }, 1156 | "node_modules/ansi-styles": { 1157 | "version": "4.3.0", 1158 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1159 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1160 | "dev": true, 1161 | "dependencies": { 1162 | "color-convert": "^2.0.1" 1163 | }, 1164 | "engines": { 1165 | "node": ">=8" 1166 | }, 1167 | "funding": { 1168 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1169 | } 1170 | }, 1171 | "node_modules/anymatch": { 1172 | "version": "3.1.3", 1173 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 1174 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 1175 | "dev": true, 1176 | "dependencies": { 1177 | "normalize-path": "^3.0.0", 1178 | "picomatch": "^2.0.4" 1179 | }, 1180 | "engines": { 1181 | "node": ">= 8" 1182 | } 1183 | }, 1184 | "node_modules/argparse": { 1185 | "version": "1.0.10", 1186 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 1187 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 1188 | "dev": true, 1189 | "dependencies": { 1190 | "sprintf-js": "~1.0.2" 1191 | } 1192 | }, 1193 | "node_modules/async": { 1194 | "version": "3.2.6", 1195 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", 1196 | "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", 1197 | "dev": true 1198 | }, 1199 | "node_modules/babel-jest": { 1200 | "version": "29.7.0", 1201 | "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", 1202 | "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", 1203 | "dev": true, 1204 | "dependencies": { 1205 | "@jest/transform": "^29.7.0", 1206 | "@types/babel__core": "^7.1.14", 1207 | "babel-plugin-istanbul": "^6.1.1", 1208 | "babel-preset-jest": "^29.6.3", 1209 | "chalk": "^4.0.0", 1210 | "graceful-fs": "^4.2.9", 1211 | "slash": "^3.0.0" 1212 | }, 1213 | "engines": { 1214 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 1215 | }, 1216 | "peerDependencies": { 1217 | "@babel/core": "^7.8.0" 1218 | } 1219 | }, 1220 | "node_modules/babel-plugin-istanbul": { 1221 | "version": "6.1.1", 1222 | "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", 1223 | "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", 1224 | "dev": true, 1225 | "dependencies": { 1226 | "@babel/helper-plugin-utils": "^7.0.0", 1227 | "@istanbuljs/load-nyc-config": "^1.0.0", 1228 | "@istanbuljs/schema": "^0.1.2", 1229 | "istanbul-lib-instrument": "^5.0.4", 1230 | "test-exclude": "^6.0.0" 1231 | }, 1232 | "engines": { 1233 | "node": ">=8" 1234 | } 1235 | }, 1236 | "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { 1237 | "version": "5.2.1", 1238 | "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", 1239 | "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", 1240 | "dev": true, 1241 | "dependencies": { 1242 | "@babel/core": "^7.12.3", 1243 | "@babel/parser": "^7.14.7", 1244 | "@istanbuljs/schema": "^0.1.2", 1245 | "istanbul-lib-coverage": "^3.2.0", 1246 | "semver": "^6.3.0" 1247 | }, 1248 | "engines": { 1249 | "node": ">=8" 1250 | } 1251 | }, 1252 | "node_modules/babel-plugin-jest-hoist": { 1253 | "version": "29.6.3", 1254 | "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", 1255 | "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", 1256 | "dev": true, 1257 | "dependencies": { 1258 | "@babel/template": "^7.3.3", 1259 | "@babel/types": "^7.3.3", 1260 | "@types/babel__core": "^7.1.14", 1261 | "@types/babel__traverse": "^7.0.6" 1262 | }, 1263 | "engines": { 1264 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 1265 | } 1266 | }, 1267 | "node_modules/babel-preset-current-node-syntax": { 1268 | "version": "1.1.0", 1269 | "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", 1270 | "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", 1271 | "dev": true, 1272 | "dependencies": { 1273 | "@babel/plugin-syntax-async-generators": "^7.8.4", 1274 | "@babel/plugin-syntax-bigint": "^7.8.3", 1275 | "@babel/plugin-syntax-class-properties": "^7.12.13", 1276 | "@babel/plugin-syntax-class-static-block": "^7.14.5", 1277 | "@babel/plugin-syntax-import-attributes": "^7.24.7", 1278 | "@babel/plugin-syntax-import-meta": "^7.10.4", 1279 | "@babel/plugin-syntax-json-strings": "^7.8.3", 1280 | "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", 1281 | "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", 1282 | "@babel/plugin-syntax-numeric-separator": "^7.10.4", 1283 | "@babel/plugin-syntax-object-rest-spread": "^7.8.3", 1284 | "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", 1285 | "@babel/plugin-syntax-optional-chaining": "^7.8.3", 1286 | "@babel/plugin-syntax-private-property-in-object": "^7.14.5", 1287 | "@babel/plugin-syntax-top-level-await": "^7.14.5" 1288 | }, 1289 | "peerDependencies": { 1290 | "@babel/core": "^7.0.0" 1291 | } 1292 | }, 1293 | "node_modules/babel-preset-jest": { 1294 | "version": "29.6.3", 1295 | "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", 1296 | "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", 1297 | "dev": true, 1298 | "dependencies": { 1299 | "babel-plugin-jest-hoist": "^29.6.3", 1300 | "babel-preset-current-node-syntax": "^1.0.0" 1301 | }, 1302 | "engines": { 1303 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 1304 | }, 1305 | "peerDependencies": { 1306 | "@babel/core": "^7.0.0" 1307 | } 1308 | }, 1309 | "node_modules/balanced-match": { 1310 | "version": "1.0.2", 1311 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1312 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1313 | "dev": true 1314 | }, 1315 | "node_modules/body-parser": { 1316 | "version": "2.1.0", 1317 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.1.0.tgz", 1318 | "integrity": "sha512-/hPxh61E+ll0Ujp24Ilm64cykicul1ypfwjVttduAiEdtnJFvLePSrIPk+HMImtNv5270wOGCb1Tns2rybMkoQ==", 1319 | "dependencies": { 1320 | "bytes": "^3.1.2", 1321 | "content-type": "^1.0.5", 1322 | "debug": "^4.4.0", 1323 | "http-errors": "^2.0.0", 1324 | "iconv-lite": "^0.5.2", 1325 | "on-finished": "^2.4.1", 1326 | "qs": "^6.14.0", 1327 | "raw-body": "^3.0.0", 1328 | "type-is": "^2.0.0" 1329 | }, 1330 | "engines": { 1331 | "node": ">=18" 1332 | } 1333 | }, 1334 | "node_modules/body-parser/node_modules/debug": { 1335 | "version": "4.4.0", 1336 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1337 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 1338 | "dependencies": { 1339 | "ms": "^2.1.3" 1340 | }, 1341 | "engines": { 1342 | "node": ">=6.0" 1343 | }, 1344 | "peerDependenciesMeta": { 1345 | "supports-color": { 1346 | "optional": true 1347 | } 1348 | } 1349 | }, 1350 | "node_modules/body-parser/node_modules/ms": { 1351 | "version": "2.1.3", 1352 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1353 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1354 | }, 1355 | "node_modules/body-parser/node_modules/qs": { 1356 | "version": "6.14.0", 1357 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", 1358 | "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", 1359 | "dependencies": { 1360 | "side-channel": "^1.1.0" 1361 | }, 1362 | "engines": { 1363 | "node": ">=0.6" 1364 | }, 1365 | "funding": { 1366 | "url": "https://github.com/sponsors/ljharb" 1367 | } 1368 | }, 1369 | "node_modules/brace-expansion": { 1370 | "version": "1.1.11", 1371 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1372 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1373 | "dev": true, 1374 | "dependencies": { 1375 | "balanced-match": "^1.0.0", 1376 | "concat-map": "0.0.1" 1377 | } 1378 | }, 1379 | "node_modules/braces": { 1380 | "version": "3.0.3", 1381 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1382 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1383 | "dev": true, 1384 | "dependencies": { 1385 | "fill-range": "^7.1.1" 1386 | }, 1387 | "engines": { 1388 | "node": ">=8" 1389 | } 1390 | }, 1391 | "node_modules/browserslist": { 1392 | "version": "4.24.4", 1393 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", 1394 | "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", 1395 | "dev": true, 1396 | "funding": [ 1397 | { 1398 | "type": "opencollective", 1399 | "url": "https://opencollective.com/browserslist" 1400 | }, 1401 | { 1402 | "type": "tidelift", 1403 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1404 | }, 1405 | { 1406 | "type": "github", 1407 | "url": "https://github.com/sponsors/ai" 1408 | } 1409 | ], 1410 | "dependencies": { 1411 | "caniuse-lite": "^1.0.30001688", 1412 | "electron-to-chromium": "^1.5.73", 1413 | "node-releases": "^2.0.19", 1414 | "update-browserslist-db": "^1.1.1" 1415 | }, 1416 | "bin": { 1417 | "browserslist": "cli.js" 1418 | }, 1419 | "engines": { 1420 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 1421 | } 1422 | }, 1423 | "node_modules/bs-logger": { 1424 | "version": "0.2.6", 1425 | "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", 1426 | "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", 1427 | "dev": true, 1428 | "dependencies": { 1429 | "fast-json-stable-stringify": "2.x" 1430 | }, 1431 | "engines": { 1432 | "node": ">= 6" 1433 | } 1434 | }, 1435 | "node_modules/bser": { 1436 | "version": "2.1.1", 1437 | "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", 1438 | "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", 1439 | "dev": true, 1440 | "dependencies": { 1441 | "node-int64": "^0.4.0" 1442 | } 1443 | }, 1444 | "node_modules/buffer-from": { 1445 | "version": "1.1.2", 1446 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 1447 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 1448 | "dev": true 1449 | }, 1450 | "node_modules/bytes": { 1451 | "version": "3.1.2", 1452 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 1453 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 1454 | "engines": { 1455 | "node": ">= 0.8" 1456 | } 1457 | }, 1458 | "node_modules/call-bind-apply-helpers": { 1459 | "version": "1.0.2", 1460 | "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", 1461 | "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", 1462 | "dependencies": { 1463 | "es-errors": "^1.3.0", 1464 | "function-bind": "^1.1.2" 1465 | }, 1466 | "engines": { 1467 | "node": ">= 0.4" 1468 | } 1469 | }, 1470 | "node_modules/call-bound": { 1471 | "version": "1.0.4", 1472 | "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", 1473 | "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", 1474 | "dependencies": { 1475 | "call-bind-apply-helpers": "^1.0.2", 1476 | "get-intrinsic": "^1.3.0" 1477 | }, 1478 | "engines": { 1479 | "node": ">= 0.4" 1480 | }, 1481 | "funding": { 1482 | "url": "https://github.com/sponsors/ljharb" 1483 | } 1484 | }, 1485 | "node_modules/callsites": { 1486 | "version": "3.1.0", 1487 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1488 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1489 | "dev": true, 1490 | "engines": { 1491 | "node": ">=6" 1492 | } 1493 | }, 1494 | "node_modules/camelcase": { 1495 | "version": "5.3.1", 1496 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 1497 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 1498 | "dev": true, 1499 | "engines": { 1500 | "node": ">=6" 1501 | } 1502 | }, 1503 | "node_modules/caniuse-lite": { 1504 | "version": "1.0.30001706", 1505 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz", 1506 | "integrity": "sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==", 1507 | "dev": true, 1508 | "funding": [ 1509 | { 1510 | "type": "opencollective", 1511 | "url": "https://opencollective.com/browserslist" 1512 | }, 1513 | { 1514 | "type": "tidelift", 1515 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 1516 | }, 1517 | { 1518 | "type": "github", 1519 | "url": "https://github.com/sponsors/ai" 1520 | } 1521 | ] 1522 | }, 1523 | "node_modules/chalk": { 1524 | "version": "4.1.2", 1525 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1526 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1527 | "dev": true, 1528 | "dependencies": { 1529 | "ansi-styles": "^4.1.0", 1530 | "supports-color": "^7.1.0" 1531 | }, 1532 | "engines": { 1533 | "node": ">=10" 1534 | }, 1535 | "funding": { 1536 | "url": "https://github.com/chalk/chalk?sponsor=1" 1537 | } 1538 | }, 1539 | "node_modules/char-regex": { 1540 | "version": "1.0.2", 1541 | "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", 1542 | "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", 1543 | "dev": true, 1544 | "engines": { 1545 | "node": ">=10" 1546 | } 1547 | }, 1548 | "node_modules/ci-info": { 1549 | "version": "3.9.0", 1550 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", 1551 | "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", 1552 | "dev": true, 1553 | "funding": [ 1554 | { 1555 | "type": "github", 1556 | "url": "https://github.com/sponsors/sibiraj-s" 1557 | } 1558 | ], 1559 | "engines": { 1560 | "node": ">=8" 1561 | } 1562 | }, 1563 | "node_modules/cjs-module-lexer": { 1564 | "version": "1.4.3", 1565 | "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", 1566 | "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", 1567 | "dev": true 1568 | }, 1569 | "node_modules/cliui": { 1570 | "version": "8.0.1", 1571 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 1572 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 1573 | "dev": true, 1574 | "dependencies": { 1575 | "string-width": "^4.2.0", 1576 | "strip-ansi": "^6.0.1", 1577 | "wrap-ansi": "^7.0.0" 1578 | }, 1579 | "engines": { 1580 | "node": ">=12" 1581 | } 1582 | }, 1583 | "node_modules/co": { 1584 | "version": "4.6.0", 1585 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 1586 | "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", 1587 | "dev": true, 1588 | "engines": { 1589 | "iojs": ">= 1.0.0", 1590 | "node": ">= 0.12.0" 1591 | } 1592 | }, 1593 | "node_modules/collect-v8-coverage": { 1594 | "version": "1.0.2", 1595 | "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", 1596 | "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", 1597 | "dev": true 1598 | }, 1599 | "node_modules/color-convert": { 1600 | "version": "2.0.1", 1601 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1602 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1603 | "dev": true, 1604 | "dependencies": { 1605 | "color-name": "~1.1.4" 1606 | }, 1607 | "engines": { 1608 | "node": ">=7.0.0" 1609 | } 1610 | }, 1611 | "node_modules/color-name": { 1612 | "version": "1.1.4", 1613 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1614 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1615 | "dev": true 1616 | }, 1617 | "node_modules/concat-map": { 1618 | "version": "0.0.1", 1619 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1620 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1621 | "dev": true 1622 | }, 1623 | "node_modules/content-disposition": { 1624 | "version": "1.0.0", 1625 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", 1626 | "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", 1627 | "dependencies": { 1628 | "safe-buffer": "5.2.1" 1629 | }, 1630 | "engines": { 1631 | "node": ">= 0.6" 1632 | } 1633 | }, 1634 | "node_modules/content-type": { 1635 | "version": "1.0.5", 1636 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", 1637 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", 1638 | "engines": { 1639 | "node": ">= 0.6" 1640 | } 1641 | }, 1642 | "node_modules/convert-source-map": { 1643 | "version": "2.0.0", 1644 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 1645 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 1646 | "dev": true 1647 | }, 1648 | "node_modules/cookie": { 1649 | "version": "0.7.1", 1650 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", 1651 | "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", 1652 | "engines": { 1653 | "node": ">= 0.6" 1654 | } 1655 | }, 1656 | "node_modules/cookie-signature": { 1657 | "version": "1.2.2", 1658 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", 1659 | "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", 1660 | "engines": { 1661 | "node": ">=6.6.0" 1662 | } 1663 | }, 1664 | "node_modules/cors": { 1665 | "version": "2.8.5", 1666 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 1667 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 1668 | "dependencies": { 1669 | "object-assign": "^4", 1670 | "vary": "^1" 1671 | }, 1672 | "engines": { 1673 | "node": ">= 0.10" 1674 | } 1675 | }, 1676 | "node_modules/create-jest": { 1677 | "version": "29.7.0", 1678 | "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", 1679 | "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", 1680 | "dev": true, 1681 | "dependencies": { 1682 | "@jest/types": "^29.6.3", 1683 | "chalk": "^4.0.0", 1684 | "exit": "^0.1.2", 1685 | "graceful-fs": "^4.2.9", 1686 | "jest-config": "^29.7.0", 1687 | "jest-util": "^29.7.0", 1688 | "prompts": "^2.0.1" 1689 | }, 1690 | "bin": { 1691 | "create-jest": "bin/create-jest.js" 1692 | }, 1693 | "engines": { 1694 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 1695 | } 1696 | }, 1697 | "node_modules/cross-spawn": { 1698 | "version": "7.0.6", 1699 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 1700 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 1701 | "dev": true, 1702 | "dependencies": { 1703 | "path-key": "^3.1.0", 1704 | "shebang-command": "^2.0.0", 1705 | "which": "^2.0.1" 1706 | }, 1707 | "engines": { 1708 | "node": ">= 8" 1709 | } 1710 | }, 1711 | "node_modules/debug": { 1712 | "version": "4.3.6", 1713 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", 1714 | "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", 1715 | "dependencies": { 1716 | "ms": "2.1.2" 1717 | }, 1718 | "engines": { 1719 | "node": ">=6.0" 1720 | }, 1721 | "peerDependenciesMeta": { 1722 | "supports-color": { 1723 | "optional": true 1724 | } 1725 | } 1726 | }, 1727 | "node_modules/dedent": { 1728 | "version": "1.5.3", 1729 | "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", 1730 | "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", 1731 | "dev": true, 1732 | "peerDependencies": { 1733 | "babel-plugin-macros": "^3.1.0" 1734 | }, 1735 | "peerDependenciesMeta": { 1736 | "babel-plugin-macros": { 1737 | "optional": true 1738 | } 1739 | } 1740 | }, 1741 | "node_modules/deepmerge": { 1742 | "version": "4.3.1", 1743 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 1744 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 1745 | "dev": true, 1746 | "engines": { 1747 | "node": ">=0.10.0" 1748 | } 1749 | }, 1750 | "node_modules/depd": { 1751 | "version": "2.0.0", 1752 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 1753 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 1754 | "engines": { 1755 | "node": ">= 0.8" 1756 | } 1757 | }, 1758 | "node_modules/destroy": { 1759 | "version": "1.2.0", 1760 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 1761 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 1762 | "engines": { 1763 | "node": ">= 0.8", 1764 | "npm": "1.2.8000 || >= 1.4.16" 1765 | } 1766 | }, 1767 | "node_modules/detect-newline": { 1768 | "version": "3.1.0", 1769 | "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", 1770 | "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", 1771 | "dev": true, 1772 | "engines": { 1773 | "node": ">=8" 1774 | } 1775 | }, 1776 | "node_modules/diff-sequences": { 1777 | "version": "29.6.3", 1778 | "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", 1779 | "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", 1780 | "dev": true, 1781 | "engines": { 1782 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 1783 | } 1784 | }, 1785 | "node_modules/dunder-proto": { 1786 | "version": "1.0.1", 1787 | "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", 1788 | "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", 1789 | "dependencies": { 1790 | "call-bind-apply-helpers": "^1.0.1", 1791 | "es-errors": "^1.3.0", 1792 | "gopd": "^1.2.0" 1793 | }, 1794 | "engines": { 1795 | "node": ">= 0.4" 1796 | } 1797 | }, 1798 | "node_modules/eastasianwidth": { 1799 | "version": "0.2.0", 1800 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1801 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 1802 | "dev": true 1803 | }, 1804 | "node_modules/ee-first": { 1805 | "version": "1.1.1", 1806 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1807 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 1808 | }, 1809 | "node_modules/ejs": { 1810 | "version": "3.1.10", 1811 | "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", 1812 | "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", 1813 | "dev": true, 1814 | "dependencies": { 1815 | "jake": "^10.8.5" 1816 | }, 1817 | "bin": { 1818 | "ejs": "bin/cli.js" 1819 | }, 1820 | "engines": { 1821 | "node": ">=0.10.0" 1822 | } 1823 | }, 1824 | "node_modules/electron-to-chromium": { 1825 | "version": "1.5.123", 1826 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.123.tgz", 1827 | "integrity": "sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==", 1828 | "dev": true 1829 | }, 1830 | "node_modules/emittery": { 1831 | "version": "0.13.1", 1832 | "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", 1833 | "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", 1834 | "dev": true, 1835 | "engines": { 1836 | "node": ">=12" 1837 | }, 1838 | "funding": { 1839 | "url": "https://github.com/sindresorhus/emittery?sponsor=1" 1840 | } 1841 | }, 1842 | "node_modules/emoji-regex": { 1843 | "version": "8.0.0", 1844 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1845 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1846 | "dev": true 1847 | }, 1848 | "node_modules/encodeurl": { 1849 | "version": "2.0.0", 1850 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", 1851 | "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", 1852 | "engines": { 1853 | "node": ">= 0.8" 1854 | } 1855 | }, 1856 | "node_modules/error-ex": { 1857 | "version": "1.3.2", 1858 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1859 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1860 | "dev": true, 1861 | "dependencies": { 1862 | "is-arrayish": "^0.2.1" 1863 | } 1864 | }, 1865 | "node_modules/es-define-property": { 1866 | "version": "1.0.1", 1867 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", 1868 | "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", 1869 | "engines": { 1870 | "node": ">= 0.4" 1871 | } 1872 | }, 1873 | "node_modules/es-errors": { 1874 | "version": "1.3.0", 1875 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", 1876 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", 1877 | "engines": { 1878 | "node": ">= 0.4" 1879 | } 1880 | }, 1881 | "node_modules/es-object-atoms": { 1882 | "version": "1.1.1", 1883 | "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", 1884 | "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", 1885 | "dependencies": { 1886 | "es-errors": "^1.3.0" 1887 | }, 1888 | "engines": { 1889 | "node": ">= 0.4" 1890 | } 1891 | }, 1892 | "node_modules/escalade": { 1893 | "version": "3.2.0", 1894 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 1895 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 1896 | "dev": true, 1897 | "engines": { 1898 | "node": ">=6" 1899 | } 1900 | }, 1901 | "node_modules/escape-html": { 1902 | "version": "1.0.3", 1903 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1904 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 1905 | }, 1906 | "node_modules/escape-string-regexp": { 1907 | "version": "2.0.0", 1908 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", 1909 | "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", 1910 | "dev": true, 1911 | "engines": { 1912 | "node": ">=8" 1913 | } 1914 | }, 1915 | "node_modules/esprima": { 1916 | "version": "4.0.1", 1917 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1918 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1919 | "dev": true, 1920 | "bin": { 1921 | "esparse": "bin/esparse.js", 1922 | "esvalidate": "bin/esvalidate.js" 1923 | }, 1924 | "engines": { 1925 | "node": ">=4" 1926 | } 1927 | }, 1928 | "node_modules/etag": { 1929 | "version": "1.8.1", 1930 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 1931 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", 1932 | "engines": { 1933 | "node": ">= 0.6" 1934 | } 1935 | }, 1936 | "node_modules/eventsource": { 1937 | "version": "3.0.5", 1938 | "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.5.tgz", 1939 | "integrity": "sha512-LT/5J605bx5SNyE+ITBDiM3FxffBiq9un7Vx0EwMDM3vg8sWKx/tO2zC+LMqZ+smAM0F2hblaDZUVZF0te2pSw==", 1940 | "dependencies": { 1941 | "eventsource-parser": "^3.0.0" 1942 | }, 1943 | "engines": { 1944 | "node": ">=18.0.0" 1945 | } 1946 | }, 1947 | "node_modules/eventsource-parser": { 1948 | "version": "3.0.0", 1949 | "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.0.tgz", 1950 | "integrity": "sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==", 1951 | "engines": { 1952 | "node": ">=18.0.0" 1953 | } 1954 | }, 1955 | "node_modules/execa": { 1956 | "version": "5.1.1", 1957 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 1958 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 1959 | "dev": true, 1960 | "dependencies": { 1961 | "cross-spawn": "^7.0.3", 1962 | "get-stream": "^6.0.0", 1963 | "human-signals": "^2.1.0", 1964 | "is-stream": "^2.0.0", 1965 | "merge-stream": "^2.0.0", 1966 | "npm-run-path": "^4.0.1", 1967 | "onetime": "^5.1.2", 1968 | "signal-exit": "^3.0.3", 1969 | "strip-final-newline": "^2.0.0" 1970 | }, 1971 | "engines": { 1972 | "node": ">=10" 1973 | }, 1974 | "funding": { 1975 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 1976 | } 1977 | }, 1978 | "node_modules/exit": { 1979 | "version": "0.1.2", 1980 | "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", 1981 | "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", 1982 | "dev": true, 1983 | "engines": { 1984 | "node": ">= 0.8.0" 1985 | } 1986 | }, 1987 | "node_modules/expect": { 1988 | "version": "29.7.0", 1989 | "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", 1990 | "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", 1991 | "dev": true, 1992 | "dependencies": { 1993 | "@jest/expect-utils": "^29.7.0", 1994 | "jest-get-type": "^29.6.3", 1995 | "jest-matcher-utils": "^29.7.0", 1996 | "jest-message-util": "^29.7.0", 1997 | "jest-util": "^29.7.0" 1998 | }, 1999 | "engines": { 2000 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2001 | } 2002 | }, 2003 | "node_modules/express": { 2004 | "version": "5.0.1", 2005 | "resolved": "https://registry.npmjs.org/express/-/express-5.0.1.tgz", 2006 | "integrity": "sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==", 2007 | "dependencies": { 2008 | "accepts": "^2.0.0", 2009 | "body-parser": "^2.0.1", 2010 | "content-disposition": "^1.0.0", 2011 | "content-type": "~1.0.4", 2012 | "cookie": "0.7.1", 2013 | "cookie-signature": "^1.2.1", 2014 | "debug": "4.3.6", 2015 | "depd": "2.0.0", 2016 | "encodeurl": "~2.0.0", 2017 | "escape-html": "~1.0.3", 2018 | "etag": "~1.8.1", 2019 | "finalhandler": "^2.0.0", 2020 | "fresh": "2.0.0", 2021 | "http-errors": "2.0.0", 2022 | "merge-descriptors": "^2.0.0", 2023 | "methods": "~1.1.2", 2024 | "mime-types": "^3.0.0", 2025 | "on-finished": "2.4.1", 2026 | "once": "1.4.0", 2027 | "parseurl": "~1.3.3", 2028 | "proxy-addr": "~2.0.7", 2029 | "qs": "6.13.0", 2030 | "range-parser": "~1.2.1", 2031 | "router": "^2.0.0", 2032 | "safe-buffer": "5.2.1", 2033 | "send": "^1.1.0", 2034 | "serve-static": "^2.1.0", 2035 | "setprototypeof": "1.2.0", 2036 | "statuses": "2.0.1", 2037 | "type-is": "^2.0.0", 2038 | "utils-merge": "1.0.1", 2039 | "vary": "~1.1.2" 2040 | }, 2041 | "engines": { 2042 | "node": ">= 18" 2043 | } 2044 | }, 2045 | "node_modules/express-rate-limit": { 2046 | "version": "7.5.0", 2047 | "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.0.tgz", 2048 | "integrity": "sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==", 2049 | "engines": { 2050 | "node": ">= 16" 2051 | }, 2052 | "funding": { 2053 | "url": "https://github.com/sponsors/express-rate-limit" 2054 | }, 2055 | "peerDependencies": { 2056 | "express": "^4.11 || 5 || ^5.0.0-beta.1" 2057 | } 2058 | }, 2059 | "node_modules/fast-json-stable-stringify": { 2060 | "version": "2.1.0", 2061 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 2062 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 2063 | "dev": true 2064 | }, 2065 | "node_modules/fb-watchman": { 2066 | "version": "2.0.2", 2067 | "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", 2068 | "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", 2069 | "dev": true, 2070 | "dependencies": { 2071 | "bser": "2.1.1" 2072 | } 2073 | }, 2074 | "node_modules/filelist": { 2075 | "version": "1.0.4", 2076 | "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", 2077 | "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", 2078 | "dev": true, 2079 | "dependencies": { 2080 | "minimatch": "^5.0.1" 2081 | } 2082 | }, 2083 | "node_modules/filelist/node_modules/brace-expansion": { 2084 | "version": "2.0.1", 2085 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 2086 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 2087 | "dev": true, 2088 | "dependencies": { 2089 | "balanced-match": "^1.0.0" 2090 | } 2091 | }, 2092 | "node_modules/filelist/node_modules/minimatch": { 2093 | "version": "5.1.6", 2094 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 2095 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 2096 | "dev": true, 2097 | "dependencies": { 2098 | "brace-expansion": "^2.0.1" 2099 | }, 2100 | "engines": { 2101 | "node": ">=10" 2102 | } 2103 | }, 2104 | "node_modules/fill-range": { 2105 | "version": "7.1.1", 2106 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 2107 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 2108 | "dev": true, 2109 | "dependencies": { 2110 | "to-regex-range": "^5.0.1" 2111 | }, 2112 | "engines": { 2113 | "node": ">=8" 2114 | } 2115 | }, 2116 | "node_modules/finalhandler": { 2117 | "version": "2.1.0", 2118 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", 2119 | "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", 2120 | "dependencies": { 2121 | "debug": "^4.4.0", 2122 | "encodeurl": "^2.0.0", 2123 | "escape-html": "^1.0.3", 2124 | "on-finished": "^2.4.1", 2125 | "parseurl": "^1.3.3", 2126 | "statuses": "^2.0.1" 2127 | }, 2128 | "engines": { 2129 | "node": ">= 0.8" 2130 | } 2131 | }, 2132 | "node_modules/finalhandler/node_modules/debug": { 2133 | "version": "4.4.0", 2134 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 2135 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 2136 | "dependencies": { 2137 | "ms": "^2.1.3" 2138 | }, 2139 | "engines": { 2140 | "node": ">=6.0" 2141 | }, 2142 | "peerDependenciesMeta": { 2143 | "supports-color": { 2144 | "optional": true 2145 | } 2146 | } 2147 | }, 2148 | "node_modules/finalhandler/node_modules/ms": { 2149 | "version": "2.1.3", 2150 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2151 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 2152 | }, 2153 | "node_modules/find-up": { 2154 | "version": "4.1.0", 2155 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 2156 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 2157 | "dev": true, 2158 | "dependencies": { 2159 | "locate-path": "^5.0.0", 2160 | "path-exists": "^4.0.0" 2161 | }, 2162 | "engines": { 2163 | "node": ">=8" 2164 | } 2165 | }, 2166 | "node_modules/foreground-child": { 2167 | "version": "3.3.1", 2168 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", 2169 | "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", 2170 | "dev": true, 2171 | "dependencies": { 2172 | "cross-spawn": "^7.0.6", 2173 | "signal-exit": "^4.0.1" 2174 | }, 2175 | "engines": { 2176 | "node": ">=14" 2177 | }, 2178 | "funding": { 2179 | "url": "https://github.com/sponsors/isaacs" 2180 | } 2181 | }, 2182 | "node_modules/foreground-child/node_modules/signal-exit": { 2183 | "version": "4.1.0", 2184 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 2185 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 2186 | "dev": true, 2187 | "engines": { 2188 | "node": ">=14" 2189 | }, 2190 | "funding": { 2191 | "url": "https://github.com/sponsors/isaacs" 2192 | } 2193 | }, 2194 | "node_modules/forwarded": { 2195 | "version": "0.2.0", 2196 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 2197 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 2198 | "engines": { 2199 | "node": ">= 0.6" 2200 | } 2201 | }, 2202 | "node_modules/fresh": { 2203 | "version": "2.0.0", 2204 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", 2205 | "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", 2206 | "engines": { 2207 | "node": ">= 0.8" 2208 | } 2209 | }, 2210 | "node_modules/fs.realpath": { 2211 | "version": "1.0.0", 2212 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 2213 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 2214 | "dev": true 2215 | }, 2216 | "node_modules/fsevents": { 2217 | "version": "2.3.3", 2218 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 2219 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 2220 | "dev": true, 2221 | "hasInstallScript": true, 2222 | "optional": true, 2223 | "os": [ 2224 | "darwin" 2225 | ], 2226 | "engines": { 2227 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2228 | } 2229 | }, 2230 | "node_modules/function-bind": { 2231 | "version": "1.1.2", 2232 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 2233 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 2234 | "funding": { 2235 | "url": "https://github.com/sponsors/ljharb" 2236 | } 2237 | }, 2238 | "node_modules/gensync": { 2239 | "version": "1.0.0-beta.2", 2240 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 2241 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 2242 | "dev": true, 2243 | "engines": { 2244 | "node": ">=6.9.0" 2245 | } 2246 | }, 2247 | "node_modules/get-caller-file": { 2248 | "version": "2.0.5", 2249 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 2250 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 2251 | "dev": true, 2252 | "engines": { 2253 | "node": "6.* || 8.* || >= 10.*" 2254 | } 2255 | }, 2256 | "node_modules/get-intrinsic": { 2257 | "version": "1.3.0", 2258 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", 2259 | "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", 2260 | "dependencies": { 2261 | "call-bind-apply-helpers": "^1.0.2", 2262 | "es-define-property": "^1.0.1", 2263 | "es-errors": "^1.3.0", 2264 | "es-object-atoms": "^1.1.1", 2265 | "function-bind": "^1.1.2", 2266 | "get-proto": "^1.0.1", 2267 | "gopd": "^1.2.0", 2268 | "has-symbols": "^1.1.0", 2269 | "hasown": "^2.0.2", 2270 | "math-intrinsics": "^1.1.0" 2271 | }, 2272 | "engines": { 2273 | "node": ">= 0.4" 2274 | }, 2275 | "funding": { 2276 | "url": "https://github.com/sponsors/ljharb" 2277 | } 2278 | }, 2279 | "node_modules/get-package-type": { 2280 | "version": "0.1.0", 2281 | "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", 2282 | "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", 2283 | "dev": true, 2284 | "engines": { 2285 | "node": ">=8.0.0" 2286 | } 2287 | }, 2288 | "node_modules/get-proto": { 2289 | "version": "1.0.1", 2290 | "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", 2291 | "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", 2292 | "dependencies": { 2293 | "dunder-proto": "^1.0.1", 2294 | "es-object-atoms": "^1.0.0" 2295 | }, 2296 | "engines": { 2297 | "node": ">= 0.4" 2298 | } 2299 | }, 2300 | "node_modules/get-stream": { 2301 | "version": "6.0.1", 2302 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 2303 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 2304 | "dev": true, 2305 | "engines": { 2306 | "node": ">=10" 2307 | }, 2308 | "funding": { 2309 | "url": "https://github.com/sponsors/sindresorhus" 2310 | } 2311 | }, 2312 | "node_modules/glob": { 2313 | "version": "7.2.3", 2314 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 2315 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 2316 | "deprecated": "Glob versions prior to v9 are no longer supported", 2317 | "dev": true, 2318 | "dependencies": { 2319 | "fs.realpath": "^1.0.0", 2320 | "inflight": "^1.0.4", 2321 | "inherits": "2", 2322 | "minimatch": "^3.1.1", 2323 | "once": "^1.3.0", 2324 | "path-is-absolute": "^1.0.0" 2325 | }, 2326 | "engines": { 2327 | "node": "*" 2328 | }, 2329 | "funding": { 2330 | "url": "https://github.com/sponsors/isaacs" 2331 | } 2332 | }, 2333 | "node_modules/globals": { 2334 | "version": "11.12.0", 2335 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 2336 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 2337 | "dev": true, 2338 | "engines": { 2339 | "node": ">=4" 2340 | } 2341 | }, 2342 | "node_modules/gopd": { 2343 | "version": "1.2.0", 2344 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", 2345 | "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", 2346 | "engines": { 2347 | "node": ">= 0.4" 2348 | }, 2349 | "funding": { 2350 | "url": "https://github.com/sponsors/ljharb" 2351 | } 2352 | }, 2353 | "node_modules/graceful-fs": { 2354 | "version": "4.2.11", 2355 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 2356 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 2357 | "dev": true 2358 | }, 2359 | "node_modules/has-flag": { 2360 | "version": "4.0.0", 2361 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2362 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2363 | "dev": true, 2364 | "engines": { 2365 | "node": ">=8" 2366 | } 2367 | }, 2368 | "node_modules/has-symbols": { 2369 | "version": "1.1.0", 2370 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", 2371 | "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", 2372 | "engines": { 2373 | "node": ">= 0.4" 2374 | }, 2375 | "funding": { 2376 | "url": "https://github.com/sponsors/ljharb" 2377 | } 2378 | }, 2379 | "node_modules/hasown": { 2380 | "version": "2.0.2", 2381 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 2382 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 2383 | "dependencies": { 2384 | "function-bind": "^1.1.2" 2385 | }, 2386 | "engines": { 2387 | "node": ">= 0.4" 2388 | } 2389 | }, 2390 | "node_modules/html-escaper": { 2391 | "version": "2.0.2", 2392 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 2393 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 2394 | "dev": true 2395 | }, 2396 | "node_modules/http-errors": { 2397 | "version": "2.0.0", 2398 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 2399 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 2400 | "dependencies": { 2401 | "depd": "2.0.0", 2402 | "inherits": "2.0.4", 2403 | "setprototypeof": "1.2.0", 2404 | "statuses": "2.0.1", 2405 | "toidentifier": "1.0.1" 2406 | }, 2407 | "engines": { 2408 | "node": ">= 0.8" 2409 | } 2410 | }, 2411 | "node_modules/human-signals": { 2412 | "version": "2.1.0", 2413 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 2414 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 2415 | "dev": true, 2416 | "engines": { 2417 | "node": ">=10.17.0" 2418 | } 2419 | }, 2420 | "node_modules/iconv-lite": { 2421 | "version": "0.5.2", 2422 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", 2423 | "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", 2424 | "dependencies": { 2425 | "safer-buffer": ">= 2.1.2 < 3" 2426 | }, 2427 | "engines": { 2428 | "node": ">=0.10.0" 2429 | } 2430 | }, 2431 | "node_modules/import-local": { 2432 | "version": "3.2.0", 2433 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", 2434 | "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", 2435 | "dev": true, 2436 | "dependencies": { 2437 | "pkg-dir": "^4.2.0", 2438 | "resolve-cwd": "^3.0.0" 2439 | }, 2440 | "bin": { 2441 | "import-local-fixture": "fixtures/cli.js" 2442 | }, 2443 | "engines": { 2444 | "node": ">=8" 2445 | }, 2446 | "funding": { 2447 | "url": "https://github.com/sponsors/sindresorhus" 2448 | } 2449 | }, 2450 | "node_modules/imurmurhash": { 2451 | "version": "0.1.4", 2452 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2453 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 2454 | "dev": true, 2455 | "engines": { 2456 | "node": ">=0.8.19" 2457 | } 2458 | }, 2459 | "node_modules/inflight": { 2460 | "version": "1.0.6", 2461 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2462 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 2463 | "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.", 2464 | "dev": true, 2465 | "dependencies": { 2466 | "once": "^1.3.0", 2467 | "wrappy": "1" 2468 | } 2469 | }, 2470 | "node_modules/inherits": { 2471 | "version": "2.0.4", 2472 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2473 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 2474 | }, 2475 | "node_modules/interpret": { 2476 | "version": "1.4.0", 2477 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", 2478 | "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", 2479 | "dev": true, 2480 | "engines": { 2481 | "node": ">= 0.10" 2482 | } 2483 | }, 2484 | "node_modules/ipaddr.js": { 2485 | "version": "1.9.1", 2486 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 2487 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 2488 | "engines": { 2489 | "node": ">= 0.10" 2490 | } 2491 | }, 2492 | "node_modules/is-arrayish": { 2493 | "version": "0.2.1", 2494 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 2495 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", 2496 | "dev": true 2497 | }, 2498 | "node_modules/is-core-module": { 2499 | "version": "2.16.1", 2500 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", 2501 | "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", 2502 | "dev": true, 2503 | "dependencies": { 2504 | "hasown": "^2.0.2" 2505 | }, 2506 | "engines": { 2507 | "node": ">= 0.4" 2508 | }, 2509 | "funding": { 2510 | "url": "https://github.com/sponsors/ljharb" 2511 | } 2512 | }, 2513 | "node_modules/is-fullwidth-code-point": { 2514 | "version": "3.0.0", 2515 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2516 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2517 | "dev": true, 2518 | "engines": { 2519 | "node": ">=8" 2520 | } 2521 | }, 2522 | "node_modules/is-generator-fn": { 2523 | "version": "2.1.0", 2524 | "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", 2525 | "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", 2526 | "dev": true, 2527 | "engines": { 2528 | "node": ">=6" 2529 | } 2530 | }, 2531 | "node_modules/is-number": { 2532 | "version": "7.0.0", 2533 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2534 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2535 | "dev": true, 2536 | "engines": { 2537 | "node": ">=0.12.0" 2538 | } 2539 | }, 2540 | "node_modules/is-promise": { 2541 | "version": "4.0.0", 2542 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", 2543 | "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" 2544 | }, 2545 | "node_modules/is-stream": { 2546 | "version": "2.0.1", 2547 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 2548 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 2549 | "dev": true, 2550 | "engines": { 2551 | "node": ">=8" 2552 | }, 2553 | "funding": { 2554 | "url": "https://github.com/sponsors/sindresorhus" 2555 | } 2556 | }, 2557 | "node_modules/isexe": { 2558 | "version": "2.0.0", 2559 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2560 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 2561 | "dev": true 2562 | }, 2563 | "node_modules/istanbul-lib-coverage": { 2564 | "version": "3.2.2", 2565 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", 2566 | "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", 2567 | "dev": true, 2568 | "engines": { 2569 | "node": ">=8" 2570 | } 2571 | }, 2572 | "node_modules/istanbul-lib-instrument": { 2573 | "version": "6.0.3", 2574 | "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", 2575 | "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", 2576 | "dev": true, 2577 | "dependencies": { 2578 | "@babel/core": "^7.23.9", 2579 | "@babel/parser": "^7.23.9", 2580 | "@istanbuljs/schema": "^0.1.3", 2581 | "istanbul-lib-coverage": "^3.2.0", 2582 | "semver": "^7.5.4" 2583 | }, 2584 | "engines": { 2585 | "node": ">=10" 2586 | } 2587 | }, 2588 | "node_modules/istanbul-lib-instrument/node_modules/semver": { 2589 | "version": "7.7.1", 2590 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", 2591 | "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", 2592 | "dev": true, 2593 | "bin": { 2594 | "semver": "bin/semver.js" 2595 | }, 2596 | "engines": { 2597 | "node": ">=10" 2598 | } 2599 | }, 2600 | "node_modules/istanbul-lib-report": { 2601 | "version": "3.0.1", 2602 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", 2603 | "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", 2604 | "dev": true, 2605 | "dependencies": { 2606 | "istanbul-lib-coverage": "^3.0.0", 2607 | "make-dir": "^4.0.0", 2608 | "supports-color": "^7.1.0" 2609 | }, 2610 | "engines": { 2611 | "node": ">=10" 2612 | } 2613 | }, 2614 | "node_modules/istanbul-lib-source-maps": { 2615 | "version": "4.0.1", 2616 | "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", 2617 | "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", 2618 | "dev": true, 2619 | "dependencies": { 2620 | "debug": "^4.1.1", 2621 | "istanbul-lib-coverage": "^3.0.0", 2622 | "source-map": "^0.6.1" 2623 | }, 2624 | "engines": { 2625 | "node": ">=10" 2626 | } 2627 | }, 2628 | "node_modules/istanbul-reports": { 2629 | "version": "3.1.7", 2630 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", 2631 | "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", 2632 | "dev": true, 2633 | "dependencies": { 2634 | "html-escaper": "^2.0.0", 2635 | "istanbul-lib-report": "^3.0.0" 2636 | }, 2637 | "engines": { 2638 | "node": ">=8" 2639 | } 2640 | }, 2641 | "node_modules/jackspeak": { 2642 | "version": "4.1.0", 2643 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz", 2644 | "integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==", 2645 | "dev": true, 2646 | "dependencies": { 2647 | "@isaacs/cliui": "^8.0.2" 2648 | }, 2649 | "engines": { 2650 | "node": "20 || >=22" 2651 | }, 2652 | "funding": { 2653 | "url": "https://github.com/sponsors/isaacs" 2654 | } 2655 | }, 2656 | "node_modules/jake": { 2657 | "version": "10.9.2", 2658 | "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", 2659 | "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", 2660 | "dev": true, 2661 | "dependencies": { 2662 | "async": "^3.2.3", 2663 | "chalk": "^4.0.2", 2664 | "filelist": "^1.0.4", 2665 | "minimatch": "^3.1.2" 2666 | }, 2667 | "bin": { 2668 | "jake": "bin/cli.js" 2669 | }, 2670 | "engines": { 2671 | "node": ">=10" 2672 | } 2673 | }, 2674 | "node_modules/jest": { 2675 | "version": "29.7.0", 2676 | "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", 2677 | "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", 2678 | "dev": true, 2679 | "dependencies": { 2680 | "@jest/core": "^29.7.0", 2681 | "@jest/types": "^29.6.3", 2682 | "import-local": "^3.0.2", 2683 | "jest-cli": "^29.7.0" 2684 | }, 2685 | "bin": { 2686 | "jest": "bin/jest.js" 2687 | }, 2688 | "engines": { 2689 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2690 | }, 2691 | "peerDependencies": { 2692 | "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" 2693 | }, 2694 | "peerDependenciesMeta": { 2695 | "node-notifier": { 2696 | "optional": true 2697 | } 2698 | } 2699 | }, 2700 | "node_modules/jest-changed-files": { 2701 | "version": "29.7.0", 2702 | "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", 2703 | "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", 2704 | "dev": true, 2705 | "dependencies": { 2706 | "execa": "^5.0.0", 2707 | "jest-util": "^29.7.0", 2708 | "p-limit": "^3.1.0" 2709 | }, 2710 | "engines": { 2711 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2712 | } 2713 | }, 2714 | "node_modules/jest-circus": { 2715 | "version": "29.7.0", 2716 | "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", 2717 | "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", 2718 | "dev": true, 2719 | "dependencies": { 2720 | "@jest/environment": "^29.7.0", 2721 | "@jest/expect": "^29.7.0", 2722 | "@jest/test-result": "^29.7.0", 2723 | "@jest/types": "^29.6.3", 2724 | "@types/node": "*", 2725 | "chalk": "^4.0.0", 2726 | "co": "^4.6.0", 2727 | "dedent": "^1.0.0", 2728 | "is-generator-fn": "^2.0.0", 2729 | "jest-each": "^29.7.0", 2730 | "jest-matcher-utils": "^29.7.0", 2731 | "jest-message-util": "^29.7.0", 2732 | "jest-runtime": "^29.7.0", 2733 | "jest-snapshot": "^29.7.0", 2734 | "jest-util": "^29.7.0", 2735 | "p-limit": "^3.1.0", 2736 | "pretty-format": "^29.7.0", 2737 | "pure-rand": "^6.0.0", 2738 | "slash": "^3.0.0", 2739 | "stack-utils": "^2.0.3" 2740 | }, 2741 | "engines": { 2742 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2743 | } 2744 | }, 2745 | "node_modules/jest-cli": { 2746 | "version": "29.7.0", 2747 | "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", 2748 | "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", 2749 | "dev": true, 2750 | "dependencies": { 2751 | "@jest/core": "^29.7.0", 2752 | "@jest/test-result": "^29.7.0", 2753 | "@jest/types": "^29.6.3", 2754 | "chalk": "^4.0.0", 2755 | "create-jest": "^29.7.0", 2756 | "exit": "^0.1.2", 2757 | "import-local": "^3.0.2", 2758 | "jest-config": "^29.7.0", 2759 | "jest-util": "^29.7.0", 2760 | "jest-validate": "^29.7.0", 2761 | "yargs": "^17.3.1" 2762 | }, 2763 | "bin": { 2764 | "jest": "bin/jest.js" 2765 | }, 2766 | "engines": { 2767 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2768 | }, 2769 | "peerDependencies": { 2770 | "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" 2771 | }, 2772 | "peerDependenciesMeta": { 2773 | "node-notifier": { 2774 | "optional": true 2775 | } 2776 | } 2777 | }, 2778 | "node_modules/jest-config": { 2779 | "version": "29.7.0", 2780 | "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", 2781 | "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", 2782 | "dev": true, 2783 | "dependencies": { 2784 | "@babel/core": "^7.11.6", 2785 | "@jest/test-sequencer": "^29.7.0", 2786 | "@jest/types": "^29.6.3", 2787 | "babel-jest": "^29.7.0", 2788 | "chalk": "^4.0.0", 2789 | "ci-info": "^3.2.0", 2790 | "deepmerge": "^4.2.2", 2791 | "glob": "^7.1.3", 2792 | "graceful-fs": "^4.2.9", 2793 | "jest-circus": "^29.7.0", 2794 | "jest-environment-node": "^29.7.0", 2795 | "jest-get-type": "^29.6.3", 2796 | "jest-regex-util": "^29.6.3", 2797 | "jest-resolve": "^29.7.0", 2798 | "jest-runner": "^29.7.0", 2799 | "jest-util": "^29.7.0", 2800 | "jest-validate": "^29.7.0", 2801 | "micromatch": "^4.0.4", 2802 | "parse-json": "^5.2.0", 2803 | "pretty-format": "^29.7.0", 2804 | "slash": "^3.0.0", 2805 | "strip-json-comments": "^3.1.1" 2806 | }, 2807 | "engines": { 2808 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2809 | }, 2810 | "peerDependencies": { 2811 | "@types/node": "*", 2812 | "ts-node": ">=9.0.0" 2813 | }, 2814 | "peerDependenciesMeta": { 2815 | "@types/node": { 2816 | "optional": true 2817 | }, 2818 | "ts-node": { 2819 | "optional": true 2820 | } 2821 | } 2822 | }, 2823 | "node_modules/jest-diff": { 2824 | "version": "29.7.0", 2825 | "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", 2826 | "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", 2827 | "dev": true, 2828 | "dependencies": { 2829 | "chalk": "^4.0.0", 2830 | "diff-sequences": "^29.6.3", 2831 | "jest-get-type": "^29.6.3", 2832 | "pretty-format": "^29.7.0" 2833 | }, 2834 | "engines": { 2835 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2836 | } 2837 | }, 2838 | "node_modules/jest-docblock": { 2839 | "version": "29.7.0", 2840 | "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", 2841 | "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", 2842 | "dev": true, 2843 | "dependencies": { 2844 | "detect-newline": "^3.0.0" 2845 | }, 2846 | "engines": { 2847 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2848 | } 2849 | }, 2850 | "node_modules/jest-each": { 2851 | "version": "29.7.0", 2852 | "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", 2853 | "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", 2854 | "dev": true, 2855 | "dependencies": { 2856 | "@jest/types": "^29.6.3", 2857 | "chalk": "^4.0.0", 2858 | "jest-get-type": "^29.6.3", 2859 | "jest-util": "^29.7.0", 2860 | "pretty-format": "^29.7.0" 2861 | }, 2862 | "engines": { 2863 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2864 | } 2865 | }, 2866 | "node_modules/jest-environment-node": { 2867 | "version": "29.7.0", 2868 | "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", 2869 | "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", 2870 | "dev": true, 2871 | "dependencies": { 2872 | "@jest/environment": "^29.7.0", 2873 | "@jest/fake-timers": "^29.7.0", 2874 | "@jest/types": "^29.6.3", 2875 | "@types/node": "*", 2876 | "jest-mock": "^29.7.0", 2877 | "jest-util": "^29.7.0" 2878 | }, 2879 | "engines": { 2880 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2881 | } 2882 | }, 2883 | "node_modules/jest-get-type": { 2884 | "version": "29.6.3", 2885 | "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", 2886 | "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", 2887 | "dev": true, 2888 | "engines": { 2889 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2890 | } 2891 | }, 2892 | "node_modules/jest-haste-map": { 2893 | "version": "29.7.0", 2894 | "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", 2895 | "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", 2896 | "dev": true, 2897 | "dependencies": { 2898 | "@jest/types": "^29.6.3", 2899 | "@types/graceful-fs": "^4.1.3", 2900 | "@types/node": "*", 2901 | "anymatch": "^3.0.3", 2902 | "fb-watchman": "^2.0.0", 2903 | "graceful-fs": "^4.2.9", 2904 | "jest-regex-util": "^29.6.3", 2905 | "jest-util": "^29.7.0", 2906 | "jest-worker": "^29.7.0", 2907 | "micromatch": "^4.0.4", 2908 | "walker": "^1.0.8" 2909 | }, 2910 | "engines": { 2911 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2912 | }, 2913 | "optionalDependencies": { 2914 | "fsevents": "^2.3.2" 2915 | } 2916 | }, 2917 | "node_modules/jest-leak-detector": { 2918 | "version": "29.7.0", 2919 | "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", 2920 | "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", 2921 | "dev": true, 2922 | "dependencies": { 2923 | "jest-get-type": "^29.6.3", 2924 | "pretty-format": "^29.7.0" 2925 | }, 2926 | "engines": { 2927 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2928 | } 2929 | }, 2930 | "node_modules/jest-matcher-utils": { 2931 | "version": "29.7.0", 2932 | "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", 2933 | "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", 2934 | "dev": true, 2935 | "dependencies": { 2936 | "chalk": "^4.0.0", 2937 | "jest-diff": "^29.7.0", 2938 | "jest-get-type": "^29.6.3", 2939 | "pretty-format": "^29.7.0" 2940 | }, 2941 | "engines": { 2942 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2943 | } 2944 | }, 2945 | "node_modules/jest-message-util": { 2946 | "version": "29.7.0", 2947 | "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", 2948 | "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", 2949 | "dev": true, 2950 | "dependencies": { 2951 | "@babel/code-frame": "^7.12.13", 2952 | "@jest/types": "^29.6.3", 2953 | "@types/stack-utils": "^2.0.0", 2954 | "chalk": "^4.0.0", 2955 | "graceful-fs": "^4.2.9", 2956 | "micromatch": "^4.0.4", 2957 | "pretty-format": "^29.7.0", 2958 | "slash": "^3.0.0", 2959 | "stack-utils": "^2.0.3" 2960 | }, 2961 | "engines": { 2962 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2963 | } 2964 | }, 2965 | "node_modules/jest-mock": { 2966 | "version": "29.7.0", 2967 | "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", 2968 | "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", 2969 | "dev": true, 2970 | "dependencies": { 2971 | "@jest/types": "^29.6.3", 2972 | "@types/node": "*", 2973 | "jest-util": "^29.7.0" 2974 | }, 2975 | "engines": { 2976 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2977 | } 2978 | }, 2979 | "node_modules/jest-pnp-resolver": { 2980 | "version": "1.2.3", 2981 | "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", 2982 | "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", 2983 | "dev": true, 2984 | "engines": { 2985 | "node": ">=6" 2986 | }, 2987 | "peerDependencies": { 2988 | "jest-resolve": "*" 2989 | }, 2990 | "peerDependenciesMeta": { 2991 | "jest-resolve": { 2992 | "optional": true 2993 | } 2994 | } 2995 | }, 2996 | "node_modules/jest-regex-util": { 2997 | "version": "29.6.3", 2998 | "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", 2999 | "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", 3000 | "dev": true, 3001 | "engines": { 3002 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3003 | } 3004 | }, 3005 | "node_modules/jest-resolve": { 3006 | "version": "29.7.0", 3007 | "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", 3008 | "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", 3009 | "dev": true, 3010 | "dependencies": { 3011 | "chalk": "^4.0.0", 3012 | "graceful-fs": "^4.2.9", 3013 | "jest-haste-map": "^29.7.0", 3014 | "jest-pnp-resolver": "^1.2.2", 3015 | "jest-util": "^29.7.0", 3016 | "jest-validate": "^29.7.0", 3017 | "resolve": "^1.20.0", 3018 | "resolve.exports": "^2.0.0", 3019 | "slash": "^3.0.0" 3020 | }, 3021 | "engines": { 3022 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3023 | } 3024 | }, 3025 | "node_modules/jest-resolve-dependencies": { 3026 | "version": "29.7.0", 3027 | "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", 3028 | "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", 3029 | "dev": true, 3030 | "dependencies": { 3031 | "jest-regex-util": "^29.6.3", 3032 | "jest-snapshot": "^29.7.0" 3033 | }, 3034 | "engines": { 3035 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3036 | } 3037 | }, 3038 | "node_modules/jest-runner": { 3039 | "version": "29.7.0", 3040 | "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", 3041 | "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", 3042 | "dev": true, 3043 | "dependencies": { 3044 | "@jest/console": "^29.7.0", 3045 | "@jest/environment": "^29.7.0", 3046 | "@jest/test-result": "^29.7.0", 3047 | "@jest/transform": "^29.7.0", 3048 | "@jest/types": "^29.6.3", 3049 | "@types/node": "*", 3050 | "chalk": "^4.0.0", 3051 | "emittery": "^0.13.1", 3052 | "graceful-fs": "^4.2.9", 3053 | "jest-docblock": "^29.7.0", 3054 | "jest-environment-node": "^29.7.0", 3055 | "jest-haste-map": "^29.7.0", 3056 | "jest-leak-detector": "^29.7.0", 3057 | "jest-message-util": "^29.7.0", 3058 | "jest-resolve": "^29.7.0", 3059 | "jest-runtime": "^29.7.0", 3060 | "jest-util": "^29.7.0", 3061 | "jest-watcher": "^29.7.0", 3062 | "jest-worker": "^29.7.0", 3063 | "p-limit": "^3.1.0", 3064 | "source-map-support": "0.5.13" 3065 | }, 3066 | "engines": { 3067 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3068 | } 3069 | }, 3070 | "node_modules/jest-runtime": { 3071 | "version": "29.7.0", 3072 | "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", 3073 | "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", 3074 | "dev": true, 3075 | "dependencies": { 3076 | "@jest/environment": "^29.7.0", 3077 | "@jest/fake-timers": "^29.7.0", 3078 | "@jest/globals": "^29.7.0", 3079 | "@jest/source-map": "^29.6.3", 3080 | "@jest/test-result": "^29.7.0", 3081 | "@jest/transform": "^29.7.0", 3082 | "@jest/types": "^29.6.3", 3083 | "@types/node": "*", 3084 | "chalk": "^4.0.0", 3085 | "cjs-module-lexer": "^1.0.0", 3086 | "collect-v8-coverage": "^1.0.0", 3087 | "glob": "^7.1.3", 3088 | "graceful-fs": "^4.2.9", 3089 | "jest-haste-map": "^29.7.0", 3090 | "jest-message-util": "^29.7.0", 3091 | "jest-mock": "^29.7.0", 3092 | "jest-regex-util": "^29.6.3", 3093 | "jest-resolve": "^29.7.0", 3094 | "jest-snapshot": "^29.7.0", 3095 | "jest-util": "^29.7.0", 3096 | "slash": "^3.0.0", 3097 | "strip-bom": "^4.0.0" 3098 | }, 3099 | "engines": { 3100 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3101 | } 3102 | }, 3103 | "node_modules/jest-snapshot": { 3104 | "version": "29.7.0", 3105 | "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", 3106 | "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", 3107 | "dev": true, 3108 | "dependencies": { 3109 | "@babel/core": "^7.11.6", 3110 | "@babel/generator": "^7.7.2", 3111 | "@babel/plugin-syntax-jsx": "^7.7.2", 3112 | "@babel/plugin-syntax-typescript": "^7.7.2", 3113 | "@babel/types": "^7.3.3", 3114 | "@jest/expect-utils": "^29.7.0", 3115 | "@jest/transform": "^29.7.0", 3116 | "@jest/types": "^29.6.3", 3117 | "babel-preset-current-node-syntax": "^1.0.0", 3118 | "chalk": "^4.0.0", 3119 | "expect": "^29.7.0", 3120 | "graceful-fs": "^4.2.9", 3121 | "jest-diff": "^29.7.0", 3122 | "jest-get-type": "^29.6.3", 3123 | "jest-matcher-utils": "^29.7.0", 3124 | "jest-message-util": "^29.7.0", 3125 | "jest-util": "^29.7.0", 3126 | "natural-compare": "^1.4.0", 3127 | "pretty-format": "^29.7.0", 3128 | "semver": "^7.5.3" 3129 | }, 3130 | "engines": { 3131 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3132 | } 3133 | }, 3134 | "node_modules/jest-snapshot/node_modules/semver": { 3135 | "version": "7.7.1", 3136 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", 3137 | "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", 3138 | "dev": true, 3139 | "bin": { 3140 | "semver": "bin/semver.js" 3141 | }, 3142 | "engines": { 3143 | "node": ">=10" 3144 | } 3145 | }, 3146 | "node_modules/jest-util": { 3147 | "version": "29.7.0", 3148 | "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", 3149 | "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", 3150 | "dev": true, 3151 | "dependencies": { 3152 | "@jest/types": "^29.6.3", 3153 | "@types/node": "*", 3154 | "chalk": "^4.0.0", 3155 | "ci-info": "^3.2.0", 3156 | "graceful-fs": "^4.2.9", 3157 | "picomatch": "^2.2.3" 3158 | }, 3159 | "engines": { 3160 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3161 | } 3162 | }, 3163 | "node_modules/jest-validate": { 3164 | "version": "29.7.0", 3165 | "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", 3166 | "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", 3167 | "dev": true, 3168 | "dependencies": { 3169 | "@jest/types": "^29.6.3", 3170 | "camelcase": "^6.2.0", 3171 | "chalk": "^4.0.0", 3172 | "jest-get-type": "^29.6.3", 3173 | "leven": "^3.1.0", 3174 | "pretty-format": "^29.7.0" 3175 | }, 3176 | "engines": { 3177 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3178 | } 3179 | }, 3180 | "node_modules/jest-validate/node_modules/camelcase": { 3181 | "version": "6.3.0", 3182 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 3183 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 3184 | "dev": true, 3185 | "engines": { 3186 | "node": ">=10" 3187 | }, 3188 | "funding": { 3189 | "url": "https://github.com/sponsors/sindresorhus" 3190 | } 3191 | }, 3192 | "node_modules/jest-watcher": { 3193 | "version": "29.7.0", 3194 | "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", 3195 | "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", 3196 | "dev": true, 3197 | "dependencies": { 3198 | "@jest/test-result": "^29.7.0", 3199 | "@jest/types": "^29.6.3", 3200 | "@types/node": "*", 3201 | "ansi-escapes": "^4.2.1", 3202 | "chalk": "^4.0.0", 3203 | "emittery": "^0.13.1", 3204 | "jest-util": "^29.7.0", 3205 | "string-length": "^4.0.1" 3206 | }, 3207 | "engines": { 3208 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3209 | } 3210 | }, 3211 | "node_modules/jest-worker": { 3212 | "version": "29.7.0", 3213 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", 3214 | "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", 3215 | "dev": true, 3216 | "dependencies": { 3217 | "@types/node": "*", 3218 | "jest-util": "^29.7.0", 3219 | "merge-stream": "^2.0.0", 3220 | "supports-color": "^8.0.0" 3221 | }, 3222 | "engines": { 3223 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3224 | } 3225 | }, 3226 | "node_modules/jest-worker/node_modules/supports-color": { 3227 | "version": "8.1.1", 3228 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 3229 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 3230 | "dev": true, 3231 | "dependencies": { 3232 | "has-flag": "^4.0.0" 3233 | }, 3234 | "engines": { 3235 | "node": ">=10" 3236 | }, 3237 | "funding": { 3238 | "url": "https://github.com/chalk/supports-color?sponsor=1" 3239 | } 3240 | }, 3241 | "node_modules/js-tokens": { 3242 | "version": "4.0.0", 3243 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 3244 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 3245 | "dev": true 3246 | }, 3247 | "node_modules/js-yaml": { 3248 | "version": "3.14.1", 3249 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 3250 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 3251 | "dev": true, 3252 | "dependencies": { 3253 | "argparse": "^1.0.7", 3254 | "esprima": "^4.0.0" 3255 | }, 3256 | "bin": { 3257 | "js-yaml": "bin/js-yaml.js" 3258 | } 3259 | }, 3260 | "node_modules/jsep": { 3261 | "version": "1.4.0", 3262 | "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.4.0.tgz", 3263 | "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", 3264 | "engines": { 3265 | "node": ">= 10.16.0" 3266 | } 3267 | }, 3268 | "node_modules/jsesc": { 3269 | "version": "3.1.0", 3270 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", 3271 | "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", 3272 | "dev": true, 3273 | "bin": { 3274 | "jsesc": "bin/jsesc" 3275 | }, 3276 | "engines": { 3277 | "node": ">=6" 3278 | } 3279 | }, 3280 | "node_modules/json-parse-even-better-errors": { 3281 | "version": "2.3.1", 3282 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 3283 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 3284 | "dev": true 3285 | }, 3286 | "node_modules/json5": { 3287 | "version": "2.2.3", 3288 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 3289 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 3290 | "dev": true, 3291 | "bin": { 3292 | "json5": "lib/cli.js" 3293 | }, 3294 | "engines": { 3295 | "node": ">=6" 3296 | } 3297 | }, 3298 | "node_modules/jsonpath-plus": { 3299 | "version": "10.3.0", 3300 | "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.3.0.tgz", 3301 | "integrity": "sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA==", 3302 | "dependencies": { 3303 | "@jsep-plugin/assignment": "^1.3.0", 3304 | "@jsep-plugin/regex": "^1.0.4", 3305 | "jsep": "^1.4.0" 3306 | }, 3307 | "bin": { 3308 | "jsonpath": "bin/jsonpath-cli.js", 3309 | "jsonpath-plus": "bin/jsonpath-cli.js" 3310 | }, 3311 | "engines": { 3312 | "node": ">=18.0.0" 3313 | } 3314 | }, 3315 | "node_modules/kleur": { 3316 | "version": "3.0.3", 3317 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", 3318 | "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", 3319 | "dev": true, 3320 | "engines": { 3321 | "node": ">=6" 3322 | } 3323 | }, 3324 | "node_modules/leven": { 3325 | "version": "3.1.0", 3326 | "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", 3327 | "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", 3328 | "dev": true, 3329 | "engines": { 3330 | "node": ">=6" 3331 | } 3332 | }, 3333 | "node_modules/lines-and-columns": { 3334 | "version": "1.2.4", 3335 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 3336 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 3337 | "dev": true 3338 | }, 3339 | "node_modules/locate-path": { 3340 | "version": "5.0.0", 3341 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 3342 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 3343 | "dev": true, 3344 | "dependencies": { 3345 | "p-locate": "^4.1.0" 3346 | }, 3347 | "engines": { 3348 | "node": ">=8" 3349 | } 3350 | }, 3351 | "node_modules/lodash.memoize": { 3352 | "version": "4.1.2", 3353 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", 3354 | "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", 3355 | "dev": true 3356 | }, 3357 | "node_modules/lru-cache": { 3358 | "version": "5.1.1", 3359 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 3360 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 3361 | "dev": true, 3362 | "dependencies": { 3363 | "yallist": "^3.0.2" 3364 | } 3365 | }, 3366 | "node_modules/make-dir": { 3367 | "version": "4.0.0", 3368 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", 3369 | "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", 3370 | "dev": true, 3371 | "dependencies": { 3372 | "semver": "^7.5.3" 3373 | }, 3374 | "engines": { 3375 | "node": ">=10" 3376 | }, 3377 | "funding": { 3378 | "url": "https://github.com/sponsors/sindresorhus" 3379 | } 3380 | }, 3381 | "node_modules/make-dir/node_modules/semver": { 3382 | "version": "7.7.1", 3383 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", 3384 | "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", 3385 | "dev": true, 3386 | "bin": { 3387 | "semver": "bin/semver.js" 3388 | }, 3389 | "engines": { 3390 | "node": ">=10" 3391 | } 3392 | }, 3393 | "node_modules/make-error": { 3394 | "version": "1.3.6", 3395 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 3396 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 3397 | "dev": true 3398 | }, 3399 | "node_modules/makeerror": { 3400 | "version": "1.0.12", 3401 | "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", 3402 | "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", 3403 | "dev": true, 3404 | "dependencies": { 3405 | "tmpl": "1.0.5" 3406 | } 3407 | }, 3408 | "node_modules/math-intrinsics": { 3409 | "version": "1.1.0", 3410 | "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", 3411 | "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", 3412 | "engines": { 3413 | "node": ">= 0.4" 3414 | } 3415 | }, 3416 | "node_modules/media-typer": { 3417 | "version": "1.1.0", 3418 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", 3419 | "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", 3420 | "engines": { 3421 | "node": ">= 0.8" 3422 | } 3423 | }, 3424 | "node_modules/merge-descriptors": { 3425 | "version": "2.0.0", 3426 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", 3427 | "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", 3428 | "engines": { 3429 | "node": ">=18" 3430 | }, 3431 | "funding": { 3432 | "url": "https://github.com/sponsors/sindresorhus" 3433 | } 3434 | }, 3435 | "node_modules/merge-stream": { 3436 | "version": "2.0.0", 3437 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 3438 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 3439 | "dev": true 3440 | }, 3441 | "node_modules/methods": { 3442 | "version": "1.1.2", 3443 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 3444 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", 3445 | "engines": { 3446 | "node": ">= 0.6" 3447 | } 3448 | }, 3449 | "node_modules/micromatch": { 3450 | "version": "4.0.8", 3451 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 3452 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 3453 | "dev": true, 3454 | "dependencies": { 3455 | "braces": "^3.0.3", 3456 | "picomatch": "^2.3.1" 3457 | }, 3458 | "engines": { 3459 | "node": ">=8.6" 3460 | } 3461 | }, 3462 | "node_modules/mime-db": { 3463 | "version": "1.54.0", 3464 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", 3465 | "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", 3466 | "engines": { 3467 | "node": ">= 0.6" 3468 | } 3469 | }, 3470 | "node_modules/mime-types": { 3471 | "version": "3.0.0", 3472 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.0.tgz", 3473 | "integrity": "sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==", 3474 | "dependencies": { 3475 | "mime-db": "^1.53.0" 3476 | }, 3477 | "engines": { 3478 | "node": ">= 0.6" 3479 | } 3480 | }, 3481 | "node_modules/mimic-fn": { 3482 | "version": "2.1.0", 3483 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 3484 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 3485 | "dev": true, 3486 | "engines": { 3487 | "node": ">=6" 3488 | } 3489 | }, 3490 | "node_modules/minimatch": { 3491 | "version": "3.1.2", 3492 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 3493 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 3494 | "dev": true, 3495 | "dependencies": { 3496 | "brace-expansion": "^1.1.7" 3497 | }, 3498 | "engines": { 3499 | "node": "*" 3500 | } 3501 | }, 3502 | "node_modules/minimist": { 3503 | "version": "1.2.8", 3504 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 3505 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 3506 | "dev": true, 3507 | "funding": { 3508 | "url": "https://github.com/sponsors/ljharb" 3509 | } 3510 | }, 3511 | "node_modules/minipass": { 3512 | "version": "7.1.2", 3513 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 3514 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 3515 | "dev": true, 3516 | "engines": { 3517 | "node": ">=16 || 14 >=14.17" 3518 | } 3519 | }, 3520 | "node_modules/ms": { 3521 | "version": "2.1.2", 3522 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3523 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 3524 | }, 3525 | "node_modules/natural-compare": { 3526 | "version": "1.4.0", 3527 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 3528 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 3529 | "dev": true 3530 | }, 3531 | "node_modules/negotiator": { 3532 | "version": "1.0.0", 3533 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", 3534 | "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", 3535 | "engines": { 3536 | "node": ">= 0.6" 3537 | } 3538 | }, 3539 | "node_modules/node-int64": { 3540 | "version": "0.4.0", 3541 | "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", 3542 | "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", 3543 | "dev": true 3544 | }, 3545 | "node_modules/node-releases": { 3546 | "version": "2.0.19", 3547 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", 3548 | "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", 3549 | "dev": true 3550 | }, 3551 | "node_modules/normalize-path": { 3552 | "version": "3.0.0", 3553 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 3554 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 3555 | "dev": true, 3556 | "engines": { 3557 | "node": ">=0.10.0" 3558 | } 3559 | }, 3560 | "node_modules/npm-run-path": { 3561 | "version": "4.0.1", 3562 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 3563 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 3564 | "dev": true, 3565 | "dependencies": { 3566 | "path-key": "^3.0.0" 3567 | }, 3568 | "engines": { 3569 | "node": ">=8" 3570 | } 3571 | }, 3572 | "node_modules/object-assign": { 3573 | "version": "4.1.1", 3574 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 3575 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 3576 | "engines": { 3577 | "node": ">=0.10.0" 3578 | } 3579 | }, 3580 | "node_modules/object-inspect": { 3581 | "version": "1.13.4", 3582 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", 3583 | "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", 3584 | "engines": { 3585 | "node": ">= 0.4" 3586 | }, 3587 | "funding": { 3588 | "url": "https://github.com/sponsors/ljharb" 3589 | } 3590 | }, 3591 | "node_modules/on-finished": { 3592 | "version": "2.4.1", 3593 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 3594 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 3595 | "dependencies": { 3596 | "ee-first": "1.1.1" 3597 | }, 3598 | "engines": { 3599 | "node": ">= 0.8" 3600 | } 3601 | }, 3602 | "node_modules/once": { 3603 | "version": "1.4.0", 3604 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3605 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 3606 | "dependencies": { 3607 | "wrappy": "1" 3608 | } 3609 | }, 3610 | "node_modules/onetime": { 3611 | "version": "5.1.2", 3612 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 3613 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 3614 | "dev": true, 3615 | "dependencies": { 3616 | "mimic-fn": "^2.1.0" 3617 | }, 3618 | "engines": { 3619 | "node": ">=6" 3620 | }, 3621 | "funding": { 3622 | "url": "https://github.com/sponsors/sindresorhus" 3623 | } 3624 | }, 3625 | "node_modules/p-limit": { 3626 | "version": "3.1.0", 3627 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 3628 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 3629 | "dev": true, 3630 | "dependencies": { 3631 | "yocto-queue": "^0.1.0" 3632 | }, 3633 | "engines": { 3634 | "node": ">=10" 3635 | }, 3636 | "funding": { 3637 | "url": "https://github.com/sponsors/sindresorhus" 3638 | } 3639 | }, 3640 | "node_modules/p-locate": { 3641 | "version": "4.1.0", 3642 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 3643 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 3644 | "dev": true, 3645 | "dependencies": { 3646 | "p-limit": "^2.2.0" 3647 | }, 3648 | "engines": { 3649 | "node": ">=8" 3650 | } 3651 | }, 3652 | "node_modules/p-locate/node_modules/p-limit": { 3653 | "version": "2.3.0", 3654 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 3655 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 3656 | "dev": true, 3657 | "dependencies": { 3658 | "p-try": "^2.0.0" 3659 | }, 3660 | "engines": { 3661 | "node": ">=6" 3662 | }, 3663 | "funding": { 3664 | "url": "https://github.com/sponsors/sindresorhus" 3665 | } 3666 | }, 3667 | "node_modules/p-try": { 3668 | "version": "2.2.0", 3669 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 3670 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 3671 | "dev": true, 3672 | "engines": { 3673 | "node": ">=6" 3674 | } 3675 | }, 3676 | "node_modules/package-json-from-dist": { 3677 | "version": "1.0.1", 3678 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", 3679 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", 3680 | "dev": true 3681 | }, 3682 | "node_modules/parse-json": { 3683 | "version": "5.2.0", 3684 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 3685 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 3686 | "dev": true, 3687 | "dependencies": { 3688 | "@babel/code-frame": "^7.0.0", 3689 | "error-ex": "^1.3.1", 3690 | "json-parse-even-better-errors": "^2.3.0", 3691 | "lines-and-columns": "^1.1.6" 3692 | }, 3693 | "engines": { 3694 | "node": ">=8" 3695 | }, 3696 | "funding": { 3697 | "url": "https://github.com/sponsors/sindresorhus" 3698 | } 3699 | }, 3700 | "node_modules/parseurl": { 3701 | "version": "1.3.3", 3702 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 3703 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 3704 | "engines": { 3705 | "node": ">= 0.8" 3706 | } 3707 | }, 3708 | "node_modules/path-exists": { 3709 | "version": "4.0.0", 3710 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3711 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3712 | "dev": true, 3713 | "engines": { 3714 | "node": ">=8" 3715 | } 3716 | }, 3717 | "node_modules/path-is-absolute": { 3718 | "version": "1.0.1", 3719 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3720 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 3721 | "dev": true, 3722 | "engines": { 3723 | "node": ">=0.10.0" 3724 | } 3725 | }, 3726 | "node_modules/path-key": { 3727 | "version": "3.1.1", 3728 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3729 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3730 | "dev": true, 3731 | "engines": { 3732 | "node": ">=8" 3733 | } 3734 | }, 3735 | "node_modules/path-parse": { 3736 | "version": "1.0.7", 3737 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 3738 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 3739 | "dev": true 3740 | }, 3741 | "node_modules/path-scurry": { 3742 | "version": "2.0.0", 3743 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", 3744 | "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", 3745 | "dev": true, 3746 | "dependencies": { 3747 | "lru-cache": "^11.0.0", 3748 | "minipass": "^7.1.2" 3749 | }, 3750 | "engines": { 3751 | "node": "20 || >=22" 3752 | }, 3753 | "funding": { 3754 | "url": "https://github.com/sponsors/isaacs" 3755 | } 3756 | }, 3757 | "node_modules/path-scurry/node_modules/lru-cache": { 3758 | "version": "11.0.2", 3759 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", 3760 | "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", 3761 | "dev": true, 3762 | "engines": { 3763 | "node": "20 || >=22" 3764 | } 3765 | }, 3766 | "node_modules/path-to-regexp": { 3767 | "version": "8.2.0", 3768 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", 3769 | "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", 3770 | "engines": { 3771 | "node": ">=16" 3772 | } 3773 | }, 3774 | "node_modules/picocolors": { 3775 | "version": "1.1.1", 3776 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 3777 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 3778 | "dev": true 3779 | }, 3780 | "node_modules/picomatch": { 3781 | "version": "2.3.1", 3782 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3783 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3784 | "dev": true, 3785 | "engines": { 3786 | "node": ">=8.6" 3787 | }, 3788 | "funding": { 3789 | "url": "https://github.com/sponsors/jonschlinkert" 3790 | } 3791 | }, 3792 | "node_modules/pirates": { 3793 | "version": "4.0.6", 3794 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", 3795 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", 3796 | "dev": true, 3797 | "engines": { 3798 | "node": ">= 6" 3799 | } 3800 | }, 3801 | "node_modules/pkce-challenge": { 3802 | "version": "4.1.0", 3803 | "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-4.1.0.tgz", 3804 | "integrity": "sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==", 3805 | "engines": { 3806 | "node": ">=16.20.0" 3807 | } 3808 | }, 3809 | "node_modules/pkg-dir": { 3810 | "version": "4.2.0", 3811 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 3812 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 3813 | "dev": true, 3814 | "dependencies": { 3815 | "find-up": "^4.0.0" 3816 | }, 3817 | "engines": { 3818 | "node": ">=8" 3819 | } 3820 | }, 3821 | "node_modules/pretty-format": { 3822 | "version": "29.7.0", 3823 | "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", 3824 | "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", 3825 | "dev": true, 3826 | "dependencies": { 3827 | "@jest/schemas": "^29.6.3", 3828 | "ansi-styles": "^5.0.0", 3829 | "react-is": "^18.0.0" 3830 | }, 3831 | "engines": { 3832 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3833 | } 3834 | }, 3835 | "node_modules/pretty-format/node_modules/ansi-styles": { 3836 | "version": "5.2.0", 3837 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", 3838 | "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", 3839 | "dev": true, 3840 | "engines": { 3841 | "node": ">=10" 3842 | }, 3843 | "funding": { 3844 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 3845 | } 3846 | }, 3847 | "node_modules/prompts": { 3848 | "version": "2.4.2", 3849 | "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", 3850 | "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", 3851 | "dev": true, 3852 | "dependencies": { 3853 | "kleur": "^3.0.3", 3854 | "sisteransi": "^1.0.5" 3855 | }, 3856 | "engines": { 3857 | "node": ">= 6" 3858 | } 3859 | }, 3860 | "node_modules/proxy-addr": { 3861 | "version": "2.0.7", 3862 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 3863 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 3864 | "dependencies": { 3865 | "forwarded": "0.2.0", 3866 | "ipaddr.js": "1.9.1" 3867 | }, 3868 | "engines": { 3869 | "node": ">= 0.10" 3870 | } 3871 | }, 3872 | "node_modules/pure-rand": { 3873 | "version": "6.1.0", 3874 | "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", 3875 | "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", 3876 | "dev": true, 3877 | "funding": [ 3878 | { 3879 | "type": "individual", 3880 | "url": "https://github.com/sponsors/dubzzz" 3881 | }, 3882 | { 3883 | "type": "opencollective", 3884 | "url": "https://opencollective.com/fast-check" 3885 | } 3886 | ] 3887 | }, 3888 | "node_modules/qs": { 3889 | "version": "6.13.0", 3890 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", 3891 | "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", 3892 | "dependencies": { 3893 | "side-channel": "^1.0.6" 3894 | }, 3895 | "engines": { 3896 | "node": ">=0.6" 3897 | }, 3898 | "funding": { 3899 | "url": "https://github.com/sponsors/ljharb" 3900 | } 3901 | }, 3902 | "node_modules/range-parser": { 3903 | "version": "1.2.1", 3904 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 3905 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 3906 | "engines": { 3907 | "node": ">= 0.6" 3908 | } 3909 | }, 3910 | "node_modules/raw-body": { 3911 | "version": "3.0.0", 3912 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", 3913 | "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", 3914 | "dependencies": { 3915 | "bytes": "3.1.2", 3916 | "http-errors": "2.0.0", 3917 | "iconv-lite": "0.6.3", 3918 | "unpipe": "1.0.0" 3919 | }, 3920 | "engines": { 3921 | "node": ">= 0.8" 3922 | } 3923 | }, 3924 | "node_modules/raw-body/node_modules/iconv-lite": { 3925 | "version": "0.6.3", 3926 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 3927 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 3928 | "dependencies": { 3929 | "safer-buffer": ">= 2.1.2 < 3.0.0" 3930 | }, 3931 | "engines": { 3932 | "node": ">=0.10.0" 3933 | } 3934 | }, 3935 | "node_modules/react-is": { 3936 | "version": "18.3.1", 3937 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", 3938 | "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", 3939 | "dev": true 3940 | }, 3941 | "node_modules/rechoir": { 3942 | "version": "0.6.2", 3943 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 3944 | "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", 3945 | "dev": true, 3946 | "dependencies": { 3947 | "resolve": "^1.1.6" 3948 | }, 3949 | "engines": { 3950 | "node": ">= 0.10" 3951 | } 3952 | }, 3953 | "node_modules/require-directory": { 3954 | "version": "2.1.1", 3955 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3956 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 3957 | "dev": true, 3958 | "engines": { 3959 | "node": ">=0.10.0" 3960 | } 3961 | }, 3962 | "node_modules/resolve": { 3963 | "version": "1.22.10", 3964 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", 3965 | "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", 3966 | "dev": true, 3967 | "dependencies": { 3968 | "is-core-module": "^2.16.0", 3969 | "path-parse": "^1.0.7", 3970 | "supports-preserve-symlinks-flag": "^1.0.0" 3971 | }, 3972 | "bin": { 3973 | "resolve": "bin/resolve" 3974 | }, 3975 | "engines": { 3976 | "node": ">= 0.4" 3977 | }, 3978 | "funding": { 3979 | "url": "https://github.com/sponsors/ljharb" 3980 | } 3981 | }, 3982 | "node_modules/resolve-cwd": { 3983 | "version": "3.0.0", 3984 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", 3985 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", 3986 | "dev": true, 3987 | "dependencies": { 3988 | "resolve-from": "^5.0.0" 3989 | }, 3990 | "engines": { 3991 | "node": ">=8" 3992 | } 3993 | }, 3994 | "node_modules/resolve-from": { 3995 | "version": "5.0.0", 3996 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 3997 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 3998 | "dev": true, 3999 | "engines": { 4000 | "node": ">=8" 4001 | } 4002 | }, 4003 | "node_modules/resolve.exports": { 4004 | "version": "2.0.3", 4005 | "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", 4006 | "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", 4007 | "dev": true, 4008 | "engines": { 4009 | "node": ">=10" 4010 | } 4011 | }, 4012 | "node_modules/rimraf": { 4013 | "version": "6.0.1", 4014 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", 4015 | "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", 4016 | "dev": true, 4017 | "dependencies": { 4018 | "glob": "^11.0.0", 4019 | "package-json-from-dist": "^1.0.0" 4020 | }, 4021 | "bin": { 4022 | "rimraf": "dist/esm/bin.mjs" 4023 | }, 4024 | "engines": { 4025 | "node": "20 || >=22" 4026 | }, 4027 | "funding": { 4028 | "url": "https://github.com/sponsors/isaacs" 4029 | } 4030 | }, 4031 | "node_modules/rimraf/node_modules/brace-expansion": { 4032 | "version": "2.0.1", 4033 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 4034 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 4035 | "dev": true, 4036 | "dependencies": { 4037 | "balanced-match": "^1.0.0" 4038 | } 4039 | }, 4040 | "node_modules/rimraf/node_modules/glob": { 4041 | "version": "11.0.1", 4042 | "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", 4043 | "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", 4044 | "dev": true, 4045 | "dependencies": { 4046 | "foreground-child": "^3.1.0", 4047 | "jackspeak": "^4.0.1", 4048 | "minimatch": "^10.0.0", 4049 | "minipass": "^7.1.2", 4050 | "package-json-from-dist": "^1.0.0", 4051 | "path-scurry": "^2.0.0" 4052 | }, 4053 | "bin": { 4054 | "glob": "dist/esm/bin.mjs" 4055 | }, 4056 | "engines": { 4057 | "node": "20 || >=22" 4058 | }, 4059 | "funding": { 4060 | "url": "https://github.com/sponsors/isaacs" 4061 | } 4062 | }, 4063 | "node_modules/rimraf/node_modules/minimatch": { 4064 | "version": "10.0.1", 4065 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", 4066 | "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", 4067 | "dev": true, 4068 | "dependencies": { 4069 | "brace-expansion": "^2.0.1" 4070 | }, 4071 | "engines": { 4072 | "node": "20 || >=22" 4073 | }, 4074 | "funding": { 4075 | "url": "https://github.com/sponsors/isaacs" 4076 | } 4077 | }, 4078 | "node_modules/router": { 4079 | "version": "2.1.0", 4080 | "resolved": "https://registry.npmjs.org/router/-/router-2.1.0.tgz", 4081 | "integrity": "sha512-/m/NSLxeYEgWNtyC+WtNHCF7jbGxOibVWKnn+1Psff4dJGOfoXP+MuC/f2CwSmyiHdOIzYnYFp4W6GxWfekaLA==", 4082 | "dependencies": { 4083 | "is-promise": "^4.0.0", 4084 | "parseurl": "^1.3.3", 4085 | "path-to-regexp": "^8.0.0" 4086 | }, 4087 | "engines": { 4088 | "node": ">= 18" 4089 | } 4090 | }, 4091 | "node_modules/safe-buffer": { 4092 | "version": "5.2.1", 4093 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 4094 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 4095 | "funding": [ 4096 | { 4097 | "type": "github", 4098 | "url": "https://github.com/sponsors/feross" 4099 | }, 4100 | { 4101 | "type": "patreon", 4102 | "url": "https://www.patreon.com/feross" 4103 | }, 4104 | { 4105 | "type": "consulting", 4106 | "url": "https://feross.org/support" 4107 | } 4108 | ] 4109 | }, 4110 | "node_modules/safer-buffer": { 4111 | "version": "2.1.2", 4112 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 4113 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 4114 | }, 4115 | "node_modules/semver": { 4116 | "version": "6.3.1", 4117 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 4118 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 4119 | "dev": true, 4120 | "bin": { 4121 | "semver": "bin/semver.js" 4122 | } 4123 | }, 4124 | "node_modules/send": { 4125 | "version": "1.1.0", 4126 | "resolved": "https://registry.npmjs.org/send/-/send-1.1.0.tgz", 4127 | "integrity": "sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==", 4128 | "dependencies": { 4129 | "debug": "^4.3.5", 4130 | "destroy": "^1.2.0", 4131 | "encodeurl": "^2.0.0", 4132 | "escape-html": "^1.0.3", 4133 | "etag": "^1.8.1", 4134 | "fresh": "^0.5.2", 4135 | "http-errors": "^2.0.0", 4136 | "mime-types": "^2.1.35", 4137 | "ms": "^2.1.3", 4138 | "on-finished": "^2.4.1", 4139 | "range-parser": "^1.2.1", 4140 | "statuses": "^2.0.1" 4141 | }, 4142 | "engines": { 4143 | "node": ">= 18" 4144 | } 4145 | }, 4146 | "node_modules/send/node_modules/fresh": { 4147 | "version": "0.5.2", 4148 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 4149 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", 4150 | "engines": { 4151 | "node": ">= 0.6" 4152 | } 4153 | }, 4154 | "node_modules/send/node_modules/mime-db": { 4155 | "version": "1.52.0", 4156 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 4157 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 4158 | "engines": { 4159 | "node": ">= 0.6" 4160 | } 4161 | }, 4162 | "node_modules/send/node_modules/mime-types": { 4163 | "version": "2.1.35", 4164 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 4165 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 4166 | "dependencies": { 4167 | "mime-db": "1.52.0" 4168 | }, 4169 | "engines": { 4170 | "node": ">= 0.6" 4171 | } 4172 | }, 4173 | "node_modules/send/node_modules/ms": { 4174 | "version": "2.1.3", 4175 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 4176 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 4177 | }, 4178 | "node_modules/serve-static": { 4179 | "version": "2.1.0", 4180 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.1.0.tgz", 4181 | "integrity": "sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==", 4182 | "dependencies": { 4183 | "encodeurl": "^2.0.0", 4184 | "escape-html": "^1.0.3", 4185 | "parseurl": "^1.3.3", 4186 | "send": "^1.0.0" 4187 | }, 4188 | "engines": { 4189 | "node": ">= 18" 4190 | } 4191 | }, 4192 | "node_modules/setprototypeof": { 4193 | "version": "1.2.0", 4194 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 4195 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 4196 | }, 4197 | "node_modules/shebang-command": { 4198 | "version": "2.0.0", 4199 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 4200 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 4201 | "dev": true, 4202 | "dependencies": { 4203 | "shebang-regex": "^3.0.0" 4204 | }, 4205 | "engines": { 4206 | "node": ">=8" 4207 | } 4208 | }, 4209 | "node_modules/shebang-regex": { 4210 | "version": "3.0.0", 4211 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 4212 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 4213 | "dev": true, 4214 | "engines": { 4215 | "node": ">=8" 4216 | } 4217 | }, 4218 | "node_modules/shelljs": { 4219 | "version": "0.8.5", 4220 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", 4221 | "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", 4222 | "dev": true, 4223 | "dependencies": { 4224 | "glob": "^7.0.0", 4225 | "interpret": "^1.0.0", 4226 | "rechoir": "^0.6.2" 4227 | }, 4228 | "bin": { 4229 | "shjs": "bin/shjs" 4230 | }, 4231 | "engines": { 4232 | "node": ">=4" 4233 | } 4234 | }, 4235 | "node_modules/shx": { 4236 | "version": "0.3.4", 4237 | "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", 4238 | "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", 4239 | "dev": true, 4240 | "dependencies": { 4241 | "minimist": "^1.2.3", 4242 | "shelljs": "^0.8.5" 4243 | }, 4244 | "bin": { 4245 | "shx": "lib/cli.js" 4246 | }, 4247 | "engines": { 4248 | "node": ">=6" 4249 | } 4250 | }, 4251 | "node_modules/side-channel": { 4252 | "version": "1.1.0", 4253 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", 4254 | "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", 4255 | "dependencies": { 4256 | "es-errors": "^1.3.0", 4257 | "object-inspect": "^1.13.3", 4258 | "side-channel-list": "^1.0.0", 4259 | "side-channel-map": "^1.0.1", 4260 | "side-channel-weakmap": "^1.0.2" 4261 | }, 4262 | "engines": { 4263 | "node": ">= 0.4" 4264 | }, 4265 | "funding": { 4266 | "url": "https://github.com/sponsors/ljharb" 4267 | } 4268 | }, 4269 | "node_modules/side-channel-list": { 4270 | "version": "1.0.0", 4271 | "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", 4272 | "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", 4273 | "dependencies": { 4274 | "es-errors": "^1.3.0", 4275 | "object-inspect": "^1.13.3" 4276 | }, 4277 | "engines": { 4278 | "node": ">= 0.4" 4279 | }, 4280 | "funding": { 4281 | "url": "https://github.com/sponsors/ljharb" 4282 | } 4283 | }, 4284 | "node_modules/side-channel-map": { 4285 | "version": "1.0.1", 4286 | "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", 4287 | "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", 4288 | "dependencies": { 4289 | "call-bound": "^1.0.2", 4290 | "es-errors": "^1.3.0", 4291 | "get-intrinsic": "^1.2.5", 4292 | "object-inspect": "^1.13.3" 4293 | }, 4294 | "engines": { 4295 | "node": ">= 0.4" 4296 | }, 4297 | "funding": { 4298 | "url": "https://github.com/sponsors/ljharb" 4299 | } 4300 | }, 4301 | "node_modules/side-channel-weakmap": { 4302 | "version": "1.0.2", 4303 | "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", 4304 | "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", 4305 | "dependencies": { 4306 | "call-bound": "^1.0.2", 4307 | "es-errors": "^1.3.0", 4308 | "get-intrinsic": "^1.2.5", 4309 | "object-inspect": "^1.13.3", 4310 | "side-channel-map": "^1.0.1" 4311 | }, 4312 | "engines": { 4313 | "node": ">= 0.4" 4314 | }, 4315 | "funding": { 4316 | "url": "https://github.com/sponsors/ljharb" 4317 | } 4318 | }, 4319 | "node_modules/signal-exit": { 4320 | "version": "3.0.7", 4321 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 4322 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 4323 | "dev": true 4324 | }, 4325 | "node_modules/sisteransi": { 4326 | "version": "1.0.5", 4327 | "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", 4328 | "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", 4329 | "dev": true 4330 | }, 4331 | "node_modules/slash": { 4332 | "version": "3.0.0", 4333 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 4334 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 4335 | "dev": true, 4336 | "engines": { 4337 | "node": ">=8" 4338 | } 4339 | }, 4340 | "node_modules/source-map": { 4341 | "version": "0.6.1", 4342 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 4343 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 4344 | "dev": true, 4345 | "engines": { 4346 | "node": ">=0.10.0" 4347 | } 4348 | }, 4349 | "node_modules/source-map-support": { 4350 | "version": "0.5.13", 4351 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", 4352 | "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", 4353 | "dev": true, 4354 | "dependencies": { 4355 | "buffer-from": "^1.0.0", 4356 | "source-map": "^0.6.0" 4357 | } 4358 | }, 4359 | "node_modules/sprintf-js": { 4360 | "version": "1.0.3", 4361 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 4362 | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", 4363 | "dev": true 4364 | }, 4365 | "node_modules/stack-utils": { 4366 | "version": "2.0.6", 4367 | "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", 4368 | "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", 4369 | "dev": true, 4370 | "dependencies": { 4371 | "escape-string-regexp": "^2.0.0" 4372 | }, 4373 | "engines": { 4374 | "node": ">=10" 4375 | } 4376 | }, 4377 | "node_modules/statuses": { 4378 | "version": "2.0.1", 4379 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 4380 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 4381 | "engines": { 4382 | "node": ">= 0.8" 4383 | } 4384 | }, 4385 | "node_modules/string-length": { 4386 | "version": "4.0.2", 4387 | "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", 4388 | "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", 4389 | "dev": true, 4390 | "dependencies": { 4391 | "char-regex": "^1.0.2", 4392 | "strip-ansi": "^6.0.0" 4393 | }, 4394 | "engines": { 4395 | "node": ">=10" 4396 | } 4397 | }, 4398 | "node_modules/string-width": { 4399 | "version": "4.2.3", 4400 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 4401 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 4402 | "dev": true, 4403 | "dependencies": { 4404 | "emoji-regex": "^8.0.0", 4405 | "is-fullwidth-code-point": "^3.0.0", 4406 | "strip-ansi": "^6.0.1" 4407 | }, 4408 | "engines": { 4409 | "node": ">=8" 4410 | } 4411 | }, 4412 | "node_modules/string-width-cjs": { 4413 | "name": "string-width", 4414 | "version": "4.2.3", 4415 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 4416 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 4417 | "dev": true, 4418 | "dependencies": { 4419 | "emoji-regex": "^8.0.0", 4420 | "is-fullwidth-code-point": "^3.0.0", 4421 | "strip-ansi": "^6.0.1" 4422 | }, 4423 | "engines": { 4424 | "node": ">=8" 4425 | } 4426 | }, 4427 | "node_modules/strip-ansi": { 4428 | "version": "6.0.1", 4429 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 4430 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 4431 | "dev": true, 4432 | "dependencies": { 4433 | "ansi-regex": "^5.0.1" 4434 | }, 4435 | "engines": { 4436 | "node": ">=8" 4437 | } 4438 | }, 4439 | "node_modules/strip-ansi-cjs": { 4440 | "name": "strip-ansi", 4441 | "version": "6.0.1", 4442 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 4443 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 4444 | "dev": true, 4445 | "dependencies": { 4446 | "ansi-regex": "^5.0.1" 4447 | }, 4448 | "engines": { 4449 | "node": ">=8" 4450 | } 4451 | }, 4452 | "node_modules/strip-bom": { 4453 | "version": "4.0.0", 4454 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", 4455 | "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", 4456 | "dev": true, 4457 | "engines": { 4458 | "node": ">=8" 4459 | } 4460 | }, 4461 | "node_modules/strip-final-newline": { 4462 | "version": "2.0.0", 4463 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 4464 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 4465 | "dev": true, 4466 | "engines": { 4467 | "node": ">=6" 4468 | } 4469 | }, 4470 | "node_modules/strip-json-comments": { 4471 | "version": "3.1.1", 4472 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 4473 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 4474 | "dev": true, 4475 | "engines": { 4476 | "node": ">=8" 4477 | }, 4478 | "funding": { 4479 | "url": "https://github.com/sponsors/sindresorhus" 4480 | } 4481 | }, 4482 | "node_modules/supports-color": { 4483 | "version": "7.2.0", 4484 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 4485 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 4486 | "dev": true, 4487 | "dependencies": { 4488 | "has-flag": "^4.0.0" 4489 | }, 4490 | "engines": { 4491 | "node": ">=8" 4492 | } 4493 | }, 4494 | "node_modules/supports-preserve-symlinks-flag": { 4495 | "version": "1.0.0", 4496 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 4497 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 4498 | "dev": true, 4499 | "engines": { 4500 | "node": ">= 0.4" 4501 | }, 4502 | "funding": { 4503 | "url": "https://github.com/sponsors/ljharb" 4504 | } 4505 | }, 4506 | "node_modules/test-exclude": { 4507 | "version": "6.0.0", 4508 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", 4509 | "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", 4510 | "dev": true, 4511 | "dependencies": { 4512 | "@istanbuljs/schema": "^0.1.2", 4513 | "glob": "^7.1.4", 4514 | "minimatch": "^3.0.4" 4515 | }, 4516 | "engines": { 4517 | "node": ">=8" 4518 | } 4519 | }, 4520 | "node_modules/tmpl": { 4521 | "version": "1.0.5", 4522 | "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", 4523 | "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", 4524 | "dev": true 4525 | }, 4526 | "node_modules/to-regex-range": { 4527 | "version": "5.0.1", 4528 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 4529 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 4530 | "dev": true, 4531 | "dependencies": { 4532 | "is-number": "^7.0.0" 4533 | }, 4534 | "engines": { 4535 | "node": ">=8.0" 4536 | } 4537 | }, 4538 | "node_modules/toidentifier": { 4539 | "version": "1.0.1", 4540 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 4541 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 4542 | "engines": { 4543 | "node": ">=0.6" 4544 | } 4545 | }, 4546 | "node_modules/ts-jest": { 4547 | "version": "29.2.6", 4548 | "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.6.tgz", 4549 | "integrity": "sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==", 4550 | "dev": true, 4551 | "dependencies": { 4552 | "bs-logger": "^0.2.6", 4553 | "ejs": "^3.1.10", 4554 | "fast-json-stable-stringify": "^2.1.0", 4555 | "jest-util": "^29.0.0", 4556 | "json5": "^2.2.3", 4557 | "lodash.memoize": "^4.1.2", 4558 | "make-error": "^1.3.6", 4559 | "semver": "^7.7.1", 4560 | "yargs-parser": "^21.1.1" 4561 | }, 4562 | "bin": { 4563 | "ts-jest": "cli.js" 4564 | }, 4565 | "engines": { 4566 | "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" 4567 | }, 4568 | "peerDependencies": { 4569 | "@babel/core": ">=7.0.0-beta.0 <8", 4570 | "@jest/transform": "^29.0.0", 4571 | "@jest/types": "^29.0.0", 4572 | "babel-jest": "^29.0.0", 4573 | "jest": "^29.0.0", 4574 | "typescript": ">=4.3 <6" 4575 | }, 4576 | "peerDependenciesMeta": { 4577 | "@babel/core": { 4578 | "optional": true 4579 | }, 4580 | "@jest/transform": { 4581 | "optional": true 4582 | }, 4583 | "@jest/types": { 4584 | "optional": true 4585 | }, 4586 | "babel-jest": { 4587 | "optional": true 4588 | }, 4589 | "esbuild": { 4590 | "optional": true 4591 | } 4592 | } 4593 | }, 4594 | "node_modules/ts-jest/node_modules/semver": { 4595 | "version": "7.7.1", 4596 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", 4597 | "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", 4598 | "dev": true, 4599 | "bin": { 4600 | "semver": "bin/semver.js" 4601 | }, 4602 | "engines": { 4603 | "node": ">=10" 4604 | } 4605 | }, 4606 | "node_modules/type-detect": { 4607 | "version": "4.0.8", 4608 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 4609 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 4610 | "dev": true, 4611 | "engines": { 4612 | "node": ">=4" 4613 | } 4614 | }, 4615 | "node_modules/type-fest": { 4616 | "version": "0.21.3", 4617 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 4618 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", 4619 | "dev": true, 4620 | "engines": { 4621 | "node": ">=10" 4622 | }, 4623 | "funding": { 4624 | "url": "https://github.com/sponsors/sindresorhus" 4625 | } 4626 | }, 4627 | "node_modules/type-is": { 4628 | "version": "2.0.0", 4629 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.0.tgz", 4630 | "integrity": "sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==", 4631 | "dependencies": { 4632 | "content-type": "^1.0.5", 4633 | "media-typer": "^1.1.0", 4634 | "mime-types": "^3.0.0" 4635 | }, 4636 | "engines": { 4637 | "node": ">= 0.6" 4638 | } 4639 | }, 4640 | "node_modules/typescript": { 4641 | "version": "5.8.2", 4642 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", 4643 | "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", 4644 | "dev": true, 4645 | "bin": { 4646 | "tsc": "bin/tsc", 4647 | "tsserver": "bin/tsserver" 4648 | }, 4649 | "engines": { 4650 | "node": ">=14.17" 4651 | } 4652 | }, 4653 | "node_modules/undici-types": { 4654 | "version": "6.20.0", 4655 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", 4656 | "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", 4657 | "dev": true 4658 | }, 4659 | "node_modules/unpipe": { 4660 | "version": "1.0.0", 4661 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 4662 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 4663 | "engines": { 4664 | "node": ">= 0.8" 4665 | } 4666 | }, 4667 | "node_modules/update-browserslist-db": { 4668 | "version": "1.1.3", 4669 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", 4670 | "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", 4671 | "dev": true, 4672 | "funding": [ 4673 | { 4674 | "type": "opencollective", 4675 | "url": "https://opencollective.com/browserslist" 4676 | }, 4677 | { 4678 | "type": "tidelift", 4679 | "url": "https://tidelift.com/funding/github/npm/browserslist" 4680 | }, 4681 | { 4682 | "type": "github", 4683 | "url": "https://github.com/sponsors/ai" 4684 | } 4685 | ], 4686 | "dependencies": { 4687 | "escalade": "^3.2.0", 4688 | "picocolors": "^1.1.1" 4689 | }, 4690 | "bin": { 4691 | "update-browserslist-db": "cli.js" 4692 | }, 4693 | "peerDependencies": { 4694 | "browserslist": ">= 4.21.0" 4695 | } 4696 | }, 4697 | "node_modules/utils-merge": { 4698 | "version": "1.0.1", 4699 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 4700 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", 4701 | "engines": { 4702 | "node": ">= 0.4.0" 4703 | } 4704 | }, 4705 | "node_modules/v8-to-istanbul": { 4706 | "version": "9.3.0", 4707 | "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", 4708 | "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", 4709 | "dev": true, 4710 | "dependencies": { 4711 | "@jridgewell/trace-mapping": "^0.3.12", 4712 | "@types/istanbul-lib-coverage": "^2.0.1", 4713 | "convert-source-map": "^2.0.0" 4714 | }, 4715 | "engines": { 4716 | "node": ">=10.12.0" 4717 | } 4718 | }, 4719 | "node_modules/vary": { 4720 | "version": "1.1.2", 4721 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 4722 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 4723 | "engines": { 4724 | "node": ">= 0.8" 4725 | } 4726 | }, 4727 | "node_modules/walker": { 4728 | "version": "1.0.8", 4729 | "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", 4730 | "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", 4731 | "dev": true, 4732 | "dependencies": { 4733 | "makeerror": "1.0.12" 4734 | } 4735 | }, 4736 | "node_modules/which": { 4737 | "version": "2.0.2", 4738 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 4739 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 4740 | "dev": true, 4741 | "dependencies": { 4742 | "isexe": "^2.0.0" 4743 | }, 4744 | "bin": { 4745 | "node-which": "bin/node-which" 4746 | }, 4747 | "engines": { 4748 | "node": ">= 8" 4749 | } 4750 | }, 4751 | "node_modules/wrap-ansi": { 4752 | "version": "7.0.0", 4753 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 4754 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 4755 | "dev": true, 4756 | "dependencies": { 4757 | "ansi-styles": "^4.0.0", 4758 | "string-width": "^4.1.0", 4759 | "strip-ansi": "^6.0.0" 4760 | }, 4761 | "engines": { 4762 | "node": ">=10" 4763 | }, 4764 | "funding": { 4765 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 4766 | } 4767 | }, 4768 | "node_modules/wrap-ansi-cjs": { 4769 | "name": "wrap-ansi", 4770 | "version": "7.0.0", 4771 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 4772 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 4773 | "dev": true, 4774 | "dependencies": { 4775 | "ansi-styles": "^4.0.0", 4776 | "string-width": "^4.1.0", 4777 | "strip-ansi": "^6.0.0" 4778 | }, 4779 | "engines": { 4780 | "node": ">=10" 4781 | }, 4782 | "funding": { 4783 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 4784 | } 4785 | }, 4786 | "node_modules/wrappy": { 4787 | "version": "1.0.2", 4788 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 4789 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 4790 | }, 4791 | "node_modules/write-file-atomic": { 4792 | "version": "4.0.2", 4793 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", 4794 | "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", 4795 | "dev": true, 4796 | "dependencies": { 4797 | "imurmurhash": "^0.1.4", 4798 | "signal-exit": "^3.0.7" 4799 | }, 4800 | "engines": { 4801 | "node": "^12.13.0 || ^14.15.0 || >=16.0.0" 4802 | } 4803 | }, 4804 | "node_modules/y18n": { 4805 | "version": "5.0.8", 4806 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 4807 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 4808 | "dev": true, 4809 | "engines": { 4810 | "node": ">=10" 4811 | } 4812 | }, 4813 | "node_modules/yallist": { 4814 | "version": "3.1.1", 4815 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 4816 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 4817 | "dev": true 4818 | }, 4819 | "node_modules/yargs": { 4820 | "version": "17.7.2", 4821 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", 4822 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", 4823 | "dev": true, 4824 | "dependencies": { 4825 | "cliui": "^8.0.1", 4826 | "escalade": "^3.1.1", 4827 | "get-caller-file": "^2.0.5", 4828 | "require-directory": "^2.1.1", 4829 | "string-width": "^4.2.3", 4830 | "y18n": "^5.0.5", 4831 | "yargs-parser": "^21.1.1" 4832 | }, 4833 | "engines": { 4834 | "node": ">=12" 4835 | } 4836 | }, 4837 | "node_modules/yargs-parser": { 4838 | "version": "21.1.1", 4839 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 4840 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 4841 | "dev": true, 4842 | "engines": { 4843 | "node": ">=12" 4844 | } 4845 | }, 4846 | "node_modules/yocto-queue": { 4847 | "version": "0.1.0", 4848 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 4849 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 4850 | "dev": true, 4851 | "engines": { 4852 | "node": ">=10" 4853 | }, 4854 | "funding": { 4855 | "url": "https://github.com/sponsors/sindresorhus" 4856 | } 4857 | }, 4858 | "node_modules/zod": { 4859 | "version": "3.24.2", 4860 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", 4861 | "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", 4862 | "funding": { 4863 | "url": "https://github.com/sponsors/colinhacks" 4864 | } 4865 | }, 4866 | "node_modules/zod-to-json-schema": { 4867 | "version": "3.24.4", 4868 | "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.4.tgz", 4869 | "integrity": "sha512-0uNlcvgabyrni9Ag8Vghj21drk7+7tp7VTwwR7KxxXXc/3pbXz2PHlDgj3cICahgF1kHm4dExBFj7BXrZJXzig==", 4870 | "peerDependencies": { 4871 | "zod": "^3.24.1" 4872 | } 4873 | } 4874 | } 4875 | } 4876 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@thirdstrandstudio/mcp-tool-chainer", 3 | "version": "0.7.9", 4 | "description": "MCP server for cross MCP communication", 5 | "license": "MIT", 6 | "author": "Third Strand Studio (https://github.com/thirdstrandstudio)", 7 | "homepage": "https://github.com/thirdstrandstudio/mcp-tool-chainer", 8 | "bugs": "https://github.com/thirdstrandstudio/mcp-tool-chainer/issues", 9 | "type": "module", 10 | "bin": { 11 | "mcp-tool-chainer": "dist/index.js" 12 | }, 13 | "files": [ 14 | "dist" 15 | ], 16 | "engines" : { 17 | "npm" : ">=8.0.0", 18 | "node" : ">=16.0.0" 19 | } 20 | "scripts": { 21 | "build": "rimraf ./dist && tsc && shx chmod +x dist/*.js", 22 | "prepare": "npm run build", 23 | "watch": "tsc --watch", 24 | "generate-api": "npx swagger-typescript-api -p openapi.yaml -o ./src/api/ --axios", 25 | "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js", 26 | "start": "node dist/index.js" 27 | }, 28 | "dependencies": { 29 | "@modelcontextprotocol/sdk": "^1.7.0", 30 | "jsonpath-plus": "^10.3.0", 31 | "zod": "^3.24.2", 32 | "zod-to-json-schema": "^3.24.4" 33 | }, 34 | "devDependencies": { 35 | "@types/jest": "^29.5.12", 36 | "jest": "^29.7.0", 37 | "rimraf": "^6.0.1", 38 | "shx": "^0.3.4", 39 | "ts-jest": "^29.1.2", 40 | "typescript": "^5.6.2" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /smithery.yaml: -------------------------------------------------------------------------------- 1 | # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml 2 | 3 | startCommand: 4 | type: stdio 5 | configSchema: 6 | # JSON Schema defining the configuration options for the MCP. 7 | type: object 8 | required: 9 | - figmaApiKey 10 | properties: 11 | figmaApiKey: 12 | type: string 13 | description: Figma API token for authenticating requests 14 | description: Configuration for the Figma MCP server. Provide your Figma API 15 | token under 'figmaApiKey'. 16 | commandFunction: 17 | # A JS function that produces the CLI command based on the given config to start the MCP on stdio. 18 | |- 19 | (config) => ({ 20 | command: 'node', 21 | args: ['dist/index.js'], 22 | env: { FIGMA_API_KEY: config.figmaApiKey } 23 | }) 24 | exampleConfig: 25 | figmaApiKey: your_figma_api_key_here 26 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "esModuleInterop": true, 7 | "outDir": "./dist", 8 | "rootDir": ".", 9 | "strict": true, 10 | "declaration": true, 11 | "skipLibCheck": true, 12 | "allowSyntheticDefaultImports": true 13 | }, 14 | "include": [ 15 | "./**/*.ts" 16 | ], 17 | "exclude": [ 18 | "node_modules", 19 | "**/*.test.ts" 20 | ] 21 | } --------------------------------------------------------------------------------