Write on the margins of the internet. Powered by the AT Protocol. margin.at
extension web atproto comments

Optimizations and implement avatar service adapted from Tangled

+4653 -80
+12
avatar/README.md
···
··· 1 + # avatar 2 + 3 + Adopted from [Tangled's avatar service](https://tangled.org/tangled.org/core/tree/master/avatar). 4 + 5 + This is a small service that fetches your pretty Bluesky avatar and caches it on Cloudflare. It uses a shared secret `AVATAR_SHARED_SECRET` to ensure requests only originate from the trusted appview. 6 + 7 + It's deployed using `wrangler` like so: 8 + 9 + ```bash 10 + npx wrangler deploy 11 + npx wrangler secrets put AVATAR_SHARED_SECRET 12 + ```
+4448
avatar/package-lock.json
···
··· 1 + { 2 + "name": "avatar", 3 + "version": "0.0.0", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "avatar", 9 + "version": "0.0.0", 10 + "devDependencies": { 11 + "@cloudflare/vitest-pool-workers": "^0.8.19", 12 + "vitest": "~3.0.7", 13 + "wrangler": "^4.14.1" 14 + } 15 + }, 16 + "node_modules/@cloudflare/kv-asset-handler": { 17 + "version": "0.4.2", 18 + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.4.2.tgz", 19 + "integrity": "sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==", 20 + "dev": true, 21 + "license": "MIT OR Apache-2.0", 22 + "engines": { 23 + "node": ">=18.0.0" 24 + } 25 + }, 26 + "node_modules/@cloudflare/vitest-pool-workers": { 27 + "version": "0.8.71", 28 + "resolved": "https://registry.npmjs.org/@cloudflare/vitest-pool-workers/-/vitest-pool-workers-0.8.71.tgz", 29 + "integrity": "sha512-keu2HCLQfRNwbmLBCDXJgCFpANTaYnQpE01fBOo4CNwiWHUT7SZGN7w64RKiSWRHyYppStXBuE5Ng7F42+flpg==", 30 + "dev": true, 31 + "license": "MIT", 32 + "dependencies": { 33 + "birpc": "0.2.14", 34 + "cjs-module-lexer": "^1.2.3", 35 + "devalue": "^5.3.2", 36 + "miniflare": "4.20250906.0", 37 + "semver": "^7.7.1", 38 + "wrangler": "4.35.0", 39 + "zod": "^3.22.3" 40 + }, 41 + "peerDependencies": { 42 + "@vitest/runner": "2.0.x - 3.2.x", 43 + "@vitest/snapshot": "2.0.x - 3.2.x", 44 + "vitest": "2.0.x - 3.2.x" 45 + } 46 + }, 47 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@cloudflare/kv-asset-handler": { 48 + "version": "0.4.0", 49 + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.4.0.tgz", 50 + "integrity": "sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==", 51 + "dev": true, 52 + "license": "MIT OR Apache-2.0", 53 + "dependencies": { 54 + "mime": "^3.0.0" 55 + }, 56 + "engines": { 57 + "node": ">=18.0.0" 58 + } 59 + }, 60 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@cloudflare/unenv-preset": { 61 + "version": "2.7.3", 62 + "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.7.3.tgz", 63 + "integrity": "sha512-tsQQagBKjvpd9baa6nWVIv399ejiqcrUBBW6SZx6Z22+ymm+Odv5+cFimyuCsD/fC1fQTwfRmwXBNpzvHSeGCw==", 64 + "dev": true, 65 + "license": "MIT OR Apache-2.0", 66 + "peerDependencies": { 67 + "unenv": "2.0.0-rc.21", 68 + "workerd": "^1.20250828.1" 69 + }, 70 + "peerDependenciesMeta": { 71 + "workerd": { 72 + "optional": true 73 + } 74 + } 75 + }, 76 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/aix-ppc64": { 77 + "version": "0.25.4", 78 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", 79 + "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", 80 + "cpu": [ 81 + "ppc64" 82 + ], 83 + "dev": true, 84 + "license": "MIT", 85 + "optional": true, 86 + "os": [ 87 + "aix" 88 + ], 89 + "engines": { 90 + "node": ">=18" 91 + } 92 + }, 93 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/android-arm": { 94 + "version": "0.25.4", 95 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", 96 + "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", 97 + "cpu": [ 98 + "arm" 99 + ], 100 + "dev": true, 101 + "license": "MIT", 102 + "optional": true, 103 + "os": [ 104 + "android" 105 + ], 106 + "engines": { 107 + "node": ">=18" 108 + } 109 + }, 110 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/android-arm64": { 111 + "version": "0.25.4", 112 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", 113 + "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", 114 + "cpu": [ 115 + "arm64" 116 + ], 117 + "dev": true, 118 + "license": "MIT", 119 + "optional": true, 120 + "os": [ 121 + "android" 122 + ], 123 + "engines": { 124 + "node": ">=18" 125 + } 126 + }, 127 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/android-x64": { 128 + "version": "0.25.4", 129 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", 130 + "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", 131 + "cpu": [ 132 + "x64" 133 + ], 134 + "dev": true, 135 + "license": "MIT", 136 + "optional": true, 137 + "os": [ 138 + "android" 139 + ], 140 + "engines": { 141 + "node": ">=18" 142 + } 143 + }, 144 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/darwin-arm64": { 145 + "version": "0.25.4", 146 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", 147 + "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", 148 + "cpu": [ 149 + "arm64" 150 + ], 151 + "dev": true, 152 + "license": "MIT", 153 + "optional": true, 154 + "os": [ 155 + "darwin" 156 + ], 157 + "engines": { 158 + "node": ">=18" 159 + } 160 + }, 161 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/darwin-x64": { 162 + "version": "0.25.4", 163 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", 164 + "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", 165 + "cpu": [ 166 + "x64" 167 + ], 168 + "dev": true, 169 + "license": "MIT", 170 + "optional": true, 171 + "os": [ 172 + "darwin" 173 + ], 174 + "engines": { 175 + "node": ">=18" 176 + } 177 + }, 178 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/freebsd-arm64": { 179 + "version": "0.25.4", 180 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", 181 + "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", 182 + "cpu": [ 183 + "arm64" 184 + ], 185 + "dev": true, 186 + "license": "MIT", 187 + "optional": true, 188 + "os": [ 189 + "freebsd" 190 + ], 191 + "engines": { 192 + "node": ">=18" 193 + } 194 + }, 195 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/freebsd-x64": { 196 + "version": "0.25.4", 197 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", 198 + "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", 199 + "cpu": [ 200 + "x64" 201 + ], 202 + "dev": true, 203 + "license": "MIT", 204 + "optional": true, 205 + "os": [ 206 + "freebsd" 207 + ], 208 + "engines": { 209 + "node": ">=18" 210 + } 211 + }, 212 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/linux-arm": { 213 + "version": "0.25.4", 214 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", 215 + "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", 216 + "cpu": [ 217 + "arm" 218 + ], 219 + "dev": true, 220 + "license": "MIT", 221 + "optional": true, 222 + "os": [ 223 + "linux" 224 + ], 225 + "engines": { 226 + "node": ">=18" 227 + } 228 + }, 229 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/linux-arm64": { 230 + "version": "0.25.4", 231 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", 232 + "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", 233 + "cpu": [ 234 + "arm64" 235 + ], 236 + "dev": true, 237 + "license": "MIT", 238 + "optional": true, 239 + "os": [ 240 + "linux" 241 + ], 242 + "engines": { 243 + "node": ">=18" 244 + } 245 + }, 246 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/linux-ia32": { 247 + "version": "0.25.4", 248 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", 249 + "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", 250 + "cpu": [ 251 + "ia32" 252 + ], 253 + "dev": true, 254 + "license": "MIT", 255 + "optional": true, 256 + "os": [ 257 + "linux" 258 + ], 259 + "engines": { 260 + "node": ">=18" 261 + } 262 + }, 263 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/linux-loong64": { 264 + "version": "0.25.4", 265 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", 266 + "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", 267 + "cpu": [ 268 + "loong64" 269 + ], 270 + "dev": true, 271 + "license": "MIT", 272 + "optional": true, 273 + "os": [ 274 + "linux" 275 + ], 276 + "engines": { 277 + "node": ">=18" 278 + } 279 + }, 280 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/linux-mips64el": { 281 + "version": "0.25.4", 282 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", 283 + "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", 284 + "cpu": [ 285 + "mips64el" 286 + ], 287 + "dev": true, 288 + "license": "MIT", 289 + "optional": true, 290 + "os": [ 291 + "linux" 292 + ], 293 + "engines": { 294 + "node": ">=18" 295 + } 296 + }, 297 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/linux-ppc64": { 298 + "version": "0.25.4", 299 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", 300 + "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", 301 + "cpu": [ 302 + "ppc64" 303 + ], 304 + "dev": true, 305 + "license": "MIT", 306 + "optional": true, 307 + "os": [ 308 + "linux" 309 + ], 310 + "engines": { 311 + "node": ">=18" 312 + } 313 + }, 314 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/linux-riscv64": { 315 + "version": "0.25.4", 316 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", 317 + "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", 318 + "cpu": [ 319 + "riscv64" 320 + ], 321 + "dev": true, 322 + "license": "MIT", 323 + "optional": true, 324 + "os": [ 325 + "linux" 326 + ], 327 + "engines": { 328 + "node": ">=18" 329 + } 330 + }, 331 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/linux-s390x": { 332 + "version": "0.25.4", 333 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", 334 + "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", 335 + "cpu": [ 336 + "s390x" 337 + ], 338 + "dev": true, 339 + "license": "MIT", 340 + "optional": true, 341 + "os": [ 342 + "linux" 343 + ], 344 + "engines": { 345 + "node": ">=18" 346 + } 347 + }, 348 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/linux-x64": { 349 + "version": "0.25.4", 350 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", 351 + "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", 352 + "cpu": [ 353 + "x64" 354 + ], 355 + "dev": true, 356 + "license": "MIT", 357 + "optional": true, 358 + "os": [ 359 + "linux" 360 + ], 361 + "engines": { 362 + "node": ">=18" 363 + } 364 + }, 365 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/netbsd-arm64": { 366 + "version": "0.25.4", 367 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", 368 + "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", 369 + "cpu": [ 370 + "arm64" 371 + ], 372 + "dev": true, 373 + "license": "MIT", 374 + "optional": true, 375 + "os": [ 376 + "netbsd" 377 + ], 378 + "engines": { 379 + "node": ">=18" 380 + } 381 + }, 382 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/netbsd-x64": { 383 + "version": "0.25.4", 384 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", 385 + "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", 386 + "cpu": [ 387 + "x64" 388 + ], 389 + "dev": true, 390 + "license": "MIT", 391 + "optional": true, 392 + "os": [ 393 + "netbsd" 394 + ], 395 + "engines": { 396 + "node": ">=18" 397 + } 398 + }, 399 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/openbsd-arm64": { 400 + "version": "0.25.4", 401 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", 402 + "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", 403 + "cpu": [ 404 + "arm64" 405 + ], 406 + "dev": true, 407 + "license": "MIT", 408 + "optional": true, 409 + "os": [ 410 + "openbsd" 411 + ], 412 + "engines": { 413 + "node": ">=18" 414 + } 415 + }, 416 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/openbsd-x64": { 417 + "version": "0.25.4", 418 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", 419 + "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", 420 + "cpu": [ 421 + "x64" 422 + ], 423 + "dev": true, 424 + "license": "MIT", 425 + "optional": true, 426 + "os": [ 427 + "openbsd" 428 + ], 429 + "engines": { 430 + "node": ">=18" 431 + } 432 + }, 433 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/sunos-x64": { 434 + "version": "0.25.4", 435 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", 436 + "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", 437 + "cpu": [ 438 + "x64" 439 + ], 440 + "dev": true, 441 + "license": "MIT", 442 + "optional": true, 443 + "os": [ 444 + "sunos" 445 + ], 446 + "engines": { 447 + "node": ">=18" 448 + } 449 + }, 450 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/win32-arm64": { 451 + "version": "0.25.4", 452 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", 453 + "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", 454 + "cpu": [ 455 + "arm64" 456 + ], 457 + "dev": true, 458 + "license": "MIT", 459 + "optional": true, 460 + "os": [ 461 + "win32" 462 + ], 463 + "engines": { 464 + "node": ">=18" 465 + } 466 + }, 467 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/win32-ia32": { 468 + "version": "0.25.4", 469 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", 470 + "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", 471 + "cpu": [ 472 + "ia32" 473 + ], 474 + "dev": true, 475 + "license": "MIT", 476 + "optional": true, 477 + "os": [ 478 + "win32" 479 + ], 480 + "engines": { 481 + "node": ">=18" 482 + } 483 + }, 484 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@esbuild/win32-x64": { 485 + "version": "0.25.4", 486 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", 487 + "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", 488 + "cpu": [ 489 + "x64" 490 + ], 491 + "dev": true, 492 + "license": "MIT", 493 + "optional": true, 494 + "os": [ 495 + "win32" 496 + ], 497 + "engines": { 498 + "node": ">=18" 499 + } 500 + }, 501 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/esbuild": { 502 + "version": "0.25.4", 503 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", 504 + "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", 505 + "dev": true, 506 + "hasInstallScript": true, 507 + "license": "MIT", 508 + "bin": { 509 + "esbuild": "bin/esbuild" 510 + }, 511 + "engines": { 512 + "node": ">=18" 513 + }, 514 + "optionalDependencies": { 515 + "@esbuild/aix-ppc64": "0.25.4", 516 + "@esbuild/android-arm": "0.25.4", 517 + "@esbuild/android-arm64": "0.25.4", 518 + "@esbuild/android-x64": "0.25.4", 519 + "@esbuild/darwin-arm64": "0.25.4", 520 + "@esbuild/darwin-x64": "0.25.4", 521 + "@esbuild/freebsd-arm64": "0.25.4", 522 + "@esbuild/freebsd-x64": "0.25.4", 523 + "@esbuild/linux-arm": "0.25.4", 524 + "@esbuild/linux-arm64": "0.25.4", 525 + "@esbuild/linux-ia32": "0.25.4", 526 + "@esbuild/linux-loong64": "0.25.4", 527 + "@esbuild/linux-mips64el": "0.25.4", 528 + "@esbuild/linux-ppc64": "0.25.4", 529 + "@esbuild/linux-riscv64": "0.25.4", 530 + "@esbuild/linux-s390x": "0.25.4", 531 + "@esbuild/linux-x64": "0.25.4", 532 + "@esbuild/netbsd-arm64": "0.25.4", 533 + "@esbuild/netbsd-x64": "0.25.4", 534 + "@esbuild/openbsd-arm64": "0.25.4", 535 + "@esbuild/openbsd-x64": "0.25.4", 536 + "@esbuild/sunos-x64": "0.25.4", 537 + "@esbuild/win32-arm64": "0.25.4", 538 + "@esbuild/win32-ia32": "0.25.4", 539 + "@esbuild/win32-x64": "0.25.4" 540 + } 541 + }, 542 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/unenv": { 543 + "version": "2.0.0-rc.21", 544 + "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.21.tgz", 545 + "integrity": "sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==", 546 + "dev": true, 547 + "license": "MIT", 548 + "peer": true, 549 + "dependencies": { 550 + "defu": "^6.1.4", 551 + "exsolve": "^1.0.7", 552 + "ohash": "^2.0.11", 553 + "pathe": "^2.0.3", 554 + "ufo": "^1.6.1" 555 + } 556 + }, 557 + "node_modules/@cloudflare/vitest-pool-workers/node_modules/wrangler": { 558 + "version": "4.35.0", 559 + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.35.0.tgz", 560 + "integrity": "sha512-HbyXtbrh4Fi3mU8ussY85tVdQ74qpVS1vctUgaPc+bPrXBTqfDLkZ6VRtHAVF/eBhz4SFmhJtCQpN1caY2Ak8A==", 561 + "dev": true, 562 + "license": "MIT OR Apache-2.0", 563 + "dependencies": { 564 + "@cloudflare/kv-asset-handler": "0.4.0", 565 + "@cloudflare/unenv-preset": "2.7.3", 566 + "blake3-wasm": "2.1.5", 567 + "esbuild": "0.25.4", 568 + "miniflare": "4.20250906.0", 569 + "path-to-regexp": "6.3.0", 570 + "unenv": "2.0.0-rc.21", 571 + "workerd": "1.20250906.0" 572 + }, 573 + "bin": { 574 + "wrangler": "bin/wrangler.js", 575 + "wrangler2": "bin/wrangler.js" 576 + }, 577 + "engines": { 578 + "node": ">=18.0.0" 579 + }, 580 + "optionalDependencies": { 581 + "fsevents": "~2.3.2" 582 + }, 583 + "peerDependencies": { 584 + "@cloudflare/workers-types": "^4.20250906.0" 585 + }, 586 + "peerDependenciesMeta": { 587 + "@cloudflare/workers-types": { 588 + "optional": true 589 + } 590 + } 591 + }, 592 + "node_modules/@cloudflare/workerd-darwin-64": { 593 + "version": "1.20250906.0", 594 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250906.0.tgz", 595 + "integrity": "sha512-E+X/YYH9BmX0ew2j/mAWFif2z05NMNuhCTlNYEGLkqMe99K15UewBqajL9pMcMUKxylnlrEoK3VNxl33DkbnPA==", 596 + "cpu": [ 597 + "x64" 598 + ], 599 + "dev": true, 600 + "license": "Apache-2.0", 601 + "optional": true, 602 + "os": [ 603 + "darwin" 604 + ], 605 + "engines": { 606 + "node": ">=16" 607 + } 608 + }, 609 + "node_modules/@cloudflare/workerd-darwin-arm64": { 610 + "version": "1.20250906.0", 611 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250906.0.tgz", 612 + "integrity": "sha512-X5apsZ1SFW4FYTM19ISHf8005FJMPfrcf4U5rO0tdj+TeJgQgXuZ57IG0WeW7SpLVeBo8hM6WC8CovZh41AfnA==", 613 + "cpu": [ 614 + "arm64" 615 + ], 616 + "dev": true, 617 + "license": "Apache-2.0", 618 + "optional": true, 619 + "os": [ 620 + "darwin" 621 + ], 622 + "engines": { 623 + "node": ">=16" 624 + } 625 + }, 626 + "node_modules/@cloudflare/workerd-linux-64": { 627 + "version": "1.20250906.0", 628 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250906.0.tgz", 629 + "integrity": "sha512-rlKzWgsLnlQ5Nt9W69YBJKcmTmZbOGu0edUsenXPmc6wzULUxoQpi7ZE9k3TfTonJx4WoQsQlzCUamRYFsX+0Q==", 630 + "cpu": [ 631 + "x64" 632 + ], 633 + "dev": true, 634 + "license": "Apache-2.0", 635 + "optional": true, 636 + "os": [ 637 + "linux" 638 + ], 639 + "engines": { 640 + "node": ">=16" 641 + } 642 + }, 643 + "node_modules/@cloudflare/workerd-linux-arm64": { 644 + "version": "1.20250906.0", 645 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250906.0.tgz", 646 + "integrity": "sha512-DdedhiQ+SeLzpg7BpcLrIPEZ33QKioJQ1wvL4X7nuLzEB9rWzS37NNNahQzc1+44rhG4fyiHbXBPOeox4B9XVA==", 647 + "cpu": [ 648 + "arm64" 649 + ], 650 + "dev": true, 651 + "license": "Apache-2.0", 652 + "optional": true, 653 + "os": [ 654 + "linux" 655 + ], 656 + "engines": { 657 + "node": ">=16" 658 + } 659 + }, 660 + "node_modules/@cloudflare/workerd-windows-64": { 661 + "version": "1.20250906.0", 662 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250906.0.tgz", 663 + "integrity": "sha512-Q8Qjfs8jGVILnZL6vUpQ90q/8MTCYaGR3d1LGxZMBqte8Vr7xF3KFHPEy7tFs0j0mMjnqCYzlofmPNY+9ZaDRg==", 664 + "cpu": [ 665 + "x64" 666 + ], 667 + "dev": true, 668 + "license": "Apache-2.0", 669 + "optional": true, 670 + "os": [ 671 + "win32" 672 + ], 673 + "engines": { 674 + "node": ">=16" 675 + } 676 + }, 677 + "node_modules/@cspotcode/source-map-support": { 678 + "version": "0.8.1", 679 + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 680 + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 681 + "dev": true, 682 + "license": "MIT", 683 + "dependencies": { 684 + "@jridgewell/trace-mapping": "0.3.9" 685 + }, 686 + "engines": { 687 + "node": ">=12" 688 + } 689 + }, 690 + "node_modules/@emnapi/runtime": { 691 + "version": "1.8.1", 692 + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", 693 + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", 694 + "dev": true, 695 + "license": "MIT", 696 + "optional": true, 697 + "dependencies": { 698 + "tslib": "^2.4.0" 699 + } 700 + }, 701 + "node_modules/@esbuild/aix-ppc64": { 702 + "version": "0.25.12", 703 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", 704 + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", 705 + "cpu": [ 706 + "ppc64" 707 + ], 708 + "dev": true, 709 + "license": "MIT", 710 + "optional": true, 711 + "os": [ 712 + "aix" 713 + ], 714 + "engines": { 715 + "node": ">=18" 716 + } 717 + }, 718 + "node_modules/@esbuild/android-arm": { 719 + "version": "0.25.12", 720 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", 721 + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", 722 + "cpu": [ 723 + "arm" 724 + ], 725 + "dev": true, 726 + "license": "MIT", 727 + "optional": true, 728 + "os": [ 729 + "android" 730 + ], 731 + "engines": { 732 + "node": ">=18" 733 + } 734 + }, 735 + "node_modules/@esbuild/android-arm64": { 736 + "version": "0.25.12", 737 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", 738 + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", 739 + "cpu": [ 740 + "arm64" 741 + ], 742 + "dev": true, 743 + "license": "MIT", 744 + "optional": true, 745 + "os": [ 746 + "android" 747 + ], 748 + "engines": { 749 + "node": ">=18" 750 + } 751 + }, 752 + "node_modules/@esbuild/android-x64": { 753 + "version": "0.25.12", 754 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", 755 + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", 756 + "cpu": [ 757 + "x64" 758 + ], 759 + "dev": true, 760 + "license": "MIT", 761 + "optional": true, 762 + "os": [ 763 + "android" 764 + ], 765 + "engines": { 766 + "node": ">=18" 767 + } 768 + }, 769 + "node_modules/@esbuild/darwin-arm64": { 770 + "version": "0.25.12", 771 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", 772 + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", 773 + "cpu": [ 774 + "arm64" 775 + ], 776 + "dev": true, 777 + "license": "MIT", 778 + "optional": true, 779 + "os": [ 780 + "darwin" 781 + ], 782 + "engines": { 783 + "node": ">=18" 784 + } 785 + }, 786 + "node_modules/@esbuild/darwin-x64": { 787 + "version": "0.25.12", 788 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", 789 + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", 790 + "cpu": [ 791 + "x64" 792 + ], 793 + "dev": true, 794 + "license": "MIT", 795 + "optional": true, 796 + "os": [ 797 + "darwin" 798 + ], 799 + "engines": { 800 + "node": ">=18" 801 + } 802 + }, 803 + "node_modules/@esbuild/freebsd-arm64": { 804 + "version": "0.25.12", 805 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", 806 + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", 807 + "cpu": [ 808 + "arm64" 809 + ], 810 + "dev": true, 811 + "license": "MIT", 812 + "optional": true, 813 + "os": [ 814 + "freebsd" 815 + ], 816 + "engines": { 817 + "node": ">=18" 818 + } 819 + }, 820 + "node_modules/@esbuild/freebsd-x64": { 821 + "version": "0.25.12", 822 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", 823 + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", 824 + "cpu": [ 825 + "x64" 826 + ], 827 + "dev": true, 828 + "license": "MIT", 829 + "optional": true, 830 + "os": [ 831 + "freebsd" 832 + ], 833 + "engines": { 834 + "node": ">=18" 835 + } 836 + }, 837 + "node_modules/@esbuild/linux-arm": { 838 + "version": "0.25.12", 839 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", 840 + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", 841 + "cpu": [ 842 + "arm" 843 + ], 844 + "dev": true, 845 + "license": "MIT", 846 + "optional": true, 847 + "os": [ 848 + "linux" 849 + ], 850 + "engines": { 851 + "node": ">=18" 852 + } 853 + }, 854 + "node_modules/@esbuild/linux-arm64": { 855 + "version": "0.25.12", 856 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", 857 + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", 858 + "cpu": [ 859 + "arm64" 860 + ], 861 + "dev": true, 862 + "license": "MIT", 863 + "optional": true, 864 + "os": [ 865 + "linux" 866 + ], 867 + "engines": { 868 + "node": ">=18" 869 + } 870 + }, 871 + "node_modules/@esbuild/linux-ia32": { 872 + "version": "0.25.12", 873 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", 874 + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", 875 + "cpu": [ 876 + "ia32" 877 + ], 878 + "dev": true, 879 + "license": "MIT", 880 + "optional": true, 881 + "os": [ 882 + "linux" 883 + ], 884 + "engines": { 885 + "node": ">=18" 886 + } 887 + }, 888 + "node_modules/@esbuild/linux-loong64": { 889 + "version": "0.25.12", 890 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", 891 + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", 892 + "cpu": [ 893 + "loong64" 894 + ], 895 + "dev": true, 896 + "license": "MIT", 897 + "optional": true, 898 + "os": [ 899 + "linux" 900 + ], 901 + "engines": { 902 + "node": ">=18" 903 + } 904 + }, 905 + "node_modules/@esbuild/linux-mips64el": { 906 + "version": "0.25.12", 907 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", 908 + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", 909 + "cpu": [ 910 + "mips64el" 911 + ], 912 + "dev": true, 913 + "license": "MIT", 914 + "optional": true, 915 + "os": [ 916 + "linux" 917 + ], 918 + "engines": { 919 + "node": ">=18" 920 + } 921 + }, 922 + "node_modules/@esbuild/linux-ppc64": { 923 + "version": "0.25.12", 924 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", 925 + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", 926 + "cpu": [ 927 + "ppc64" 928 + ], 929 + "dev": true, 930 + "license": "MIT", 931 + "optional": true, 932 + "os": [ 933 + "linux" 934 + ], 935 + "engines": { 936 + "node": ">=18" 937 + } 938 + }, 939 + "node_modules/@esbuild/linux-riscv64": { 940 + "version": "0.25.12", 941 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", 942 + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", 943 + "cpu": [ 944 + "riscv64" 945 + ], 946 + "dev": true, 947 + "license": "MIT", 948 + "optional": true, 949 + "os": [ 950 + "linux" 951 + ], 952 + "engines": { 953 + "node": ">=18" 954 + } 955 + }, 956 + "node_modules/@esbuild/linux-s390x": { 957 + "version": "0.25.12", 958 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", 959 + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", 960 + "cpu": [ 961 + "s390x" 962 + ], 963 + "dev": true, 964 + "license": "MIT", 965 + "optional": true, 966 + "os": [ 967 + "linux" 968 + ], 969 + "engines": { 970 + "node": ">=18" 971 + } 972 + }, 973 + "node_modules/@esbuild/linux-x64": { 974 + "version": "0.25.12", 975 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", 976 + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", 977 + "cpu": [ 978 + "x64" 979 + ], 980 + "dev": true, 981 + "license": "MIT", 982 + "optional": true, 983 + "os": [ 984 + "linux" 985 + ], 986 + "engines": { 987 + "node": ">=18" 988 + } 989 + }, 990 + "node_modules/@esbuild/netbsd-arm64": { 991 + "version": "0.25.12", 992 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", 993 + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", 994 + "cpu": [ 995 + "arm64" 996 + ], 997 + "dev": true, 998 + "license": "MIT", 999 + "optional": true, 1000 + "os": [ 1001 + "netbsd" 1002 + ], 1003 + "engines": { 1004 + "node": ">=18" 1005 + } 1006 + }, 1007 + "node_modules/@esbuild/netbsd-x64": { 1008 + "version": "0.25.12", 1009 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", 1010 + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", 1011 + "cpu": [ 1012 + "x64" 1013 + ], 1014 + "dev": true, 1015 + "license": "MIT", 1016 + "optional": true, 1017 + "os": [ 1018 + "netbsd" 1019 + ], 1020 + "engines": { 1021 + "node": ">=18" 1022 + } 1023 + }, 1024 + "node_modules/@esbuild/openbsd-arm64": { 1025 + "version": "0.25.12", 1026 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", 1027 + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", 1028 + "cpu": [ 1029 + "arm64" 1030 + ], 1031 + "dev": true, 1032 + "license": "MIT", 1033 + "optional": true, 1034 + "os": [ 1035 + "openbsd" 1036 + ], 1037 + "engines": { 1038 + "node": ">=18" 1039 + } 1040 + }, 1041 + "node_modules/@esbuild/openbsd-x64": { 1042 + "version": "0.25.12", 1043 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", 1044 + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", 1045 + "cpu": [ 1046 + "x64" 1047 + ], 1048 + "dev": true, 1049 + "license": "MIT", 1050 + "optional": true, 1051 + "os": [ 1052 + "openbsd" 1053 + ], 1054 + "engines": { 1055 + "node": ">=18" 1056 + } 1057 + }, 1058 + "node_modules/@esbuild/openharmony-arm64": { 1059 + "version": "0.25.12", 1060 + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", 1061 + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", 1062 + "cpu": [ 1063 + "arm64" 1064 + ], 1065 + "dev": true, 1066 + "license": "MIT", 1067 + "optional": true, 1068 + "os": [ 1069 + "openharmony" 1070 + ], 1071 + "engines": { 1072 + "node": ">=18" 1073 + } 1074 + }, 1075 + "node_modules/@esbuild/sunos-x64": { 1076 + "version": "0.25.12", 1077 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", 1078 + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", 1079 + "cpu": [ 1080 + "x64" 1081 + ], 1082 + "dev": true, 1083 + "license": "MIT", 1084 + "optional": true, 1085 + "os": [ 1086 + "sunos" 1087 + ], 1088 + "engines": { 1089 + "node": ">=18" 1090 + } 1091 + }, 1092 + "node_modules/@esbuild/win32-arm64": { 1093 + "version": "0.25.12", 1094 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", 1095 + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", 1096 + "cpu": [ 1097 + "arm64" 1098 + ], 1099 + "dev": true, 1100 + "license": "MIT", 1101 + "optional": true, 1102 + "os": [ 1103 + "win32" 1104 + ], 1105 + "engines": { 1106 + "node": ">=18" 1107 + } 1108 + }, 1109 + "node_modules/@esbuild/win32-ia32": { 1110 + "version": "0.25.12", 1111 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", 1112 + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", 1113 + "cpu": [ 1114 + "ia32" 1115 + ], 1116 + "dev": true, 1117 + "license": "MIT", 1118 + "optional": true, 1119 + "os": [ 1120 + "win32" 1121 + ], 1122 + "engines": { 1123 + "node": ">=18" 1124 + } 1125 + }, 1126 + "node_modules/@esbuild/win32-x64": { 1127 + "version": "0.25.12", 1128 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", 1129 + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", 1130 + "cpu": [ 1131 + "x64" 1132 + ], 1133 + "dev": true, 1134 + "license": "MIT", 1135 + "optional": true, 1136 + "os": [ 1137 + "win32" 1138 + ], 1139 + "engines": { 1140 + "node": ">=18" 1141 + } 1142 + }, 1143 + "node_modules/@img/colour": { 1144 + "version": "1.0.0", 1145 + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", 1146 + "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", 1147 + "dev": true, 1148 + "license": "MIT", 1149 + "engines": { 1150 + "node": ">=18" 1151 + } 1152 + }, 1153 + "node_modules/@img/sharp-darwin-arm64": { 1154 + "version": "0.33.5", 1155 + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", 1156 + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", 1157 + "cpu": [ 1158 + "arm64" 1159 + ], 1160 + "dev": true, 1161 + "license": "Apache-2.0", 1162 + "optional": true, 1163 + "os": [ 1164 + "darwin" 1165 + ], 1166 + "engines": { 1167 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 1168 + }, 1169 + "funding": { 1170 + "url": "https://opencollective.com/libvips" 1171 + }, 1172 + "optionalDependencies": { 1173 + "@img/sharp-libvips-darwin-arm64": "1.0.4" 1174 + } 1175 + }, 1176 + "node_modules/@img/sharp-darwin-x64": { 1177 + "version": "0.33.5", 1178 + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", 1179 + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", 1180 + "cpu": [ 1181 + "x64" 1182 + ], 1183 + "dev": true, 1184 + "license": "Apache-2.0", 1185 + "optional": true, 1186 + "os": [ 1187 + "darwin" 1188 + ], 1189 + "engines": { 1190 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 1191 + }, 1192 + "funding": { 1193 + "url": "https://opencollective.com/libvips" 1194 + }, 1195 + "optionalDependencies": { 1196 + "@img/sharp-libvips-darwin-x64": "1.0.4" 1197 + } 1198 + }, 1199 + "node_modules/@img/sharp-libvips-darwin-arm64": { 1200 + "version": "1.0.4", 1201 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", 1202 + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", 1203 + "cpu": [ 1204 + "arm64" 1205 + ], 1206 + "dev": true, 1207 + "license": "LGPL-3.0-or-later", 1208 + "optional": true, 1209 + "os": [ 1210 + "darwin" 1211 + ], 1212 + "funding": { 1213 + "url": "https://opencollective.com/libvips" 1214 + } 1215 + }, 1216 + "node_modules/@img/sharp-libvips-darwin-x64": { 1217 + "version": "1.0.4", 1218 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", 1219 + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", 1220 + "cpu": [ 1221 + "x64" 1222 + ], 1223 + "dev": true, 1224 + "license": "LGPL-3.0-or-later", 1225 + "optional": true, 1226 + "os": [ 1227 + "darwin" 1228 + ], 1229 + "funding": { 1230 + "url": "https://opencollective.com/libvips" 1231 + } 1232 + }, 1233 + "node_modules/@img/sharp-libvips-linux-arm": { 1234 + "version": "1.0.5", 1235 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", 1236 + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", 1237 + "cpu": [ 1238 + "arm" 1239 + ], 1240 + "dev": true, 1241 + "license": "LGPL-3.0-or-later", 1242 + "optional": true, 1243 + "os": [ 1244 + "linux" 1245 + ], 1246 + "funding": { 1247 + "url": "https://opencollective.com/libvips" 1248 + } 1249 + }, 1250 + "node_modules/@img/sharp-libvips-linux-arm64": { 1251 + "version": "1.0.4", 1252 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", 1253 + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", 1254 + "cpu": [ 1255 + "arm64" 1256 + ], 1257 + "dev": true, 1258 + "license": "LGPL-3.0-or-later", 1259 + "optional": true, 1260 + "os": [ 1261 + "linux" 1262 + ], 1263 + "funding": { 1264 + "url": "https://opencollective.com/libvips" 1265 + } 1266 + }, 1267 + "node_modules/@img/sharp-libvips-linux-ppc64": { 1268 + "version": "1.2.4", 1269 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", 1270 + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", 1271 + "cpu": [ 1272 + "ppc64" 1273 + ], 1274 + "dev": true, 1275 + "license": "LGPL-3.0-or-later", 1276 + "optional": true, 1277 + "os": [ 1278 + "linux" 1279 + ], 1280 + "funding": { 1281 + "url": "https://opencollective.com/libvips" 1282 + } 1283 + }, 1284 + "node_modules/@img/sharp-libvips-linux-riscv64": { 1285 + "version": "1.2.4", 1286 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", 1287 + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", 1288 + "cpu": [ 1289 + "riscv64" 1290 + ], 1291 + "dev": true, 1292 + "license": "LGPL-3.0-or-later", 1293 + "optional": true, 1294 + "os": [ 1295 + "linux" 1296 + ], 1297 + "funding": { 1298 + "url": "https://opencollective.com/libvips" 1299 + } 1300 + }, 1301 + "node_modules/@img/sharp-libvips-linux-s390x": { 1302 + "version": "1.0.4", 1303 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", 1304 + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", 1305 + "cpu": [ 1306 + "s390x" 1307 + ], 1308 + "dev": true, 1309 + "license": "LGPL-3.0-or-later", 1310 + "optional": true, 1311 + "os": [ 1312 + "linux" 1313 + ], 1314 + "funding": { 1315 + "url": "https://opencollective.com/libvips" 1316 + } 1317 + }, 1318 + "node_modules/@img/sharp-libvips-linux-x64": { 1319 + "version": "1.0.4", 1320 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", 1321 + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", 1322 + "cpu": [ 1323 + "x64" 1324 + ], 1325 + "dev": true, 1326 + "license": "LGPL-3.0-or-later", 1327 + "optional": true, 1328 + "os": [ 1329 + "linux" 1330 + ], 1331 + "funding": { 1332 + "url": "https://opencollective.com/libvips" 1333 + } 1334 + }, 1335 + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { 1336 + "version": "1.0.4", 1337 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", 1338 + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", 1339 + "cpu": [ 1340 + "arm64" 1341 + ], 1342 + "dev": true, 1343 + "license": "LGPL-3.0-or-later", 1344 + "optional": true, 1345 + "os": [ 1346 + "linux" 1347 + ], 1348 + "funding": { 1349 + "url": "https://opencollective.com/libvips" 1350 + } 1351 + }, 1352 + "node_modules/@img/sharp-libvips-linuxmusl-x64": { 1353 + "version": "1.0.4", 1354 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", 1355 + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", 1356 + "cpu": [ 1357 + "x64" 1358 + ], 1359 + "dev": true, 1360 + "license": "LGPL-3.0-or-later", 1361 + "optional": true, 1362 + "os": [ 1363 + "linux" 1364 + ], 1365 + "funding": { 1366 + "url": "https://opencollective.com/libvips" 1367 + } 1368 + }, 1369 + "node_modules/@img/sharp-linux-arm": { 1370 + "version": "0.33.5", 1371 + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", 1372 + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", 1373 + "cpu": [ 1374 + "arm" 1375 + ], 1376 + "dev": true, 1377 + "license": "Apache-2.0", 1378 + "optional": true, 1379 + "os": [ 1380 + "linux" 1381 + ], 1382 + "engines": { 1383 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 1384 + }, 1385 + "funding": { 1386 + "url": "https://opencollective.com/libvips" 1387 + }, 1388 + "optionalDependencies": { 1389 + "@img/sharp-libvips-linux-arm": "1.0.5" 1390 + } 1391 + }, 1392 + "node_modules/@img/sharp-linux-arm64": { 1393 + "version": "0.33.5", 1394 + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", 1395 + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", 1396 + "cpu": [ 1397 + "arm64" 1398 + ], 1399 + "dev": true, 1400 + "license": "Apache-2.0", 1401 + "optional": true, 1402 + "os": [ 1403 + "linux" 1404 + ], 1405 + "engines": { 1406 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 1407 + }, 1408 + "funding": { 1409 + "url": "https://opencollective.com/libvips" 1410 + }, 1411 + "optionalDependencies": { 1412 + "@img/sharp-libvips-linux-arm64": "1.0.4" 1413 + } 1414 + }, 1415 + "node_modules/@img/sharp-linux-ppc64": { 1416 + "version": "0.34.5", 1417 + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", 1418 + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", 1419 + "cpu": [ 1420 + "ppc64" 1421 + ], 1422 + "dev": true, 1423 + "license": "Apache-2.0", 1424 + "optional": true, 1425 + "os": [ 1426 + "linux" 1427 + ], 1428 + "engines": { 1429 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 1430 + }, 1431 + "funding": { 1432 + "url": "https://opencollective.com/libvips" 1433 + }, 1434 + "optionalDependencies": { 1435 + "@img/sharp-libvips-linux-ppc64": "1.2.4" 1436 + } 1437 + }, 1438 + "node_modules/@img/sharp-linux-riscv64": { 1439 + "version": "0.34.5", 1440 + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", 1441 + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", 1442 + "cpu": [ 1443 + "riscv64" 1444 + ], 1445 + "dev": true, 1446 + "license": "Apache-2.0", 1447 + "optional": true, 1448 + "os": [ 1449 + "linux" 1450 + ], 1451 + "engines": { 1452 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 1453 + }, 1454 + "funding": { 1455 + "url": "https://opencollective.com/libvips" 1456 + }, 1457 + "optionalDependencies": { 1458 + "@img/sharp-libvips-linux-riscv64": "1.2.4" 1459 + } 1460 + }, 1461 + "node_modules/@img/sharp-linux-s390x": { 1462 + "version": "0.33.5", 1463 + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", 1464 + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", 1465 + "cpu": [ 1466 + "s390x" 1467 + ], 1468 + "dev": true, 1469 + "license": "Apache-2.0", 1470 + "optional": true, 1471 + "os": [ 1472 + "linux" 1473 + ], 1474 + "engines": { 1475 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 1476 + }, 1477 + "funding": { 1478 + "url": "https://opencollective.com/libvips" 1479 + }, 1480 + "optionalDependencies": { 1481 + "@img/sharp-libvips-linux-s390x": "1.0.4" 1482 + } 1483 + }, 1484 + "node_modules/@img/sharp-linux-x64": { 1485 + "version": "0.33.5", 1486 + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", 1487 + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", 1488 + "cpu": [ 1489 + "x64" 1490 + ], 1491 + "dev": true, 1492 + "license": "Apache-2.0", 1493 + "optional": true, 1494 + "os": [ 1495 + "linux" 1496 + ], 1497 + "engines": { 1498 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 1499 + }, 1500 + "funding": { 1501 + "url": "https://opencollective.com/libvips" 1502 + }, 1503 + "optionalDependencies": { 1504 + "@img/sharp-libvips-linux-x64": "1.0.4" 1505 + } 1506 + }, 1507 + "node_modules/@img/sharp-linuxmusl-arm64": { 1508 + "version": "0.33.5", 1509 + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", 1510 + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", 1511 + "cpu": [ 1512 + "arm64" 1513 + ], 1514 + "dev": true, 1515 + "license": "Apache-2.0", 1516 + "optional": true, 1517 + "os": [ 1518 + "linux" 1519 + ], 1520 + "engines": { 1521 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 1522 + }, 1523 + "funding": { 1524 + "url": "https://opencollective.com/libvips" 1525 + }, 1526 + "optionalDependencies": { 1527 + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" 1528 + } 1529 + }, 1530 + "node_modules/@img/sharp-linuxmusl-x64": { 1531 + "version": "0.33.5", 1532 + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", 1533 + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", 1534 + "cpu": [ 1535 + "x64" 1536 + ], 1537 + "dev": true, 1538 + "license": "Apache-2.0", 1539 + "optional": true, 1540 + "os": [ 1541 + "linux" 1542 + ], 1543 + "engines": { 1544 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 1545 + }, 1546 + "funding": { 1547 + "url": "https://opencollective.com/libvips" 1548 + }, 1549 + "optionalDependencies": { 1550 + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" 1551 + } 1552 + }, 1553 + "node_modules/@img/sharp-wasm32": { 1554 + "version": "0.33.5", 1555 + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", 1556 + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", 1557 + "cpu": [ 1558 + "wasm32" 1559 + ], 1560 + "dev": true, 1561 + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", 1562 + "optional": true, 1563 + "dependencies": { 1564 + "@emnapi/runtime": "^1.2.0" 1565 + }, 1566 + "engines": { 1567 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 1568 + }, 1569 + "funding": { 1570 + "url": "https://opencollective.com/libvips" 1571 + } 1572 + }, 1573 + "node_modules/@img/sharp-win32-arm64": { 1574 + "version": "0.34.5", 1575 + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", 1576 + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", 1577 + "cpu": [ 1578 + "arm64" 1579 + ], 1580 + "dev": true, 1581 + "license": "Apache-2.0 AND LGPL-3.0-or-later", 1582 + "optional": true, 1583 + "os": [ 1584 + "win32" 1585 + ], 1586 + "engines": { 1587 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 1588 + }, 1589 + "funding": { 1590 + "url": "https://opencollective.com/libvips" 1591 + } 1592 + }, 1593 + "node_modules/@img/sharp-win32-ia32": { 1594 + "version": "0.33.5", 1595 + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", 1596 + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", 1597 + "cpu": [ 1598 + "ia32" 1599 + ], 1600 + "dev": true, 1601 + "license": "Apache-2.0 AND LGPL-3.0-or-later", 1602 + "optional": true, 1603 + "os": [ 1604 + "win32" 1605 + ], 1606 + "engines": { 1607 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 1608 + }, 1609 + "funding": { 1610 + "url": "https://opencollective.com/libvips" 1611 + } 1612 + }, 1613 + "node_modules/@img/sharp-win32-x64": { 1614 + "version": "0.33.5", 1615 + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", 1616 + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", 1617 + "cpu": [ 1618 + "x64" 1619 + ], 1620 + "dev": true, 1621 + "license": "Apache-2.0 AND LGPL-3.0-or-later", 1622 + "optional": true, 1623 + "os": [ 1624 + "win32" 1625 + ], 1626 + "engines": { 1627 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 1628 + }, 1629 + "funding": { 1630 + "url": "https://opencollective.com/libvips" 1631 + } 1632 + }, 1633 + "node_modules/@jridgewell/resolve-uri": { 1634 + "version": "3.1.2", 1635 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 1636 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 1637 + "dev": true, 1638 + "license": "MIT", 1639 + "engines": { 1640 + "node": ">=6.0.0" 1641 + } 1642 + }, 1643 + "node_modules/@jridgewell/sourcemap-codec": { 1644 + "version": "1.5.5", 1645 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", 1646 + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", 1647 + "dev": true, 1648 + "license": "MIT" 1649 + }, 1650 + "node_modules/@jridgewell/trace-mapping": { 1651 + "version": "0.3.9", 1652 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 1653 + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 1654 + "dev": true, 1655 + "license": "MIT", 1656 + "dependencies": { 1657 + "@jridgewell/resolve-uri": "^3.0.3", 1658 + "@jridgewell/sourcemap-codec": "^1.4.10" 1659 + } 1660 + }, 1661 + "node_modules/@poppinss/colors": { 1662 + "version": "4.1.6", 1663 + "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.6.tgz", 1664 + "integrity": "sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==", 1665 + "dev": true, 1666 + "license": "MIT", 1667 + "dependencies": { 1668 + "kleur": "^4.1.5" 1669 + } 1670 + }, 1671 + "node_modules/@poppinss/dumper": { 1672 + "version": "0.6.5", 1673 + "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.6.5.tgz", 1674 + "integrity": "sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==", 1675 + "dev": true, 1676 + "license": "MIT", 1677 + "dependencies": { 1678 + "@poppinss/colors": "^4.1.5", 1679 + "@sindresorhus/is": "^7.0.2", 1680 + "supports-color": "^10.0.0" 1681 + } 1682 + }, 1683 + "node_modules/@poppinss/exception": { 1684 + "version": "1.2.3", 1685 + "resolved": "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.3.tgz", 1686 + "integrity": "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==", 1687 + "dev": true, 1688 + "license": "MIT" 1689 + }, 1690 + "node_modules/@rollup/rollup-android-arm-eabi": { 1691 + "version": "4.56.0", 1692 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz", 1693 + "integrity": "sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==", 1694 + "cpu": [ 1695 + "arm" 1696 + ], 1697 + "dev": true, 1698 + "license": "MIT", 1699 + "optional": true, 1700 + "os": [ 1701 + "android" 1702 + ] 1703 + }, 1704 + "node_modules/@rollup/rollup-android-arm64": { 1705 + "version": "4.56.0", 1706 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz", 1707 + "integrity": "sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==", 1708 + "cpu": [ 1709 + "arm64" 1710 + ], 1711 + "dev": true, 1712 + "license": "MIT", 1713 + "optional": true, 1714 + "os": [ 1715 + "android" 1716 + ] 1717 + }, 1718 + "node_modules/@rollup/rollup-darwin-arm64": { 1719 + "version": "4.56.0", 1720 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz", 1721 + "integrity": "sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==", 1722 + "cpu": [ 1723 + "arm64" 1724 + ], 1725 + "dev": true, 1726 + "license": "MIT", 1727 + "optional": true, 1728 + "os": [ 1729 + "darwin" 1730 + ] 1731 + }, 1732 + "node_modules/@rollup/rollup-darwin-x64": { 1733 + "version": "4.56.0", 1734 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz", 1735 + "integrity": "sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==", 1736 + "cpu": [ 1737 + "x64" 1738 + ], 1739 + "dev": true, 1740 + "license": "MIT", 1741 + "optional": true, 1742 + "os": [ 1743 + "darwin" 1744 + ] 1745 + }, 1746 + "node_modules/@rollup/rollup-freebsd-arm64": { 1747 + "version": "4.56.0", 1748 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz", 1749 + "integrity": "sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==", 1750 + "cpu": [ 1751 + "arm64" 1752 + ], 1753 + "dev": true, 1754 + "license": "MIT", 1755 + "optional": true, 1756 + "os": [ 1757 + "freebsd" 1758 + ] 1759 + }, 1760 + "node_modules/@rollup/rollup-freebsd-x64": { 1761 + "version": "4.56.0", 1762 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz", 1763 + "integrity": "sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==", 1764 + "cpu": [ 1765 + "x64" 1766 + ], 1767 + "dev": true, 1768 + "license": "MIT", 1769 + "optional": true, 1770 + "os": [ 1771 + "freebsd" 1772 + ] 1773 + }, 1774 + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 1775 + "version": "4.56.0", 1776 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz", 1777 + "integrity": "sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==", 1778 + "cpu": [ 1779 + "arm" 1780 + ], 1781 + "dev": true, 1782 + "license": "MIT", 1783 + "optional": true, 1784 + "os": [ 1785 + "linux" 1786 + ] 1787 + }, 1788 + "node_modules/@rollup/rollup-linux-arm-musleabihf": { 1789 + "version": "4.56.0", 1790 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz", 1791 + "integrity": "sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==", 1792 + "cpu": [ 1793 + "arm" 1794 + ], 1795 + "dev": true, 1796 + "license": "MIT", 1797 + "optional": true, 1798 + "os": [ 1799 + "linux" 1800 + ] 1801 + }, 1802 + "node_modules/@rollup/rollup-linux-arm64-gnu": { 1803 + "version": "4.56.0", 1804 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz", 1805 + "integrity": "sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==", 1806 + "cpu": [ 1807 + "arm64" 1808 + ], 1809 + "dev": true, 1810 + "license": "MIT", 1811 + "optional": true, 1812 + "os": [ 1813 + "linux" 1814 + ] 1815 + }, 1816 + "node_modules/@rollup/rollup-linux-arm64-musl": { 1817 + "version": "4.56.0", 1818 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz", 1819 + "integrity": "sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==", 1820 + "cpu": [ 1821 + "arm64" 1822 + ], 1823 + "dev": true, 1824 + "license": "MIT", 1825 + "optional": true, 1826 + "os": [ 1827 + "linux" 1828 + ] 1829 + }, 1830 + "node_modules/@rollup/rollup-linux-loong64-gnu": { 1831 + "version": "4.56.0", 1832 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz", 1833 + "integrity": "sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==", 1834 + "cpu": [ 1835 + "loong64" 1836 + ], 1837 + "dev": true, 1838 + "license": "MIT", 1839 + "optional": true, 1840 + "os": [ 1841 + "linux" 1842 + ] 1843 + }, 1844 + "node_modules/@rollup/rollup-linux-loong64-musl": { 1845 + "version": "4.56.0", 1846 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz", 1847 + "integrity": "sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==", 1848 + "cpu": [ 1849 + "loong64" 1850 + ], 1851 + "dev": true, 1852 + "license": "MIT", 1853 + "optional": true, 1854 + "os": [ 1855 + "linux" 1856 + ] 1857 + }, 1858 + "node_modules/@rollup/rollup-linux-ppc64-gnu": { 1859 + "version": "4.56.0", 1860 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz", 1861 + "integrity": "sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==", 1862 + "cpu": [ 1863 + "ppc64" 1864 + ], 1865 + "dev": true, 1866 + "license": "MIT", 1867 + "optional": true, 1868 + "os": [ 1869 + "linux" 1870 + ] 1871 + }, 1872 + "node_modules/@rollup/rollup-linux-ppc64-musl": { 1873 + "version": "4.56.0", 1874 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz", 1875 + "integrity": "sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==", 1876 + "cpu": [ 1877 + "ppc64" 1878 + ], 1879 + "dev": true, 1880 + "license": "MIT", 1881 + "optional": true, 1882 + "os": [ 1883 + "linux" 1884 + ] 1885 + }, 1886 + "node_modules/@rollup/rollup-linux-riscv64-gnu": { 1887 + "version": "4.56.0", 1888 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz", 1889 + "integrity": "sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==", 1890 + "cpu": [ 1891 + "riscv64" 1892 + ], 1893 + "dev": true, 1894 + "license": "MIT", 1895 + "optional": true, 1896 + "os": [ 1897 + "linux" 1898 + ] 1899 + }, 1900 + "node_modules/@rollup/rollup-linux-riscv64-musl": { 1901 + "version": "4.56.0", 1902 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz", 1903 + "integrity": "sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==", 1904 + "cpu": [ 1905 + "riscv64" 1906 + ], 1907 + "dev": true, 1908 + "license": "MIT", 1909 + "optional": true, 1910 + "os": [ 1911 + "linux" 1912 + ] 1913 + }, 1914 + "node_modules/@rollup/rollup-linux-s390x-gnu": { 1915 + "version": "4.56.0", 1916 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz", 1917 + "integrity": "sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==", 1918 + "cpu": [ 1919 + "s390x" 1920 + ], 1921 + "dev": true, 1922 + "license": "MIT", 1923 + "optional": true, 1924 + "os": [ 1925 + "linux" 1926 + ] 1927 + }, 1928 + "node_modules/@rollup/rollup-linux-x64-gnu": { 1929 + "version": "4.56.0", 1930 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz", 1931 + "integrity": "sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==", 1932 + "cpu": [ 1933 + "x64" 1934 + ], 1935 + "dev": true, 1936 + "license": "MIT", 1937 + "optional": true, 1938 + "os": [ 1939 + "linux" 1940 + ] 1941 + }, 1942 + "node_modules/@rollup/rollup-linux-x64-musl": { 1943 + "version": "4.56.0", 1944 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz", 1945 + "integrity": "sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==", 1946 + "cpu": [ 1947 + "x64" 1948 + ], 1949 + "dev": true, 1950 + "license": "MIT", 1951 + "optional": true, 1952 + "os": [ 1953 + "linux" 1954 + ] 1955 + }, 1956 + "node_modules/@rollup/rollup-openbsd-x64": { 1957 + "version": "4.56.0", 1958 + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz", 1959 + "integrity": "sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==", 1960 + "cpu": [ 1961 + "x64" 1962 + ], 1963 + "dev": true, 1964 + "license": "MIT", 1965 + "optional": true, 1966 + "os": [ 1967 + "openbsd" 1968 + ] 1969 + }, 1970 + "node_modules/@rollup/rollup-openharmony-arm64": { 1971 + "version": "4.56.0", 1972 + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz", 1973 + "integrity": "sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==", 1974 + "cpu": [ 1975 + "arm64" 1976 + ], 1977 + "dev": true, 1978 + "license": "MIT", 1979 + "optional": true, 1980 + "os": [ 1981 + "openharmony" 1982 + ] 1983 + }, 1984 + "node_modules/@rollup/rollup-win32-arm64-msvc": { 1985 + "version": "4.56.0", 1986 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz", 1987 + "integrity": "sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==", 1988 + "cpu": [ 1989 + "arm64" 1990 + ], 1991 + "dev": true, 1992 + "license": "MIT", 1993 + "optional": true, 1994 + "os": [ 1995 + "win32" 1996 + ] 1997 + }, 1998 + "node_modules/@rollup/rollup-win32-ia32-msvc": { 1999 + "version": "4.56.0", 2000 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz", 2001 + "integrity": "sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==", 2002 + "cpu": [ 2003 + "ia32" 2004 + ], 2005 + "dev": true, 2006 + "license": "MIT", 2007 + "optional": true, 2008 + "os": [ 2009 + "win32" 2010 + ] 2011 + }, 2012 + "node_modules/@rollup/rollup-win32-x64-gnu": { 2013 + "version": "4.56.0", 2014 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz", 2015 + "integrity": "sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==", 2016 + "cpu": [ 2017 + "x64" 2018 + ], 2019 + "dev": true, 2020 + "license": "MIT", 2021 + "optional": true, 2022 + "os": [ 2023 + "win32" 2024 + ] 2025 + }, 2026 + "node_modules/@rollup/rollup-win32-x64-msvc": { 2027 + "version": "4.56.0", 2028 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz", 2029 + "integrity": "sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==", 2030 + "cpu": [ 2031 + "x64" 2032 + ], 2033 + "dev": true, 2034 + "license": "MIT", 2035 + "optional": true, 2036 + "os": [ 2037 + "win32" 2038 + ] 2039 + }, 2040 + "node_modules/@sindresorhus/is": { 2041 + "version": "7.2.0", 2042 + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.2.0.tgz", 2043 + "integrity": "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==", 2044 + "dev": true, 2045 + "license": "MIT", 2046 + "engines": { 2047 + "node": ">=18" 2048 + }, 2049 + "funding": { 2050 + "url": "https://github.com/sindresorhus/is?sponsor=1" 2051 + } 2052 + }, 2053 + "node_modules/@speed-highlight/core": { 2054 + "version": "1.2.14", 2055 + "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.14.tgz", 2056 + "integrity": "sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA==", 2057 + "dev": true, 2058 + "license": "CC0-1.0" 2059 + }, 2060 + "node_modules/@types/estree": { 2061 + "version": "1.0.8", 2062 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", 2063 + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", 2064 + "dev": true, 2065 + "license": "MIT" 2066 + }, 2067 + "node_modules/@vitest/expect": { 2068 + "version": "3.0.9", 2069 + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.9.tgz", 2070 + "integrity": "sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==", 2071 + "dev": true, 2072 + "license": "MIT", 2073 + "dependencies": { 2074 + "@vitest/spy": "3.0.9", 2075 + "@vitest/utils": "3.0.9", 2076 + "chai": "^5.2.0", 2077 + "tinyrainbow": "^2.0.0" 2078 + }, 2079 + "funding": { 2080 + "url": "https://opencollective.com/vitest" 2081 + } 2082 + }, 2083 + "node_modules/@vitest/expect/node_modules/@vitest/pretty-format": { 2084 + "version": "3.0.9", 2085 + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz", 2086 + "integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==", 2087 + "dev": true, 2088 + "license": "MIT", 2089 + "dependencies": { 2090 + "tinyrainbow": "^2.0.0" 2091 + }, 2092 + "funding": { 2093 + "url": "https://opencollective.com/vitest" 2094 + } 2095 + }, 2096 + "node_modules/@vitest/expect/node_modules/@vitest/utils": { 2097 + "version": "3.0.9", 2098 + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz", 2099 + "integrity": "sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==", 2100 + "dev": true, 2101 + "license": "MIT", 2102 + "dependencies": { 2103 + "@vitest/pretty-format": "3.0.9", 2104 + "loupe": "^3.1.3", 2105 + "tinyrainbow": "^2.0.0" 2106 + }, 2107 + "funding": { 2108 + "url": "https://opencollective.com/vitest" 2109 + } 2110 + }, 2111 + "node_modules/@vitest/mocker": { 2112 + "version": "3.0.9", 2113 + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.9.tgz", 2114 + "integrity": "sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==", 2115 + "dev": true, 2116 + "license": "MIT", 2117 + "dependencies": { 2118 + "@vitest/spy": "3.0.9", 2119 + "estree-walker": "^3.0.3", 2120 + "magic-string": "^0.30.17" 2121 + }, 2122 + "funding": { 2123 + "url": "https://opencollective.com/vitest" 2124 + }, 2125 + "peerDependencies": { 2126 + "msw": "^2.4.9", 2127 + "vite": "^5.0.0 || ^6.0.0" 2128 + }, 2129 + "peerDependenciesMeta": { 2130 + "msw": { 2131 + "optional": true 2132 + }, 2133 + "vite": { 2134 + "optional": true 2135 + } 2136 + } 2137 + }, 2138 + "node_modules/@vitest/pretty-format": { 2139 + "version": "3.2.4", 2140 + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", 2141 + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", 2142 + "dev": true, 2143 + "license": "MIT", 2144 + "dependencies": { 2145 + "tinyrainbow": "^2.0.0" 2146 + }, 2147 + "funding": { 2148 + "url": "https://opencollective.com/vitest" 2149 + } 2150 + }, 2151 + "node_modules/@vitest/runner": { 2152 + "version": "3.2.4", 2153 + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", 2154 + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", 2155 + "dev": true, 2156 + "license": "MIT", 2157 + "peer": true, 2158 + "dependencies": { 2159 + "@vitest/utils": "3.2.4", 2160 + "pathe": "^2.0.3", 2161 + "strip-literal": "^3.0.0" 2162 + }, 2163 + "funding": { 2164 + "url": "https://opencollective.com/vitest" 2165 + } 2166 + }, 2167 + "node_modules/@vitest/snapshot": { 2168 + "version": "3.2.4", 2169 + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", 2170 + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", 2171 + "dev": true, 2172 + "license": "MIT", 2173 + "peer": true, 2174 + "dependencies": { 2175 + "@vitest/pretty-format": "3.2.4", 2176 + "magic-string": "^0.30.17", 2177 + "pathe": "^2.0.3" 2178 + }, 2179 + "funding": { 2180 + "url": "https://opencollective.com/vitest" 2181 + } 2182 + }, 2183 + "node_modules/@vitest/spy": { 2184 + "version": "3.0.9", 2185 + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.9.tgz", 2186 + "integrity": "sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==", 2187 + "dev": true, 2188 + "license": "MIT", 2189 + "dependencies": { 2190 + "tinyspy": "^3.0.2" 2191 + }, 2192 + "funding": { 2193 + "url": "https://opencollective.com/vitest" 2194 + } 2195 + }, 2196 + "node_modules/@vitest/utils": { 2197 + "version": "3.2.4", 2198 + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", 2199 + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", 2200 + "dev": true, 2201 + "license": "MIT", 2202 + "dependencies": { 2203 + "@vitest/pretty-format": "3.2.4", 2204 + "loupe": "^3.1.4", 2205 + "tinyrainbow": "^2.0.0" 2206 + }, 2207 + "funding": { 2208 + "url": "https://opencollective.com/vitest" 2209 + } 2210 + }, 2211 + "node_modules/acorn": { 2212 + "version": "8.14.0", 2213 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", 2214 + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", 2215 + "dev": true, 2216 + "license": "MIT", 2217 + "bin": { 2218 + "acorn": "bin/acorn" 2219 + }, 2220 + "engines": { 2221 + "node": ">=0.4.0" 2222 + } 2223 + }, 2224 + "node_modules/acorn-walk": { 2225 + "version": "8.3.2", 2226 + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", 2227 + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", 2228 + "dev": true, 2229 + "license": "MIT", 2230 + "engines": { 2231 + "node": ">=0.4.0" 2232 + } 2233 + }, 2234 + "node_modules/assertion-error": { 2235 + "version": "2.0.1", 2236 + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", 2237 + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", 2238 + "dev": true, 2239 + "license": "MIT", 2240 + "engines": { 2241 + "node": ">=12" 2242 + } 2243 + }, 2244 + "node_modules/birpc": { 2245 + "version": "0.2.14", 2246 + "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.14.tgz", 2247 + "integrity": "sha512-37FHE8rqsYM5JEKCnXFyHpBCzvgHEExwVVTq+nUmloInU7l8ezD1TpOhKpS8oe1DTYFqEK27rFZVKG43oTqXRA==", 2248 + "dev": true, 2249 + "license": "MIT", 2250 + "funding": { 2251 + "url": "https://github.com/sponsors/antfu" 2252 + } 2253 + }, 2254 + "node_modules/blake3-wasm": { 2255 + "version": "2.1.5", 2256 + "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", 2257 + "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", 2258 + "dev": true, 2259 + "license": "MIT" 2260 + }, 2261 + "node_modules/cac": { 2262 + "version": "6.7.14", 2263 + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", 2264 + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", 2265 + "dev": true, 2266 + "license": "MIT", 2267 + "engines": { 2268 + "node": ">=8" 2269 + } 2270 + }, 2271 + "node_modules/chai": { 2272 + "version": "5.3.3", 2273 + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", 2274 + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", 2275 + "dev": true, 2276 + "license": "MIT", 2277 + "dependencies": { 2278 + "assertion-error": "^2.0.1", 2279 + "check-error": "^2.1.1", 2280 + "deep-eql": "^5.0.1", 2281 + "loupe": "^3.1.0", 2282 + "pathval": "^2.0.0" 2283 + }, 2284 + "engines": { 2285 + "node": ">=18" 2286 + } 2287 + }, 2288 + "node_modules/check-error": { 2289 + "version": "2.1.3", 2290 + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", 2291 + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", 2292 + "dev": true, 2293 + "license": "MIT", 2294 + "engines": { 2295 + "node": ">= 16" 2296 + } 2297 + }, 2298 + "node_modules/cjs-module-lexer": { 2299 + "version": "1.4.3", 2300 + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", 2301 + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", 2302 + "dev": true, 2303 + "license": "MIT" 2304 + }, 2305 + "node_modules/color": { 2306 + "version": "4.2.3", 2307 + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", 2308 + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", 2309 + "dev": true, 2310 + "license": "MIT", 2311 + "dependencies": { 2312 + "color-convert": "^2.0.1", 2313 + "color-string": "^1.9.0" 2314 + }, 2315 + "engines": { 2316 + "node": ">=12.5.0" 2317 + } 2318 + }, 2319 + "node_modules/color-convert": { 2320 + "version": "2.0.1", 2321 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2322 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2323 + "dev": true, 2324 + "license": "MIT", 2325 + "dependencies": { 2326 + "color-name": "~1.1.4" 2327 + }, 2328 + "engines": { 2329 + "node": ">=7.0.0" 2330 + } 2331 + }, 2332 + "node_modules/color-name": { 2333 + "version": "1.1.4", 2334 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2335 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2336 + "dev": true, 2337 + "license": "MIT" 2338 + }, 2339 + "node_modules/color-string": { 2340 + "version": "1.9.1", 2341 + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", 2342 + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", 2343 + "dev": true, 2344 + "license": "MIT", 2345 + "dependencies": { 2346 + "color-name": "^1.0.0", 2347 + "simple-swizzle": "^0.2.2" 2348 + } 2349 + }, 2350 + "node_modules/cookie": { 2351 + "version": "1.1.1", 2352 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", 2353 + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", 2354 + "dev": true, 2355 + "license": "MIT", 2356 + "engines": { 2357 + "node": ">=18" 2358 + }, 2359 + "funding": { 2360 + "type": "opencollective", 2361 + "url": "https://opencollective.com/express" 2362 + } 2363 + }, 2364 + "node_modules/debug": { 2365 + "version": "4.4.3", 2366 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", 2367 + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", 2368 + "dev": true, 2369 + "license": "MIT", 2370 + "dependencies": { 2371 + "ms": "^2.1.3" 2372 + }, 2373 + "engines": { 2374 + "node": ">=6.0" 2375 + }, 2376 + "peerDependenciesMeta": { 2377 + "supports-color": { 2378 + "optional": true 2379 + } 2380 + } 2381 + }, 2382 + "node_modules/deep-eql": { 2383 + "version": "5.0.2", 2384 + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", 2385 + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", 2386 + "dev": true, 2387 + "license": "MIT", 2388 + "engines": { 2389 + "node": ">=6" 2390 + } 2391 + }, 2392 + "node_modules/defu": { 2393 + "version": "6.1.4", 2394 + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", 2395 + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", 2396 + "dev": true, 2397 + "license": "MIT" 2398 + }, 2399 + "node_modules/detect-libc": { 2400 + "version": "2.1.2", 2401 + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", 2402 + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", 2403 + "dev": true, 2404 + "license": "Apache-2.0", 2405 + "engines": { 2406 + "node": ">=8" 2407 + } 2408 + }, 2409 + "node_modules/devalue": { 2410 + "version": "5.6.2", 2411 + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", 2412 + "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", 2413 + "dev": true, 2414 + "license": "MIT" 2415 + }, 2416 + "node_modules/error-stack-parser-es": { 2417 + "version": "1.0.5", 2418 + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz", 2419 + "integrity": "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==", 2420 + "dev": true, 2421 + "license": "MIT", 2422 + "funding": { 2423 + "url": "https://github.com/sponsors/antfu" 2424 + } 2425 + }, 2426 + "node_modules/es-module-lexer": { 2427 + "version": "1.7.0", 2428 + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", 2429 + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", 2430 + "dev": true, 2431 + "license": "MIT" 2432 + }, 2433 + "node_modules/esbuild": { 2434 + "version": "0.25.12", 2435 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", 2436 + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", 2437 + "dev": true, 2438 + "hasInstallScript": true, 2439 + "license": "MIT", 2440 + "bin": { 2441 + "esbuild": "bin/esbuild" 2442 + }, 2443 + "engines": { 2444 + "node": ">=18" 2445 + }, 2446 + "optionalDependencies": { 2447 + "@esbuild/aix-ppc64": "0.25.12", 2448 + "@esbuild/android-arm": "0.25.12", 2449 + "@esbuild/android-arm64": "0.25.12", 2450 + "@esbuild/android-x64": "0.25.12", 2451 + "@esbuild/darwin-arm64": "0.25.12", 2452 + "@esbuild/darwin-x64": "0.25.12", 2453 + "@esbuild/freebsd-arm64": "0.25.12", 2454 + "@esbuild/freebsd-x64": "0.25.12", 2455 + "@esbuild/linux-arm": "0.25.12", 2456 + "@esbuild/linux-arm64": "0.25.12", 2457 + "@esbuild/linux-ia32": "0.25.12", 2458 + "@esbuild/linux-loong64": "0.25.12", 2459 + "@esbuild/linux-mips64el": "0.25.12", 2460 + "@esbuild/linux-ppc64": "0.25.12", 2461 + "@esbuild/linux-riscv64": "0.25.12", 2462 + "@esbuild/linux-s390x": "0.25.12", 2463 + "@esbuild/linux-x64": "0.25.12", 2464 + "@esbuild/netbsd-arm64": "0.25.12", 2465 + "@esbuild/netbsd-x64": "0.25.12", 2466 + "@esbuild/openbsd-arm64": "0.25.12", 2467 + "@esbuild/openbsd-x64": "0.25.12", 2468 + "@esbuild/openharmony-arm64": "0.25.12", 2469 + "@esbuild/sunos-x64": "0.25.12", 2470 + "@esbuild/win32-arm64": "0.25.12", 2471 + "@esbuild/win32-ia32": "0.25.12", 2472 + "@esbuild/win32-x64": "0.25.12" 2473 + } 2474 + }, 2475 + "node_modules/estree-walker": { 2476 + "version": "3.0.3", 2477 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", 2478 + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", 2479 + "dev": true, 2480 + "license": "MIT", 2481 + "dependencies": { 2482 + "@types/estree": "^1.0.0" 2483 + } 2484 + }, 2485 + "node_modules/exit-hook": { 2486 + "version": "2.2.1", 2487 + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz", 2488 + "integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==", 2489 + "dev": true, 2490 + "license": "MIT", 2491 + "engines": { 2492 + "node": ">=6" 2493 + }, 2494 + "funding": { 2495 + "url": "https://github.com/sponsors/sindresorhus" 2496 + } 2497 + }, 2498 + "node_modules/expect-type": { 2499 + "version": "1.3.0", 2500 + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", 2501 + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", 2502 + "dev": true, 2503 + "license": "Apache-2.0", 2504 + "engines": { 2505 + "node": ">=12.0.0" 2506 + } 2507 + }, 2508 + "node_modules/exsolve": { 2509 + "version": "1.0.8", 2510 + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", 2511 + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", 2512 + "dev": true, 2513 + "license": "MIT" 2514 + }, 2515 + "node_modules/fdir": { 2516 + "version": "6.5.0", 2517 + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", 2518 + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", 2519 + "dev": true, 2520 + "license": "MIT", 2521 + "engines": { 2522 + "node": ">=12.0.0" 2523 + }, 2524 + "peerDependencies": { 2525 + "picomatch": "^3 || ^4" 2526 + }, 2527 + "peerDependenciesMeta": { 2528 + "picomatch": { 2529 + "optional": true 2530 + } 2531 + } 2532 + }, 2533 + "node_modules/fsevents": { 2534 + "version": "2.3.3", 2535 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 2536 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 2537 + "dev": true, 2538 + "hasInstallScript": true, 2539 + "license": "MIT", 2540 + "optional": true, 2541 + "os": [ 2542 + "darwin" 2543 + ], 2544 + "engines": { 2545 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2546 + } 2547 + }, 2548 + "node_modules/glob-to-regexp": { 2549 + "version": "0.4.1", 2550 + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 2551 + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 2552 + "dev": true, 2553 + "license": "BSD-2-Clause" 2554 + }, 2555 + "node_modules/is-arrayish": { 2556 + "version": "0.3.4", 2557 + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", 2558 + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", 2559 + "dev": true, 2560 + "license": "MIT" 2561 + }, 2562 + "node_modules/js-tokens": { 2563 + "version": "9.0.1", 2564 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", 2565 + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", 2566 + "dev": true, 2567 + "license": "MIT" 2568 + }, 2569 + "node_modules/kleur": { 2570 + "version": "4.1.5", 2571 + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 2572 + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 2573 + "dev": true, 2574 + "license": "MIT", 2575 + "engines": { 2576 + "node": ">=6" 2577 + } 2578 + }, 2579 + "node_modules/loupe": { 2580 + "version": "3.2.1", 2581 + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", 2582 + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", 2583 + "dev": true, 2584 + "license": "MIT" 2585 + }, 2586 + "node_modules/magic-string": { 2587 + "version": "0.30.21", 2588 + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", 2589 + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", 2590 + "dev": true, 2591 + "license": "MIT", 2592 + "dependencies": { 2593 + "@jridgewell/sourcemap-codec": "^1.5.5" 2594 + } 2595 + }, 2596 + "node_modules/mime": { 2597 + "version": "3.0.0", 2598 + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", 2599 + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", 2600 + "dev": true, 2601 + "license": "MIT", 2602 + "bin": { 2603 + "mime": "cli.js" 2604 + }, 2605 + "engines": { 2606 + "node": ">=10.0.0" 2607 + } 2608 + }, 2609 + "node_modules/miniflare": { 2610 + "version": "4.20250906.0", 2611 + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20250906.0.tgz", 2612 + "integrity": "sha512-T/RWn1sa0ien80s6NjU+Un/tj12gR6wqScZoiLeMJDD4/fK0UXfnbWXJDubnUED8Xjm7RPQ5ESYdE+mhPmMtuQ==", 2613 + "dev": true, 2614 + "license": "MIT", 2615 + "dependencies": { 2616 + "@cspotcode/source-map-support": "0.8.1", 2617 + "acorn": "8.14.0", 2618 + "acorn-walk": "8.3.2", 2619 + "exit-hook": "2.2.1", 2620 + "glob-to-regexp": "0.4.1", 2621 + "sharp": "^0.33.5", 2622 + "stoppable": "1.1.0", 2623 + "undici": "^7.10.0", 2624 + "workerd": "1.20250906.0", 2625 + "ws": "8.18.0", 2626 + "youch": "4.1.0-beta.10", 2627 + "zod": "3.22.3" 2628 + }, 2629 + "bin": { 2630 + "miniflare": "bootstrap.js" 2631 + }, 2632 + "engines": { 2633 + "node": ">=18.0.0" 2634 + } 2635 + }, 2636 + "node_modules/miniflare/node_modules/zod": { 2637 + "version": "3.22.3", 2638 + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.3.tgz", 2639 + "integrity": "sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==", 2640 + "dev": true, 2641 + "license": "MIT", 2642 + "funding": { 2643 + "url": "https://github.com/sponsors/colinhacks" 2644 + } 2645 + }, 2646 + "node_modules/ms": { 2647 + "version": "2.1.3", 2648 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2649 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2650 + "dev": true, 2651 + "license": "MIT" 2652 + }, 2653 + "node_modules/nanoid": { 2654 + "version": "3.3.11", 2655 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 2656 + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 2657 + "dev": true, 2658 + "funding": [ 2659 + { 2660 + "type": "github", 2661 + "url": "https://github.com/sponsors/ai" 2662 + } 2663 + ], 2664 + "license": "MIT", 2665 + "bin": { 2666 + "nanoid": "bin/nanoid.cjs" 2667 + }, 2668 + "engines": { 2669 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 2670 + } 2671 + }, 2672 + "node_modules/ohash": { 2673 + "version": "2.0.11", 2674 + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", 2675 + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", 2676 + "dev": true, 2677 + "license": "MIT" 2678 + }, 2679 + "node_modules/path-to-regexp": { 2680 + "version": "6.3.0", 2681 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", 2682 + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", 2683 + "dev": true, 2684 + "license": "MIT" 2685 + }, 2686 + "node_modules/pathe": { 2687 + "version": "2.0.3", 2688 + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", 2689 + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", 2690 + "dev": true, 2691 + "license": "MIT" 2692 + }, 2693 + "node_modules/pathval": { 2694 + "version": "2.0.1", 2695 + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", 2696 + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", 2697 + "dev": true, 2698 + "license": "MIT", 2699 + "engines": { 2700 + "node": ">= 14.16" 2701 + } 2702 + }, 2703 + "node_modules/picocolors": { 2704 + "version": "1.1.1", 2705 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 2706 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 2707 + "dev": true, 2708 + "license": "ISC" 2709 + }, 2710 + "node_modules/picomatch": { 2711 + "version": "4.0.3", 2712 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", 2713 + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", 2714 + "dev": true, 2715 + "license": "MIT", 2716 + "peer": true, 2717 + "engines": { 2718 + "node": ">=12" 2719 + }, 2720 + "funding": { 2721 + "url": "https://github.com/sponsors/jonschlinkert" 2722 + } 2723 + }, 2724 + "node_modules/postcss": { 2725 + "version": "8.5.6", 2726 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", 2727 + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", 2728 + "dev": true, 2729 + "funding": [ 2730 + { 2731 + "type": "opencollective", 2732 + "url": "https://opencollective.com/postcss/" 2733 + }, 2734 + { 2735 + "type": "tidelift", 2736 + "url": "https://tidelift.com/funding/github/npm/postcss" 2737 + }, 2738 + { 2739 + "type": "github", 2740 + "url": "https://github.com/sponsors/ai" 2741 + } 2742 + ], 2743 + "license": "MIT", 2744 + "dependencies": { 2745 + "nanoid": "^3.3.11", 2746 + "picocolors": "^1.1.1", 2747 + "source-map-js": "^1.2.1" 2748 + }, 2749 + "engines": { 2750 + "node": "^10 || ^12 || >=14" 2751 + } 2752 + }, 2753 + "node_modules/rollup": { 2754 + "version": "4.56.0", 2755 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.56.0.tgz", 2756 + "integrity": "sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==", 2757 + "dev": true, 2758 + "license": "MIT", 2759 + "dependencies": { 2760 + "@types/estree": "1.0.8" 2761 + }, 2762 + "bin": { 2763 + "rollup": "dist/bin/rollup" 2764 + }, 2765 + "engines": { 2766 + "node": ">=18.0.0", 2767 + "npm": ">=8.0.0" 2768 + }, 2769 + "optionalDependencies": { 2770 + "@rollup/rollup-android-arm-eabi": "4.56.0", 2771 + "@rollup/rollup-android-arm64": "4.56.0", 2772 + "@rollup/rollup-darwin-arm64": "4.56.0", 2773 + "@rollup/rollup-darwin-x64": "4.56.0", 2774 + "@rollup/rollup-freebsd-arm64": "4.56.0", 2775 + "@rollup/rollup-freebsd-x64": "4.56.0", 2776 + "@rollup/rollup-linux-arm-gnueabihf": "4.56.0", 2777 + "@rollup/rollup-linux-arm-musleabihf": "4.56.0", 2778 + "@rollup/rollup-linux-arm64-gnu": "4.56.0", 2779 + "@rollup/rollup-linux-arm64-musl": "4.56.0", 2780 + "@rollup/rollup-linux-loong64-gnu": "4.56.0", 2781 + "@rollup/rollup-linux-loong64-musl": "4.56.0", 2782 + "@rollup/rollup-linux-ppc64-gnu": "4.56.0", 2783 + "@rollup/rollup-linux-ppc64-musl": "4.56.0", 2784 + "@rollup/rollup-linux-riscv64-gnu": "4.56.0", 2785 + "@rollup/rollup-linux-riscv64-musl": "4.56.0", 2786 + "@rollup/rollup-linux-s390x-gnu": "4.56.0", 2787 + "@rollup/rollup-linux-x64-gnu": "4.56.0", 2788 + "@rollup/rollup-linux-x64-musl": "4.56.0", 2789 + "@rollup/rollup-openbsd-x64": "4.56.0", 2790 + "@rollup/rollup-openharmony-arm64": "4.56.0", 2791 + "@rollup/rollup-win32-arm64-msvc": "4.56.0", 2792 + "@rollup/rollup-win32-ia32-msvc": "4.56.0", 2793 + "@rollup/rollup-win32-x64-gnu": "4.56.0", 2794 + "@rollup/rollup-win32-x64-msvc": "4.56.0", 2795 + "fsevents": "~2.3.2" 2796 + } 2797 + }, 2798 + "node_modules/semver": { 2799 + "version": "7.7.3", 2800 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", 2801 + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", 2802 + "dev": true, 2803 + "license": "ISC", 2804 + "bin": { 2805 + "semver": "bin/semver.js" 2806 + }, 2807 + "engines": { 2808 + "node": ">=10" 2809 + } 2810 + }, 2811 + "node_modules/sharp": { 2812 + "version": "0.33.5", 2813 + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", 2814 + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", 2815 + "dev": true, 2816 + "hasInstallScript": true, 2817 + "license": "Apache-2.0", 2818 + "dependencies": { 2819 + "color": "^4.2.3", 2820 + "detect-libc": "^2.0.3", 2821 + "semver": "^7.6.3" 2822 + }, 2823 + "engines": { 2824 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 2825 + }, 2826 + "funding": { 2827 + "url": "https://opencollective.com/libvips" 2828 + }, 2829 + "optionalDependencies": { 2830 + "@img/sharp-darwin-arm64": "0.33.5", 2831 + "@img/sharp-darwin-x64": "0.33.5", 2832 + "@img/sharp-libvips-darwin-arm64": "1.0.4", 2833 + "@img/sharp-libvips-darwin-x64": "1.0.4", 2834 + "@img/sharp-libvips-linux-arm": "1.0.5", 2835 + "@img/sharp-libvips-linux-arm64": "1.0.4", 2836 + "@img/sharp-libvips-linux-s390x": "1.0.4", 2837 + "@img/sharp-libvips-linux-x64": "1.0.4", 2838 + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", 2839 + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", 2840 + "@img/sharp-linux-arm": "0.33.5", 2841 + "@img/sharp-linux-arm64": "0.33.5", 2842 + "@img/sharp-linux-s390x": "0.33.5", 2843 + "@img/sharp-linux-x64": "0.33.5", 2844 + "@img/sharp-linuxmusl-arm64": "0.33.5", 2845 + "@img/sharp-linuxmusl-x64": "0.33.5", 2846 + "@img/sharp-wasm32": "0.33.5", 2847 + "@img/sharp-win32-ia32": "0.33.5", 2848 + "@img/sharp-win32-x64": "0.33.5" 2849 + } 2850 + }, 2851 + "node_modules/siginfo": { 2852 + "version": "2.0.0", 2853 + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", 2854 + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", 2855 + "dev": true, 2856 + "license": "ISC" 2857 + }, 2858 + "node_modules/simple-swizzle": { 2859 + "version": "0.2.4", 2860 + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", 2861 + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", 2862 + "dev": true, 2863 + "license": "MIT", 2864 + "dependencies": { 2865 + "is-arrayish": "^0.3.1" 2866 + } 2867 + }, 2868 + "node_modules/source-map-js": { 2869 + "version": "1.2.1", 2870 + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 2871 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 2872 + "dev": true, 2873 + "license": "BSD-3-Clause", 2874 + "engines": { 2875 + "node": ">=0.10.0" 2876 + } 2877 + }, 2878 + "node_modules/stackback": { 2879 + "version": "0.0.2", 2880 + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", 2881 + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", 2882 + "dev": true, 2883 + "license": "MIT" 2884 + }, 2885 + "node_modules/std-env": { 2886 + "version": "3.10.0", 2887 + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", 2888 + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", 2889 + "dev": true, 2890 + "license": "MIT" 2891 + }, 2892 + "node_modules/stoppable": { 2893 + "version": "1.1.0", 2894 + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", 2895 + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", 2896 + "dev": true, 2897 + "license": "MIT", 2898 + "engines": { 2899 + "node": ">=4", 2900 + "npm": ">=6" 2901 + } 2902 + }, 2903 + "node_modules/strip-literal": { 2904 + "version": "3.1.0", 2905 + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", 2906 + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", 2907 + "dev": true, 2908 + "license": "MIT", 2909 + "dependencies": { 2910 + "js-tokens": "^9.0.1" 2911 + }, 2912 + "funding": { 2913 + "url": "https://github.com/sponsors/antfu" 2914 + } 2915 + }, 2916 + "node_modules/supports-color": { 2917 + "version": "10.2.2", 2918 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", 2919 + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", 2920 + "dev": true, 2921 + "license": "MIT", 2922 + "engines": { 2923 + "node": ">=18" 2924 + }, 2925 + "funding": { 2926 + "url": "https://github.com/chalk/supports-color?sponsor=1" 2927 + } 2928 + }, 2929 + "node_modules/tinybench": { 2930 + "version": "2.9.0", 2931 + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", 2932 + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", 2933 + "dev": true, 2934 + "license": "MIT" 2935 + }, 2936 + "node_modules/tinyexec": { 2937 + "version": "0.3.2", 2938 + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", 2939 + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", 2940 + "dev": true, 2941 + "license": "MIT" 2942 + }, 2943 + "node_modules/tinyglobby": { 2944 + "version": "0.2.15", 2945 + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", 2946 + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", 2947 + "dev": true, 2948 + "license": "MIT", 2949 + "dependencies": { 2950 + "fdir": "^6.5.0", 2951 + "picomatch": "^4.0.3" 2952 + }, 2953 + "engines": { 2954 + "node": ">=12.0.0" 2955 + }, 2956 + "funding": { 2957 + "url": "https://github.com/sponsors/SuperchupuDev" 2958 + } 2959 + }, 2960 + "node_modules/tinypool": { 2961 + "version": "1.1.1", 2962 + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", 2963 + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", 2964 + "dev": true, 2965 + "license": "MIT", 2966 + "engines": { 2967 + "node": "^18.0.0 || >=20.0.0" 2968 + } 2969 + }, 2970 + "node_modules/tinyrainbow": { 2971 + "version": "2.0.0", 2972 + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", 2973 + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", 2974 + "dev": true, 2975 + "license": "MIT", 2976 + "engines": { 2977 + "node": ">=14.0.0" 2978 + } 2979 + }, 2980 + "node_modules/tinyspy": { 2981 + "version": "3.0.2", 2982 + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", 2983 + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", 2984 + "dev": true, 2985 + "license": "MIT", 2986 + "engines": { 2987 + "node": ">=14.0.0" 2988 + } 2989 + }, 2990 + "node_modules/tslib": { 2991 + "version": "2.8.1", 2992 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", 2993 + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", 2994 + "dev": true, 2995 + "license": "0BSD", 2996 + "optional": true 2997 + }, 2998 + "node_modules/ufo": { 2999 + "version": "1.6.3", 3000 + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", 3001 + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", 3002 + "dev": true, 3003 + "license": "MIT" 3004 + }, 3005 + "node_modules/undici": { 3006 + "version": "7.19.1", 3007 + "resolved": "https://registry.npmjs.org/undici/-/undici-7.19.1.tgz", 3008 + "integrity": "sha512-Gpq0iNm5M6cQWlyHQv9MV+uOj1jWk7LpkoE5vSp/7zjb4zMdAcUD+VL5y0nH4p9EbUklq00eVIIX/XcDHzu5xg==", 3009 + "dev": true, 3010 + "license": "MIT", 3011 + "engines": { 3012 + "node": ">=20.18.1" 3013 + } 3014 + }, 3015 + "node_modules/unenv": { 3016 + "version": "2.0.0-rc.24", 3017 + "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz", 3018 + "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", 3019 + "dev": true, 3020 + "license": "MIT", 3021 + "peer": true, 3022 + "dependencies": { 3023 + "pathe": "^2.0.3" 3024 + } 3025 + }, 3026 + "node_modules/vite": { 3027 + "version": "6.4.1", 3028 + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", 3029 + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", 3030 + "dev": true, 3031 + "license": "MIT", 3032 + "dependencies": { 3033 + "esbuild": "^0.25.0", 3034 + "fdir": "^6.4.4", 3035 + "picomatch": "^4.0.2", 3036 + "postcss": "^8.5.3", 3037 + "rollup": "^4.34.9", 3038 + "tinyglobby": "^0.2.13" 3039 + }, 3040 + "bin": { 3041 + "vite": "bin/vite.js" 3042 + }, 3043 + "engines": { 3044 + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 3045 + }, 3046 + "funding": { 3047 + "url": "https://github.com/vitejs/vite?sponsor=1" 3048 + }, 3049 + "optionalDependencies": { 3050 + "fsevents": "~2.3.3" 3051 + }, 3052 + "peerDependencies": { 3053 + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 3054 + "jiti": ">=1.21.0", 3055 + "less": "*", 3056 + "lightningcss": "^1.21.0", 3057 + "sass": "*", 3058 + "sass-embedded": "*", 3059 + "stylus": "*", 3060 + "sugarss": "*", 3061 + "terser": "^5.16.0", 3062 + "tsx": "^4.8.1", 3063 + "yaml": "^2.4.2" 3064 + }, 3065 + "peerDependenciesMeta": { 3066 + "@types/node": { 3067 + "optional": true 3068 + }, 3069 + "jiti": { 3070 + "optional": true 3071 + }, 3072 + "less": { 3073 + "optional": true 3074 + }, 3075 + "lightningcss": { 3076 + "optional": true 3077 + }, 3078 + "sass": { 3079 + "optional": true 3080 + }, 3081 + "sass-embedded": { 3082 + "optional": true 3083 + }, 3084 + "stylus": { 3085 + "optional": true 3086 + }, 3087 + "sugarss": { 3088 + "optional": true 3089 + }, 3090 + "terser": { 3091 + "optional": true 3092 + }, 3093 + "tsx": { 3094 + "optional": true 3095 + }, 3096 + "yaml": { 3097 + "optional": true 3098 + } 3099 + } 3100 + }, 3101 + "node_modules/vite-node": { 3102 + "version": "3.0.9", 3103 + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.9.tgz", 3104 + "integrity": "sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==", 3105 + "dev": true, 3106 + "license": "MIT", 3107 + "dependencies": { 3108 + "cac": "^6.7.14", 3109 + "debug": "^4.4.0", 3110 + "es-module-lexer": "^1.6.0", 3111 + "pathe": "^2.0.3", 3112 + "vite": "^5.0.0 || ^6.0.0" 3113 + }, 3114 + "bin": { 3115 + "vite-node": "vite-node.mjs" 3116 + }, 3117 + "engines": { 3118 + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 3119 + }, 3120 + "funding": { 3121 + "url": "https://opencollective.com/vitest" 3122 + } 3123 + }, 3124 + "node_modules/vitest": { 3125 + "version": "3.0.9", 3126 + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.9.tgz", 3127 + "integrity": "sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==", 3128 + "dev": true, 3129 + "license": "MIT", 3130 + "peer": true, 3131 + "dependencies": { 3132 + "@vitest/expect": "3.0.9", 3133 + "@vitest/mocker": "3.0.9", 3134 + "@vitest/pretty-format": "^3.0.9", 3135 + "@vitest/runner": "3.0.9", 3136 + "@vitest/snapshot": "3.0.9", 3137 + "@vitest/spy": "3.0.9", 3138 + "@vitest/utils": "3.0.9", 3139 + "chai": "^5.2.0", 3140 + "debug": "^4.4.0", 3141 + "expect-type": "^1.1.0", 3142 + "magic-string": "^0.30.17", 3143 + "pathe": "^2.0.3", 3144 + "std-env": "^3.8.0", 3145 + "tinybench": "^2.9.0", 3146 + "tinyexec": "^0.3.2", 3147 + "tinypool": "^1.0.2", 3148 + "tinyrainbow": "^2.0.0", 3149 + "vite": "^5.0.0 || ^6.0.0", 3150 + "vite-node": "3.0.9", 3151 + "why-is-node-running": "^2.3.0" 3152 + }, 3153 + "bin": { 3154 + "vitest": "vitest.mjs" 3155 + }, 3156 + "engines": { 3157 + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 3158 + }, 3159 + "funding": { 3160 + "url": "https://opencollective.com/vitest" 3161 + }, 3162 + "peerDependencies": { 3163 + "@edge-runtime/vm": "*", 3164 + "@types/debug": "^4.1.12", 3165 + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 3166 + "@vitest/browser": "3.0.9", 3167 + "@vitest/ui": "3.0.9", 3168 + "happy-dom": "*", 3169 + "jsdom": "*" 3170 + }, 3171 + "peerDependenciesMeta": { 3172 + "@edge-runtime/vm": { 3173 + "optional": true 3174 + }, 3175 + "@types/debug": { 3176 + "optional": true 3177 + }, 3178 + "@types/node": { 3179 + "optional": true 3180 + }, 3181 + "@vitest/browser": { 3182 + "optional": true 3183 + }, 3184 + "@vitest/ui": { 3185 + "optional": true 3186 + }, 3187 + "happy-dom": { 3188 + "optional": true 3189 + }, 3190 + "jsdom": { 3191 + "optional": true 3192 + } 3193 + } 3194 + }, 3195 + "node_modules/vitest/node_modules/@vitest/pretty-format": { 3196 + "version": "3.0.9", 3197 + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz", 3198 + "integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==", 3199 + "dev": true, 3200 + "license": "MIT", 3201 + "dependencies": { 3202 + "tinyrainbow": "^2.0.0" 3203 + }, 3204 + "funding": { 3205 + "url": "https://opencollective.com/vitest" 3206 + } 3207 + }, 3208 + "node_modules/vitest/node_modules/@vitest/runner": { 3209 + "version": "3.0.9", 3210 + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.9.tgz", 3211 + "integrity": "sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==", 3212 + "dev": true, 3213 + "license": "MIT", 3214 + "dependencies": { 3215 + "@vitest/utils": "3.0.9", 3216 + "pathe": "^2.0.3" 3217 + }, 3218 + "funding": { 3219 + "url": "https://opencollective.com/vitest" 3220 + } 3221 + }, 3222 + "node_modules/vitest/node_modules/@vitest/snapshot": { 3223 + "version": "3.0.9", 3224 + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.9.tgz", 3225 + "integrity": "sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==", 3226 + "dev": true, 3227 + "license": "MIT", 3228 + "dependencies": { 3229 + "@vitest/pretty-format": "3.0.9", 3230 + "magic-string": "^0.30.17", 3231 + "pathe": "^2.0.3" 3232 + }, 3233 + "funding": { 3234 + "url": "https://opencollective.com/vitest" 3235 + } 3236 + }, 3237 + "node_modules/vitest/node_modules/@vitest/utils": { 3238 + "version": "3.0.9", 3239 + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz", 3240 + "integrity": "sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==", 3241 + "dev": true, 3242 + "license": "MIT", 3243 + "dependencies": { 3244 + "@vitest/pretty-format": "3.0.9", 3245 + "loupe": "^3.1.3", 3246 + "tinyrainbow": "^2.0.0" 3247 + }, 3248 + "funding": { 3249 + "url": "https://opencollective.com/vitest" 3250 + } 3251 + }, 3252 + "node_modules/why-is-node-running": { 3253 + "version": "2.3.0", 3254 + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", 3255 + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", 3256 + "dev": true, 3257 + "license": "MIT", 3258 + "dependencies": { 3259 + "siginfo": "^2.0.0", 3260 + "stackback": "0.0.2" 3261 + }, 3262 + "bin": { 3263 + "why-is-node-running": "cli.js" 3264 + }, 3265 + "engines": { 3266 + "node": ">=8" 3267 + } 3268 + }, 3269 + "node_modules/workerd": { 3270 + "version": "1.20250906.0", 3271 + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20250906.0.tgz", 3272 + "integrity": "sha512-ryVyEaqXPPsr/AxccRmYZZmDAkfQVjhfRqrNTlEeN8aftBk6Ca1u7/VqmfOayjCXrA+O547TauebU+J3IpvFXw==", 3273 + "dev": true, 3274 + "hasInstallScript": true, 3275 + "license": "Apache-2.0", 3276 + "peer": true, 3277 + "bin": { 3278 + "workerd": "bin/workerd" 3279 + }, 3280 + "engines": { 3281 + "node": ">=16" 3282 + }, 3283 + "optionalDependencies": { 3284 + "@cloudflare/workerd-darwin-64": "1.20250906.0", 3285 + "@cloudflare/workerd-darwin-arm64": "1.20250906.0", 3286 + "@cloudflare/workerd-linux-64": "1.20250906.0", 3287 + "@cloudflare/workerd-linux-arm64": "1.20250906.0", 3288 + "@cloudflare/workerd-windows-64": "1.20250906.0" 3289 + } 3290 + }, 3291 + "node_modules/wrangler": { 3292 + "version": "4.60.0", 3293 + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.60.0.tgz", 3294 + "integrity": "sha512-n4kibm/xY0Qd5G2K/CbAQeVeOIlwPNVglmFjlDRCCYk3hZh8IggO/rg8AXt/vByK2Sxsugl5Z7yvgWxrUbmS6g==", 3295 + "dev": true, 3296 + "license": "MIT OR Apache-2.0", 3297 + "dependencies": { 3298 + "@cloudflare/kv-asset-handler": "0.4.2", 3299 + "@cloudflare/unenv-preset": "2.11.0", 3300 + "blake3-wasm": "2.1.5", 3301 + "esbuild": "0.27.0", 3302 + "miniflare": "4.20260120.0", 3303 + "path-to-regexp": "6.3.0", 3304 + "unenv": "2.0.0-rc.24", 3305 + "workerd": "1.20260120.0" 3306 + }, 3307 + "bin": { 3308 + "wrangler": "bin/wrangler.js", 3309 + "wrangler2": "bin/wrangler.js" 3310 + }, 3311 + "engines": { 3312 + "node": ">=20.0.0" 3313 + }, 3314 + "optionalDependencies": { 3315 + "fsevents": "~2.3.2" 3316 + }, 3317 + "peerDependencies": { 3318 + "@cloudflare/workers-types": "^4.20260120.0" 3319 + }, 3320 + "peerDependenciesMeta": { 3321 + "@cloudflare/workers-types": { 3322 + "optional": true 3323 + } 3324 + } 3325 + }, 3326 + "node_modules/wrangler/node_modules/@cloudflare/unenv-preset": { 3327 + "version": "2.11.0", 3328 + "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.11.0.tgz", 3329 + "integrity": "sha512-z3hxFajL765VniNPGV0JRStZolNz63gU3B3AktwoGdDlnQvz5nP+Ah4RL04PONlZQjwmDdGHowEStJ94+RsaJg==", 3330 + "dev": true, 3331 + "license": "MIT OR Apache-2.0", 3332 + "peerDependencies": { 3333 + "unenv": "2.0.0-rc.24", 3334 + "workerd": "^1.20260115.0" 3335 + }, 3336 + "peerDependenciesMeta": { 3337 + "workerd": { 3338 + "optional": true 3339 + } 3340 + } 3341 + }, 3342 + "node_modules/wrangler/node_modules/@cloudflare/workerd-darwin-64": { 3343 + "version": "1.20260120.0", 3344 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260120.0.tgz", 3345 + "integrity": "sha512-JLHx3p5dpwz4wjVSis45YNReftttnI3ndhdMh5BUbbpdreN/g0jgxNt5Qp9tDFqEKl++N63qv+hxJiIIvSLR+Q==", 3346 + "cpu": [ 3347 + "x64" 3348 + ], 3349 + "dev": true, 3350 + "license": "Apache-2.0", 3351 + "optional": true, 3352 + "os": [ 3353 + "darwin" 3354 + ], 3355 + "engines": { 3356 + "node": ">=16" 3357 + } 3358 + }, 3359 + "node_modules/wrangler/node_modules/@cloudflare/workerd-darwin-arm64": { 3360 + "version": "1.20260120.0", 3361 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260120.0.tgz", 3362 + "integrity": "sha512-1Md2tCRhZjwajsZNOiBeOVGiS3zbpLPzUDjHr4+XGTXWOA6FzzwScJwQZLa0Doc28Cp4Nr1n7xGL0Dwiz1XuOA==", 3363 + "cpu": [ 3364 + "arm64" 3365 + ], 3366 + "dev": true, 3367 + "license": "Apache-2.0", 3368 + "optional": true, 3369 + "os": [ 3370 + "darwin" 3371 + ], 3372 + "engines": { 3373 + "node": ">=16" 3374 + } 3375 + }, 3376 + "node_modules/wrangler/node_modules/@cloudflare/workerd-linux-64": { 3377 + "version": "1.20260120.0", 3378 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260120.0.tgz", 3379 + "integrity": "sha512-O0mIfJfvU7F8N5siCoRDaVDuI12wkz2xlG4zK6/Ct7U9c9FiE0ViXNFWXFQm5PPj+qbkNRyhjUwhP+GCKTk5EQ==", 3380 + "cpu": [ 3381 + "x64" 3382 + ], 3383 + "dev": true, 3384 + "license": "Apache-2.0", 3385 + "optional": true, 3386 + "os": [ 3387 + "linux" 3388 + ], 3389 + "engines": { 3390 + "node": ">=16" 3391 + } 3392 + }, 3393 + "node_modules/wrangler/node_modules/@cloudflare/workerd-linux-arm64": { 3394 + "version": "1.20260120.0", 3395 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260120.0.tgz", 3396 + "integrity": "sha512-aRHO/7bjxVpjZEmVVcpmhbzpN6ITbFCxuLLZSW0H9O0C0w40cDCClWSi19T87Ax/PQcYjFNT22pTewKsupkckA==", 3397 + "cpu": [ 3398 + "arm64" 3399 + ], 3400 + "dev": true, 3401 + "license": "Apache-2.0", 3402 + "optional": true, 3403 + "os": [ 3404 + "linux" 3405 + ], 3406 + "engines": { 3407 + "node": ">=16" 3408 + } 3409 + }, 3410 + "node_modules/wrangler/node_modules/@cloudflare/workerd-windows-64": { 3411 + "version": "1.20260120.0", 3412 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260120.0.tgz", 3413 + "integrity": "sha512-ASZIz1E8sqZQqQCgcfY1PJbBpUDrxPt8NZ+lqNil0qxnO4qX38hbCsdDF2/TDAuq0Txh7nu8ztgTelfNDlb4EA==", 3414 + "cpu": [ 3415 + "x64" 3416 + ], 3417 + "dev": true, 3418 + "license": "Apache-2.0", 3419 + "optional": true, 3420 + "os": [ 3421 + "win32" 3422 + ], 3423 + "engines": { 3424 + "node": ">=16" 3425 + } 3426 + }, 3427 + "node_modules/wrangler/node_modules/@esbuild/aix-ppc64": { 3428 + "version": "0.27.0", 3429 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.0.tgz", 3430 + "integrity": "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==", 3431 + "cpu": [ 3432 + "ppc64" 3433 + ], 3434 + "dev": true, 3435 + "license": "MIT", 3436 + "optional": true, 3437 + "os": [ 3438 + "aix" 3439 + ], 3440 + "engines": { 3441 + "node": ">=18" 3442 + } 3443 + }, 3444 + "node_modules/wrangler/node_modules/@esbuild/android-arm": { 3445 + "version": "0.27.0", 3446 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.0.tgz", 3447 + "integrity": "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==", 3448 + "cpu": [ 3449 + "arm" 3450 + ], 3451 + "dev": true, 3452 + "license": "MIT", 3453 + "optional": true, 3454 + "os": [ 3455 + "android" 3456 + ], 3457 + "engines": { 3458 + "node": ">=18" 3459 + } 3460 + }, 3461 + "node_modules/wrangler/node_modules/@esbuild/android-arm64": { 3462 + "version": "0.27.0", 3463 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.0.tgz", 3464 + "integrity": "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==", 3465 + "cpu": [ 3466 + "arm64" 3467 + ], 3468 + "dev": true, 3469 + "license": "MIT", 3470 + "optional": true, 3471 + "os": [ 3472 + "android" 3473 + ], 3474 + "engines": { 3475 + "node": ">=18" 3476 + } 3477 + }, 3478 + "node_modules/wrangler/node_modules/@esbuild/android-x64": { 3479 + "version": "0.27.0", 3480 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.0.tgz", 3481 + "integrity": "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==", 3482 + "cpu": [ 3483 + "x64" 3484 + ], 3485 + "dev": true, 3486 + "license": "MIT", 3487 + "optional": true, 3488 + "os": [ 3489 + "android" 3490 + ], 3491 + "engines": { 3492 + "node": ">=18" 3493 + } 3494 + }, 3495 + "node_modules/wrangler/node_modules/@esbuild/darwin-arm64": { 3496 + "version": "0.27.0", 3497 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.0.tgz", 3498 + "integrity": "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==", 3499 + "cpu": [ 3500 + "arm64" 3501 + ], 3502 + "dev": true, 3503 + "license": "MIT", 3504 + "optional": true, 3505 + "os": [ 3506 + "darwin" 3507 + ], 3508 + "engines": { 3509 + "node": ">=18" 3510 + } 3511 + }, 3512 + "node_modules/wrangler/node_modules/@esbuild/darwin-x64": { 3513 + "version": "0.27.0", 3514 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.0.tgz", 3515 + "integrity": "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==", 3516 + "cpu": [ 3517 + "x64" 3518 + ], 3519 + "dev": true, 3520 + "license": "MIT", 3521 + "optional": true, 3522 + "os": [ 3523 + "darwin" 3524 + ], 3525 + "engines": { 3526 + "node": ">=18" 3527 + } 3528 + }, 3529 + "node_modules/wrangler/node_modules/@esbuild/freebsd-arm64": { 3530 + "version": "0.27.0", 3531 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.0.tgz", 3532 + "integrity": "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==", 3533 + "cpu": [ 3534 + "arm64" 3535 + ], 3536 + "dev": true, 3537 + "license": "MIT", 3538 + "optional": true, 3539 + "os": [ 3540 + "freebsd" 3541 + ], 3542 + "engines": { 3543 + "node": ">=18" 3544 + } 3545 + }, 3546 + "node_modules/wrangler/node_modules/@esbuild/freebsd-x64": { 3547 + "version": "0.27.0", 3548 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.0.tgz", 3549 + "integrity": "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==", 3550 + "cpu": [ 3551 + "x64" 3552 + ], 3553 + "dev": true, 3554 + "license": "MIT", 3555 + "optional": true, 3556 + "os": [ 3557 + "freebsd" 3558 + ], 3559 + "engines": { 3560 + "node": ">=18" 3561 + } 3562 + }, 3563 + "node_modules/wrangler/node_modules/@esbuild/linux-arm": { 3564 + "version": "0.27.0", 3565 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.0.tgz", 3566 + "integrity": "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==", 3567 + "cpu": [ 3568 + "arm" 3569 + ], 3570 + "dev": true, 3571 + "license": "MIT", 3572 + "optional": true, 3573 + "os": [ 3574 + "linux" 3575 + ], 3576 + "engines": { 3577 + "node": ">=18" 3578 + } 3579 + }, 3580 + "node_modules/wrangler/node_modules/@esbuild/linux-arm64": { 3581 + "version": "0.27.0", 3582 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.0.tgz", 3583 + "integrity": "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==", 3584 + "cpu": [ 3585 + "arm64" 3586 + ], 3587 + "dev": true, 3588 + "license": "MIT", 3589 + "optional": true, 3590 + "os": [ 3591 + "linux" 3592 + ], 3593 + "engines": { 3594 + "node": ">=18" 3595 + } 3596 + }, 3597 + "node_modules/wrangler/node_modules/@esbuild/linux-ia32": { 3598 + "version": "0.27.0", 3599 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.0.tgz", 3600 + "integrity": "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==", 3601 + "cpu": [ 3602 + "ia32" 3603 + ], 3604 + "dev": true, 3605 + "license": "MIT", 3606 + "optional": true, 3607 + "os": [ 3608 + "linux" 3609 + ], 3610 + "engines": { 3611 + "node": ">=18" 3612 + } 3613 + }, 3614 + "node_modules/wrangler/node_modules/@esbuild/linux-loong64": { 3615 + "version": "0.27.0", 3616 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.0.tgz", 3617 + "integrity": "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==", 3618 + "cpu": [ 3619 + "loong64" 3620 + ], 3621 + "dev": true, 3622 + "license": "MIT", 3623 + "optional": true, 3624 + "os": [ 3625 + "linux" 3626 + ], 3627 + "engines": { 3628 + "node": ">=18" 3629 + } 3630 + }, 3631 + "node_modules/wrangler/node_modules/@esbuild/linux-mips64el": { 3632 + "version": "0.27.0", 3633 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.0.tgz", 3634 + "integrity": "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==", 3635 + "cpu": [ 3636 + "mips64el" 3637 + ], 3638 + "dev": true, 3639 + "license": "MIT", 3640 + "optional": true, 3641 + "os": [ 3642 + "linux" 3643 + ], 3644 + "engines": { 3645 + "node": ">=18" 3646 + } 3647 + }, 3648 + "node_modules/wrangler/node_modules/@esbuild/linux-ppc64": { 3649 + "version": "0.27.0", 3650 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.0.tgz", 3651 + "integrity": "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==", 3652 + "cpu": [ 3653 + "ppc64" 3654 + ], 3655 + "dev": true, 3656 + "license": "MIT", 3657 + "optional": true, 3658 + "os": [ 3659 + "linux" 3660 + ], 3661 + "engines": { 3662 + "node": ">=18" 3663 + } 3664 + }, 3665 + "node_modules/wrangler/node_modules/@esbuild/linux-riscv64": { 3666 + "version": "0.27.0", 3667 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.0.tgz", 3668 + "integrity": "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==", 3669 + "cpu": [ 3670 + "riscv64" 3671 + ], 3672 + "dev": true, 3673 + "license": "MIT", 3674 + "optional": true, 3675 + "os": [ 3676 + "linux" 3677 + ], 3678 + "engines": { 3679 + "node": ">=18" 3680 + } 3681 + }, 3682 + "node_modules/wrangler/node_modules/@esbuild/linux-s390x": { 3683 + "version": "0.27.0", 3684 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.0.tgz", 3685 + "integrity": "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==", 3686 + "cpu": [ 3687 + "s390x" 3688 + ], 3689 + "dev": true, 3690 + "license": "MIT", 3691 + "optional": true, 3692 + "os": [ 3693 + "linux" 3694 + ], 3695 + "engines": { 3696 + "node": ">=18" 3697 + } 3698 + }, 3699 + "node_modules/wrangler/node_modules/@esbuild/linux-x64": { 3700 + "version": "0.27.0", 3701 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.0.tgz", 3702 + "integrity": "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==", 3703 + "cpu": [ 3704 + "x64" 3705 + ], 3706 + "dev": true, 3707 + "license": "MIT", 3708 + "optional": true, 3709 + "os": [ 3710 + "linux" 3711 + ], 3712 + "engines": { 3713 + "node": ">=18" 3714 + } 3715 + }, 3716 + "node_modules/wrangler/node_modules/@esbuild/netbsd-arm64": { 3717 + "version": "0.27.0", 3718 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.0.tgz", 3719 + "integrity": "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==", 3720 + "cpu": [ 3721 + "arm64" 3722 + ], 3723 + "dev": true, 3724 + "license": "MIT", 3725 + "optional": true, 3726 + "os": [ 3727 + "netbsd" 3728 + ], 3729 + "engines": { 3730 + "node": ">=18" 3731 + } 3732 + }, 3733 + "node_modules/wrangler/node_modules/@esbuild/netbsd-x64": { 3734 + "version": "0.27.0", 3735 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.0.tgz", 3736 + "integrity": "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==", 3737 + "cpu": [ 3738 + "x64" 3739 + ], 3740 + "dev": true, 3741 + "license": "MIT", 3742 + "optional": true, 3743 + "os": [ 3744 + "netbsd" 3745 + ], 3746 + "engines": { 3747 + "node": ">=18" 3748 + } 3749 + }, 3750 + "node_modules/wrangler/node_modules/@esbuild/openbsd-arm64": { 3751 + "version": "0.27.0", 3752 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.0.tgz", 3753 + "integrity": "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==", 3754 + "cpu": [ 3755 + "arm64" 3756 + ], 3757 + "dev": true, 3758 + "license": "MIT", 3759 + "optional": true, 3760 + "os": [ 3761 + "openbsd" 3762 + ], 3763 + "engines": { 3764 + "node": ">=18" 3765 + } 3766 + }, 3767 + "node_modules/wrangler/node_modules/@esbuild/openbsd-x64": { 3768 + "version": "0.27.0", 3769 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.0.tgz", 3770 + "integrity": "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==", 3771 + "cpu": [ 3772 + "x64" 3773 + ], 3774 + "dev": true, 3775 + "license": "MIT", 3776 + "optional": true, 3777 + "os": [ 3778 + "openbsd" 3779 + ], 3780 + "engines": { 3781 + "node": ">=18" 3782 + } 3783 + }, 3784 + "node_modules/wrangler/node_modules/@esbuild/openharmony-arm64": { 3785 + "version": "0.27.0", 3786 + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.0.tgz", 3787 + "integrity": "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==", 3788 + "cpu": [ 3789 + "arm64" 3790 + ], 3791 + "dev": true, 3792 + "license": "MIT", 3793 + "optional": true, 3794 + "os": [ 3795 + "openharmony" 3796 + ], 3797 + "engines": { 3798 + "node": ">=18" 3799 + } 3800 + }, 3801 + "node_modules/wrangler/node_modules/@esbuild/sunos-x64": { 3802 + "version": "0.27.0", 3803 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.0.tgz", 3804 + "integrity": "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==", 3805 + "cpu": [ 3806 + "x64" 3807 + ], 3808 + "dev": true, 3809 + "license": "MIT", 3810 + "optional": true, 3811 + "os": [ 3812 + "sunos" 3813 + ], 3814 + "engines": { 3815 + "node": ">=18" 3816 + } 3817 + }, 3818 + "node_modules/wrangler/node_modules/@esbuild/win32-arm64": { 3819 + "version": "0.27.0", 3820 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.0.tgz", 3821 + "integrity": "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==", 3822 + "cpu": [ 3823 + "arm64" 3824 + ], 3825 + "dev": true, 3826 + "license": "MIT", 3827 + "optional": true, 3828 + "os": [ 3829 + "win32" 3830 + ], 3831 + "engines": { 3832 + "node": ">=18" 3833 + } 3834 + }, 3835 + "node_modules/wrangler/node_modules/@esbuild/win32-ia32": { 3836 + "version": "0.27.0", 3837 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.0.tgz", 3838 + "integrity": "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==", 3839 + "cpu": [ 3840 + "ia32" 3841 + ], 3842 + "dev": true, 3843 + "license": "MIT", 3844 + "optional": true, 3845 + "os": [ 3846 + "win32" 3847 + ], 3848 + "engines": { 3849 + "node": ">=18" 3850 + } 3851 + }, 3852 + "node_modules/wrangler/node_modules/@esbuild/win32-x64": { 3853 + "version": "0.27.0", 3854 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.0.tgz", 3855 + "integrity": "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==", 3856 + "cpu": [ 3857 + "x64" 3858 + ], 3859 + "dev": true, 3860 + "license": "MIT", 3861 + "optional": true, 3862 + "os": [ 3863 + "win32" 3864 + ], 3865 + "engines": { 3866 + "node": ">=18" 3867 + } 3868 + }, 3869 + "node_modules/wrangler/node_modules/@img/sharp-darwin-arm64": { 3870 + "version": "0.34.5", 3871 + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", 3872 + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", 3873 + "cpu": [ 3874 + "arm64" 3875 + ], 3876 + "dev": true, 3877 + "license": "Apache-2.0", 3878 + "optional": true, 3879 + "os": [ 3880 + "darwin" 3881 + ], 3882 + "engines": { 3883 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 3884 + }, 3885 + "funding": { 3886 + "url": "https://opencollective.com/libvips" 3887 + }, 3888 + "optionalDependencies": { 3889 + "@img/sharp-libvips-darwin-arm64": "1.2.4" 3890 + } 3891 + }, 3892 + "node_modules/wrangler/node_modules/@img/sharp-darwin-x64": { 3893 + "version": "0.34.5", 3894 + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", 3895 + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", 3896 + "cpu": [ 3897 + "x64" 3898 + ], 3899 + "dev": true, 3900 + "license": "Apache-2.0", 3901 + "optional": true, 3902 + "os": [ 3903 + "darwin" 3904 + ], 3905 + "engines": { 3906 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 3907 + }, 3908 + "funding": { 3909 + "url": "https://opencollective.com/libvips" 3910 + }, 3911 + "optionalDependencies": { 3912 + "@img/sharp-libvips-darwin-x64": "1.2.4" 3913 + } 3914 + }, 3915 + "node_modules/wrangler/node_modules/@img/sharp-libvips-darwin-arm64": { 3916 + "version": "1.2.4", 3917 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", 3918 + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", 3919 + "cpu": [ 3920 + "arm64" 3921 + ], 3922 + "dev": true, 3923 + "license": "LGPL-3.0-or-later", 3924 + "optional": true, 3925 + "os": [ 3926 + "darwin" 3927 + ], 3928 + "funding": { 3929 + "url": "https://opencollective.com/libvips" 3930 + } 3931 + }, 3932 + "node_modules/wrangler/node_modules/@img/sharp-libvips-darwin-x64": { 3933 + "version": "1.2.4", 3934 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", 3935 + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", 3936 + "cpu": [ 3937 + "x64" 3938 + ], 3939 + "dev": true, 3940 + "license": "LGPL-3.0-or-later", 3941 + "optional": true, 3942 + "os": [ 3943 + "darwin" 3944 + ], 3945 + "funding": { 3946 + "url": "https://opencollective.com/libvips" 3947 + } 3948 + }, 3949 + "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-arm": { 3950 + "version": "1.2.4", 3951 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", 3952 + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", 3953 + "cpu": [ 3954 + "arm" 3955 + ], 3956 + "dev": true, 3957 + "license": "LGPL-3.0-or-later", 3958 + "optional": true, 3959 + "os": [ 3960 + "linux" 3961 + ], 3962 + "funding": { 3963 + "url": "https://opencollective.com/libvips" 3964 + } 3965 + }, 3966 + "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-arm64": { 3967 + "version": "1.2.4", 3968 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", 3969 + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", 3970 + "cpu": [ 3971 + "arm64" 3972 + ], 3973 + "dev": true, 3974 + "license": "LGPL-3.0-or-later", 3975 + "optional": true, 3976 + "os": [ 3977 + "linux" 3978 + ], 3979 + "funding": { 3980 + "url": "https://opencollective.com/libvips" 3981 + } 3982 + }, 3983 + "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-s390x": { 3984 + "version": "1.2.4", 3985 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", 3986 + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", 3987 + "cpu": [ 3988 + "s390x" 3989 + ], 3990 + "dev": true, 3991 + "license": "LGPL-3.0-or-later", 3992 + "optional": true, 3993 + "os": [ 3994 + "linux" 3995 + ], 3996 + "funding": { 3997 + "url": "https://opencollective.com/libvips" 3998 + } 3999 + }, 4000 + "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-x64": { 4001 + "version": "1.2.4", 4002 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", 4003 + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", 4004 + "cpu": [ 4005 + "x64" 4006 + ], 4007 + "dev": true, 4008 + "license": "LGPL-3.0-or-later", 4009 + "optional": true, 4010 + "os": [ 4011 + "linux" 4012 + ], 4013 + "funding": { 4014 + "url": "https://opencollective.com/libvips" 4015 + } 4016 + }, 4017 + "node_modules/wrangler/node_modules/@img/sharp-libvips-linuxmusl-arm64": { 4018 + "version": "1.2.4", 4019 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", 4020 + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", 4021 + "cpu": [ 4022 + "arm64" 4023 + ], 4024 + "dev": true, 4025 + "license": "LGPL-3.0-or-later", 4026 + "optional": true, 4027 + "os": [ 4028 + "linux" 4029 + ], 4030 + "funding": { 4031 + "url": "https://opencollective.com/libvips" 4032 + } 4033 + }, 4034 + "node_modules/wrangler/node_modules/@img/sharp-libvips-linuxmusl-x64": { 4035 + "version": "1.2.4", 4036 + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", 4037 + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", 4038 + "cpu": [ 4039 + "x64" 4040 + ], 4041 + "dev": true, 4042 + "license": "LGPL-3.0-or-later", 4043 + "optional": true, 4044 + "os": [ 4045 + "linux" 4046 + ], 4047 + "funding": { 4048 + "url": "https://opencollective.com/libvips" 4049 + } 4050 + }, 4051 + "node_modules/wrangler/node_modules/@img/sharp-linux-arm": { 4052 + "version": "0.34.5", 4053 + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", 4054 + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", 4055 + "cpu": [ 4056 + "arm" 4057 + ], 4058 + "dev": true, 4059 + "license": "Apache-2.0", 4060 + "optional": true, 4061 + "os": [ 4062 + "linux" 4063 + ], 4064 + "engines": { 4065 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 4066 + }, 4067 + "funding": { 4068 + "url": "https://opencollective.com/libvips" 4069 + }, 4070 + "optionalDependencies": { 4071 + "@img/sharp-libvips-linux-arm": "1.2.4" 4072 + } 4073 + }, 4074 + "node_modules/wrangler/node_modules/@img/sharp-linux-arm64": { 4075 + "version": "0.34.5", 4076 + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", 4077 + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", 4078 + "cpu": [ 4079 + "arm64" 4080 + ], 4081 + "dev": true, 4082 + "license": "Apache-2.0", 4083 + "optional": true, 4084 + "os": [ 4085 + "linux" 4086 + ], 4087 + "engines": { 4088 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 4089 + }, 4090 + "funding": { 4091 + "url": "https://opencollective.com/libvips" 4092 + }, 4093 + "optionalDependencies": { 4094 + "@img/sharp-libvips-linux-arm64": "1.2.4" 4095 + } 4096 + }, 4097 + "node_modules/wrangler/node_modules/@img/sharp-linux-s390x": { 4098 + "version": "0.34.5", 4099 + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", 4100 + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", 4101 + "cpu": [ 4102 + "s390x" 4103 + ], 4104 + "dev": true, 4105 + "license": "Apache-2.0", 4106 + "optional": true, 4107 + "os": [ 4108 + "linux" 4109 + ], 4110 + "engines": { 4111 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 4112 + }, 4113 + "funding": { 4114 + "url": "https://opencollective.com/libvips" 4115 + }, 4116 + "optionalDependencies": { 4117 + "@img/sharp-libvips-linux-s390x": "1.2.4" 4118 + } 4119 + }, 4120 + "node_modules/wrangler/node_modules/@img/sharp-linux-x64": { 4121 + "version": "0.34.5", 4122 + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", 4123 + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", 4124 + "cpu": [ 4125 + "x64" 4126 + ], 4127 + "dev": true, 4128 + "license": "Apache-2.0", 4129 + "optional": true, 4130 + "os": [ 4131 + "linux" 4132 + ], 4133 + "engines": { 4134 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 4135 + }, 4136 + "funding": { 4137 + "url": "https://opencollective.com/libvips" 4138 + }, 4139 + "optionalDependencies": { 4140 + "@img/sharp-libvips-linux-x64": "1.2.4" 4141 + } 4142 + }, 4143 + "node_modules/wrangler/node_modules/@img/sharp-linuxmusl-arm64": { 4144 + "version": "0.34.5", 4145 + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", 4146 + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", 4147 + "cpu": [ 4148 + "arm64" 4149 + ], 4150 + "dev": true, 4151 + "license": "Apache-2.0", 4152 + "optional": true, 4153 + "os": [ 4154 + "linux" 4155 + ], 4156 + "engines": { 4157 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 4158 + }, 4159 + "funding": { 4160 + "url": "https://opencollective.com/libvips" 4161 + }, 4162 + "optionalDependencies": { 4163 + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" 4164 + } 4165 + }, 4166 + "node_modules/wrangler/node_modules/@img/sharp-linuxmusl-x64": { 4167 + "version": "0.34.5", 4168 + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", 4169 + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", 4170 + "cpu": [ 4171 + "x64" 4172 + ], 4173 + "dev": true, 4174 + "license": "Apache-2.0", 4175 + "optional": true, 4176 + "os": [ 4177 + "linux" 4178 + ], 4179 + "engines": { 4180 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 4181 + }, 4182 + "funding": { 4183 + "url": "https://opencollective.com/libvips" 4184 + }, 4185 + "optionalDependencies": { 4186 + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" 4187 + } 4188 + }, 4189 + "node_modules/wrangler/node_modules/@img/sharp-wasm32": { 4190 + "version": "0.34.5", 4191 + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", 4192 + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", 4193 + "cpu": [ 4194 + "wasm32" 4195 + ], 4196 + "dev": true, 4197 + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", 4198 + "optional": true, 4199 + "dependencies": { 4200 + "@emnapi/runtime": "^1.7.0" 4201 + }, 4202 + "engines": { 4203 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 4204 + }, 4205 + "funding": { 4206 + "url": "https://opencollective.com/libvips" 4207 + } 4208 + }, 4209 + "node_modules/wrangler/node_modules/@img/sharp-win32-ia32": { 4210 + "version": "0.34.5", 4211 + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", 4212 + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", 4213 + "cpu": [ 4214 + "ia32" 4215 + ], 4216 + "dev": true, 4217 + "license": "Apache-2.0 AND LGPL-3.0-or-later", 4218 + "optional": true, 4219 + "os": [ 4220 + "win32" 4221 + ], 4222 + "engines": { 4223 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 4224 + }, 4225 + "funding": { 4226 + "url": "https://opencollective.com/libvips" 4227 + } 4228 + }, 4229 + "node_modules/wrangler/node_modules/@img/sharp-win32-x64": { 4230 + "version": "0.34.5", 4231 + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", 4232 + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", 4233 + "cpu": [ 4234 + "x64" 4235 + ], 4236 + "dev": true, 4237 + "license": "Apache-2.0 AND LGPL-3.0-or-later", 4238 + "optional": true, 4239 + "os": [ 4240 + "win32" 4241 + ], 4242 + "engines": { 4243 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 4244 + }, 4245 + "funding": { 4246 + "url": "https://opencollective.com/libvips" 4247 + } 4248 + }, 4249 + "node_modules/wrangler/node_modules/esbuild": { 4250 + "version": "0.27.0", 4251 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.0.tgz", 4252 + "integrity": "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==", 4253 + "dev": true, 4254 + "hasInstallScript": true, 4255 + "license": "MIT", 4256 + "bin": { 4257 + "esbuild": "bin/esbuild" 4258 + }, 4259 + "engines": { 4260 + "node": ">=18" 4261 + }, 4262 + "optionalDependencies": { 4263 + "@esbuild/aix-ppc64": "0.27.0", 4264 + "@esbuild/android-arm": "0.27.0", 4265 + "@esbuild/android-arm64": "0.27.0", 4266 + "@esbuild/android-x64": "0.27.0", 4267 + "@esbuild/darwin-arm64": "0.27.0", 4268 + "@esbuild/darwin-x64": "0.27.0", 4269 + "@esbuild/freebsd-arm64": "0.27.0", 4270 + "@esbuild/freebsd-x64": "0.27.0", 4271 + "@esbuild/linux-arm": "0.27.0", 4272 + "@esbuild/linux-arm64": "0.27.0", 4273 + "@esbuild/linux-ia32": "0.27.0", 4274 + "@esbuild/linux-loong64": "0.27.0", 4275 + "@esbuild/linux-mips64el": "0.27.0", 4276 + "@esbuild/linux-ppc64": "0.27.0", 4277 + "@esbuild/linux-riscv64": "0.27.0", 4278 + "@esbuild/linux-s390x": "0.27.0", 4279 + "@esbuild/linux-x64": "0.27.0", 4280 + "@esbuild/netbsd-arm64": "0.27.0", 4281 + "@esbuild/netbsd-x64": "0.27.0", 4282 + "@esbuild/openbsd-arm64": "0.27.0", 4283 + "@esbuild/openbsd-x64": "0.27.0", 4284 + "@esbuild/openharmony-arm64": "0.27.0", 4285 + "@esbuild/sunos-x64": "0.27.0", 4286 + "@esbuild/win32-arm64": "0.27.0", 4287 + "@esbuild/win32-ia32": "0.27.0", 4288 + "@esbuild/win32-x64": "0.27.0" 4289 + } 4290 + }, 4291 + "node_modules/wrangler/node_modules/miniflare": { 4292 + "version": "4.20260120.0", 4293 + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260120.0.tgz", 4294 + "integrity": "sha512-XXZyE2pDKMtP5OLuv0LPHEAzIYhov4jrYjcqrhhqtxGGtXneWOHvXIPo+eV8sqwqWd3R7j4DlEKcyb+87BR49Q==", 4295 + "dev": true, 4296 + "license": "MIT", 4297 + "dependencies": { 4298 + "@cspotcode/source-map-support": "0.8.1", 4299 + "sharp": "^0.34.5", 4300 + "undici": "7.18.2", 4301 + "workerd": "1.20260120.0", 4302 + "ws": "8.18.0", 4303 + "youch": "4.1.0-beta.10", 4304 + "zod": "^3.25.76" 4305 + }, 4306 + "bin": { 4307 + "miniflare": "bootstrap.js" 4308 + }, 4309 + "engines": { 4310 + "node": ">=18.0.0" 4311 + } 4312 + }, 4313 + "node_modules/wrangler/node_modules/sharp": { 4314 + "version": "0.34.5", 4315 + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", 4316 + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", 4317 + "dev": true, 4318 + "hasInstallScript": true, 4319 + "license": "Apache-2.0", 4320 + "dependencies": { 4321 + "@img/colour": "^1.0.0", 4322 + "detect-libc": "^2.1.2", 4323 + "semver": "^7.7.3" 4324 + }, 4325 + "engines": { 4326 + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 4327 + }, 4328 + "funding": { 4329 + "url": "https://opencollective.com/libvips" 4330 + }, 4331 + "optionalDependencies": { 4332 + "@img/sharp-darwin-arm64": "0.34.5", 4333 + "@img/sharp-darwin-x64": "0.34.5", 4334 + "@img/sharp-libvips-darwin-arm64": "1.2.4", 4335 + "@img/sharp-libvips-darwin-x64": "1.2.4", 4336 + "@img/sharp-libvips-linux-arm": "1.2.4", 4337 + "@img/sharp-libvips-linux-arm64": "1.2.4", 4338 + "@img/sharp-libvips-linux-ppc64": "1.2.4", 4339 + "@img/sharp-libvips-linux-riscv64": "1.2.4", 4340 + "@img/sharp-libvips-linux-s390x": "1.2.4", 4341 + "@img/sharp-libvips-linux-x64": "1.2.4", 4342 + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", 4343 + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", 4344 + "@img/sharp-linux-arm": "0.34.5", 4345 + "@img/sharp-linux-arm64": "0.34.5", 4346 + "@img/sharp-linux-ppc64": "0.34.5", 4347 + "@img/sharp-linux-riscv64": "0.34.5", 4348 + "@img/sharp-linux-s390x": "0.34.5", 4349 + "@img/sharp-linux-x64": "0.34.5", 4350 + "@img/sharp-linuxmusl-arm64": "0.34.5", 4351 + "@img/sharp-linuxmusl-x64": "0.34.5", 4352 + "@img/sharp-wasm32": "0.34.5", 4353 + "@img/sharp-win32-arm64": "0.34.5", 4354 + "@img/sharp-win32-ia32": "0.34.5", 4355 + "@img/sharp-win32-x64": "0.34.5" 4356 + } 4357 + }, 4358 + "node_modules/wrangler/node_modules/undici": { 4359 + "version": "7.18.2", 4360 + "resolved": "https://registry.npmjs.org/undici/-/undici-7.18.2.tgz", 4361 + "integrity": "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==", 4362 + "dev": true, 4363 + "license": "MIT", 4364 + "engines": { 4365 + "node": ">=20.18.1" 4366 + } 4367 + }, 4368 + "node_modules/wrangler/node_modules/workerd": { 4369 + "version": "1.20260120.0", 4370 + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260120.0.tgz", 4371 + "integrity": "sha512-R6X/VQOkwLTBGLp4VRUwLQZZVxZ9T9J8pGiJ6GQUMaRkY7TVWrCSkVfoNMM1/YyFsY5UYhhPoQe5IehnhZ3Pdw==", 4372 + "dev": true, 4373 + "hasInstallScript": true, 4374 + "license": "Apache-2.0", 4375 + "peer": true, 4376 + "bin": { 4377 + "workerd": "bin/workerd" 4378 + }, 4379 + "engines": { 4380 + "node": ">=16" 4381 + }, 4382 + "optionalDependencies": { 4383 + "@cloudflare/workerd-darwin-64": "1.20260120.0", 4384 + "@cloudflare/workerd-darwin-arm64": "1.20260120.0", 4385 + "@cloudflare/workerd-linux-64": "1.20260120.0", 4386 + "@cloudflare/workerd-linux-arm64": "1.20260120.0", 4387 + "@cloudflare/workerd-windows-64": "1.20260120.0" 4388 + } 4389 + }, 4390 + "node_modules/ws": { 4391 + "version": "8.18.0", 4392 + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", 4393 + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", 4394 + "dev": true, 4395 + "license": "MIT", 4396 + "engines": { 4397 + "node": ">=10.0.0" 4398 + }, 4399 + "peerDependencies": { 4400 + "bufferutil": "^4.0.1", 4401 + "utf-8-validate": ">=5.0.2" 4402 + }, 4403 + "peerDependenciesMeta": { 4404 + "bufferutil": { 4405 + "optional": true 4406 + }, 4407 + "utf-8-validate": { 4408 + "optional": true 4409 + } 4410 + } 4411 + }, 4412 + "node_modules/youch": { 4413 + "version": "4.1.0-beta.10", 4414 + "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.10.tgz", 4415 + "integrity": "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==", 4416 + "dev": true, 4417 + "license": "MIT", 4418 + "dependencies": { 4419 + "@poppinss/colors": "^4.1.5", 4420 + "@poppinss/dumper": "^0.6.4", 4421 + "@speed-highlight/core": "^1.2.7", 4422 + "cookie": "^1.0.2", 4423 + "youch-core": "^0.3.3" 4424 + } 4425 + }, 4426 + "node_modules/youch-core": { 4427 + "version": "0.3.3", 4428 + "resolved": "https://registry.npmjs.org/youch-core/-/youch-core-0.3.3.tgz", 4429 + "integrity": "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==", 4430 + "dev": true, 4431 + "license": "MIT", 4432 + "dependencies": { 4433 + "@poppinss/exception": "^1.2.2", 4434 + "error-stack-parser-es": "^1.0.5" 4435 + } 4436 + }, 4437 + "node_modules/zod": { 4438 + "version": "3.25.76", 4439 + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", 4440 + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", 4441 + "dev": true, 4442 + "license": "MIT", 4443 + "funding": { 4444 + "url": "https://github.com/sponsors/colinhacks" 4445 + } 4446 + } 4447 + } 4448 + }
+16
avatar/package.json
···
··· 1 + { 2 + "name": "avatar", 3 + "version": "0.0.0", 4 + "private": true, 5 + "scripts": { 6 + "deploy": "wrangler deploy", 7 + "dev": "wrangler dev", 8 + "start": "wrangler dev", 9 + "test": "vitest" 10 + }, 11 + "devDependencies": { 12 + "@cloudflare/vitest-pool-workers": "^0.8.19", 13 + "vitest": "~3.0.7", 14 + "wrangler": "^4.14.1" 15 + } 16 + }
+134
avatar/worker.js
···
··· 1 + export default { 2 + async fetch(request, env) { 3 + const stringToColor = (str) => { 4 + let hash = 0; 5 + for (let i = 0; i < str.length; i++) { 6 + hash = str.charCodeAt(i) + ((hash << 5) - hash); 7 + } 8 + let color = "#"; 9 + for (let i = 0; i < 3; i++) { 10 + const value = (hash >> (i * 8)) & 0xff; 11 + color += ("00" + value.toString(16)).substr(-2); 12 + } 13 + return color; 14 + }; 15 + 16 + const url = new URL(request.url); 17 + const { pathname, searchParams } = url; 18 + 19 + if (!pathname || pathname === "/") { 20 + return new Response(`This is Margin's avatar service. It fetches your pretty avatar from Bluesky and caches it on Cloudflare. 21 + You can't use this directly unfortunately since all requests are signed and may only originate from the appview.`); 22 + } 23 + 24 + const size = searchParams.get("size"); 25 + const resizeToTiny = size === "tiny"; 26 + 27 + const cache = caches.default; 28 + let cacheKey = request.url; 29 + let response = await cache.match(cacheKey); 30 + if (response) return response; 31 + 32 + const pathParts = pathname.slice(1).split("/"); 33 + if (pathParts.length < 2) { 34 + return new Response("Bad URL", { status: 400 }); 35 + } 36 + 37 + const [signatureHex, actor] = pathParts; 38 + const decodedActor = decodeURIComponent(actor); 39 + const actorBytes = new TextEncoder().encode(decodedActor); 40 + 41 + const key = await crypto.subtle.importKey( 42 + "raw", 43 + new TextEncoder().encode(env.AVATAR_SHARED_SECRET), 44 + { name: "HMAC", hash: "SHA-256" }, 45 + false, 46 + ["sign", "verify"], 47 + ); 48 + 49 + const sigBytes = Uint8Array.from( 50 + signatureHex.match(/.{2}/g).map((b) => parseInt(b, 16)), 51 + ); 52 + const valid = await crypto.subtle.verify("HMAC", key, sigBytes, actorBytes); 53 + 54 + if (!valid) { 55 + return new Response("Invalid signature", { status: 403 }); 56 + } 57 + 58 + try { 59 + const profileResponse = await fetch( 60 + `https://public.api.bsky.app/xrpc/app.bsky.actor.getProfile?actor=${decodedActor}`, 61 + ); 62 + 63 + let avatarUrl = null; 64 + if (profileResponse.ok) { 65 + const profile = await profileResponse.json(); 66 + avatarUrl = profile.avatar; 67 + } 68 + 69 + if (!avatarUrl) { 70 + const bgColor = stringToColor(decodedActor); 71 + const sizePx = resizeToTiny ? 32 : 128; 72 + const svg = `<svg width="${sizePx}" height="${sizePx}" viewBox="0 0 ${sizePx} ${sizePx}" xmlns="http://www.w3.org/2000/svg"><rect width="${sizePx}" height="${sizePx}" fill="${bgColor}"/></svg>`; 73 + const svgData = new TextEncoder().encode(svg); 74 + 75 + response = new Response(svgData, { 76 + headers: { 77 + "Content-Type": "image/svg+xml", 78 + "Cache-Control": "public, max-age=43200", 79 + "Access-Control-Allow-Origin": "*", 80 + }, 81 + }); 82 + await cache.put(cacheKey, response.clone()); 83 + return response; 84 + } 85 + 86 + let avatarResponse; 87 + if (resizeToTiny) { 88 + avatarResponse = await fetch(avatarUrl, { 89 + cf: { 90 + image: { 91 + width: 32, 92 + height: 32, 93 + fit: "cover", 94 + format: "webp", 95 + }, 96 + }, 97 + }); 98 + } else { 99 + avatarResponse = await fetch(avatarUrl); 100 + } 101 + 102 + if (!avatarResponse.ok) { 103 + const bgColor = stringToColor(decodedActor); 104 + const sizePx = resizeToTiny ? 32 : 128; 105 + const svg = `<svg width="${sizePx}" height="${sizePx}" viewBox="0 0 ${sizePx} ${sizePx}" xmlns="http://www.w3.org/2000/svg"><rect width="${sizePx}" height="${sizePx}" fill="${bgColor}"/></svg>`; 106 + return new Response(svg, { 107 + headers: { 108 + "Content-Type": "image/svg+xml", 109 + "Access-Control-Allow-Origin": "*", 110 + }, 111 + }); 112 + } 113 + 114 + const avatarData = await avatarResponse.arrayBuffer(); 115 + const contentType = 116 + avatarResponse.headers.get("content-type") || "image/jpeg"; 117 + 118 + response = new Response(avatarData, { 119 + headers: { 120 + "Content-Type": contentType, 121 + "Cache-Control": "public, max-age=86400", 122 + "Access-Control-Allow-Origin": "*", 123 + }, 124 + }); 125 + 126 + await cache.put(cacheKey, response.clone()); 127 + return response; 128 + } catch (error) { 129 + return new Response(`error fetching avatar: ${error.message}`, { 130 + status: 500, 131 + }); 132 + } 133 + }, 134 + };
+10
avatar/wrangler.toml
···
··· 1 + name = "margin-avatar-proxy" 2 + main = "worker.js" 3 + compatibility_date = "2026-01-25" 4 + 5 + [observability] 6 + enabled = true 7 + 8 + [[routes]] 9 + pattern = "avatars.margin.at" 10 + custom_domain = true
+14 -77
backend/internal/api/avatar.go
··· 1 package api 2 3 import ( 4 - "encoding/json" 5 - "io" 6 "net/http" 7 "net/url" 8 "os" 9 - "sync" 10 - "time" 11 12 "github.com/go-chi/chi/v5" 13 ) 14 15 - type avatarCache struct { 16 - url string 17 - fetchedAt time.Time 18 - } 19 - 20 - var ( 21 - avatarCacheMu sync.RWMutex 22 - avatarCacheMap = make(map[string]avatarCache) 23 - avatarCacheTTL = 5 * time.Minute 24 - ) 25 - 26 func (h *Handler) HandleAvatarProxy(w http.ResponseWriter, r *http.Request) { 27 did := chi.URLParam(r, "did") 28 if did == "" { ··· 34 did = decoded 35 } 36 37 - avatarURL := getAvatarURL(did) 38 - if avatarURL == "" { 39 - http.Error(w, "Avatar not found", http.StatusNotFound) 40 - return 41 } 42 43 - client := &http.Client{Timeout: 10 * time.Second} 44 - resp, err := client.Get(avatarURL) 45 - if err != nil { 46 - http.Error(w, "Failed to fetch avatar", http.StatusBadGateway) 47 return 48 } 49 - defer resp.Body.Close() 50 51 - if resp.StatusCode != http.StatusOK { 52 - http.Error(w, "Avatar not available", http.StatusNotFound) 53 - return 54 - } 55 - 56 - contentType := resp.Header.Get("Content-Type") 57 - if contentType == "" { 58 - contentType = "image/jpeg" 59 - } 60 - 61 - w.Header().Set("Content-Type", contentType) 62 - w.Header().Set("Cache-Control", "public, max-age=3600") 63 - w.Header().Set("Access-Control-Allow-Origin", "*") 64 - 65 - io.Copy(w, resp.Body) 66 - } 67 - 68 - func getAvatarURL(did string) string { 69 - avatarCacheMu.RLock() 70 - if cached, ok := avatarCacheMap[did]; ok && time.Since(cached.fetchedAt) < avatarCacheTTL { 71 - avatarCacheMu.RUnlock() 72 - return cached.url 73 - } 74 - avatarCacheMu.RUnlock() 75 - 76 - q := url.Values{} 77 - q.Add("actor", did) 78 - 79 - resp, err := http.Get("https://public.api.bsky.app/xrpc/app.bsky.actor.getProfile?" + q.Encode()) 80 - if err != nil { 81 - return "" 82 - } 83 - defer resp.Body.Close() 84 - 85 - if resp.StatusCode != 200 { 86 - return "" 87 - } 88 - 89 - var profile struct { 90 - Avatar string `json:"avatar"` 91 - } 92 - if err := json.NewDecoder(resp.Body).Decode(&profile); err != nil { 93 - return "" 94 - } 95 - 96 - avatarCacheMu.Lock() 97 - avatarCacheMap[did] = avatarCache{ 98 - url: profile.Avatar, 99 - fetchedAt: time.Now(), 100 - } 101 - avatarCacheMu.Unlock() 102 - 103 - return profile.Avatar 104 } 105 106 func getProxiedAvatarURL(did, originalURL string) string {
··· 1 package api 2 3 import ( 4 + "crypto/hmac" 5 + "crypto/sha256" 6 + "encoding/hex" 7 + "fmt" 8 "net/http" 9 "net/url" 10 "os" 11 12 "github.com/go-chi/chi/v5" 13 ) 14 15 func (h *Handler) HandleAvatarProxy(w http.ResponseWriter, r *http.Request) { 16 did := chi.URLParam(r, "did") 17 if did == "" { ··· 23 did = decoded 24 } 25 26 + cdnURL := os.Getenv("AVATAR_CDN_URL") 27 + if cdnURL == "" { 28 + cdnURL = "https://avatars.margin.at" 29 } 30 31 + secret := os.Getenv("AVATAR_SHARED_SECRET") 32 + if secret != "" { 33 + mac := hmac.New(sha256.New, []byte(secret)) 34 + mac.Write([]byte(did)) 35 + sig := hex.EncodeToString(mac.Sum(nil)) 36 + http.Redirect(w, r, fmt.Sprintf("%s/%s/%s", cdnURL, sig, did), http.StatusMovedPermanently) 37 return 38 } 39 40 + http.Redirect(w, r, fmt.Sprintf("%s/unsigned/%s", cdnURL, did), http.StatusMovedPermanently) 41 } 42 43 func getProxiedAvatarURL(did, originalURL string) string {
+14 -3
backend/internal/db/db.go
··· 141 } 142 143 if driver == "sqlite3" { 144 - db.SetMaxOpenConns(1) 145 } else { 146 - db.SetMaxOpenConns(25) 147 - db.SetMaxIdleConns(5) 148 } 149 150 if err := db.Ping(); err != nil {
··· 141 } 142 143 if driver == "sqlite3" { 144 + if _, err := db.Exec("PRAGMA journal_mode=WAL;"); err != nil { 145 + return nil, fmt.Errorf("failed to set WAL mode: %w", err) 146 + } 147 + db.Exec("PRAGMA synchronous=NORMAL;") 148 + db.Exec("PRAGMA busy_timeout=5000;") 149 + db.Exec("PRAGMA cache_size=-2000;") 150 + db.Exec("PRAGMA foreign_keys=ON;") 151 + 152 + db.SetMaxOpenConns(25) 153 + db.SetMaxIdleConns(25) 154 + db.SetConnMaxLifetime(5 * time.Minute) 155 } else { 156 + db.SetMaxOpenConns(50) 157 + db.SetMaxIdleConns(25) 158 + db.SetConnMaxLifetime(10 * time.Minute) 159 } 160 161 if err := db.Ping(); err != nil {
+5
backend/internal/middleware/logger.go
··· 4 "log" 5 "net/http" 6 "net/url" 7 "time" 8 9 "github.com/go-chi/chi/v5/middleware" ··· 37 38 for _, key := range sensitiveKeys { 39 if q.Has(key) { 40 q.Set(key, "[REDACTED]") 41 } 42 }
··· 4 "log" 5 "net/http" 6 "net/url" 7 + "strings" 8 "time" 9 10 "github.com/go-chi/chi/v5/middleware" ··· 38 39 for _, key := range sensitiveKeys { 40 if q.Has(key) { 41 + val := q.Get(key) 42 + if strings.Contains(val, "margin.at") { 43 + continue 44 + } 45 q.Set(key, "[REDACTED]") 46 } 47 }