serve a static website from your pds

Initial commit

Jake Lazaroff 4aded0b2

+2107
+23
.gitignore
··· 1 + node_modules 2 + 3 + # Output 4 + .output 5 + .vercel 6 + .netlify 7 + .wrangler 8 + /.svelte-kit 9 + /build 10 + 11 + # OS 12 + .DS_Store 13 + Thumbs.db 14 + 15 + # Env 16 + .env 17 + .env.* 18 + !.env.example 19 + !.env.test 20 + 21 + # Vite 22 + vite.config.js.timestamp-* 23 + vite.config.ts.timestamp-*
+1
.npmrc
··· 1 + engine-strict=true
+9
.prettierignore
··· 1 + # Package Managers 2 + package-lock.json 3 + pnpm-lock.yaml 4 + yarn.lock 5 + bun.lock 6 + bun.lockb 7 + 8 + # Miscellaneous 9 + /static/
+12
.prettierrc
··· 1 + { 2 + "useTabs": true, 3 + "arrowParens": "avoid", 4 + "printWidth": 100, 5 + "plugins": ["prettier-plugin-svelte"], 6 + "overrides": [ 7 + { 8 + "files": "*.svelte", 9 + "options": { "parser": "svelte" } 10 + } 11 + ] 12 + }
+38
README.md
··· 1 + # sv 2 + 3 + Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). 4 + 5 + ## Creating a project 6 + 7 + If you're seeing this, you've probably already done this step. Congrats! 8 + 9 + ```sh 10 + # create a new project in the current directory 11 + npx sv create 12 + 13 + # create a new project in my-app 14 + npx sv create my-app 15 + ``` 16 + 17 + ## Developing 18 + 19 + Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: 20 + 21 + ```sh 22 + npm run dev 23 + 24 + # or start the server and open the app in a new browser tab 25 + npm run dev -- --open 26 + ``` 27 + 28 + ## Building 29 + 30 + To create a production version of your app: 31 + 32 + ```sh 33 + npm run build 34 + ``` 35 + 36 + You can preview the production build with `npm run preview`. 37 + 38 + > To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
+1707
package-lock.json
··· 1 + { 2 + "name": "athost", 3 + "version": "0.0.1", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "athost", 9 + "version": "0.0.1", 10 + "dependencies": { 11 + "@atcute/atproto": "^3.1.7", 12 + "@atcute/bluesky": "^3.2.7", 13 + "@atcute/client": "^4.0.5", 14 + "@atcute/oauth-browser-client": "^1.0.27" 15 + }, 16 + "devDependencies": { 17 + "@sveltejs/adapter-auto": "^6.1.0", 18 + "@sveltejs/kit": "^2.43.2", 19 + "@sveltejs/vite-plugin-svelte": "^6.2.0", 20 + "prettier": "^3.6.2", 21 + "prettier-plugin-svelte": "^3.4.0", 22 + "svelte": "^5.39.5", 23 + "svelte-check": "^4.3.2", 24 + "typescript": "^5.9.2", 25 + "vite": "^7.1.7" 26 + } 27 + }, 28 + "node_modules/@atcute/atproto": { 29 + "version": "3.1.7", 30 + "resolved": "https://registry.npmjs.org/@atcute/atproto/-/atproto-3.1.7.tgz", 31 + "integrity": "sha512-3Ym8qaVZg2vf8qw0KO1aue39z/5oik5J+UDoSes1vr8ddw40UVLA5sV4bXSKmLnhzQHiLLgoVZXe4zaKfozPoQ==", 32 + "license": "0BSD", 33 + "dependencies": { 34 + "@atcute/lexicons": "^1.2.2" 35 + } 36 + }, 37 + "node_modules/@atcute/bluesky": { 38 + "version": "3.2.7", 39 + "resolved": "https://registry.npmjs.org/@atcute/bluesky/-/bluesky-3.2.7.tgz", 40 + "integrity": "sha512-mofkZySIIp+Z+TbBD+cDWaPY6FVKNRZG8yhMFkh6uMCuiazDUAUjxr4yaFjYMVcgMN9FkwGllwQJevUH9aTSnQ==", 41 + "license": "0BSD", 42 + "dependencies": { 43 + "@atcute/atproto": "^3.1.7", 44 + "@atcute/lexicons": "^1.2.2" 45 + } 46 + }, 47 + "node_modules/@atcute/client": { 48 + "version": "4.0.5", 49 + "resolved": "https://registry.npmjs.org/@atcute/client/-/client-4.0.5.tgz", 50 + "integrity": "sha512-R8Qen8goGmEkynYGg2m6XFlVmz0GTDvQ+9w+4QqOob+XMk8/WDpF4aImev7WKEde/rV2gjcqW7zM8E6W9NShDA==", 51 + "license": "0BSD", 52 + "dependencies": { 53 + "@atcute/identity": "^1.1.1", 54 + "@atcute/lexicons": "^1.2.2" 55 + } 56 + }, 57 + "node_modules/@atcute/identity": { 58 + "version": "1.1.1", 59 + "resolved": "https://registry.npmjs.org/@atcute/identity/-/identity-1.1.1.tgz", 60 + "integrity": "sha512-zax42n693VEhnC+5tndvO2KLDTMkHOz8UExwmklvJv7R9VujfEwiSWhcv6Jgwb3ellaG8wjiQ1lMOIjLLvwh0Q==", 61 + "license": "0BSD", 62 + "dependencies": { 63 + "@atcute/lexicons": "^1.2.2", 64 + "@badrap/valita": "^0.4.6" 65 + } 66 + }, 67 + "node_modules/@atcute/lexicons": { 68 + "version": "1.2.2", 69 + "resolved": "https://registry.npmjs.org/@atcute/lexicons/-/lexicons-1.2.2.tgz", 70 + "integrity": "sha512-bgEhJq5Z70/0TbK5sx+tAkrR8FsCODNiL2gUEvS5PuJfPxmFmRYNWaMGehxSPaXWpU2+Oa9ckceHiYbrItDTkA==", 71 + "license": "0BSD", 72 + "dependencies": { 73 + "@standard-schema/spec": "^1.0.0", 74 + "esm-env": "^1.2.2" 75 + } 76 + }, 77 + "node_modules/@atcute/multibase": { 78 + "version": "1.1.6", 79 + "resolved": "https://registry.npmjs.org/@atcute/multibase/-/multibase-1.1.6.tgz", 80 + "integrity": "sha512-HBxuCgYLKPPxETV0Rot4VP9e24vKl8JdzGCZOVsDaOXJgbRZoRIF67Lp0H/OgnJeH/Xpva8Z5ReoTNJE5dn3kg==", 81 + "license": "0BSD", 82 + "dependencies": { 83 + "@atcute/uint8array": "^1.0.5" 84 + } 85 + }, 86 + "node_modules/@atcute/oauth-browser-client": { 87 + "version": "1.0.27", 88 + "resolved": "https://registry.npmjs.org/@atcute/oauth-browser-client/-/oauth-browser-client-1.0.27.tgz", 89 + "integrity": "sha512-Ng1tCOTMLgFHHoIHXTtCZR1/ND62an1qxPX2kBoUzkxxd7iCP7IBYYqOiKyJYT5n1R4zS+s29hFS4t9mxXa5kQ==", 90 + "license": "0BSD", 91 + "dependencies": { 92 + "@atcute/client": "^4.0.4", 93 + "@atcute/identity": "^1.1.1", 94 + "@atcute/lexicons": "^1.2.2", 95 + "@atcute/multibase": "^1.1.6", 96 + "@atcute/uint8array": "^1.0.5", 97 + "nanoid": "^5.1.5" 98 + } 99 + }, 100 + "node_modules/@atcute/oauth-browser-client/node_modules/nanoid": { 101 + "version": "5.1.6", 102 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", 103 + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", 104 + "funding": [ 105 + { 106 + "type": "github", 107 + "url": "https://github.com/sponsors/ai" 108 + } 109 + ], 110 + "license": "MIT", 111 + "bin": { 112 + "nanoid": "bin/nanoid.js" 113 + }, 114 + "engines": { 115 + "node": "^18 || >=20" 116 + } 117 + }, 118 + "node_modules/@atcute/uint8array": { 119 + "version": "1.0.5", 120 + "resolved": "https://registry.npmjs.org/@atcute/uint8array/-/uint8array-1.0.5.tgz", 121 + "integrity": "sha512-XLWWxoR2HNl2qU+FCr0rp1APwJXci7HnzbOQLxK55OaMNBXZ19+xNC5ii4QCsThsDxa4JS/JTzuiQLziITWf2Q==", 122 + "license": "0BSD" 123 + }, 124 + "node_modules/@badrap/valita": { 125 + "version": "0.4.6", 126 + "resolved": "https://registry.npmjs.org/@badrap/valita/-/valita-0.4.6.tgz", 127 + "integrity": "sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==", 128 + "license": "MIT", 129 + "engines": { 130 + "node": ">= 18" 131 + } 132 + }, 133 + "node_modules/@esbuild/aix-ppc64": { 134 + "version": "0.25.11", 135 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz", 136 + "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==", 137 + "cpu": [ 138 + "ppc64" 139 + ], 140 + "dev": true, 141 + "license": "MIT", 142 + "optional": true, 143 + "os": [ 144 + "aix" 145 + ], 146 + "engines": { 147 + "node": ">=18" 148 + } 149 + }, 150 + "node_modules/@esbuild/android-arm": { 151 + "version": "0.25.11", 152 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz", 153 + "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==", 154 + "cpu": [ 155 + "arm" 156 + ], 157 + "dev": true, 158 + "license": "MIT", 159 + "optional": true, 160 + "os": [ 161 + "android" 162 + ], 163 + "engines": { 164 + "node": ">=18" 165 + } 166 + }, 167 + "node_modules/@esbuild/android-arm64": { 168 + "version": "0.25.11", 169 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz", 170 + "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==", 171 + "cpu": [ 172 + "arm64" 173 + ], 174 + "dev": true, 175 + "license": "MIT", 176 + "optional": true, 177 + "os": [ 178 + "android" 179 + ], 180 + "engines": { 181 + "node": ">=18" 182 + } 183 + }, 184 + "node_modules/@esbuild/android-x64": { 185 + "version": "0.25.11", 186 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz", 187 + "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==", 188 + "cpu": [ 189 + "x64" 190 + ], 191 + "dev": true, 192 + "license": "MIT", 193 + "optional": true, 194 + "os": [ 195 + "android" 196 + ], 197 + "engines": { 198 + "node": ">=18" 199 + } 200 + }, 201 + "node_modules/@esbuild/darwin-arm64": { 202 + "version": "0.25.11", 203 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz", 204 + "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==", 205 + "cpu": [ 206 + "arm64" 207 + ], 208 + "dev": true, 209 + "license": "MIT", 210 + "optional": true, 211 + "os": [ 212 + "darwin" 213 + ], 214 + "engines": { 215 + "node": ">=18" 216 + } 217 + }, 218 + "node_modules/@esbuild/darwin-x64": { 219 + "version": "0.25.11", 220 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz", 221 + "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==", 222 + "cpu": [ 223 + "x64" 224 + ], 225 + "dev": true, 226 + "license": "MIT", 227 + "optional": true, 228 + "os": [ 229 + "darwin" 230 + ], 231 + "engines": { 232 + "node": ">=18" 233 + } 234 + }, 235 + "node_modules/@esbuild/freebsd-arm64": { 236 + "version": "0.25.11", 237 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz", 238 + "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==", 239 + "cpu": [ 240 + "arm64" 241 + ], 242 + "dev": true, 243 + "license": "MIT", 244 + "optional": true, 245 + "os": [ 246 + "freebsd" 247 + ], 248 + "engines": { 249 + "node": ">=18" 250 + } 251 + }, 252 + "node_modules/@esbuild/freebsd-x64": { 253 + "version": "0.25.11", 254 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz", 255 + "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==", 256 + "cpu": [ 257 + "x64" 258 + ], 259 + "dev": true, 260 + "license": "MIT", 261 + "optional": true, 262 + "os": [ 263 + "freebsd" 264 + ], 265 + "engines": { 266 + "node": ">=18" 267 + } 268 + }, 269 + "node_modules/@esbuild/linux-arm": { 270 + "version": "0.25.11", 271 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz", 272 + "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==", 273 + "cpu": [ 274 + "arm" 275 + ], 276 + "dev": true, 277 + "license": "MIT", 278 + "optional": true, 279 + "os": [ 280 + "linux" 281 + ], 282 + "engines": { 283 + "node": ">=18" 284 + } 285 + }, 286 + "node_modules/@esbuild/linux-arm64": { 287 + "version": "0.25.11", 288 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz", 289 + "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==", 290 + "cpu": [ 291 + "arm64" 292 + ], 293 + "dev": true, 294 + "license": "MIT", 295 + "optional": true, 296 + "os": [ 297 + "linux" 298 + ], 299 + "engines": { 300 + "node": ">=18" 301 + } 302 + }, 303 + "node_modules/@esbuild/linux-ia32": { 304 + "version": "0.25.11", 305 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz", 306 + "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==", 307 + "cpu": [ 308 + "ia32" 309 + ], 310 + "dev": true, 311 + "license": "MIT", 312 + "optional": true, 313 + "os": [ 314 + "linux" 315 + ], 316 + "engines": { 317 + "node": ">=18" 318 + } 319 + }, 320 + "node_modules/@esbuild/linux-loong64": { 321 + "version": "0.25.11", 322 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz", 323 + "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==", 324 + "cpu": [ 325 + "loong64" 326 + ], 327 + "dev": true, 328 + "license": "MIT", 329 + "optional": true, 330 + "os": [ 331 + "linux" 332 + ], 333 + "engines": { 334 + "node": ">=18" 335 + } 336 + }, 337 + "node_modules/@esbuild/linux-mips64el": { 338 + "version": "0.25.11", 339 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz", 340 + "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==", 341 + "cpu": [ 342 + "mips64el" 343 + ], 344 + "dev": true, 345 + "license": "MIT", 346 + "optional": true, 347 + "os": [ 348 + "linux" 349 + ], 350 + "engines": { 351 + "node": ">=18" 352 + } 353 + }, 354 + "node_modules/@esbuild/linux-ppc64": { 355 + "version": "0.25.11", 356 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz", 357 + "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==", 358 + "cpu": [ 359 + "ppc64" 360 + ], 361 + "dev": true, 362 + "license": "MIT", 363 + "optional": true, 364 + "os": [ 365 + "linux" 366 + ], 367 + "engines": { 368 + "node": ">=18" 369 + } 370 + }, 371 + "node_modules/@esbuild/linux-riscv64": { 372 + "version": "0.25.11", 373 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz", 374 + "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==", 375 + "cpu": [ 376 + "riscv64" 377 + ], 378 + "dev": true, 379 + "license": "MIT", 380 + "optional": true, 381 + "os": [ 382 + "linux" 383 + ], 384 + "engines": { 385 + "node": ">=18" 386 + } 387 + }, 388 + "node_modules/@esbuild/linux-s390x": { 389 + "version": "0.25.11", 390 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz", 391 + "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==", 392 + "cpu": [ 393 + "s390x" 394 + ], 395 + "dev": true, 396 + "license": "MIT", 397 + "optional": true, 398 + "os": [ 399 + "linux" 400 + ], 401 + "engines": { 402 + "node": ">=18" 403 + } 404 + }, 405 + "node_modules/@esbuild/linux-x64": { 406 + "version": "0.25.11", 407 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz", 408 + "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==", 409 + "cpu": [ 410 + "x64" 411 + ], 412 + "dev": true, 413 + "license": "MIT", 414 + "optional": true, 415 + "os": [ 416 + "linux" 417 + ], 418 + "engines": { 419 + "node": ">=18" 420 + } 421 + }, 422 + "node_modules/@esbuild/netbsd-arm64": { 423 + "version": "0.25.11", 424 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz", 425 + "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==", 426 + "cpu": [ 427 + "arm64" 428 + ], 429 + "dev": true, 430 + "license": "MIT", 431 + "optional": true, 432 + "os": [ 433 + "netbsd" 434 + ], 435 + "engines": { 436 + "node": ">=18" 437 + } 438 + }, 439 + "node_modules/@esbuild/netbsd-x64": { 440 + "version": "0.25.11", 441 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz", 442 + "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==", 443 + "cpu": [ 444 + "x64" 445 + ], 446 + "dev": true, 447 + "license": "MIT", 448 + "optional": true, 449 + "os": [ 450 + "netbsd" 451 + ], 452 + "engines": { 453 + "node": ">=18" 454 + } 455 + }, 456 + "node_modules/@esbuild/openbsd-arm64": { 457 + "version": "0.25.11", 458 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz", 459 + "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==", 460 + "cpu": [ 461 + "arm64" 462 + ], 463 + "dev": true, 464 + "license": "MIT", 465 + "optional": true, 466 + "os": [ 467 + "openbsd" 468 + ], 469 + "engines": { 470 + "node": ">=18" 471 + } 472 + }, 473 + "node_modules/@esbuild/openbsd-x64": { 474 + "version": "0.25.11", 475 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz", 476 + "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==", 477 + "cpu": [ 478 + "x64" 479 + ], 480 + "dev": true, 481 + "license": "MIT", 482 + "optional": true, 483 + "os": [ 484 + "openbsd" 485 + ], 486 + "engines": { 487 + "node": ">=18" 488 + } 489 + }, 490 + "node_modules/@esbuild/openharmony-arm64": { 491 + "version": "0.25.11", 492 + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz", 493 + "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==", 494 + "cpu": [ 495 + "arm64" 496 + ], 497 + "dev": true, 498 + "license": "MIT", 499 + "optional": true, 500 + "os": [ 501 + "openharmony" 502 + ], 503 + "engines": { 504 + "node": ">=18" 505 + } 506 + }, 507 + "node_modules/@esbuild/sunos-x64": { 508 + "version": "0.25.11", 509 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz", 510 + "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==", 511 + "cpu": [ 512 + "x64" 513 + ], 514 + "dev": true, 515 + "license": "MIT", 516 + "optional": true, 517 + "os": [ 518 + "sunos" 519 + ], 520 + "engines": { 521 + "node": ">=18" 522 + } 523 + }, 524 + "node_modules/@esbuild/win32-arm64": { 525 + "version": "0.25.11", 526 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz", 527 + "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==", 528 + "cpu": [ 529 + "arm64" 530 + ], 531 + "dev": true, 532 + "license": "MIT", 533 + "optional": true, 534 + "os": [ 535 + "win32" 536 + ], 537 + "engines": { 538 + "node": ">=18" 539 + } 540 + }, 541 + "node_modules/@esbuild/win32-ia32": { 542 + "version": "0.25.11", 543 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz", 544 + "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==", 545 + "cpu": [ 546 + "ia32" 547 + ], 548 + "dev": true, 549 + "license": "MIT", 550 + "optional": true, 551 + "os": [ 552 + "win32" 553 + ], 554 + "engines": { 555 + "node": ">=18" 556 + } 557 + }, 558 + "node_modules/@esbuild/win32-x64": { 559 + "version": "0.25.11", 560 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz", 561 + "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==", 562 + "cpu": [ 563 + "x64" 564 + ], 565 + "dev": true, 566 + "license": "MIT", 567 + "optional": true, 568 + "os": [ 569 + "win32" 570 + ], 571 + "engines": { 572 + "node": ">=18" 573 + } 574 + }, 575 + "node_modules/@jridgewell/gen-mapping": { 576 + "version": "0.3.13", 577 + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", 578 + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", 579 + "dev": true, 580 + "license": "MIT", 581 + "dependencies": { 582 + "@jridgewell/sourcemap-codec": "^1.5.0", 583 + "@jridgewell/trace-mapping": "^0.3.24" 584 + } 585 + }, 586 + "node_modules/@jridgewell/remapping": { 587 + "version": "2.3.5", 588 + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", 589 + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", 590 + "dev": true, 591 + "license": "MIT", 592 + "dependencies": { 593 + "@jridgewell/gen-mapping": "^0.3.5", 594 + "@jridgewell/trace-mapping": "^0.3.24" 595 + } 596 + }, 597 + "node_modules/@jridgewell/resolve-uri": { 598 + "version": "3.1.2", 599 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 600 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 601 + "dev": true, 602 + "license": "MIT", 603 + "engines": { 604 + "node": ">=6.0.0" 605 + } 606 + }, 607 + "node_modules/@jridgewell/sourcemap-codec": { 608 + "version": "1.5.5", 609 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", 610 + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", 611 + "dev": true, 612 + "license": "MIT" 613 + }, 614 + "node_modules/@jridgewell/trace-mapping": { 615 + "version": "0.3.31", 616 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", 617 + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", 618 + "dev": true, 619 + "license": "MIT", 620 + "dependencies": { 621 + "@jridgewell/resolve-uri": "^3.1.0", 622 + "@jridgewell/sourcemap-codec": "^1.4.14" 623 + } 624 + }, 625 + "node_modules/@polka/url": { 626 + "version": "1.0.0-next.29", 627 + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", 628 + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", 629 + "dev": true, 630 + "license": "MIT" 631 + }, 632 + "node_modules/@rollup/rollup-android-arm-eabi": { 633 + "version": "4.52.4", 634 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz", 635 + "integrity": "sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==", 636 + "cpu": [ 637 + "arm" 638 + ], 639 + "dev": true, 640 + "license": "MIT", 641 + "optional": true, 642 + "os": [ 643 + "android" 644 + ] 645 + }, 646 + "node_modules/@rollup/rollup-android-arm64": { 647 + "version": "4.52.4", 648 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz", 649 + "integrity": "sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==", 650 + "cpu": [ 651 + "arm64" 652 + ], 653 + "dev": true, 654 + "license": "MIT", 655 + "optional": true, 656 + "os": [ 657 + "android" 658 + ] 659 + }, 660 + "node_modules/@rollup/rollup-darwin-arm64": { 661 + "version": "4.52.4", 662 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz", 663 + "integrity": "sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==", 664 + "cpu": [ 665 + "arm64" 666 + ], 667 + "dev": true, 668 + "license": "MIT", 669 + "optional": true, 670 + "os": [ 671 + "darwin" 672 + ] 673 + }, 674 + "node_modules/@rollup/rollup-darwin-x64": { 675 + "version": "4.52.4", 676 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz", 677 + "integrity": "sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==", 678 + "cpu": [ 679 + "x64" 680 + ], 681 + "dev": true, 682 + "license": "MIT", 683 + "optional": true, 684 + "os": [ 685 + "darwin" 686 + ] 687 + }, 688 + "node_modules/@rollup/rollup-freebsd-arm64": { 689 + "version": "4.52.4", 690 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz", 691 + "integrity": "sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==", 692 + "cpu": [ 693 + "arm64" 694 + ], 695 + "dev": true, 696 + "license": "MIT", 697 + "optional": true, 698 + "os": [ 699 + "freebsd" 700 + ] 701 + }, 702 + "node_modules/@rollup/rollup-freebsd-x64": { 703 + "version": "4.52.4", 704 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz", 705 + "integrity": "sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==", 706 + "cpu": [ 707 + "x64" 708 + ], 709 + "dev": true, 710 + "license": "MIT", 711 + "optional": true, 712 + "os": [ 713 + "freebsd" 714 + ] 715 + }, 716 + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 717 + "version": "4.52.4", 718 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz", 719 + "integrity": "sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==", 720 + "cpu": [ 721 + "arm" 722 + ], 723 + "dev": true, 724 + "license": "MIT", 725 + "optional": true, 726 + "os": [ 727 + "linux" 728 + ] 729 + }, 730 + "node_modules/@rollup/rollup-linux-arm-musleabihf": { 731 + "version": "4.52.4", 732 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz", 733 + "integrity": "sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==", 734 + "cpu": [ 735 + "arm" 736 + ], 737 + "dev": true, 738 + "license": "MIT", 739 + "optional": true, 740 + "os": [ 741 + "linux" 742 + ] 743 + }, 744 + "node_modules/@rollup/rollup-linux-arm64-gnu": { 745 + "version": "4.52.4", 746 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz", 747 + "integrity": "sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==", 748 + "cpu": [ 749 + "arm64" 750 + ], 751 + "dev": true, 752 + "license": "MIT", 753 + "optional": true, 754 + "os": [ 755 + "linux" 756 + ] 757 + }, 758 + "node_modules/@rollup/rollup-linux-arm64-musl": { 759 + "version": "4.52.4", 760 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz", 761 + "integrity": "sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==", 762 + "cpu": [ 763 + "arm64" 764 + ], 765 + "dev": true, 766 + "license": "MIT", 767 + "optional": true, 768 + "os": [ 769 + "linux" 770 + ] 771 + }, 772 + "node_modules/@rollup/rollup-linux-loong64-gnu": { 773 + "version": "4.52.4", 774 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz", 775 + "integrity": "sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==", 776 + "cpu": [ 777 + "loong64" 778 + ], 779 + "dev": true, 780 + "license": "MIT", 781 + "optional": true, 782 + "os": [ 783 + "linux" 784 + ] 785 + }, 786 + "node_modules/@rollup/rollup-linux-ppc64-gnu": { 787 + "version": "4.52.4", 788 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz", 789 + "integrity": "sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==", 790 + "cpu": [ 791 + "ppc64" 792 + ], 793 + "dev": true, 794 + "license": "MIT", 795 + "optional": true, 796 + "os": [ 797 + "linux" 798 + ] 799 + }, 800 + "node_modules/@rollup/rollup-linux-riscv64-gnu": { 801 + "version": "4.52.4", 802 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz", 803 + "integrity": "sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==", 804 + "cpu": [ 805 + "riscv64" 806 + ], 807 + "dev": true, 808 + "license": "MIT", 809 + "optional": true, 810 + "os": [ 811 + "linux" 812 + ] 813 + }, 814 + "node_modules/@rollup/rollup-linux-riscv64-musl": { 815 + "version": "4.52.4", 816 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz", 817 + "integrity": "sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==", 818 + "cpu": [ 819 + "riscv64" 820 + ], 821 + "dev": true, 822 + "license": "MIT", 823 + "optional": true, 824 + "os": [ 825 + "linux" 826 + ] 827 + }, 828 + "node_modules/@rollup/rollup-linux-s390x-gnu": { 829 + "version": "4.52.4", 830 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz", 831 + "integrity": "sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==", 832 + "cpu": [ 833 + "s390x" 834 + ], 835 + "dev": true, 836 + "license": "MIT", 837 + "optional": true, 838 + "os": [ 839 + "linux" 840 + ] 841 + }, 842 + "node_modules/@rollup/rollup-linux-x64-gnu": { 843 + "version": "4.52.4", 844 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz", 845 + "integrity": "sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==", 846 + "cpu": [ 847 + "x64" 848 + ], 849 + "dev": true, 850 + "license": "MIT", 851 + "optional": true, 852 + "os": [ 853 + "linux" 854 + ] 855 + }, 856 + "node_modules/@rollup/rollup-linux-x64-musl": { 857 + "version": "4.52.4", 858 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz", 859 + "integrity": "sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==", 860 + "cpu": [ 861 + "x64" 862 + ], 863 + "dev": true, 864 + "license": "MIT", 865 + "optional": true, 866 + "os": [ 867 + "linux" 868 + ] 869 + }, 870 + "node_modules/@rollup/rollup-openharmony-arm64": { 871 + "version": "4.52.4", 872 + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz", 873 + "integrity": "sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==", 874 + "cpu": [ 875 + "arm64" 876 + ], 877 + "dev": true, 878 + "license": "MIT", 879 + "optional": true, 880 + "os": [ 881 + "openharmony" 882 + ] 883 + }, 884 + "node_modules/@rollup/rollup-win32-arm64-msvc": { 885 + "version": "4.52.4", 886 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz", 887 + "integrity": "sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==", 888 + "cpu": [ 889 + "arm64" 890 + ], 891 + "dev": true, 892 + "license": "MIT", 893 + "optional": true, 894 + "os": [ 895 + "win32" 896 + ] 897 + }, 898 + "node_modules/@rollup/rollup-win32-ia32-msvc": { 899 + "version": "4.52.4", 900 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz", 901 + "integrity": "sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==", 902 + "cpu": [ 903 + "ia32" 904 + ], 905 + "dev": true, 906 + "license": "MIT", 907 + "optional": true, 908 + "os": [ 909 + "win32" 910 + ] 911 + }, 912 + "node_modules/@rollup/rollup-win32-x64-gnu": { 913 + "version": "4.52.4", 914 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz", 915 + "integrity": "sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==", 916 + "cpu": [ 917 + "x64" 918 + ], 919 + "dev": true, 920 + "license": "MIT", 921 + "optional": true, 922 + "os": [ 923 + "win32" 924 + ] 925 + }, 926 + "node_modules/@rollup/rollup-win32-x64-msvc": { 927 + "version": "4.52.4", 928 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz", 929 + "integrity": "sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==", 930 + "cpu": [ 931 + "x64" 932 + ], 933 + "dev": true, 934 + "license": "MIT", 935 + "optional": true, 936 + "os": [ 937 + "win32" 938 + ] 939 + }, 940 + "node_modules/@standard-schema/spec": { 941 + "version": "1.0.0", 942 + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", 943 + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", 944 + "license": "MIT" 945 + }, 946 + "node_modules/@sveltejs/acorn-typescript": { 947 + "version": "1.0.6", 948 + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.6.tgz", 949 + "integrity": "sha512-4awhxtMh4cx9blePWl10HRHj8Iivtqj+2QdDCSMDzxG+XKa9+VCNupQuCuvzEhYPzZSrX+0gC+0lHA/0fFKKQQ==", 950 + "dev": true, 951 + "license": "MIT", 952 + "peerDependencies": { 953 + "acorn": "^8.9.0" 954 + } 955 + }, 956 + "node_modules/@sveltejs/adapter-auto": { 957 + "version": "6.1.1", 958 + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-6.1.1.tgz", 959 + "integrity": "sha512-cBNt4jgH4KuaNO5gRSB2CZKkGtz+OCZ8lPjRQGjhvVUD4akotnj2weUia6imLl2v07K3IgsQRyM36909miSwoQ==", 960 + "dev": true, 961 + "license": "MIT", 962 + "peerDependencies": { 963 + "@sveltejs/kit": "^2.0.0" 964 + } 965 + }, 966 + "node_modules/@sveltejs/kit": { 967 + "version": "2.47.0", 968 + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.47.0.tgz", 969 + "integrity": "sha512-mznN01MBXtr4T7X/E3ENkhF6GzqxTxL6/whG3OzCzUu8G8KYRNiCdoxLMVWAHJx/mDMPP3XAeKCMZHF/Xd/CDw==", 970 + "dev": true, 971 + "license": "MIT", 972 + "dependencies": { 973 + "@standard-schema/spec": "^1.0.0", 974 + "@sveltejs/acorn-typescript": "^1.0.5", 975 + "@types/cookie": "^0.6.0", 976 + "acorn": "^8.14.1", 977 + "cookie": "^0.6.0", 978 + "devalue": "^5.3.2", 979 + "esm-env": "^1.2.2", 980 + "kleur": "^4.1.5", 981 + "magic-string": "^0.30.5", 982 + "mrmime": "^2.0.0", 983 + "sade": "^1.8.1", 984 + "set-cookie-parser": "^2.6.0", 985 + "sirv": "^3.0.0" 986 + }, 987 + "bin": { 988 + "svelte-kit": "svelte-kit.js" 989 + }, 990 + "engines": { 991 + "node": ">=18.13" 992 + }, 993 + "peerDependencies": { 994 + "@opentelemetry/api": "^1.0.0", 995 + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0", 996 + "svelte": "^4.0.0 || ^5.0.0-next.0", 997 + "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0" 998 + }, 999 + "peerDependenciesMeta": { 1000 + "@opentelemetry/api": { 1001 + "optional": true 1002 + } 1003 + } 1004 + }, 1005 + "node_modules/@sveltejs/vite-plugin-svelte": { 1006 + "version": "6.2.1", 1007 + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.1.tgz", 1008 + "integrity": "sha512-YZs/OSKOQAQCnJvM/P+F1URotNnYNeU3P2s4oIpzm1uFaqUEqRxUB0g5ejMjEb5Gjb9/PiBI5Ktrq4rUUF8UVQ==", 1009 + "dev": true, 1010 + "license": "MIT", 1011 + "dependencies": { 1012 + "@sveltejs/vite-plugin-svelte-inspector": "^5.0.0", 1013 + "debug": "^4.4.1", 1014 + "deepmerge": "^4.3.1", 1015 + "magic-string": "^0.30.17", 1016 + "vitefu": "^1.1.1" 1017 + }, 1018 + "engines": { 1019 + "node": "^20.19 || ^22.12 || >=24" 1020 + }, 1021 + "peerDependencies": { 1022 + "svelte": "^5.0.0", 1023 + "vite": "^6.3.0 || ^7.0.0" 1024 + } 1025 + }, 1026 + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { 1027 + "version": "5.0.1", 1028 + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-5.0.1.tgz", 1029 + "integrity": "sha512-ubWshlMk4bc8mkwWbg6vNvCeT7lGQojE3ijDh3QTR6Zr/R+GXxsGbyH4PExEPpiFmqPhYiVSVmHBjUcVc1JIrA==", 1030 + "dev": true, 1031 + "license": "MIT", 1032 + "dependencies": { 1033 + "debug": "^4.4.1" 1034 + }, 1035 + "engines": { 1036 + "node": "^20.19 || ^22.12 || >=24" 1037 + }, 1038 + "peerDependencies": { 1039 + "@sveltejs/vite-plugin-svelte": "^6.0.0-next.0", 1040 + "svelte": "^5.0.0", 1041 + "vite": "^6.3.0 || ^7.0.0" 1042 + } 1043 + }, 1044 + "node_modules/@types/cookie": { 1045 + "version": "0.6.0", 1046 + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", 1047 + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", 1048 + "dev": true, 1049 + "license": "MIT" 1050 + }, 1051 + "node_modules/@types/estree": { 1052 + "version": "1.0.8", 1053 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", 1054 + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", 1055 + "dev": true, 1056 + "license": "MIT" 1057 + }, 1058 + "node_modules/acorn": { 1059 + "version": "8.15.0", 1060 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", 1061 + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", 1062 + "dev": true, 1063 + "license": "MIT", 1064 + "bin": { 1065 + "acorn": "bin/acorn" 1066 + }, 1067 + "engines": { 1068 + "node": ">=0.4.0" 1069 + } 1070 + }, 1071 + "node_modules/aria-query": { 1072 + "version": "5.3.2", 1073 + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", 1074 + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", 1075 + "dev": true, 1076 + "license": "Apache-2.0", 1077 + "engines": { 1078 + "node": ">= 0.4" 1079 + } 1080 + }, 1081 + "node_modules/axobject-query": { 1082 + "version": "4.1.0", 1083 + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", 1084 + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", 1085 + "dev": true, 1086 + "license": "Apache-2.0", 1087 + "engines": { 1088 + "node": ">= 0.4" 1089 + } 1090 + }, 1091 + "node_modules/chokidar": { 1092 + "version": "4.0.3", 1093 + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", 1094 + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", 1095 + "dev": true, 1096 + "license": "MIT", 1097 + "dependencies": { 1098 + "readdirp": "^4.0.1" 1099 + }, 1100 + "engines": { 1101 + "node": ">= 14.16.0" 1102 + }, 1103 + "funding": { 1104 + "url": "https://paulmillr.com/funding/" 1105 + } 1106 + }, 1107 + "node_modules/clsx": { 1108 + "version": "2.1.1", 1109 + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", 1110 + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", 1111 + "dev": true, 1112 + "license": "MIT", 1113 + "engines": { 1114 + "node": ">=6" 1115 + } 1116 + }, 1117 + "node_modules/cookie": { 1118 + "version": "0.6.0", 1119 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", 1120 + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", 1121 + "dev": true, 1122 + "license": "MIT", 1123 + "engines": { 1124 + "node": ">= 0.6" 1125 + } 1126 + }, 1127 + "node_modules/debug": { 1128 + "version": "4.4.3", 1129 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", 1130 + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", 1131 + "dev": true, 1132 + "license": "MIT", 1133 + "dependencies": { 1134 + "ms": "^2.1.3" 1135 + }, 1136 + "engines": { 1137 + "node": ">=6.0" 1138 + }, 1139 + "peerDependenciesMeta": { 1140 + "supports-color": { 1141 + "optional": true 1142 + } 1143 + } 1144 + }, 1145 + "node_modules/deepmerge": { 1146 + "version": "4.3.1", 1147 + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 1148 + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 1149 + "dev": true, 1150 + "license": "MIT", 1151 + "engines": { 1152 + "node": ">=0.10.0" 1153 + } 1154 + }, 1155 + "node_modules/devalue": { 1156 + "version": "5.4.1", 1157 + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.4.1.tgz", 1158 + "integrity": "sha512-YtoaOfsqjbZQKGIMRYDWKjUmSB4VJ/RElB+bXZawQAQYAo4xu08GKTMVlsZDTF6R2MbAgjcAQRPI5eIyRAT2OQ==", 1159 + "dev": true, 1160 + "license": "MIT" 1161 + }, 1162 + "node_modules/esbuild": { 1163 + "version": "0.25.11", 1164 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", 1165 + "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", 1166 + "dev": true, 1167 + "hasInstallScript": true, 1168 + "license": "MIT", 1169 + "bin": { 1170 + "esbuild": "bin/esbuild" 1171 + }, 1172 + "engines": { 1173 + "node": ">=18" 1174 + }, 1175 + "optionalDependencies": { 1176 + "@esbuild/aix-ppc64": "0.25.11", 1177 + "@esbuild/android-arm": "0.25.11", 1178 + "@esbuild/android-arm64": "0.25.11", 1179 + "@esbuild/android-x64": "0.25.11", 1180 + "@esbuild/darwin-arm64": "0.25.11", 1181 + "@esbuild/darwin-x64": "0.25.11", 1182 + "@esbuild/freebsd-arm64": "0.25.11", 1183 + "@esbuild/freebsd-x64": "0.25.11", 1184 + "@esbuild/linux-arm": "0.25.11", 1185 + "@esbuild/linux-arm64": "0.25.11", 1186 + "@esbuild/linux-ia32": "0.25.11", 1187 + "@esbuild/linux-loong64": "0.25.11", 1188 + "@esbuild/linux-mips64el": "0.25.11", 1189 + "@esbuild/linux-ppc64": "0.25.11", 1190 + "@esbuild/linux-riscv64": "0.25.11", 1191 + "@esbuild/linux-s390x": "0.25.11", 1192 + "@esbuild/linux-x64": "0.25.11", 1193 + "@esbuild/netbsd-arm64": "0.25.11", 1194 + "@esbuild/netbsd-x64": "0.25.11", 1195 + "@esbuild/openbsd-arm64": "0.25.11", 1196 + "@esbuild/openbsd-x64": "0.25.11", 1197 + "@esbuild/openharmony-arm64": "0.25.11", 1198 + "@esbuild/sunos-x64": "0.25.11", 1199 + "@esbuild/win32-arm64": "0.25.11", 1200 + "@esbuild/win32-ia32": "0.25.11", 1201 + "@esbuild/win32-x64": "0.25.11" 1202 + } 1203 + }, 1204 + "node_modules/esm-env": { 1205 + "version": "1.2.2", 1206 + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", 1207 + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", 1208 + "license": "MIT" 1209 + }, 1210 + "node_modules/esrap": { 1211 + "version": "2.1.0", 1212 + "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.1.0.tgz", 1213 + "integrity": "sha512-yzmPNpl7TBbMRC5Lj2JlJZNPml0tzqoqP5B1JXycNUwtqma9AKCO0M2wHrdgsHcy1WRW7S9rJknAMtByg3usgA==", 1214 + "dev": true, 1215 + "license": "MIT", 1216 + "dependencies": { 1217 + "@jridgewell/sourcemap-codec": "^1.4.15" 1218 + } 1219 + }, 1220 + "node_modules/fdir": { 1221 + "version": "6.5.0", 1222 + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", 1223 + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", 1224 + "dev": true, 1225 + "license": "MIT", 1226 + "engines": { 1227 + "node": ">=12.0.0" 1228 + }, 1229 + "peerDependencies": { 1230 + "picomatch": "^3 || ^4" 1231 + }, 1232 + "peerDependenciesMeta": { 1233 + "picomatch": { 1234 + "optional": true 1235 + } 1236 + } 1237 + }, 1238 + "node_modules/fsevents": { 1239 + "version": "2.3.3", 1240 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1241 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1242 + "dev": true, 1243 + "hasInstallScript": true, 1244 + "license": "MIT", 1245 + "optional": true, 1246 + "os": [ 1247 + "darwin" 1248 + ], 1249 + "engines": { 1250 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1251 + } 1252 + }, 1253 + "node_modules/is-reference": { 1254 + "version": "3.0.3", 1255 + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", 1256 + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", 1257 + "dev": true, 1258 + "license": "MIT", 1259 + "dependencies": { 1260 + "@types/estree": "^1.0.6" 1261 + } 1262 + }, 1263 + "node_modules/kleur": { 1264 + "version": "4.1.5", 1265 + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 1266 + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 1267 + "dev": true, 1268 + "license": "MIT", 1269 + "engines": { 1270 + "node": ">=6" 1271 + } 1272 + }, 1273 + "node_modules/locate-character": { 1274 + "version": "3.0.0", 1275 + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", 1276 + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", 1277 + "dev": true, 1278 + "license": "MIT" 1279 + }, 1280 + "node_modules/magic-string": { 1281 + "version": "0.30.19", 1282 + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", 1283 + "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", 1284 + "dev": true, 1285 + "license": "MIT", 1286 + "dependencies": { 1287 + "@jridgewell/sourcemap-codec": "^1.5.5" 1288 + } 1289 + }, 1290 + "node_modules/mri": { 1291 + "version": "1.2.0", 1292 + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 1293 + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 1294 + "dev": true, 1295 + "license": "MIT", 1296 + "engines": { 1297 + "node": ">=4" 1298 + } 1299 + }, 1300 + "node_modules/mrmime": { 1301 + "version": "2.0.1", 1302 + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", 1303 + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", 1304 + "dev": true, 1305 + "license": "MIT", 1306 + "engines": { 1307 + "node": ">=10" 1308 + } 1309 + }, 1310 + "node_modules/ms": { 1311 + "version": "2.1.3", 1312 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1313 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1314 + "dev": true, 1315 + "license": "MIT" 1316 + }, 1317 + "node_modules/nanoid": { 1318 + "version": "3.3.11", 1319 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 1320 + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 1321 + "dev": true, 1322 + "funding": [ 1323 + { 1324 + "type": "github", 1325 + "url": "https://github.com/sponsors/ai" 1326 + } 1327 + ], 1328 + "license": "MIT", 1329 + "bin": { 1330 + "nanoid": "bin/nanoid.cjs" 1331 + }, 1332 + "engines": { 1333 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1334 + } 1335 + }, 1336 + "node_modules/picocolors": { 1337 + "version": "1.1.1", 1338 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1339 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1340 + "dev": true, 1341 + "license": "ISC" 1342 + }, 1343 + "node_modules/picomatch": { 1344 + "version": "4.0.3", 1345 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", 1346 + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", 1347 + "dev": true, 1348 + "license": "MIT", 1349 + "engines": { 1350 + "node": ">=12" 1351 + }, 1352 + "funding": { 1353 + "url": "https://github.com/sponsors/jonschlinkert" 1354 + } 1355 + }, 1356 + "node_modules/postcss": { 1357 + "version": "8.5.6", 1358 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", 1359 + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", 1360 + "dev": true, 1361 + "funding": [ 1362 + { 1363 + "type": "opencollective", 1364 + "url": "https://opencollective.com/postcss/" 1365 + }, 1366 + { 1367 + "type": "tidelift", 1368 + "url": "https://tidelift.com/funding/github/npm/postcss" 1369 + }, 1370 + { 1371 + "type": "github", 1372 + "url": "https://github.com/sponsors/ai" 1373 + } 1374 + ], 1375 + "license": "MIT", 1376 + "dependencies": { 1377 + "nanoid": "^3.3.11", 1378 + "picocolors": "^1.1.1", 1379 + "source-map-js": "^1.2.1" 1380 + }, 1381 + "engines": { 1382 + "node": "^10 || ^12 || >=14" 1383 + } 1384 + }, 1385 + "node_modules/prettier": { 1386 + "version": "3.6.2", 1387 + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", 1388 + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", 1389 + "dev": true, 1390 + "license": "MIT", 1391 + "bin": { 1392 + "prettier": "bin/prettier.cjs" 1393 + }, 1394 + "engines": { 1395 + "node": ">=14" 1396 + }, 1397 + "funding": { 1398 + "url": "https://github.com/prettier/prettier?sponsor=1" 1399 + } 1400 + }, 1401 + "node_modules/prettier-plugin-svelte": { 1402 + "version": "3.4.0", 1403 + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.4.0.tgz", 1404 + "integrity": "sha512-pn1ra/0mPObzqoIQn/vUTR3ZZI6UuZ0sHqMK5x2jMLGrs53h0sXhkVuDcrlssHwIMk7FYrMjHBPoUSyyEEDlBQ==", 1405 + "dev": true, 1406 + "license": "MIT", 1407 + "peerDependencies": { 1408 + "prettier": "^3.0.0", 1409 + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" 1410 + } 1411 + }, 1412 + "node_modules/readdirp": { 1413 + "version": "4.1.2", 1414 + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", 1415 + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", 1416 + "dev": true, 1417 + "license": "MIT", 1418 + "engines": { 1419 + "node": ">= 14.18.0" 1420 + }, 1421 + "funding": { 1422 + "type": "individual", 1423 + "url": "https://paulmillr.com/funding/" 1424 + } 1425 + }, 1426 + "node_modules/rollup": { 1427 + "version": "4.52.4", 1428 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz", 1429 + "integrity": "sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==", 1430 + "dev": true, 1431 + "license": "MIT", 1432 + "dependencies": { 1433 + "@types/estree": "1.0.8" 1434 + }, 1435 + "bin": { 1436 + "rollup": "dist/bin/rollup" 1437 + }, 1438 + "engines": { 1439 + "node": ">=18.0.0", 1440 + "npm": ">=8.0.0" 1441 + }, 1442 + "optionalDependencies": { 1443 + "@rollup/rollup-android-arm-eabi": "4.52.4", 1444 + "@rollup/rollup-android-arm64": "4.52.4", 1445 + "@rollup/rollup-darwin-arm64": "4.52.4", 1446 + "@rollup/rollup-darwin-x64": "4.52.4", 1447 + "@rollup/rollup-freebsd-arm64": "4.52.4", 1448 + "@rollup/rollup-freebsd-x64": "4.52.4", 1449 + "@rollup/rollup-linux-arm-gnueabihf": "4.52.4", 1450 + "@rollup/rollup-linux-arm-musleabihf": "4.52.4", 1451 + "@rollup/rollup-linux-arm64-gnu": "4.52.4", 1452 + "@rollup/rollup-linux-arm64-musl": "4.52.4", 1453 + "@rollup/rollup-linux-loong64-gnu": "4.52.4", 1454 + "@rollup/rollup-linux-ppc64-gnu": "4.52.4", 1455 + "@rollup/rollup-linux-riscv64-gnu": "4.52.4", 1456 + "@rollup/rollup-linux-riscv64-musl": "4.52.4", 1457 + "@rollup/rollup-linux-s390x-gnu": "4.52.4", 1458 + "@rollup/rollup-linux-x64-gnu": "4.52.4", 1459 + "@rollup/rollup-linux-x64-musl": "4.52.4", 1460 + "@rollup/rollup-openharmony-arm64": "4.52.4", 1461 + "@rollup/rollup-win32-arm64-msvc": "4.52.4", 1462 + "@rollup/rollup-win32-ia32-msvc": "4.52.4", 1463 + "@rollup/rollup-win32-x64-gnu": "4.52.4", 1464 + "@rollup/rollup-win32-x64-msvc": "4.52.4", 1465 + "fsevents": "~2.3.2" 1466 + } 1467 + }, 1468 + "node_modules/sade": { 1469 + "version": "1.8.1", 1470 + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 1471 + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 1472 + "dev": true, 1473 + "license": "MIT", 1474 + "dependencies": { 1475 + "mri": "^1.1.0" 1476 + }, 1477 + "engines": { 1478 + "node": ">=6" 1479 + } 1480 + }, 1481 + "node_modules/set-cookie-parser": { 1482 + "version": "2.7.1", 1483 + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", 1484 + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", 1485 + "dev": true, 1486 + "license": "MIT" 1487 + }, 1488 + "node_modules/sirv": { 1489 + "version": "3.0.2", 1490 + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", 1491 + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", 1492 + "dev": true, 1493 + "license": "MIT", 1494 + "dependencies": { 1495 + "@polka/url": "^1.0.0-next.24", 1496 + "mrmime": "^2.0.0", 1497 + "totalist": "^3.0.0" 1498 + }, 1499 + "engines": { 1500 + "node": ">=18" 1501 + } 1502 + }, 1503 + "node_modules/source-map-js": { 1504 + "version": "1.2.1", 1505 + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 1506 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 1507 + "dev": true, 1508 + "license": "BSD-3-Clause", 1509 + "engines": { 1510 + "node": ">=0.10.0" 1511 + } 1512 + }, 1513 + "node_modules/svelte": { 1514 + "version": "5.40.1", 1515 + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.40.1.tgz", 1516 + "integrity": "sha512-0R3t2oiLxJNJb2buz61MNfPdkjeyj2qTCM7TtIv/4ZfF12zD7Ig8iIo+C8febroy+9S4QJ7qfijtearSdO/1ww==", 1517 + "dev": true, 1518 + "license": "MIT", 1519 + "dependencies": { 1520 + "@jridgewell/remapping": "^2.3.4", 1521 + "@jridgewell/sourcemap-codec": "^1.5.0", 1522 + "@sveltejs/acorn-typescript": "^1.0.5", 1523 + "@types/estree": "^1.0.5", 1524 + "acorn": "^8.12.1", 1525 + "aria-query": "^5.3.1", 1526 + "axobject-query": "^4.1.0", 1527 + "clsx": "^2.1.1", 1528 + "esm-env": "^1.2.1", 1529 + "esrap": "^2.1.0", 1530 + "is-reference": "^3.0.3", 1531 + "locate-character": "^3.0.0", 1532 + "magic-string": "^0.30.11", 1533 + "zimmerframe": "^1.1.2" 1534 + }, 1535 + "engines": { 1536 + "node": ">=18" 1537 + } 1538 + }, 1539 + "node_modules/svelte-check": { 1540 + "version": "4.3.3", 1541 + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.3.3.tgz", 1542 + "integrity": "sha512-RYP0bEwenDXzfv0P1sKAwjZSlaRyqBn0Fz1TVni58lqyEiqgwztTpmodJrGzP6ZT2aHl4MbTvWP6gbmQ3FOnBg==", 1543 + "dev": true, 1544 + "license": "MIT", 1545 + "dependencies": { 1546 + "@jridgewell/trace-mapping": "^0.3.25", 1547 + "chokidar": "^4.0.1", 1548 + "fdir": "^6.2.0", 1549 + "picocolors": "^1.0.0", 1550 + "sade": "^1.7.4" 1551 + }, 1552 + "bin": { 1553 + "svelte-check": "bin/svelte-check" 1554 + }, 1555 + "engines": { 1556 + "node": ">= 18.0.0" 1557 + }, 1558 + "peerDependencies": { 1559 + "svelte": "^4.0.0 || ^5.0.0-next.0", 1560 + "typescript": ">=5.0.0" 1561 + } 1562 + }, 1563 + "node_modules/tinyglobby": { 1564 + "version": "0.2.15", 1565 + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", 1566 + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", 1567 + "dev": true, 1568 + "license": "MIT", 1569 + "dependencies": { 1570 + "fdir": "^6.5.0", 1571 + "picomatch": "^4.0.3" 1572 + }, 1573 + "engines": { 1574 + "node": ">=12.0.0" 1575 + }, 1576 + "funding": { 1577 + "url": "https://github.com/sponsors/SuperchupuDev" 1578 + } 1579 + }, 1580 + "node_modules/totalist": { 1581 + "version": "3.0.1", 1582 + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", 1583 + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", 1584 + "dev": true, 1585 + "license": "MIT", 1586 + "engines": { 1587 + "node": ">=6" 1588 + } 1589 + }, 1590 + "node_modules/typescript": { 1591 + "version": "5.9.3", 1592 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", 1593 + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", 1594 + "dev": true, 1595 + "license": "Apache-2.0", 1596 + "bin": { 1597 + "tsc": "bin/tsc", 1598 + "tsserver": "bin/tsserver" 1599 + }, 1600 + "engines": { 1601 + "node": ">=14.17" 1602 + } 1603 + }, 1604 + "node_modules/vite": { 1605 + "version": "7.1.10", 1606 + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.10.tgz", 1607 + "integrity": "sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==", 1608 + "dev": true, 1609 + "license": "MIT", 1610 + "dependencies": { 1611 + "esbuild": "^0.25.0", 1612 + "fdir": "^6.5.0", 1613 + "picomatch": "^4.0.3", 1614 + "postcss": "^8.5.6", 1615 + "rollup": "^4.43.0", 1616 + "tinyglobby": "^0.2.15" 1617 + }, 1618 + "bin": { 1619 + "vite": "bin/vite.js" 1620 + }, 1621 + "engines": { 1622 + "node": "^20.19.0 || >=22.12.0" 1623 + }, 1624 + "funding": { 1625 + "url": "https://github.com/vitejs/vite?sponsor=1" 1626 + }, 1627 + "optionalDependencies": { 1628 + "fsevents": "~2.3.3" 1629 + }, 1630 + "peerDependencies": { 1631 + "@types/node": "^20.19.0 || >=22.12.0", 1632 + "jiti": ">=1.21.0", 1633 + "less": "^4.0.0", 1634 + "lightningcss": "^1.21.0", 1635 + "sass": "^1.70.0", 1636 + "sass-embedded": "^1.70.0", 1637 + "stylus": ">=0.54.8", 1638 + "sugarss": "^5.0.0", 1639 + "terser": "^5.16.0", 1640 + "tsx": "^4.8.1", 1641 + "yaml": "^2.4.2" 1642 + }, 1643 + "peerDependenciesMeta": { 1644 + "@types/node": { 1645 + "optional": true 1646 + }, 1647 + "jiti": { 1648 + "optional": true 1649 + }, 1650 + "less": { 1651 + "optional": true 1652 + }, 1653 + "lightningcss": { 1654 + "optional": true 1655 + }, 1656 + "sass": { 1657 + "optional": true 1658 + }, 1659 + "sass-embedded": { 1660 + "optional": true 1661 + }, 1662 + "stylus": { 1663 + "optional": true 1664 + }, 1665 + "sugarss": { 1666 + "optional": true 1667 + }, 1668 + "terser": { 1669 + "optional": true 1670 + }, 1671 + "tsx": { 1672 + "optional": true 1673 + }, 1674 + "yaml": { 1675 + "optional": true 1676 + } 1677 + } 1678 + }, 1679 + "node_modules/vitefu": { 1680 + "version": "1.1.1", 1681 + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", 1682 + "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", 1683 + "dev": true, 1684 + "license": "MIT", 1685 + "workspaces": [ 1686 + "tests/deps/*", 1687 + "tests/projects/*", 1688 + "tests/projects/workspace/packages/*" 1689 + ], 1690 + "peerDependencies": { 1691 + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" 1692 + }, 1693 + "peerDependenciesMeta": { 1694 + "vite": { 1695 + "optional": true 1696 + } 1697 + } 1698 + }, 1699 + "node_modules/zimmerframe": { 1700 + "version": "1.1.4", 1701 + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", 1702 + "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==", 1703 + "dev": true, 1704 + "license": "MIT" 1705 + } 1706 + } 1707 + }
+33
package.json
··· 1 + { 2 + "name": "athost", 3 + "private": true, 4 + "version": "0.0.1", 5 + "type": "module", 6 + "scripts": { 7 + "dev": "vite dev", 8 + "build": "vite build", 9 + "preview": "vite preview", 10 + "prepare": "svelte-kit sync || echo ''", 11 + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 12 + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 13 + "format": "prettier --write .", 14 + "lint": "prettier --check ." 15 + }, 16 + "devDependencies": { 17 + "@sveltejs/adapter-auto": "^6.1.0", 18 + "@sveltejs/kit": "^2.43.2", 19 + "@sveltejs/vite-plugin-svelte": "^6.2.0", 20 + "prettier": "^3.6.2", 21 + "prettier-plugin-svelte": "^3.4.0", 22 + "svelte": "^5.39.5", 23 + "svelte-check": "^4.3.2", 24 + "typescript": "^5.9.2", 25 + "vite": "^7.1.7" 26 + }, 27 + "dependencies": { 28 + "@atcute/atproto": "^3.1.7", 29 + "@atcute/bluesky": "^3.2.7", 30 + "@atcute/client": "^4.0.5", 31 + "@atcute/oauth-browser-client": "^1.0.27" 32 + } 33 + }
+13
src/app.d.ts
··· 1 + // See https://svelte.dev/docs/kit/types#app.d.ts 2 + // for information about these interfaces 3 + declare global { 4 + namespace App { 5 + // interface Error {} 6 + // interface Locals {} 7 + // interface PageData {} 8 + // interface PageState {} 9 + // interface Platform {} 10 + } 11 + } 12 + 13 + export {};
+11
src/app.html
··· 1 + <!doctype html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="utf-8" /> 5 + <meta name="viewport" content="width=device-width, initial-scale=1" /> 6 + %sveltekit.head% 7 + </head> 8 + <body data-sveltekit-preload-data="hover"> 9 + <div style="display: contents">%sveltekit.body%</div> 10 + </body> 11 + </html>
+1
src/lib/assets/favicon.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" width="107" height="128" viewBox="0 0 107 128"><title>svelte-logo</title><path d="M94.157 22.819c-10.4-14.885-30.94-19.297-45.792-9.835L22.282 29.608A29.92 29.92 0 0 0 8.764 49.65a31.5 31.5 0 0 0 3.108 20.231 30 30 0 0 0-4.477 11.183 31.9 31.9 0 0 0 5.448 24.116c10.402 14.887 30.942 19.297 45.791 9.835l26.083-16.624A29.92 29.92 0 0 0 98.235 78.35a31.53 31.53 0 0 0-3.105-20.232 30 30 0 0 0 4.474-11.182 31.88 31.88 0 0 0-5.447-24.116" style="fill:#ff3e00"/><path d="M45.817 106.582a20.72 20.72 0 0 1-22.237-8.243 19.17 19.17 0 0 1-3.277-14.503 18 18 0 0 1 .624-2.435l.49-1.498 1.337.981a33.6 33.6 0 0 0 10.203 5.098l.97.294-.09.968a5.85 5.85 0 0 0 1.052 3.878 6.24 6.24 0 0 0 6.695 2.485 5.8 5.8 0 0 0 1.603-.704L69.27 76.28a5.43 5.43 0 0 0 2.45-3.631 5.8 5.8 0 0 0-.987-4.371 6.24 6.24 0 0 0-6.698-2.487 5.7 5.7 0 0 0-1.6.704l-9.953 6.345a19 19 0 0 1-5.296 2.326 20.72 20.72 0 0 1-22.237-8.243 19.17 19.17 0 0 1-3.277-14.502 17.99 17.99 0 0 1 8.13-12.052l26.081-16.623a19 19 0 0 1 5.3-2.329 20.72 20.72 0 0 1 22.237 8.243 19.17 19.17 0 0 1 3.277 14.503 18 18 0 0 1-.624 2.435l-.49 1.498-1.337-.98a33.6 33.6 0 0 0-10.203-5.1l-.97-.294.09-.968a5.86 5.86 0 0 0-1.052-3.878 6.24 6.24 0 0 0-6.696-2.485 5.8 5.8 0 0 0-1.602.704L37.73 51.72a5.42 5.42 0 0 0-2.449 3.63 5.79 5.79 0 0 0 .986 4.372 6.24 6.24 0 0 0 6.698 2.486 5.8 5.8 0 0 0 1.602-.704l9.952-6.342a19 19 0 0 1 5.295-2.328 20.72 20.72 0 0 1 22.237 8.242 19.17 19.17 0 0 1 3.277 14.503 18 18 0 0 1-8.13 12.053l-26.081 16.622a19 19 0 0 1-5.3 2.328" style="fill:#fff"/></svg>
+1
src/lib/index.ts
··· 1 + // place files you want to import through the `$lib` alias in this folder.
+10
src/lib/oauth.ts
··· 1 + import { PUBLIC_HOST, PUBLIC_REDIRECT_HOST } from "$env/static/public"; 2 + 3 + import { configureOAuth } from "@atcute/oauth-browser-client"; 4 + 5 + export const CLIENT_ID = `${PUBLIC_HOST}/client-metadata.json`; 6 + export const REDIRECT_URI = `${PUBLIC_REDIRECT_HOST || PUBLIC_HOST}/oauth/callback`; 7 + 8 + export function configure() { 9 + configureOAuth({ metadata: { client_id: CLIENT_ID, redirect_uri: REDIRECT_URI } }); 10 + }
+11
src/routes/+layout.svelte
··· 1 + <script lang="ts"> 2 + import favicon from "$lib/assets/favicon.svg"; 3 + 4 + let { children } = $props(); 5 + </script> 6 + 7 + <svelte:head> 8 + <link rel="icon" href={favicon} /> 9 + </svelte:head> 10 + 11 + {@render children?.()}
+1
src/routes/+layout.ts
··· 1 + export const ssr = false;
+28
src/routes/+page.svelte
··· 1 + <script lang="ts"> 2 + import { createAuthorizationUrl, resolveFromIdentity } from "@atcute/oauth-browser-client"; 3 + 4 + import { configure } from "~/lib/oauth"; 5 + 6 + configure(); 7 + 8 + async function submit(e: SubmitEvent & { currentTarget: HTMLFormElement }) { 9 + e.preventDefault(); 10 + const data = new FormData(e.currentTarget); 11 + const handle = data.get("handle"); 12 + if (typeof handle !== "string") throw new Error("invalid handle"); 13 + 14 + const { identity, metadata } = await resolveFromIdentity(handle); 15 + 16 + const scope = "atproto transition:generic"; 17 + const authUrl = await createAuthorizationUrl({ metadata, identity, scope }); 18 + localStorage.setItem("did", identity.id); 19 + await new Promise(r => setTimeout(r, 100)); 20 + 21 + window.location.assign(authUrl); 22 + } 23 + </script> 24 + 25 + <form on:submit={submit}> 26 + <input name="handle" /> 27 + <button>log in</button> 28 + </form>
+20
src/routes/client-metadata.json/+server.ts
··· 1 + import { CLIENT_ID, REDIRECT_URI } from "~/lib/oauth"; 2 + 3 + const clientId = new URL(CLIENT_ID); 4 + 5 + export function GET() { 6 + const json = JSON.stringify({ 7 + client_id: clientId.toString(), 8 + client_uri: clientId.origin, 9 + redirect_uris: [REDIRECT_URI], 10 + application_type: "native", 11 + client_name: "Example Browser App", 12 + dpop_bound_access_tokens: true, 13 + grant_types: ["authorization_code", "refresh_token"], 14 + response_types: ["code"], 15 + scope: "atproto transition:generic", 16 + token_endpoint_auth_method: "none", 17 + }); 18 + 19 + return new Response(json, { headers: { "content-type": "application/json" } }); 20 + }
+19
src/routes/oauth/callback/+page.svelte
··· 1 + <script lang="ts"> 2 + import { goto } from "$app/navigation"; 3 + 4 + import { finalizeAuthorization } from "@atcute/oauth-browser-client"; 5 + 6 + import { configure } from "~/lib/oauth"; 7 + 8 + configure(); 9 + 10 + const params = new URLSearchParams(location.hash.slice(1)); 11 + 12 + $effect(() => { 13 + finalizeAuthorization(params) 14 + .then(() => { 15 + goto("/~", { replaceState: true }); 16 + }) 17 + .catch(err => console.error(err)); 18 + }); 19 + </script>
+27
src/routes/~/+layout.svelte
··· 1 + <script lang="ts"> 2 + import { goto } from "$app/navigation"; 3 + import { OAuthUserAgent, deleteStoredSession } from "@atcute/oauth-browser-client"; 4 + 5 + let { children, data } = $props(); 6 + 7 + async function logOut() { 8 + try { 9 + const agent = new OAuthUserAgent(data.session); 10 + await agent.signOut(); 11 + } catch (e) { 12 + console.error(e); 13 + deleteStoredSession(data.did); 14 + } finally { 15 + goto("/"); 16 + } 17 + } 18 + </script> 19 + 20 + <header> 21 + <h1>hello, {data.name}</h1> 22 + <button onclick={logOut}>log out</button> 23 + </header> 24 + 25 + <div class="body"> 26 + {@render children?.()} 27 + </div>
+31
src/routes/~/+layout.ts
··· 1 + import type {} from "@atcute/bluesky"; 2 + import { Client, isXRPCErrorPayload } from "@atcute/client"; 3 + import { getSession, OAuthUserAgent } from "@atcute/oauth-browser-client"; 4 + 5 + import { configure } from "~/lib/oauth"; 6 + 7 + import type { LayoutLoad } from "./$types"; 8 + import { redirect } from "@sveltejs/kit"; 9 + 10 + configure(); 11 + 12 + export const load: LayoutLoad = async () => { 13 + try { 14 + const did = localStorage.getItem("did") as any; 15 + const session = await getSession(did, { allowStale: true }); 16 + 17 + const handler = new OAuthUserAgent(session); 18 + const rpc = new Client({ handler }); 19 + 20 + const { data } = await rpc.get("app.bsky.actor.getProfile", { 21 + params: { actor: did }, 22 + }); 23 + 24 + if (isXRPCErrorPayload(data)) throw new Error("couldn't load profile"); 25 + 26 + return { session, did, name: data.displayName }; 27 + } catch (e) { 28 + console.error(e); 29 + redirect(303, "/"); 30 + } 31 + };
+38
src/routes/~/+page.svelte
··· 1 + <script lang="ts"> 2 + import type {} from "@atcute/atproto"; 3 + import { Client } from "@atcute/client"; 4 + import { OAuthUserAgent } from "@atcute/oauth-browser-client"; 5 + 6 + let { data } = $props(); 7 + 8 + const handler = new OAuthUserAgent(data.session); 9 + const rpc = new Client({ handler }); 10 + 11 + async function createWebsite(e: SubmitEvent & { currentTarget: HTMLFormElement }) { 12 + e.preventDefault(); 13 + const form = new FormData(e.currentTarget); 14 + 15 + const name = form.get("name"); 16 + if (typeof name !== "string") throw new Error("invalid name"); 17 + 18 + await rpc.post("com.atproto.repo.putRecord", { 19 + input: { 20 + repo: data.did, 21 + collection: "com.jakelazaroff.test", 22 + rkey: name, 23 + record: {}, 24 + }, 25 + }); 26 + } 27 + </script> 28 + 29 + <form onsubmit={createWebsite}> 30 + <input type="text" name="name" /> 31 + <button>create</button> 32 + </form> 33 + 34 + <ul> 35 + {#each data.records as record} 36 + <li>{record.uri}</li> 37 + {/each} 38 + </ul>
+30
src/routes/~/+page.ts
··· 1 + import type {} from "@atcute/atproto"; 2 + import { Client, isXRPCErrorPayload } from "@atcute/client"; 3 + import { getSession, OAuthUserAgent } from "@atcute/oauth-browser-client"; 4 + 5 + import { configure } from "~/lib/oauth"; 6 + 7 + import type { PageLoad } from "./$types"; 8 + import { redirect } from "@sveltejs/kit"; 9 + 10 + configure(); 11 + 12 + export const load: PageLoad = async ({ parent }) => { 13 + try { 14 + const { did, session } = await parent(); 15 + 16 + const handler = new OAuthUserAgent(session); 17 + const rpc = new Client({ handler }); 18 + 19 + const { data } = await rpc.get("com.atproto.repo.listRecords", { 20 + params: { repo: did, collection: "com.jakelazaroff.test" }, 21 + }); 22 + 23 + if (isXRPCErrorPayload(data)) throw new Error("couldn't load records"); 24 + 25 + return { records: data.records }; 26 + } catch (e) { 27 + console.error(e); 28 + redirect(303, "/"); 29 + } 30 + };
+3
static/robots.txt
··· 1 + # allow crawling everything by default 2 + User-agent: * 3 + Disallow:
+14
svelte.config.js
··· 1 + import adapter from "@sveltejs/adapter-auto"; 2 + import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; 3 + 4 + /** @type {import('@sveltejs/kit').Config} */ 5 + const config = { 6 + compilerOptions: { experimental: { async: true } }, 7 + preprocess: vitePreprocess(), 8 + kit: { 9 + adapter: adapter(), 10 + alias: { "~/*": "src/*" }, 11 + }, 12 + }; 13 + 14 + export default config;
+19
tsconfig.json
··· 1 + { 2 + "extends": "./.svelte-kit/tsconfig.json", 3 + "compilerOptions": { 4 + "allowJs": true, 5 + "checkJs": true, 6 + "esModuleInterop": true, 7 + "forceConsistentCasingInFileNames": true, 8 + "resolveJsonModule": true, 9 + "skipLibCheck": true, 10 + "sourceMap": true, 11 + "strict": true, 12 + "moduleResolution": "bundler" 13 + } 14 + // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias 15 + // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files 16 + // 17 + // To make changes to top-level options such as include and exclude, we recommend extending 18 + // the generated config; see https://svelte.dev/docs/kit/configuration#typescript 19 + }
+7
vite.config.ts
··· 1 + import { sveltekit } from "@sveltejs/kit/vite"; 2 + import { defineConfig } from "vite"; 3 + 4 + export default defineConfig({ 5 + plugins: [sveltekit()], 6 + server: { host: "0.0.0.0", allowedHosts: true }, 7 + });