├── .gitignore ├── README.md ├── eslint.config.js ├── index.html ├── package.json ├── pnpm-lock.yaml ├── preview.png ├── public └── vite.svg ├── src ├── react-app │ ├── App.tsx │ ├── index.css │ ├── main.tsx │ └── vite-env.d.ts └── worker │ └── index.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json ├── tsconfig.worker.json ├── vite.config.ts ├── worker-configuration.d.ts └── wrangler.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | 26 | # wrangler files 27 | .wrangler 28 | .dev.vars* 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Telegram 图片上传工具 2 | 3 | [![Deploy to Cloudflare](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/houhoz/cf-workers-telegram-image) 4 | 5 | 一个基于 Cloudflare Workers 的图片上传工具,可以将图片直接上传到 Telegram 频道或群组,并获取图片的 file_id,方便后续使用。 6 | 7 | ![预览图](./preview.png) 8 | 9 | ## ✨ 功能特点 10 | 11 | - 🖼️ 图片上传预览 - 选择图片后可在上传前预览 12 | - 🚀 一键上传到 Telegram - 直接发送图片到配置的 Telegram 频道/群组 13 | - 📋 自动获取 file_id - 上传成功后显示图片信息和 file_id,支持一键复制 14 | - 🌐 全球加速 - 基于 Cloudflare Workers 的全球边缘网络,上传速度更快 15 | - 🔒 安全可靠 - 使用 Telegram Bot API,无需存储图片,安全且稳定 16 | 17 | ## 🛠️ 技术栈 18 | 19 | - [**React**](https://react.dev/) - 用户界面库 20 | - [**Vite**](https://vite.dev/) - 前端构建工具 21 | - [**Hono**](https://hono.dev/) - 轻量级后端框架 22 | - [**Cloudflare Workers**](https://developers.cloudflare.com/workers/) - 边缘计算平台 23 | - [**TailwindCSS**](https://tailwindcss.com/) - 实用优先的 CSS 框架 24 | 25 | ## 🚀 快速开始 26 | 27 | ### 本地开发 28 | 29 | 1. 克隆项目并安装依赖: 30 | 31 | ```bash 32 | git clone https://github.com/houhoz/cf-workers-telegram-image.git 33 | cd cf-workers-telegram-image 34 | npm install 35 | ``` 36 | 37 | 2. 创建 `.dev.vars` 文件,添加以下环境变量: 38 | 39 | ``` 40 | TG_BOT_TOKEN=your_telegram_bot_token 41 | TG_CHAT_ID=your_telegram_chat_id 42 | ``` 43 | 44 | 3. 启动开发服务器: 45 | 46 | ```bash 47 | npm run dev 48 | ``` 49 | 50 | 应用将在 [http://localhost:5173](http://localhost:5173) 上运行。 51 | 52 | ### 部署到 Cloudflare Workers 53 | 54 | 1. 构建项目: 55 | 56 | ```bash 57 | npm run build 58 | ``` 59 | 60 | 2. 配置 Cloudflare Workers 密钥: 61 | 62 | ```bash 63 | wrangler secret put TG_BOT_TOKEN 64 | # 输入你的 Telegram Bot Token 65 | 66 | wrangler secret put TG_CHAT_ID 67 | # 输入你的 Telegram Chat ID 68 | ``` 69 | 70 | 3. 部署到 Cloudflare Workers: 71 | 72 | ```bash 73 | npm run deploy 74 | ``` 75 | 76 | ## ⚙️ 配置说明 77 | 78 | ### 必要配置 79 | 80 | | 环境变量 | 说明 | 81 | |---------|------| 82 | | `TG_BOT_TOKEN` | Telegram Bot 的 API Token,可以从 [@BotFather](https://t.me/BotFather) 获取 | 83 | | `TG_CHAT_ID` | 目标 Telegram 频道或群组的 ID,可以使用 [@userinfobot](https://t.me/userinfobot) 获取 | 84 | 85 | ### Telegram Bot 设置 86 | 87 | 1. 在 Telegram 中联系 [@BotFather](https://t.me/BotFather) 创建一个新的机器人 88 | 2. 获取 API Token 89 | 3. 将机器人添加到你的目标频道或群组,并授予管理员权限(至少需要发送消息权限) 90 | 91 | ## 📝 使用方法 92 | 93 | 1. 打开应用后,点击"选择图片"按钮上传本地图片 94 | 2. 上传前可以预览图片 95 | 3. 点击"上传到 Telegram"按钮将图片发送到配置的 Telegram 频道/群组 96 | 4. 上传成功后,可以查看图片信息并复制 file_id 供其他应用使用 97 | 98 | ## 🔗 在线演示 99 | 100 | 访问 [cf-workers-telegram-image.houyazhao.workers.dev](https://cf-workers-telegram-image.houyazhao.workers.dev/) 查看在线演示。 101 | 102 | ## 🤝 贡献 103 | 104 | 欢迎提交 Issue 或 Pull Request 来改进这个项目! 105 | 106 | 项目仓库:[https://github.com/houhoz/cf-workers-telegram-image](https://github.com/houhoz/cf-workers-telegram-image) 107 | 108 | ## 📄 许可证 109 | 110 | MIT 111 | 112 | ## 🔗 相关资源 113 | 114 | - [Telegram Bot API 文档](https://core.telegram.org/bots/api) 115 | - [Cloudflare Workers 文档](https://developers.cloudflare.com/workers/) 116 | - [Hono 文档](https://hono.dev/) 117 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import js from "@eslint/js"; 2 | import globals from "globals"; 3 | import reactHooks from "eslint-plugin-react-hooks"; 4 | import reactRefresh from "eslint-plugin-react-refresh"; 5 | import tseslint from "typescript-eslint"; 6 | 7 | export default tseslint.config( 8 | { ignores: ["dist"] }, 9 | { 10 | extends: [js.configs.recommended, ...tseslint.configs.recommended], 11 | files: ["**/*.{ts,tsx}"], 12 | languageOptions: { 13 | ecmaVersion: 2020, 14 | globals: globals.browser, 15 | }, 16 | plugins: { 17 | "react-hooks": reactHooks, 18 | "react-refresh": reactRefresh, 19 | }, 20 | rules: { 21 | ...reactHooks.configs.recommended.rules, 22 | "react-refresh/only-export-components": [ 23 | "warn", 24 | { allowConstantExport: true }, 25 | ], 26 | }, 27 | }, 28 | ); 29 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + React + TS 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cf-workers-telegram-image", 3 | "description": "A template for building a React application with Vite, Hono, and Cloudflare Workers", 4 | "version": "0.0.0", 5 | "cloudflare": { 6 | "label": "Vite React Template", 7 | "products": [ 8 | "Workers" 9 | ], 10 | "categories": [], 11 | "icon_urls": [ 12 | "https://imagedelivery.net/wSMYJvS3Xw-n339CbDyDIA/5ca0ca32-e897-4699-d4c1-6b680512f000/public" 13 | ], 14 | "preview_image_url": "https://imagedelivery.net/wSMYJvS3Xw-n339CbDyDIA/fc7b4b62-442b-4769-641b-ad4422d74300/public", 15 | "publish": true 16 | }, 17 | "dependencies": { 18 | "@tailwindcss/vite": "^4.1.8", 19 | "hono": "4.7.7", 20 | "react": "19.0.0", 21 | "react-dom": "19.0.0", 22 | "tailwindcss": "^4.1.8" 23 | }, 24 | "devDependencies": { 25 | "@cloudflare/vite-plugin": "1.2.4", 26 | "@eslint/js": "9.25.1", 27 | "@types/node": "22.15.19", 28 | "@types/react": "19.0.10", 29 | "@types/react-dom": "19.0.4", 30 | "@vitejs/plugin-react": "4.4.1", 31 | "eslint": "9.27.0", 32 | "eslint-plugin-react-hooks": "5.2.0", 33 | "eslint-plugin-react-refresh": "0.4.20", 34 | "globals": "15.15.0", 35 | "typescript": "5.8.3", 36 | "typescript-eslint": "8.31.0", 37 | "vite": "6.3.5", 38 | "wrangler": "4.18.0" 39 | }, 40 | "scripts": { 41 | "build": "tsc -b && vite build", 42 | "cf-typegen": "wrangler types", 43 | "check": "tsc && vite build && wrangler deploy --dry-run", 44 | "deploy": "wrangler deploy", 45 | "dev": "vite", 46 | "lint": "eslint .", 47 | "preview": "npm run build && vite preview" 48 | }, 49 | "type": "module", 50 | "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977" 51 | } 52 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@tailwindcss/vite': 12 | specifier: ^4.1.8 13 | version: 4.1.8(vite@6.3.5(@types/node@22.15.19)(jiti@2.4.2)(lightningcss@1.30.1)) 14 | hono: 15 | specifier: 4.7.7 16 | version: 4.7.7 17 | react: 18 | specifier: 19.0.0 19 | version: 19.0.0 20 | react-dom: 21 | specifier: 19.0.0 22 | version: 19.0.0(react@19.0.0) 23 | tailwindcss: 24 | specifier: ^4.1.8 25 | version: 4.1.8 26 | devDependencies: 27 | '@cloudflare/vite-plugin': 28 | specifier: 1.2.4 29 | version: 1.2.4(rollup@4.41.1)(vite@6.3.5(@types/node@22.15.19)(jiti@2.4.2)(lightningcss@1.30.1))(workerd@1.20250525.0)(wrangler@4.18.0) 30 | '@eslint/js': 31 | specifier: 9.25.1 32 | version: 9.25.1 33 | '@types/node': 34 | specifier: 22.15.19 35 | version: 22.15.19 36 | '@types/react': 37 | specifier: 19.0.10 38 | version: 19.0.10 39 | '@types/react-dom': 40 | specifier: 19.0.4 41 | version: 19.0.4(@types/react@19.0.10) 42 | '@vitejs/plugin-react': 43 | specifier: 4.4.1 44 | version: 4.4.1(vite@6.3.5(@types/node@22.15.19)(jiti@2.4.2)(lightningcss@1.30.1)) 45 | eslint: 46 | specifier: 9.27.0 47 | version: 9.27.0(jiti@2.4.2) 48 | eslint-plugin-react-hooks: 49 | specifier: 5.2.0 50 | version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) 51 | eslint-plugin-react-refresh: 52 | specifier: 0.4.20 53 | version: 0.4.20(eslint@9.27.0(jiti@2.4.2)) 54 | globals: 55 | specifier: 15.15.0 56 | version: 15.15.0 57 | typescript: 58 | specifier: 5.8.3 59 | version: 5.8.3 60 | typescript-eslint: 61 | specifier: 8.31.0 62 | version: 8.31.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) 63 | vite: 64 | specifier: 6.3.5 65 | version: 6.3.5(@types/node@22.15.19)(jiti@2.4.2)(lightningcss@1.30.1) 66 | wrangler: 67 | specifier: 4.18.0 68 | version: 4.18.0 69 | 70 | packages: 71 | 72 | '@ampproject/remapping@2.3.0': 73 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 74 | engines: {node: '>=6.0.0'} 75 | 76 | '@babel/code-frame@7.27.1': 77 | resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 78 | engines: {node: '>=6.9.0'} 79 | 80 | '@babel/compat-data@7.27.3': 81 | resolution: {integrity: sha512-V42wFfx1ymFte+ecf6iXghnnP8kWTO+ZLXIyZq+1LAXHHvTZdVxicn4yiVYdYMGaCO3tmqub11AorKkv+iodqw==} 82 | engines: {node: '>=6.9.0'} 83 | 84 | '@babel/core@7.27.4': 85 | resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} 86 | engines: {node: '>=6.9.0'} 87 | 88 | '@babel/generator@7.27.3': 89 | resolution: {integrity: sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==} 90 | engines: {node: '>=6.9.0'} 91 | 92 | '@babel/helper-compilation-targets@7.27.2': 93 | resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} 94 | engines: {node: '>=6.9.0'} 95 | 96 | '@babel/helper-module-imports@7.27.1': 97 | resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} 98 | engines: {node: '>=6.9.0'} 99 | 100 | '@babel/helper-module-transforms@7.27.3': 101 | resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} 102 | engines: {node: '>=6.9.0'} 103 | peerDependencies: 104 | '@babel/core': ^7.0.0 105 | 106 | '@babel/helper-plugin-utils@7.27.1': 107 | resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} 108 | engines: {node: '>=6.9.0'} 109 | 110 | '@babel/helper-string-parser@7.27.1': 111 | resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 112 | engines: {node: '>=6.9.0'} 113 | 114 | '@babel/helper-validator-identifier@7.27.1': 115 | resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 116 | engines: {node: '>=6.9.0'} 117 | 118 | '@babel/helper-validator-option@7.27.1': 119 | resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} 120 | engines: {node: '>=6.9.0'} 121 | 122 | '@babel/helpers@7.27.4': 123 | resolution: {integrity: sha512-Y+bO6U+I7ZKaM5G5rDUZiYfUvQPUibYmAFe7EnKdnKBbVXDZxvp+MWOH5gYciY0EPk4EScsuFMQBbEfpdRKSCQ==} 124 | engines: {node: '>=6.9.0'} 125 | 126 | '@babel/parser@7.27.4': 127 | resolution: {integrity: sha512-BRmLHGwpUqLFR2jzx9orBuX/ABDkj2jLKOXrHDTN2aOKL+jFDDKaRNo9nyYsIl9h/UE/7lMKdDjKQQyxKKDZ7g==} 128 | engines: {node: '>=6.0.0'} 129 | hasBin: true 130 | 131 | '@babel/plugin-transform-react-jsx-self@7.27.1': 132 | resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} 133 | engines: {node: '>=6.9.0'} 134 | peerDependencies: 135 | '@babel/core': ^7.0.0-0 136 | 137 | '@babel/plugin-transform-react-jsx-source@7.27.1': 138 | resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} 139 | engines: {node: '>=6.9.0'} 140 | peerDependencies: 141 | '@babel/core': ^7.0.0-0 142 | 143 | '@babel/template@7.27.2': 144 | resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 145 | engines: {node: '>=6.9.0'} 146 | 147 | '@babel/traverse@7.27.4': 148 | resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} 149 | engines: {node: '>=6.9.0'} 150 | 151 | '@babel/types@7.27.3': 152 | resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==} 153 | engines: {node: '>=6.9.0'} 154 | 155 | '@cloudflare/kv-asset-handler@0.4.0': 156 | resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} 157 | engines: {node: '>=18.0.0'} 158 | 159 | '@cloudflare/unenv-preset@2.3.2': 160 | resolution: {integrity: sha512-MtUgNl+QkQyhQvv5bbWP+BpBC1N0me4CHHuP2H4ktmOMKdB/6kkz/lo+zqiA4mEazb4y+1cwyNjVrQ2DWeE4mg==} 161 | peerDependencies: 162 | unenv: 2.0.0-rc.17 163 | workerd: ^1.20250508.0 164 | peerDependenciesMeta: 165 | workerd: 166 | optional: true 167 | 168 | '@cloudflare/vite-plugin@1.2.4': 169 | resolution: {integrity: sha512-Oc5P4cicZrqGAmlCX9DA8KmMK85rXczZBZU7IjnUeOxsPqh/KVgDy2XOVqYvXbbznm1LHceTG6fPMCMcAcj7DQ==} 170 | peerDependencies: 171 | vite: ^6.1.0 172 | wrangler: ^3.101.0 || ^4.0.0 173 | 174 | '@cloudflare/workerd-darwin-64@1.20250508.0': 175 | resolution: {integrity: sha512-9x09MrA9Y5RQs3zqWvWns8xHgM2pVNXWpeJ+3hQYu4PrwPFZXtTD6b/iMmOnlYKzINlREq1RGeEybMFyWEUlUg==} 176 | engines: {node: '>=16'} 177 | cpu: [x64] 178 | os: [darwin] 179 | 180 | '@cloudflare/workerd-darwin-64@1.20250525.0': 181 | resolution: {integrity: sha512-L5l+7sSJJT2+riR5rS3Q3PKNNySPjWfRIeaNGMVRi1dPO6QPi4lwuxfRUFNoeUdilZJUVPfSZvTtj9RedsKznQ==} 182 | engines: {node: '>=16'} 183 | cpu: [x64] 184 | os: [darwin] 185 | 186 | '@cloudflare/workerd-darwin-arm64@1.20250508.0': 187 | resolution: {integrity: sha512-0Ili+nE2LLRzYue/yPc1pepSyNNg6LxR3/ng/rlQzVQUxPXIXldHFkJ/ynsYwQnAcf6OxasSi/kbTm6yvDoSAQ==} 188 | engines: {node: '>=16'} 189 | cpu: [arm64] 190 | os: [darwin] 191 | 192 | '@cloudflare/workerd-darwin-arm64@1.20250525.0': 193 | resolution: {integrity: sha512-Y3IbIdrF/vJWh/WBvshwcSyUh175VAiLRW7963S1dXChrZ1N5wuKGQm9xY69cIGVtitpMJWWW3jLq7J/Xxwm0Q==} 194 | engines: {node: '>=16'} 195 | cpu: [arm64] 196 | os: [darwin] 197 | 198 | '@cloudflare/workerd-linux-64@1.20250508.0': 199 | resolution: {integrity: sha512-5saVrZ3uVwYxvBa7BaonXjeqB6X0YF3ak05qvBaWcmZ3FNmnarMm2W8842cnbhnckDVBpB/iDo51Sy6Y7y1jcw==} 200 | engines: {node: '>=16'} 201 | cpu: [x64] 202 | os: [linux] 203 | 204 | '@cloudflare/workerd-linux-64@1.20250525.0': 205 | resolution: {integrity: sha512-KSyQPAby+c6cpENoO0ayCQlY6QIh28l/+QID7VC1SLXfiNHy+hPNsH1vVBTST6CilHVAQSsy9tCZ9O9XECB8yg==} 206 | engines: {node: '>=16'} 207 | cpu: [x64] 208 | os: [linux] 209 | 210 | '@cloudflare/workerd-linux-arm64@1.20250508.0': 211 | resolution: {integrity: sha512-muQe1pkxRi3eaq1Q417xvfGd2SlktbLTzNhT5Yftsx8OecWrYuB8i4ttR6Nr5ER06bfEj0FqQjqJJhcp6wLLUQ==} 212 | engines: {node: '>=16'} 213 | cpu: [arm64] 214 | os: [linux] 215 | 216 | '@cloudflare/workerd-linux-arm64@1.20250525.0': 217 | resolution: {integrity: sha512-Nt0FUxS2kQhJUea4hMCNPaetkrAFDhPnNX/ntwcqVlGgnGt75iaAhupWJbU0GB+gIWlKeuClUUnDZqKbicoKyg==} 218 | engines: {node: '>=16'} 219 | cpu: [arm64] 220 | os: [linux] 221 | 222 | '@cloudflare/workerd-windows-64@1.20250508.0': 223 | resolution: {integrity: sha512-EJj8iTWFMqjgvZUxxNvzK7frA1JMFi3y/9eDIdZPL/OaQh3cmk5Lai5DCXsKYUxfooMBZWYTp53zOLrvuJI8VQ==} 224 | engines: {node: '>=16'} 225 | cpu: [x64] 226 | os: [win32] 227 | 228 | '@cloudflare/workerd-windows-64@1.20250525.0': 229 | resolution: {integrity: sha512-mwTj+9f3uIa4NEXR1cOa82PjLa6dbrb3J+KCVJFYIaq7e63VxEzOchCXS4tublT2pmOhmFqkgBMXrxozxNkR2Q==} 230 | engines: {node: '>=16'} 231 | cpu: [x64] 232 | os: [win32] 233 | 234 | '@cspotcode/source-map-support@0.8.1': 235 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 236 | engines: {node: '>=12'} 237 | 238 | '@emnapi/runtime@1.4.3': 239 | resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} 240 | 241 | '@esbuild/aix-ppc64@0.25.4': 242 | resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} 243 | engines: {node: '>=18'} 244 | cpu: [ppc64] 245 | os: [aix] 246 | 247 | '@esbuild/aix-ppc64@0.25.5': 248 | resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} 249 | engines: {node: '>=18'} 250 | cpu: [ppc64] 251 | os: [aix] 252 | 253 | '@esbuild/android-arm64@0.25.4': 254 | resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} 255 | engines: {node: '>=18'} 256 | cpu: [arm64] 257 | os: [android] 258 | 259 | '@esbuild/android-arm64@0.25.5': 260 | resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} 261 | engines: {node: '>=18'} 262 | cpu: [arm64] 263 | os: [android] 264 | 265 | '@esbuild/android-arm@0.25.4': 266 | resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} 267 | engines: {node: '>=18'} 268 | cpu: [arm] 269 | os: [android] 270 | 271 | '@esbuild/android-arm@0.25.5': 272 | resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} 273 | engines: {node: '>=18'} 274 | cpu: [arm] 275 | os: [android] 276 | 277 | '@esbuild/android-x64@0.25.4': 278 | resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} 279 | engines: {node: '>=18'} 280 | cpu: [x64] 281 | os: [android] 282 | 283 | '@esbuild/android-x64@0.25.5': 284 | resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} 285 | engines: {node: '>=18'} 286 | cpu: [x64] 287 | os: [android] 288 | 289 | '@esbuild/darwin-arm64@0.25.4': 290 | resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} 291 | engines: {node: '>=18'} 292 | cpu: [arm64] 293 | os: [darwin] 294 | 295 | '@esbuild/darwin-arm64@0.25.5': 296 | resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} 297 | engines: {node: '>=18'} 298 | cpu: [arm64] 299 | os: [darwin] 300 | 301 | '@esbuild/darwin-x64@0.25.4': 302 | resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} 303 | engines: {node: '>=18'} 304 | cpu: [x64] 305 | os: [darwin] 306 | 307 | '@esbuild/darwin-x64@0.25.5': 308 | resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} 309 | engines: {node: '>=18'} 310 | cpu: [x64] 311 | os: [darwin] 312 | 313 | '@esbuild/freebsd-arm64@0.25.4': 314 | resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} 315 | engines: {node: '>=18'} 316 | cpu: [arm64] 317 | os: [freebsd] 318 | 319 | '@esbuild/freebsd-arm64@0.25.5': 320 | resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} 321 | engines: {node: '>=18'} 322 | cpu: [arm64] 323 | os: [freebsd] 324 | 325 | '@esbuild/freebsd-x64@0.25.4': 326 | resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} 327 | engines: {node: '>=18'} 328 | cpu: [x64] 329 | os: [freebsd] 330 | 331 | '@esbuild/freebsd-x64@0.25.5': 332 | resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} 333 | engines: {node: '>=18'} 334 | cpu: [x64] 335 | os: [freebsd] 336 | 337 | '@esbuild/linux-arm64@0.25.4': 338 | resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} 339 | engines: {node: '>=18'} 340 | cpu: [arm64] 341 | os: [linux] 342 | 343 | '@esbuild/linux-arm64@0.25.5': 344 | resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} 345 | engines: {node: '>=18'} 346 | cpu: [arm64] 347 | os: [linux] 348 | 349 | '@esbuild/linux-arm@0.25.4': 350 | resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} 351 | engines: {node: '>=18'} 352 | cpu: [arm] 353 | os: [linux] 354 | 355 | '@esbuild/linux-arm@0.25.5': 356 | resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} 357 | engines: {node: '>=18'} 358 | cpu: [arm] 359 | os: [linux] 360 | 361 | '@esbuild/linux-ia32@0.25.4': 362 | resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} 363 | engines: {node: '>=18'} 364 | cpu: [ia32] 365 | os: [linux] 366 | 367 | '@esbuild/linux-ia32@0.25.5': 368 | resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} 369 | engines: {node: '>=18'} 370 | cpu: [ia32] 371 | os: [linux] 372 | 373 | '@esbuild/linux-loong64@0.25.4': 374 | resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} 375 | engines: {node: '>=18'} 376 | cpu: [loong64] 377 | os: [linux] 378 | 379 | '@esbuild/linux-loong64@0.25.5': 380 | resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} 381 | engines: {node: '>=18'} 382 | cpu: [loong64] 383 | os: [linux] 384 | 385 | '@esbuild/linux-mips64el@0.25.4': 386 | resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} 387 | engines: {node: '>=18'} 388 | cpu: [mips64el] 389 | os: [linux] 390 | 391 | '@esbuild/linux-mips64el@0.25.5': 392 | resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} 393 | engines: {node: '>=18'} 394 | cpu: [mips64el] 395 | os: [linux] 396 | 397 | '@esbuild/linux-ppc64@0.25.4': 398 | resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} 399 | engines: {node: '>=18'} 400 | cpu: [ppc64] 401 | os: [linux] 402 | 403 | '@esbuild/linux-ppc64@0.25.5': 404 | resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} 405 | engines: {node: '>=18'} 406 | cpu: [ppc64] 407 | os: [linux] 408 | 409 | '@esbuild/linux-riscv64@0.25.4': 410 | resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} 411 | engines: {node: '>=18'} 412 | cpu: [riscv64] 413 | os: [linux] 414 | 415 | '@esbuild/linux-riscv64@0.25.5': 416 | resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} 417 | engines: {node: '>=18'} 418 | cpu: [riscv64] 419 | os: [linux] 420 | 421 | '@esbuild/linux-s390x@0.25.4': 422 | resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} 423 | engines: {node: '>=18'} 424 | cpu: [s390x] 425 | os: [linux] 426 | 427 | '@esbuild/linux-s390x@0.25.5': 428 | resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} 429 | engines: {node: '>=18'} 430 | cpu: [s390x] 431 | os: [linux] 432 | 433 | '@esbuild/linux-x64@0.25.4': 434 | resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} 435 | engines: {node: '>=18'} 436 | cpu: [x64] 437 | os: [linux] 438 | 439 | '@esbuild/linux-x64@0.25.5': 440 | resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} 441 | engines: {node: '>=18'} 442 | cpu: [x64] 443 | os: [linux] 444 | 445 | '@esbuild/netbsd-arm64@0.25.4': 446 | resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} 447 | engines: {node: '>=18'} 448 | cpu: [arm64] 449 | os: [netbsd] 450 | 451 | '@esbuild/netbsd-arm64@0.25.5': 452 | resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} 453 | engines: {node: '>=18'} 454 | cpu: [arm64] 455 | os: [netbsd] 456 | 457 | '@esbuild/netbsd-x64@0.25.4': 458 | resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} 459 | engines: {node: '>=18'} 460 | cpu: [x64] 461 | os: [netbsd] 462 | 463 | '@esbuild/netbsd-x64@0.25.5': 464 | resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} 465 | engines: {node: '>=18'} 466 | cpu: [x64] 467 | os: [netbsd] 468 | 469 | '@esbuild/openbsd-arm64@0.25.4': 470 | resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} 471 | engines: {node: '>=18'} 472 | cpu: [arm64] 473 | os: [openbsd] 474 | 475 | '@esbuild/openbsd-arm64@0.25.5': 476 | resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} 477 | engines: {node: '>=18'} 478 | cpu: [arm64] 479 | os: [openbsd] 480 | 481 | '@esbuild/openbsd-x64@0.25.4': 482 | resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} 483 | engines: {node: '>=18'} 484 | cpu: [x64] 485 | os: [openbsd] 486 | 487 | '@esbuild/openbsd-x64@0.25.5': 488 | resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} 489 | engines: {node: '>=18'} 490 | cpu: [x64] 491 | os: [openbsd] 492 | 493 | '@esbuild/sunos-x64@0.25.4': 494 | resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} 495 | engines: {node: '>=18'} 496 | cpu: [x64] 497 | os: [sunos] 498 | 499 | '@esbuild/sunos-x64@0.25.5': 500 | resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} 501 | engines: {node: '>=18'} 502 | cpu: [x64] 503 | os: [sunos] 504 | 505 | '@esbuild/win32-arm64@0.25.4': 506 | resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} 507 | engines: {node: '>=18'} 508 | cpu: [arm64] 509 | os: [win32] 510 | 511 | '@esbuild/win32-arm64@0.25.5': 512 | resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} 513 | engines: {node: '>=18'} 514 | cpu: [arm64] 515 | os: [win32] 516 | 517 | '@esbuild/win32-ia32@0.25.4': 518 | resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} 519 | engines: {node: '>=18'} 520 | cpu: [ia32] 521 | os: [win32] 522 | 523 | '@esbuild/win32-ia32@0.25.5': 524 | resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} 525 | engines: {node: '>=18'} 526 | cpu: [ia32] 527 | os: [win32] 528 | 529 | '@esbuild/win32-x64@0.25.4': 530 | resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} 531 | engines: {node: '>=18'} 532 | cpu: [x64] 533 | os: [win32] 534 | 535 | '@esbuild/win32-x64@0.25.5': 536 | resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} 537 | engines: {node: '>=18'} 538 | cpu: [x64] 539 | os: [win32] 540 | 541 | '@eslint-community/eslint-utils@4.7.0': 542 | resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 543 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 544 | peerDependencies: 545 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 546 | 547 | '@eslint-community/regexpp@4.12.1': 548 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 549 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 550 | 551 | '@eslint/config-array@0.20.0': 552 | resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} 553 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 554 | 555 | '@eslint/config-helpers@0.2.2': 556 | resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} 557 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 558 | 559 | '@eslint/core@0.14.0': 560 | resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} 561 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 562 | 563 | '@eslint/eslintrc@3.3.1': 564 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 565 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 566 | 567 | '@eslint/js@9.25.1': 568 | resolution: {integrity: sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==} 569 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 570 | 571 | '@eslint/js@9.27.0': 572 | resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} 573 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 574 | 575 | '@eslint/object-schema@2.1.6': 576 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 577 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 578 | 579 | '@eslint/plugin-kit@0.3.1': 580 | resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==} 581 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 582 | 583 | '@fastify/busboy@2.1.1': 584 | resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} 585 | engines: {node: '>=14'} 586 | 587 | '@humanfs/core@0.19.1': 588 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 589 | engines: {node: '>=18.18.0'} 590 | 591 | '@humanfs/node@0.16.6': 592 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 593 | engines: {node: '>=18.18.0'} 594 | 595 | '@humanwhocodes/module-importer@1.0.1': 596 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 597 | engines: {node: '>=12.22'} 598 | 599 | '@humanwhocodes/retry@0.3.1': 600 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 601 | engines: {node: '>=18.18'} 602 | 603 | '@humanwhocodes/retry@0.4.3': 604 | resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 605 | engines: {node: '>=18.18'} 606 | 607 | '@img/sharp-darwin-arm64@0.33.5': 608 | resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} 609 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 610 | cpu: [arm64] 611 | os: [darwin] 612 | 613 | '@img/sharp-darwin-x64@0.33.5': 614 | resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} 615 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 616 | cpu: [x64] 617 | os: [darwin] 618 | 619 | '@img/sharp-libvips-darwin-arm64@1.0.4': 620 | resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} 621 | cpu: [arm64] 622 | os: [darwin] 623 | 624 | '@img/sharp-libvips-darwin-x64@1.0.4': 625 | resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} 626 | cpu: [x64] 627 | os: [darwin] 628 | 629 | '@img/sharp-libvips-linux-arm64@1.0.4': 630 | resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} 631 | cpu: [arm64] 632 | os: [linux] 633 | 634 | '@img/sharp-libvips-linux-arm@1.0.5': 635 | resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} 636 | cpu: [arm] 637 | os: [linux] 638 | 639 | '@img/sharp-libvips-linux-s390x@1.0.4': 640 | resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} 641 | cpu: [s390x] 642 | os: [linux] 643 | 644 | '@img/sharp-libvips-linux-x64@1.0.4': 645 | resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} 646 | cpu: [x64] 647 | os: [linux] 648 | 649 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 650 | resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} 651 | cpu: [arm64] 652 | os: [linux] 653 | 654 | '@img/sharp-libvips-linuxmusl-x64@1.0.4': 655 | resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} 656 | cpu: [x64] 657 | os: [linux] 658 | 659 | '@img/sharp-linux-arm64@0.33.5': 660 | resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} 661 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 662 | cpu: [arm64] 663 | os: [linux] 664 | 665 | '@img/sharp-linux-arm@0.33.5': 666 | resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} 667 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 668 | cpu: [arm] 669 | os: [linux] 670 | 671 | '@img/sharp-linux-s390x@0.33.5': 672 | resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} 673 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 674 | cpu: [s390x] 675 | os: [linux] 676 | 677 | '@img/sharp-linux-x64@0.33.5': 678 | resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} 679 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 680 | cpu: [x64] 681 | os: [linux] 682 | 683 | '@img/sharp-linuxmusl-arm64@0.33.5': 684 | resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} 685 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 686 | cpu: [arm64] 687 | os: [linux] 688 | 689 | '@img/sharp-linuxmusl-x64@0.33.5': 690 | resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} 691 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 692 | cpu: [x64] 693 | os: [linux] 694 | 695 | '@img/sharp-wasm32@0.33.5': 696 | resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} 697 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 698 | cpu: [wasm32] 699 | 700 | '@img/sharp-win32-ia32@0.33.5': 701 | resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} 702 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 703 | cpu: [ia32] 704 | os: [win32] 705 | 706 | '@img/sharp-win32-x64@0.33.5': 707 | resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} 708 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 709 | cpu: [x64] 710 | os: [win32] 711 | 712 | '@isaacs/fs-minipass@4.0.1': 713 | resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} 714 | engines: {node: '>=18.0.0'} 715 | 716 | '@jridgewell/gen-mapping@0.3.8': 717 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 718 | engines: {node: '>=6.0.0'} 719 | 720 | '@jridgewell/resolve-uri@3.1.2': 721 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 722 | engines: {node: '>=6.0.0'} 723 | 724 | '@jridgewell/set-array@1.2.1': 725 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 726 | engines: {node: '>=6.0.0'} 727 | 728 | '@jridgewell/sourcemap-codec@1.5.0': 729 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 730 | 731 | '@jridgewell/trace-mapping@0.3.25': 732 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 733 | 734 | '@jridgewell/trace-mapping@0.3.9': 735 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 736 | 737 | '@mjackson/node-fetch-server@0.6.1': 738 | resolution: {integrity: sha512-9ZJnk/DJjt805uv5PPv11haJIW+HHf3YEEyVXv+8iLQxLD/iXA68FH220XoiTPBC4gCg5q+IMadDw8qPqlA5wg==} 739 | 740 | '@nodelib/fs.scandir@2.1.5': 741 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 742 | engines: {node: '>= 8'} 743 | 744 | '@nodelib/fs.stat@2.0.5': 745 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 746 | engines: {node: '>= 8'} 747 | 748 | '@nodelib/fs.walk@1.2.8': 749 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 750 | engines: {node: '>= 8'} 751 | 752 | '@rollup/plugin-replace@6.0.2': 753 | resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} 754 | engines: {node: '>=14.0.0'} 755 | peerDependencies: 756 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 757 | peerDependenciesMeta: 758 | rollup: 759 | optional: true 760 | 761 | '@rollup/pluginutils@5.1.4': 762 | resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} 763 | engines: {node: '>=14.0.0'} 764 | peerDependencies: 765 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 766 | peerDependenciesMeta: 767 | rollup: 768 | optional: true 769 | 770 | '@rollup/rollup-android-arm-eabi@4.41.1': 771 | resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==} 772 | cpu: [arm] 773 | os: [android] 774 | 775 | '@rollup/rollup-android-arm64@4.41.1': 776 | resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==} 777 | cpu: [arm64] 778 | os: [android] 779 | 780 | '@rollup/rollup-darwin-arm64@4.41.1': 781 | resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==} 782 | cpu: [arm64] 783 | os: [darwin] 784 | 785 | '@rollup/rollup-darwin-x64@4.41.1': 786 | resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==} 787 | cpu: [x64] 788 | os: [darwin] 789 | 790 | '@rollup/rollup-freebsd-arm64@4.41.1': 791 | resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==} 792 | cpu: [arm64] 793 | os: [freebsd] 794 | 795 | '@rollup/rollup-freebsd-x64@4.41.1': 796 | resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==} 797 | cpu: [x64] 798 | os: [freebsd] 799 | 800 | '@rollup/rollup-linux-arm-gnueabihf@4.41.1': 801 | resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==} 802 | cpu: [arm] 803 | os: [linux] 804 | 805 | '@rollup/rollup-linux-arm-musleabihf@4.41.1': 806 | resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==} 807 | cpu: [arm] 808 | os: [linux] 809 | 810 | '@rollup/rollup-linux-arm64-gnu@4.41.1': 811 | resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==} 812 | cpu: [arm64] 813 | os: [linux] 814 | 815 | '@rollup/rollup-linux-arm64-musl@4.41.1': 816 | resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==} 817 | cpu: [arm64] 818 | os: [linux] 819 | 820 | '@rollup/rollup-linux-loongarch64-gnu@4.41.1': 821 | resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==} 822 | cpu: [loong64] 823 | os: [linux] 824 | 825 | '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': 826 | resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==} 827 | cpu: [ppc64] 828 | os: [linux] 829 | 830 | '@rollup/rollup-linux-riscv64-gnu@4.41.1': 831 | resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==} 832 | cpu: [riscv64] 833 | os: [linux] 834 | 835 | '@rollup/rollup-linux-riscv64-musl@4.41.1': 836 | resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==} 837 | cpu: [riscv64] 838 | os: [linux] 839 | 840 | '@rollup/rollup-linux-s390x-gnu@4.41.1': 841 | resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==} 842 | cpu: [s390x] 843 | os: [linux] 844 | 845 | '@rollup/rollup-linux-x64-gnu@4.41.1': 846 | resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==} 847 | cpu: [x64] 848 | os: [linux] 849 | 850 | '@rollup/rollup-linux-x64-musl@4.41.1': 851 | resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==} 852 | cpu: [x64] 853 | os: [linux] 854 | 855 | '@rollup/rollup-win32-arm64-msvc@4.41.1': 856 | resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==} 857 | cpu: [arm64] 858 | os: [win32] 859 | 860 | '@rollup/rollup-win32-ia32-msvc@4.41.1': 861 | resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==} 862 | cpu: [ia32] 863 | os: [win32] 864 | 865 | '@rollup/rollup-win32-x64-msvc@4.41.1': 866 | resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==} 867 | cpu: [x64] 868 | os: [win32] 869 | 870 | '@tailwindcss/node@4.1.8': 871 | resolution: {integrity: sha512-OWwBsbC9BFAJelmnNcrKuf+bka2ZxCE2A4Ft53Tkg4uoiE67r/PMEYwCsourC26E+kmxfwE0hVzMdxqeW+xu7Q==} 872 | 873 | '@tailwindcss/oxide-android-arm64@4.1.8': 874 | resolution: {integrity: sha512-Fbz7qni62uKYceWYvUjRqhGfZKwhZDQhlrJKGtnZfuNtHFqa8wmr+Wn74CTWERiW2hn3mN5gTpOoxWKk0jRxjg==} 875 | engines: {node: '>= 10'} 876 | cpu: [arm64] 877 | os: [android] 878 | 879 | '@tailwindcss/oxide-darwin-arm64@4.1.8': 880 | resolution: {integrity: sha512-RdRvedGsT0vwVVDztvyXhKpsU2ark/BjgG0huo4+2BluxdXo8NDgzl77qh0T1nUxmM11eXwR8jA39ibvSTbi7A==} 881 | engines: {node: '>= 10'} 882 | cpu: [arm64] 883 | os: [darwin] 884 | 885 | '@tailwindcss/oxide-darwin-x64@4.1.8': 886 | resolution: {integrity: sha512-t6PgxjEMLp5Ovf7uMb2OFmb3kqzVTPPakWpBIFzppk4JE4ix0yEtbtSjPbU8+PZETpaYMtXvss2Sdkx8Vs4XRw==} 887 | engines: {node: '>= 10'} 888 | cpu: [x64] 889 | os: [darwin] 890 | 891 | '@tailwindcss/oxide-freebsd-x64@4.1.8': 892 | resolution: {integrity: sha512-g8C8eGEyhHTqwPStSwZNSrOlyx0bhK/V/+zX0Y+n7DoRUzyS8eMbVshVOLJTDDC+Qn9IJnilYbIKzpB9n4aBsg==} 893 | engines: {node: '>= 10'} 894 | cpu: [x64] 895 | os: [freebsd] 896 | 897 | '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.8': 898 | resolution: {integrity: sha512-Jmzr3FA4S2tHhaC6yCjac3rGf7hG9R6Gf2z9i9JFcuyy0u79HfQsh/thifbYTF2ic82KJovKKkIB6Z9TdNhCXQ==} 899 | engines: {node: '>= 10'} 900 | cpu: [arm] 901 | os: [linux] 902 | 903 | '@tailwindcss/oxide-linux-arm64-gnu@4.1.8': 904 | resolution: {integrity: sha512-qq7jXtO1+UEtCmCeBBIRDrPFIVI4ilEQ97qgBGdwXAARrUqSn/L9fUrkb1XP/mvVtoVeR2bt/0L77xx53bPZ/Q==} 905 | engines: {node: '>= 10'} 906 | cpu: [arm64] 907 | os: [linux] 908 | 909 | '@tailwindcss/oxide-linux-arm64-musl@4.1.8': 910 | resolution: {integrity: sha512-O6b8QesPbJCRshsNApsOIpzKt3ztG35gfX9tEf4arD7mwNinsoCKxkj8TgEE0YRjmjtO3r9FlJnT/ENd9EVefQ==} 911 | engines: {node: '>= 10'} 912 | cpu: [arm64] 913 | os: [linux] 914 | 915 | '@tailwindcss/oxide-linux-x64-gnu@4.1.8': 916 | resolution: {integrity: sha512-32iEXX/pXwikshNOGnERAFwFSfiltmijMIAbUhnNyjFr3tmWmMJWQKU2vNcFX0DACSXJ3ZWcSkzNbaKTdngH6g==} 917 | engines: {node: '>= 10'} 918 | cpu: [x64] 919 | os: [linux] 920 | 921 | '@tailwindcss/oxide-linux-x64-musl@4.1.8': 922 | resolution: {integrity: sha512-s+VSSD+TfZeMEsCaFaHTaY5YNj3Dri8rST09gMvYQKwPphacRG7wbuQ5ZJMIJXN/puxPcg/nU+ucvWguPpvBDg==} 923 | engines: {node: '>= 10'} 924 | cpu: [x64] 925 | os: [linux] 926 | 927 | '@tailwindcss/oxide-wasm32-wasi@4.1.8': 928 | resolution: {integrity: sha512-CXBPVFkpDjM67sS1psWohZ6g/2/cd+cq56vPxK4JeawelxwK4YECgl9Y9TjkE2qfF+9/s1tHHJqrC4SS6cVvSg==} 929 | engines: {node: '>=14.0.0'} 930 | cpu: [wasm32] 931 | bundledDependencies: 932 | - '@napi-rs/wasm-runtime' 933 | - '@emnapi/core' 934 | - '@emnapi/runtime' 935 | - '@tybys/wasm-util' 936 | - '@emnapi/wasi-threads' 937 | - tslib 938 | 939 | '@tailwindcss/oxide-win32-arm64-msvc@4.1.8': 940 | resolution: {integrity: sha512-7GmYk1n28teDHUjPlIx4Z6Z4hHEgvP5ZW2QS9ygnDAdI/myh3HTHjDqtSqgu1BpRoI4OiLx+fThAyA1JePoENA==} 941 | engines: {node: '>= 10'} 942 | cpu: [arm64] 943 | os: [win32] 944 | 945 | '@tailwindcss/oxide-win32-x64-msvc@4.1.8': 946 | resolution: {integrity: sha512-fou+U20j+Jl0EHwK92spoWISON2OBnCazIc038Xj2TdweYV33ZRkS9nwqiUi2d/Wba5xg5UoHfvynnb/UB49cQ==} 947 | engines: {node: '>= 10'} 948 | cpu: [x64] 949 | os: [win32] 950 | 951 | '@tailwindcss/oxide@4.1.8': 952 | resolution: {integrity: sha512-d7qvv9PsM5N3VNKhwVUhpK6r4h9wtLkJ6lz9ZY9aeZgrUWk1Z8VPyqyDT9MZlem7GTGseRQHkeB1j3tC7W1P+A==} 953 | engines: {node: '>= 10'} 954 | 955 | '@tailwindcss/vite@4.1.8': 956 | resolution: {integrity: sha512-CQ+I8yxNV5/6uGaJjiuymgw0kEQiNKRinYbZXPdx1fk5WgiyReG0VaUx/Xq6aVNSUNJFzxm6o8FNKS5aMaim5A==} 957 | peerDependencies: 958 | vite: ^5.2.0 || ^6 959 | 960 | '@types/babel__core@7.20.5': 961 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 962 | 963 | '@types/babel__generator@7.27.0': 964 | resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} 965 | 966 | '@types/babel__template@7.4.4': 967 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 968 | 969 | '@types/babel__traverse@7.20.7': 970 | resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} 971 | 972 | '@types/estree@1.0.7': 973 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 974 | 975 | '@types/json-schema@7.0.15': 976 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 977 | 978 | '@types/node@22.15.19': 979 | resolution: {integrity: sha512-3vMNr4TzNQyjHcRZadojpRaD9Ofr6LsonZAoQ+HMUa/9ORTPoxVIw0e0mpqWpdjj8xybyCM+oKOUH2vwFu/oEw==} 980 | 981 | '@types/react-dom@19.0.4': 982 | resolution: {integrity: sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==} 983 | peerDependencies: 984 | '@types/react': ^19.0.0 985 | 986 | '@types/react@19.0.10': 987 | resolution: {integrity: sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==} 988 | 989 | '@typescript-eslint/eslint-plugin@8.31.0': 990 | resolution: {integrity: sha512-evaQJZ/J/S4wisevDvC1KFZkPzRetH8kYZbkgcTRyql3mcKsf+ZFDV1BVWUGTCAW5pQHoqn5gK5b8kn7ou9aFQ==} 991 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 992 | peerDependencies: 993 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 994 | eslint: ^8.57.0 || ^9.0.0 995 | typescript: '>=4.8.4 <5.9.0' 996 | 997 | '@typescript-eslint/parser@8.31.0': 998 | resolution: {integrity: sha512-67kYYShjBR0jNI5vsf/c3WG4u+zDnCTHTPqVMQguffaWWFs7artgwKmfwdifl+r6XyM5LYLas/dInj2T0SgJyw==} 999 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1000 | peerDependencies: 1001 | eslint: ^8.57.0 || ^9.0.0 1002 | typescript: '>=4.8.4 <5.9.0' 1003 | 1004 | '@typescript-eslint/scope-manager@8.31.0': 1005 | resolution: {integrity: sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==} 1006 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1007 | 1008 | '@typescript-eslint/type-utils@8.31.0': 1009 | resolution: {integrity: sha512-DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg==} 1010 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1011 | peerDependencies: 1012 | eslint: ^8.57.0 || ^9.0.0 1013 | typescript: '>=4.8.4 <5.9.0' 1014 | 1015 | '@typescript-eslint/types@8.31.0': 1016 | resolution: {integrity: sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==} 1017 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1018 | 1019 | '@typescript-eslint/typescript-estree@8.31.0': 1020 | resolution: {integrity: sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==} 1021 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1022 | peerDependencies: 1023 | typescript: '>=4.8.4 <5.9.0' 1024 | 1025 | '@typescript-eslint/utils@8.31.0': 1026 | resolution: {integrity: sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==} 1027 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1028 | peerDependencies: 1029 | eslint: ^8.57.0 || ^9.0.0 1030 | typescript: '>=4.8.4 <5.9.0' 1031 | 1032 | '@typescript-eslint/visitor-keys@8.31.0': 1033 | resolution: {integrity: sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==} 1034 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1035 | 1036 | '@vitejs/plugin-react@4.4.1': 1037 | resolution: {integrity: sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==} 1038 | engines: {node: ^14.18.0 || >=16.0.0} 1039 | peerDependencies: 1040 | vite: ^4.2.0 || ^5.0.0 || ^6.0.0 1041 | 1042 | acorn-jsx@5.3.2: 1043 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 1044 | peerDependencies: 1045 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 1046 | 1047 | acorn-walk@8.3.2: 1048 | resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} 1049 | engines: {node: '>=0.4.0'} 1050 | 1051 | acorn@8.14.0: 1052 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 1053 | engines: {node: '>=0.4.0'} 1054 | hasBin: true 1055 | 1056 | acorn@8.14.1: 1057 | resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 1058 | engines: {node: '>=0.4.0'} 1059 | hasBin: true 1060 | 1061 | ajv@6.12.6: 1062 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 1063 | 1064 | ansi-styles@4.3.0: 1065 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 1066 | engines: {node: '>=8'} 1067 | 1068 | argparse@2.0.1: 1069 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 1070 | 1071 | as-table@1.0.55: 1072 | resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} 1073 | 1074 | balanced-match@1.0.2: 1075 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1076 | 1077 | blake3-wasm@2.1.5: 1078 | resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} 1079 | 1080 | brace-expansion@1.1.11: 1081 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1082 | 1083 | brace-expansion@2.0.1: 1084 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 1085 | 1086 | braces@3.0.3: 1087 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 1088 | engines: {node: '>=8'} 1089 | 1090 | browserslist@4.25.0: 1091 | resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} 1092 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1093 | hasBin: true 1094 | 1095 | callsites@3.1.0: 1096 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1097 | engines: {node: '>=6'} 1098 | 1099 | caniuse-lite@1.0.30001720: 1100 | resolution: {integrity: sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g==} 1101 | 1102 | chalk@4.1.2: 1103 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1104 | engines: {node: '>=10'} 1105 | 1106 | chownr@3.0.0: 1107 | resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} 1108 | engines: {node: '>=18'} 1109 | 1110 | color-convert@2.0.1: 1111 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1112 | engines: {node: '>=7.0.0'} 1113 | 1114 | color-name@1.1.4: 1115 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1116 | 1117 | color-string@1.9.1: 1118 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} 1119 | 1120 | color@4.2.3: 1121 | resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} 1122 | engines: {node: '>=12.5.0'} 1123 | 1124 | concat-map@0.0.1: 1125 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1126 | 1127 | convert-source-map@2.0.0: 1128 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 1129 | 1130 | cookie@0.7.2: 1131 | resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} 1132 | engines: {node: '>= 0.6'} 1133 | 1134 | cross-spawn@7.0.6: 1135 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 1136 | engines: {node: '>= 8'} 1137 | 1138 | csstype@3.1.3: 1139 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 1140 | 1141 | data-uri-to-buffer@2.0.2: 1142 | resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} 1143 | 1144 | debug@4.4.1: 1145 | resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} 1146 | engines: {node: '>=6.0'} 1147 | peerDependencies: 1148 | supports-color: '*' 1149 | peerDependenciesMeta: 1150 | supports-color: 1151 | optional: true 1152 | 1153 | deep-is@0.1.4: 1154 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1155 | 1156 | defu@6.1.4: 1157 | resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 1158 | 1159 | detect-libc@2.0.4: 1160 | resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} 1161 | engines: {node: '>=8'} 1162 | 1163 | electron-to-chromium@1.5.161: 1164 | resolution: {integrity: sha512-hwtetwfKNZo/UlwHIVBlKZVdy7o8bIZxxKs0Mv/ROPiQQQmDgdm5a+KvKtBsxM8ZjFzTaCeLoodZ8jiBE3o9rA==} 1165 | 1166 | enhanced-resolve@5.18.1: 1167 | resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} 1168 | engines: {node: '>=10.13.0'} 1169 | 1170 | esbuild@0.25.4: 1171 | resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} 1172 | engines: {node: '>=18'} 1173 | hasBin: true 1174 | 1175 | esbuild@0.25.5: 1176 | resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} 1177 | engines: {node: '>=18'} 1178 | hasBin: true 1179 | 1180 | escalade@3.2.0: 1181 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 1182 | engines: {node: '>=6'} 1183 | 1184 | escape-string-regexp@4.0.0: 1185 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1186 | engines: {node: '>=10'} 1187 | 1188 | eslint-plugin-react-hooks@5.2.0: 1189 | resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} 1190 | engines: {node: '>=10'} 1191 | peerDependencies: 1192 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 1193 | 1194 | eslint-plugin-react-refresh@0.4.20: 1195 | resolution: {integrity: sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==} 1196 | peerDependencies: 1197 | eslint: '>=8.40' 1198 | 1199 | eslint-scope@8.3.0: 1200 | resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} 1201 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1202 | 1203 | eslint-visitor-keys@3.4.3: 1204 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1205 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1206 | 1207 | eslint-visitor-keys@4.2.0: 1208 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 1209 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1210 | 1211 | eslint@9.27.0: 1212 | resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} 1213 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1214 | hasBin: true 1215 | peerDependencies: 1216 | jiti: '*' 1217 | peerDependenciesMeta: 1218 | jiti: 1219 | optional: true 1220 | 1221 | espree@10.3.0: 1222 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 1223 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1224 | 1225 | esquery@1.6.0: 1226 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1227 | engines: {node: '>=0.10'} 1228 | 1229 | esrecurse@4.3.0: 1230 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1231 | engines: {node: '>=4.0'} 1232 | 1233 | estraverse@5.3.0: 1234 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1235 | engines: {node: '>=4.0'} 1236 | 1237 | estree-walker@2.0.2: 1238 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1239 | 1240 | esutils@2.0.3: 1241 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1242 | engines: {node: '>=0.10.0'} 1243 | 1244 | exit-hook@2.2.1: 1245 | resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} 1246 | engines: {node: '>=6'} 1247 | 1248 | exsolve@1.0.5: 1249 | resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==} 1250 | 1251 | fast-deep-equal@3.1.3: 1252 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1253 | 1254 | fast-glob@3.3.3: 1255 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 1256 | engines: {node: '>=8.6.0'} 1257 | 1258 | fast-json-stable-stringify@2.1.0: 1259 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1260 | 1261 | fast-levenshtein@2.0.6: 1262 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1263 | 1264 | fastq@1.19.1: 1265 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 1266 | 1267 | fdir@6.4.5: 1268 | resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} 1269 | peerDependencies: 1270 | picomatch: ^3 || ^4 1271 | peerDependenciesMeta: 1272 | picomatch: 1273 | optional: true 1274 | 1275 | file-entry-cache@8.0.0: 1276 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1277 | engines: {node: '>=16.0.0'} 1278 | 1279 | fill-range@7.1.1: 1280 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1281 | engines: {node: '>=8'} 1282 | 1283 | find-up@5.0.0: 1284 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1285 | engines: {node: '>=10'} 1286 | 1287 | flat-cache@4.0.1: 1288 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1289 | engines: {node: '>=16'} 1290 | 1291 | flatted@3.3.3: 1292 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 1293 | 1294 | fsevents@2.3.3: 1295 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1296 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1297 | os: [darwin] 1298 | 1299 | gensync@1.0.0-beta.2: 1300 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1301 | engines: {node: '>=6.9.0'} 1302 | 1303 | get-port@7.1.0: 1304 | resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} 1305 | engines: {node: '>=16'} 1306 | 1307 | get-source@2.0.12: 1308 | resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} 1309 | 1310 | glob-parent@5.1.2: 1311 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1312 | engines: {node: '>= 6'} 1313 | 1314 | glob-parent@6.0.2: 1315 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1316 | engines: {node: '>=10.13.0'} 1317 | 1318 | glob-to-regexp@0.4.1: 1319 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 1320 | 1321 | globals@11.12.0: 1322 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1323 | engines: {node: '>=4'} 1324 | 1325 | globals@14.0.0: 1326 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1327 | engines: {node: '>=18'} 1328 | 1329 | globals@15.15.0: 1330 | resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} 1331 | engines: {node: '>=18'} 1332 | 1333 | graceful-fs@4.2.11: 1334 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1335 | 1336 | graphemer@1.4.0: 1337 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1338 | 1339 | has-flag@4.0.0: 1340 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1341 | engines: {node: '>=8'} 1342 | 1343 | hono@4.7.7: 1344 | resolution: {integrity: sha512-2PCpQRbN87Crty8/L/7akZN3UyZIAopSoRxCwRbJgUuV1+MHNFHzYFxZTg4v/03cXUm+jce/qa2VSBZpKBm3Qw==} 1345 | engines: {node: '>=16.9.0'} 1346 | 1347 | ignore@5.3.2: 1348 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1349 | engines: {node: '>= 4'} 1350 | 1351 | import-fresh@3.3.1: 1352 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 1353 | engines: {node: '>=6'} 1354 | 1355 | imurmurhash@0.1.4: 1356 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1357 | engines: {node: '>=0.8.19'} 1358 | 1359 | is-arrayish@0.3.2: 1360 | resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} 1361 | 1362 | is-extglob@2.1.1: 1363 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1364 | engines: {node: '>=0.10.0'} 1365 | 1366 | is-glob@4.0.3: 1367 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1368 | engines: {node: '>=0.10.0'} 1369 | 1370 | is-number@7.0.0: 1371 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1372 | engines: {node: '>=0.12.0'} 1373 | 1374 | isexe@2.0.0: 1375 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1376 | 1377 | jiti@2.4.2: 1378 | resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} 1379 | hasBin: true 1380 | 1381 | js-tokens@4.0.0: 1382 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1383 | 1384 | js-yaml@4.1.0: 1385 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1386 | hasBin: true 1387 | 1388 | jsesc@3.1.0: 1389 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1390 | engines: {node: '>=6'} 1391 | hasBin: true 1392 | 1393 | json-buffer@3.0.1: 1394 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1395 | 1396 | json-schema-traverse@0.4.1: 1397 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1398 | 1399 | json-stable-stringify-without-jsonify@1.0.1: 1400 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1401 | 1402 | json5@2.2.3: 1403 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1404 | engines: {node: '>=6'} 1405 | hasBin: true 1406 | 1407 | keyv@4.5.4: 1408 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1409 | 1410 | levn@0.4.1: 1411 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1412 | engines: {node: '>= 0.8.0'} 1413 | 1414 | lightningcss-darwin-arm64@1.30.1: 1415 | resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} 1416 | engines: {node: '>= 12.0.0'} 1417 | cpu: [arm64] 1418 | os: [darwin] 1419 | 1420 | lightningcss-darwin-x64@1.30.1: 1421 | resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} 1422 | engines: {node: '>= 12.0.0'} 1423 | cpu: [x64] 1424 | os: [darwin] 1425 | 1426 | lightningcss-freebsd-x64@1.30.1: 1427 | resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} 1428 | engines: {node: '>= 12.0.0'} 1429 | cpu: [x64] 1430 | os: [freebsd] 1431 | 1432 | lightningcss-linux-arm-gnueabihf@1.30.1: 1433 | resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} 1434 | engines: {node: '>= 12.0.0'} 1435 | cpu: [arm] 1436 | os: [linux] 1437 | 1438 | lightningcss-linux-arm64-gnu@1.30.1: 1439 | resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} 1440 | engines: {node: '>= 12.0.0'} 1441 | cpu: [arm64] 1442 | os: [linux] 1443 | 1444 | lightningcss-linux-arm64-musl@1.30.1: 1445 | resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} 1446 | engines: {node: '>= 12.0.0'} 1447 | cpu: [arm64] 1448 | os: [linux] 1449 | 1450 | lightningcss-linux-x64-gnu@1.30.1: 1451 | resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} 1452 | engines: {node: '>= 12.0.0'} 1453 | cpu: [x64] 1454 | os: [linux] 1455 | 1456 | lightningcss-linux-x64-musl@1.30.1: 1457 | resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} 1458 | engines: {node: '>= 12.0.0'} 1459 | cpu: [x64] 1460 | os: [linux] 1461 | 1462 | lightningcss-win32-arm64-msvc@1.30.1: 1463 | resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} 1464 | engines: {node: '>= 12.0.0'} 1465 | cpu: [arm64] 1466 | os: [win32] 1467 | 1468 | lightningcss-win32-x64-msvc@1.30.1: 1469 | resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} 1470 | engines: {node: '>= 12.0.0'} 1471 | cpu: [x64] 1472 | os: [win32] 1473 | 1474 | lightningcss@1.30.1: 1475 | resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} 1476 | engines: {node: '>= 12.0.0'} 1477 | 1478 | locate-path@6.0.0: 1479 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1480 | engines: {node: '>=10'} 1481 | 1482 | lodash.merge@4.6.2: 1483 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1484 | 1485 | lru-cache@5.1.1: 1486 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1487 | 1488 | magic-string@0.30.17: 1489 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1490 | 1491 | merge2@1.4.1: 1492 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1493 | engines: {node: '>= 8'} 1494 | 1495 | micromatch@4.0.8: 1496 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1497 | engines: {node: '>=8.6'} 1498 | 1499 | mime@3.0.0: 1500 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1501 | engines: {node: '>=10.0.0'} 1502 | hasBin: true 1503 | 1504 | miniflare@4.20250508.3: 1505 | resolution: {integrity: sha512-43oTmZ0CCmUcieetI5YDDyX0IiwhOcVIWzdBBCqWXK3F1XgQwg4d3fTqRyJnCmHIoaYx9CE1kTEKZC1UahPQhA==} 1506 | engines: {node: '>=18.0.0'} 1507 | hasBin: true 1508 | 1509 | miniflare@4.20250525.0: 1510 | resolution: {integrity: sha512-F5XRDn9WqxUaHphUT8qwy5WXC/3UwbBRJTdjjP5uwHX82vypxIlHNyHziZnplPLhQa1kbSdIY7wfuP1XJyyYZw==} 1511 | engines: {node: '>=18.0.0'} 1512 | hasBin: true 1513 | 1514 | minimatch@3.1.2: 1515 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1516 | 1517 | minimatch@9.0.5: 1518 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1519 | engines: {node: '>=16 || 14 >=14.17'} 1520 | 1521 | minipass@7.1.2: 1522 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1523 | engines: {node: '>=16 || 14 >=14.17'} 1524 | 1525 | minizlib@3.0.2: 1526 | resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} 1527 | engines: {node: '>= 18'} 1528 | 1529 | mkdirp@3.0.1: 1530 | resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} 1531 | engines: {node: '>=10'} 1532 | hasBin: true 1533 | 1534 | ms@2.1.3: 1535 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1536 | 1537 | mustache@4.2.0: 1538 | resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} 1539 | hasBin: true 1540 | 1541 | nanoid@3.3.11: 1542 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1543 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1544 | hasBin: true 1545 | 1546 | natural-compare@1.4.0: 1547 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1548 | 1549 | node-releases@2.0.19: 1550 | resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1551 | 1552 | ohash@2.0.11: 1553 | resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 1554 | 1555 | optionator@0.9.4: 1556 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1557 | engines: {node: '>= 0.8.0'} 1558 | 1559 | p-limit@3.1.0: 1560 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1561 | engines: {node: '>=10'} 1562 | 1563 | p-locate@5.0.0: 1564 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1565 | engines: {node: '>=10'} 1566 | 1567 | parent-module@1.0.1: 1568 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1569 | engines: {node: '>=6'} 1570 | 1571 | path-exists@4.0.0: 1572 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1573 | engines: {node: '>=8'} 1574 | 1575 | path-key@3.1.1: 1576 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1577 | engines: {node: '>=8'} 1578 | 1579 | path-to-regexp@6.3.0: 1580 | resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} 1581 | 1582 | pathe@2.0.3: 1583 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1584 | 1585 | picocolors@1.1.1: 1586 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1587 | 1588 | picomatch@2.3.1: 1589 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1590 | engines: {node: '>=8.6'} 1591 | 1592 | picomatch@4.0.2: 1593 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1594 | engines: {node: '>=12'} 1595 | 1596 | postcss@8.5.4: 1597 | resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} 1598 | engines: {node: ^10 || ^12 || >=14} 1599 | 1600 | prelude-ls@1.2.1: 1601 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1602 | engines: {node: '>= 0.8.0'} 1603 | 1604 | printable-characters@1.0.42: 1605 | resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} 1606 | 1607 | punycode@2.3.1: 1608 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1609 | engines: {node: '>=6'} 1610 | 1611 | queue-microtask@1.2.3: 1612 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1613 | 1614 | react-dom@19.0.0: 1615 | resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} 1616 | peerDependencies: 1617 | react: ^19.0.0 1618 | 1619 | react-refresh@0.17.0: 1620 | resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} 1621 | engines: {node: '>=0.10.0'} 1622 | 1623 | react@19.0.0: 1624 | resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} 1625 | engines: {node: '>=0.10.0'} 1626 | 1627 | resolve-from@4.0.0: 1628 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1629 | engines: {node: '>=4'} 1630 | 1631 | reusify@1.1.0: 1632 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1633 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1634 | 1635 | rollup@4.41.1: 1636 | resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==} 1637 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1638 | hasBin: true 1639 | 1640 | run-parallel@1.2.0: 1641 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1642 | 1643 | scheduler@0.25.0: 1644 | resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} 1645 | 1646 | semver@6.3.1: 1647 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1648 | hasBin: true 1649 | 1650 | semver@7.7.2: 1651 | resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} 1652 | engines: {node: '>=10'} 1653 | hasBin: true 1654 | 1655 | sharp@0.33.5: 1656 | resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} 1657 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1658 | 1659 | shebang-command@2.0.0: 1660 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1661 | engines: {node: '>=8'} 1662 | 1663 | shebang-regex@3.0.0: 1664 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1665 | engines: {node: '>=8'} 1666 | 1667 | simple-swizzle@0.2.2: 1668 | resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} 1669 | 1670 | source-map-js@1.2.1: 1671 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1672 | engines: {node: '>=0.10.0'} 1673 | 1674 | source-map@0.6.1: 1675 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1676 | engines: {node: '>=0.10.0'} 1677 | 1678 | stacktracey@2.1.8: 1679 | resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} 1680 | 1681 | stoppable@1.1.0: 1682 | resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} 1683 | engines: {node: '>=4', npm: '>=6'} 1684 | 1685 | strip-json-comments@3.1.1: 1686 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1687 | engines: {node: '>=8'} 1688 | 1689 | supports-color@7.2.0: 1690 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1691 | engines: {node: '>=8'} 1692 | 1693 | tailwindcss@4.1.8: 1694 | resolution: {integrity: sha512-kjeW8gjdxasbmFKpVGrGd5T4i40mV5J2Rasw48QARfYeQ8YS9x02ON9SFWax3Qf616rt4Cp3nVNIj6Hd1mP3og==} 1695 | 1696 | tapable@2.2.2: 1697 | resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} 1698 | engines: {node: '>=6'} 1699 | 1700 | tar@7.4.3: 1701 | resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} 1702 | engines: {node: '>=18'} 1703 | 1704 | tinyglobby@0.2.14: 1705 | resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} 1706 | engines: {node: '>=12.0.0'} 1707 | 1708 | to-regex-range@5.0.1: 1709 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1710 | engines: {node: '>=8.0'} 1711 | 1712 | ts-api-utils@2.1.0: 1713 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1714 | engines: {node: '>=18.12'} 1715 | peerDependencies: 1716 | typescript: '>=4.8.4' 1717 | 1718 | tslib@2.8.1: 1719 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1720 | 1721 | type-check@0.4.0: 1722 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1723 | engines: {node: '>= 0.8.0'} 1724 | 1725 | typescript-eslint@8.31.0: 1726 | resolution: {integrity: sha512-u+93F0sB0An8WEAPtwxVhFby573E8ckdjwUUQUj9QA4v8JAvgtoDdIyYR3XFwFHq2W1KJ1AurwJCO+w+Y1ixyQ==} 1727 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1728 | peerDependencies: 1729 | eslint: ^8.57.0 || ^9.0.0 1730 | typescript: '>=4.8.4 <5.9.0' 1731 | 1732 | typescript@5.8.3: 1733 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 1734 | engines: {node: '>=14.17'} 1735 | hasBin: true 1736 | 1737 | ufo@1.6.1: 1738 | resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} 1739 | 1740 | undici-types@6.21.0: 1741 | resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 1742 | 1743 | undici@5.29.0: 1744 | resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} 1745 | engines: {node: '>=14.0'} 1746 | 1747 | unenv@2.0.0-rc.17: 1748 | resolution: {integrity: sha512-B06u0wXkEd+o5gOCMl/ZHl5cfpYbDZKAT+HWTL+Hws6jWu7dCiqBBXXXzMFcFVJb8D4ytAnYmxJA83uwOQRSsg==} 1749 | 1750 | update-browserslist-db@1.1.3: 1751 | resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} 1752 | hasBin: true 1753 | peerDependencies: 1754 | browserslist: '>= 4.21.0' 1755 | 1756 | uri-js@4.4.1: 1757 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1758 | 1759 | vite@6.3.5: 1760 | resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} 1761 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1762 | hasBin: true 1763 | peerDependencies: 1764 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1765 | jiti: '>=1.21.0' 1766 | less: '*' 1767 | lightningcss: ^1.21.0 1768 | sass: '*' 1769 | sass-embedded: '*' 1770 | stylus: '*' 1771 | sugarss: '*' 1772 | terser: ^5.16.0 1773 | tsx: ^4.8.1 1774 | yaml: ^2.4.2 1775 | peerDependenciesMeta: 1776 | '@types/node': 1777 | optional: true 1778 | jiti: 1779 | optional: true 1780 | less: 1781 | optional: true 1782 | lightningcss: 1783 | optional: true 1784 | sass: 1785 | optional: true 1786 | sass-embedded: 1787 | optional: true 1788 | stylus: 1789 | optional: true 1790 | sugarss: 1791 | optional: true 1792 | terser: 1793 | optional: true 1794 | tsx: 1795 | optional: true 1796 | yaml: 1797 | optional: true 1798 | 1799 | which@2.0.2: 1800 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1801 | engines: {node: '>= 8'} 1802 | hasBin: true 1803 | 1804 | word-wrap@1.2.5: 1805 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1806 | engines: {node: '>=0.10.0'} 1807 | 1808 | workerd@1.20250508.0: 1809 | resolution: {integrity: sha512-ffLxe7dXSuGoA6jb3Qx2SClIV1aLHfJQ6RhGhzYHjQgv7dL6fdUOSIIGgzmu2mRKs+WFSujp6c8WgKquco6w3w==} 1810 | engines: {node: '>=16'} 1811 | hasBin: true 1812 | 1813 | workerd@1.20250525.0: 1814 | resolution: {integrity: sha512-SXJgLREy/Aqw2J71Oah0Pbu+SShbqbTExjVQyRBTM1r7MG7fS5NUlknhnt6sikjA/t4cO09Bi8OJqHdTkrcnYQ==} 1815 | engines: {node: '>=16'} 1816 | hasBin: true 1817 | 1818 | wrangler@4.18.0: 1819 | resolution: {integrity: sha512-/ng0KI9io97SNsBU1rheADBLLTE5Djybgsi4gXuvH1RBKJGpyj1xWvZ2fuWu8vAonit3EiZkwtERTm6kESHP3A==} 1820 | engines: {node: '>=18.0.0'} 1821 | hasBin: true 1822 | peerDependencies: 1823 | '@cloudflare/workers-types': ^4.20250525.0 1824 | peerDependenciesMeta: 1825 | '@cloudflare/workers-types': 1826 | optional: true 1827 | 1828 | ws@8.18.0: 1829 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 1830 | engines: {node: '>=10.0.0'} 1831 | peerDependencies: 1832 | bufferutil: ^4.0.1 1833 | utf-8-validate: '>=5.0.2' 1834 | peerDependenciesMeta: 1835 | bufferutil: 1836 | optional: true 1837 | utf-8-validate: 1838 | optional: true 1839 | 1840 | yallist@3.1.1: 1841 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1842 | 1843 | yallist@5.0.0: 1844 | resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} 1845 | engines: {node: '>=18'} 1846 | 1847 | yocto-queue@0.1.0: 1848 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1849 | engines: {node: '>=10'} 1850 | 1851 | youch@3.3.4: 1852 | resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==} 1853 | 1854 | zod@3.22.3: 1855 | resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} 1856 | 1857 | snapshots: 1858 | 1859 | '@ampproject/remapping@2.3.0': 1860 | dependencies: 1861 | '@jridgewell/gen-mapping': 0.3.8 1862 | '@jridgewell/trace-mapping': 0.3.25 1863 | 1864 | '@babel/code-frame@7.27.1': 1865 | dependencies: 1866 | '@babel/helper-validator-identifier': 7.27.1 1867 | js-tokens: 4.0.0 1868 | picocolors: 1.1.1 1869 | 1870 | '@babel/compat-data@7.27.3': {} 1871 | 1872 | '@babel/core@7.27.4': 1873 | dependencies: 1874 | '@ampproject/remapping': 2.3.0 1875 | '@babel/code-frame': 7.27.1 1876 | '@babel/generator': 7.27.3 1877 | '@babel/helper-compilation-targets': 7.27.2 1878 | '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) 1879 | '@babel/helpers': 7.27.4 1880 | '@babel/parser': 7.27.4 1881 | '@babel/template': 7.27.2 1882 | '@babel/traverse': 7.27.4 1883 | '@babel/types': 7.27.3 1884 | convert-source-map: 2.0.0 1885 | debug: 4.4.1 1886 | gensync: 1.0.0-beta.2 1887 | json5: 2.2.3 1888 | semver: 6.3.1 1889 | transitivePeerDependencies: 1890 | - supports-color 1891 | 1892 | '@babel/generator@7.27.3': 1893 | dependencies: 1894 | '@babel/parser': 7.27.4 1895 | '@babel/types': 7.27.3 1896 | '@jridgewell/gen-mapping': 0.3.8 1897 | '@jridgewell/trace-mapping': 0.3.25 1898 | jsesc: 3.1.0 1899 | 1900 | '@babel/helper-compilation-targets@7.27.2': 1901 | dependencies: 1902 | '@babel/compat-data': 7.27.3 1903 | '@babel/helper-validator-option': 7.27.1 1904 | browserslist: 4.25.0 1905 | lru-cache: 5.1.1 1906 | semver: 6.3.1 1907 | 1908 | '@babel/helper-module-imports@7.27.1': 1909 | dependencies: 1910 | '@babel/traverse': 7.27.4 1911 | '@babel/types': 7.27.3 1912 | transitivePeerDependencies: 1913 | - supports-color 1914 | 1915 | '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)': 1916 | dependencies: 1917 | '@babel/core': 7.27.4 1918 | '@babel/helper-module-imports': 7.27.1 1919 | '@babel/helper-validator-identifier': 7.27.1 1920 | '@babel/traverse': 7.27.4 1921 | transitivePeerDependencies: 1922 | - supports-color 1923 | 1924 | '@babel/helper-plugin-utils@7.27.1': {} 1925 | 1926 | '@babel/helper-string-parser@7.27.1': {} 1927 | 1928 | '@babel/helper-validator-identifier@7.27.1': {} 1929 | 1930 | '@babel/helper-validator-option@7.27.1': {} 1931 | 1932 | '@babel/helpers@7.27.4': 1933 | dependencies: 1934 | '@babel/template': 7.27.2 1935 | '@babel/types': 7.27.3 1936 | 1937 | '@babel/parser@7.27.4': 1938 | dependencies: 1939 | '@babel/types': 7.27.3 1940 | 1941 | '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.27.4)': 1942 | dependencies: 1943 | '@babel/core': 7.27.4 1944 | '@babel/helper-plugin-utils': 7.27.1 1945 | 1946 | '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.27.4)': 1947 | dependencies: 1948 | '@babel/core': 7.27.4 1949 | '@babel/helper-plugin-utils': 7.27.1 1950 | 1951 | '@babel/template@7.27.2': 1952 | dependencies: 1953 | '@babel/code-frame': 7.27.1 1954 | '@babel/parser': 7.27.4 1955 | '@babel/types': 7.27.3 1956 | 1957 | '@babel/traverse@7.27.4': 1958 | dependencies: 1959 | '@babel/code-frame': 7.27.1 1960 | '@babel/generator': 7.27.3 1961 | '@babel/parser': 7.27.4 1962 | '@babel/template': 7.27.2 1963 | '@babel/types': 7.27.3 1964 | debug: 4.4.1 1965 | globals: 11.12.0 1966 | transitivePeerDependencies: 1967 | - supports-color 1968 | 1969 | '@babel/types@7.27.3': 1970 | dependencies: 1971 | '@babel/helper-string-parser': 7.27.1 1972 | '@babel/helper-validator-identifier': 7.27.1 1973 | 1974 | '@cloudflare/kv-asset-handler@0.4.0': 1975 | dependencies: 1976 | mime: 3.0.0 1977 | 1978 | '@cloudflare/unenv-preset@2.3.2(unenv@2.0.0-rc.17)(workerd@1.20250525.0)': 1979 | dependencies: 1980 | unenv: 2.0.0-rc.17 1981 | optionalDependencies: 1982 | workerd: 1.20250525.0 1983 | 1984 | '@cloudflare/vite-plugin@1.2.4(rollup@4.41.1)(vite@6.3.5(@types/node@22.15.19)(jiti@2.4.2)(lightningcss@1.30.1))(workerd@1.20250525.0)(wrangler@4.18.0)': 1985 | dependencies: 1986 | '@cloudflare/unenv-preset': 2.3.2(unenv@2.0.0-rc.17)(workerd@1.20250525.0) 1987 | '@mjackson/node-fetch-server': 0.6.1 1988 | '@rollup/plugin-replace': 6.0.2(rollup@4.41.1) 1989 | get-port: 7.1.0 1990 | miniflare: 4.20250508.3 1991 | picocolors: 1.1.1 1992 | tinyglobby: 0.2.14 1993 | unenv: 2.0.0-rc.17 1994 | vite: 6.3.5(@types/node@22.15.19)(jiti@2.4.2)(lightningcss@1.30.1) 1995 | wrangler: 4.18.0 1996 | ws: 8.18.0 1997 | transitivePeerDependencies: 1998 | - bufferutil 1999 | - rollup 2000 | - utf-8-validate 2001 | - workerd 2002 | 2003 | '@cloudflare/workerd-darwin-64@1.20250508.0': 2004 | optional: true 2005 | 2006 | '@cloudflare/workerd-darwin-64@1.20250525.0': 2007 | optional: true 2008 | 2009 | '@cloudflare/workerd-darwin-arm64@1.20250508.0': 2010 | optional: true 2011 | 2012 | '@cloudflare/workerd-darwin-arm64@1.20250525.0': 2013 | optional: true 2014 | 2015 | '@cloudflare/workerd-linux-64@1.20250508.0': 2016 | optional: true 2017 | 2018 | '@cloudflare/workerd-linux-64@1.20250525.0': 2019 | optional: true 2020 | 2021 | '@cloudflare/workerd-linux-arm64@1.20250508.0': 2022 | optional: true 2023 | 2024 | '@cloudflare/workerd-linux-arm64@1.20250525.0': 2025 | optional: true 2026 | 2027 | '@cloudflare/workerd-windows-64@1.20250508.0': 2028 | optional: true 2029 | 2030 | '@cloudflare/workerd-windows-64@1.20250525.0': 2031 | optional: true 2032 | 2033 | '@cspotcode/source-map-support@0.8.1': 2034 | dependencies: 2035 | '@jridgewell/trace-mapping': 0.3.9 2036 | 2037 | '@emnapi/runtime@1.4.3': 2038 | dependencies: 2039 | tslib: 2.8.1 2040 | optional: true 2041 | 2042 | '@esbuild/aix-ppc64@0.25.4': 2043 | optional: true 2044 | 2045 | '@esbuild/aix-ppc64@0.25.5': 2046 | optional: true 2047 | 2048 | '@esbuild/android-arm64@0.25.4': 2049 | optional: true 2050 | 2051 | '@esbuild/android-arm64@0.25.5': 2052 | optional: true 2053 | 2054 | '@esbuild/android-arm@0.25.4': 2055 | optional: true 2056 | 2057 | '@esbuild/android-arm@0.25.5': 2058 | optional: true 2059 | 2060 | '@esbuild/android-x64@0.25.4': 2061 | optional: true 2062 | 2063 | '@esbuild/android-x64@0.25.5': 2064 | optional: true 2065 | 2066 | '@esbuild/darwin-arm64@0.25.4': 2067 | optional: true 2068 | 2069 | '@esbuild/darwin-arm64@0.25.5': 2070 | optional: true 2071 | 2072 | '@esbuild/darwin-x64@0.25.4': 2073 | optional: true 2074 | 2075 | '@esbuild/darwin-x64@0.25.5': 2076 | optional: true 2077 | 2078 | '@esbuild/freebsd-arm64@0.25.4': 2079 | optional: true 2080 | 2081 | '@esbuild/freebsd-arm64@0.25.5': 2082 | optional: true 2083 | 2084 | '@esbuild/freebsd-x64@0.25.4': 2085 | optional: true 2086 | 2087 | '@esbuild/freebsd-x64@0.25.5': 2088 | optional: true 2089 | 2090 | '@esbuild/linux-arm64@0.25.4': 2091 | optional: true 2092 | 2093 | '@esbuild/linux-arm64@0.25.5': 2094 | optional: true 2095 | 2096 | '@esbuild/linux-arm@0.25.4': 2097 | optional: true 2098 | 2099 | '@esbuild/linux-arm@0.25.5': 2100 | optional: true 2101 | 2102 | '@esbuild/linux-ia32@0.25.4': 2103 | optional: true 2104 | 2105 | '@esbuild/linux-ia32@0.25.5': 2106 | optional: true 2107 | 2108 | '@esbuild/linux-loong64@0.25.4': 2109 | optional: true 2110 | 2111 | '@esbuild/linux-loong64@0.25.5': 2112 | optional: true 2113 | 2114 | '@esbuild/linux-mips64el@0.25.4': 2115 | optional: true 2116 | 2117 | '@esbuild/linux-mips64el@0.25.5': 2118 | optional: true 2119 | 2120 | '@esbuild/linux-ppc64@0.25.4': 2121 | optional: true 2122 | 2123 | '@esbuild/linux-ppc64@0.25.5': 2124 | optional: true 2125 | 2126 | '@esbuild/linux-riscv64@0.25.4': 2127 | optional: true 2128 | 2129 | '@esbuild/linux-riscv64@0.25.5': 2130 | optional: true 2131 | 2132 | '@esbuild/linux-s390x@0.25.4': 2133 | optional: true 2134 | 2135 | '@esbuild/linux-s390x@0.25.5': 2136 | optional: true 2137 | 2138 | '@esbuild/linux-x64@0.25.4': 2139 | optional: true 2140 | 2141 | '@esbuild/linux-x64@0.25.5': 2142 | optional: true 2143 | 2144 | '@esbuild/netbsd-arm64@0.25.4': 2145 | optional: true 2146 | 2147 | '@esbuild/netbsd-arm64@0.25.5': 2148 | optional: true 2149 | 2150 | '@esbuild/netbsd-x64@0.25.4': 2151 | optional: true 2152 | 2153 | '@esbuild/netbsd-x64@0.25.5': 2154 | optional: true 2155 | 2156 | '@esbuild/openbsd-arm64@0.25.4': 2157 | optional: true 2158 | 2159 | '@esbuild/openbsd-arm64@0.25.5': 2160 | optional: true 2161 | 2162 | '@esbuild/openbsd-x64@0.25.4': 2163 | optional: true 2164 | 2165 | '@esbuild/openbsd-x64@0.25.5': 2166 | optional: true 2167 | 2168 | '@esbuild/sunos-x64@0.25.4': 2169 | optional: true 2170 | 2171 | '@esbuild/sunos-x64@0.25.5': 2172 | optional: true 2173 | 2174 | '@esbuild/win32-arm64@0.25.4': 2175 | optional: true 2176 | 2177 | '@esbuild/win32-arm64@0.25.5': 2178 | optional: true 2179 | 2180 | '@esbuild/win32-ia32@0.25.4': 2181 | optional: true 2182 | 2183 | '@esbuild/win32-ia32@0.25.5': 2184 | optional: true 2185 | 2186 | '@esbuild/win32-x64@0.25.4': 2187 | optional: true 2188 | 2189 | '@esbuild/win32-x64@0.25.5': 2190 | optional: true 2191 | 2192 | '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': 2193 | dependencies: 2194 | eslint: 9.27.0(jiti@2.4.2) 2195 | eslint-visitor-keys: 3.4.3 2196 | 2197 | '@eslint-community/regexpp@4.12.1': {} 2198 | 2199 | '@eslint/config-array@0.20.0': 2200 | dependencies: 2201 | '@eslint/object-schema': 2.1.6 2202 | debug: 4.4.1 2203 | minimatch: 3.1.2 2204 | transitivePeerDependencies: 2205 | - supports-color 2206 | 2207 | '@eslint/config-helpers@0.2.2': {} 2208 | 2209 | '@eslint/core@0.14.0': 2210 | dependencies: 2211 | '@types/json-schema': 7.0.15 2212 | 2213 | '@eslint/eslintrc@3.3.1': 2214 | dependencies: 2215 | ajv: 6.12.6 2216 | debug: 4.4.1 2217 | espree: 10.3.0 2218 | globals: 14.0.0 2219 | ignore: 5.3.2 2220 | import-fresh: 3.3.1 2221 | js-yaml: 4.1.0 2222 | minimatch: 3.1.2 2223 | strip-json-comments: 3.1.1 2224 | transitivePeerDependencies: 2225 | - supports-color 2226 | 2227 | '@eslint/js@9.25.1': {} 2228 | 2229 | '@eslint/js@9.27.0': {} 2230 | 2231 | '@eslint/object-schema@2.1.6': {} 2232 | 2233 | '@eslint/plugin-kit@0.3.1': 2234 | dependencies: 2235 | '@eslint/core': 0.14.0 2236 | levn: 0.4.1 2237 | 2238 | '@fastify/busboy@2.1.1': {} 2239 | 2240 | '@humanfs/core@0.19.1': {} 2241 | 2242 | '@humanfs/node@0.16.6': 2243 | dependencies: 2244 | '@humanfs/core': 0.19.1 2245 | '@humanwhocodes/retry': 0.3.1 2246 | 2247 | '@humanwhocodes/module-importer@1.0.1': {} 2248 | 2249 | '@humanwhocodes/retry@0.3.1': {} 2250 | 2251 | '@humanwhocodes/retry@0.4.3': {} 2252 | 2253 | '@img/sharp-darwin-arm64@0.33.5': 2254 | optionalDependencies: 2255 | '@img/sharp-libvips-darwin-arm64': 1.0.4 2256 | optional: true 2257 | 2258 | '@img/sharp-darwin-x64@0.33.5': 2259 | optionalDependencies: 2260 | '@img/sharp-libvips-darwin-x64': 1.0.4 2261 | optional: true 2262 | 2263 | '@img/sharp-libvips-darwin-arm64@1.0.4': 2264 | optional: true 2265 | 2266 | '@img/sharp-libvips-darwin-x64@1.0.4': 2267 | optional: true 2268 | 2269 | '@img/sharp-libvips-linux-arm64@1.0.4': 2270 | optional: true 2271 | 2272 | '@img/sharp-libvips-linux-arm@1.0.5': 2273 | optional: true 2274 | 2275 | '@img/sharp-libvips-linux-s390x@1.0.4': 2276 | optional: true 2277 | 2278 | '@img/sharp-libvips-linux-x64@1.0.4': 2279 | optional: true 2280 | 2281 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 2282 | optional: true 2283 | 2284 | '@img/sharp-libvips-linuxmusl-x64@1.0.4': 2285 | optional: true 2286 | 2287 | '@img/sharp-linux-arm64@0.33.5': 2288 | optionalDependencies: 2289 | '@img/sharp-libvips-linux-arm64': 1.0.4 2290 | optional: true 2291 | 2292 | '@img/sharp-linux-arm@0.33.5': 2293 | optionalDependencies: 2294 | '@img/sharp-libvips-linux-arm': 1.0.5 2295 | optional: true 2296 | 2297 | '@img/sharp-linux-s390x@0.33.5': 2298 | optionalDependencies: 2299 | '@img/sharp-libvips-linux-s390x': 1.0.4 2300 | optional: true 2301 | 2302 | '@img/sharp-linux-x64@0.33.5': 2303 | optionalDependencies: 2304 | '@img/sharp-libvips-linux-x64': 1.0.4 2305 | optional: true 2306 | 2307 | '@img/sharp-linuxmusl-arm64@0.33.5': 2308 | optionalDependencies: 2309 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 2310 | optional: true 2311 | 2312 | '@img/sharp-linuxmusl-x64@0.33.5': 2313 | optionalDependencies: 2314 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4 2315 | optional: true 2316 | 2317 | '@img/sharp-wasm32@0.33.5': 2318 | dependencies: 2319 | '@emnapi/runtime': 1.4.3 2320 | optional: true 2321 | 2322 | '@img/sharp-win32-ia32@0.33.5': 2323 | optional: true 2324 | 2325 | '@img/sharp-win32-x64@0.33.5': 2326 | optional: true 2327 | 2328 | '@isaacs/fs-minipass@4.0.1': 2329 | dependencies: 2330 | minipass: 7.1.2 2331 | 2332 | '@jridgewell/gen-mapping@0.3.8': 2333 | dependencies: 2334 | '@jridgewell/set-array': 1.2.1 2335 | '@jridgewell/sourcemap-codec': 1.5.0 2336 | '@jridgewell/trace-mapping': 0.3.25 2337 | 2338 | '@jridgewell/resolve-uri@3.1.2': {} 2339 | 2340 | '@jridgewell/set-array@1.2.1': {} 2341 | 2342 | '@jridgewell/sourcemap-codec@1.5.0': {} 2343 | 2344 | '@jridgewell/trace-mapping@0.3.25': 2345 | dependencies: 2346 | '@jridgewell/resolve-uri': 3.1.2 2347 | '@jridgewell/sourcemap-codec': 1.5.0 2348 | 2349 | '@jridgewell/trace-mapping@0.3.9': 2350 | dependencies: 2351 | '@jridgewell/resolve-uri': 3.1.2 2352 | '@jridgewell/sourcemap-codec': 1.5.0 2353 | 2354 | '@mjackson/node-fetch-server@0.6.1': {} 2355 | 2356 | '@nodelib/fs.scandir@2.1.5': 2357 | dependencies: 2358 | '@nodelib/fs.stat': 2.0.5 2359 | run-parallel: 1.2.0 2360 | 2361 | '@nodelib/fs.stat@2.0.5': {} 2362 | 2363 | '@nodelib/fs.walk@1.2.8': 2364 | dependencies: 2365 | '@nodelib/fs.scandir': 2.1.5 2366 | fastq: 1.19.1 2367 | 2368 | '@rollup/plugin-replace@6.0.2(rollup@4.41.1)': 2369 | dependencies: 2370 | '@rollup/pluginutils': 5.1.4(rollup@4.41.1) 2371 | magic-string: 0.30.17 2372 | optionalDependencies: 2373 | rollup: 4.41.1 2374 | 2375 | '@rollup/pluginutils@5.1.4(rollup@4.41.1)': 2376 | dependencies: 2377 | '@types/estree': 1.0.7 2378 | estree-walker: 2.0.2 2379 | picomatch: 4.0.2 2380 | optionalDependencies: 2381 | rollup: 4.41.1 2382 | 2383 | '@rollup/rollup-android-arm-eabi@4.41.1': 2384 | optional: true 2385 | 2386 | '@rollup/rollup-android-arm64@4.41.1': 2387 | optional: true 2388 | 2389 | '@rollup/rollup-darwin-arm64@4.41.1': 2390 | optional: true 2391 | 2392 | '@rollup/rollup-darwin-x64@4.41.1': 2393 | optional: true 2394 | 2395 | '@rollup/rollup-freebsd-arm64@4.41.1': 2396 | optional: true 2397 | 2398 | '@rollup/rollup-freebsd-x64@4.41.1': 2399 | optional: true 2400 | 2401 | '@rollup/rollup-linux-arm-gnueabihf@4.41.1': 2402 | optional: true 2403 | 2404 | '@rollup/rollup-linux-arm-musleabihf@4.41.1': 2405 | optional: true 2406 | 2407 | '@rollup/rollup-linux-arm64-gnu@4.41.1': 2408 | optional: true 2409 | 2410 | '@rollup/rollup-linux-arm64-musl@4.41.1': 2411 | optional: true 2412 | 2413 | '@rollup/rollup-linux-loongarch64-gnu@4.41.1': 2414 | optional: true 2415 | 2416 | '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': 2417 | optional: true 2418 | 2419 | '@rollup/rollup-linux-riscv64-gnu@4.41.1': 2420 | optional: true 2421 | 2422 | '@rollup/rollup-linux-riscv64-musl@4.41.1': 2423 | optional: true 2424 | 2425 | '@rollup/rollup-linux-s390x-gnu@4.41.1': 2426 | optional: true 2427 | 2428 | '@rollup/rollup-linux-x64-gnu@4.41.1': 2429 | optional: true 2430 | 2431 | '@rollup/rollup-linux-x64-musl@4.41.1': 2432 | optional: true 2433 | 2434 | '@rollup/rollup-win32-arm64-msvc@4.41.1': 2435 | optional: true 2436 | 2437 | '@rollup/rollup-win32-ia32-msvc@4.41.1': 2438 | optional: true 2439 | 2440 | '@rollup/rollup-win32-x64-msvc@4.41.1': 2441 | optional: true 2442 | 2443 | '@tailwindcss/node@4.1.8': 2444 | dependencies: 2445 | '@ampproject/remapping': 2.3.0 2446 | enhanced-resolve: 5.18.1 2447 | jiti: 2.4.2 2448 | lightningcss: 1.30.1 2449 | magic-string: 0.30.17 2450 | source-map-js: 1.2.1 2451 | tailwindcss: 4.1.8 2452 | 2453 | '@tailwindcss/oxide-android-arm64@4.1.8': 2454 | optional: true 2455 | 2456 | '@tailwindcss/oxide-darwin-arm64@4.1.8': 2457 | optional: true 2458 | 2459 | '@tailwindcss/oxide-darwin-x64@4.1.8': 2460 | optional: true 2461 | 2462 | '@tailwindcss/oxide-freebsd-x64@4.1.8': 2463 | optional: true 2464 | 2465 | '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.8': 2466 | optional: true 2467 | 2468 | '@tailwindcss/oxide-linux-arm64-gnu@4.1.8': 2469 | optional: true 2470 | 2471 | '@tailwindcss/oxide-linux-arm64-musl@4.1.8': 2472 | optional: true 2473 | 2474 | '@tailwindcss/oxide-linux-x64-gnu@4.1.8': 2475 | optional: true 2476 | 2477 | '@tailwindcss/oxide-linux-x64-musl@4.1.8': 2478 | optional: true 2479 | 2480 | '@tailwindcss/oxide-wasm32-wasi@4.1.8': 2481 | optional: true 2482 | 2483 | '@tailwindcss/oxide-win32-arm64-msvc@4.1.8': 2484 | optional: true 2485 | 2486 | '@tailwindcss/oxide-win32-x64-msvc@4.1.8': 2487 | optional: true 2488 | 2489 | '@tailwindcss/oxide@4.1.8': 2490 | dependencies: 2491 | detect-libc: 2.0.4 2492 | tar: 7.4.3 2493 | optionalDependencies: 2494 | '@tailwindcss/oxide-android-arm64': 4.1.8 2495 | '@tailwindcss/oxide-darwin-arm64': 4.1.8 2496 | '@tailwindcss/oxide-darwin-x64': 4.1.8 2497 | '@tailwindcss/oxide-freebsd-x64': 4.1.8 2498 | '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.8 2499 | '@tailwindcss/oxide-linux-arm64-gnu': 4.1.8 2500 | '@tailwindcss/oxide-linux-arm64-musl': 4.1.8 2501 | '@tailwindcss/oxide-linux-x64-gnu': 4.1.8 2502 | '@tailwindcss/oxide-linux-x64-musl': 4.1.8 2503 | '@tailwindcss/oxide-wasm32-wasi': 4.1.8 2504 | '@tailwindcss/oxide-win32-arm64-msvc': 4.1.8 2505 | '@tailwindcss/oxide-win32-x64-msvc': 4.1.8 2506 | 2507 | '@tailwindcss/vite@4.1.8(vite@6.3.5(@types/node@22.15.19)(jiti@2.4.2)(lightningcss@1.30.1))': 2508 | dependencies: 2509 | '@tailwindcss/node': 4.1.8 2510 | '@tailwindcss/oxide': 4.1.8 2511 | tailwindcss: 4.1.8 2512 | vite: 6.3.5(@types/node@22.15.19)(jiti@2.4.2)(lightningcss@1.30.1) 2513 | 2514 | '@types/babel__core@7.20.5': 2515 | dependencies: 2516 | '@babel/parser': 7.27.4 2517 | '@babel/types': 7.27.3 2518 | '@types/babel__generator': 7.27.0 2519 | '@types/babel__template': 7.4.4 2520 | '@types/babel__traverse': 7.20.7 2521 | 2522 | '@types/babel__generator@7.27.0': 2523 | dependencies: 2524 | '@babel/types': 7.27.3 2525 | 2526 | '@types/babel__template@7.4.4': 2527 | dependencies: 2528 | '@babel/parser': 7.27.4 2529 | '@babel/types': 7.27.3 2530 | 2531 | '@types/babel__traverse@7.20.7': 2532 | dependencies: 2533 | '@babel/types': 7.27.3 2534 | 2535 | '@types/estree@1.0.7': {} 2536 | 2537 | '@types/json-schema@7.0.15': {} 2538 | 2539 | '@types/node@22.15.19': 2540 | dependencies: 2541 | undici-types: 6.21.0 2542 | 2543 | '@types/react-dom@19.0.4(@types/react@19.0.10)': 2544 | dependencies: 2545 | '@types/react': 19.0.10 2546 | 2547 | '@types/react@19.0.10': 2548 | dependencies: 2549 | csstype: 3.1.3 2550 | 2551 | '@typescript-eslint/eslint-plugin@8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': 2552 | dependencies: 2553 | '@eslint-community/regexpp': 4.12.1 2554 | '@typescript-eslint/parser': 8.31.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) 2555 | '@typescript-eslint/scope-manager': 8.31.0 2556 | '@typescript-eslint/type-utils': 8.31.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) 2557 | '@typescript-eslint/utils': 8.31.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) 2558 | '@typescript-eslint/visitor-keys': 8.31.0 2559 | eslint: 9.27.0(jiti@2.4.2) 2560 | graphemer: 1.4.0 2561 | ignore: 5.3.2 2562 | natural-compare: 1.4.0 2563 | ts-api-utils: 2.1.0(typescript@5.8.3) 2564 | typescript: 5.8.3 2565 | transitivePeerDependencies: 2566 | - supports-color 2567 | 2568 | '@typescript-eslint/parser@8.31.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': 2569 | dependencies: 2570 | '@typescript-eslint/scope-manager': 8.31.0 2571 | '@typescript-eslint/types': 8.31.0 2572 | '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3) 2573 | '@typescript-eslint/visitor-keys': 8.31.0 2574 | debug: 4.4.1 2575 | eslint: 9.27.0(jiti@2.4.2) 2576 | typescript: 5.8.3 2577 | transitivePeerDependencies: 2578 | - supports-color 2579 | 2580 | '@typescript-eslint/scope-manager@8.31.0': 2581 | dependencies: 2582 | '@typescript-eslint/types': 8.31.0 2583 | '@typescript-eslint/visitor-keys': 8.31.0 2584 | 2585 | '@typescript-eslint/type-utils@8.31.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': 2586 | dependencies: 2587 | '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3) 2588 | '@typescript-eslint/utils': 8.31.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) 2589 | debug: 4.4.1 2590 | eslint: 9.27.0(jiti@2.4.2) 2591 | ts-api-utils: 2.1.0(typescript@5.8.3) 2592 | typescript: 5.8.3 2593 | transitivePeerDependencies: 2594 | - supports-color 2595 | 2596 | '@typescript-eslint/types@8.31.0': {} 2597 | 2598 | '@typescript-eslint/typescript-estree@8.31.0(typescript@5.8.3)': 2599 | dependencies: 2600 | '@typescript-eslint/types': 8.31.0 2601 | '@typescript-eslint/visitor-keys': 8.31.0 2602 | debug: 4.4.1 2603 | fast-glob: 3.3.3 2604 | is-glob: 4.0.3 2605 | minimatch: 9.0.5 2606 | semver: 7.7.2 2607 | ts-api-utils: 2.1.0(typescript@5.8.3) 2608 | typescript: 5.8.3 2609 | transitivePeerDependencies: 2610 | - supports-color 2611 | 2612 | '@typescript-eslint/utils@8.31.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': 2613 | dependencies: 2614 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) 2615 | '@typescript-eslint/scope-manager': 8.31.0 2616 | '@typescript-eslint/types': 8.31.0 2617 | '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3) 2618 | eslint: 9.27.0(jiti@2.4.2) 2619 | typescript: 5.8.3 2620 | transitivePeerDependencies: 2621 | - supports-color 2622 | 2623 | '@typescript-eslint/visitor-keys@8.31.0': 2624 | dependencies: 2625 | '@typescript-eslint/types': 8.31.0 2626 | eslint-visitor-keys: 4.2.0 2627 | 2628 | '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@22.15.19)(jiti@2.4.2)(lightningcss@1.30.1))': 2629 | dependencies: 2630 | '@babel/core': 7.27.4 2631 | '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.4) 2632 | '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.27.4) 2633 | '@types/babel__core': 7.20.5 2634 | react-refresh: 0.17.0 2635 | vite: 6.3.5(@types/node@22.15.19)(jiti@2.4.2)(lightningcss@1.30.1) 2636 | transitivePeerDependencies: 2637 | - supports-color 2638 | 2639 | acorn-jsx@5.3.2(acorn@8.14.1): 2640 | dependencies: 2641 | acorn: 8.14.1 2642 | 2643 | acorn-walk@8.3.2: {} 2644 | 2645 | acorn@8.14.0: {} 2646 | 2647 | acorn@8.14.1: {} 2648 | 2649 | ajv@6.12.6: 2650 | dependencies: 2651 | fast-deep-equal: 3.1.3 2652 | fast-json-stable-stringify: 2.1.0 2653 | json-schema-traverse: 0.4.1 2654 | uri-js: 4.4.1 2655 | 2656 | ansi-styles@4.3.0: 2657 | dependencies: 2658 | color-convert: 2.0.1 2659 | 2660 | argparse@2.0.1: {} 2661 | 2662 | as-table@1.0.55: 2663 | dependencies: 2664 | printable-characters: 1.0.42 2665 | 2666 | balanced-match@1.0.2: {} 2667 | 2668 | blake3-wasm@2.1.5: {} 2669 | 2670 | brace-expansion@1.1.11: 2671 | dependencies: 2672 | balanced-match: 1.0.2 2673 | concat-map: 0.0.1 2674 | 2675 | brace-expansion@2.0.1: 2676 | dependencies: 2677 | balanced-match: 1.0.2 2678 | 2679 | braces@3.0.3: 2680 | dependencies: 2681 | fill-range: 7.1.1 2682 | 2683 | browserslist@4.25.0: 2684 | dependencies: 2685 | caniuse-lite: 1.0.30001720 2686 | electron-to-chromium: 1.5.161 2687 | node-releases: 2.0.19 2688 | update-browserslist-db: 1.1.3(browserslist@4.25.0) 2689 | 2690 | callsites@3.1.0: {} 2691 | 2692 | caniuse-lite@1.0.30001720: {} 2693 | 2694 | chalk@4.1.2: 2695 | dependencies: 2696 | ansi-styles: 4.3.0 2697 | supports-color: 7.2.0 2698 | 2699 | chownr@3.0.0: {} 2700 | 2701 | color-convert@2.0.1: 2702 | dependencies: 2703 | color-name: 1.1.4 2704 | 2705 | color-name@1.1.4: {} 2706 | 2707 | color-string@1.9.1: 2708 | dependencies: 2709 | color-name: 1.1.4 2710 | simple-swizzle: 0.2.2 2711 | 2712 | color@4.2.3: 2713 | dependencies: 2714 | color-convert: 2.0.1 2715 | color-string: 1.9.1 2716 | 2717 | concat-map@0.0.1: {} 2718 | 2719 | convert-source-map@2.0.0: {} 2720 | 2721 | cookie@0.7.2: {} 2722 | 2723 | cross-spawn@7.0.6: 2724 | dependencies: 2725 | path-key: 3.1.1 2726 | shebang-command: 2.0.0 2727 | which: 2.0.2 2728 | 2729 | csstype@3.1.3: {} 2730 | 2731 | data-uri-to-buffer@2.0.2: {} 2732 | 2733 | debug@4.4.1: 2734 | dependencies: 2735 | ms: 2.1.3 2736 | 2737 | deep-is@0.1.4: {} 2738 | 2739 | defu@6.1.4: {} 2740 | 2741 | detect-libc@2.0.4: {} 2742 | 2743 | electron-to-chromium@1.5.161: {} 2744 | 2745 | enhanced-resolve@5.18.1: 2746 | dependencies: 2747 | graceful-fs: 4.2.11 2748 | tapable: 2.2.2 2749 | 2750 | esbuild@0.25.4: 2751 | optionalDependencies: 2752 | '@esbuild/aix-ppc64': 0.25.4 2753 | '@esbuild/android-arm': 0.25.4 2754 | '@esbuild/android-arm64': 0.25.4 2755 | '@esbuild/android-x64': 0.25.4 2756 | '@esbuild/darwin-arm64': 0.25.4 2757 | '@esbuild/darwin-x64': 0.25.4 2758 | '@esbuild/freebsd-arm64': 0.25.4 2759 | '@esbuild/freebsd-x64': 0.25.4 2760 | '@esbuild/linux-arm': 0.25.4 2761 | '@esbuild/linux-arm64': 0.25.4 2762 | '@esbuild/linux-ia32': 0.25.4 2763 | '@esbuild/linux-loong64': 0.25.4 2764 | '@esbuild/linux-mips64el': 0.25.4 2765 | '@esbuild/linux-ppc64': 0.25.4 2766 | '@esbuild/linux-riscv64': 0.25.4 2767 | '@esbuild/linux-s390x': 0.25.4 2768 | '@esbuild/linux-x64': 0.25.4 2769 | '@esbuild/netbsd-arm64': 0.25.4 2770 | '@esbuild/netbsd-x64': 0.25.4 2771 | '@esbuild/openbsd-arm64': 0.25.4 2772 | '@esbuild/openbsd-x64': 0.25.4 2773 | '@esbuild/sunos-x64': 0.25.4 2774 | '@esbuild/win32-arm64': 0.25.4 2775 | '@esbuild/win32-ia32': 0.25.4 2776 | '@esbuild/win32-x64': 0.25.4 2777 | 2778 | esbuild@0.25.5: 2779 | optionalDependencies: 2780 | '@esbuild/aix-ppc64': 0.25.5 2781 | '@esbuild/android-arm': 0.25.5 2782 | '@esbuild/android-arm64': 0.25.5 2783 | '@esbuild/android-x64': 0.25.5 2784 | '@esbuild/darwin-arm64': 0.25.5 2785 | '@esbuild/darwin-x64': 0.25.5 2786 | '@esbuild/freebsd-arm64': 0.25.5 2787 | '@esbuild/freebsd-x64': 0.25.5 2788 | '@esbuild/linux-arm': 0.25.5 2789 | '@esbuild/linux-arm64': 0.25.5 2790 | '@esbuild/linux-ia32': 0.25.5 2791 | '@esbuild/linux-loong64': 0.25.5 2792 | '@esbuild/linux-mips64el': 0.25.5 2793 | '@esbuild/linux-ppc64': 0.25.5 2794 | '@esbuild/linux-riscv64': 0.25.5 2795 | '@esbuild/linux-s390x': 0.25.5 2796 | '@esbuild/linux-x64': 0.25.5 2797 | '@esbuild/netbsd-arm64': 0.25.5 2798 | '@esbuild/netbsd-x64': 0.25.5 2799 | '@esbuild/openbsd-arm64': 0.25.5 2800 | '@esbuild/openbsd-x64': 0.25.5 2801 | '@esbuild/sunos-x64': 0.25.5 2802 | '@esbuild/win32-arm64': 0.25.5 2803 | '@esbuild/win32-ia32': 0.25.5 2804 | '@esbuild/win32-x64': 0.25.5 2805 | 2806 | escalade@3.2.0: {} 2807 | 2808 | escape-string-regexp@4.0.0: {} 2809 | 2810 | eslint-plugin-react-hooks@5.2.0(eslint@9.27.0(jiti@2.4.2)): 2811 | dependencies: 2812 | eslint: 9.27.0(jiti@2.4.2) 2813 | 2814 | eslint-plugin-react-refresh@0.4.20(eslint@9.27.0(jiti@2.4.2)): 2815 | dependencies: 2816 | eslint: 9.27.0(jiti@2.4.2) 2817 | 2818 | eslint-scope@8.3.0: 2819 | dependencies: 2820 | esrecurse: 4.3.0 2821 | estraverse: 5.3.0 2822 | 2823 | eslint-visitor-keys@3.4.3: {} 2824 | 2825 | eslint-visitor-keys@4.2.0: {} 2826 | 2827 | eslint@9.27.0(jiti@2.4.2): 2828 | dependencies: 2829 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) 2830 | '@eslint-community/regexpp': 4.12.1 2831 | '@eslint/config-array': 0.20.0 2832 | '@eslint/config-helpers': 0.2.2 2833 | '@eslint/core': 0.14.0 2834 | '@eslint/eslintrc': 3.3.1 2835 | '@eslint/js': 9.27.0 2836 | '@eslint/plugin-kit': 0.3.1 2837 | '@humanfs/node': 0.16.6 2838 | '@humanwhocodes/module-importer': 1.0.1 2839 | '@humanwhocodes/retry': 0.4.3 2840 | '@types/estree': 1.0.7 2841 | '@types/json-schema': 7.0.15 2842 | ajv: 6.12.6 2843 | chalk: 4.1.2 2844 | cross-spawn: 7.0.6 2845 | debug: 4.4.1 2846 | escape-string-regexp: 4.0.0 2847 | eslint-scope: 8.3.0 2848 | eslint-visitor-keys: 4.2.0 2849 | espree: 10.3.0 2850 | esquery: 1.6.0 2851 | esutils: 2.0.3 2852 | fast-deep-equal: 3.1.3 2853 | file-entry-cache: 8.0.0 2854 | find-up: 5.0.0 2855 | glob-parent: 6.0.2 2856 | ignore: 5.3.2 2857 | imurmurhash: 0.1.4 2858 | is-glob: 4.0.3 2859 | json-stable-stringify-without-jsonify: 1.0.1 2860 | lodash.merge: 4.6.2 2861 | minimatch: 3.1.2 2862 | natural-compare: 1.4.0 2863 | optionator: 0.9.4 2864 | optionalDependencies: 2865 | jiti: 2.4.2 2866 | transitivePeerDependencies: 2867 | - supports-color 2868 | 2869 | espree@10.3.0: 2870 | dependencies: 2871 | acorn: 8.14.1 2872 | acorn-jsx: 5.3.2(acorn@8.14.1) 2873 | eslint-visitor-keys: 4.2.0 2874 | 2875 | esquery@1.6.0: 2876 | dependencies: 2877 | estraverse: 5.3.0 2878 | 2879 | esrecurse@4.3.0: 2880 | dependencies: 2881 | estraverse: 5.3.0 2882 | 2883 | estraverse@5.3.0: {} 2884 | 2885 | estree-walker@2.0.2: {} 2886 | 2887 | esutils@2.0.3: {} 2888 | 2889 | exit-hook@2.2.1: {} 2890 | 2891 | exsolve@1.0.5: {} 2892 | 2893 | fast-deep-equal@3.1.3: {} 2894 | 2895 | fast-glob@3.3.3: 2896 | dependencies: 2897 | '@nodelib/fs.stat': 2.0.5 2898 | '@nodelib/fs.walk': 1.2.8 2899 | glob-parent: 5.1.2 2900 | merge2: 1.4.1 2901 | micromatch: 4.0.8 2902 | 2903 | fast-json-stable-stringify@2.1.0: {} 2904 | 2905 | fast-levenshtein@2.0.6: {} 2906 | 2907 | fastq@1.19.1: 2908 | dependencies: 2909 | reusify: 1.1.0 2910 | 2911 | fdir@6.4.5(picomatch@4.0.2): 2912 | optionalDependencies: 2913 | picomatch: 4.0.2 2914 | 2915 | file-entry-cache@8.0.0: 2916 | dependencies: 2917 | flat-cache: 4.0.1 2918 | 2919 | fill-range@7.1.1: 2920 | dependencies: 2921 | to-regex-range: 5.0.1 2922 | 2923 | find-up@5.0.0: 2924 | dependencies: 2925 | locate-path: 6.0.0 2926 | path-exists: 4.0.0 2927 | 2928 | flat-cache@4.0.1: 2929 | dependencies: 2930 | flatted: 3.3.3 2931 | keyv: 4.5.4 2932 | 2933 | flatted@3.3.3: {} 2934 | 2935 | fsevents@2.3.3: 2936 | optional: true 2937 | 2938 | gensync@1.0.0-beta.2: {} 2939 | 2940 | get-port@7.1.0: {} 2941 | 2942 | get-source@2.0.12: 2943 | dependencies: 2944 | data-uri-to-buffer: 2.0.2 2945 | source-map: 0.6.1 2946 | 2947 | glob-parent@5.1.2: 2948 | dependencies: 2949 | is-glob: 4.0.3 2950 | 2951 | glob-parent@6.0.2: 2952 | dependencies: 2953 | is-glob: 4.0.3 2954 | 2955 | glob-to-regexp@0.4.1: {} 2956 | 2957 | globals@11.12.0: {} 2958 | 2959 | globals@14.0.0: {} 2960 | 2961 | globals@15.15.0: {} 2962 | 2963 | graceful-fs@4.2.11: {} 2964 | 2965 | graphemer@1.4.0: {} 2966 | 2967 | has-flag@4.0.0: {} 2968 | 2969 | hono@4.7.7: {} 2970 | 2971 | ignore@5.3.2: {} 2972 | 2973 | import-fresh@3.3.1: 2974 | dependencies: 2975 | parent-module: 1.0.1 2976 | resolve-from: 4.0.0 2977 | 2978 | imurmurhash@0.1.4: {} 2979 | 2980 | is-arrayish@0.3.2: {} 2981 | 2982 | is-extglob@2.1.1: {} 2983 | 2984 | is-glob@4.0.3: 2985 | dependencies: 2986 | is-extglob: 2.1.1 2987 | 2988 | is-number@7.0.0: {} 2989 | 2990 | isexe@2.0.0: {} 2991 | 2992 | jiti@2.4.2: {} 2993 | 2994 | js-tokens@4.0.0: {} 2995 | 2996 | js-yaml@4.1.0: 2997 | dependencies: 2998 | argparse: 2.0.1 2999 | 3000 | jsesc@3.1.0: {} 3001 | 3002 | json-buffer@3.0.1: {} 3003 | 3004 | json-schema-traverse@0.4.1: {} 3005 | 3006 | json-stable-stringify-without-jsonify@1.0.1: {} 3007 | 3008 | json5@2.2.3: {} 3009 | 3010 | keyv@4.5.4: 3011 | dependencies: 3012 | json-buffer: 3.0.1 3013 | 3014 | levn@0.4.1: 3015 | dependencies: 3016 | prelude-ls: 1.2.1 3017 | type-check: 0.4.0 3018 | 3019 | lightningcss-darwin-arm64@1.30.1: 3020 | optional: true 3021 | 3022 | lightningcss-darwin-x64@1.30.1: 3023 | optional: true 3024 | 3025 | lightningcss-freebsd-x64@1.30.1: 3026 | optional: true 3027 | 3028 | lightningcss-linux-arm-gnueabihf@1.30.1: 3029 | optional: true 3030 | 3031 | lightningcss-linux-arm64-gnu@1.30.1: 3032 | optional: true 3033 | 3034 | lightningcss-linux-arm64-musl@1.30.1: 3035 | optional: true 3036 | 3037 | lightningcss-linux-x64-gnu@1.30.1: 3038 | optional: true 3039 | 3040 | lightningcss-linux-x64-musl@1.30.1: 3041 | optional: true 3042 | 3043 | lightningcss-win32-arm64-msvc@1.30.1: 3044 | optional: true 3045 | 3046 | lightningcss-win32-x64-msvc@1.30.1: 3047 | optional: true 3048 | 3049 | lightningcss@1.30.1: 3050 | dependencies: 3051 | detect-libc: 2.0.4 3052 | optionalDependencies: 3053 | lightningcss-darwin-arm64: 1.30.1 3054 | lightningcss-darwin-x64: 1.30.1 3055 | lightningcss-freebsd-x64: 1.30.1 3056 | lightningcss-linux-arm-gnueabihf: 1.30.1 3057 | lightningcss-linux-arm64-gnu: 1.30.1 3058 | lightningcss-linux-arm64-musl: 1.30.1 3059 | lightningcss-linux-x64-gnu: 1.30.1 3060 | lightningcss-linux-x64-musl: 1.30.1 3061 | lightningcss-win32-arm64-msvc: 1.30.1 3062 | lightningcss-win32-x64-msvc: 1.30.1 3063 | 3064 | locate-path@6.0.0: 3065 | dependencies: 3066 | p-locate: 5.0.0 3067 | 3068 | lodash.merge@4.6.2: {} 3069 | 3070 | lru-cache@5.1.1: 3071 | dependencies: 3072 | yallist: 3.1.1 3073 | 3074 | magic-string@0.30.17: 3075 | dependencies: 3076 | '@jridgewell/sourcemap-codec': 1.5.0 3077 | 3078 | merge2@1.4.1: {} 3079 | 3080 | micromatch@4.0.8: 3081 | dependencies: 3082 | braces: 3.0.3 3083 | picomatch: 2.3.1 3084 | 3085 | mime@3.0.0: {} 3086 | 3087 | miniflare@4.20250508.3: 3088 | dependencies: 3089 | '@cspotcode/source-map-support': 0.8.1 3090 | acorn: 8.14.0 3091 | acorn-walk: 8.3.2 3092 | exit-hook: 2.2.1 3093 | glob-to-regexp: 0.4.1 3094 | sharp: 0.33.5 3095 | stoppable: 1.1.0 3096 | undici: 5.29.0 3097 | workerd: 1.20250508.0 3098 | ws: 8.18.0 3099 | youch: 3.3.4 3100 | zod: 3.22.3 3101 | transitivePeerDependencies: 3102 | - bufferutil 3103 | - utf-8-validate 3104 | 3105 | miniflare@4.20250525.0: 3106 | dependencies: 3107 | '@cspotcode/source-map-support': 0.8.1 3108 | acorn: 8.14.0 3109 | acorn-walk: 8.3.2 3110 | exit-hook: 2.2.1 3111 | glob-to-regexp: 0.4.1 3112 | sharp: 0.33.5 3113 | stoppable: 1.1.0 3114 | undici: 5.29.0 3115 | workerd: 1.20250525.0 3116 | ws: 8.18.0 3117 | youch: 3.3.4 3118 | zod: 3.22.3 3119 | transitivePeerDependencies: 3120 | - bufferutil 3121 | - utf-8-validate 3122 | 3123 | minimatch@3.1.2: 3124 | dependencies: 3125 | brace-expansion: 1.1.11 3126 | 3127 | minimatch@9.0.5: 3128 | dependencies: 3129 | brace-expansion: 2.0.1 3130 | 3131 | minipass@7.1.2: {} 3132 | 3133 | minizlib@3.0.2: 3134 | dependencies: 3135 | minipass: 7.1.2 3136 | 3137 | mkdirp@3.0.1: {} 3138 | 3139 | ms@2.1.3: {} 3140 | 3141 | mustache@4.2.0: {} 3142 | 3143 | nanoid@3.3.11: {} 3144 | 3145 | natural-compare@1.4.0: {} 3146 | 3147 | node-releases@2.0.19: {} 3148 | 3149 | ohash@2.0.11: {} 3150 | 3151 | optionator@0.9.4: 3152 | dependencies: 3153 | deep-is: 0.1.4 3154 | fast-levenshtein: 2.0.6 3155 | levn: 0.4.1 3156 | prelude-ls: 1.2.1 3157 | type-check: 0.4.0 3158 | word-wrap: 1.2.5 3159 | 3160 | p-limit@3.1.0: 3161 | dependencies: 3162 | yocto-queue: 0.1.0 3163 | 3164 | p-locate@5.0.0: 3165 | dependencies: 3166 | p-limit: 3.1.0 3167 | 3168 | parent-module@1.0.1: 3169 | dependencies: 3170 | callsites: 3.1.0 3171 | 3172 | path-exists@4.0.0: {} 3173 | 3174 | path-key@3.1.1: {} 3175 | 3176 | path-to-regexp@6.3.0: {} 3177 | 3178 | pathe@2.0.3: {} 3179 | 3180 | picocolors@1.1.1: {} 3181 | 3182 | picomatch@2.3.1: {} 3183 | 3184 | picomatch@4.0.2: {} 3185 | 3186 | postcss@8.5.4: 3187 | dependencies: 3188 | nanoid: 3.3.11 3189 | picocolors: 1.1.1 3190 | source-map-js: 1.2.1 3191 | 3192 | prelude-ls@1.2.1: {} 3193 | 3194 | printable-characters@1.0.42: {} 3195 | 3196 | punycode@2.3.1: {} 3197 | 3198 | queue-microtask@1.2.3: {} 3199 | 3200 | react-dom@19.0.0(react@19.0.0): 3201 | dependencies: 3202 | react: 19.0.0 3203 | scheduler: 0.25.0 3204 | 3205 | react-refresh@0.17.0: {} 3206 | 3207 | react@19.0.0: {} 3208 | 3209 | resolve-from@4.0.0: {} 3210 | 3211 | reusify@1.1.0: {} 3212 | 3213 | rollup@4.41.1: 3214 | dependencies: 3215 | '@types/estree': 1.0.7 3216 | optionalDependencies: 3217 | '@rollup/rollup-android-arm-eabi': 4.41.1 3218 | '@rollup/rollup-android-arm64': 4.41.1 3219 | '@rollup/rollup-darwin-arm64': 4.41.1 3220 | '@rollup/rollup-darwin-x64': 4.41.1 3221 | '@rollup/rollup-freebsd-arm64': 4.41.1 3222 | '@rollup/rollup-freebsd-x64': 4.41.1 3223 | '@rollup/rollup-linux-arm-gnueabihf': 4.41.1 3224 | '@rollup/rollup-linux-arm-musleabihf': 4.41.1 3225 | '@rollup/rollup-linux-arm64-gnu': 4.41.1 3226 | '@rollup/rollup-linux-arm64-musl': 4.41.1 3227 | '@rollup/rollup-linux-loongarch64-gnu': 4.41.1 3228 | '@rollup/rollup-linux-powerpc64le-gnu': 4.41.1 3229 | '@rollup/rollup-linux-riscv64-gnu': 4.41.1 3230 | '@rollup/rollup-linux-riscv64-musl': 4.41.1 3231 | '@rollup/rollup-linux-s390x-gnu': 4.41.1 3232 | '@rollup/rollup-linux-x64-gnu': 4.41.1 3233 | '@rollup/rollup-linux-x64-musl': 4.41.1 3234 | '@rollup/rollup-win32-arm64-msvc': 4.41.1 3235 | '@rollup/rollup-win32-ia32-msvc': 4.41.1 3236 | '@rollup/rollup-win32-x64-msvc': 4.41.1 3237 | fsevents: 2.3.3 3238 | 3239 | run-parallel@1.2.0: 3240 | dependencies: 3241 | queue-microtask: 1.2.3 3242 | 3243 | scheduler@0.25.0: {} 3244 | 3245 | semver@6.3.1: {} 3246 | 3247 | semver@7.7.2: {} 3248 | 3249 | sharp@0.33.5: 3250 | dependencies: 3251 | color: 4.2.3 3252 | detect-libc: 2.0.4 3253 | semver: 7.7.2 3254 | optionalDependencies: 3255 | '@img/sharp-darwin-arm64': 0.33.5 3256 | '@img/sharp-darwin-x64': 0.33.5 3257 | '@img/sharp-libvips-darwin-arm64': 1.0.4 3258 | '@img/sharp-libvips-darwin-x64': 1.0.4 3259 | '@img/sharp-libvips-linux-arm': 1.0.5 3260 | '@img/sharp-libvips-linux-arm64': 1.0.4 3261 | '@img/sharp-libvips-linux-s390x': 1.0.4 3262 | '@img/sharp-libvips-linux-x64': 1.0.4 3263 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 3264 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4 3265 | '@img/sharp-linux-arm': 0.33.5 3266 | '@img/sharp-linux-arm64': 0.33.5 3267 | '@img/sharp-linux-s390x': 0.33.5 3268 | '@img/sharp-linux-x64': 0.33.5 3269 | '@img/sharp-linuxmusl-arm64': 0.33.5 3270 | '@img/sharp-linuxmusl-x64': 0.33.5 3271 | '@img/sharp-wasm32': 0.33.5 3272 | '@img/sharp-win32-ia32': 0.33.5 3273 | '@img/sharp-win32-x64': 0.33.5 3274 | 3275 | shebang-command@2.0.0: 3276 | dependencies: 3277 | shebang-regex: 3.0.0 3278 | 3279 | shebang-regex@3.0.0: {} 3280 | 3281 | simple-swizzle@0.2.2: 3282 | dependencies: 3283 | is-arrayish: 0.3.2 3284 | 3285 | source-map-js@1.2.1: {} 3286 | 3287 | source-map@0.6.1: {} 3288 | 3289 | stacktracey@2.1.8: 3290 | dependencies: 3291 | as-table: 1.0.55 3292 | get-source: 2.0.12 3293 | 3294 | stoppable@1.1.0: {} 3295 | 3296 | strip-json-comments@3.1.1: {} 3297 | 3298 | supports-color@7.2.0: 3299 | dependencies: 3300 | has-flag: 4.0.0 3301 | 3302 | tailwindcss@4.1.8: {} 3303 | 3304 | tapable@2.2.2: {} 3305 | 3306 | tar@7.4.3: 3307 | dependencies: 3308 | '@isaacs/fs-minipass': 4.0.1 3309 | chownr: 3.0.0 3310 | minipass: 7.1.2 3311 | minizlib: 3.0.2 3312 | mkdirp: 3.0.1 3313 | yallist: 5.0.0 3314 | 3315 | tinyglobby@0.2.14: 3316 | dependencies: 3317 | fdir: 6.4.5(picomatch@4.0.2) 3318 | picomatch: 4.0.2 3319 | 3320 | to-regex-range@5.0.1: 3321 | dependencies: 3322 | is-number: 7.0.0 3323 | 3324 | ts-api-utils@2.1.0(typescript@5.8.3): 3325 | dependencies: 3326 | typescript: 5.8.3 3327 | 3328 | tslib@2.8.1: 3329 | optional: true 3330 | 3331 | type-check@0.4.0: 3332 | dependencies: 3333 | prelude-ls: 1.2.1 3334 | 3335 | typescript-eslint@8.31.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): 3336 | dependencies: 3337 | '@typescript-eslint/eslint-plugin': 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) 3338 | '@typescript-eslint/parser': 8.31.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) 3339 | '@typescript-eslint/utils': 8.31.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) 3340 | eslint: 9.27.0(jiti@2.4.2) 3341 | typescript: 5.8.3 3342 | transitivePeerDependencies: 3343 | - supports-color 3344 | 3345 | typescript@5.8.3: {} 3346 | 3347 | ufo@1.6.1: {} 3348 | 3349 | undici-types@6.21.0: {} 3350 | 3351 | undici@5.29.0: 3352 | dependencies: 3353 | '@fastify/busboy': 2.1.1 3354 | 3355 | unenv@2.0.0-rc.17: 3356 | dependencies: 3357 | defu: 6.1.4 3358 | exsolve: 1.0.5 3359 | ohash: 2.0.11 3360 | pathe: 2.0.3 3361 | ufo: 1.6.1 3362 | 3363 | update-browserslist-db@1.1.3(browserslist@4.25.0): 3364 | dependencies: 3365 | browserslist: 4.25.0 3366 | escalade: 3.2.0 3367 | picocolors: 1.1.1 3368 | 3369 | uri-js@4.4.1: 3370 | dependencies: 3371 | punycode: 2.3.1 3372 | 3373 | vite@6.3.5(@types/node@22.15.19)(jiti@2.4.2)(lightningcss@1.30.1): 3374 | dependencies: 3375 | esbuild: 0.25.5 3376 | fdir: 6.4.5(picomatch@4.0.2) 3377 | picomatch: 4.0.2 3378 | postcss: 8.5.4 3379 | rollup: 4.41.1 3380 | tinyglobby: 0.2.14 3381 | optionalDependencies: 3382 | '@types/node': 22.15.19 3383 | fsevents: 2.3.3 3384 | jiti: 2.4.2 3385 | lightningcss: 1.30.1 3386 | 3387 | which@2.0.2: 3388 | dependencies: 3389 | isexe: 2.0.0 3390 | 3391 | word-wrap@1.2.5: {} 3392 | 3393 | workerd@1.20250508.0: 3394 | optionalDependencies: 3395 | '@cloudflare/workerd-darwin-64': 1.20250508.0 3396 | '@cloudflare/workerd-darwin-arm64': 1.20250508.0 3397 | '@cloudflare/workerd-linux-64': 1.20250508.0 3398 | '@cloudflare/workerd-linux-arm64': 1.20250508.0 3399 | '@cloudflare/workerd-windows-64': 1.20250508.0 3400 | 3401 | workerd@1.20250525.0: 3402 | optionalDependencies: 3403 | '@cloudflare/workerd-darwin-64': 1.20250525.0 3404 | '@cloudflare/workerd-darwin-arm64': 1.20250525.0 3405 | '@cloudflare/workerd-linux-64': 1.20250525.0 3406 | '@cloudflare/workerd-linux-arm64': 1.20250525.0 3407 | '@cloudflare/workerd-windows-64': 1.20250525.0 3408 | 3409 | wrangler@4.18.0: 3410 | dependencies: 3411 | '@cloudflare/kv-asset-handler': 0.4.0 3412 | '@cloudflare/unenv-preset': 2.3.2(unenv@2.0.0-rc.17)(workerd@1.20250525.0) 3413 | blake3-wasm: 2.1.5 3414 | esbuild: 0.25.4 3415 | miniflare: 4.20250525.0 3416 | path-to-regexp: 6.3.0 3417 | unenv: 2.0.0-rc.17 3418 | workerd: 1.20250525.0 3419 | optionalDependencies: 3420 | fsevents: 2.3.3 3421 | transitivePeerDependencies: 3422 | - bufferutil 3423 | - utf-8-validate 3424 | 3425 | ws@8.18.0: {} 3426 | 3427 | yallist@3.1.1: {} 3428 | 3429 | yallist@5.0.0: {} 3430 | 3431 | yocto-queue@0.1.0: {} 3432 | 3433 | youch@3.3.4: 3434 | dependencies: 3435 | cookie: 0.7.2 3436 | mustache: 4.2.0 3437 | stacktracey: 2.1.8 3438 | 3439 | zod@3.22.3: {} 3440 | -------------------------------------------------------------------------------- /preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/houhoz/cf-workers-telegram-image/6141f5adf3835ed58e6e25184fb10fd4ebaae462/preview.png -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/react-app/App.tsx: -------------------------------------------------------------------------------- 1 | import { useState, useRef } from 'react'; 2 | import type { ChangeEvent, FormEvent } from 'react'; 3 | 4 | function App() { 5 | const [selectedFile, setSelectedFile] = useState(null); 6 | const [previewUrl, setPreviewUrl] = useState(null); 7 | const [pending, setPending] = useState(false); 8 | const fileInputRef = useRef(null); 9 | 10 | const [phonos, setPhonos] = useState< 11 | { 12 | file_id: string; 13 | file_unique_id: string; 14 | file_size: number; 15 | width: number; 16 | height: number; 17 | }[] 18 | >([]); 19 | 20 | const handleFileChange = (e: ChangeEvent) => { 21 | if (e.target.files && e.target.files[0]) { 22 | const file = e.target.files[0]; 23 | setSelectedFile(file); 24 | 25 | // Create preview URL 26 | const reader = new FileReader(); 27 | reader.onloadend = () => { 28 | setPreviewUrl(reader.result as string); 29 | }; 30 | reader.readAsDataURL(file); 31 | } 32 | }; 33 | 34 | const handleSubmit = async (e: FormEvent) => { 35 | e.preventDefault(); 36 | if (!selectedFile) return; 37 | setPending(true); 38 | 39 | const formData = new FormData(e.currentTarget); 40 | 41 | try { 42 | // 客户端处理上传状态 43 | const response = await fetch('/api/upload', { 44 | method: 'POST', 45 | body: formData, 46 | }); 47 | 48 | if (response.ok) { 49 | const res = await response.json(); 50 | setPhonos(res.phonos); 51 | alert('图片已成功上传到 Telegram'); 52 | // Reset form 53 | setSelectedFile(null); 54 | setPreviewUrl(null); 55 | if (fileInputRef.current) { 56 | fileInputRef.current.value = ''; 57 | } 58 | } else { 59 | alert('上传失败,请重试'); 60 | } 61 | } catch (error) { 62 | console.error('Upload error:', error); 63 | alert('上传失败,请重试'); 64 | } finally { 65 | setPending(false); 66 | } 67 | }; 68 | 69 | return ( 70 |
71 |

72 | 图片上传到 Telegram 73 |

74 | 75 |
76 |
77 |
78 | 106 | 107 | {selectedFile && ( 108 |
109 | 115 | 120 | 121 | {selectedFile.name} 122 |
123 | )} 124 | 125 | {previewUrl && ( 126 |
127 |

图片预览:

128 |
129 | Preview 134 |
135 |
136 | )} 137 |
138 | 139 |
140 | 147 |
148 |
149 |
150 | 151 | {/* 展示 phonos */} 152 | {phonos.length > 0 && ( 153 |
154 |

已上传的图片

155 |
156 | {phonos.map((photo) => ( 157 |
161 |
162 |
163 | Uploaded 168 |
169 |
170 |
171 |
172 | ID: 173 | 174 | {photo.file_unique_id} 175 | 176 |
177 |
178 | 尺寸: 179 | 180 | {photo.width} × {photo.height} 181 | 182 |
183 |
184 | 大小: 185 | 186 | {(photo.file_size / 1024).toFixed(1)} KB 187 | 188 |
189 |
190 |
191 |
192 | 214 |
215 |
216 |
217 | ))} 218 |
219 |
220 | )} 221 | 222 |
223 | 图片将直接发送到配置的 Telegram 频道 224 |
225 |
226 | ); 227 | } 228 | 229 | export default App; 230 | -------------------------------------------------------------------------------- /src/react-app/index.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss"; 2 | -------------------------------------------------------------------------------- /src/react-app/main.tsx: -------------------------------------------------------------------------------- 1 | import { StrictMode } from "react"; 2 | import { createRoot } from "react-dom/client"; 3 | import "./index.css"; 4 | import App from "./App.tsx"; 5 | 6 | createRoot(document.getElementById("root")!).render( 7 | 8 | 9 | , 10 | ); 11 | -------------------------------------------------------------------------------- /src/react-app/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /src/worker/index.ts: -------------------------------------------------------------------------------- 1 | import { Hono } from 'hono'; 2 | 3 | type Bindings = { 4 | TG_BOT_TOKEN: string; 5 | TG_CHAT_ID: string; 6 | }; 7 | 8 | const app = new Hono<{ Bindings: Bindings }>(); 9 | 10 | app.get('/api/get_photo/:file_id', async (c) => { 11 | const { TG_BOT_TOKEN } = c.env; 12 | const file_id = c.req.param('file_id'); 13 | 14 | const getFileResponse = await fetch( 15 | `https://api.telegram.org/bot${TG_BOT_TOKEN}/getFile?file_id=${file_id}` 16 | ); 17 | const getFileRes: { 18 | ok: boolean; 19 | result: { file_path: string }; 20 | } = await getFileResponse.json(); 21 | 22 | if (getFileRes.ok) { 23 | const file_path = getFileRes.result.file_path; 24 | const imageResponse = await fetch( 25 | `https://api.telegram.org/file/bot${TG_BOT_TOKEN}/${file_path}` 26 | ); 27 | const imageRes = await imageResponse.arrayBuffer(); 28 | 29 | return new Response(imageRes, { 30 | status: 200, 31 | headers: { 32 | 'Content-Type': 'image/png', 33 | }, 34 | }); 35 | } else { 36 | return c.json({ 37 | status: 'error', 38 | message: '获取文件失败', 39 | }); 40 | } 41 | }); 42 | 43 | app.get('/api/getPhoto', (c) => c.json({ name: 'Cloudflare' })); 44 | 45 | // 上传图片处理 46 | app.post('/api/upload', async (c) => { 47 | const { TG_BOT_TOKEN, TG_CHAT_ID } = c.env; 48 | 49 | const formData = await c.req.formData(); 50 | formData.append('chat_id', TG_CHAT_ID); 51 | 52 | try { 53 | const response = await fetch( 54 | `https://api.telegram.org/bot${TG_BOT_TOKEN}/sendPhoto`, 55 | { 56 | method: 'POST', 57 | body: formData, 58 | } 59 | ); 60 | 61 | const res: { 62 | ok: boolean; 63 | result: { photo: { file_id: string }[] }; 64 | description: string; 65 | } = await response.json(); 66 | 67 | if (res.ok) { 68 | const photo = res.result.photo; 69 | return c.json({ 70 | status: 'success', 71 | phonos: photo, 72 | }); 73 | } else { 74 | return c.json({ 75 | status: 'error', 76 | message: res.description || '上传失败', 77 | }); 78 | } 79 | } catch (error: unknown) { 80 | console.error(error); 81 | } 82 | }); 83 | 84 | export default app; 85 | -------------------------------------------------------------------------------- /tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", 4 | "target": "ES2020", 5 | "useDefineForClassFields": true, 6 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 7 | "module": "ESNext", 8 | "skipLibCheck": true, 9 | 10 | /* Bundler mode */ 11 | "moduleResolution": "bundler", 12 | "allowImportingTsExtensions": true, 13 | "isolatedModules": true, 14 | "moduleDetection": "force", 15 | "noEmit": true, 16 | "jsx": "react-jsx", 17 | 18 | /* Linting */ 19 | "strict": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "noFallthroughCasesInSwitch": true, 23 | "noUncheckedSideEffectImports": true 24 | }, 25 | "include": ["src/react-app"] 26 | } 27 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" }, 6 | { "path": "./tsconfig.worker.json" } 7 | ], 8 | "compilerOptions": { 9 | "types": [ 10 | "./worker-configuration.d.ts", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", 4 | "target": "ES2022", 5 | "lib": ["ES2023"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "isolatedModules": true, 13 | "moduleDetection": "force", 14 | "noEmit": true, 15 | 16 | /* Linting */ 17 | "strict": true, 18 | "noUnusedLocals": true, 19 | "noUnusedParameters": true, 20 | "noFallthroughCasesInSwitch": true, 21 | "noUncheckedSideEffectImports": true 22 | }, 23 | "include": ["vite.config.ts"] 24 | } 25 | -------------------------------------------------------------------------------- /tsconfig.worker.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.node.json", 3 | "compilerOptions": { 4 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.worker.tsbuildinfo", 5 | "types": ["vite/client", "./worker-configuration.d.ts"] 6 | }, 7 | "include": ["src/worker"] 8 | } 9 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import react from '@vitejs/plugin-react'; 3 | import { cloudflare } from '@cloudflare/vite-plugin'; 4 | import tailwindcss from '@tailwindcss/vite'; 5 | 6 | export default defineConfig({ 7 | plugins: [react(), cloudflare(), tailwindcss()], 8 | }); 9 | -------------------------------------------------------------------------------- /wrangler.json: -------------------------------------------------------------------------------- 1 | /** 2 | * For more details on how to configure Wrangler, refer to: 3 | * https://developers.cloudflare.com/workers/wrangler/configuration/ 4 | */ 5 | { 6 | "$schema": "node_modules/wrangler/config-schema.json", 7 | "name": "cf-workers-telegram-image", 8 | "main": "./src/worker/index.ts", 9 | "compatibility_date": "2025-04-01", 10 | "compatibility_flags": [ 11 | "nodejs_compat" 12 | ], 13 | "observability": { 14 | "enabled": true 15 | }, 16 | "upload_source_maps": true, 17 | "assets": { 18 | "not_found_handling": "single-page-application" 19 | } 20 | /** 21 | * Smart Placement 22 | * Docs: https://developers.cloudflare.com/workers/configuration/smart-placement/#smart-placement 23 | */ 24 | // "placement": { "mode": "smart" }, 25 | 26 | /** 27 | * Bindings 28 | * Bindings allow your Worker to interact with resources on the Cloudflare Developer Platform, including 29 | * databases, object storage, AI inference, real-time communication and more. 30 | * https://developers.cloudflare.com/workers/runtime-apis/bindings/ 31 | */ 32 | 33 | /** 34 | * Environment Variables 35 | * https://developers.cloudflare.com/workers/wrangler/configuration/#environment-variables 36 | */ 37 | // "vars": { 38 | // "TG_BOT_TOKEN": "", 39 | // "TG_CHAT_ID": "" 40 | // } 41 | /** 42 | * Note: Use secrets to store sensitive data. 43 | * https://developers.cloudflare.com/workers/configuration/secrets/ 44 | */ 45 | 46 | /** 47 | * Static Assets 48 | * https://developers.cloudflare.com/workers/static-assets/binding/ 49 | */ 50 | // "assets": { "directory": "./public/", "binding": "ASSETS" }, 51 | 52 | /** 53 | * Service Bindings (communicate between multiple Workers) 54 | * https://developers.cloudflare.com/workers/wrangler/configuration/#service-bindings 55 | */ 56 | // "services": [{ "binding": "MY_SERVICE", "service": "my-service" }] 57 | } 58 | --------------------------------------------------------------------------------