From 9f8aeaa326176dfad82e94c777f24d413b3e307c Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Jun 2025 19:48:00 +0100 Subject: [PATCH 1/6] Add Browser Tools MCP command documentation, scripts for running servers, and update package versions --- browser-tools-mcp-command.txt | 23 ++++++ browser-tools-mcp/mcp-server.ts | 2 +- browser-tools-mcp/package-lock.json | 4 +- browser-tools-server/package-lock.json | 4 +- chrome-extension/background.js | 109 +++++++++++++++++++++++++ chrome-extension/devtools.js | 72 +++++++++++----- package-lock.json | 6 ++ run-browser-tools.bat | 61 ++++++++++++++ run-browser-tools.ps1 | 83 +++++++++++++++++++ start-browser-tools-server.bat | 4 + 10 files changed, 342 insertions(+), 26 deletions(-) create mode 100644 browser-tools-mcp-command.txt create mode 100644 package-lock.json create mode 100644 run-browser-tools.bat create mode 100644 run-browser-tools.ps1 create mode 100644 start-browser-tools-server.bat diff --git a/browser-tools-mcp-command.txt b/browser-tools-mcp-command.txt new file mode 100644 index 0000000..17d1f77 --- /dev/null +++ b/browser-tools-mcp-command.txt @@ -0,0 +1,23 @@ +To use Browser Tools MCP in Cursor, you have two options: + +Option 1 (Recommended - Using NPX with cmd): +In Cursor MCP settings, use: +cmd /c npx @agentdeskai/browser-tools-mcp@1.1.0 + +Make sure the Browser Tools Server is running first with: +cmd /c npx @agentdeskai/browser-tools-server + +Option 2 (Using direct paths): +In Cursor MCP settings, use: +"C:\Program Files\nodejs\node.exe" "F:\Projects\MCP-Servers\browser-tools-mcp\browser-tools-mcp\dist\mcp-server.js" + +Make sure the Browser Tools Server is running first with: +"C:\Program Files\nodejs\node.exe" "F:\Projects\MCP-Servers\browser-tools-mcp\browser-tools-server\dist\browser-connector.js" + +Or use the provided scripts to run both at once: +- run-browser-tools.bat (double-click) +- .\run-browser-tools.ps1 (in PowerShell) + +Note: Both scripts now have options to use either NPX or direct paths. +- In run-browser-tools.ps1: Set $useNpx to $true or $false +- In run-browser-tools.bat: Set USE_NPX to 1 or 0 \ No newline at end of file diff --git a/browser-tools-mcp/mcp-server.ts b/browser-tools-mcp/mcp-server.ts index 0d95689..29d18b6 100644 --- a/browser-tools-mcp/mcp-server.ts +++ b/browser-tools-mcp/mcp-server.ts @@ -127,7 +127,7 @@ server.tool( content: [ { type: "text", - text: "Successfully saved screenshot", + text: `Successfully saved screenshot to ${result.path}`, }, ], }; diff --git a/browser-tools-mcp/package-lock.json b/browser-tools-mcp/package-lock.json index 262052e..cc61a90 100644 --- a/browser-tools-mcp/package-lock.json +++ b/browser-tools-mcp/package-lock.json @@ -1,12 +1,12 @@ { "name": "@agentdeskai/browser-tools-mcp", - "version": "1.0.11", + "version": "1.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@agentdeskai/browser-tools-mcp", - "version": "1.0.11", + "version": "1.1.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.4.1", diff --git a/browser-tools-server/package-lock.json b/browser-tools-server/package-lock.json index 455a7d4..220e821 100644 --- a/browser-tools-server/package-lock.json +++ b/browser-tools-server/package-lock.json @@ -1,12 +1,12 @@ { "name": "@agentdeskai/browser-tools-server", - "version": "1.0.5", + "version": "1.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@agentdeskai/browser-tools-server", - "version": "1.0.5", + "version": "1.1.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.4.1", diff --git a/chrome-extension/background.js b/chrome-extension/background.js index 94d8c1e..4d18789 100644 --- a/chrome-extension/background.js +++ b/chrome-extension/background.js @@ -79,3 +79,112 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { return true; // Required to use sendResponse asynchronously } }); + +// ---------------------------- +// New: WebSocket handler to accept remote screenshot commands even when DevTools is closed +// ---------------------------- + +const WS_URL = "ws://localhost:3025/extension-ws"; +let bgWs = null; +let bgWsReconnectTimeout = null; +const BG_WS_RECONNECT_DELAY = 5000; // 5 seconds + +function setupBackgroundWebSocket() { + if (bgWs) { + try { + bgWs.close(); + } catch (e) { + // ignore + } + } + + bgWs = new WebSocket(WS_URL); + + bgWs.onopen = () => { + console.log("Background WS connected"); + if (bgWsReconnectTimeout) { + clearTimeout(bgWsReconnectTimeout); + bgWsReconnectTimeout = null; + } + }; + + bgWs.onmessage = (event) => { + let message; + try { + message = JSON.parse(event.data); + } catch (e) { + console.error("Background WS received invalid JSON", e); + return; + } + + if (message.type === "take-screenshot") { + handleBackgroundScreenshot(message); + } + }; + + bgWs.onclose = () => { + console.log("Background WS disconnected, retrying in 5s..."); + bgWsReconnectTimeout = setTimeout(setupBackgroundWebSocket, BG_WS_RECONNECT_DELAY); + }; + + bgWs.onerror = (err) => { + console.error("Background WS error", err); + }; +} + +function handleBackgroundScreenshot(message) { + // Step 1: find the real page tab (ignore devtools://, chrome://, etc.) + chrome.tabs.query({ active: true, lastFocusedWindow: true }, (tabs) => { + if (chrome.runtime.lastError) { + bgWs.send( + JSON.stringify({ + type: "screenshot-error", + error: chrome.runtime.lastError.message, + requestId: message.requestId, + }) + ); + return; + } + + const targetTab = tabs.find((t) => /^(https?|file):\/\//.test(t.url)); + + if (!targetTab) { + bgWs.send( + JSON.stringify({ + type: "screenshot-error", + error: "No suitable tab found for screenshot", + requestId: message.requestId, + }) + ); + return; + } + + chrome.tabs.captureVisibleTab( + targetTab.windowId, + { format: "png" }, + (dataUrl) => { + if (chrome.runtime.lastError) { + bgWs.send( + JSON.stringify({ + type: "screenshot-error", + error: chrome.runtime.lastError.message, + requestId: message.requestId, + }) + ); + return; + } + + bgWs.send( + JSON.stringify({ + type: "screenshot-data", + data: dataUrl, + requestId: message.requestId, + }) + ); + } + ); + }); +} + +// Initialize WebSocket connection when the service worker starts +setupBackgroundWebSocket(); diff --git a/chrome-extension/devtools.js b/chrome-extension/devtools.js index c449402..12ae751 100644 --- a/chrome-extension/devtools.js +++ b/chrome-extension/devtools.js @@ -538,39 +538,69 @@ function setupWebSocket() { if (message.type === "take-screenshot") { console.log("Chrome Extension: Taking screenshot..."); - // Capture screenshot of the current tab - chrome.tabs.captureVisibleTab(null, { format: "png" }, (dataUrl) => { - if (chrome.runtime.lastError) { + // Capture screenshot of the inspected page tab (not the DevTools window) + chrome.tabs.get(currentTabId, (tab) => { + if (chrome.runtime.lastError || !tab) { console.error( - "Chrome Extension: Screenshot capture failed:", + "Chrome Extension: Unable to locate inspected tab:", chrome.runtime.lastError ); ws.send( JSON.stringify({ type: "screenshot-error", - error: chrome.runtime.lastError.message, + error: + (chrome.runtime.lastError && + chrome.runtime.lastError.message) || + "Inspected tab not found", requestId: message.requestId, }) ); return; } - console.log("Chrome Extension: Screenshot captured successfully"); - // Just send the screenshot data, let the server handle paths - const response = { - type: "screenshot-data", - data: dataUrl, - requestId: message.requestId, - // Only include path if it's configured in settings - ...(settings.screenshotPath && { path: settings.screenshotPath }), - }; - - console.log("Chrome Extension: Sending screenshot data response", { - ...response, - data: "[base64 data]", - }); - - ws.send(JSON.stringify(response)); + // Use the window containing the inspected tab to avoid devtools:// capture errors + chrome.tabs.captureVisibleTab( + tab.windowId, + { format: "png" }, + (dataUrl) => { + if (chrome.runtime.lastError) { + console.error( + "Chrome Extension: Screenshot capture failed:", + chrome.runtime.lastError + ); + ws.send( + JSON.stringify({ + type: "screenshot-error", + error: chrome.runtime.lastError.message, + requestId: message.requestId, + }) + ); + return; + } + + console.log( + "Chrome Extension: Screenshot captured successfully" + ); + + // Just send the screenshot data, let the server handle paths + const response = { + type: "screenshot-data", + data: dataUrl, + requestId: message.requestId, + // Only include path if it's configured in settings + ...(settings.screenshotPath && { + path: settings.screenshotPath, + }), + }; + + console.log( + "Chrome Extension: Sending screenshot data response", + { ...response, data: "[base64 data]" } + ); + + ws.send(JSON.stringify(response)); + } + ); }); } } catch (error) { diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..75b7c22 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "browser-tools-mcp", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/run-browser-tools.bat b/run-browser-tools.bat new file mode 100644 index 0000000..782c7a0 --- /dev/null +++ b/run-browser-tools.bat @@ -0,0 +1,61 @@ +@echo off +setlocal + +REM Choose which method to use (1 for NPX, 0 for direct paths) +set USE_NPX=1 + +if %USE_NPX%==1 ( + echo Using NPX to run the servers... + + echo Starting Browser Tools Server... + start "Browser Tools Server" cmd /c npx @agentdeskai/browser-tools-server + + echo Waiting for server to initialize... + timeout /t 2 /nobreak > nul + + echo Starting Browser Tools MCP... + start "Browser Tools MCP" cmd /c npx @agentdeskai/browser-tools-mcp@1.1.0 +) else ( + echo Using direct paths to run the servers... + + set NODE_PATH="C:\Program Files\nodejs\node.exe" + set SERVER_JS_PATH="F:\Projects\MCP-Servers\browser-tools-mcp\browser-tools-server\dist\browser-connector.js" + set MCP_JS_PATH="F:\Projects\MCP-Servers\browser-tools-mcp\browser-tools-mcp\dist\mcp-server.js" + + REM Verify that the paths exist + if not exist %NODE_PATH% ( + echo Error: Node.js executable not found at %NODE_PATH% + echo Please update the script with the correct path to node.exe + pause + exit /b 1 + ) + + if not exist %SERVER_JS_PATH% ( + echo Error: Browser Tools Server JavaScript file not found at %SERVER_JS_PATH% + echo Please update the script with the correct path + pause + exit /b 1 + ) + + if not exist %MCP_JS_PATH% ( + echo Error: Browser Tools MCP JavaScript file not found at %MCP_JS_PATH% + echo Please update the script with the correct path + pause + exit /b 1 + ) + + echo Starting Browser Tools Server... + start "Browser Tools Server" cmd /c %NODE_PATH% %SERVER_JS_PATH% + + echo Waiting for server to initialize... + timeout /t 2 /nobreak > nul + + echo Starting Browser Tools MCP... + start "Browser Tools MCP" cmd /c %NODE_PATH% %MCP_JS_PATH% +) + +echo Both servers are now running! +echo Close the command windows to stop the servers. +echo. +echo Press any key to exit this window... +pause > nul \ No newline at end of file diff --git a/run-browser-tools.ps1 b/run-browser-tools.ps1 new file mode 100644 index 0000000..4794089 --- /dev/null +++ b/run-browser-tools.ps1 @@ -0,0 +1,83 @@ +# Run Browser Tools MCP and Server +# This script runs both the Browser Tools MCP server and the Browser Tools Server + +# Choose which method to use +$useNpx = $true # Set to $false to use direct paths instead of NPX + +# Full paths to the node executable and JavaScript files (used if $useNpx = $false) +$nodePath = "C:\Program Files\nodejs\node.exe" +$serverJsPath = "F:\Projects\MCP-Servers\browser-tools-mcp\browser-tools-server\dist\browser-connector.js" +$mcpJsPath = "F:\Projects\MCP-Servers\browser-tools-mcp\browser-tools-mcp\dist\mcp-server.js" + +if ($useNpx) { + Write-Host "Using NPX to run the servers..." -ForegroundColor Cyan + + Write-Host "Starting Browser Tools Server..." -ForegroundColor Green + $serverJob = Start-Job -ScriptBlock { + cmd /c npx @agentdeskai/browser-tools-server + } + + # Wait a moment for the server to initialize + Start-Sleep -Seconds 2 + + Write-Host "Starting Browser Tools MCP..." -ForegroundColor Green + $mcpJob = Start-Job -ScriptBlock { + cmd /c npx @agentdeskai/browser-tools-mcp@1.1.0 + } +} else { + Write-Host "Using direct paths to run the servers..." -ForegroundColor Cyan + + # Verify that the paths exist + if (-not (Test-Path $nodePath)) { + Write-Host "Error: Node.js executable not found at $nodePath" -ForegroundColor Red + Write-Host "Please update the script with the correct path to node.exe" -ForegroundColor Red + exit 1 + } + + if (-not (Test-Path $serverJsPath)) { + Write-Host "Error: Browser Tools Server JavaScript file not found at $serverJsPath" -ForegroundColor Red + Write-Host "Please update the script with the correct path" -ForegroundColor Red + exit 1 + } + + if (-not (Test-Path $mcpJsPath)) { + Write-Host "Error: Browser Tools MCP JavaScript file not found at $mcpJsPath" -ForegroundColor Red + Write-Host "Please update the script with the correct path" -ForegroundColor Red + exit 1 + } + + Write-Host "Starting Browser Tools Server..." -ForegroundColor Green + $serverJob = Start-Job -ScriptBlock { + param($nodePath, $serverJsPath) + & "$nodePath" "$serverJsPath" + } -ArgumentList $nodePath, $serverJsPath + + # Wait a moment for the server to initialize + Start-Sleep -Seconds 2 + + Write-Host "Starting Browser Tools MCP..." -ForegroundColor Green + $mcpJob = Start-Job -ScriptBlock { + param($nodePath, $mcpJsPath) + & "$nodePath" "$mcpJsPath" + } -ArgumentList $nodePath, $mcpJsPath +} + +Write-Host "Both servers are now running!" -ForegroundColor Cyan +Write-Host "Press Ctrl+C to stop both servers" -ForegroundColor Yellow + +try { + # Show output from both jobs in real-time + while ($true) { + Receive-Job -Job $serverJob + Receive-Job -Job $mcpJob + Start-Sleep -Seconds 1 + } +} +finally { + # Clean up jobs when script is terminated + Stop-Job -Job $serverJob + Stop-Job -Job $mcpJob + Remove-Job -Job $serverJob + Remove-Job -Job $mcpJob + Write-Host "Servers stopped." -ForegroundColor Red +} \ No newline at end of file diff --git a/start-browser-tools-server.bat b/start-browser-tools-server.bat new file mode 100644 index 0000000..8f8cbc1 --- /dev/null +++ b/start-browser-tools-server.bat @@ -0,0 +1,4 @@ +@echo off +echo Starting Browser Tools Server... +cmd /c npx @agentdeskai/browser-tools-server +pause \ No newline at end of file From 0ebceca70aa858dce938b68250be0b7aeb5502ee Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Jun 2025 20:59:17 +0100 Subject: [PATCH 2/6] feat: enhance BrowserConnector to support client-provided paths for screenshots --- browser-tools-server/browser-connector.ts | 26 +- browser-tools-server/package-lock.json | 3081 +++++++++++++++++ .../screenshot-2025-06-10T19-58-57-696Z.png | Bin 0 -> 50274 bytes .../screenshot-2025-06-10T19-52-59-993Z.png | Bin 0 -> 48544 bytes 4 files changed, 3093 insertions(+), 14 deletions(-) create mode 100644 browser-tools-server/package-lock.json create mode 100644 test-output-final/screenshot-2025-06-10T19-58-57-696Z.png create mode 100644 test-output2/screenshot-2025-06-10T19-52-59-993Z.png diff --git a/browser-tools-server/browser-connector.ts b/browser-tools-server/browser-connector.ts index a4cc03c..e18e574 100644 --- a/browser-tools-server/browser-connector.ts +++ b/browser-tools-server/browser-connector.ts @@ -954,6 +954,11 @@ export class BrowserConnector { const requestId = Date.now().toString(); console.log("Browser Connector: Generated requestId:", requestId); + const clientPath = req.body?.path; + if (clientPath) { + console.log("Browser Connector: Client provided path:", clientPath); + } + // Create promise that will resolve when we get the screenshot data const screenshotPromise = new Promise<{ data: string; @@ -990,6 +995,7 @@ export class BrowserConnector { const message = JSON.stringify({ type: "take-screenshot", requestId: requestId, + ...(clientPath ? { path: clientPath } : {}), }); console.log( `Browser Connector: Sending WebSocket message to extension:`, @@ -1001,26 +1007,18 @@ export class BrowserConnector { console.log("Browser Connector: Waiting for screenshot data..."); const { data: base64Data, - path: customPath, + path: customPathFromExt, autoPaste, } = await screenshotPromise; console.log("Browser Connector: Received screenshot data, saving..."); - console.log("Browser Connector: Custom path from extension:", customPath); + console.log("Browser Connector: Custom path from extension:", customPathFromExt); console.log("Browser Connector: Auto-paste setting:", autoPaste); - // Always prioritize the path from the Chrome extension - let targetPath = customPath; - - // If no path provided by extension, fall back to defaults - if (!targetPath) { - targetPath = - currentSettings.screenshotPath || getDefaultDownloadsFolder(); - } - - // Convert the path for the current platform - targetPath = convertPathForCurrentPlatform(targetPath); + // Determine target path prioritizing: extension path > client path > settings/default + let targetPath = + customPathFromExt || clientPath || currentSettings.screenshotPath || getDefaultDownloadsFolder(); - console.log(`Browser Connector: Using path: ${targetPath}`); + console.log("Browser Connector: Resolved target path:", targetPath); if (!base64Data) { throw new Error("No screenshot data received from Chrome extension"); diff --git a/browser-tools-server/package-lock.json b/browser-tools-server/package-lock.json new file mode 100644 index 0000000..44c3d5e --- /dev/null +++ b/browser-tools-server/package-lock.json @@ -0,0 +1,3081 @@ +{ + "name": "@agentdeskai/browser-tools-server", + "version": "1.2.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@agentdeskai/browser-tools-server", + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.4.1", + "body-parser": "^1.20.3", + "cors": "^2.8.5", + "express": "^4.21.2", + "lighthouse": "^11.6.0", + "llm-cost": "^1.0.5", + "node-fetch": "^2.7.0", + "puppeteer-core": "^22.4.1", + "ws": "^8.18.0" + }, + "bin": { + "browser-tools-server": "dist/browser-connector.js" + }, + "devDependencies": { + "@types/body-parser": "^1.19.5", + "@types/cors": "^2.8.17", + "@types/express": "^5.0.0", + "@types/node": "^22.13.1", + "@types/node-fetch": "^2.6.11", + "@types/puppeteer-core": "^7.0.4", + "@types/ws": "^8.5.14", + "typescript": "^5.7.3" + }, + "optionalDependencies": { + "chrome-launcher": "^1.1.2" + } + }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.4.tgz", + "integrity": "sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA==", + "license": "MIT", + "dependencies": { + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/intl-localematcher": "0.6.1", + "decimal.js": "^10.4.3", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/ecma402-abstract/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@formatjs/fast-memoize": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz", + "integrity": "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/fast-memoize/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.2.tgz", + "integrity": "sha512-AfiMi5NOSo2TQImsYAg8UYddsNJ/vUEv/HaNqiFjnI3ZFfWihUtD5QtuX6kHl8+H+d3qvnE/3HZrfzgdWpsLNA==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/icu-skeleton-parser": "1.8.14", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.14", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.14.tgz", + "integrity": "sha512-i4q4V4qslThK4Ig8SxyD76cp3+QJ3sAqr7f6q9VVfeGtxG9OhiAk3y9XF6Q41OymsKzsGQ6OQQoJNY4/lI8TcQ==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.4", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.1.tgz", + "integrity": "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/intl-localematcher/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.5.0.tgz", + "integrity": "sha512-IJ+5iVVs8FCumIHxWqpwgkwOzyhtHVKy45s6Ug7Dv0MfRpaYisH8QQ87rIWeWdOzlk8sfhitZ7HCyQZk7d6b8w==", + "dependencies": { + "content-type": "^1.0.5", + "eventsource": "^3.0.2", + "raw-body": "^3.0.0", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.24.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@paulirish/trace_engine": { + "version": "0.0.19", + "resolved": "https://registry.npmjs.org/@paulirish/trace_engine/-/trace_engine-0.0.19.tgz", + "integrity": "sha512-3tjEzXBBtU83DkCJAdU2UwBBunspiwTCn+Y5jOxm592cfEuLr/T7Lcn+QhRerVqkSik2mnjN4X6NgHZjI9Biwg==", + "license": "BSD-3-Clause" + }, + "node_modules/@puppeteer/browsers": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz", + "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.3.5", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.4.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@puppeteer/browsers/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@puppeteer/browsers/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/@puppeteer/browsers/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/core": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", + "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/hub": "6.19.7", + "@sentry/minimal": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", + "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", + "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/node": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz", + "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/core": "6.19.7", + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/node/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "license": "MIT" + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.0.tgz", + "integrity": "sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", + "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "22.13.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", + "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/puppeteer-core": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@types/puppeteer-core/-/puppeteer-core-7.0.4.tgz", + "integrity": "sha512-7YK4lAjXTAsFN0HFWSRr43J1iQX+xoI5EXyOYnG6F+OhqkTR+L8bYnU8dqELrKmzvbSlxczh3F7dEBJ7TriqEw==", + "deprecated": "This is a stub types definition. puppeteer-core provides its own type definitions, so you do not need this installed.", + "dev": true, + "license": "MIT", + "dependencies": { + "puppeteer-core": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.18", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz", + "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ast-types/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "license": "Apache-2.0" + }, + "node_modules/bare-events": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", + "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz", + "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", + "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", + "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "streamx": "^2.21.0" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chrome-launcher": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-1.2.0.tgz", + "integrity": "sha512-JbuGuBNss258bvGil7FT4HKdC3SC2K7UAEUqiPy3ACS3Yxo3hAW6bvFpCu2HsIJLgTqxgEX6BkujvzZfLpUD0Q==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^2.0.1" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.cjs" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/chromium-bidi": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz", + "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==", + "license": "Apache-2.0", + "dependencies": { + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.23.8" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/chromium-bidi/node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "license": "BSD-2-Clause", + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/csp_evaluator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/csp_evaluator/-/csp_evaluator-1.1.1.tgz", + "integrity": "sha512-N3ASg0C4kNPUaNxt1XAvzHIVuzdtr8KLgfk1O8WDyimp1GisPAHESupArO2ieHk9QWbrJ/WkQODyh21Ps/xhxw==", + "license": "Apache-2.0" + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "license": "MIT" + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1232444", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1232444.tgz", + "integrity": "sha512-pM27vqEfxSxRkTMnF+XCmxSEb6duO5R+t8A9DEEJgy4Wz2RVanje2mmj99B6A3zv2r/qGfYlOvYznUhuokizmg==", + "license": "BSD-3-Clause" + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventsource": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.5.tgz", + "integrity": "sha512-LT/5J605bx5SNyE+ITBDiM3FxffBiq9un7Vx0EwMDM3vg8sWKx/tO2zC+LMqZ+smAM0F2hblaDZUVZF0te2pSw==", + "dependencies": { + "eventsource-parser": "^3.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.0.tgz", + "integrity": "sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/form-data": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", + "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-uri": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", + "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/get-uri/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-link-header": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.3.tgz", + "integrity": "sha512-3cZ0SRL8fb9MUlU3mKM61FcQvPfXx2dBrZW3Vbg5CXa8jFlK8OaEpePenLe1oEXQduhz8b0QjsqfS59QP4AJDQ==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/image-ssim": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/image-ssim/-/image-ssim-0.2.0.tgz", + "integrity": "sha512-W7+sO6/yhxy83L0G7xR8YAc5Z5QFtYEXXRV6EaE8tuYBZJnA3gVgp3q7X7muhLZVodeb9UfvjSbwt9VJwjIYAg==", + "license": "MIT" + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/intl-messageformat": { + "version": "10.7.16", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.16.tgz", + "integrity": "sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==", + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/icu-messageformat-parser": "2.11.2", + "tslib": "^2.8.0" + } + }, + "node_modules/intl-messageformat/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", + "license": "BSD-3-Clause" + }, + "node_modules/js-library-detector": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/js-library-detector/-/js-library-detector-6.7.0.tgz", + "integrity": "sha512-c80Qupofp43y4cJ7+8TTDN/AsDwLi5oOm/plBrWI+iQt485vKXCco+yVmOwEgdo9VOdsYTuV0UlTeetVPTriXA==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT" + }, + "node_modules/lighthouse": { + "version": "11.7.1", + "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-11.7.1.tgz", + "integrity": "sha512-QuvkZvobZ8Gjv2Jkxl6TKhV5JYBzU+lzpqTY+Y1iH5IUc1SMYK4IOpBnSpp6PkM2FbNyur9uoNutPhsuLLqGTg==", + "license": "Apache-2.0", + "dependencies": { + "@paulirish/trace_engine": "^0.0.19", + "@sentry/node": "^6.17.4", + "axe-core": "^4.9.0", + "chrome-launcher": "^1.1.1", + "configstore": "^5.0.1", + "csp_evaluator": "1.1.1", + "devtools-protocol": "0.0.1232444", + "enquirer": "^2.3.6", + "http-link-header": "^1.1.1", + "intl-messageformat": "^10.5.3", + "jpeg-js": "^0.4.4", + "js-library-detector": "^6.7.0", + "lighthouse-logger": "^2.0.1", + "lighthouse-stack-packs": "1.12.1", + "lodash": "^4.17.21", + "lookup-closest-locale": "6.2.0", + "metaviewport-parser": "0.3.0", + "open": "^8.4.0", + "parse-cache-control": "1.0.1", + "ps-list": "^8.0.0", + "puppeteer-core": "^22.5.0", + "robots-parser": "^3.0.1", + "semver": "^5.3.0", + "speedline-core": "^1.4.3", + "third-party-web": "^0.24.1", + "tldts-icann": "^6.1.0", + "ws": "^7.0.0", + "yargs": "^17.3.1", + "yargs-parser": "^21.0.0" + }, + "bin": { + "chrome-debug": "core/scripts/manual-chrome-launcher.js", + "lighthouse": "cli/index.js", + "smokehouse": "cli/test/smokehouse/frontends/smokehouse-bin.js" + }, + "engines": { + "node": ">=18.16" + } + }, + "node_modules/lighthouse-logger": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-2.0.1.tgz", + "integrity": "sha512-ioBrW3s2i97noEmnXxmUq7cjIcVRjT5HBpAYy8zE11CxU9HqlWHHeRxfeN1tn8F7OEMVPIC9x1f8t3Z7US9ehQ==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-stack-packs": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.12.1.tgz", + "integrity": "sha512-i4jTmg7tvZQFwNFiwB+nCK6a7ICR68Xcwo+VIVd6Spi71vBNFUlds5HiDrSbClZdkQDON2Bhqv+KKJIo5zkPeA==", + "license": "Apache-2.0" + }, + "node_modules/lighthouse/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/llm-cost": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/llm-cost/-/llm-cost-1.0.5.tgz", + "integrity": "sha512-1JBZBwmcgX1yIEY9ky9mYuU7VnaE82siEOZJgG9Gq6qNs+VLUlU1X24yHjBRjGdwoBhfn5APJIdifdMrcpvH1w==", + "dependencies": { + "tiktoken": "^1.0.11" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lookup-closest-locale": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/lookup-closest-locale/-/lookup-closest-locale-6.2.0.tgz", + "integrity": "sha512-/c2kL+Vnp1jnV6K6RpDTHK3dgg0Tu2VVp+elEiJpjfS1UyY7AjOYHohRug6wT0OpoX2qFgNORndE9RqesfVxWQ==", + "license": "MIT" + }, + "node_modules/lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/marky": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", + "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", + "license": "Apache-2.0" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/metaviewport-parser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/metaviewport-parser/-/metaviewport-parser-0.3.0.tgz", + "integrity": "sha512-EoYJ8xfjQ6kpe9VbVHvZTZHiOl4HL1Z18CrZ+qahvLXT7ZO4YTC2JMyt5FaUp9JJp6J4Ybb/z7IsCXZt86/QkQ==", + "license": "MIT" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-agent": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/ps-list": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-8.1.1.tgz", + "integrity": "sha512-OPS9kEJYVmiO48u/B9qneqhkMvgCxT+Tm28VCEJpheTpl8cJ0ffZRRNgS5mrQRTrX5yRTpaJ+hRDeefXYmmorQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/puppeteer-core": { + "version": "22.15.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", + "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==", + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.3.0", + "chromium-bidi": "0.6.3", + "debug": "^4.3.6", + "devtools-protocol": "0.0.1312386", + "ws": "^8.18.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/puppeteer-core/node_modules/devtools-protocol": { + "version": "0.0.1312386", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz", + "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==", + "license": "BSD-3-Clause" + }, + "node_modules/puppeteer-core/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/robots-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-3.0.1.tgz", + "integrity": "sha512-s+pyvQeIKIZ0dx5iJiQk1tPLJAWln39+MI5jtM8wnyws+G5azk+dMnMX0qfbqNetKKNgcWWOdi0sfm+FbQbgdQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz", + "integrity": "sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==", + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks-proxy-agent/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socks-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/speedline-core": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/speedline-core/-/speedline-core-1.4.3.tgz", + "integrity": "sha512-DI7/OuAUD+GMpR6dmu8lliO2Wg5zfeh+/xsdyJZCzd8o5JgFUjCeLsBDuZjIQJdwXS3J0L/uZYrELKYqx+PXog==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "image-ssim": "^0.2.0", + "jpeg-js": "^0.4.1" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamx": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", + "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar-fs": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.9.tgz", + "integrity": "sha512-XF4w9Xp+ZQgifKakjZYmFdkLoSWd34VGKcsTCwlNWM7QG3ZbaxnTsaBwnjFZqHRf/rROxaR8rXnbtwdvaDI+lA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/text-decoder": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/third-party-web": { + "version": "0.24.5", + "resolved": "https://registry.npmjs.org/third-party-web/-/third-party-web-0.24.5.tgz", + "integrity": "sha512-1rUOdMYpNTRajgk1F7CmHD26oA6rTKekBjHay854J6OkPXeNyPcR54rhWDaamlWyi9t2wAVPQESdedBhucmOLA==", + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, + "node_modules/tiktoken": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/tiktoken/-/tiktoken-1.0.20.tgz", + "integrity": "sha512-zVIpXp84kth/Ni2me1uYlJgl2RZ2EjxwDaWLeDY/s6fZiyO9n1QoTOM5P7ZSYfToPvAvwYNMbg5LETVYVKyzfQ==" + }, + "node_modules/tldts-core": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "license": "MIT" + }, + "node_modules/tldts-icann": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-icann/-/tldts-icann-6.1.86.tgz", + "integrity": "sha512-NFxmRT2lAEMcCOBgeZ0NuM0zsK/xgmNajnY6n4S1mwAKocft2s2ise1O3nQxrH3c+uY6hgHUV9GGNVp7tUE4Sg==", + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.86" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "license": "MIT", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/zod": { + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz", + "integrity": "sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==", + "peerDependencies": { + "zod": "^3.24.1" + } + } + } +} diff --git a/test-output-final/screenshot-2025-06-10T19-58-57-696Z.png b/test-output-final/screenshot-2025-06-10T19-58-57-696Z.png new file mode 100644 index 0000000000000000000000000000000000000000..636868a175cf19260259674eb8999dea53d75a51 GIT binary patch literal 50274 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

7Bsy6_-_)+LEF8$YCrj5{!-p{U8@Tw z#(RebG=ES&{=0G|56>Ii$i33KKSRA)xe8MaH-2OB4?>P>_3!+B9-d6m{{h_&p631i wn{#%szZS&+9axmhB@g9j9^4%LIV5>`Jd}w~s{Sr*`)TYO*DZ~!uHAY3f7}jCg8%>k literal 0 HcmV?d00001 diff --git a/test-output2/screenshot-2025-06-10T19-52-59-993Z.png b/test-output2/screenshot-2025-06-10T19-52-59-993Z.png new file mode 100644 index 0000000000000000000000000000000000000000..34c87a9ea7354ecfb5e320d1fa5259adb8bebaa1 GIT binary patch literal 48544 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 literal 0 HcmV?d00001 From 33ecc02b7dbbe26e0841bce66388266c47f6e9b1 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Jun 2025 21:19:36 +0100 Subject: [PATCH 3/6] docs: update README.md to include v1.3.0 release notes and enhancements for screenshot functionality --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 4e3c283..3723cfb 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,12 @@ Check out our project roadmap here: [Github Roadmap / Project Board](https://git ## Updates +v1.3.0 is out! Highlights: + +- **Configurable screenshot save path** – the `takeScreenshot` MCP tool now accepts an optional `path` parameter so you can store PNGs anywhere (e.g. `await tools.takeScreenshot({ path: "F:/screens/home.png" })`). +- **Works with DevTools closed** – a background WebSocket handler in the Chrome extension lets you capture screenshots even after you close or undock the BrowserTools panel. +- Misc. merge-conflict clean-ups and stability improvements. + v1.2.0 is out! Here's a quick breakdown of the update: - You can now enable "Allow Auto-Paste into Cursor" within the DevTools panel. Screenshots will be automatically pasted into Cursor (just make sure to focus/click into the Agent input field in Cursor, otherwise it won't work!) - Integrated a suite of SEO, performance, accessibility, and best practice analysis tools via Lighthouse From be646844864bfd777c268469abb91fe409becd10 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Jun 2025 21:36:50 +0100 Subject: [PATCH 4/6] docs: update README.md to refine v1.3.0 release notes with recent highlights --- README.md | 2 +- browser-tools-mcp/mcp-server.ts | 64 +++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3723cfb..390de91 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Check out our project roadmap here: [Github Roadmap / Project Board](https://git ## Updates -v1.3.0 is out! Highlights: +v1.3.0 is out! recent Highlights: - **Configurable screenshot save path** – the `takeScreenshot` MCP tool now accepts an optional `path` parameter so you can store PNGs anywhere (e.g. `await tools.takeScreenshot({ path: "F:/screens/home.png" })`). - **Works with DevTools closed** – a background WebSocket handler in the Chrome extension lets you capture screenshots even after you close or undock the BrowserTools panel. diff --git a/browser-tools-mcp/mcp-server.ts b/browser-tools-mcp/mcp-server.ts index 1e4811f..78f9f98 100644 --- a/browser-tools-mcp/mcp-server.ts +++ b/browser-tools-mcp/mcp-server.ts @@ -5,6 +5,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js" import path from "path"; import fs from "fs"; import { z } from "zod"; +import { spawn, ChildProcess } from "child_process"; // Create the MCP server const server = new McpServer({ @@ -17,6 +18,66 @@ let discoveredHost = "127.0.0.1"; let discoveredPort = 3025; let serverDiscovered = false; +// ======== Connector auto-launch support ======== +let connectorProcess: ChildProcess | null = null; + +/** + * Ensures the browser-connector process is running. If it is already + * started (or a previous instance is still alive) the call is a no-op. + * + * On Windows/macOS/Linux it spawns: `node /browser-tools-server/dist/browser-connector.js` + * in detached mode so that it will keep running independently of the MCP + * server STDIO transport handling. + */ +function ensureConnectorRunning() { + try { + if (connectorProcess && !connectorProcess.killed) { + return; // already running + } + + // Resolve the connector script path relative to this file's compiled dir + // dist/mcp-server.js -> ../../browser-tools-server/dist/browser-connector.js + const connectorPath = path.resolve( + __dirname, + "..", + "..", + "browser-tools-server", + "dist", + "browser-connector.js" + ); + + if (!fs.existsSync(connectorPath)) { + console.error( + "Browser-tools connector script not found at:", + connectorPath + ); + return; + } + + console.error("Starting browser-tools connector at", connectorPath); + connectorProcess = spawn(process.execPath, [connectorPath], { + env: { ...process.env }, + stdio: "ignore", // change to 'inherit' if you want logs in the same console + detached: true, + }); + + connectorProcess.unref(); + + // Make sure we clean up on exit + process.on("exit", () => { + if (connectorProcess && !connectorProcess.killed) { + try { + connectorProcess.kill(); + } catch { + /* ignore */ + } + } + }); + } catch (err) { + console.error("Failed to start browser-tools connector:", err); + } +} + // Function to get the default port from environment variable or default function getDefaultServerPort(): number { // Check environment variable first @@ -59,6 +120,9 @@ function getDefaultServerHost(): string { async function discoverServer(): Promise { console.log("Starting server discovery process"); + // Try to ensure the connector is running before scanning + ensureConnectorRunning(); + // Common hosts to try const hosts = [getDefaultServerHost(), "127.0.0.1", "localhost"]; From 8d552615334956dcd93a2686aaeef0c6f2140478 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Jun 2025 21:39:23 +0100 Subject: [PATCH 5/6] fix: remove redundant path segment in ensureConnectorRunning function --- browser-tools-mcp/mcp-server.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/browser-tools-mcp/mcp-server.ts b/browser-tools-mcp/mcp-server.ts index 78f9f98..43f48a9 100644 --- a/browser-tools-mcp/mcp-server.ts +++ b/browser-tools-mcp/mcp-server.ts @@ -40,7 +40,6 @@ function ensureConnectorRunning() { const connectorPath = path.resolve( __dirname, "..", - "..", "browser-tools-server", "dist", "browser-connector.js" From 29cd270b937221708dd578580a79f8e048a43cac Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 11 Jun 2025 11:52:21 +0100 Subject: [PATCH 6/6] refactor: improve screenshot handling in background and devtools scripts by ensuring active tab focus and enhancing local server detection --- browser-tools-mcp.code-workspace | 8 ++ chrome-extension/background.js | 91 ++++++++++----- chrome-extension/devtools.js | 107 ++++++++++++------ .../screenshot-2025-06-10T19-58-57-696Z.png | Bin 50274 -> 0 bytes .../screenshot-2025-06-10T19-52-59-993Z.png | Bin 48544 -> 0 bytes 5 files changed, 144 insertions(+), 62 deletions(-) create mode 100644 browser-tools-mcp.code-workspace delete mode 100644 test-output-final/screenshot-2025-06-10T19-58-57-696Z.png delete mode 100644 test-output2/screenshot-2025-06-10T19-52-59-993Z.png diff --git a/browser-tools-mcp.code-workspace b/browser-tools-mcp.code-workspace new file mode 100644 index 0000000..876a149 --- /dev/null +++ b/browser-tools-mcp.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": {} +} \ No newline at end of file diff --git a/chrome-extension/background.js b/chrome-extension/background.js index 7ab4271..deb7d71 100644 --- a/chrome-extension/background.js +++ b/chrome-extension/background.js @@ -480,8 +480,8 @@ function setupBackgroundWebSocket() { } function handleBackgroundScreenshot(message) { - // Step 1: find the real page tab (ignore devtools://, chrome://, etc.) - chrome.tabs.query({ active: true, lastFocusedWindow: true }, (tabs) => { + // Fetch all tabs across all windows + chrome.tabs.query({}, (tabs) => { if (chrome.runtime.lastError) { bgWs.send( JSON.stringify({ @@ -493,7 +493,36 @@ function handleBackgroundScreenshot(message) { return; } - const targetTab = tabs.find((t) => /^(https?|file):\/\//.test(t.url)); + // Helper: determine if a tab is a potential local dev server + const isLocalhost = (url) => { + try { + const { hostname } = new URL(url); + return ( + hostname === "localhost" || + hostname === "127.0.0.1" || + hostname === "0.0.0.0" || + hostname.endsWith(".localhost") || + hostname.endsWith(".local") + ); + } catch (_) { + return false; + } + }; + + // 1. Prefer any visible tab whose URL points to localhost / dev server + let targetTab = tabs.find((t) => t.active && isLocalhost(t.url || "")); + + // 2. Otherwise, pick the first tab (any window) that is localhost-like + if (!targetTab) { + targetTab = tabs.find((t) => isLocalhost(t.url || "")); + } + + // 3. Fallback: previously used strategy – active real web page in last focused window + if (!targetTab) { + targetTab = tabs.find( + (t) => t.active && /^(https?|file):\/\//.test(t.url || "") + ); + } if (!targetTab) { bgWs.send( @@ -506,31 +535,39 @@ function handleBackgroundScreenshot(message) { return; } - chrome.tabs.captureVisibleTab( - targetTab.windowId, - { format: "png" }, - (dataUrl) => { - if (chrome.runtime.lastError) { - bgWs.send( - JSON.stringify({ - type: "screenshot-error", - error: chrome.runtime.lastError.message, - requestId: message.requestId, - }) - ); - return; - } + // Ensure the window & tab are focused so captureVisibleTab grabs the correct content + chrome.windows.update(targetTab.windowId, { focused: true }, () => { + chrome.tabs.update(targetTab.id, { active: true }, () => { + // Small delay gives Chrome time to render the tab before capture + setTimeout(() => { + chrome.tabs.captureVisibleTab( + targetTab.windowId, + { format: "png" }, + (dataUrl) => { + if (chrome.runtime.lastError) { + bgWs.send( + JSON.stringify({ + type: "screenshot-error", + error: chrome.runtime.lastError.message, + requestId: message.requestId, + }) + ); + return; + } - bgWs.send( - JSON.stringify({ - type: "screenshot-data", - data: dataUrl, - requestId: message.requestId, - ...(message.path ? { path: message.path } : {}), - }) - ); - } - ); + bgWs.send( + JSON.stringify({ + type: "screenshot-data", + data: dataUrl, + requestId: message.requestId, + ...(message.path ? { path: message.path } : {}), + }) + ); + } + ); + }, 400); // 400ms delay – tweak as necessary + }); + }); }); } diff --git a/chrome-extension/devtools.js b/chrome-extension/devtools.js index 65dc098..8a1136d 100644 --- a/chrome-extension/devtools.js +++ b/chrome-extension/devtools.js @@ -966,44 +966,81 @@ async function setupWebSocket() { // console.log("Chrome Extension: Received heartbeat response"); } else if (message.type === "take-screenshot") { console.log("Chrome Extension: Taking screenshot..."); - // Capture screenshot of the current tab - chrome.tabs.captureVisibleTab(null, { format: "png" }, (dataUrl) => { - if (chrome.runtime.lastError) { - console.error( - "Chrome Extension: Screenshot capture failed:", - chrome.runtime.lastError - ); - ws.send( - JSON.stringify({ - type: "screenshot-error", - error: chrome.runtime.lastError.message, - requestId: message.requestId, - }) - ); - return; - } - console.log("Chrome Extension: Screenshot captured successfully"); - // Just send the screenshot data, let the server handle paths - const response = { - type: "screenshot-data", - data: dataUrl, - requestId: message.requestId, - ...(message.path - ? { path: message.path } - : settings.screenshotPath - ? { path: settings.screenshotPath } - : {}), - autoPaste: settings.allowAutoPaste, - }; - - console.log("Chrome Extension: Sending screenshot data response", { - ...response, - data: "[base64 data]", + const inspectedTabId = chrome.devtools?.inspectedWindow?.tabId; + + // Helper to capture screenshot after ensuring tab is active + const captureForTab = (tab) => { + chrome.windows.update(tab.windowId, { focused: true }, () => { + chrome.tabs.update(tab.id, { active: true }, () => { + setTimeout(() => { + chrome.tabs.captureVisibleTab( + tab.windowId, + { format: "png" }, + (dataUrl) => { + if (chrome.runtime.lastError) { + console.error( + "Chrome Extension: Screenshot capture failed:", + chrome.runtime.lastError + ); + ws.send( + JSON.stringify({ + type: "screenshot-error", + error: chrome.runtime.lastError.message, + requestId: message.requestId, + }) + ); + return; + } + + console.log( + "Chrome Extension: Screenshot captured successfully" + ); + const response = { + type: "screenshot-data", + data: dataUrl, + requestId: message.requestId, + ...(message.path + ? { path: message.path } + : settings.screenshotPath + ? { path: settings.screenshotPath } + : {}), + autoPaste: settings.allowAutoPaste, + }; + + console.log( + "Chrome Extension: Sending screenshot data response", + { ...response, data: "[base64 data]" } + ); + + ws.send(JSON.stringify(response)); + } + ); + }, 300); // give the browser a moment to render + }); }); + }; + + // Strategy: + // 1. If we have an inspected tab, prefer it + if (typeof inspectedTabId === "number") { + chrome.tabs.get(inspectedTabId, (inspectedTab) => { + if (!chrome.runtime.lastError && inspectedTab) { + captureForTab(inspectedTab); + return; + } - ws.send(JSON.stringify(response)); - }); + // Fallback: capture the currently active tab + chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => { + captureForTab(tabs[0]); + }); + }); + } else { + // No inspected tab (DevTools closed?) – capture active tab + chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => { + captureForTab(tabs[0]); + }); + } } else if (message.type === "get-current-url") { console.log("Chrome Extension: Received request for current URL"); diff --git a/test-output-final/screenshot-2025-06-10T19-58-57-696Z.png b/test-output-final/screenshot-2025-06-10T19-58-57-696Z.png deleted file mode 100644 index 636868a175cf19260259674eb8999dea53d75a51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50274 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

7Bsy6_-_)+LEF8$YCrj5{!-p{U8@Tw z#(RebG=ES&{=0G|56>Ii$i33KKSRA)xe8MaH-2OB4?>P>_3!+B9-d6m{{h_&p631i wn{#%szZS&+9axmhB@g9j9^4%LIV5>`Jd}w~s{Sr*`)TYO*DZ~!uHAY3f7}jCg8%>k diff --git a/test-output2/screenshot-2025-06-10T19-52-59-993Z.png b/test-output2/screenshot-2025-06-10T19-52-59-993Z.png deleted file mode 100644 index 34c87a9ea7354ecfb5e320d1fa5259adb8bebaa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48544 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