From 6305644f2826206cece31beefb4479a4fc0c4cd6 Mon Sep 17 00:00:00 2001 From: mharb Date: Sun, 22 Feb 2026 05:01:04 +0000 Subject: [PATCH] Project Genesis Signed-off-by: mharb --- .gitignore | 169 ++ DEPLOYMENT_GUIDE.md | 112 ++ README.md | 147 ++ eslint.config.mjs | 43 + package-lock.json | 3796 +++++++++++++++++++++++++++++++++++++++ package.json | 25 + sanitizing-proxy.bundle | Bin 0 -> 52929 bytes src/index.js | 1071 +++++++++++ tests/puppeteer.test.js | 342 ++++ 9 files changed, 5705 insertions(+) create mode 100644 .gitignore create mode 100644 DEPLOYMENT_GUIDE.md create mode 100644 README.md create mode 100644 eslint.config.mjs create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 sanitizing-proxy.bundle create mode 100644 src/index.js create mode 100644 tests/puppeteer.test.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..01010d9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,169 @@ +.aider* + +# ------------------------- +# macOS +# ------------------------- +.DS_Store +.AppleDouble +.LSOverride +Icon +._* + +# ------------------------- +# Editor / IDE +# ------------------------- +.vscode/ +.idea/ +*.sublime-workspace +*.sublime-project + +# ------------------------- +# Node / JavaScript +# ------------------------- +# dependency directories +node_modules/ +.pnp/ +.pnp.js + +# lockfiles (optional to ignore; keep if you want reproducible installs) +# package-lock.json +# yarn.lock +# pnpm-lock.yaml + +# build outputs +dist/ +build/ +lib/ +coverage/ +.nyc_output/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# environment +.env +.env.*.local +.env.local +.env.test +.env.production + +# misc +*.tgz +.cache/ +.next/ +.nuxt/ +out/ + +# ------------------------- +# Python +# ------------------------- +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Virtual environments +.env/ +.venv/ +venv/ +ENV/ +env/ +venv.bak/ + +# Distribution / packaging +build/ +dist/ +*.egg-info/ +.eggs/ +pip-wheel-metadata/ +share/python-wheels/ + +# Test / coverage +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +.pytest_cache/ + +# PyInstaller +*.manifest +*.spec + +# Django / Flask / SQLite +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal +instance/ +.webassets-cache + +# ------------------------- +# Cloudflare Wrangler / Workers +# ------------------------- +# Wrangler config files that may contain secrets or local overrides +.wrangler/ +wrangler.toml +wrangler.json +wrangler.jsonc +wrangler.dev.* +# build artifacts for Workers +dist/ +build/ +# Cloudflare generated files +*.worker.js +*.worker.mjs + +# ------------------------- +# Secrets, keys, and credentials +# ------------------------- +# Common secret files +*.pem +*.key +*.crt +secrets.* +credentials.* +*.env +.env.* + +# ------------------------- +# CI / tooling +# ------------------------- +# GitHub Actions +.github/workflows/*.yml + +# npm / pnpm / yarn caches +.npm/ +.yarn/* +.pnpm-store/ + +# OS generated files +Thumbs.db +ehthumbs.db + +# ------------------------- +# Test files and outputs +# ------------------------- +test-results/ +debug-*.js +comprehensive-*.js +simple-*.js +final-*.js +browse-*.js +form-test.html + +# ------------------------- +# Optional: lockfiles and package manager files you may want to track +# ------------------------- +# Uncomment to ignore if you prefer not to commit lockfiles +# package-lock.json +# yarn.lock +# pnpm-lock.yaml + diff --git a/DEPLOYMENT_GUIDE.md b/DEPLOYMENT_GUIDE.md new file mode 100644 index 0000000..c4faa44 --- /dev/null +++ b/DEPLOYMENT_GUIDE.md @@ -0,0 +1,112 @@ +# CDN Surfer - Deployment Guide + +A high-performance proxy leveraging Cloudflare's global edge network for accelerated web browsing. + +**CDN Surfer** - Surf the web at CDN speeds! 🌐 + +## Quick Start + +### 1. Deploy to Cloudflare + +```bash +npx wrangler deploy +``` + +That's it! Your edge proxy is now live. + +## Configuration + +### KV Namespaces + +The proxy requires two KV namespaces: + +1. **PROXY_KEYS** - Stores valid API keys +2. **PROXY_COOKIES** - Stores session cookies per IP/domain + +Update `wrangler.toml` with your KV namespace IDs: + +```toml +[[kv_namespaces]] +binding = "PROXY_KEYS" +id = "your-keys-namespace-id" + +[[kv_namespaces]] +binding = "PROXY_COOKIES" +id = "your-cookies-namespace-id" +``` + +### API Keys + +Add API keys to the PROXY_KEYS KV namespace: + +```bash +npx wrangler kv:key put --namespace-id YOUR_KEYS_ID "pk_yourkey123" "valid" +``` + +The default test key is: `pk_test12345678901234567890123456789012` + +## Usage + +### Example Usage +```bash +# Access dashboard with API key +https://your-worker-url.workers.dev/?api_key=YOUR_API_KEY + +# Proxy a URL +curl "https://your-worker-url.workers.dev/?fetch=https://example.com&api_key=YOUR_API_KEY" +``` + +## Features + +- ⚔ **Edge Acceleration** - Leverages Cloudflare's global CDN +- šŸ”„ **Complete URL Rewriting** - All resources route through edge +- šŸŽÆ **Browser Consistency** - Standardized fingerprints across clients +- šŸŖ **Session Management** - Cookie handling with KV storage +- šŸš€ **Performance Optimized** - Efficient content delivery + +## Configuration Options + +Edit `src/index.js` to customize: + +```javascript +const CONFIG = { + BLOCKED_REQ: new Set([...]), // Headers to remove from requests + BLOCKED_RES: new Set([...]), // Headers to remove from responses + MAX_SIZE: 10485760 // Max response size (10MB) +}; +``` + +## Monitoring + +Check deployment status: +```bash +npx wrangler tail +``` + +View logs in Cloudflare Dashboard → Workers → Your Worker → Logs + +## Troubleshooting + +### 401 Authentication Error +- Ensure `api_key` query parameter is included +- Verify API key exists in PROXY_KEYS KV namespace + +### Content Not Loading +- Check that URLs are properly encoded +- Verify KV namespaces are configured correctly + +### Rate Limiting +- Adjust limits in CONFIG object if needed + +## Production Checklist + +- [ ] Update KV namespace IDs in wrangler.toml +- [ ] Add production API keys to PROXY_KEYS +- [ ] Test with target websites +- [ ] Configure appropriate rate limits +- [ ] Set up monitoring and alerts +- [ ] Review Cloudflare Worker limits for your plan + +## Support + +For issues or questions, check the Cloudflare Workers documentation or open an issue. diff --git a/README.md b/README.md new file mode 100644 index 0000000..3879556 --- /dev/null +++ b/README.md @@ -0,0 +1,147 @@ +# CDN Surfer + +A high-performance Cloudflare Worker-based proxy that leverages Cloudflare's global edge network to accelerate web browsing and optimize content delivery. + +**CDN Surfer** - Surf the web at CDN speeds! 🌐 + +## Project Layout + +- **`wrangler.toml`** + - Worker entrypoint is `src/index.js` + - KV namespace bindings for API keys and session cookies +- **`src/index.js`** + - Single-file Worker implementation + - Edge routing + content optimization + URL rewriting + browser consistency + - Serves the dashboard HTML when no `fetch` query param is present +- **`package.json`** + - Project dependencies and deployment scripts + +## Features + +- **Edge Acceleration**: Leverages Cloudflare's global CDN +- **Complete URL Rewriting**: All links route through the edge +- **Browser Consistency**: Standardizes browser fingerprints +- **Session Management**: Cookie handling with KV storage +- **Performance Optimized**: Efficient content delivery + +## Installation + +1. Clone or download this project +2. Install dependencies: + ```bash + npm install + ``` + +## Configuration + +Create `wrangler.toml` (gitignored for security): + +```toml +name = "sanitizing-proxy" +main = "src/index.js" +compatibility_date = "2024-01-01" + +[[kv_namespaces]] +binding = "PROXY_KEYS" +id = "your-keys-namespace-id" + +[[kv_namespaces]] +binding = "PROXY_COOKIES" +id = "your-cookies-namespace-id" +``` + +All other configuration is in `src/index.js` inside the `CONFIG` object. + +## Usage + +### Web Interface + +The proxy includes a built-in browser interface for easy navigation! + +1. **Access the browser**: Open `https://your-worker.workers.dev/` in your browser +2. **Enter URLs**: Type any website URL in the address bar +3. **Browse normally**: All navigation routes through the edge +4. **Persistent navigation**: Back/Forward buttons for history + +### Endpoints + +- **Dashboard** + - `GET /` - Serves the browser UI + +- **Proxy** + - `GET /?fetch=https://example.com&api_key=YOUR_KEY` + +### Features of the Web Interface +- **Clean, modern design** with responsive layout +- **URL bar** for direct navigation +- **Loading indicators** and status display +- **Error handling** with user-friendly messages +- **Back/Forward navigation** with history tracking +- **Mobile-friendly** responsive design + +### Direct API Usage + +You can use the proxy directly via API: + +#### Query Parameter Method +``` +GET https://your-worker.workers.dev/?fetch=https://example.com&api_key=YOUR_KEY +``` + +#### With API Key Header +```bash +curl https://your-worker.workers.dev/?fetch=https://example.com \ + -H "x-api-key: YOUR_KEY" +``` + +## How It Works + +All traffic routes through Cloudflare's edge network: +- Client requests → Edge Worker → Destination +- Responses are rewritten to route all URLs through the edge +- Headers optimized for consistency and performance + +## Testing + +### Automated Testing +```bash +npm test # Run comprehensive test suite +npm run test:sites # Test specific sites +``` + +### Code Quality +```bash +npm run lint # Check code style +npm run lint:fix # Fix linting issues +npm run format # Format code with Prettier +``` + +### Manual Testing +```bash +npm run dev # Start local development server +``` + +Tests verify: +- Dashboard UI loads correctly +- URL input and navigation functionality +- Content proxying through the edge +- Resource loading (JS/CSS/images) +- Link clicking and form handling + +Note: Some complex sites may have anti-bot measures that interfere with automated testing. + +## Deployment + +### Development +```bash +npm run dev +``` + +### Production +```bash +npx wrangler deploy +``` + +## License + +GPL v2.0 diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..78d821e --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,43 @@ +import js from "@eslint/js"; +import globals from "globals"; + +export default [ + { + files: ["src/index.js"], + languageOptions: { + ecmaVersion: 2022, + sourceType: "module", + globals: { + ...globals.browser + } + }, + rules: { + "no-unused-vars": "warn", + "no-empty": "warn", + "no-useless-escape": "warn" + } + }, + { + files: ["tests/*.js"], + languageOptions: { + ecmaVersion: 2022, + sourceType: "commonjs", + globals: { + ...globals.node, + ...globals.browser, + require: "readonly", + module: "readonly", + process: "readonly", + console: "readonly", + setTimeout: "readonly", + clearTimeout: "readonly" + } + }, + rules: { + "no-unused-vars": "warn", + "no-empty": "warn", + "no-useless-escape": "warn" + } + }, + js.configs.recommended +]; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8616175 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3796 @@ +{ + "name": "sanitizing-proxy", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "sanitizing-proxy", + "version": "1.0.0", + "dependencies": { + "puppeteer": "^24.37.5" + }, + "devDependencies": { + "@eslint/js": "^10.0.1", + "eslint": "^10.0.1", + "globals": "^17.3.0", + "typescript-eslint": "^8.56.0", + "wrangler": "^4.67.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cloudflare/kv-asset-handler": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.4.2.tgz", + "integrity": "sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==", + "dev": true, + "license": "MIT OR Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@cloudflare/unenv-preset": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.14.0.tgz", + "integrity": "sha512-XKAkWhi1nBdNsSEoNG9nkcbyvfUrSjSf+VYVPfOto3gLTZVc3F4g6RASCMh6IixBKCG2yDgZKQIHGKtjcnLnKg==", + "dev": true, + "license": "MIT OR Apache-2.0", + "peerDependencies": { + "unenv": "2.0.0-rc.24", + "workerd": "^1.20260218.0" + }, + "peerDependenciesMeta": { + "workerd": { + "optional": true + } + } + }, + "node_modules/@cloudflare/workerd-darwin-64": { + "version": "1.20260219.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260219.0.tgz", + "integrity": "sha512-k+xM+swQBQnkrvwobjRPxyeYwjLSludJusR0PqeHe+h6X9QIRGgw3s1AO38lXQsqzMSgG5709oOXSF19NKVVaQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-darwin-arm64": { + "version": "1.20260219.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260219.0.tgz", + "integrity": "sha512-EyfQdsG1KcIVAf4qndT00LZly7sLFm1VxMWHBvOFB/EVYF2sE5HZ0dPbe+yrax5p3eS0oLZthR8ynhz4UulMUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-linux-64": { + "version": "1.20260219.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260219.0.tgz", + "integrity": "sha512-N0UHXILYYa6htFO/uC92uAqusvynbSbOcHcrVXMKqP9Jy7eqXGMovyKIrNgzYnKIszNB+0lfUYdGI3Wci07LuA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-linux-arm64": { + "version": "1.20260219.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260219.0.tgz", + "integrity": "sha512-835pjQ9uuAtwPBOAkPf+oxH3mNE5mqWuE3H7hJsul7WZsRD2FDcariyoT2AW6xyOePILrn4uMnmG1KGc9m/8Pg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-windows-64": { + "version": "1.20260219.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260219.0.tgz", + "integrity": "sha512-i7qcuOsuAxqqn1n5Ar3Rh1dHUL9vNmpF9FcdMTT84jIrdm5UNrPZz5grJthPmpB9LTcreT9iiP6qKbzGjnCwPA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.2.tgz", + "integrity": "sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^3.0.2", + "debug": "^4.3.1", + "minimatch": "^10.2.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.2.tgz", + "integrity": "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.1.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz", + "integrity": "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/js": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", + "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@eslint/object-schema": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.2.tgz", + "integrity": "sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.0.tgz", + "integrity": "sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.1.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/colour": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", + "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@poppinss/colors": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.6.tgz", + "integrity": "sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^4.1.5" + } + }, + "node_modules/@poppinss/dumper": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.6.5.tgz", + "integrity": "sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.5", + "@sindresorhus/is": "^7.0.2", + "supports-color": "^10.0.0" + } + }, + "node_modules/@poppinss/exception": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.3.tgz", + "integrity": "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@puppeteer/browsers": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.0.tgz", + "integrity": "sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.4.3", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.7.4", + "tar-fs": "^3.1.1", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sindresorhus/is": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.2.0.tgz", + "integrity": "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@speed-highlight/core": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.14.tgz", + "integrity": "sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA==", + "dev": true, + "license": "CC0-1.0" + }, + "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/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", + "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", + "license": "MIT", + "optional": true, + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "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/@typescript-eslint/eslint-plugin": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.0.tgz", + "integrity": "sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/type-utils": "8.56.0", + "@typescript-eslint/utils": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.56.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.0.tgz", + "integrity": "sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.0.tgz", + "integrity": "sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.56.0", + "@typescript-eslint/types": "^8.56.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.0.tgz", + "integrity": "sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.0.tgz", + "integrity": "sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.0.tgz", + "integrity": "sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/utils": "8.56.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.0.tgz", + "integrity": "sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.0.tgz", + "integrity": "sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.56.0", + "@typescript-eslint/tsconfig-utils": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "debug": "^4.4.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.6.tgz", + "integrity": "sha512-kQAVowdR33euIqeA0+VZTDqU+qo1IeVY+hrKYtZMio3Pg0P0vuh/kwRylLUddJhB6pf3q/botcOvRtx4IN1wqQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.0.tgz", + "integrity": "sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.0.tgz", + "integrity": "sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "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/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "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/b4a": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz", + "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==", + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/balanced-match": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz", + "integrity": "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/bare-fs": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.4.tgz", + "integrity": "sha512-POK4oplfA7P7gqvetNmCs4CNtm9fNsx+IAh7jH7GgU0OJdge2rso0R20TNWVq6VoWcCvsTdlNDaleLHGaKx8CA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz", + "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", + "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.8.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.8.0.tgz", + "integrity": "sha512-reUN0M2sHRqCdG4lUK3Fw8w98eeUIZHL5c3H7Mbhk2yVBL+oofgaIp0ieLfD5QXwPCypBpmEEKU2WZKzbAk8GA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "streamx": "^2.21.0", + "teex": "^1.0.1" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-path": "^3.0.0" + } + }, + "node_modules/basic-ftp": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.1.0.tgz", + "integrity": "sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/blake3-wasm": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", + "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "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/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chromium-bidi": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz", + "integrity": "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==", + "license": "Apache-2.0", + "dependencies": { + "mitt": "^3.0.1", + "zod": "^3.24.1" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/chromium-bidi/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "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/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "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/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1566079", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1566079.tgz", + "integrity": "sha512-MJfAEA1UfVhSs7fbSQOG4czavUp1ajfg6prlAN0+cmfa2zNjaIbvq8VneP7do1WAQQIvgNJWSMeP6UyI90gIlQ==", + "license": "BSD-3-Clause" + }, + "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/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-ex/node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/error-stack-parser-es": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz", + "integrity": "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, + "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-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "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/eslint": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.1.tgz", + "integrity": "sha512-20MV9SUdeN6Jd84xESsKhRly+/vxI+hwvpBMA93s+9dAcjdCuCojn4IqUGS3lvVaqjVYGYHSRMCpeFtF2rQYxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.2", + "@eslint/config-helpers": "^0.5.2", + "@eslint/core": "^1.1.0", + "@eslint/plugin-kit": "^0.6.0", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.1", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.1.1", + "esquery": "^1.7.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "minimatch": "^10.2.1", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.1.tgz", + "integrity": "sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.1.tgz", + "integrity": "sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "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/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, + "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/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "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/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "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/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "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-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.5", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", + "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/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/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz", + "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/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/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/miniflare": { + "version": "4.20260219.0", + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260219.0.tgz", + "integrity": "sha512-EIb5wXbWUnnC60XU2aiFOPNd4fgTXzECkwRSOXZ1vdcY9WZaEE9rVf+h+Apw+WkOHRkp3Dr9/ZhQ5y1R+9iZ4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "0.8.1", + "sharp": "^0.34.5", + "undici": "7.18.2", + "workerd": "1.20260219.0", + "ws": "8.18.0", + "youch": "4.1.0-beta.10" + }, + "bin": { + "miniflare": "bootstrap.js" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/minimatch": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "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/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/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "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-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/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "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/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "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-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-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/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer": { + "version": "24.37.5", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.5.tgz", + "integrity": "sha512-3PAOIQLceyEmn1Fi76GkGO2EVxztv5OtdlB1m8hMUZL3f8KDHnlvXbvCXv+Ls7KzF1R0KdKBqLuT/Hhrok12hQ==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.13.0", + "chromium-bidi": "14.0.0", + "cosmiconfig": "^9.0.0", + "devtools-protocol": "0.0.1566079", + "puppeteer-core": "24.37.5", + "typed-query-selector": "^2.12.0" + }, + "bin": { + "puppeteer": "lib/cjs/puppeteer/node/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core": { + "version": "24.37.5", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.5.tgz", + "integrity": "sha512-ybL7iE78YPN4T6J+sPLO7r0lSByp/0NN6PvfBEql219cOnttoTFzCWKiBOjstXSqi/OKpwae623DWAsL7cn2MQ==", + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.13.0", + "chromium-bidi": "14.0.0", + "debug": "^4.4.3", + "devtools-protocol": "0.0.1566079", + "typed-query-selector": "^2.12.0", + "webdriver-bidi-protocol": "0.4.1", + "ws": "^8.19.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core/node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "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/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/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", + "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/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/streamx": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.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/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/tar-fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", + "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", + "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/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "license": "MIT", + "optional": true, + "dependencies": { + "streamx": "^2.12.5" + } + }, + "node_modules/text-decoder": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/ts-api-utils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "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/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typed-query-selector": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", + "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "devOptional": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.0.tgz", + "integrity": "sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.56.0", + "@typescript-eslint/parser": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/utils": "8.56.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/undici": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.18.2.tgz", + "integrity": "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "license": "MIT", + "optional": true + }, + "node_modules/unenv": { + "version": "2.0.0-rc.24", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz", + "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pathe": "^2.0.3" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/webdriver-bidi-protocol": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz", + "integrity": "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==", + "license": "Apache-2.0" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerd": { + "version": "1.20260219.0", + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260219.0.tgz", + "integrity": "sha512-l4U4iT5H8jNV6+EK23ExnUV2z6JvqQtQPrT8XCm4G8RpwC9EPpYTOO9s/ImMPJKe1WSbQUQoJ4k8Nd83fz8skQ==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "bin": { + "workerd": "bin/workerd" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "@cloudflare/workerd-darwin-64": "1.20260219.0", + "@cloudflare/workerd-darwin-arm64": "1.20260219.0", + "@cloudflare/workerd-linux-64": "1.20260219.0", + "@cloudflare/workerd-linux-arm64": "1.20260219.0", + "@cloudflare/workerd-windows-64": "1.20260219.0" + } + }, + "node_modules/wrangler": { + "version": "4.67.0", + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.67.0.tgz", + "integrity": "sha512-58OoVth7bqm0nqsRgcI67gHbpp0IfR1JIBqDY0XR1FzRu9Qkjn6v2iJAdFf82QcVBFhaMBYQi88WqYGswq5wlQ==", + "dev": true, + "license": "MIT OR Apache-2.0", + "dependencies": { + "@cloudflare/kv-asset-handler": "0.4.2", + "@cloudflare/unenv-preset": "2.14.0", + "blake3-wasm": "2.1.5", + "esbuild": "0.27.3", + "miniflare": "4.20260219.0", + "path-to-regexp": "6.3.0", + "unenv": "2.0.0-rc.24", + "workerd": "1.20260219.0" + }, + "bin": { + "wrangler": "bin/wrangler.js", + "wrangler2": "bin/wrangler.js" + }, + "engines": { + "node": ">=20.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@cloudflare/workers-types": "^4.20260219.0" + }, + "peerDependenciesMeta": { + "@cloudflare/workers-types": { + "optional": true + } + } + }, + "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/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "license": "MIT", + "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/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/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/youch": { + "version": "4.1.0-beta.10", + "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.10.tgz", + "integrity": "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.5", + "@poppinss/dumper": "^0.6.4", + "@speed-highlight/core": "^1.2.7", + "cookie": "^1.0.2", + "youch-core": "^0.3.3" + } + }, + "node_modules/youch-core": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/youch-core/-/youch-core-0.3.3.tgz", + "integrity": "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@poppinss/exception": "^1.2.2", + "error-stack-parser-es": "^1.0.5" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..1343f2a --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "sanitizing-proxy", + "version": "1.0.0", + "description": "A sanitizing proxy built with Cloudflare Workers", + "main": "src/index.js", + "scripts": { + "dev": "wrangler dev", + "deploy": "wrangler deploy", + "test": "node tests/puppeteer.test.js", + "test:sites": "node tests/site-browse.test.js", + "lint": "eslint src/index.js tests/*.js", + "lint:fix": "eslint src/index.js tests/*.js --fix", + "format": "prettier --write src/index.js tests/*.js" + }, + "devDependencies": { + "@eslint/js": "^10.0.1", + "eslint": "^10.0.1", + "globals": "^17.3.0", + "typescript-eslint": "^8.56.0", + "wrangler": "^4.67.0" + }, + "dependencies": { + "puppeteer": "^24.37.5" + } +} diff --git a/sanitizing-proxy.bundle b/sanitizing-proxy.bundle new file mode 100644 index 0000000000000000000000000000000000000000..d8cab0cce7ff8488dc507e36ac6b913ecac0a487 GIT binary patch literal 52929 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 + + + CDN Surfer + + + + +
+
+

🌐 CDN Surfer

+ +
+
+ + + +
+
Ready
+
+
+ +
+