A simple BlueSky profile labeler that can be ran on Cloudflare Workers github.com/SocksTheWolf/SimpleBSkyLabeler
cf bsky profile label bluesky cloudflare workers

Initial commit

+2875
+12
.editorconfig
··· 1 + # http://editorconfig.org 2 + root = true 3 + 4 + [*] 5 + indent_style = tab 6 + end_of_line = lf 7 + charset = utf-8 8 + trim_trailing_whitespace = true 9 + insert_final_newline = true 10 + 11 + [*.yml] 12 + indent_style = space
+172
.gitignore
··· 1 + # Logs 2 + 3 + logs 4 + _.log 5 + npm-debug.log_ 6 + yarn-debug.log* 7 + yarn-error.log* 8 + lerna-debug.log* 9 + .pnpm-debug.log* 10 + 11 + # Diagnostic reports (https://nodejs.org/api/report.html) 12 + 13 + report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json 14 + 15 + # Runtime data 16 + 17 + pids 18 + _.pid 19 + _.seed 20 + \*.pid.lock 21 + 22 + # Directory for instrumented libs generated by jscoverage/JSCover 23 + 24 + lib-cov 25 + 26 + # Coverage directory used by tools like istanbul 27 + 28 + coverage 29 + \*.lcov 30 + 31 + # nyc test coverage 32 + 33 + .nyc_output 34 + 35 + # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 36 + 37 + .grunt 38 + 39 + # Bower dependency directory (https://bower.io/) 40 + 41 + bower_components 42 + 43 + # node-waf configuration 44 + 45 + .lock-wscript 46 + 47 + # Compiled binary addons (https://nodejs.org/api/addons.html) 48 + 49 + build/Release 50 + 51 + # Dependency directories 52 + 53 + node_modules/ 54 + jspm_packages/ 55 + 56 + # Snowpack dependency directory (https://snowpack.dev/) 57 + 58 + web_modules/ 59 + 60 + # TypeScript cache 61 + 62 + \*.tsbuildinfo 63 + 64 + # Optional npm cache directory 65 + 66 + .npm 67 + 68 + # Optional eslint cache 69 + 70 + .eslintcache 71 + 72 + # Optional stylelint cache 73 + 74 + .stylelintcache 75 + 76 + # Microbundle cache 77 + 78 + .rpt2_cache/ 79 + .rts2_cache_cjs/ 80 + .rts2_cache_es/ 81 + .rts2_cache_umd/ 82 + 83 + # Optional REPL history 84 + 85 + .node_repl_history 86 + 87 + # Output of 'npm pack' 88 + 89 + \*.tgz 90 + 91 + # Yarn Integrity file 92 + 93 + .yarn-integrity 94 + 95 + # dotenv environment variable files 96 + 97 + .env 98 + .env.development.local 99 + .env.test.local 100 + .env.production.local 101 + .env.local 102 + 103 + # parcel-bundler cache (https://parceljs.org/) 104 + 105 + .cache 106 + .parcel-cache 107 + 108 + # Next.js build output 109 + 110 + .next 111 + out 112 + 113 + # Nuxt.js build / generate output 114 + 115 + .nuxt 116 + dist 117 + 118 + # Gatsby files 119 + 120 + .cache/ 121 + 122 + # Comment in the public line in if your project uses Gatsby and not Next.js 123 + 124 + # https://nextjs.org/blog/next-9-1#public-directory-support 125 + 126 + # public 127 + 128 + # vuepress build output 129 + 130 + .vuepress/dist 131 + 132 + # vuepress v2.x temp and cache directory 133 + 134 + .temp 135 + .cache 136 + 137 + # Docusaurus cache and generated files 138 + 139 + .docusaurus 140 + 141 + # Serverless directories 142 + 143 + .serverless/ 144 + 145 + # FuseBox cache 146 + 147 + .fusebox/ 148 + 149 + # DynamoDB Local files 150 + 151 + .dynamodb/ 152 + 153 + # TernJS port file 154 + 155 + .tern-port 156 + 157 + # Stores VSCode versions used for testing VSCode extensions 158 + 159 + .vscode-test 160 + 161 + # yarn v2 162 + 163 + .yarn/cache 164 + .yarn/unplugged 165 + .yarn/build-state.yml 166 + .yarn/install-state.gz 167 + .pnp.\* 168 + 169 + # wrangler project 170 + 171 + .dev.vars 172 + .wrangler/
+6
.prettierrc
··· 1 + { 2 + "printWidth": 140, 3 + "singleQuote": true, 4 + "semi": true, 5 + "useTabs": true 6 + }
+2440
package-lock.json
··· 1 + { 2 + "name": "bsky-labeler", 3 + "version": "0.0.0", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "bsky-labeler", 9 + "version": "0.0.0", 10 + "devDependencies": { 11 + "@cloudflare/vitest-pool-workers": "^0.5.2", 12 + "@cloudflare/workers-types": "^4.20241218.0", 13 + "typescript": "^5.5.2", 14 + "vitest": "2.1.8", 15 + "wrangler": "^3.60.3" 16 + } 17 + }, 18 + "node_modules/@cloudflare/kv-asset-handler": { 19 + "version": "0.3.4", 20 + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.4.tgz", 21 + "integrity": "sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==", 22 + "dev": true, 23 + "dependencies": { 24 + "mime": "^3.0.0" 25 + }, 26 + "engines": { 27 + "node": ">=16.13" 28 + } 29 + }, 30 + "node_modules/@cloudflare/vitest-pool-workers": { 31 + "version": "0.5.40", 32 + "resolved": "https://registry.npmjs.org/@cloudflare/vitest-pool-workers/-/vitest-pool-workers-0.5.40.tgz", 33 + "integrity": "sha512-aBHNj55l6G07+ZJuhJsuElDYOEKcGJ4nEdE+X7XmyCRxiw7eRjc1iPQOfEFqprzKQ/2tPEOO8hL0mgRIgt8K3g==", 34 + "dev": true, 35 + "dependencies": { 36 + "birpc": "0.2.14", 37 + "cjs-module-lexer": "^1.2.3", 38 + "devalue": "^4.3.0", 39 + "esbuild": "0.17.19", 40 + "miniflare": "3.20241218.0", 41 + "semver": "^7.5.1", 42 + "wrangler": "3.99.0", 43 + "zod": "^3.22.3" 44 + }, 45 + "peerDependencies": { 46 + "@vitest/runner": "2.0.x - 2.1.x", 47 + "@vitest/snapshot": "2.0.x - 2.1.x", 48 + "vitest": "2.0.x - 2.1.x" 49 + } 50 + }, 51 + "node_modules/@cloudflare/workerd-darwin-64": { 52 + "version": "1.20241218.0", 53 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20241218.0.tgz", 54 + "integrity": "sha512-8rveQoxtUvlmORKqTWgjv2ycM8uqWox0u9evn3zd2iWKdou5sncFwH517ZRLI3rq9P31ZLmCQBZ0gloFsTeY6w==", 55 + "cpu": [ 56 + "x64" 57 + ], 58 + "dev": true, 59 + "optional": true, 60 + "os": [ 61 + "darwin" 62 + ], 63 + "engines": { 64 + "node": ">=16" 65 + } 66 + }, 67 + "node_modules/@cloudflare/workerd-darwin-arm64": { 68 + "version": "1.20241218.0", 69 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20241218.0.tgz", 70 + "integrity": "sha512-be59Ad9nmM9lCkhHqmTs/uZ3JVZt8NJ9Z0PY+B0xnc5z6WwmV2lj0RVLtq7xJhQsQJA189zt5rXqDP6J+2mu7Q==", 71 + "cpu": [ 72 + "arm64" 73 + ], 74 + "dev": true, 75 + "optional": true, 76 + "os": [ 77 + "darwin" 78 + ], 79 + "engines": { 80 + "node": ">=16" 81 + } 82 + }, 83 + "node_modules/@cloudflare/workerd-linux-64": { 84 + "version": "1.20241218.0", 85 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20241218.0.tgz", 86 + "integrity": "sha512-MzpSBcfZXRxrYWxQ4pVDYDrUbkQuM62ssl4ZtHH8J35OAeGsWFAYji6MkS2SpVwVcvacPwJXIF4JSzp4xKImKw==", 87 + "cpu": [ 88 + "x64" 89 + ], 90 + "dev": true, 91 + "optional": true, 92 + "os": [ 93 + "linux" 94 + ], 95 + "engines": { 96 + "node": ">=16" 97 + } 98 + }, 99 + "node_modules/@cloudflare/workerd-linux-arm64": { 100 + "version": "1.20241218.0", 101 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20241218.0.tgz", 102 + "integrity": "sha512-RIuJjPxpNqvwIs52vQsXeRMttvhIjgg9NLjjFa3jK8Ijnj8c3ZDru9Wqi48lJP07yDFIRr4uDMMqh/y29YQi2A==", 103 + "cpu": [ 104 + "arm64" 105 + ], 106 + "dev": true, 107 + "optional": true, 108 + "os": [ 109 + "linux" 110 + ], 111 + "engines": { 112 + "node": ">=16" 113 + } 114 + }, 115 + "node_modules/@cloudflare/workerd-windows-64": { 116 + "version": "1.20241218.0", 117 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20241218.0.tgz", 118 + "integrity": "sha512-tO1VjlvK3F6Yb2d1jgEy/QBYl//9Pyv3K0j+lq8Eu7qdfm0IgKwSRgDWLept84/qmNsQfausZ4JdNGxTf9xsxQ==", 119 + "cpu": [ 120 + "x64" 121 + ], 122 + "dev": true, 123 + "optional": true, 124 + "os": [ 125 + "win32" 126 + ], 127 + "engines": { 128 + "node": ">=16" 129 + } 130 + }, 131 + "node_modules/@cloudflare/workers-types": { 132 + "version": "4.20241218.0", 133 + "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20241218.0.tgz", 134 + "integrity": "sha512-Y0brjmJHcAZBXOPI7lU5hbiXglQWniA1kQjot2ata+HFimyjPPcz+4QWBRrmWcMPo0OadR2Vmac7WStDLpvz0w==", 135 + "dev": true 136 + }, 137 + "node_modules/@cspotcode/source-map-support": { 138 + "version": "0.8.1", 139 + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 140 + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 141 + "dev": true, 142 + "dependencies": { 143 + "@jridgewell/trace-mapping": "0.3.9" 144 + }, 145 + "engines": { 146 + "node": ">=12" 147 + } 148 + }, 149 + "node_modules/@esbuild-plugins/node-globals-polyfill": { 150 + "version": "0.2.3", 151 + "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz", 152 + "integrity": "sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==", 153 + "dev": true, 154 + "peerDependencies": { 155 + "esbuild": "*" 156 + } 157 + }, 158 + "node_modules/@esbuild-plugins/node-modules-polyfill": { 159 + "version": "0.2.2", 160 + "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.2.2.tgz", 161 + "integrity": "sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==", 162 + "dev": true, 163 + "dependencies": { 164 + "escape-string-regexp": "^4.0.0", 165 + "rollup-plugin-node-polyfills": "^0.2.1" 166 + }, 167 + "peerDependencies": { 168 + "esbuild": "*" 169 + } 170 + }, 171 + "node_modules/@esbuild/aix-ppc64": { 172 + "version": "0.21.5", 173 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", 174 + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", 175 + "cpu": [ 176 + "ppc64" 177 + ], 178 + "dev": true, 179 + "optional": true, 180 + "os": [ 181 + "aix" 182 + ], 183 + "engines": { 184 + "node": ">=12" 185 + } 186 + }, 187 + "node_modules/@esbuild/android-arm": { 188 + "version": "0.17.19", 189 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", 190 + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", 191 + "cpu": [ 192 + "arm" 193 + ], 194 + "dev": true, 195 + "optional": true, 196 + "os": [ 197 + "android" 198 + ], 199 + "engines": { 200 + "node": ">=12" 201 + } 202 + }, 203 + "node_modules/@esbuild/android-arm64": { 204 + "version": "0.17.19", 205 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", 206 + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", 207 + "cpu": [ 208 + "arm64" 209 + ], 210 + "dev": true, 211 + "optional": true, 212 + "os": [ 213 + "android" 214 + ], 215 + "engines": { 216 + "node": ">=12" 217 + } 218 + }, 219 + "node_modules/@esbuild/android-x64": { 220 + "version": "0.17.19", 221 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", 222 + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", 223 + "cpu": [ 224 + "x64" 225 + ], 226 + "dev": true, 227 + "optional": true, 228 + "os": [ 229 + "android" 230 + ], 231 + "engines": { 232 + "node": ">=12" 233 + } 234 + }, 235 + "node_modules/@esbuild/darwin-arm64": { 236 + "version": "0.17.19", 237 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", 238 + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", 239 + "cpu": [ 240 + "arm64" 241 + ], 242 + "dev": true, 243 + "optional": true, 244 + "os": [ 245 + "darwin" 246 + ], 247 + "engines": { 248 + "node": ">=12" 249 + } 250 + }, 251 + "node_modules/@esbuild/darwin-x64": { 252 + "version": "0.17.19", 253 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", 254 + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", 255 + "cpu": [ 256 + "x64" 257 + ], 258 + "dev": true, 259 + "optional": true, 260 + "os": [ 261 + "darwin" 262 + ], 263 + "engines": { 264 + "node": ">=12" 265 + } 266 + }, 267 + "node_modules/@esbuild/freebsd-arm64": { 268 + "version": "0.17.19", 269 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", 270 + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", 271 + "cpu": [ 272 + "arm64" 273 + ], 274 + "dev": true, 275 + "optional": true, 276 + "os": [ 277 + "freebsd" 278 + ], 279 + "engines": { 280 + "node": ">=12" 281 + } 282 + }, 283 + "node_modules/@esbuild/freebsd-x64": { 284 + "version": "0.17.19", 285 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", 286 + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", 287 + "cpu": [ 288 + "x64" 289 + ], 290 + "dev": true, 291 + "optional": true, 292 + "os": [ 293 + "freebsd" 294 + ], 295 + "engines": { 296 + "node": ">=12" 297 + } 298 + }, 299 + "node_modules/@esbuild/linux-arm": { 300 + "version": "0.17.19", 301 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", 302 + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", 303 + "cpu": [ 304 + "arm" 305 + ], 306 + "dev": true, 307 + "optional": true, 308 + "os": [ 309 + "linux" 310 + ], 311 + "engines": { 312 + "node": ">=12" 313 + } 314 + }, 315 + "node_modules/@esbuild/linux-arm64": { 316 + "version": "0.17.19", 317 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", 318 + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", 319 + "cpu": [ 320 + "arm64" 321 + ], 322 + "dev": true, 323 + "optional": true, 324 + "os": [ 325 + "linux" 326 + ], 327 + "engines": { 328 + "node": ">=12" 329 + } 330 + }, 331 + "node_modules/@esbuild/linux-ia32": { 332 + "version": "0.17.19", 333 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", 334 + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", 335 + "cpu": [ 336 + "ia32" 337 + ], 338 + "dev": true, 339 + "optional": true, 340 + "os": [ 341 + "linux" 342 + ], 343 + "engines": { 344 + "node": ">=12" 345 + } 346 + }, 347 + "node_modules/@esbuild/linux-loong64": { 348 + "version": "0.17.19", 349 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", 350 + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", 351 + "cpu": [ 352 + "loong64" 353 + ], 354 + "dev": true, 355 + "optional": true, 356 + "os": [ 357 + "linux" 358 + ], 359 + "engines": { 360 + "node": ">=12" 361 + } 362 + }, 363 + "node_modules/@esbuild/linux-mips64el": { 364 + "version": "0.17.19", 365 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", 366 + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", 367 + "cpu": [ 368 + "mips64el" 369 + ], 370 + "dev": true, 371 + "optional": true, 372 + "os": [ 373 + "linux" 374 + ], 375 + "engines": { 376 + "node": ">=12" 377 + } 378 + }, 379 + "node_modules/@esbuild/linux-ppc64": { 380 + "version": "0.17.19", 381 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", 382 + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", 383 + "cpu": [ 384 + "ppc64" 385 + ], 386 + "dev": true, 387 + "optional": true, 388 + "os": [ 389 + "linux" 390 + ], 391 + "engines": { 392 + "node": ">=12" 393 + } 394 + }, 395 + "node_modules/@esbuild/linux-riscv64": { 396 + "version": "0.17.19", 397 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", 398 + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", 399 + "cpu": [ 400 + "riscv64" 401 + ], 402 + "dev": true, 403 + "optional": true, 404 + "os": [ 405 + "linux" 406 + ], 407 + "engines": { 408 + "node": ">=12" 409 + } 410 + }, 411 + "node_modules/@esbuild/linux-s390x": { 412 + "version": "0.17.19", 413 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", 414 + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", 415 + "cpu": [ 416 + "s390x" 417 + ], 418 + "dev": true, 419 + "optional": true, 420 + "os": [ 421 + "linux" 422 + ], 423 + "engines": { 424 + "node": ">=12" 425 + } 426 + }, 427 + "node_modules/@esbuild/linux-x64": { 428 + "version": "0.17.19", 429 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", 430 + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", 431 + "cpu": [ 432 + "x64" 433 + ], 434 + "dev": true, 435 + "optional": true, 436 + "os": [ 437 + "linux" 438 + ], 439 + "engines": { 440 + "node": ">=12" 441 + } 442 + }, 443 + "node_modules/@esbuild/netbsd-x64": { 444 + "version": "0.17.19", 445 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", 446 + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", 447 + "cpu": [ 448 + "x64" 449 + ], 450 + "dev": true, 451 + "optional": true, 452 + "os": [ 453 + "netbsd" 454 + ], 455 + "engines": { 456 + "node": ">=12" 457 + } 458 + }, 459 + "node_modules/@esbuild/openbsd-x64": { 460 + "version": "0.17.19", 461 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", 462 + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", 463 + "cpu": [ 464 + "x64" 465 + ], 466 + "dev": true, 467 + "optional": true, 468 + "os": [ 469 + "openbsd" 470 + ], 471 + "engines": { 472 + "node": ">=12" 473 + } 474 + }, 475 + "node_modules/@esbuild/sunos-x64": { 476 + "version": "0.17.19", 477 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", 478 + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", 479 + "cpu": [ 480 + "x64" 481 + ], 482 + "dev": true, 483 + "optional": true, 484 + "os": [ 485 + "sunos" 486 + ], 487 + "engines": { 488 + "node": ">=12" 489 + } 490 + }, 491 + "node_modules/@esbuild/win32-arm64": { 492 + "version": "0.17.19", 493 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", 494 + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", 495 + "cpu": [ 496 + "arm64" 497 + ], 498 + "dev": true, 499 + "optional": true, 500 + "os": [ 501 + "win32" 502 + ], 503 + "engines": { 504 + "node": ">=12" 505 + } 506 + }, 507 + "node_modules/@esbuild/win32-ia32": { 508 + "version": "0.17.19", 509 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", 510 + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", 511 + "cpu": [ 512 + "ia32" 513 + ], 514 + "dev": true, 515 + "optional": true, 516 + "os": [ 517 + "win32" 518 + ], 519 + "engines": { 520 + "node": ">=12" 521 + } 522 + }, 523 + "node_modules/@esbuild/win32-x64": { 524 + "version": "0.17.19", 525 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", 526 + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", 527 + "cpu": [ 528 + "x64" 529 + ], 530 + "dev": true, 531 + "optional": true, 532 + "os": [ 533 + "win32" 534 + ], 535 + "engines": { 536 + "node": ">=12" 537 + } 538 + }, 539 + "node_modules/@fastify/busboy": { 540 + "version": "2.1.1", 541 + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", 542 + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", 543 + "dev": true, 544 + "engines": { 545 + "node": ">=14" 546 + } 547 + }, 548 + "node_modules/@jridgewell/resolve-uri": { 549 + "version": "3.1.2", 550 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 551 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 552 + "dev": true, 553 + "engines": { 554 + "node": ">=6.0.0" 555 + } 556 + }, 557 + "node_modules/@jridgewell/sourcemap-codec": { 558 + "version": "1.5.0", 559 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 560 + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 561 + "dev": true 562 + }, 563 + "node_modules/@jridgewell/trace-mapping": { 564 + "version": "0.3.9", 565 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 566 + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 567 + "dev": true, 568 + "dependencies": { 569 + "@jridgewell/resolve-uri": "^3.0.3", 570 + "@jridgewell/sourcemap-codec": "^1.4.10" 571 + } 572 + }, 573 + "node_modules/@rollup/rollup-android-arm-eabi": { 574 + "version": "4.29.1", 575 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz", 576 + "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==", 577 + "cpu": [ 578 + "arm" 579 + ], 580 + "dev": true, 581 + "optional": true, 582 + "os": [ 583 + "android" 584 + ] 585 + }, 586 + "node_modules/@rollup/rollup-android-arm64": { 587 + "version": "4.29.1", 588 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz", 589 + "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==", 590 + "cpu": [ 591 + "arm64" 592 + ], 593 + "dev": true, 594 + "optional": true, 595 + "os": [ 596 + "android" 597 + ] 598 + }, 599 + "node_modules/@rollup/rollup-darwin-arm64": { 600 + "version": "4.29.1", 601 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz", 602 + "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==", 603 + "cpu": [ 604 + "arm64" 605 + ], 606 + "dev": true, 607 + "optional": true, 608 + "os": [ 609 + "darwin" 610 + ] 611 + }, 612 + "node_modules/@rollup/rollup-darwin-x64": { 613 + "version": "4.29.1", 614 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz", 615 + "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==", 616 + "cpu": [ 617 + "x64" 618 + ], 619 + "dev": true, 620 + "optional": true, 621 + "os": [ 622 + "darwin" 623 + ] 624 + }, 625 + "node_modules/@rollup/rollup-freebsd-arm64": { 626 + "version": "4.29.1", 627 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz", 628 + "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==", 629 + "cpu": [ 630 + "arm64" 631 + ], 632 + "dev": true, 633 + "optional": true, 634 + "os": [ 635 + "freebsd" 636 + ] 637 + }, 638 + "node_modules/@rollup/rollup-freebsd-x64": { 639 + "version": "4.29.1", 640 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz", 641 + "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==", 642 + "cpu": [ 643 + "x64" 644 + ], 645 + "dev": true, 646 + "optional": true, 647 + "os": [ 648 + "freebsd" 649 + ] 650 + }, 651 + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 652 + "version": "4.29.1", 653 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz", 654 + "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==", 655 + "cpu": [ 656 + "arm" 657 + ], 658 + "dev": true, 659 + "optional": true, 660 + "os": [ 661 + "linux" 662 + ] 663 + }, 664 + "node_modules/@rollup/rollup-linux-arm-musleabihf": { 665 + "version": "4.29.1", 666 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz", 667 + "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==", 668 + "cpu": [ 669 + "arm" 670 + ], 671 + "dev": true, 672 + "optional": true, 673 + "os": [ 674 + "linux" 675 + ] 676 + }, 677 + "node_modules/@rollup/rollup-linux-arm64-gnu": { 678 + "version": "4.29.1", 679 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz", 680 + "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==", 681 + "cpu": [ 682 + "arm64" 683 + ], 684 + "dev": true, 685 + "optional": true, 686 + "os": [ 687 + "linux" 688 + ] 689 + }, 690 + "node_modules/@rollup/rollup-linux-arm64-musl": { 691 + "version": "4.29.1", 692 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz", 693 + "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==", 694 + "cpu": [ 695 + "arm64" 696 + ], 697 + "dev": true, 698 + "optional": true, 699 + "os": [ 700 + "linux" 701 + ] 702 + }, 703 + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 704 + "version": "4.29.1", 705 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz", 706 + "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==", 707 + "cpu": [ 708 + "loong64" 709 + ], 710 + "dev": true, 711 + "optional": true, 712 + "os": [ 713 + "linux" 714 + ] 715 + }, 716 + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 717 + "version": "4.29.1", 718 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz", 719 + "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==", 720 + "cpu": [ 721 + "ppc64" 722 + ], 723 + "dev": true, 724 + "optional": true, 725 + "os": [ 726 + "linux" 727 + ] 728 + }, 729 + "node_modules/@rollup/rollup-linux-riscv64-gnu": { 730 + "version": "4.29.1", 731 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz", 732 + "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==", 733 + "cpu": [ 734 + "riscv64" 735 + ], 736 + "dev": true, 737 + "optional": true, 738 + "os": [ 739 + "linux" 740 + ] 741 + }, 742 + "node_modules/@rollup/rollup-linux-s390x-gnu": { 743 + "version": "4.29.1", 744 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz", 745 + "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==", 746 + "cpu": [ 747 + "s390x" 748 + ], 749 + "dev": true, 750 + "optional": true, 751 + "os": [ 752 + "linux" 753 + ] 754 + }, 755 + "node_modules/@rollup/rollup-linux-x64-gnu": { 756 + "version": "4.29.1", 757 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz", 758 + "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==", 759 + "cpu": [ 760 + "x64" 761 + ], 762 + "dev": true, 763 + "optional": true, 764 + "os": [ 765 + "linux" 766 + ] 767 + }, 768 + "node_modules/@rollup/rollup-linux-x64-musl": { 769 + "version": "4.29.1", 770 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz", 771 + "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==", 772 + "cpu": [ 773 + "x64" 774 + ], 775 + "dev": true, 776 + "optional": true, 777 + "os": [ 778 + "linux" 779 + ] 780 + }, 781 + "node_modules/@rollup/rollup-win32-arm64-msvc": { 782 + "version": "4.29.1", 783 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz", 784 + "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==", 785 + "cpu": [ 786 + "arm64" 787 + ], 788 + "dev": true, 789 + "optional": true, 790 + "os": [ 791 + "win32" 792 + ] 793 + }, 794 + "node_modules/@rollup/rollup-win32-ia32-msvc": { 795 + "version": "4.29.1", 796 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz", 797 + "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==", 798 + "cpu": [ 799 + "ia32" 800 + ], 801 + "dev": true, 802 + "optional": true, 803 + "os": [ 804 + "win32" 805 + ] 806 + }, 807 + "node_modules/@rollup/rollup-win32-x64-msvc": { 808 + "version": "4.29.1", 809 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz", 810 + "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==", 811 + "cpu": [ 812 + "x64" 813 + ], 814 + "dev": true, 815 + "optional": true, 816 + "os": [ 817 + "win32" 818 + ] 819 + }, 820 + "node_modules/@types/estree": { 821 + "version": "1.0.6", 822 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 823 + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 824 + "dev": true 825 + }, 826 + "node_modules/@types/node": { 827 + "version": "22.10.2", 828 + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", 829 + "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", 830 + "dev": true, 831 + "dependencies": { 832 + "undici-types": "~6.20.0" 833 + } 834 + }, 835 + "node_modules/@types/node-forge": { 836 + "version": "1.3.11", 837 + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", 838 + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", 839 + "dev": true, 840 + "dependencies": { 841 + "@types/node": "*" 842 + } 843 + }, 844 + "node_modules/@vitest/expect": { 845 + "version": "2.1.8", 846 + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.8.tgz", 847 + "integrity": "sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==", 848 + "dev": true, 849 + "dependencies": { 850 + "@vitest/spy": "2.1.8", 851 + "@vitest/utils": "2.1.8", 852 + "chai": "^5.1.2", 853 + "tinyrainbow": "^1.2.0" 854 + }, 855 + "funding": { 856 + "url": "https://opencollective.com/vitest" 857 + } 858 + }, 859 + "node_modules/@vitest/mocker": { 860 + "version": "2.1.8", 861 + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.8.tgz", 862 + "integrity": "sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==", 863 + "dev": true, 864 + "dependencies": { 865 + "@vitest/spy": "2.1.8", 866 + "estree-walker": "^3.0.3", 867 + "magic-string": "^0.30.12" 868 + }, 869 + "funding": { 870 + "url": "https://opencollective.com/vitest" 871 + }, 872 + "peerDependencies": { 873 + "msw": "^2.4.9", 874 + "vite": "^5.0.0" 875 + }, 876 + "peerDependenciesMeta": { 877 + "msw": { 878 + "optional": true 879 + }, 880 + "vite": { 881 + "optional": true 882 + } 883 + } 884 + }, 885 + "node_modules/@vitest/pretty-format": { 886 + "version": "2.1.8", 887 + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.8.tgz", 888 + "integrity": "sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==", 889 + "dev": true, 890 + "dependencies": { 891 + "tinyrainbow": "^1.2.0" 892 + }, 893 + "funding": { 894 + "url": "https://opencollective.com/vitest" 895 + } 896 + }, 897 + "node_modules/@vitest/runner": { 898 + "version": "2.1.8", 899 + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.8.tgz", 900 + "integrity": "sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==", 901 + "dev": true, 902 + "dependencies": { 903 + "@vitest/utils": "2.1.8", 904 + "pathe": "^1.1.2" 905 + }, 906 + "funding": { 907 + "url": "https://opencollective.com/vitest" 908 + } 909 + }, 910 + "node_modules/@vitest/snapshot": { 911 + "version": "2.1.8", 912 + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.8.tgz", 913 + "integrity": "sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==", 914 + "dev": true, 915 + "dependencies": { 916 + "@vitest/pretty-format": "2.1.8", 917 + "magic-string": "^0.30.12", 918 + "pathe": "^1.1.2" 919 + }, 920 + "funding": { 921 + "url": "https://opencollective.com/vitest" 922 + } 923 + }, 924 + "node_modules/@vitest/spy": { 925 + "version": "2.1.8", 926 + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.8.tgz", 927 + "integrity": "sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==", 928 + "dev": true, 929 + "dependencies": { 930 + "tinyspy": "^3.0.2" 931 + }, 932 + "funding": { 933 + "url": "https://opencollective.com/vitest" 934 + } 935 + }, 936 + "node_modules/@vitest/utils": { 937 + "version": "2.1.8", 938 + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz", 939 + "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==", 940 + "dev": true, 941 + "dependencies": { 942 + "@vitest/pretty-format": "2.1.8", 943 + "loupe": "^3.1.2", 944 + "tinyrainbow": "^1.2.0" 945 + }, 946 + "funding": { 947 + "url": "https://opencollective.com/vitest" 948 + } 949 + }, 950 + "node_modules/acorn": { 951 + "version": "8.14.0", 952 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", 953 + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", 954 + "dev": true, 955 + "bin": { 956 + "acorn": "bin/acorn" 957 + }, 958 + "engines": { 959 + "node": ">=0.4.0" 960 + } 961 + }, 962 + "node_modules/acorn-walk": { 963 + "version": "8.3.4", 964 + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", 965 + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", 966 + "dev": true, 967 + "dependencies": { 968 + "acorn": "^8.11.0" 969 + }, 970 + "engines": { 971 + "node": ">=0.4.0" 972 + } 973 + }, 974 + "node_modules/as-table": { 975 + "version": "1.0.55", 976 + "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz", 977 + "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==", 978 + "dev": true, 979 + "dependencies": { 980 + "printable-characters": "^1.0.42" 981 + } 982 + }, 983 + "node_modules/assertion-error": { 984 + "version": "2.0.1", 985 + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", 986 + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", 987 + "dev": true, 988 + "engines": { 989 + "node": ">=12" 990 + } 991 + }, 992 + "node_modules/birpc": { 993 + "version": "0.2.14", 994 + "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.14.tgz", 995 + "integrity": "sha512-37FHE8rqsYM5JEKCnXFyHpBCzvgHEExwVVTq+nUmloInU7l8ezD1TpOhKpS8oe1DTYFqEK27rFZVKG43oTqXRA==", 996 + "dev": true, 997 + "funding": { 998 + "url": "https://github.com/sponsors/antfu" 999 + } 1000 + }, 1001 + "node_modules/blake3-wasm": { 1002 + "version": "2.1.5", 1003 + "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", 1004 + "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", 1005 + "dev": true 1006 + }, 1007 + "node_modules/cac": { 1008 + "version": "6.7.14", 1009 + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", 1010 + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", 1011 + "dev": true, 1012 + "engines": { 1013 + "node": ">=8" 1014 + } 1015 + }, 1016 + "node_modules/capnp-ts": { 1017 + "version": "0.7.0", 1018 + "resolved": "https://registry.npmjs.org/capnp-ts/-/capnp-ts-0.7.0.tgz", 1019 + "integrity": "sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==", 1020 + "dev": true, 1021 + "dependencies": { 1022 + "debug": "^4.3.1", 1023 + "tslib": "^2.2.0" 1024 + } 1025 + }, 1026 + "node_modules/chai": { 1027 + "version": "5.1.2", 1028 + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", 1029 + "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", 1030 + "dev": true, 1031 + "dependencies": { 1032 + "assertion-error": "^2.0.1", 1033 + "check-error": "^2.1.1", 1034 + "deep-eql": "^5.0.1", 1035 + "loupe": "^3.1.0", 1036 + "pathval": "^2.0.0" 1037 + }, 1038 + "engines": { 1039 + "node": ">=12" 1040 + } 1041 + }, 1042 + "node_modules/check-error": { 1043 + "version": "2.1.1", 1044 + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", 1045 + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", 1046 + "dev": true, 1047 + "engines": { 1048 + "node": ">= 16" 1049 + } 1050 + }, 1051 + "node_modules/chokidar": { 1052 + "version": "4.0.3", 1053 + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", 1054 + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", 1055 + "dev": true, 1056 + "dependencies": { 1057 + "readdirp": "^4.0.1" 1058 + }, 1059 + "engines": { 1060 + "node": ">= 14.16.0" 1061 + }, 1062 + "funding": { 1063 + "url": "https://paulmillr.com/funding/" 1064 + } 1065 + }, 1066 + "node_modules/cjs-module-lexer": { 1067 + "version": "1.4.1", 1068 + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", 1069 + "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", 1070 + "dev": true 1071 + }, 1072 + "node_modules/cookie": { 1073 + "version": "0.7.2", 1074 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", 1075 + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", 1076 + "dev": true, 1077 + "engines": { 1078 + "node": ">= 0.6" 1079 + } 1080 + }, 1081 + "node_modules/data-uri-to-buffer": { 1082 + "version": "2.0.2", 1083 + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz", 1084 + "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==", 1085 + "dev": true 1086 + }, 1087 + "node_modules/date-fns": { 1088 + "version": "4.1.0", 1089 + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", 1090 + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", 1091 + "dev": true, 1092 + "funding": { 1093 + "type": "github", 1094 + "url": "https://github.com/sponsors/kossnocorp" 1095 + } 1096 + }, 1097 + "node_modules/debug": { 1098 + "version": "4.4.0", 1099 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1100 + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 1101 + "dev": true, 1102 + "dependencies": { 1103 + "ms": "^2.1.3" 1104 + }, 1105 + "engines": { 1106 + "node": ">=6.0" 1107 + }, 1108 + "peerDependenciesMeta": { 1109 + "supports-color": { 1110 + "optional": true 1111 + } 1112 + } 1113 + }, 1114 + "node_modules/deep-eql": { 1115 + "version": "5.0.2", 1116 + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", 1117 + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", 1118 + "dev": true, 1119 + "engines": { 1120 + "node": ">=6" 1121 + } 1122 + }, 1123 + "node_modules/defu": { 1124 + "version": "6.1.4", 1125 + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", 1126 + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", 1127 + "dev": true 1128 + }, 1129 + "node_modules/devalue": { 1130 + "version": "4.3.3", 1131 + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.3.tgz", 1132 + "integrity": "sha512-UH8EL6H2ifcY8TbD2QsxwCC/pr5xSwPvv85LrLXVihmHVC3T3YqTCIwnR5ak0yO1KYqlxrPVOA/JVZJYPy2ATg==", 1133 + "dev": true 1134 + }, 1135 + "node_modules/es-module-lexer": { 1136 + "version": "1.5.4", 1137 + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", 1138 + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", 1139 + "dev": true 1140 + }, 1141 + "node_modules/esbuild": { 1142 + "version": "0.17.19", 1143 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", 1144 + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", 1145 + "dev": true, 1146 + "hasInstallScript": true, 1147 + "bin": { 1148 + "esbuild": "bin/esbuild" 1149 + }, 1150 + "engines": { 1151 + "node": ">=12" 1152 + }, 1153 + "optionalDependencies": { 1154 + "@esbuild/android-arm": "0.17.19", 1155 + "@esbuild/android-arm64": "0.17.19", 1156 + "@esbuild/android-x64": "0.17.19", 1157 + "@esbuild/darwin-arm64": "0.17.19", 1158 + "@esbuild/darwin-x64": "0.17.19", 1159 + "@esbuild/freebsd-arm64": "0.17.19", 1160 + "@esbuild/freebsd-x64": "0.17.19", 1161 + "@esbuild/linux-arm": "0.17.19", 1162 + "@esbuild/linux-arm64": "0.17.19", 1163 + "@esbuild/linux-ia32": "0.17.19", 1164 + "@esbuild/linux-loong64": "0.17.19", 1165 + "@esbuild/linux-mips64el": "0.17.19", 1166 + "@esbuild/linux-ppc64": "0.17.19", 1167 + "@esbuild/linux-riscv64": "0.17.19", 1168 + "@esbuild/linux-s390x": "0.17.19", 1169 + "@esbuild/linux-x64": "0.17.19", 1170 + "@esbuild/netbsd-x64": "0.17.19", 1171 + "@esbuild/openbsd-x64": "0.17.19", 1172 + "@esbuild/sunos-x64": "0.17.19", 1173 + "@esbuild/win32-arm64": "0.17.19", 1174 + "@esbuild/win32-ia32": "0.17.19", 1175 + "@esbuild/win32-x64": "0.17.19" 1176 + } 1177 + }, 1178 + "node_modules/escape-string-regexp": { 1179 + "version": "4.0.0", 1180 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1181 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1182 + "dev": true, 1183 + "engines": { 1184 + "node": ">=10" 1185 + }, 1186 + "funding": { 1187 + "url": "https://github.com/sponsors/sindresorhus" 1188 + } 1189 + }, 1190 + "node_modules/estree-walker": { 1191 + "version": "3.0.3", 1192 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", 1193 + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", 1194 + "dev": true, 1195 + "dependencies": { 1196 + "@types/estree": "^1.0.0" 1197 + } 1198 + }, 1199 + "node_modules/exit-hook": { 1200 + "version": "2.2.1", 1201 + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz", 1202 + "integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==", 1203 + "dev": true, 1204 + "engines": { 1205 + "node": ">=6" 1206 + }, 1207 + "funding": { 1208 + "url": "https://github.com/sponsors/sindresorhus" 1209 + } 1210 + }, 1211 + "node_modules/expect-type": { 1212 + "version": "1.1.0", 1213 + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz", 1214 + "integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==", 1215 + "dev": true, 1216 + "engines": { 1217 + "node": ">=12.0.0" 1218 + } 1219 + }, 1220 + "node_modules/fsevents": { 1221 + "version": "2.3.3", 1222 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1223 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1224 + "dev": true, 1225 + "hasInstallScript": true, 1226 + "optional": true, 1227 + "os": [ 1228 + "darwin" 1229 + ], 1230 + "engines": { 1231 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1232 + } 1233 + }, 1234 + "node_modules/function-bind": { 1235 + "version": "1.1.2", 1236 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 1237 + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 1238 + "dev": true, 1239 + "funding": { 1240 + "url": "https://github.com/sponsors/ljharb" 1241 + } 1242 + }, 1243 + "node_modules/get-source": { 1244 + "version": "2.0.12", 1245 + "resolved": "https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz", 1246 + "integrity": "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==", 1247 + "dev": true, 1248 + "dependencies": { 1249 + "data-uri-to-buffer": "^2.0.0", 1250 + "source-map": "^0.6.1" 1251 + } 1252 + }, 1253 + "node_modules/glob-to-regexp": { 1254 + "version": "0.4.1", 1255 + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 1256 + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 1257 + "dev": true 1258 + }, 1259 + "node_modules/hasown": { 1260 + "version": "2.0.2", 1261 + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 1262 + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 1263 + "dev": true, 1264 + "dependencies": { 1265 + "function-bind": "^1.1.2" 1266 + }, 1267 + "engines": { 1268 + "node": ">= 0.4" 1269 + } 1270 + }, 1271 + "node_modules/is-core-module": { 1272 + "version": "2.16.0", 1273 + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.0.tgz", 1274 + "integrity": "sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==", 1275 + "dev": true, 1276 + "dependencies": { 1277 + "hasown": "^2.0.2" 1278 + }, 1279 + "engines": { 1280 + "node": ">= 0.4" 1281 + }, 1282 + "funding": { 1283 + "url": "https://github.com/sponsors/ljharb" 1284 + } 1285 + }, 1286 + "node_modules/itty-time": { 1287 + "version": "1.0.6", 1288 + "resolved": "https://registry.npmjs.org/itty-time/-/itty-time-1.0.6.tgz", 1289 + "integrity": "sha512-+P8IZaLLBtFv8hCkIjcymZOp4UJ+xW6bSlQsXGqrkmJh7vSiMFSlNne0mCYagEE0N7HDNR5jJBRxwN0oYv61Rw==", 1290 + "dev": true 1291 + }, 1292 + "node_modules/loupe": { 1293 + "version": "3.1.2", 1294 + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", 1295 + "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", 1296 + "dev": true 1297 + }, 1298 + "node_modules/magic-string": { 1299 + "version": "0.30.17", 1300 + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", 1301 + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", 1302 + "dev": true, 1303 + "dependencies": { 1304 + "@jridgewell/sourcemap-codec": "^1.5.0" 1305 + } 1306 + }, 1307 + "node_modules/mime": { 1308 + "version": "3.0.0", 1309 + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", 1310 + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", 1311 + "dev": true, 1312 + "bin": { 1313 + "mime": "cli.js" 1314 + }, 1315 + "engines": { 1316 + "node": ">=10.0.0" 1317 + } 1318 + }, 1319 + "node_modules/miniflare": { 1320 + "version": "3.20241218.0", 1321 + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20241218.0.tgz", 1322 + "integrity": "sha512-spYFDArH0wd+wJSTrzBrWrXJrbyJhRMJa35mat947y1jYhVV8I5V8vnD3LwjfpLr0SaEilojz1OIW7ekmnRe+w==", 1323 + "dev": true, 1324 + "dependencies": { 1325 + "@cspotcode/source-map-support": "0.8.1", 1326 + "acorn": "^8.8.0", 1327 + "acorn-walk": "^8.2.0", 1328 + "capnp-ts": "^0.7.0", 1329 + "exit-hook": "^2.2.1", 1330 + "glob-to-regexp": "^0.4.1", 1331 + "stoppable": "^1.1.0", 1332 + "undici": "^5.28.4", 1333 + "workerd": "1.20241218.0", 1334 + "ws": "^8.18.0", 1335 + "youch": "^3.2.2", 1336 + "zod": "^3.22.3" 1337 + }, 1338 + "bin": { 1339 + "miniflare": "bootstrap.js" 1340 + }, 1341 + "engines": { 1342 + "node": ">=16.13" 1343 + } 1344 + }, 1345 + "node_modules/ms": { 1346 + "version": "2.1.3", 1347 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1348 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1349 + "dev": true 1350 + }, 1351 + "node_modules/mustache": { 1352 + "version": "4.2.0", 1353 + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", 1354 + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", 1355 + "dev": true, 1356 + "bin": { 1357 + "mustache": "bin/mustache" 1358 + } 1359 + }, 1360 + "node_modules/nanoid": { 1361 + "version": "3.3.8", 1362 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", 1363 + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", 1364 + "dev": true, 1365 + "funding": [ 1366 + { 1367 + "type": "github", 1368 + "url": "https://github.com/sponsors/ai" 1369 + } 1370 + ], 1371 + "bin": { 1372 + "nanoid": "bin/nanoid.cjs" 1373 + }, 1374 + "engines": { 1375 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1376 + } 1377 + }, 1378 + "node_modules/node-forge": { 1379 + "version": "1.3.1", 1380 + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", 1381 + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", 1382 + "dev": true, 1383 + "engines": { 1384 + "node": ">= 6.13.0" 1385 + } 1386 + }, 1387 + "node_modules/ohash": { 1388 + "version": "1.1.4", 1389 + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.4.tgz", 1390 + "integrity": "sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==", 1391 + "dev": true 1392 + }, 1393 + "node_modules/path-parse": { 1394 + "version": "1.0.7", 1395 + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1396 + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1397 + "dev": true 1398 + }, 1399 + "node_modules/path-to-regexp": { 1400 + "version": "6.3.0", 1401 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", 1402 + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", 1403 + "dev": true 1404 + }, 1405 + "node_modules/pathe": { 1406 + "version": "1.1.2", 1407 + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", 1408 + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", 1409 + "dev": true 1410 + }, 1411 + "node_modules/pathval": { 1412 + "version": "2.0.0", 1413 + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", 1414 + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", 1415 + "dev": true, 1416 + "engines": { 1417 + "node": ">= 14.16" 1418 + } 1419 + }, 1420 + "node_modules/picocolors": { 1421 + "version": "1.1.1", 1422 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1423 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1424 + "dev": true 1425 + }, 1426 + "node_modules/postcss": { 1427 + "version": "8.4.49", 1428 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", 1429 + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", 1430 + "dev": true, 1431 + "funding": [ 1432 + { 1433 + "type": "opencollective", 1434 + "url": "https://opencollective.com/postcss/" 1435 + }, 1436 + { 1437 + "type": "tidelift", 1438 + "url": "https://tidelift.com/funding/github/npm/postcss" 1439 + }, 1440 + { 1441 + "type": "github", 1442 + "url": "https://github.com/sponsors/ai" 1443 + } 1444 + ], 1445 + "dependencies": { 1446 + "nanoid": "^3.3.7", 1447 + "picocolors": "^1.1.1", 1448 + "source-map-js": "^1.2.1" 1449 + }, 1450 + "engines": { 1451 + "node": "^10 || ^12 || >=14" 1452 + } 1453 + }, 1454 + "node_modules/printable-characters": { 1455 + "version": "1.0.42", 1456 + "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz", 1457 + "integrity": "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==", 1458 + "dev": true 1459 + }, 1460 + "node_modules/readdirp": { 1461 + "version": "4.0.2", 1462 + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", 1463 + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", 1464 + "dev": true, 1465 + "engines": { 1466 + "node": ">= 14.16.0" 1467 + }, 1468 + "funding": { 1469 + "type": "individual", 1470 + "url": "https://paulmillr.com/funding/" 1471 + } 1472 + }, 1473 + "node_modules/resolve": { 1474 + "version": "1.22.10", 1475 + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", 1476 + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", 1477 + "dev": true, 1478 + "dependencies": { 1479 + "is-core-module": "^2.16.0", 1480 + "path-parse": "^1.0.7", 1481 + "supports-preserve-symlinks-flag": "^1.0.0" 1482 + }, 1483 + "bin": { 1484 + "resolve": "bin/resolve" 1485 + }, 1486 + "engines": { 1487 + "node": ">= 0.4" 1488 + }, 1489 + "funding": { 1490 + "url": "https://github.com/sponsors/ljharb" 1491 + } 1492 + }, 1493 + "node_modules/rollup": { 1494 + "version": "4.29.1", 1495 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", 1496 + "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", 1497 + "dev": true, 1498 + "dependencies": { 1499 + "@types/estree": "1.0.6" 1500 + }, 1501 + "bin": { 1502 + "rollup": "dist/bin/rollup" 1503 + }, 1504 + "engines": { 1505 + "node": ">=18.0.0", 1506 + "npm": ">=8.0.0" 1507 + }, 1508 + "optionalDependencies": { 1509 + "@rollup/rollup-android-arm-eabi": "4.29.1", 1510 + "@rollup/rollup-android-arm64": "4.29.1", 1511 + "@rollup/rollup-darwin-arm64": "4.29.1", 1512 + "@rollup/rollup-darwin-x64": "4.29.1", 1513 + "@rollup/rollup-freebsd-arm64": "4.29.1", 1514 + "@rollup/rollup-freebsd-x64": "4.29.1", 1515 + "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", 1516 + "@rollup/rollup-linux-arm-musleabihf": "4.29.1", 1517 + "@rollup/rollup-linux-arm64-gnu": "4.29.1", 1518 + "@rollup/rollup-linux-arm64-musl": "4.29.1", 1519 + "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", 1520 + "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", 1521 + "@rollup/rollup-linux-riscv64-gnu": "4.29.1", 1522 + "@rollup/rollup-linux-s390x-gnu": "4.29.1", 1523 + "@rollup/rollup-linux-x64-gnu": "4.29.1", 1524 + "@rollup/rollup-linux-x64-musl": "4.29.1", 1525 + "@rollup/rollup-win32-arm64-msvc": "4.29.1", 1526 + "@rollup/rollup-win32-ia32-msvc": "4.29.1", 1527 + "@rollup/rollup-win32-x64-msvc": "4.29.1", 1528 + "fsevents": "~2.3.2" 1529 + } 1530 + }, 1531 + "node_modules/rollup-plugin-inject": { 1532 + "version": "3.0.2", 1533 + "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz", 1534 + "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==", 1535 + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.", 1536 + "dev": true, 1537 + "dependencies": { 1538 + "estree-walker": "^0.6.1", 1539 + "magic-string": "^0.25.3", 1540 + "rollup-pluginutils": "^2.8.1" 1541 + } 1542 + }, 1543 + "node_modules/rollup-plugin-inject/node_modules/estree-walker": { 1544 + "version": "0.6.1", 1545 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 1546 + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 1547 + "dev": true 1548 + }, 1549 + "node_modules/rollup-plugin-inject/node_modules/magic-string": { 1550 + "version": "0.25.9", 1551 + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", 1552 + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 1553 + "dev": true, 1554 + "dependencies": { 1555 + "sourcemap-codec": "^1.4.8" 1556 + } 1557 + }, 1558 + "node_modules/rollup-plugin-node-polyfills": { 1559 + "version": "0.2.1", 1560 + "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz", 1561 + "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==", 1562 + "dev": true, 1563 + "dependencies": { 1564 + "rollup-plugin-inject": "^3.0.0" 1565 + } 1566 + }, 1567 + "node_modules/rollup-pluginutils": { 1568 + "version": "2.8.2", 1569 + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 1570 + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 1571 + "dev": true, 1572 + "dependencies": { 1573 + "estree-walker": "^0.6.1" 1574 + } 1575 + }, 1576 + "node_modules/rollup-pluginutils/node_modules/estree-walker": { 1577 + "version": "0.6.1", 1578 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 1579 + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 1580 + "dev": true 1581 + }, 1582 + "node_modules/selfsigned": { 1583 + "version": "2.4.1", 1584 + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", 1585 + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", 1586 + "dev": true, 1587 + "dependencies": { 1588 + "@types/node-forge": "^1.3.0", 1589 + "node-forge": "^1" 1590 + }, 1591 + "engines": { 1592 + "node": ">=10" 1593 + } 1594 + }, 1595 + "node_modules/semver": { 1596 + "version": "7.6.3", 1597 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", 1598 + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", 1599 + "dev": true, 1600 + "bin": { 1601 + "semver": "bin/semver.js" 1602 + }, 1603 + "engines": { 1604 + "node": ">=10" 1605 + } 1606 + }, 1607 + "node_modules/siginfo": { 1608 + "version": "2.0.0", 1609 + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", 1610 + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", 1611 + "dev": true 1612 + }, 1613 + "node_modules/source-map": { 1614 + "version": "0.6.1", 1615 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1616 + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1617 + "dev": true, 1618 + "engines": { 1619 + "node": ">=0.10.0" 1620 + } 1621 + }, 1622 + "node_modules/source-map-js": { 1623 + "version": "1.2.1", 1624 + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 1625 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 1626 + "dev": true, 1627 + "engines": { 1628 + "node": ">=0.10.0" 1629 + } 1630 + }, 1631 + "node_modules/sourcemap-codec": { 1632 + "version": "1.4.8", 1633 + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 1634 + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 1635 + "deprecated": "Please use @jridgewell/sourcemap-codec instead", 1636 + "dev": true 1637 + }, 1638 + "node_modules/stackback": { 1639 + "version": "0.0.2", 1640 + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", 1641 + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", 1642 + "dev": true 1643 + }, 1644 + "node_modules/stacktracey": { 1645 + "version": "2.1.8", 1646 + "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz", 1647 + "integrity": "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==", 1648 + "dev": true, 1649 + "dependencies": { 1650 + "as-table": "^1.0.36", 1651 + "get-source": "^2.0.12" 1652 + } 1653 + }, 1654 + "node_modules/std-env": { 1655 + "version": "3.8.0", 1656 + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", 1657 + "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", 1658 + "dev": true 1659 + }, 1660 + "node_modules/stoppable": { 1661 + "version": "1.1.0", 1662 + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", 1663 + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", 1664 + "dev": true, 1665 + "engines": { 1666 + "node": ">=4", 1667 + "npm": ">=6" 1668 + } 1669 + }, 1670 + "node_modules/supports-preserve-symlinks-flag": { 1671 + "version": "1.0.0", 1672 + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1673 + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1674 + "dev": true, 1675 + "engines": { 1676 + "node": ">= 0.4" 1677 + }, 1678 + "funding": { 1679 + "url": "https://github.com/sponsors/ljharb" 1680 + } 1681 + }, 1682 + "node_modules/tinybench": { 1683 + "version": "2.9.0", 1684 + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", 1685 + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", 1686 + "dev": true 1687 + }, 1688 + "node_modules/tinyexec": { 1689 + "version": "0.3.1", 1690 + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", 1691 + "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==", 1692 + "dev": true 1693 + }, 1694 + "node_modules/tinypool": { 1695 + "version": "1.0.2", 1696 + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", 1697 + "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", 1698 + "dev": true, 1699 + "engines": { 1700 + "node": "^18.0.0 || >=20.0.0" 1701 + } 1702 + }, 1703 + "node_modules/tinyrainbow": { 1704 + "version": "1.2.0", 1705 + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", 1706 + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", 1707 + "dev": true, 1708 + "engines": { 1709 + "node": ">=14.0.0" 1710 + } 1711 + }, 1712 + "node_modules/tinyspy": { 1713 + "version": "3.0.2", 1714 + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", 1715 + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", 1716 + "dev": true, 1717 + "engines": { 1718 + "node": ">=14.0.0" 1719 + } 1720 + }, 1721 + "node_modules/tslib": { 1722 + "version": "2.8.1", 1723 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", 1724 + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", 1725 + "dev": true 1726 + }, 1727 + "node_modules/typescript": { 1728 + "version": "5.7.2", 1729 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", 1730 + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", 1731 + "dev": true, 1732 + "bin": { 1733 + "tsc": "bin/tsc", 1734 + "tsserver": "bin/tsserver" 1735 + }, 1736 + "engines": { 1737 + "node": ">=14.17" 1738 + } 1739 + }, 1740 + "node_modules/ufo": { 1741 + "version": "1.5.4", 1742 + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", 1743 + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", 1744 + "dev": true 1745 + }, 1746 + "node_modules/undici": { 1747 + "version": "5.28.4", 1748 + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", 1749 + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", 1750 + "dev": true, 1751 + "dependencies": { 1752 + "@fastify/busboy": "^2.0.0" 1753 + }, 1754 + "engines": { 1755 + "node": ">=14.0" 1756 + } 1757 + }, 1758 + "node_modules/undici-types": { 1759 + "version": "6.20.0", 1760 + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", 1761 + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", 1762 + "dev": true 1763 + }, 1764 + "node_modules/unenv": { 1765 + "name": "unenv-nightly", 1766 + "version": "2.0.0-20241204-140205-a5d5190", 1767 + "resolved": "https://registry.npmjs.org/unenv-nightly/-/unenv-nightly-2.0.0-20241204-140205-a5d5190.tgz", 1768 + "integrity": "sha512-jpmAytLeiiW01pl5bhVn9wYJ4vtiLdhGe10oXlJBuQEX8mxjxO8BlEXGHU4vr4yEikjFP1wsomTHt/CLU8kUwg==", 1769 + "dev": true, 1770 + "dependencies": { 1771 + "defu": "^6.1.4", 1772 + "ohash": "^1.1.4", 1773 + "pathe": "^1.1.2", 1774 + "ufo": "^1.5.4" 1775 + } 1776 + }, 1777 + "node_modules/vite": { 1778 + "version": "5.4.11", 1779 + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", 1780 + "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", 1781 + "dev": true, 1782 + "dependencies": { 1783 + "esbuild": "^0.21.3", 1784 + "postcss": "^8.4.43", 1785 + "rollup": "^4.20.0" 1786 + }, 1787 + "bin": { 1788 + "vite": "bin/vite.js" 1789 + }, 1790 + "engines": { 1791 + "node": "^18.0.0 || >=20.0.0" 1792 + }, 1793 + "funding": { 1794 + "url": "https://github.com/vitejs/vite?sponsor=1" 1795 + }, 1796 + "optionalDependencies": { 1797 + "fsevents": "~2.3.3" 1798 + }, 1799 + "peerDependencies": { 1800 + "@types/node": "^18.0.0 || >=20.0.0", 1801 + "less": "*", 1802 + "lightningcss": "^1.21.0", 1803 + "sass": "*", 1804 + "sass-embedded": "*", 1805 + "stylus": "*", 1806 + "sugarss": "*", 1807 + "terser": "^5.4.0" 1808 + }, 1809 + "peerDependenciesMeta": { 1810 + "@types/node": { 1811 + "optional": true 1812 + }, 1813 + "less": { 1814 + "optional": true 1815 + }, 1816 + "lightningcss": { 1817 + "optional": true 1818 + }, 1819 + "sass": { 1820 + "optional": true 1821 + }, 1822 + "sass-embedded": { 1823 + "optional": true 1824 + }, 1825 + "stylus": { 1826 + "optional": true 1827 + }, 1828 + "sugarss": { 1829 + "optional": true 1830 + }, 1831 + "terser": { 1832 + "optional": true 1833 + } 1834 + } 1835 + }, 1836 + "node_modules/vite-node": { 1837 + "version": "2.1.8", 1838 + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.8.tgz", 1839 + "integrity": "sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==", 1840 + "dev": true, 1841 + "dependencies": { 1842 + "cac": "^6.7.14", 1843 + "debug": "^4.3.7", 1844 + "es-module-lexer": "^1.5.4", 1845 + "pathe": "^1.1.2", 1846 + "vite": "^5.0.0" 1847 + }, 1848 + "bin": { 1849 + "vite-node": "vite-node.mjs" 1850 + }, 1851 + "engines": { 1852 + "node": "^18.0.0 || >=20.0.0" 1853 + }, 1854 + "funding": { 1855 + "url": "https://opencollective.com/vitest" 1856 + } 1857 + }, 1858 + "node_modules/vite/node_modules/@esbuild/android-arm": { 1859 + "version": "0.21.5", 1860 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", 1861 + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", 1862 + "cpu": [ 1863 + "arm" 1864 + ], 1865 + "dev": true, 1866 + "optional": true, 1867 + "os": [ 1868 + "android" 1869 + ], 1870 + "engines": { 1871 + "node": ">=12" 1872 + } 1873 + }, 1874 + "node_modules/vite/node_modules/@esbuild/android-arm64": { 1875 + "version": "0.21.5", 1876 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", 1877 + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", 1878 + "cpu": [ 1879 + "arm64" 1880 + ], 1881 + "dev": true, 1882 + "optional": true, 1883 + "os": [ 1884 + "android" 1885 + ], 1886 + "engines": { 1887 + "node": ">=12" 1888 + } 1889 + }, 1890 + "node_modules/vite/node_modules/@esbuild/android-x64": { 1891 + "version": "0.21.5", 1892 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", 1893 + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", 1894 + "cpu": [ 1895 + "x64" 1896 + ], 1897 + "dev": true, 1898 + "optional": true, 1899 + "os": [ 1900 + "android" 1901 + ], 1902 + "engines": { 1903 + "node": ">=12" 1904 + } 1905 + }, 1906 + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { 1907 + "version": "0.21.5", 1908 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", 1909 + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", 1910 + "cpu": [ 1911 + "arm64" 1912 + ], 1913 + "dev": true, 1914 + "optional": true, 1915 + "os": [ 1916 + "darwin" 1917 + ], 1918 + "engines": { 1919 + "node": ">=12" 1920 + } 1921 + }, 1922 + "node_modules/vite/node_modules/@esbuild/darwin-x64": { 1923 + "version": "0.21.5", 1924 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", 1925 + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", 1926 + "cpu": [ 1927 + "x64" 1928 + ], 1929 + "dev": true, 1930 + "optional": true, 1931 + "os": [ 1932 + "darwin" 1933 + ], 1934 + "engines": { 1935 + "node": ">=12" 1936 + } 1937 + }, 1938 + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { 1939 + "version": "0.21.5", 1940 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", 1941 + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", 1942 + "cpu": [ 1943 + "arm64" 1944 + ], 1945 + "dev": true, 1946 + "optional": true, 1947 + "os": [ 1948 + "freebsd" 1949 + ], 1950 + "engines": { 1951 + "node": ">=12" 1952 + } 1953 + }, 1954 + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { 1955 + "version": "0.21.5", 1956 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", 1957 + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", 1958 + "cpu": [ 1959 + "x64" 1960 + ], 1961 + "dev": true, 1962 + "optional": true, 1963 + "os": [ 1964 + "freebsd" 1965 + ], 1966 + "engines": { 1967 + "node": ">=12" 1968 + } 1969 + }, 1970 + "node_modules/vite/node_modules/@esbuild/linux-arm": { 1971 + "version": "0.21.5", 1972 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", 1973 + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", 1974 + "cpu": [ 1975 + "arm" 1976 + ], 1977 + "dev": true, 1978 + "optional": true, 1979 + "os": [ 1980 + "linux" 1981 + ], 1982 + "engines": { 1983 + "node": ">=12" 1984 + } 1985 + }, 1986 + "node_modules/vite/node_modules/@esbuild/linux-arm64": { 1987 + "version": "0.21.5", 1988 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", 1989 + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", 1990 + "cpu": [ 1991 + "arm64" 1992 + ], 1993 + "dev": true, 1994 + "optional": true, 1995 + "os": [ 1996 + "linux" 1997 + ], 1998 + "engines": { 1999 + "node": ">=12" 2000 + } 2001 + }, 2002 + "node_modules/vite/node_modules/@esbuild/linux-ia32": { 2003 + "version": "0.21.5", 2004 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", 2005 + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", 2006 + "cpu": [ 2007 + "ia32" 2008 + ], 2009 + "dev": true, 2010 + "optional": true, 2011 + "os": [ 2012 + "linux" 2013 + ], 2014 + "engines": { 2015 + "node": ">=12" 2016 + } 2017 + }, 2018 + "node_modules/vite/node_modules/@esbuild/linux-loong64": { 2019 + "version": "0.21.5", 2020 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", 2021 + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", 2022 + "cpu": [ 2023 + "loong64" 2024 + ], 2025 + "dev": true, 2026 + "optional": true, 2027 + "os": [ 2028 + "linux" 2029 + ], 2030 + "engines": { 2031 + "node": ">=12" 2032 + } 2033 + }, 2034 + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { 2035 + "version": "0.21.5", 2036 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", 2037 + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", 2038 + "cpu": [ 2039 + "mips64el" 2040 + ], 2041 + "dev": true, 2042 + "optional": true, 2043 + "os": [ 2044 + "linux" 2045 + ], 2046 + "engines": { 2047 + "node": ">=12" 2048 + } 2049 + }, 2050 + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { 2051 + "version": "0.21.5", 2052 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", 2053 + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", 2054 + "cpu": [ 2055 + "ppc64" 2056 + ], 2057 + "dev": true, 2058 + "optional": true, 2059 + "os": [ 2060 + "linux" 2061 + ], 2062 + "engines": { 2063 + "node": ">=12" 2064 + } 2065 + }, 2066 + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { 2067 + "version": "0.21.5", 2068 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", 2069 + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", 2070 + "cpu": [ 2071 + "riscv64" 2072 + ], 2073 + "dev": true, 2074 + "optional": true, 2075 + "os": [ 2076 + "linux" 2077 + ], 2078 + "engines": { 2079 + "node": ">=12" 2080 + } 2081 + }, 2082 + "node_modules/vite/node_modules/@esbuild/linux-s390x": { 2083 + "version": "0.21.5", 2084 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", 2085 + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", 2086 + "cpu": [ 2087 + "s390x" 2088 + ], 2089 + "dev": true, 2090 + "optional": true, 2091 + "os": [ 2092 + "linux" 2093 + ], 2094 + "engines": { 2095 + "node": ">=12" 2096 + } 2097 + }, 2098 + "node_modules/vite/node_modules/@esbuild/linux-x64": { 2099 + "version": "0.21.5", 2100 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", 2101 + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", 2102 + "cpu": [ 2103 + "x64" 2104 + ], 2105 + "dev": true, 2106 + "optional": true, 2107 + "os": [ 2108 + "linux" 2109 + ], 2110 + "engines": { 2111 + "node": ">=12" 2112 + } 2113 + }, 2114 + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { 2115 + "version": "0.21.5", 2116 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", 2117 + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", 2118 + "cpu": [ 2119 + "x64" 2120 + ], 2121 + "dev": true, 2122 + "optional": true, 2123 + "os": [ 2124 + "netbsd" 2125 + ], 2126 + "engines": { 2127 + "node": ">=12" 2128 + } 2129 + }, 2130 + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { 2131 + "version": "0.21.5", 2132 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", 2133 + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", 2134 + "cpu": [ 2135 + "x64" 2136 + ], 2137 + "dev": true, 2138 + "optional": true, 2139 + "os": [ 2140 + "openbsd" 2141 + ], 2142 + "engines": { 2143 + "node": ">=12" 2144 + } 2145 + }, 2146 + "node_modules/vite/node_modules/@esbuild/sunos-x64": { 2147 + "version": "0.21.5", 2148 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", 2149 + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", 2150 + "cpu": [ 2151 + "x64" 2152 + ], 2153 + "dev": true, 2154 + "optional": true, 2155 + "os": [ 2156 + "sunos" 2157 + ], 2158 + "engines": { 2159 + "node": ">=12" 2160 + } 2161 + }, 2162 + "node_modules/vite/node_modules/@esbuild/win32-arm64": { 2163 + "version": "0.21.5", 2164 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", 2165 + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", 2166 + "cpu": [ 2167 + "arm64" 2168 + ], 2169 + "dev": true, 2170 + "optional": true, 2171 + "os": [ 2172 + "win32" 2173 + ], 2174 + "engines": { 2175 + "node": ">=12" 2176 + } 2177 + }, 2178 + "node_modules/vite/node_modules/@esbuild/win32-ia32": { 2179 + "version": "0.21.5", 2180 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", 2181 + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", 2182 + "cpu": [ 2183 + "ia32" 2184 + ], 2185 + "dev": true, 2186 + "optional": true, 2187 + "os": [ 2188 + "win32" 2189 + ], 2190 + "engines": { 2191 + "node": ">=12" 2192 + } 2193 + }, 2194 + "node_modules/vite/node_modules/@esbuild/win32-x64": { 2195 + "version": "0.21.5", 2196 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", 2197 + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", 2198 + "cpu": [ 2199 + "x64" 2200 + ], 2201 + "dev": true, 2202 + "optional": true, 2203 + "os": [ 2204 + "win32" 2205 + ], 2206 + "engines": { 2207 + "node": ">=12" 2208 + } 2209 + }, 2210 + "node_modules/vite/node_modules/esbuild": { 2211 + "version": "0.21.5", 2212 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", 2213 + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", 2214 + "dev": true, 2215 + "hasInstallScript": true, 2216 + "bin": { 2217 + "esbuild": "bin/esbuild" 2218 + }, 2219 + "engines": { 2220 + "node": ">=12" 2221 + }, 2222 + "optionalDependencies": { 2223 + "@esbuild/aix-ppc64": "0.21.5", 2224 + "@esbuild/android-arm": "0.21.5", 2225 + "@esbuild/android-arm64": "0.21.5", 2226 + "@esbuild/android-x64": "0.21.5", 2227 + "@esbuild/darwin-arm64": "0.21.5", 2228 + "@esbuild/darwin-x64": "0.21.5", 2229 + "@esbuild/freebsd-arm64": "0.21.5", 2230 + "@esbuild/freebsd-x64": "0.21.5", 2231 + "@esbuild/linux-arm": "0.21.5", 2232 + "@esbuild/linux-arm64": "0.21.5", 2233 + "@esbuild/linux-ia32": "0.21.5", 2234 + "@esbuild/linux-loong64": "0.21.5", 2235 + "@esbuild/linux-mips64el": "0.21.5", 2236 + "@esbuild/linux-ppc64": "0.21.5", 2237 + "@esbuild/linux-riscv64": "0.21.5", 2238 + "@esbuild/linux-s390x": "0.21.5", 2239 + "@esbuild/linux-x64": "0.21.5", 2240 + "@esbuild/netbsd-x64": "0.21.5", 2241 + "@esbuild/openbsd-x64": "0.21.5", 2242 + "@esbuild/sunos-x64": "0.21.5", 2243 + "@esbuild/win32-arm64": "0.21.5", 2244 + "@esbuild/win32-ia32": "0.21.5", 2245 + "@esbuild/win32-x64": "0.21.5" 2246 + } 2247 + }, 2248 + "node_modules/vitest": { 2249 + "version": "2.1.8", 2250 + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.8.tgz", 2251 + "integrity": "sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==", 2252 + "dev": true, 2253 + "dependencies": { 2254 + "@vitest/expect": "2.1.8", 2255 + "@vitest/mocker": "2.1.8", 2256 + "@vitest/pretty-format": "^2.1.8", 2257 + "@vitest/runner": "2.1.8", 2258 + "@vitest/snapshot": "2.1.8", 2259 + "@vitest/spy": "2.1.8", 2260 + "@vitest/utils": "2.1.8", 2261 + "chai": "^5.1.2", 2262 + "debug": "^4.3.7", 2263 + "expect-type": "^1.1.0", 2264 + "magic-string": "^0.30.12", 2265 + "pathe": "^1.1.2", 2266 + "std-env": "^3.8.0", 2267 + "tinybench": "^2.9.0", 2268 + "tinyexec": "^0.3.1", 2269 + "tinypool": "^1.0.1", 2270 + "tinyrainbow": "^1.2.0", 2271 + "vite": "^5.0.0", 2272 + "vite-node": "2.1.8", 2273 + "why-is-node-running": "^2.3.0" 2274 + }, 2275 + "bin": { 2276 + "vitest": "vitest.mjs" 2277 + }, 2278 + "engines": { 2279 + "node": "^18.0.0 || >=20.0.0" 2280 + }, 2281 + "funding": { 2282 + "url": "https://opencollective.com/vitest" 2283 + }, 2284 + "peerDependencies": { 2285 + "@edge-runtime/vm": "*", 2286 + "@types/node": "^18.0.0 || >=20.0.0", 2287 + "@vitest/browser": "2.1.8", 2288 + "@vitest/ui": "2.1.8", 2289 + "happy-dom": "*", 2290 + "jsdom": "*" 2291 + }, 2292 + "peerDependenciesMeta": { 2293 + "@edge-runtime/vm": { 2294 + "optional": true 2295 + }, 2296 + "@types/node": { 2297 + "optional": true 2298 + }, 2299 + "@vitest/browser": { 2300 + "optional": true 2301 + }, 2302 + "@vitest/ui": { 2303 + "optional": true 2304 + }, 2305 + "happy-dom": { 2306 + "optional": true 2307 + }, 2308 + "jsdom": { 2309 + "optional": true 2310 + } 2311 + } 2312 + }, 2313 + "node_modules/why-is-node-running": { 2314 + "version": "2.3.0", 2315 + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", 2316 + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", 2317 + "dev": true, 2318 + "dependencies": { 2319 + "siginfo": "^2.0.0", 2320 + "stackback": "0.0.2" 2321 + }, 2322 + "bin": { 2323 + "why-is-node-running": "cli.js" 2324 + }, 2325 + "engines": { 2326 + "node": ">=8" 2327 + } 2328 + }, 2329 + "node_modules/workerd": { 2330 + "version": "1.20241218.0", 2331 + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20241218.0.tgz", 2332 + "integrity": "sha512-7Z3D4vOVChMz9mWDffE299oQxUWm/pbkeAWx1btVamPcAK/2IuoNBhwflWo3jyuKuxvYuFAdIucgYxc8ICqXiA==", 2333 + "dev": true, 2334 + "hasInstallScript": true, 2335 + "bin": { 2336 + "workerd": "bin/workerd" 2337 + }, 2338 + "engines": { 2339 + "node": ">=16" 2340 + }, 2341 + "optionalDependencies": { 2342 + "@cloudflare/workerd-darwin-64": "1.20241218.0", 2343 + "@cloudflare/workerd-darwin-arm64": "1.20241218.0", 2344 + "@cloudflare/workerd-linux-64": "1.20241218.0", 2345 + "@cloudflare/workerd-linux-arm64": "1.20241218.0", 2346 + "@cloudflare/workerd-windows-64": "1.20241218.0" 2347 + } 2348 + }, 2349 + "node_modules/wrangler": { 2350 + "version": "3.99.0", 2351 + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-3.99.0.tgz", 2352 + "integrity": "sha512-k0x4rT3G/QCbxcoZY7CHRVlAIS8WMmKdga6lf4d2c3gXFqssh44vwlTDuARA9QANBxKJTcA7JPTJRfUDhd9QBA==", 2353 + "dev": true, 2354 + "dependencies": { 2355 + "@cloudflare/kv-asset-handler": "0.3.4", 2356 + "@esbuild-plugins/node-globals-polyfill": "^0.2.3", 2357 + "@esbuild-plugins/node-modules-polyfill": "^0.2.2", 2358 + "blake3-wasm": "^2.1.5", 2359 + "chokidar": "^4.0.1", 2360 + "date-fns": "^4.1.0", 2361 + "esbuild": "0.17.19", 2362 + "itty-time": "^1.0.6", 2363 + "miniflare": "3.20241218.0", 2364 + "nanoid": "^3.3.3", 2365 + "path-to-regexp": "^6.3.0", 2366 + "resolve": "^1.22.8", 2367 + "selfsigned": "^2.0.1", 2368 + "source-map": "^0.6.1", 2369 + "unenv": "npm:unenv-nightly@2.0.0-20241204-140205-a5d5190", 2370 + "workerd": "1.20241218.0", 2371 + "xxhash-wasm": "^1.0.1" 2372 + }, 2373 + "bin": { 2374 + "wrangler": "bin/wrangler.js", 2375 + "wrangler2": "bin/wrangler.js" 2376 + }, 2377 + "engines": { 2378 + "node": ">=16.17.0" 2379 + }, 2380 + "optionalDependencies": { 2381 + "fsevents": "~2.3.2" 2382 + }, 2383 + "peerDependencies": { 2384 + "@cloudflare/workers-types": "^4.20241218.0" 2385 + }, 2386 + "peerDependenciesMeta": { 2387 + "@cloudflare/workers-types": { 2388 + "optional": true 2389 + } 2390 + } 2391 + }, 2392 + "node_modules/ws": { 2393 + "version": "8.18.0", 2394 + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", 2395 + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", 2396 + "dev": true, 2397 + "engines": { 2398 + "node": ">=10.0.0" 2399 + }, 2400 + "peerDependencies": { 2401 + "bufferutil": "^4.0.1", 2402 + "utf-8-validate": ">=5.0.2" 2403 + }, 2404 + "peerDependenciesMeta": { 2405 + "bufferutil": { 2406 + "optional": true 2407 + }, 2408 + "utf-8-validate": { 2409 + "optional": true 2410 + } 2411 + } 2412 + }, 2413 + "node_modules/xxhash-wasm": { 2414 + "version": "1.1.0", 2415 + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", 2416 + "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==", 2417 + "dev": true 2418 + }, 2419 + "node_modules/youch": { 2420 + "version": "3.3.4", 2421 + "resolved": "https://registry.npmjs.org/youch/-/youch-3.3.4.tgz", 2422 + "integrity": "sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==", 2423 + "dev": true, 2424 + "dependencies": { 2425 + "cookie": "^0.7.1", 2426 + "mustache": "^4.2.0", 2427 + "stacktracey": "^2.1.8" 2428 + } 2429 + }, 2430 + "node_modules/zod": { 2431 + "version": "3.24.1", 2432 + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", 2433 + "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", 2434 + "dev": true, 2435 + "funding": { 2436 + "url": "https://github.com/sponsors/colinhacks" 2437 + } 2438 + } 2439 + } 2440 + }
+19
package.json
··· 1 + { 2 + "name": "bsky-labeler", 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 + "cf-typegen": "wrangler types" 11 + }, 12 + "devDependencies": { 13 + "@cloudflare/vitest-pool-workers": "^0.5.2", 14 + "@cloudflare/workers-types": "^4.20241218.0", 15 + "typescript": "^5.5.2", 16 + "vitest": "2.1.8", 17 + "wrangler": "^3.60.3" 18 + } 19 + }
+18
src/index.ts
··· 1 + /** 2 + * Welcome to Cloudflare Workers! This is your first worker. 3 + * 4 + * - Run `npm run dev` in your terminal to start a development server 5 + * - Open a browser tab at http://localhost:8787/ to see your worker in action 6 + * - Run `npm run deploy` to publish your worker 7 + * 8 + * Bind resources to your worker in `wrangler.toml`. After adding bindings, a type definition for the 9 + * `Env` object can be regenerated with `npm run cf-typegen`. 10 + * 11 + * Learn more at https://developers.cloudflare.com/workers/ 12 + */ 13 + 14 + export default { 15 + async fetch(request, env, ctx): Promise<Response> { 16 + return new Response('Hello World!'); 17 + }, 18 + } satisfies ExportedHandler<Env>;
+25
test/index.spec.ts
··· 1 + // test/index.spec.ts 2 + import { env, createExecutionContext, waitOnExecutionContext, SELF } from 'cloudflare:test'; 3 + import { describe, it, expect } from 'vitest'; 4 + import worker from '../src/index'; 5 + 6 + // For now, you'll need to do something like this to get a correctly-typed 7 + // `Request` to pass to `worker.fetch()`. 8 + const IncomingRequest = Request<unknown, IncomingRequestCfProperties>; 9 + 10 + describe('Hello World worker', () => { 11 + it('responds with Hello World! (unit style)', async () => { 12 + const request = new IncomingRequest('http://example.com'); 13 + // Create an empty context to pass to `worker.fetch()`. 14 + const ctx = createExecutionContext(); 15 + const response = await worker.fetch(request, env, ctx); 16 + // Wait for all `Promise`s passed to `ctx.waitUntil()` to settle before running test assertions 17 + await waitOnExecutionContext(ctx); 18 + expect(await response.text()).toMatchInlineSnapshot(`"Hello World!"`); 19 + }); 20 + 21 + it('responds with Hello World! (integration style)', async () => { 22 + const response = await SELF.fetch('https://example.com'); 23 + expect(await response.text()).toMatchInlineSnapshot(`"Hello World!"`); 24 + }); 25 + });
+8
test/tsconfig.json
··· 1 + { 2 + "extends": "../tsconfig.json", 3 + "compilerOptions": { 4 + "types": ["@cloudflare/workers-types/experimental", "@cloudflare/vitest-pool-workers"] 5 + }, 6 + "include": ["./**/*.ts", "../worker-configuration.d.ts"], 7 + "exclude": [] 8 + }
+46
tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 + 5 + /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ 6 + "target": "es2021", 7 + /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 8 + "lib": ["es2021"], 9 + /* Specify what JSX code is generated. */ 10 + "jsx": "react-jsx", 11 + 12 + /* Specify what module code is generated. */ 13 + "module": "es2022", 14 + /* Specify how TypeScript looks up a file from a given module specifier. */ 15 + "moduleResolution": "Bundler", 16 + /* Specify type package names to be included without being referenced in a source file. */ 17 + "types": [ 18 + "@cloudflare/workers-types/2023-07-01" 19 + ], 20 + /* Enable importing .json files */ 21 + "resolveJsonModule": true, 22 + 23 + /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ 24 + "allowJs": true, 25 + /* Enable error reporting in type-checked JavaScript files. */ 26 + "checkJs": false, 27 + 28 + /* Disable emitting files from a compilation. */ 29 + "noEmit": true, 30 + 31 + /* Ensure that each file can be safely transpiled without relying on other imports. */ 32 + "isolatedModules": true, 33 + /* Allow 'import x from y' when a module doesn't have a default export. */ 34 + "allowSyntheticDefaultImports": true, 35 + /* Ensure that casing is correct in imports. */ 36 + "forceConsistentCasingInFileNames": true, 37 + 38 + /* Enable all strict type-checking options. */ 39 + "strict": true, 40 + 41 + /* Skip type checking all .d.ts files. */ 42 + "skipLibCheck": true 43 + }, 44 + "exclude": ["test"], 45 + "include": ["worker-configuration.d.ts", "src/**/*.ts"] 46 + }
+11
vitest.config.mts
··· 1 + import { defineWorkersConfig } from '@cloudflare/vitest-pool-workers/config'; 2 + 3 + export default defineWorkersConfig({ 4 + test: { 5 + poolOptions: { 6 + workers: { 7 + wrangler: { configPath: './wrangler.toml' }, 8 + }, 9 + }, 10 + }, 11 + });
+4
worker-configuration.d.ts
··· 1 + // Generated by Wrangler 2 + // After adding bindings to `wrangler.toml`, regenerate this interface via `npm run cf-typegen` 3 + interface Env { 4 + }
+114
wrangler.toml
··· 1 + #:schema node_modules/wrangler/config-schema.json 2 + name = "bsky-labeler" 3 + main = "src/index.ts" 4 + compatibility_date = "2024-12-18" 5 + compatibility_flags = ["nodejs_compat"] 6 + 7 + # Workers Logs 8 + # Docs: https://developers.cloudflare.com/workers/observability/logs/workers-logs/ 9 + # Configuration: https://developers.cloudflare.com/workers/observability/logs/workers-logs/#enable-workers-logs 10 + [observability] 11 + enabled = true 12 + 13 + # Automatically place your workloads in an optimal location to minimize latency. 14 + # If you are running back-end logic in a Worker, running it closer to your back-end infrastructure 15 + # rather than the end user may result in better performance. 16 + # Docs: https://developers.cloudflare.com/workers/configuration/smart-placement/#smart-placement 17 + # [placement] 18 + # mode = "smart" 19 + 20 + # Variable bindings. These are arbitrary, plaintext strings (similar to environment variables) 21 + # Docs: 22 + # - https://developers.cloudflare.com/workers/wrangler/configuration/#environment-variables 23 + # Note: Use secrets to store sensitive data. 24 + # - https://developers.cloudflare.com/workers/configuration/secrets/ 25 + # [vars] 26 + # MY_VARIABLE = "production_value" 27 + 28 + # Bind the Workers AI model catalog. Run machine learning models, powered by serverless GPUs, on Cloudflare’s global network 29 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#workers-ai 30 + # [ai] 31 + # binding = "AI" 32 + 33 + # Bind an Analytics Engine dataset. Use Analytics Engine to write analytics within your Pages Function. 34 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#analytics-engine-datasets 35 + # [[analytics_engine_datasets]] 36 + # binding = "MY_DATASET" 37 + 38 + # Bind a headless browser instance running on Cloudflare's global network. 39 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#browser-rendering 40 + # [browser] 41 + # binding = "MY_BROWSER" 42 + 43 + # Bind a D1 database. D1 is Cloudflare’s native serverless SQL database. 44 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#d1-databases 45 + # [[d1_databases]] 46 + # binding = "MY_DB" 47 + # database_name = "my-database" 48 + # database_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 49 + 50 + # Bind a dispatch namespace. Use Workers for Platforms to deploy serverless functions programmatically on behalf of your customers. 51 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#dispatch-namespace-bindings-workers-for-platforms 52 + # [[dispatch_namespaces]] 53 + # binding = "MY_DISPATCHER" 54 + # namespace = "my-namespace" 55 + 56 + # Bind a Durable Object. Durable objects are a scale-to-zero compute primitive based on the actor model. 57 + # Durable Objects can live for as long as needed. Use these when you need a long-running "server", such as in realtime apps. 58 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#durable-objects 59 + # [[durable_objects.bindings]] 60 + # name = "MY_DURABLE_OBJECT" 61 + # class_name = "MyDurableObject" 62 + 63 + # Durable Object migrations. 64 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#migrations 65 + # [[migrations]] 66 + # tag = "v1" 67 + # new_classes = ["MyDurableObject"] 68 + 69 + # Bind a Hyperdrive configuration. Use to accelerate access to your existing databases from Cloudflare Workers. 70 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#hyperdrive 71 + # [[hyperdrive]] 72 + # binding = "MY_HYPERDRIVE" 73 + # id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 74 + 75 + # Bind a KV Namespace. Use KV as persistent storage for small key-value pairs. 76 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#kv-namespaces 77 + # [[kv_namespaces]] 78 + # binding = "MY_KV_NAMESPACE" 79 + # id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 80 + 81 + # Bind an mTLS certificate. Use to present a client certificate when communicating with another service. 82 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#mtls-certificates 83 + # [[mtls_certificates]] 84 + # binding = "MY_CERTIFICATE" 85 + # certificate_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 86 + 87 + # Bind a Queue producer. Use this binding to schedule an arbitrary task that may be processed later by a Queue consumer. 88 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#queues 89 + # [[queues.producers]] 90 + # binding = "MY_QUEUE" 91 + # queue = "my-queue" 92 + 93 + # Bind a Queue consumer. Queue Consumers can retrieve tasks scheduled by Producers to act on them. 94 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#queues 95 + # [[queues.consumers]] 96 + # queue = "my-queue" 97 + 98 + # Bind an R2 Bucket. Use R2 to store arbitrarily large blobs of data, such as files. 99 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#r2-buckets 100 + # [[r2_buckets]] 101 + # binding = "MY_BUCKET" 102 + # bucket_name = "my-bucket" 103 + 104 + # Bind another Worker service. Use this binding to call another Worker without network overhead. 105 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#service-bindings 106 + # [[services]] 107 + # binding = "MY_SERVICE" 108 + # service = "my-service" 109 + 110 + # Bind a Vectorize index. Use to store and query vector embeddings for semantic search, classification and other vector search use-cases. 111 + # Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#vectorize-indexes 112 + # [[vectorize]] 113 + # binding = "MY_INDEX" 114 + # index_name = "my-index"