forked from tangled.org/core
this repo has no description

avatar: cloudflare worker to cache bsky avatars

anirudh.fi eab2518d 7edbc446

verified
+172
avatar/.gitignore
···
+
# Logs
+
+
logs
+
_.log
+
npm-debug.log_
+
yarn-debug.log*
+
yarn-error.log*
+
lerna-debug.log*
+
.pnpm-debug.log*
+
+
# Diagnostic reports (https://nodejs.org/api/report.html)
+
+
report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
+
+
# Runtime data
+
+
pids
+
_.pid
+
_.seed
+
\*.pid.lock
+
+
# Directory for instrumented libs generated by jscoverage/JSCover
+
+
lib-cov
+
+
# Coverage directory used by tools like istanbul
+
+
coverage
+
\*.lcov
+
+
# nyc test coverage
+
+
.nyc_output
+
+
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+
+
.grunt
+
+
# Bower dependency directory (https://bower.io/)
+
+
bower_components
+
+
# node-waf configuration
+
+
.lock-wscript
+
+
# Compiled binary addons (https://nodejs.org/api/addons.html)
+
+
build/Release
+
+
# Dependency directories
+
+
node_modules/
+
jspm_packages/
+
+
# Snowpack dependency directory (https://snowpack.dev/)
+
+
web_modules/
+
+
# TypeScript cache
+
+
\*.tsbuildinfo
+
+
# Optional npm cache directory
+
+
.npm
+
+
# Optional eslint cache
+
+
.eslintcache
+
+
# Optional stylelint cache
+
+
.stylelintcache
+
+
# Microbundle cache
+
+
.rpt2_cache/
+
.rts2_cache_cjs/
+
.rts2_cache_es/
+
.rts2_cache_umd/
+
+
# Optional REPL history
+
+
.node_repl_history
+
+
# Output of 'npm pack'
+
+
\*.tgz
+
+
# Yarn Integrity file
+
+
.yarn-integrity
+
+
# dotenv environment variable files
+
+
.env
+
.env.development.local
+
.env.test.local
+
.env.production.local
+
.env.local
+
+
# parcel-bundler cache (https://parceljs.org/)
+
+
.cache
+
.parcel-cache
+
+
# Next.js build output
+
+
.next
+
out
+
+
# Nuxt.js build / generate output
+
+
.nuxt
+
dist
+
+
# Gatsby files
+
+
.cache/
+
+
# Comment in the public line in if your project uses Gatsby and not Next.js
+
+
# https://nextjs.org/blog/next-9-1#public-directory-support
+
+
# public
+
+
# vuepress build output
+
+
.vuepress/dist
+
+
# vuepress v2.x temp and cache directory
+
+
.temp
+
.cache
+
+
# Docusaurus cache and generated files
+
+
.docusaurus
+
+
# Serverless directories
+
+
.serverless/
+
+
# FuseBox cache
+
+
.fusebox/
+
+
# DynamoDB Local files
+
+
.dynamodb/
+
+
# TernJS port file
+
+
.tern-port
+
+
# Stores VSCode versions used for testing VSCode extensions
+
+
.vscode-test
+
+
# yarn v2
+
+
.yarn/cache
+
.yarn/unplugged
+
.yarn/build-state.yml
+
.yarn/install-state.gz
+
.pnp.\*
+
+
# wrangler project
+
+
.dev.vars
+
.wrangler/
+3024
avatar/package-lock.json
···
+
{
+
"name": "avatar",
+
"version": "0.0.0",
+
"lockfileVersion": 3,
+
"requires": true,
+
"packages": {
+
"": {
+
"name": "avatar",
+
"version": "0.0.0",
+
"devDependencies": {
+
"@cloudflare/vitest-pool-workers": "^0.8.19",
+
"vitest": "~3.0.7",
+
"wrangler": "^4.14.1"
+
}
+
},
+
"node_modules/@cloudflare/kv-asset-handler": {
+
"version": "0.4.0",
+
"resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.4.0.tgz",
+
"integrity": "sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==",
+
"dev": true,
+
"license": "MIT OR Apache-2.0",
+
"dependencies": {
+
"mime": "^3.0.0"
+
},
+
"engines": {
+
"node": ">=18.0.0"
+
}
+
},
+
"node_modules/@cloudflare/unenv-preset": {
+
"version": "2.3.1",
+
"resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.3.1.tgz",
+
"integrity": "sha512-Xq57Qd+ADpt6hibcVBO0uLG9zzRgyRhfCUgBT9s+g3+3Ivg5zDyVgLFy40ES1VdNcu8rPNSivm9A+kGP5IVaPg==",
+
"dev": true,
+
"license": "MIT OR Apache-2.0",
+
"peerDependencies": {
+
"unenv": "2.0.0-rc.15",
+
"workerd": "^1.20250320.0"
+
},
+
"peerDependenciesMeta": {
+
"workerd": {
+
"optional": true
+
}
+
}
+
},
+
"node_modules/@cloudflare/vitest-pool-workers": {
+
"version": "0.8.24",
+
"resolved": "https://registry.npmjs.org/@cloudflare/vitest-pool-workers/-/vitest-pool-workers-0.8.24.tgz",
+
"integrity": "sha512-wT2PABJQ9YLYWrVu4CRZOjvmjHkdbMyLTZPU9n/7JEMM3pgG8dY41F1Rj31UsXRQaXX39A/CTPGlk58dcMUysA==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"birpc": "0.2.14",
+
"cjs-module-lexer": "^1.2.3",
+
"devalue": "^4.3.0",
+
"miniflare": "4.20250428.1",
+
"semver": "^7.7.1",
+
"wrangler": "4.14.1",
+
"zod": "^3.22.3"
+
},
+
"peerDependencies": {
+
"@vitest/runner": "2.0.x - 3.1.x",
+
"@vitest/snapshot": "2.0.x - 3.1.x",
+
"vitest": "2.0.x - 3.1.x"
+
}
+
},
+
"node_modules/@cloudflare/workerd-darwin-64": {
+
"version": "1.20250428.0",
+
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250428.0.tgz",
+
"integrity": "sha512-6nVe9oV4Hdec6ctzMtW80TiDvNTd2oFPi3VsKqSDVaJSJbL+4b6seyJ7G/UEPI+si6JhHBSLV2/9lNXNGLjClA==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"os": [
+
"darwin"
+
],
+
"engines": {
+
"node": ">=16"
+
}
+
},
+
"node_modules/@cloudflare/workerd-darwin-arm64": {
+
"version": "1.20250428.0",
+
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250428.0.tgz",
+
"integrity": "sha512-/TB7bh7SIJ5f+6r4PHsAz7+9Qal/TK1cJuKFkUno1kqGlZbdrMwH0ATYwlWC/nBFeu2FB3NUolsTntEuy23hnQ==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"os": [
+
"darwin"
+
],
+
"engines": {
+
"node": ">=16"
+
}
+
},
+
"node_modules/@cloudflare/workerd-linux-64": {
+
"version": "1.20250428.0",
+
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250428.0.tgz",
+
"integrity": "sha512-9eCbj+R3CKqpiXP6DfAA20DxKge+OTj7Hyw3ZewiEhWH9INIHiJwJQYybu4iq9kJEGjnGvxgguLFjSCWm26hgg==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=16"
+
}
+
},
+
"node_modules/@cloudflare/workerd-linux-arm64": {
+
"version": "1.20250428.0",
+
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250428.0.tgz",
+
"integrity": "sha512-D9NRBnW46nl1EQsP13qfkYb5lbt4C6nxl38SBKY/NOcZAUoHzNB5K0GaK8LxvpkM7X/97ySojlMfR5jh5DNXYQ==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=16"
+
}
+
},
+
"node_modules/@cloudflare/workerd-windows-64": {
+
"version": "1.20250428.0",
+
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250428.0.tgz",
+
"integrity": "sha512-RQCRj28eitjKD0tmei6iFOuWqMuHMHdNGEigRmbkmuTlpbWHNAoHikgCzZQ/dkKDdatA76TmcpbyECNf31oaTA==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"os": [
+
"win32"
+
],
+
"engines": {
+
"node": ">=16"
+
}
+
},
+
"node_modules/@cspotcode/source-map-support": {
+
"version": "0.8.1",
+
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
+
"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"@jridgewell/trace-mapping": "0.3.9"
+
},
+
"engines": {
+
"node": ">=12"
+
}
+
},
+
"node_modules/@emnapi/runtime": {
+
"version": "1.4.3",
+
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz",
+
"integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==",
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"dependencies": {
+
"tslib": "^2.4.0"
+
}
+
},
+
"node_modules/@esbuild/aix-ppc64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz",
+
"integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==",
+
"cpu": [
+
"ppc64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"aix"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/android-arm": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz",
+
"integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==",
+
"cpu": [
+
"arm"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"android"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/android-arm64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz",
+
"integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"android"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/android-x64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz",
+
"integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"android"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/darwin-arm64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz",
+
"integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"darwin"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/darwin-x64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz",
+
"integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"darwin"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/freebsd-arm64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz",
+
"integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"freebsd"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/freebsd-x64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz",
+
"integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"freebsd"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/linux-arm": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz",
+
"integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==",
+
"cpu": [
+
"arm"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/linux-arm64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz",
+
"integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/linux-ia32": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz",
+
"integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==",
+
"cpu": [
+
"ia32"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/linux-loong64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz",
+
"integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==",
+
"cpu": [
+
"loong64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/linux-mips64el": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz",
+
"integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==",
+
"cpu": [
+
"mips64el"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/linux-ppc64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz",
+
"integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==",
+
"cpu": [
+
"ppc64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/linux-riscv64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz",
+
"integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==",
+
"cpu": [
+
"riscv64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/linux-s390x": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz",
+
"integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==",
+
"cpu": [
+
"s390x"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/linux-x64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz",
+
"integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/netbsd-arm64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz",
+
"integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"netbsd"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/netbsd-x64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz",
+
"integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"netbsd"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/openbsd-arm64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz",
+
"integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"openbsd"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/openbsd-x64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz",
+
"integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"openbsd"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/sunos-x64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz",
+
"integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"sunos"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/win32-arm64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz",
+
"integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"win32"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/win32-ia32": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz",
+
"integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==",
+
"cpu": [
+
"ia32"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"win32"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@esbuild/win32-x64": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz",
+
"integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"win32"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/@fastify/busboy": {
+
"version": "2.1.1",
+
"resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
+
"integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">=14"
+
}
+
},
+
"node_modules/@img/sharp-darwin-arm64": {
+
"version": "0.33.5",
+
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz",
+
"integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"os": [
+
"darwin"
+
],
+
"engines": {
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
},
+
"optionalDependencies": {
+
"@img/sharp-libvips-darwin-arm64": "1.0.4"
+
}
+
},
+
"node_modules/@img/sharp-darwin-x64": {
+
"version": "0.33.5",
+
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz",
+
"integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"os": [
+
"darwin"
+
],
+
"engines": {
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
},
+
"optionalDependencies": {
+
"@img/sharp-libvips-darwin-x64": "1.0.4"
+
}
+
},
+
"node_modules/@img/sharp-libvips-darwin-arm64": {
+
"version": "1.0.4",
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz",
+
"integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "LGPL-3.0-or-later",
+
"optional": true,
+
"os": [
+
"darwin"
+
],
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
}
+
},
+
"node_modules/@img/sharp-libvips-darwin-x64": {
+
"version": "1.0.4",
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz",
+
"integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "LGPL-3.0-or-later",
+
"optional": true,
+
"os": [
+
"darwin"
+
],
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
}
+
},
+
"node_modules/@img/sharp-libvips-linux-arm": {
+
"version": "1.0.5",
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz",
+
"integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==",
+
"cpu": [
+
"arm"
+
],
+
"dev": true,
+
"license": "LGPL-3.0-or-later",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
}
+
},
+
"node_modules/@img/sharp-libvips-linux-arm64": {
+
"version": "1.0.4",
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz",
+
"integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "LGPL-3.0-or-later",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
}
+
},
+
"node_modules/@img/sharp-libvips-linux-s390x": {
+
"version": "1.0.4",
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz",
+
"integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==",
+
"cpu": [
+
"s390x"
+
],
+
"dev": true,
+
"license": "LGPL-3.0-or-later",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
}
+
},
+
"node_modules/@img/sharp-libvips-linux-x64": {
+
"version": "1.0.4",
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz",
+
"integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "LGPL-3.0-or-later",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
}
+
},
+
"node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+
"version": "1.0.4",
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz",
+
"integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "LGPL-3.0-or-later",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
}
+
},
+
"node_modules/@img/sharp-libvips-linuxmusl-x64": {
+
"version": "1.0.4",
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz",
+
"integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "LGPL-3.0-or-later",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
}
+
},
+
"node_modules/@img/sharp-linux-arm": {
+
"version": "0.33.5",
+
"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz",
+
"integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==",
+
"cpu": [
+
"arm"
+
],
+
"dev": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
},
+
"optionalDependencies": {
+
"@img/sharp-libvips-linux-arm": "1.0.5"
+
}
+
},
+
"node_modules/@img/sharp-linux-arm64": {
+
"version": "0.33.5",
+
"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz",
+
"integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
},
+
"optionalDependencies": {
+
"@img/sharp-libvips-linux-arm64": "1.0.4"
+
}
+
},
+
"node_modules/@img/sharp-linux-s390x": {
+
"version": "0.33.5",
+
"resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz",
+
"integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==",
+
"cpu": [
+
"s390x"
+
],
+
"dev": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
},
+
"optionalDependencies": {
+
"@img/sharp-libvips-linux-s390x": "1.0.4"
+
}
+
},
+
"node_modules/@img/sharp-linux-x64": {
+
"version": "0.33.5",
+
"resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz",
+
"integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
},
+
"optionalDependencies": {
+
"@img/sharp-libvips-linux-x64": "1.0.4"
+
}
+
},
+
"node_modules/@img/sharp-linuxmusl-arm64": {
+
"version": "0.33.5",
+
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz",
+
"integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
},
+
"optionalDependencies": {
+
"@img/sharp-libvips-linuxmusl-arm64": "1.0.4"
+
}
+
},
+
"node_modules/@img/sharp-linuxmusl-x64": {
+
"version": "0.33.5",
+
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz",
+
"integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
},
+
"optionalDependencies": {
+
"@img/sharp-libvips-linuxmusl-x64": "1.0.4"
+
}
+
},
+
"node_modules/@img/sharp-wasm32": {
+
"version": "0.33.5",
+
"resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz",
+
"integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==",
+
"cpu": [
+
"wasm32"
+
],
+
"dev": true,
+
"license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
+
"optional": true,
+
"dependencies": {
+
"@emnapi/runtime": "^1.2.0"
+
},
+
"engines": {
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
}
+
},
+
"node_modules/@img/sharp-win32-ia32": {
+
"version": "0.33.5",
+
"resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz",
+
"integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==",
+
"cpu": [
+
"ia32"
+
],
+
"dev": true,
+
"license": "Apache-2.0 AND LGPL-3.0-or-later",
+
"optional": true,
+
"os": [
+
"win32"
+
],
+
"engines": {
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
}
+
},
+
"node_modules/@img/sharp-win32-x64": {
+
"version": "0.33.5",
+
"resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz",
+
"integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "Apache-2.0 AND LGPL-3.0-or-later",
+
"optional": true,
+
"os": [
+
"win32"
+
],
+
"engines": {
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
}
+
},
+
"node_modules/@jridgewell/resolve-uri": {
+
"version": "3.1.2",
+
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">=6.0.0"
+
}
+
},
+
"node_modules/@jridgewell/sourcemap-codec": {
+
"version": "1.5.0",
+
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/@jridgewell/trace-mapping": {
+
"version": "0.3.9",
+
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"@jridgewell/resolve-uri": "^3.0.3",
+
"@jridgewell/sourcemap-codec": "^1.4.10"
+
}
+
},
+
"node_modules/@rollup/rollup-android-arm-eabi": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.1.tgz",
+
"integrity": "sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==",
+
"cpu": [
+
"arm"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"android"
+
]
+
},
+
"node_modules/@rollup/rollup-android-arm64": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.1.tgz",
+
"integrity": "sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"android"
+
]
+
},
+
"node_modules/@rollup/rollup-darwin-arm64": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.1.tgz",
+
"integrity": "sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"darwin"
+
]
+
},
+
"node_modules/@rollup/rollup-darwin-x64": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.1.tgz",
+
"integrity": "sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"darwin"
+
]
+
},
+
"node_modules/@rollup/rollup-freebsd-arm64": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.1.tgz",
+
"integrity": "sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"freebsd"
+
]
+
},
+
"node_modules/@rollup/rollup-freebsd-x64": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.1.tgz",
+
"integrity": "sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"freebsd"
+
]
+
},
+
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.1.tgz",
+
"integrity": "sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==",
+
"cpu": [
+
"arm"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
]
+
},
+
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.1.tgz",
+
"integrity": "sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==",
+
"cpu": [
+
"arm"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
]
+
},
+
"node_modules/@rollup/rollup-linux-arm64-gnu": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.1.tgz",
+
"integrity": "sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
]
+
},
+
"node_modules/@rollup/rollup-linux-arm64-musl": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.1.tgz",
+
"integrity": "sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
]
+
},
+
"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.1.tgz",
+
"integrity": "sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==",
+
"cpu": [
+
"loong64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
]
+
},
+
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.1.tgz",
+
"integrity": "sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==",
+
"cpu": [
+
"ppc64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
]
+
},
+
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.1.tgz",
+
"integrity": "sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==",
+
"cpu": [
+
"riscv64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
]
+
},
+
"node_modules/@rollup/rollup-linux-riscv64-musl": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.1.tgz",
+
"integrity": "sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==",
+
"cpu": [
+
"riscv64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
]
+
},
+
"node_modules/@rollup/rollup-linux-s390x-gnu": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.1.tgz",
+
"integrity": "sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==",
+
"cpu": [
+
"s390x"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
]
+
},
+
"node_modules/@rollup/rollup-linux-x64-gnu": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.1.tgz",
+
"integrity": "sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
]
+
},
+
"node_modules/@rollup/rollup-linux-x64-musl": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.1.tgz",
+
"integrity": "sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
]
+
},
+
"node_modules/@rollup/rollup-win32-arm64-msvc": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.1.tgz",
+
"integrity": "sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"win32"
+
]
+
},
+
"node_modules/@rollup/rollup-win32-ia32-msvc": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.1.tgz",
+
"integrity": "sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==",
+
"cpu": [
+
"ia32"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"win32"
+
]
+
},
+
"node_modules/@rollup/rollup-win32-x64-msvc": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.1.tgz",
+
"integrity": "sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"win32"
+
]
+
},
+
"node_modules/@types/estree": {
+
"version": "1.0.7",
+
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
+
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/@vitest/expect": {
+
"version": "3.0.9",
+
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.9.tgz",
+
"integrity": "sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"@vitest/spy": "3.0.9",
+
"@vitest/utils": "3.0.9",
+
"chai": "^5.2.0",
+
"tinyrainbow": "^2.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/vitest"
+
}
+
},
+
"node_modules/@vitest/mocker": {
+
"version": "3.0.9",
+
"resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.9.tgz",
+
"integrity": "sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"@vitest/spy": "3.0.9",
+
"estree-walker": "^3.0.3",
+
"magic-string": "^0.30.17"
+
},
+
"funding": {
+
"url": "https://opencollective.com/vitest"
+
},
+
"peerDependencies": {
+
"msw": "^2.4.9",
+
"vite": "^5.0.0 || ^6.0.0"
+
},
+
"peerDependenciesMeta": {
+
"msw": {
+
"optional": true
+
},
+
"vite": {
+
"optional": true
+
}
+
}
+
},
+
"node_modules/@vitest/pretty-format": {
+
"version": "3.1.2",
+
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.2.tgz",
+
"integrity": "sha512-R0xAiHuWeDjTSB3kQ3OQpT8Rx3yhdOAIm/JM4axXxnG7Q/fS8XUwggv/A4xzbQA+drYRjzkMnpYnOGAc4oeq8w==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"tinyrainbow": "^2.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/vitest"
+
}
+
},
+
"node_modules/@vitest/runner": {
+
"version": "3.0.9",
+
"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.9.tgz",
+
"integrity": "sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"@vitest/utils": "3.0.9",
+
"pathe": "^2.0.3"
+
},
+
"funding": {
+
"url": "https://opencollective.com/vitest"
+
}
+
},
+
"node_modules/@vitest/snapshot": {
+
"version": "3.0.9",
+
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.9.tgz",
+
"integrity": "sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"@vitest/pretty-format": "3.0.9",
+
"magic-string": "^0.30.17",
+
"pathe": "^2.0.3"
+
},
+
"funding": {
+
"url": "https://opencollective.com/vitest"
+
}
+
},
+
"node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": {
+
"version": "3.0.9",
+
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz",
+
"integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"tinyrainbow": "^2.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/vitest"
+
}
+
},
+
"node_modules/@vitest/spy": {
+
"version": "3.0.9",
+
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.9.tgz",
+
"integrity": "sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"tinyspy": "^3.0.2"
+
},
+
"funding": {
+
"url": "https://opencollective.com/vitest"
+
}
+
},
+
"node_modules/@vitest/utils": {
+
"version": "3.0.9",
+
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz",
+
"integrity": "sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"@vitest/pretty-format": "3.0.9",
+
"loupe": "^3.1.3",
+
"tinyrainbow": "^2.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/vitest"
+
}
+
},
+
"node_modules/@vitest/utils/node_modules/@vitest/pretty-format": {
+
"version": "3.0.9",
+
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz",
+
"integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"tinyrainbow": "^2.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/vitest"
+
}
+
},
+
"node_modules/acorn": {
+
"version": "8.14.0",
+
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+
"integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
+
"dev": true,
+
"license": "MIT",
+
"bin": {
+
"acorn": "bin/acorn"
+
},
+
"engines": {
+
"node": ">=0.4.0"
+
}
+
},
+
"node_modules/acorn-walk": {
+
"version": "8.3.2",
+
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz",
+
"integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">=0.4.0"
+
}
+
},
+
"node_modules/as-table": {
+
"version": "1.0.55",
+
"resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz",
+
"integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"printable-characters": "^1.0.42"
+
}
+
},
+
"node_modules/assertion-error": {
+
"version": "2.0.1",
+
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
+
"integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">=12"
+
}
+
},
+
"node_modules/birpc": {
+
"version": "0.2.14",
+
"resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.14.tgz",
+
"integrity": "sha512-37FHE8rqsYM5JEKCnXFyHpBCzvgHEExwVVTq+nUmloInU7l8ezD1TpOhKpS8oe1DTYFqEK27rFZVKG43oTqXRA==",
+
"dev": true,
+
"license": "MIT",
+
"funding": {
+
"url": "https://github.com/sponsors/antfu"
+
}
+
},
+
"node_modules/blake3-wasm": {
+
"version": "2.1.5",
+
"resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz",
+
"integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/cac": {
+
"version": "6.7.14",
+
"resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
+
"integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">=8"
+
}
+
},
+
"node_modules/chai": {
+
"version": "5.2.0",
+
"resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz",
+
"integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"assertion-error": "^2.0.1",
+
"check-error": "^2.1.1",
+
"deep-eql": "^5.0.1",
+
"loupe": "^3.1.0",
+
"pathval": "^2.0.0"
+
},
+
"engines": {
+
"node": ">=12"
+
}
+
},
+
"node_modules/check-error": {
+
"version": "2.1.1",
+
"resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
+
"integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">= 16"
+
}
+
},
+
"node_modules/cjs-module-lexer": {
+
"version": "1.4.3",
+
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz",
+
"integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/color": {
+
"version": "4.2.3",
+
"resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+
"integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"dependencies": {
+
"color-convert": "^2.0.1",
+
"color-string": "^1.9.0"
+
},
+
"engines": {
+
"node": ">=12.5.0"
+
}
+
},
+
"node_modules/color-convert": {
+
"version": "2.0.1",
+
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"dependencies": {
+
"color-name": "~1.1.4"
+
},
+
"engines": {
+
"node": ">=7.0.0"
+
}
+
},
+
"node_modules/color-name": {
+
"version": "1.1.4",
+
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+
"dev": true,
+
"license": "MIT",
+
"optional": true
+
},
+
"node_modules/color-string": {
+
"version": "1.9.1",
+
"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+
"integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"dependencies": {
+
"color-name": "^1.0.0",
+
"simple-swizzle": "^0.2.2"
+
}
+
},
+
"node_modules/cookie": {
+
"version": "0.7.2",
+
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">= 0.6"
+
}
+
},
+
"node_modules/data-uri-to-buffer": {
+
"version": "2.0.2",
+
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz",
+
"integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/debug": {
+
"version": "4.4.0",
+
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"ms": "^2.1.3"
+
},
+
"engines": {
+
"node": ">=6.0"
+
},
+
"peerDependenciesMeta": {
+
"supports-color": {
+
"optional": true
+
}
+
}
+
},
+
"node_modules/deep-eql": {
+
"version": "5.0.2",
+
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
+
"integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">=6"
+
}
+
},
+
"node_modules/defu": {
+
"version": "6.1.4",
+
"resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
+
"integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/detect-libc": {
+
"version": "2.0.4",
+
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
+
"integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
+
"dev": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"engines": {
+
"node": ">=8"
+
}
+
},
+
"node_modules/devalue": {
+
"version": "4.3.3",
+
"resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.3.tgz",
+
"integrity": "sha512-UH8EL6H2ifcY8TbD2QsxwCC/pr5xSwPvv85LrLXVihmHVC3T3YqTCIwnR5ak0yO1KYqlxrPVOA/JVZJYPy2ATg==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/es-module-lexer": {
+
"version": "1.7.0",
+
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
+
"integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/esbuild": {
+
"version": "0.25.3",
+
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz",
+
"integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==",
+
"dev": true,
+
"hasInstallScript": true,
+
"license": "MIT",
+
"bin": {
+
"esbuild": "bin/esbuild"
+
},
+
"engines": {
+
"node": ">=18"
+
},
+
"optionalDependencies": {
+
"@esbuild/aix-ppc64": "0.25.3",
+
"@esbuild/android-arm": "0.25.3",
+
"@esbuild/android-arm64": "0.25.3",
+
"@esbuild/android-x64": "0.25.3",
+
"@esbuild/darwin-arm64": "0.25.3",
+
"@esbuild/darwin-x64": "0.25.3",
+
"@esbuild/freebsd-arm64": "0.25.3",
+
"@esbuild/freebsd-x64": "0.25.3",
+
"@esbuild/linux-arm": "0.25.3",
+
"@esbuild/linux-arm64": "0.25.3",
+
"@esbuild/linux-ia32": "0.25.3",
+
"@esbuild/linux-loong64": "0.25.3",
+
"@esbuild/linux-mips64el": "0.25.3",
+
"@esbuild/linux-ppc64": "0.25.3",
+
"@esbuild/linux-riscv64": "0.25.3",
+
"@esbuild/linux-s390x": "0.25.3",
+
"@esbuild/linux-x64": "0.25.3",
+
"@esbuild/netbsd-arm64": "0.25.3",
+
"@esbuild/netbsd-x64": "0.25.3",
+
"@esbuild/openbsd-arm64": "0.25.3",
+
"@esbuild/openbsd-x64": "0.25.3",
+
"@esbuild/sunos-x64": "0.25.3",
+
"@esbuild/win32-arm64": "0.25.3",
+
"@esbuild/win32-ia32": "0.25.3",
+
"@esbuild/win32-x64": "0.25.3"
+
}
+
},
+
"node_modules/estree-walker": {
+
"version": "3.0.3",
+
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"@types/estree": "^1.0.0"
+
}
+
},
+
"node_modules/exit-hook": {
+
"version": "2.2.1",
+
"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz",
+
"integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">=6"
+
},
+
"funding": {
+
"url": "https://github.com/sponsors/sindresorhus"
+
}
+
},
+
"node_modules/expect-type": {
+
"version": "1.2.1",
+
"resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz",
+
"integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==",
+
"dev": true,
+
"license": "Apache-2.0",
+
"engines": {
+
"node": ">=12.0.0"
+
}
+
},
+
"node_modules/exsolve": {
+
"version": "1.0.5",
+
"resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz",
+
"integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/fdir": {
+
"version": "6.4.4",
+
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
+
"integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
+
"dev": true,
+
"license": "MIT",
+
"peerDependencies": {
+
"picomatch": "^3 || ^4"
+
},
+
"peerDependenciesMeta": {
+
"picomatch": {
+
"optional": true
+
}
+
}
+
},
+
"node_modules/fsevents": {
+
"version": "2.3.3",
+
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+
"dev": true,
+
"hasInstallScript": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"darwin"
+
],
+
"engines": {
+
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+
}
+
},
+
"node_modules/get-source": {
+
"version": "2.0.12",
+
"resolved": "https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz",
+
"integrity": "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==",
+
"dev": true,
+
"license": "Unlicense",
+
"dependencies": {
+
"data-uri-to-buffer": "^2.0.0",
+
"source-map": "^0.6.1"
+
}
+
},
+
"node_modules/glob-to-regexp": {
+
"version": "0.4.1",
+
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+
"dev": true,
+
"license": "BSD-2-Clause"
+
},
+
"node_modules/is-arrayish": {
+
"version": "0.3.2",
+
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+
"integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+
"dev": true,
+
"license": "MIT",
+
"optional": true
+
},
+
"node_modules/loupe": {
+
"version": "3.1.3",
+
"resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz",
+
"integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/magic-string": {
+
"version": "0.30.17",
+
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
+
"integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"@jridgewell/sourcemap-codec": "^1.5.0"
+
}
+
},
+
"node_modules/mime": {
+
"version": "3.0.0",
+
"resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+
"integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+
"dev": true,
+
"license": "MIT",
+
"bin": {
+
"mime": "cli.js"
+
},
+
"engines": {
+
"node": ">=10.0.0"
+
}
+
},
+
"node_modules/miniflare": {
+
"version": "4.20250428.1",
+
"resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20250428.1.tgz",
+
"integrity": "sha512-M3qcJXjeAEimHrEeWXEhrJiC3YHB5M3QSqqK67pOTI+lHn0QyVG/2iFUjVJ/nv+i10uxeAEva8GRGeu+tKRCmQ==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"@cspotcode/source-map-support": "0.8.1",
+
"acorn": "8.14.0",
+
"acorn-walk": "8.3.2",
+
"exit-hook": "2.2.1",
+
"glob-to-regexp": "0.4.1",
+
"stoppable": "1.1.0",
+
"undici": "^5.28.5",
+
"workerd": "1.20250428.0",
+
"ws": "8.18.0",
+
"youch": "3.3.4",
+
"zod": "3.22.3"
+
},
+
"bin": {
+
"miniflare": "bootstrap.js"
+
},
+
"engines": {
+
"node": ">=18.0.0"
+
}
+
},
+
"node_modules/miniflare/node_modules/zod": {
+
"version": "3.22.3",
+
"resolved": "https://registry.npmjs.org/zod/-/zod-3.22.3.tgz",
+
"integrity": "sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==",
+
"dev": true,
+
"license": "MIT",
+
"funding": {
+
"url": "https://github.com/sponsors/colinhacks"
+
}
+
},
+
"node_modules/ms": {
+
"version": "2.1.3",
+
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/mustache": {
+
"version": "4.2.0",
+
"resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
+
"integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==",
+
"dev": true,
+
"license": "MIT",
+
"bin": {
+
"mustache": "bin/mustache"
+
}
+
},
+
"node_modules/nanoid": {
+
"version": "3.3.11",
+
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+
"dev": true,
+
"funding": [
+
{
+
"type": "github",
+
"url": "https://github.com/sponsors/ai"
+
}
+
],
+
"license": "MIT",
+
"bin": {
+
"nanoid": "bin/nanoid.cjs"
+
},
+
"engines": {
+
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+
}
+
},
+
"node_modules/ohash": {
+
"version": "2.0.11",
+
"resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz",
+
"integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/path-to-regexp": {
+
"version": "6.3.0",
+
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
+
"integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/pathe": {
+
"version": "2.0.3",
+
"resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+
"integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/pathval": {
+
"version": "2.0.0",
+
"resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz",
+
"integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">= 14.16"
+
}
+
},
+
"node_modules/picocolors": {
+
"version": "1.1.1",
+
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+
"dev": true,
+
"license": "ISC"
+
},
+
"node_modules/picomatch": {
+
"version": "4.0.2",
+
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">=12"
+
},
+
"funding": {
+
"url": "https://github.com/sponsors/jonschlinkert"
+
}
+
},
+
"node_modules/postcss": {
+
"version": "8.5.3",
+
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
+
"integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
+
"dev": true,
+
"funding": [
+
{
+
"type": "opencollective",
+
"url": "https://opencollective.com/postcss/"
+
},
+
{
+
"type": "tidelift",
+
"url": "https://tidelift.com/funding/github/npm/postcss"
+
},
+
{
+
"type": "github",
+
"url": "https://github.com/sponsors/ai"
+
}
+
],
+
"license": "MIT",
+
"dependencies": {
+
"nanoid": "^3.3.8",
+
"picocolors": "^1.1.1",
+
"source-map-js": "^1.2.1"
+
},
+
"engines": {
+
"node": "^10 || ^12 || >=14"
+
}
+
},
+
"node_modules/printable-characters": {
+
"version": "1.0.42",
+
"resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz",
+
"integrity": "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==",
+
"dev": true,
+
"license": "Unlicense"
+
},
+
"node_modules/rollup": {
+
"version": "4.40.1",
+
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.1.tgz",
+
"integrity": "sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"@types/estree": "1.0.7"
+
},
+
"bin": {
+
"rollup": "dist/bin/rollup"
+
},
+
"engines": {
+
"node": ">=18.0.0",
+
"npm": ">=8.0.0"
+
},
+
"optionalDependencies": {
+
"@rollup/rollup-android-arm-eabi": "4.40.1",
+
"@rollup/rollup-android-arm64": "4.40.1",
+
"@rollup/rollup-darwin-arm64": "4.40.1",
+
"@rollup/rollup-darwin-x64": "4.40.1",
+
"@rollup/rollup-freebsd-arm64": "4.40.1",
+
"@rollup/rollup-freebsd-x64": "4.40.1",
+
"@rollup/rollup-linux-arm-gnueabihf": "4.40.1",
+
"@rollup/rollup-linux-arm-musleabihf": "4.40.1",
+
"@rollup/rollup-linux-arm64-gnu": "4.40.1",
+
"@rollup/rollup-linux-arm64-musl": "4.40.1",
+
"@rollup/rollup-linux-loongarch64-gnu": "4.40.1",
+
"@rollup/rollup-linux-powerpc64le-gnu": "4.40.1",
+
"@rollup/rollup-linux-riscv64-gnu": "4.40.1",
+
"@rollup/rollup-linux-riscv64-musl": "4.40.1",
+
"@rollup/rollup-linux-s390x-gnu": "4.40.1",
+
"@rollup/rollup-linux-x64-gnu": "4.40.1",
+
"@rollup/rollup-linux-x64-musl": "4.40.1",
+
"@rollup/rollup-win32-arm64-msvc": "4.40.1",
+
"@rollup/rollup-win32-ia32-msvc": "4.40.1",
+
"@rollup/rollup-win32-x64-msvc": "4.40.1",
+
"fsevents": "~2.3.2"
+
}
+
},
+
"node_modules/semver": {
+
"version": "7.7.1",
+
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+
"dev": true,
+
"license": "ISC",
+
"bin": {
+
"semver": "bin/semver.js"
+
},
+
"engines": {
+
"node": ">=10"
+
}
+
},
+
"node_modules/sharp": {
+
"version": "0.33.5",
+
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
+
"integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==",
+
"dev": true,
+
"hasInstallScript": true,
+
"license": "Apache-2.0",
+
"optional": true,
+
"dependencies": {
+
"color": "^4.2.3",
+
"detect-libc": "^2.0.3",
+
"semver": "^7.6.3"
+
},
+
"engines": {
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/libvips"
+
},
+
"optionalDependencies": {
+
"@img/sharp-darwin-arm64": "0.33.5",
+
"@img/sharp-darwin-x64": "0.33.5",
+
"@img/sharp-libvips-darwin-arm64": "1.0.4",
+
"@img/sharp-libvips-darwin-x64": "1.0.4",
+
"@img/sharp-libvips-linux-arm": "1.0.5",
+
"@img/sharp-libvips-linux-arm64": "1.0.4",
+
"@img/sharp-libvips-linux-s390x": "1.0.4",
+
"@img/sharp-libvips-linux-x64": "1.0.4",
+
"@img/sharp-libvips-linuxmusl-arm64": "1.0.4",
+
"@img/sharp-libvips-linuxmusl-x64": "1.0.4",
+
"@img/sharp-linux-arm": "0.33.5",
+
"@img/sharp-linux-arm64": "0.33.5",
+
"@img/sharp-linux-s390x": "0.33.5",
+
"@img/sharp-linux-x64": "0.33.5",
+
"@img/sharp-linuxmusl-arm64": "0.33.5",
+
"@img/sharp-linuxmusl-x64": "0.33.5",
+
"@img/sharp-wasm32": "0.33.5",
+
"@img/sharp-win32-ia32": "0.33.5",
+
"@img/sharp-win32-x64": "0.33.5"
+
}
+
},
+
"node_modules/siginfo": {
+
"version": "2.0.0",
+
"resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
+
"integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
+
"dev": true,
+
"license": "ISC"
+
},
+
"node_modules/simple-swizzle": {
+
"version": "0.2.2",
+
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+
"integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"dependencies": {
+
"is-arrayish": "^0.3.1"
+
}
+
},
+
"node_modules/source-map": {
+
"version": "0.6.1",
+
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+
"dev": true,
+
"license": "BSD-3-Clause",
+
"engines": {
+
"node": ">=0.10.0"
+
}
+
},
+
"node_modules/source-map-js": {
+
"version": "1.2.1",
+
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+
"dev": true,
+
"license": "BSD-3-Clause",
+
"engines": {
+
"node": ">=0.10.0"
+
}
+
},
+
"node_modules/stackback": {
+
"version": "0.0.2",
+
"resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
+
"integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/stacktracey": {
+
"version": "2.1.8",
+
"resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz",
+
"integrity": "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==",
+
"dev": true,
+
"license": "Unlicense",
+
"dependencies": {
+
"as-table": "^1.0.36",
+
"get-source": "^2.0.12"
+
}
+
},
+
"node_modules/std-env": {
+
"version": "3.9.0",
+
"resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz",
+
"integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/stoppable": {
+
"version": "1.1.0",
+
"resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz",
+
"integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">=4",
+
"npm": ">=6"
+
}
+
},
+
"node_modules/tinybench": {
+
"version": "2.9.0",
+
"resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
+
"integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/tinyexec": {
+
"version": "0.3.2",
+
"resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
+
"integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/tinyglobby": {
+
"version": "0.2.13",
+
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
+
"integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"fdir": "^6.4.4",
+
"picomatch": "^4.0.2"
+
},
+
"engines": {
+
"node": ">=12.0.0"
+
},
+
"funding": {
+
"url": "https://github.com/sponsors/SuperchupuDev"
+
}
+
},
+
"node_modules/tinypool": {
+
"version": "1.0.2",
+
"resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz",
+
"integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": "^18.0.0 || >=20.0.0"
+
}
+
},
+
"node_modules/tinyrainbow": {
+
"version": "2.0.0",
+
"resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz",
+
"integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">=14.0.0"
+
}
+
},
+
"node_modules/tinyspy": {
+
"version": "3.0.2",
+
"resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz",
+
"integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">=14.0.0"
+
}
+
},
+
"node_modules/tslib": {
+
"version": "2.8.1",
+
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+
"dev": true,
+
"license": "0BSD",
+
"optional": true
+
},
+
"node_modules/ufo": {
+
"version": "1.6.1",
+
"resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz",
+
"integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==",
+
"dev": true,
+
"license": "MIT"
+
},
+
"node_modules/undici": {
+
"version": "5.29.0",
+
"resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz",
+
"integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"@fastify/busboy": "^2.0.0"
+
},
+
"engines": {
+
"node": ">=14.0"
+
}
+
},
+
"node_modules/unenv": {
+
"version": "2.0.0-rc.15",
+
"resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.15.tgz",
+
"integrity": "sha512-J/rEIZU8w6FOfLNz/hNKsnY+fFHWnu9MH4yRbSZF3xbbGHovcetXPs7sD+9p8L6CeNC//I9bhRYAOsBt2u7/OA==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"defu": "^6.1.4",
+
"exsolve": "^1.0.4",
+
"ohash": "^2.0.11",
+
"pathe": "^2.0.3",
+
"ufo": "^1.5.4"
+
}
+
},
+
"node_modules/vite": {
+
"version": "6.3.4",
+
"resolved": "https://registry.npmjs.org/vite/-/vite-6.3.4.tgz",
+
"integrity": "sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"esbuild": "^0.25.0",
+
"fdir": "^6.4.4",
+
"picomatch": "^4.0.2",
+
"postcss": "^8.5.3",
+
"rollup": "^4.34.9",
+
"tinyglobby": "^0.2.13"
+
},
+
"bin": {
+
"vite": "bin/vite.js"
+
},
+
"engines": {
+
"node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+
},
+
"funding": {
+
"url": "https://github.com/vitejs/vite?sponsor=1"
+
},
+
"optionalDependencies": {
+
"fsevents": "~2.3.3"
+
},
+
"peerDependencies": {
+
"@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+
"jiti": ">=1.21.0",
+
"less": "*",
+
"lightningcss": "^1.21.0",
+
"sass": "*",
+
"sass-embedded": "*",
+
"stylus": "*",
+
"sugarss": "*",
+
"terser": "^5.16.0",
+
"tsx": "^4.8.1",
+
"yaml": "^2.4.2"
+
},
+
"peerDependenciesMeta": {
+
"@types/node": {
+
"optional": true
+
},
+
"jiti": {
+
"optional": true
+
},
+
"less": {
+
"optional": true
+
},
+
"lightningcss": {
+
"optional": true
+
},
+
"sass": {
+
"optional": true
+
},
+
"sass-embedded": {
+
"optional": true
+
},
+
"stylus": {
+
"optional": true
+
},
+
"sugarss": {
+
"optional": true
+
},
+
"terser": {
+
"optional": true
+
},
+
"tsx": {
+
"optional": true
+
},
+
"yaml": {
+
"optional": true
+
}
+
}
+
},
+
"node_modules/vite-node": {
+
"version": "3.0.9",
+
"resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.9.tgz",
+
"integrity": "sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"cac": "^6.7.14",
+
"debug": "^4.4.0",
+
"es-module-lexer": "^1.6.0",
+
"pathe": "^2.0.3",
+
"vite": "^5.0.0 || ^6.0.0"
+
},
+
"bin": {
+
"vite-node": "vite-node.mjs"
+
},
+
"engines": {
+
"node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/vitest"
+
}
+
},
+
"node_modules/vitest": {
+
"version": "3.0.9",
+
"resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.9.tgz",
+
"integrity": "sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"@vitest/expect": "3.0.9",
+
"@vitest/mocker": "3.0.9",
+
"@vitest/pretty-format": "^3.0.9",
+
"@vitest/runner": "3.0.9",
+
"@vitest/snapshot": "3.0.9",
+
"@vitest/spy": "3.0.9",
+
"@vitest/utils": "3.0.9",
+
"chai": "^5.2.0",
+
"debug": "^4.4.0",
+
"expect-type": "^1.1.0",
+
"magic-string": "^0.30.17",
+
"pathe": "^2.0.3",
+
"std-env": "^3.8.0",
+
"tinybench": "^2.9.0",
+
"tinyexec": "^0.3.2",
+
"tinypool": "^1.0.2",
+
"tinyrainbow": "^2.0.0",
+
"vite": "^5.0.0 || ^6.0.0",
+
"vite-node": "3.0.9",
+
"why-is-node-running": "^2.3.0"
+
},
+
"bin": {
+
"vitest": "vitest.mjs"
+
},
+
"engines": {
+
"node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+
},
+
"funding": {
+
"url": "https://opencollective.com/vitest"
+
},
+
"peerDependencies": {
+
"@edge-runtime/vm": "*",
+
"@types/debug": "^4.1.12",
+
"@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+
"@vitest/browser": "3.0.9",
+
"@vitest/ui": "3.0.9",
+
"happy-dom": "*",
+
"jsdom": "*"
+
},
+
"peerDependenciesMeta": {
+
"@edge-runtime/vm": {
+
"optional": true
+
},
+
"@types/debug": {
+
"optional": true
+
},
+
"@types/node": {
+
"optional": true
+
},
+
"@vitest/browser": {
+
"optional": true
+
},
+
"@vitest/ui": {
+
"optional": true
+
},
+
"happy-dom": {
+
"optional": true
+
},
+
"jsdom": {
+
"optional": true
+
}
+
}
+
},
+
"node_modules/why-is-node-running": {
+
"version": "2.3.0",
+
"resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
+
"integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"siginfo": "^2.0.0",
+
"stackback": "0.0.2"
+
},
+
"bin": {
+
"why-is-node-running": "cli.js"
+
},
+
"engines": {
+
"node": ">=8"
+
}
+
},
+
"node_modules/workerd": {
+
"version": "1.20250428.0",
+
"resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20250428.0.tgz",
+
"integrity": "sha512-JJNWkHkwPQKQdvtM9UORijgYdcdJsihA4SfYjwh02IUQsdMyZ9jizV1sX9yWi9B9ptlohTW8UNHJEATuphGgdg==",
+
"dev": true,
+
"hasInstallScript": true,
+
"license": "Apache-2.0",
+
"bin": {
+
"workerd": "bin/workerd"
+
},
+
"engines": {
+
"node": ">=16"
+
},
+
"optionalDependencies": {
+
"@cloudflare/workerd-darwin-64": "1.20250428.0",
+
"@cloudflare/workerd-darwin-arm64": "1.20250428.0",
+
"@cloudflare/workerd-linux-64": "1.20250428.0",
+
"@cloudflare/workerd-linux-arm64": "1.20250428.0",
+
"@cloudflare/workerd-windows-64": "1.20250428.0"
+
}
+
},
+
"node_modules/wrangler": {
+
"version": "4.14.1",
+
"resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.14.1.tgz",
+
"integrity": "sha512-EU7IThP7i68TBftJJSveogvWZ5k/WRijcJh3UclDWiWWhDZTPbL6LOJEFhHKqFzHOaC4Y2Aewt48rfTz0e7oCw==",
+
"dev": true,
+
"license": "MIT OR Apache-2.0",
+
"dependencies": {
+
"@cloudflare/kv-asset-handler": "0.4.0",
+
"@cloudflare/unenv-preset": "2.3.1",
+
"blake3-wasm": "2.1.5",
+
"esbuild": "0.25.2",
+
"miniflare": "4.20250428.1",
+
"path-to-regexp": "6.3.0",
+
"unenv": "2.0.0-rc.15",
+
"workerd": "1.20250428.0"
+
},
+
"bin": {
+
"wrangler": "bin/wrangler.js",
+
"wrangler2": "bin/wrangler.js"
+
},
+
"engines": {
+
"node": ">=18.0.0"
+
},
+
"optionalDependencies": {
+
"fsevents": "~2.3.2",
+
"sharp": "^0.33.5"
+
},
+
"peerDependencies": {
+
"@cloudflare/workers-types": "^4.20250428.0"
+
},
+
"peerDependenciesMeta": {
+
"@cloudflare/workers-types": {
+
"optional": true
+
}
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/aix-ppc64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
+
"integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
+
"cpu": [
+
"ppc64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"aix"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/android-arm": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
+
"integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
+
"cpu": [
+
"arm"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"android"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/android-arm64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
+
"integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"android"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/android-x64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
+
"integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"android"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/darwin-arm64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
+
"integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"darwin"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/darwin-x64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
+
"integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"darwin"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/freebsd-arm64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
+
"integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"freebsd"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/freebsd-x64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
+
"integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"freebsd"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/linux-arm": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
+
"integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
+
"cpu": [
+
"arm"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/linux-arm64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
+
"integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/linux-ia32": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
+
"integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
+
"cpu": [
+
"ia32"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/linux-loong64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
+
"integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
+
"cpu": [
+
"loong64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/linux-mips64el": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
+
"integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
+
"cpu": [
+
"mips64el"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/linux-ppc64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
+
"integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
+
"cpu": [
+
"ppc64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/linux-riscv64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
+
"integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
+
"cpu": [
+
"riscv64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/linux-s390x": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
+
"integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
+
"cpu": [
+
"s390x"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/linux-x64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
+
"integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"linux"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/netbsd-arm64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
+
"integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"netbsd"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/netbsd-x64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
+
"integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"netbsd"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/openbsd-arm64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
+
"integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"openbsd"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/openbsd-x64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
+
"integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"openbsd"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/sunos-x64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
+
"integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"sunos"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/win32-arm64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
+
"integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
+
"cpu": [
+
"arm64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"win32"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/win32-ia32": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
+
"integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
+
"cpu": [
+
"ia32"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"win32"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/@esbuild/win32-x64": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
+
"integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
+
"cpu": [
+
"x64"
+
],
+
"dev": true,
+
"license": "MIT",
+
"optional": true,
+
"os": [
+
"win32"
+
],
+
"engines": {
+
"node": ">=18"
+
}
+
},
+
"node_modules/wrangler/node_modules/esbuild": {
+
"version": "0.25.2",
+
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz",
+
"integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
+
"dev": true,
+
"hasInstallScript": true,
+
"license": "MIT",
+
"bin": {
+
"esbuild": "bin/esbuild"
+
},
+
"engines": {
+
"node": ">=18"
+
},
+
"optionalDependencies": {
+
"@esbuild/aix-ppc64": "0.25.2",
+
"@esbuild/android-arm": "0.25.2",
+
"@esbuild/android-arm64": "0.25.2",
+
"@esbuild/android-x64": "0.25.2",
+
"@esbuild/darwin-arm64": "0.25.2",
+
"@esbuild/darwin-x64": "0.25.2",
+
"@esbuild/freebsd-arm64": "0.25.2",
+
"@esbuild/freebsd-x64": "0.25.2",
+
"@esbuild/linux-arm": "0.25.2",
+
"@esbuild/linux-arm64": "0.25.2",
+
"@esbuild/linux-ia32": "0.25.2",
+
"@esbuild/linux-loong64": "0.25.2",
+
"@esbuild/linux-mips64el": "0.25.2",
+
"@esbuild/linux-ppc64": "0.25.2",
+
"@esbuild/linux-riscv64": "0.25.2",
+
"@esbuild/linux-s390x": "0.25.2",
+
"@esbuild/linux-x64": "0.25.2",
+
"@esbuild/netbsd-arm64": "0.25.2",
+
"@esbuild/netbsd-x64": "0.25.2",
+
"@esbuild/openbsd-arm64": "0.25.2",
+
"@esbuild/openbsd-x64": "0.25.2",
+
"@esbuild/sunos-x64": "0.25.2",
+
"@esbuild/win32-arm64": "0.25.2",
+
"@esbuild/win32-ia32": "0.25.2",
+
"@esbuild/win32-x64": "0.25.2"
+
}
+
},
+
"node_modules/ws": {
+
"version": "8.18.0",
+
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+
"dev": true,
+
"license": "MIT",
+
"engines": {
+
"node": ">=10.0.0"
+
},
+
"peerDependencies": {
+
"bufferutil": "^4.0.1",
+
"utf-8-validate": ">=5.0.2"
+
},
+
"peerDependenciesMeta": {
+
"bufferutil": {
+
"optional": true
+
},
+
"utf-8-validate": {
+
"optional": true
+
}
+
}
+
},
+
"node_modules/youch": {
+
"version": "3.3.4",
+
"resolved": "https://registry.npmjs.org/youch/-/youch-3.3.4.tgz",
+
"integrity": "sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==",
+
"dev": true,
+
"license": "MIT",
+
"dependencies": {
+
"cookie": "^0.7.1",
+
"mustache": "^4.2.0",
+
"stacktracey": "^2.1.8"
+
}
+
},
+
"node_modules/zod": {
+
"version": "3.24.3",
+
"resolved": "https://registry.npmjs.org/zod/-/zod-3.24.3.tgz",
+
"integrity": "sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==",
+
"dev": true,
+
"license": "MIT",
+
"funding": {
+
"url": "https://github.com/sponsors/colinhacks"
+
}
+
}
+
}
+
}
+16
avatar/package.json
···
+
{
+
"name": "avatar",
+
"version": "0.0.0",
+
"private": true,
+
"scripts": {
+
"deploy": "wrangler deploy",
+
"dev": "wrangler dev",
+
"start": "wrangler dev",
+
"test": "vitest"
+
},
+
"devDependencies": {
+
"@cloudflare/vitest-pool-workers": "^0.8.19",
+
"vitest": "~3.0.7",
+
"wrangler": "^4.14.1"
+
}
+
}
+11
avatar/readme.md
···
+
# avatar
+
+
avatar 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.
+
+
It's deployed using `wrangler` like so:
+
+
```
+
npx wrangler deploy
+
npx wrangler secrets put AVATAR_SHARED_SECRET
+
```
+88
avatar/src/index.js
···
+
export default {
+
async fetch(request, env) {
+
const url = new URL(request.url);
+
const { pathname } = url;
+
+
if (!pathname || pathname === '/') {
+
return new Response(`This is Tangled's avatar service. It fetches your pretty avatar from Bluesky and caches it on Cloudflare.
+
You can't use this directly unforunately since all requests are signed and may only originate from the appview.`);
+
}
+
+
const cache = caches.default;
+
+
let cacheKey = request.url;
+
let response = await cache.match(cacheKey);
+
if (response) {
+
return response;
+
}
+
+
const pathParts = pathname.slice(1).split('/');
+
if (pathParts.length < 2) {
+
return new Response('Bad URL', { status: 400 });
+
}
+
+
const [signatureHex, actor] = pathParts;
+
+
const actorBytes = new TextEncoder().encode(actor);
+
+
const key = await crypto.subtle.importKey(
+
'raw',
+
new TextEncoder().encode(env.AVATAR_SHARED_SECRET),
+
{ name: 'HMAC', hash: 'SHA-256' },
+
false,
+
['sign', 'verify'],
+
);
+
+
const computedSigBuffer = await crypto.subtle.sign('HMAC', key, actorBytes);
+
const computedSig = Array.from(new Uint8Array(computedSigBuffer))
+
.map((b) => b.toString(16).padStart(2, '0'))
+
.join('');
+
+
console.log({
+
level: 'debug',
+
message: 'avatar request for: ' + actor,
+
computedSignature: computedSig,
+
providedSignature: signatureHex,
+
});
+
+
const sigBytes = Uint8Array.from(signatureHex.match(/.{2}/g).map((b) => parseInt(b, 16)));
+
const valid = await crypto.subtle.verify('HMAC', key, sigBytes, actorBytes);
+
+
if (!valid) {
+
return new Response('Invalid signature', { status: 403 });
+
}
+
+
try {
+
const profileResponse = await fetch(`https://public.api.bsky.app/xrpc/app.bsky.actor.getProfile?actor=${actor}`, { method: 'GET' });
+
const profile = await profileResponse.json();
+
const avatar = profile.avatar;
+
+
if (!avatar) {
+
return new Response(`avatar not found for ${actor}.`, { status: 404 });
+
}
+
+
// fetch the actual avatar image
+
const avatarResponse = await fetch(avatar);
+
if (!avatarResponse.ok) {
+
return new Response(`failed to fetch avatar for ${actor}.`, { status: avatarResponse.status });
+
}
+
+
const avatarData = await avatarResponse.arrayBuffer();
+
const contentType = avatarResponse.headers.get('content-type') || 'image/jpeg';
+
+
response = new Response(avatarData, {
+
headers: {
+
'Content-Type': contentType,
+
'Cache-Control': 'public, max-age=3600',
+
},
+
});
+
+
// cache it in cf using request.url as the key
+
await cache.put(cacheKey, response.clone());
+
+
return response;
+
} catch (error) {
+
return new Response(`error fetching avatar: ${error.message}`, { status: 500 });
+
}
+
},
+
};
+15
avatar/wrangler.jsonc
···
+
{
+
"$schema": "node_modules/wrangler/config-schema.json",
+
"name": "avatar",
+
"main": "src/index.js",
+
"compatibility_date": "2025-05-03",
+
"observability": {
+
"enabled": true,
+
},
+
"routes": [
+
{
+
"pattern": "avatar.tangled.sh",
+
"custom_domain": true,
+
},
+
],
+
}