simple atproto oauth for static svelte apps flo-bit.dev/svelte-atproto-client-oauth/

major updates

Florian 893434f9 7f55cb60

+3678 -4018
+23 -29
README.md
··· 1 1 # svelte atproto client oauth demo 2 2 3 3 this is a scaffold for how to get client side oauth working with sveltekit and atproto 4 - using the [`@atcute/oauth-browser-client`](https://github.com/mary-ext/atcute) library. 4 + using the [`atcute`](https://github.com/mary-ext/atcute) libraries. 5 5 6 6 useful when you want people to login to your static sveltekit site. 7 7 ··· 10 10 ### either clone this repo 11 11 12 12 1. clone this repo 13 - 2. run `npm install` 14 - 3. run `npm run dev` 13 + 2. run `pnpm install` 14 + 3. run `pnpm run dev` 15 15 4. go to `http://127.0.0.1:5179` 16 - 5. for deployment change the `SITE_URL` variable in `src/lib/oauth/const.ts` 17 - (e.g. for github pages: `https://your-username.github.io`) and set your base in `svelte.config.js` 18 - (e.g. for github pages: `base: '/your-repo-name/'`) while keeping it as `''` in development. 16 + 5. if necessary change base in `svelte.config.js` 19 17 20 - ``` 18 + ```js 21 19 const config = { 22 20 // ... 23 21 ··· 34 32 ### or manually install in your own project 35 33 36 34 1. copy the `src/lib/oauth` folder into your own project 37 - 2. also copy the `src/routes/client-metadata.json` folder into your project 38 - 3. add the following to your `src/routes/+layout.svelte` 35 + 2. also copy the `src/routes/oauth-client-metadata.json.json` folder into your project 36 + 3. initialize the client in your `src/routes/+layout.svelte` 39 37 40 38 ```svelte 41 39 <script> 42 40 import { initClient } from '$lib/oauth'; 41 + 42 + let { children } = $props(); 43 43 44 44 onMount(() => { 45 45 initClient(); ··· 63 63 5. install the dependencies 64 64 65 65 ```bash 66 - npm install @atcute/oauth-browser-client @atcute/client 66 + npm install @atcute/atproto @atcute/bluesky @atcute/identity-resolver @atcute/lexicons @atcute/oauth-browser-client @atcute/client 67 67 ``` 68 68 69 - 6. for deployment change the `SITE_URL` variable in `src/lib/oauth/const.ts` 70 - (e.g. for github pages: `https://your-username.github.io`) and set your base in `svelte.config.js` 71 - (e.g. for github pages: `base: '/your-repo-name/'`) while keeping it as `''` in development. 69 + 6. set your base in `svelte.config.js` (e.g. for github pages: `base: '/your-repo-name/'`) while keeping it as `''` in development. 72 70 73 - ``` 71 + ```ts 74 72 const config = { 75 73 // ... 76 74 ··· 89 87 90 88 ### login flow 91 89 92 - Either use the `LoginModal` component to render a login modal or use the `client` object to handle the login flow yourself. 90 + Either use the `LoginModal` component to render a login modal or use the `user` object to handle the login flow yourself. 93 91 94 92 ```ts 95 93 // handlin login flow yourself 96 - import { client } from '$lib/oauth'; 94 + import { user } from '$lib/oauth'; 97 95 98 96 // methods: 99 - client.login(handle); // login the user 100 - client.isLoggedIn; // check if the user is logged in 101 - client.logout(); // logout the user 97 + user.login(handle); 98 + user.signup(); 99 + user.isLoggedIn; 100 + user.logout(); 102 101 ``` 103 102 104 103 LoginModal is a component that renders a login modal, add it for a quick login flow. ··· 116 115 117 116 ### make requests 118 117 119 - Get the user's profile and make requests with the `client.rpc` object. 118 + Get the user's profile and make requests with the `user.client` object. 120 119 121 120 ```ts 122 - import { client } from '$lib/oauth'; 121 + import { user } from '$lib/oauth'; 123 122 124 - // get the user's profile 125 - const profile = client.profile; 126 - 127 - // make requests with the client.rpc object 128 - const response = await client.rpc.request({ 129 - type: 'get', 130 - nsid: 'app.bsky.feed.getActorLikes', 123 + // make requests with the user.client object 124 + const response = await user.client.get('app.bsky.feed.getActorLikes', { 131 125 params: { 132 - actor: client.profile?.did, 126 + actor: client.did, 133 127 limit: 10 134 128 } 135 129 });
-3755
package-lock.json
··· 1 - { 2 - "name": "svelte-atproto-client-oauth", 3 - "version": "0.0.1", 4 - "lockfileVersion": 3, 5 - "requires": true, 6 - "packages": { 7 - "": { 8 - "name": "svelte-atproto-client-oauth", 9 - "version": "0.0.1", 10 - "dependencies": { 11 - "@atcute/oauth-browser-client": "^1.0.13" 12 - }, 13 - "devDependencies": { 14 - "@eslint/compat": "^1.2.5", 15 - "@eslint/js": "^9.18.0", 16 - "@sveltejs/adapter-auto": "^4.0.0", 17 - "@sveltejs/adapter-static": "^3.0.8", 18 - "@sveltejs/kit": "^2.16.0", 19 - "@sveltejs/vite-plugin-svelte": "^5.0.0", 20 - "@tailwindcss/forms": "^0.5.10", 21 - "@tailwindcss/vite": "^4.0.0", 22 - "eslint": "^9.18.0", 23 - "eslint-config-prettier": "^10.0.1", 24 - "eslint-plugin-svelte": "^2.46.1", 25 - "globals": "^15.14.0", 26 - "prettier": "^3.4.2", 27 - "prettier-plugin-svelte": "^3.3.3", 28 - "prettier-plugin-tailwindcss": "^0.6.11", 29 - "svelte": "^5.0.0", 30 - "svelte-check": "^4.0.0", 31 - "tailwindcss": "^4.0.0", 32 - "typescript": "^5.0.0", 33 - "typescript-eslint": "^8.20.0", 34 - "vite": "^6.0.0" 35 - } 36 - }, 37 - "node_modules/@ampproject/remapping": { 38 - "version": "2.3.0", 39 - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", 40 - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 41 - "dev": true, 42 - "dependencies": { 43 - "@jridgewell/gen-mapping": "^0.3.5", 44 - "@jridgewell/trace-mapping": "^0.3.24" 45 - }, 46 - "engines": { 47 - "node": ">=6.0.0" 48 - } 49 - }, 50 - "node_modules/@atcute/client": { 51 - "version": "2.0.8", 52 - "resolved": "https://registry.npmjs.org/@atcute/client/-/client-2.0.8.tgz", 53 - "integrity": "sha512-OTfiWwjB4mOTlp2InGStvoQ+PIA5lvih9cTYU8BvOhzNcCBUpt4l860MKZExHjvQ9Tt1kjq/ED9zRiUjsAgIxw==" 54 - }, 55 - "node_modules/@atcute/oauth-browser-client": { 56 - "version": "1.0.13", 57 - "resolved": "https://registry.npmjs.org/@atcute/oauth-browser-client/-/oauth-browser-client-1.0.13.tgz", 58 - "integrity": "sha512-JxQKl9Vo1V8poxvR9uKS8bkBv8t53DIH4lCbaih6yn9u7fM62ZC/0x/9KoGWSNqpp3R3U0y/DOQQfdC9Y4GEGQ==", 59 - "dependencies": { 60 - "@atcute/client": "^2.0.7" 61 - } 62 - }, 63 - "node_modules/@esbuild/aix-ppc64": { 64 - "version": "0.24.2", 65 - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", 66 - "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", 67 - "cpu": [ 68 - "ppc64" 69 - ], 70 - "dev": true, 71 - "optional": true, 72 - "os": [ 73 - "aix" 74 - ], 75 - "engines": { 76 - "node": ">=18" 77 - } 78 - }, 79 - "node_modules/@esbuild/android-arm": { 80 - "version": "0.24.2", 81 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", 82 - "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", 83 - "cpu": [ 84 - "arm" 85 - ], 86 - "dev": true, 87 - "optional": true, 88 - "os": [ 89 - "android" 90 - ], 91 - "engines": { 92 - "node": ">=18" 93 - } 94 - }, 95 - "node_modules/@esbuild/android-arm64": { 96 - "version": "0.24.2", 97 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", 98 - "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", 99 - "cpu": [ 100 - "arm64" 101 - ], 102 - "dev": true, 103 - "optional": true, 104 - "os": [ 105 - "android" 106 - ], 107 - "engines": { 108 - "node": ">=18" 109 - } 110 - }, 111 - "node_modules/@esbuild/android-x64": { 112 - "version": "0.24.2", 113 - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", 114 - "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", 115 - "cpu": [ 116 - "x64" 117 - ], 118 - "dev": true, 119 - "optional": true, 120 - "os": [ 121 - "android" 122 - ], 123 - "engines": { 124 - "node": ">=18" 125 - } 126 - }, 127 - "node_modules/@esbuild/darwin-arm64": { 128 - "version": "0.24.2", 129 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", 130 - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", 131 - "cpu": [ 132 - "arm64" 133 - ], 134 - "dev": true, 135 - "optional": true, 136 - "os": [ 137 - "darwin" 138 - ], 139 - "engines": { 140 - "node": ">=18" 141 - } 142 - }, 143 - "node_modules/@esbuild/darwin-x64": { 144 - "version": "0.24.2", 145 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", 146 - "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", 147 - "cpu": [ 148 - "x64" 149 - ], 150 - "dev": true, 151 - "optional": true, 152 - "os": [ 153 - "darwin" 154 - ], 155 - "engines": { 156 - "node": ">=18" 157 - } 158 - }, 159 - "node_modules/@esbuild/freebsd-arm64": { 160 - "version": "0.24.2", 161 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", 162 - "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", 163 - "cpu": [ 164 - "arm64" 165 - ], 166 - "dev": true, 167 - "optional": true, 168 - "os": [ 169 - "freebsd" 170 - ], 171 - "engines": { 172 - "node": ">=18" 173 - } 174 - }, 175 - "node_modules/@esbuild/freebsd-x64": { 176 - "version": "0.24.2", 177 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", 178 - "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", 179 - "cpu": [ 180 - "x64" 181 - ], 182 - "dev": true, 183 - "optional": true, 184 - "os": [ 185 - "freebsd" 186 - ], 187 - "engines": { 188 - "node": ">=18" 189 - } 190 - }, 191 - "node_modules/@esbuild/linux-arm": { 192 - "version": "0.24.2", 193 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", 194 - "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", 195 - "cpu": [ 196 - "arm" 197 - ], 198 - "dev": true, 199 - "optional": true, 200 - "os": [ 201 - "linux" 202 - ], 203 - "engines": { 204 - "node": ">=18" 205 - } 206 - }, 207 - "node_modules/@esbuild/linux-arm64": { 208 - "version": "0.24.2", 209 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", 210 - "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", 211 - "cpu": [ 212 - "arm64" 213 - ], 214 - "dev": true, 215 - "optional": true, 216 - "os": [ 217 - "linux" 218 - ], 219 - "engines": { 220 - "node": ">=18" 221 - } 222 - }, 223 - "node_modules/@esbuild/linux-ia32": { 224 - "version": "0.24.2", 225 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", 226 - "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", 227 - "cpu": [ 228 - "ia32" 229 - ], 230 - "dev": true, 231 - "optional": true, 232 - "os": [ 233 - "linux" 234 - ], 235 - "engines": { 236 - "node": ">=18" 237 - } 238 - }, 239 - "node_modules/@esbuild/linux-loong64": { 240 - "version": "0.24.2", 241 - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", 242 - "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", 243 - "cpu": [ 244 - "loong64" 245 - ], 246 - "dev": true, 247 - "optional": true, 248 - "os": [ 249 - "linux" 250 - ], 251 - "engines": { 252 - "node": ">=18" 253 - } 254 - }, 255 - "node_modules/@esbuild/linux-mips64el": { 256 - "version": "0.24.2", 257 - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", 258 - "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", 259 - "cpu": [ 260 - "mips64el" 261 - ], 262 - "dev": true, 263 - "optional": true, 264 - "os": [ 265 - "linux" 266 - ], 267 - "engines": { 268 - "node": ">=18" 269 - } 270 - }, 271 - "node_modules/@esbuild/linux-ppc64": { 272 - "version": "0.24.2", 273 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", 274 - "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", 275 - "cpu": [ 276 - "ppc64" 277 - ], 278 - "dev": true, 279 - "optional": true, 280 - "os": [ 281 - "linux" 282 - ], 283 - "engines": { 284 - "node": ">=18" 285 - } 286 - }, 287 - "node_modules/@esbuild/linux-riscv64": { 288 - "version": "0.24.2", 289 - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", 290 - "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", 291 - "cpu": [ 292 - "riscv64" 293 - ], 294 - "dev": true, 295 - "optional": true, 296 - "os": [ 297 - "linux" 298 - ], 299 - "engines": { 300 - "node": ">=18" 301 - } 302 - }, 303 - "node_modules/@esbuild/linux-s390x": { 304 - "version": "0.24.2", 305 - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", 306 - "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", 307 - "cpu": [ 308 - "s390x" 309 - ], 310 - "dev": true, 311 - "optional": true, 312 - "os": [ 313 - "linux" 314 - ], 315 - "engines": { 316 - "node": ">=18" 317 - } 318 - }, 319 - "node_modules/@esbuild/linux-x64": { 320 - "version": "0.24.2", 321 - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", 322 - "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", 323 - "cpu": [ 324 - "x64" 325 - ], 326 - "dev": true, 327 - "optional": true, 328 - "os": [ 329 - "linux" 330 - ], 331 - "engines": { 332 - "node": ">=18" 333 - } 334 - }, 335 - "node_modules/@esbuild/netbsd-arm64": { 336 - "version": "0.24.2", 337 - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", 338 - "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", 339 - "cpu": [ 340 - "arm64" 341 - ], 342 - "dev": true, 343 - "optional": true, 344 - "os": [ 345 - "netbsd" 346 - ], 347 - "engines": { 348 - "node": ">=18" 349 - } 350 - }, 351 - "node_modules/@esbuild/netbsd-x64": { 352 - "version": "0.24.2", 353 - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", 354 - "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", 355 - "cpu": [ 356 - "x64" 357 - ], 358 - "dev": true, 359 - "optional": true, 360 - "os": [ 361 - "netbsd" 362 - ], 363 - "engines": { 364 - "node": ">=18" 365 - } 366 - }, 367 - "node_modules/@esbuild/openbsd-arm64": { 368 - "version": "0.24.2", 369 - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", 370 - "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", 371 - "cpu": [ 372 - "arm64" 373 - ], 374 - "dev": true, 375 - "optional": true, 376 - "os": [ 377 - "openbsd" 378 - ], 379 - "engines": { 380 - "node": ">=18" 381 - } 382 - }, 383 - "node_modules/@esbuild/openbsd-x64": { 384 - "version": "0.24.2", 385 - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", 386 - "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", 387 - "cpu": [ 388 - "x64" 389 - ], 390 - "dev": true, 391 - "optional": true, 392 - "os": [ 393 - "openbsd" 394 - ], 395 - "engines": { 396 - "node": ">=18" 397 - } 398 - }, 399 - "node_modules/@esbuild/sunos-x64": { 400 - "version": "0.24.2", 401 - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", 402 - "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", 403 - "cpu": [ 404 - "x64" 405 - ], 406 - "dev": true, 407 - "optional": true, 408 - "os": [ 409 - "sunos" 410 - ], 411 - "engines": { 412 - "node": ">=18" 413 - } 414 - }, 415 - "node_modules/@esbuild/win32-arm64": { 416 - "version": "0.24.2", 417 - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", 418 - "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", 419 - "cpu": [ 420 - "arm64" 421 - ], 422 - "dev": true, 423 - "optional": true, 424 - "os": [ 425 - "win32" 426 - ], 427 - "engines": { 428 - "node": ">=18" 429 - } 430 - }, 431 - "node_modules/@esbuild/win32-ia32": { 432 - "version": "0.24.2", 433 - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", 434 - "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", 435 - "cpu": [ 436 - "ia32" 437 - ], 438 - "dev": true, 439 - "optional": true, 440 - "os": [ 441 - "win32" 442 - ], 443 - "engines": { 444 - "node": ">=18" 445 - } 446 - }, 447 - "node_modules/@esbuild/win32-x64": { 448 - "version": "0.24.2", 449 - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", 450 - "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", 451 - "cpu": [ 452 - "x64" 453 - ], 454 - "dev": true, 455 - "optional": true, 456 - "os": [ 457 - "win32" 458 - ], 459 - "engines": { 460 - "node": ">=18" 461 - } 462 - }, 463 - "node_modules/@eslint-community/eslint-utils": { 464 - "version": "4.4.1", 465 - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", 466 - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", 467 - "dev": true, 468 - "dependencies": { 469 - "eslint-visitor-keys": "^3.4.3" 470 - }, 471 - "engines": { 472 - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 473 - }, 474 - "funding": { 475 - "url": "https://opencollective.com/eslint" 476 - }, 477 - "peerDependencies": { 478 - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 479 - } 480 - }, 481 - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { 482 - "version": "3.4.3", 483 - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 484 - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 485 - "dev": true, 486 - "engines": { 487 - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 488 - }, 489 - "funding": { 490 - "url": "https://opencollective.com/eslint" 491 - } 492 - }, 493 - "node_modules/@eslint-community/regexpp": { 494 - "version": "4.12.1", 495 - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", 496 - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", 497 - "dev": true, 498 - "engines": { 499 - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 500 - } 501 - }, 502 - "node_modules/@eslint/compat": { 503 - "version": "1.2.7", 504 - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.7.tgz", 505 - "integrity": "sha512-xvv7hJE32yhegJ8xNAnb62ggiAwTYHBpUCWhRxEj/ksvgDJuSXfoDkBcRYaYNFiJ+jH0IE3K16hd+xXzhBgNbg==", 506 - "dev": true, 507 - "engines": { 508 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 509 - }, 510 - "peerDependencies": { 511 - "eslint": "^9.10.0" 512 - }, 513 - "peerDependenciesMeta": { 514 - "eslint": { 515 - "optional": true 516 - } 517 - } 518 - }, 519 - "node_modules/@eslint/config-array": { 520 - "version": "0.19.2", 521 - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", 522 - "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", 523 - "dev": true, 524 - "dependencies": { 525 - "@eslint/object-schema": "^2.1.6", 526 - "debug": "^4.3.1", 527 - "minimatch": "^3.1.2" 528 - }, 529 - "engines": { 530 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 531 - } 532 - }, 533 - "node_modules/@eslint/core": { 534 - "version": "0.12.0", 535 - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", 536 - "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", 537 - "dev": true, 538 - "dependencies": { 539 - "@types/json-schema": "^7.0.15" 540 - }, 541 - "engines": { 542 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 543 - } 544 - }, 545 - "node_modules/@eslint/eslintrc": { 546 - "version": "3.3.0", 547 - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", 548 - "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", 549 - "dev": true, 550 - "dependencies": { 551 - "ajv": "^6.12.4", 552 - "debug": "^4.3.2", 553 - "espree": "^10.0.1", 554 - "globals": "^14.0.0", 555 - "ignore": "^5.2.0", 556 - "import-fresh": "^3.2.1", 557 - "js-yaml": "^4.1.0", 558 - "minimatch": "^3.1.2", 559 - "strip-json-comments": "^3.1.1" 560 - }, 561 - "engines": { 562 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 563 - }, 564 - "funding": { 565 - "url": "https://opencollective.com/eslint" 566 - } 567 - }, 568 - "node_modules/@eslint/eslintrc/node_modules/globals": { 569 - "version": "14.0.0", 570 - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", 571 - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", 572 - "dev": true, 573 - "engines": { 574 - "node": ">=18" 575 - }, 576 - "funding": { 577 - "url": "https://github.com/sponsors/sindresorhus" 578 - } 579 - }, 580 - "node_modules/@eslint/js": { 581 - "version": "9.21.0", 582 - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", 583 - "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", 584 - "dev": true, 585 - "engines": { 586 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 587 - } 588 - }, 589 - "node_modules/@eslint/object-schema": { 590 - "version": "2.1.6", 591 - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", 592 - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", 593 - "dev": true, 594 - "engines": { 595 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 596 - } 597 - }, 598 - "node_modules/@eslint/plugin-kit": { 599 - "version": "0.2.7", 600 - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", 601 - "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", 602 - "dev": true, 603 - "dependencies": { 604 - "@eslint/core": "^0.12.0", 605 - "levn": "^0.4.1" 606 - }, 607 - "engines": { 608 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 609 - } 610 - }, 611 - "node_modules/@humanfs/core": { 612 - "version": "0.19.1", 613 - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", 614 - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", 615 - "dev": true, 616 - "engines": { 617 - "node": ">=18.18.0" 618 - } 619 - }, 620 - "node_modules/@humanfs/node": { 621 - "version": "0.16.6", 622 - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", 623 - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", 624 - "dev": true, 625 - "dependencies": { 626 - "@humanfs/core": "^0.19.1", 627 - "@humanwhocodes/retry": "^0.3.0" 628 - }, 629 - "engines": { 630 - "node": ">=18.18.0" 631 - } 632 - }, 633 - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { 634 - "version": "0.3.1", 635 - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", 636 - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", 637 - "dev": true, 638 - "engines": { 639 - "node": ">=18.18" 640 - }, 641 - "funding": { 642 - "type": "github", 643 - "url": "https://github.com/sponsors/nzakas" 644 - } 645 - }, 646 - "node_modules/@humanwhocodes/module-importer": { 647 - "version": "1.0.1", 648 - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 649 - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 650 - "dev": true, 651 - "engines": { 652 - "node": ">=12.22" 653 - }, 654 - "funding": { 655 - "type": "github", 656 - "url": "https://github.com/sponsors/nzakas" 657 - } 658 - }, 659 - "node_modules/@humanwhocodes/retry": { 660 - "version": "0.4.2", 661 - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", 662 - "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", 663 - "dev": true, 664 - "engines": { 665 - "node": ">=18.18" 666 - }, 667 - "funding": { 668 - "type": "github", 669 - "url": "https://github.com/sponsors/nzakas" 670 - } 671 - }, 672 - "node_modules/@jridgewell/gen-mapping": { 673 - "version": "0.3.8", 674 - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", 675 - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", 676 - "dev": true, 677 - "dependencies": { 678 - "@jridgewell/set-array": "^1.2.1", 679 - "@jridgewell/sourcemap-codec": "^1.4.10", 680 - "@jridgewell/trace-mapping": "^0.3.24" 681 - }, 682 - "engines": { 683 - "node": ">=6.0.0" 684 - } 685 - }, 686 - "node_modules/@jridgewell/resolve-uri": { 687 - "version": "3.1.2", 688 - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 689 - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 690 - "dev": true, 691 - "engines": { 692 - "node": ">=6.0.0" 693 - } 694 - }, 695 - "node_modules/@jridgewell/set-array": { 696 - "version": "1.2.1", 697 - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 698 - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 699 - "dev": true, 700 - "engines": { 701 - "node": ">=6.0.0" 702 - } 703 - }, 704 - "node_modules/@jridgewell/sourcemap-codec": { 705 - "version": "1.5.0", 706 - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 707 - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 708 - "dev": true 709 - }, 710 - "node_modules/@jridgewell/trace-mapping": { 711 - "version": "0.3.25", 712 - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 713 - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 714 - "dev": true, 715 - "dependencies": { 716 - "@jridgewell/resolve-uri": "^3.1.0", 717 - "@jridgewell/sourcemap-codec": "^1.4.14" 718 - } 719 - }, 720 - "node_modules/@nodelib/fs.scandir": { 721 - "version": "2.1.5", 722 - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 723 - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 724 - "dev": true, 725 - "dependencies": { 726 - "@nodelib/fs.stat": "2.0.5", 727 - "run-parallel": "^1.1.9" 728 - }, 729 - "engines": { 730 - "node": ">= 8" 731 - } 732 - }, 733 - "node_modules/@nodelib/fs.stat": { 734 - "version": "2.0.5", 735 - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 736 - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 737 - "dev": true, 738 - "engines": { 739 - "node": ">= 8" 740 - } 741 - }, 742 - "node_modules/@nodelib/fs.walk": { 743 - "version": "1.2.8", 744 - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 745 - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 746 - "dev": true, 747 - "dependencies": { 748 - "@nodelib/fs.scandir": "2.1.5", 749 - "fastq": "^1.6.0" 750 - }, 751 - "engines": { 752 - "node": ">= 8" 753 - } 754 - }, 755 - "node_modules/@polka/url": { 756 - "version": "1.0.0-next.28", 757 - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", 758 - "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", 759 - "dev": true 760 - }, 761 - "node_modules/@rollup/rollup-android-arm-eabi": { 762 - "version": "4.34.8", 763 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", 764 - "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", 765 - "cpu": [ 766 - "arm" 767 - ], 768 - "dev": true, 769 - "optional": true, 770 - "os": [ 771 - "android" 772 - ] 773 - }, 774 - "node_modules/@rollup/rollup-android-arm64": { 775 - "version": "4.34.8", 776 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", 777 - "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", 778 - "cpu": [ 779 - "arm64" 780 - ], 781 - "dev": true, 782 - "optional": true, 783 - "os": [ 784 - "android" 785 - ] 786 - }, 787 - "node_modules/@rollup/rollup-darwin-arm64": { 788 - "version": "4.34.8", 789 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", 790 - "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", 791 - "cpu": [ 792 - "arm64" 793 - ], 794 - "dev": true, 795 - "optional": true, 796 - "os": [ 797 - "darwin" 798 - ] 799 - }, 800 - "node_modules/@rollup/rollup-darwin-x64": { 801 - "version": "4.34.8", 802 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", 803 - "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", 804 - "cpu": [ 805 - "x64" 806 - ], 807 - "dev": true, 808 - "optional": true, 809 - "os": [ 810 - "darwin" 811 - ] 812 - }, 813 - "node_modules/@rollup/rollup-freebsd-arm64": { 814 - "version": "4.34.8", 815 - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", 816 - "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", 817 - "cpu": [ 818 - "arm64" 819 - ], 820 - "dev": true, 821 - "optional": true, 822 - "os": [ 823 - "freebsd" 824 - ] 825 - }, 826 - "node_modules/@rollup/rollup-freebsd-x64": { 827 - "version": "4.34.8", 828 - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", 829 - "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", 830 - "cpu": [ 831 - "x64" 832 - ], 833 - "dev": true, 834 - "optional": true, 835 - "os": [ 836 - "freebsd" 837 - ] 838 - }, 839 - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 840 - "version": "4.34.8", 841 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", 842 - "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", 843 - "cpu": [ 844 - "arm" 845 - ], 846 - "dev": true, 847 - "optional": true, 848 - "os": [ 849 - "linux" 850 - ] 851 - }, 852 - "node_modules/@rollup/rollup-linux-arm-musleabihf": { 853 - "version": "4.34.8", 854 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", 855 - "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", 856 - "cpu": [ 857 - "arm" 858 - ], 859 - "dev": true, 860 - "optional": true, 861 - "os": [ 862 - "linux" 863 - ] 864 - }, 865 - "node_modules/@rollup/rollup-linux-arm64-gnu": { 866 - "version": "4.34.8", 867 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", 868 - "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", 869 - "cpu": [ 870 - "arm64" 871 - ], 872 - "dev": true, 873 - "optional": true, 874 - "os": [ 875 - "linux" 876 - ] 877 - }, 878 - "node_modules/@rollup/rollup-linux-arm64-musl": { 879 - "version": "4.34.8", 880 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", 881 - "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", 882 - "cpu": [ 883 - "arm64" 884 - ], 885 - "dev": true, 886 - "optional": true, 887 - "os": [ 888 - "linux" 889 - ] 890 - }, 891 - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 892 - "version": "4.34.8", 893 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", 894 - "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", 895 - "cpu": [ 896 - "loong64" 897 - ], 898 - "dev": true, 899 - "optional": true, 900 - "os": [ 901 - "linux" 902 - ] 903 - }, 904 - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 905 - "version": "4.34.8", 906 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", 907 - "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", 908 - "cpu": [ 909 - "ppc64" 910 - ], 911 - "dev": true, 912 - "optional": true, 913 - "os": [ 914 - "linux" 915 - ] 916 - }, 917 - "node_modules/@rollup/rollup-linux-riscv64-gnu": { 918 - "version": "4.34.8", 919 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", 920 - "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", 921 - "cpu": [ 922 - "riscv64" 923 - ], 924 - "dev": true, 925 - "optional": true, 926 - "os": [ 927 - "linux" 928 - ] 929 - }, 930 - "node_modules/@rollup/rollup-linux-s390x-gnu": { 931 - "version": "4.34.8", 932 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", 933 - "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", 934 - "cpu": [ 935 - "s390x" 936 - ], 937 - "dev": true, 938 - "optional": true, 939 - "os": [ 940 - "linux" 941 - ] 942 - }, 943 - "node_modules/@rollup/rollup-linux-x64-gnu": { 944 - "version": "4.34.8", 945 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", 946 - "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", 947 - "cpu": [ 948 - "x64" 949 - ], 950 - "dev": true, 951 - "optional": true, 952 - "os": [ 953 - "linux" 954 - ] 955 - }, 956 - "node_modules/@rollup/rollup-linux-x64-musl": { 957 - "version": "4.34.8", 958 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", 959 - "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", 960 - "cpu": [ 961 - "x64" 962 - ], 963 - "dev": true, 964 - "optional": true, 965 - "os": [ 966 - "linux" 967 - ] 968 - }, 969 - "node_modules/@rollup/rollup-win32-arm64-msvc": { 970 - "version": "4.34.8", 971 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", 972 - "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", 973 - "cpu": [ 974 - "arm64" 975 - ], 976 - "dev": true, 977 - "optional": true, 978 - "os": [ 979 - "win32" 980 - ] 981 - }, 982 - "node_modules/@rollup/rollup-win32-ia32-msvc": { 983 - "version": "4.34.8", 984 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", 985 - "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", 986 - "cpu": [ 987 - "ia32" 988 - ], 989 - "dev": true, 990 - "optional": true, 991 - "os": [ 992 - "win32" 993 - ] 994 - }, 995 - "node_modules/@rollup/rollup-win32-x64-msvc": { 996 - "version": "4.34.8", 997 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", 998 - "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", 999 - "cpu": [ 1000 - "x64" 1001 - ], 1002 - "dev": true, 1003 - "optional": true, 1004 - "os": [ 1005 - "win32" 1006 - ] 1007 - }, 1008 - "node_modules/@sveltejs/adapter-auto": { 1009 - "version": "4.0.0", 1010 - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-4.0.0.tgz", 1011 - "integrity": "sha512-kmuYSQdD2AwThymQF0haQhM8rE5rhutQXG4LNbnbShwhMO4qQGnKaaTy+88DuNSuoQDi58+thpq8XpHc1+oEKQ==", 1012 - "dev": true, 1013 - "dependencies": { 1014 - "import-meta-resolve": "^4.1.0" 1015 - }, 1016 - "peerDependencies": { 1017 - "@sveltejs/kit": "^2.0.0" 1018 - } 1019 - }, 1020 - "node_modules/@sveltejs/adapter-static": { 1021 - "version": "3.0.8", 1022 - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.8.tgz", 1023 - "integrity": "sha512-YaDrquRpZwfcXbnlDsSrBQNCChVOT9MGuSg+dMAyfsAa1SmiAhrA5jUYUiIMC59G92kIbY/AaQOWcBdq+lh+zg==", 1024 - "dev": true, 1025 - "peerDependencies": { 1026 - "@sveltejs/kit": "^2.0.0" 1027 - } 1028 - }, 1029 - "node_modules/@sveltejs/kit": { 1030 - "version": "2.17.2", 1031 - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.17.2.tgz", 1032 - "integrity": "sha512-Vypk02baf7qd3SOB1uUwUC/3Oka+srPo2J0a8YN3EfJypRshDkNx9HzNKjSmhOnGWwT+SSO06+N0mAb8iVTmTQ==", 1033 - "dev": true, 1034 - "dependencies": { 1035 - "@types/cookie": "^0.6.0", 1036 - "cookie": "^0.6.0", 1037 - "devalue": "^5.1.0", 1038 - "esm-env": "^1.2.2", 1039 - "import-meta-resolve": "^4.1.0", 1040 - "kleur": "^4.1.5", 1041 - "magic-string": "^0.30.5", 1042 - "mrmime": "^2.0.0", 1043 - "sade": "^1.8.1", 1044 - "set-cookie-parser": "^2.6.0", 1045 - "sirv": "^3.0.0" 1046 - }, 1047 - "bin": { 1048 - "svelte-kit": "svelte-kit.js" 1049 - }, 1050 - "engines": { 1051 - "node": ">=18.13" 1052 - }, 1053 - "peerDependencies": { 1054 - "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0", 1055 - "svelte": "^4.0.0 || ^5.0.0-next.0", 1056 - "vite": "^5.0.3 || ^6.0.0" 1057 - } 1058 - }, 1059 - "node_modules/@sveltejs/vite-plugin-svelte": { 1060 - "version": "5.0.3", 1061 - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.0.3.tgz", 1062 - "integrity": "sha512-MCFS6CrQDu1yGwspm4qtli0e63vaPCehf6V7pIMP15AsWgMKrqDGCPFF/0kn4SP0ii4aySu4Pa62+fIRGFMjgw==", 1063 - "dev": true, 1064 - "dependencies": { 1065 - "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1", 1066 - "debug": "^4.4.0", 1067 - "deepmerge": "^4.3.1", 1068 - "kleur": "^4.1.5", 1069 - "magic-string": "^0.30.15", 1070 - "vitefu": "^1.0.4" 1071 - }, 1072 - "engines": { 1073 - "node": "^18.0.0 || ^20.0.0 || >=22" 1074 - }, 1075 - "peerDependencies": { 1076 - "svelte": "^5.0.0", 1077 - "vite": "^6.0.0" 1078 - } 1079 - }, 1080 - "node_modules/@sveltejs/vite-plugin-svelte-inspector": { 1081 - "version": "4.0.1", 1082 - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-4.0.1.tgz", 1083 - "integrity": "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==", 1084 - "dev": true, 1085 - "dependencies": { 1086 - "debug": "^4.3.7" 1087 - }, 1088 - "engines": { 1089 - "node": "^18.0.0 || ^20.0.0 || >=22" 1090 - }, 1091 - "peerDependencies": { 1092 - "@sveltejs/vite-plugin-svelte": "^5.0.0", 1093 - "svelte": "^5.0.0", 1094 - "vite": "^6.0.0" 1095 - } 1096 - }, 1097 - "node_modules/@tailwindcss/forms": { 1098 - "version": "0.5.10", 1099 - "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.10.tgz", 1100 - "integrity": "sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==", 1101 - "dev": true, 1102 - "dependencies": { 1103 - "mini-svg-data-uri": "^1.2.3" 1104 - }, 1105 - "peerDependencies": { 1106 - "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" 1107 - } 1108 - }, 1109 - "node_modules/@tailwindcss/node": { 1110 - "version": "4.0.8", 1111 - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.8.tgz", 1112 - "integrity": "sha512-FKArQpbrbwv08TNT0k7ejYXpF+R8knZFAatNc0acOxbgeqLzwb86r+P3LGOjIeI3Idqe9CVkZrh4GlsJLJKkkw==", 1113 - "dev": true, 1114 - "dependencies": { 1115 - "enhanced-resolve": "^5.18.1", 1116 - "jiti": "^2.4.2", 1117 - "tailwindcss": "4.0.8" 1118 - } 1119 - }, 1120 - "node_modules/@tailwindcss/oxide": { 1121 - "version": "4.0.8", 1122 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.8.tgz", 1123 - "integrity": "sha512-KfMcuAu/Iw+DcV1e8twrFyr2yN8/ZDC/odIGta4wuuJOGkrkHZbvJvRNIbQNhGh7erZTYV6Ie0IeD6WC9Y8Hcw==", 1124 - "dev": true, 1125 - "engines": { 1126 - "node": ">= 10" 1127 - }, 1128 - "optionalDependencies": { 1129 - "@tailwindcss/oxide-android-arm64": "4.0.8", 1130 - "@tailwindcss/oxide-darwin-arm64": "4.0.8", 1131 - "@tailwindcss/oxide-darwin-x64": "4.0.8", 1132 - "@tailwindcss/oxide-freebsd-x64": "4.0.8", 1133 - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.8", 1134 - "@tailwindcss/oxide-linux-arm64-gnu": "4.0.8", 1135 - "@tailwindcss/oxide-linux-arm64-musl": "4.0.8", 1136 - "@tailwindcss/oxide-linux-x64-gnu": "4.0.8", 1137 - "@tailwindcss/oxide-linux-x64-musl": "4.0.8", 1138 - "@tailwindcss/oxide-win32-arm64-msvc": "4.0.8", 1139 - "@tailwindcss/oxide-win32-x64-msvc": "4.0.8" 1140 - } 1141 - }, 1142 - "node_modules/@tailwindcss/oxide-android-arm64": { 1143 - "version": "4.0.8", 1144 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.8.tgz", 1145 - "integrity": "sha512-We7K79+Sm4mwJHk26Yzu/GAj7C7myemm7PeXvpgMxyxO70SSFSL3uCcqFbz9JA5M5UPkrl7N9fkBe/Y0iazqpA==", 1146 - "cpu": [ 1147 - "arm64" 1148 - ], 1149 - "dev": true, 1150 - "optional": true, 1151 - "os": [ 1152 - "android" 1153 - ], 1154 - "engines": { 1155 - "node": ">= 10" 1156 - } 1157 - }, 1158 - "node_modules/@tailwindcss/oxide-darwin-arm64": { 1159 - "version": "4.0.8", 1160 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.8.tgz", 1161 - "integrity": "sha512-Lv9Isi2EwkCTG1sRHNDi0uRNN1UGFdEThUAGFrydRmQZnraGLMjN8gahzg2FFnOizDl7LB2TykLUuiw833DSNg==", 1162 - "cpu": [ 1163 - "arm64" 1164 - ], 1165 - "dev": true, 1166 - "optional": true, 1167 - "os": [ 1168 - "darwin" 1169 - ], 1170 - "engines": { 1171 - "node": ">= 10" 1172 - } 1173 - }, 1174 - "node_modules/@tailwindcss/oxide-darwin-x64": { 1175 - "version": "4.0.8", 1176 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.8.tgz", 1177 - "integrity": "sha512-fWfywfYIlSWtKoqWTjukTHLWV3ARaBRjXCC2Eo0l6KVpaqGY4c2y8snUjp1xpxUtpqwMvCvFWFaleMoz1Vhzlw==", 1178 - "cpu": [ 1179 - "x64" 1180 - ], 1181 - "dev": true, 1182 - "optional": true, 1183 - "os": [ 1184 - "darwin" 1185 - ], 1186 - "engines": { 1187 - "node": ">= 10" 1188 - } 1189 - }, 1190 - "node_modules/@tailwindcss/oxide-freebsd-x64": { 1191 - "version": "4.0.8", 1192 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.8.tgz", 1193 - "integrity": "sha512-SO+dyvjJV9G94bnmq2288Ke0BIdvrbSbvtPLaQdqjqHR83v5L2fWADyFO+1oecHo9Owsk8MxcXh1agGVPIKIqw==", 1194 - "cpu": [ 1195 - "x64" 1196 - ], 1197 - "dev": true, 1198 - "optional": true, 1199 - "os": [ 1200 - "freebsd" 1201 - ], 1202 - "engines": { 1203 - "node": ">= 10" 1204 - } 1205 - }, 1206 - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { 1207 - "version": "4.0.8", 1208 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.8.tgz", 1209 - "integrity": "sha512-ZSHggWiEblQNV69V0qUK5vuAtHP+I+S2eGrKGJ5lPgwgJeAd6GjLsVBN+Mqn2SPVfYM3BOpS9jX/zVg9RWQVDQ==", 1210 - "cpu": [ 1211 - "arm" 1212 - ], 1213 - "dev": true, 1214 - "optional": true, 1215 - "os": [ 1216 - "linux" 1217 - ], 1218 - "engines": { 1219 - "node": ">= 10" 1220 - } 1221 - }, 1222 - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { 1223 - "version": "4.0.8", 1224 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.8.tgz", 1225 - "integrity": "sha512-xWpr6M0OZLDNsr7+bQz+3X7zcnDJZJ1N9gtBWCtfhkEtDjjxYEp+Lr5L5nc/yXlL4MyCHnn0uonGVXy3fhxaVA==", 1226 - "cpu": [ 1227 - "arm64" 1228 - ], 1229 - "dev": true, 1230 - "optional": true, 1231 - "os": [ 1232 - "linux" 1233 - ], 1234 - "engines": { 1235 - "node": ">= 10" 1236 - } 1237 - }, 1238 - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { 1239 - "version": "4.0.8", 1240 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.8.tgz", 1241 - "integrity": "sha512-5tz2IL7LN58ssGEq7h/staD7pu/izF/KeMWdlJ86WDe2Ah46LF3ET6ZGKTr5eZMrnEA0M9cVFuSPprKRHNgjeg==", 1242 - "cpu": [ 1243 - "arm64" 1244 - ], 1245 - "dev": true, 1246 - "optional": true, 1247 - "os": [ 1248 - "linux" 1249 - ], 1250 - "engines": { 1251 - "node": ">= 10" 1252 - } 1253 - }, 1254 - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { 1255 - "version": "4.0.8", 1256 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.8.tgz", 1257 - "integrity": "sha512-KSzMkhyrxAQyY2o194NKVKU9j/c+NFSoMvnHWFaNHKi3P1lb+Vq1UC19tLHrmxSkKapcMMu69D7+G1+FVGNDXQ==", 1258 - "cpu": [ 1259 - "x64" 1260 - ], 1261 - "dev": true, 1262 - "optional": true, 1263 - "os": [ 1264 - "linux" 1265 - ], 1266 - "engines": { 1267 - "node": ">= 10" 1268 - } 1269 - }, 1270 - "node_modules/@tailwindcss/oxide-linux-x64-musl": { 1271 - "version": "4.0.8", 1272 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.8.tgz", 1273 - "integrity": "sha512-yFYKG5UtHTRimjtqxUWXBgI4Tc6NJe3USjRIVdlTczpLRxq/SFwgzGl5JbatCxgSRDPBFwRrNPxq+ukfQFGdrw==", 1274 - "cpu": [ 1275 - "x64" 1276 - ], 1277 - "dev": true, 1278 - "optional": true, 1279 - "os": [ 1280 - "linux" 1281 - ], 1282 - "engines": { 1283 - "node": ">= 10" 1284 - } 1285 - }, 1286 - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { 1287 - "version": "4.0.8", 1288 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.8.tgz", 1289 - "integrity": "sha512-tndGujmCSba85cRCnQzXgpA2jx5gXimyspsUYae5jlPyLRG0RjXbDshFKOheVXU4TLflo7FSG8EHCBJ0EHTKdQ==", 1290 - "cpu": [ 1291 - "arm64" 1292 - ], 1293 - "dev": true, 1294 - "optional": true, 1295 - "os": [ 1296 - "win32" 1297 - ], 1298 - "engines": { 1299 - "node": ">= 10" 1300 - } 1301 - }, 1302 - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { 1303 - "version": "4.0.8", 1304 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.8.tgz", 1305 - "integrity": "sha512-T77jroAc0p4EHVVgTUiNeFn6Nj3jtD3IeNId2X+0k+N1XxfNipy81BEkYErpKLiOkNhpNFjPee8/ZVas29b2OQ==", 1306 - "cpu": [ 1307 - "x64" 1308 - ], 1309 - "dev": true, 1310 - "optional": true, 1311 - "os": [ 1312 - "win32" 1313 - ], 1314 - "engines": { 1315 - "node": ">= 10" 1316 - } 1317 - }, 1318 - "node_modules/@tailwindcss/vite": { 1319 - "version": "4.0.8", 1320 - "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.0.8.tgz", 1321 - "integrity": "sha512-+SAq44yLzYlzyrb7QTcFCdU8Xa7FOA0jp+Xby7fPMUie+MY9HhJysM7Vp+vL8qIp8ceQJfLD+FjgJuJ4lL6nyg==", 1322 - "dev": true, 1323 - "dependencies": { 1324 - "@tailwindcss/node": "4.0.8", 1325 - "@tailwindcss/oxide": "4.0.8", 1326 - "lightningcss": "^1.29.1", 1327 - "tailwindcss": "4.0.8" 1328 - }, 1329 - "peerDependencies": { 1330 - "vite": "^5.2.0 || ^6" 1331 - } 1332 - }, 1333 - "node_modules/@types/cookie": { 1334 - "version": "0.6.0", 1335 - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", 1336 - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", 1337 - "dev": true 1338 - }, 1339 - "node_modules/@types/estree": { 1340 - "version": "1.0.6", 1341 - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 1342 - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 1343 - "dev": true 1344 - }, 1345 - "node_modules/@types/json-schema": { 1346 - "version": "7.0.15", 1347 - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 1348 - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 1349 - "dev": true 1350 - }, 1351 - "node_modules/@typescript-eslint/eslint-plugin": { 1352 - "version": "8.24.1", 1353 - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.1.tgz", 1354 - "integrity": "sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==", 1355 - "dev": true, 1356 - "dependencies": { 1357 - "@eslint-community/regexpp": "^4.10.0", 1358 - "@typescript-eslint/scope-manager": "8.24.1", 1359 - "@typescript-eslint/type-utils": "8.24.1", 1360 - "@typescript-eslint/utils": "8.24.1", 1361 - "@typescript-eslint/visitor-keys": "8.24.1", 1362 - "graphemer": "^1.4.0", 1363 - "ignore": "^5.3.1", 1364 - "natural-compare": "^1.4.0", 1365 - "ts-api-utils": "^2.0.1" 1366 - }, 1367 - "engines": { 1368 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1369 - }, 1370 - "funding": { 1371 - "type": "opencollective", 1372 - "url": "https://opencollective.com/typescript-eslint" 1373 - }, 1374 - "peerDependencies": { 1375 - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", 1376 - "eslint": "^8.57.0 || ^9.0.0", 1377 - "typescript": ">=4.8.4 <5.8.0" 1378 - } 1379 - }, 1380 - "node_modules/@typescript-eslint/parser": { 1381 - "version": "8.24.1", 1382 - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.1.tgz", 1383 - "integrity": "sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==", 1384 - "dev": true, 1385 - "dependencies": { 1386 - "@typescript-eslint/scope-manager": "8.24.1", 1387 - "@typescript-eslint/types": "8.24.1", 1388 - "@typescript-eslint/typescript-estree": "8.24.1", 1389 - "@typescript-eslint/visitor-keys": "8.24.1", 1390 - "debug": "^4.3.4" 1391 - }, 1392 - "engines": { 1393 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1394 - }, 1395 - "funding": { 1396 - "type": "opencollective", 1397 - "url": "https://opencollective.com/typescript-eslint" 1398 - }, 1399 - "peerDependencies": { 1400 - "eslint": "^8.57.0 || ^9.0.0", 1401 - "typescript": ">=4.8.4 <5.8.0" 1402 - } 1403 - }, 1404 - "node_modules/@typescript-eslint/scope-manager": { 1405 - "version": "8.24.1", 1406 - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", 1407 - "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", 1408 - "dev": true, 1409 - "dependencies": { 1410 - "@typescript-eslint/types": "8.24.1", 1411 - "@typescript-eslint/visitor-keys": "8.24.1" 1412 - }, 1413 - "engines": { 1414 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1415 - }, 1416 - "funding": { 1417 - "type": "opencollective", 1418 - "url": "https://opencollective.com/typescript-eslint" 1419 - } 1420 - }, 1421 - "node_modules/@typescript-eslint/type-utils": { 1422 - "version": "8.24.1", 1423 - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.1.tgz", 1424 - "integrity": "sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==", 1425 - "dev": true, 1426 - "dependencies": { 1427 - "@typescript-eslint/typescript-estree": "8.24.1", 1428 - "@typescript-eslint/utils": "8.24.1", 1429 - "debug": "^4.3.4", 1430 - "ts-api-utils": "^2.0.1" 1431 - }, 1432 - "engines": { 1433 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1434 - }, 1435 - "funding": { 1436 - "type": "opencollective", 1437 - "url": "https://opencollective.com/typescript-eslint" 1438 - }, 1439 - "peerDependencies": { 1440 - "eslint": "^8.57.0 || ^9.0.0", 1441 - "typescript": ">=4.8.4 <5.8.0" 1442 - } 1443 - }, 1444 - "node_modules/@typescript-eslint/types": { 1445 - "version": "8.24.1", 1446 - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", 1447 - "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", 1448 - "dev": true, 1449 - "engines": { 1450 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1451 - }, 1452 - "funding": { 1453 - "type": "opencollective", 1454 - "url": "https://opencollective.com/typescript-eslint" 1455 - } 1456 - }, 1457 - "node_modules/@typescript-eslint/typescript-estree": { 1458 - "version": "8.24.1", 1459 - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", 1460 - "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", 1461 - "dev": true, 1462 - "dependencies": { 1463 - "@typescript-eslint/types": "8.24.1", 1464 - "@typescript-eslint/visitor-keys": "8.24.1", 1465 - "debug": "^4.3.4", 1466 - "fast-glob": "^3.3.2", 1467 - "is-glob": "^4.0.3", 1468 - "minimatch": "^9.0.4", 1469 - "semver": "^7.6.0", 1470 - "ts-api-utils": "^2.0.1" 1471 - }, 1472 - "engines": { 1473 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1474 - }, 1475 - "funding": { 1476 - "type": "opencollective", 1477 - "url": "https://opencollective.com/typescript-eslint" 1478 - }, 1479 - "peerDependencies": { 1480 - "typescript": ">=4.8.4 <5.8.0" 1481 - } 1482 - }, 1483 - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { 1484 - "version": "2.0.1", 1485 - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1486 - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1487 - "dev": true, 1488 - "dependencies": { 1489 - "balanced-match": "^1.0.0" 1490 - } 1491 - }, 1492 - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { 1493 - "version": "9.0.5", 1494 - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1495 - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1496 - "dev": true, 1497 - "dependencies": { 1498 - "brace-expansion": "^2.0.1" 1499 - }, 1500 - "engines": { 1501 - "node": ">=16 || 14 >=14.17" 1502 - }, 1503 - "funding": { 1504 - "url": "https://github.com/sponsors/isaacs" 1505 - } 1506 - }, 1507 - "node_modules/@typescript-eslint/utils": { 1508 - "version": "8.24.1", 1509 - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz", 1510 - "integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==", 1511 - "dev": true, 1512 - "dependencies": { 1513 - "@eslint-community/eslint-utils": "^4.4.0", 1514 - "@typescript-eslint/scope-manager": "8.24.1", 1515 - "@typescript-eslint/types": "8.24.1", 1516 - "@typescript-eslint/typescript-estree": "8.24.1" 1517 - }, 1518 - "engines": { 1519 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1520 - }, 1521 - "funding": { 1522 - "type": "opencollective", 1523 - "url": "https://opencollective.com/typescript-eslint" 1524 - }, 1525 - "peerDependencies": { 1526 - "eslint": "^8.57.0 || ^9.0.0", 1527 - "typescript": ">=4.8.4 <5.8.0" 1528 - } 1529 - }, 1530 - "node_modules/@typescript-eslint/visitor-keys": { 1531 - "version": "8.24.1", 1532 - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", 1533 - "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", 1534 - "dev": true, 1535 - "dependencies": { 1536 - "@typescript-eslint/types": "8.24.1", 1537 - "eslint-visitor-keys": "^4.2.0" 1538 - }, 1539 - "engines": { 1540 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1541 - }, 1542 - "funding": { 1543 - "type": "opencollective", 1544 - "url": "https://opencollective.com/typescript-eslint" 1545 - } 1546 - }, 1547 - "node_modules/acorn": { 1548 - "version": "8.14.0", 1549 - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", 1550 - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", 1551 - "dev": true, 1552 - "bin": { 1553 - "acorn": "bin/acorn" 1554 - }, 1555 - "engines": { 1556 - "node": ">=0.4.0" 1557 - } 1558 - }, 1559 - "node_modules/acorn-jsx": { 1560 - "version": "5.3.2", 1561 - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 1562 - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 1563 - "dev": true, 1564 - "peerDependencies": { 1565 - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 1566 - } 1567 - }, 1568 - "node_modules/acorn-typescript": { 1569 - "version": "1.4.13", 1570 - "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz", 1571 - "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==", 1572 - "dev": true, 1573 - "peerDependencies": { 1574 - "acorn": ">=8.9.0" 1575 - } 1576 - }, 1577 - "node_modules/ajv": { 1578 - "version": "6.12.6", 1579 - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1580 - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1581 - "dev": true, 1582 - "dependencies": { 1583 - "fast-deep-equal": "^3.1.1", 1584 - "fast-json-stable-stringify": "^2.0.0", 1585 - "json-schema-traverse": "^0.4.1", 1586 - "uri-js": "^4.2.2" 1587 - }, 1588 - "funding": { 1589 - "type": "github", 1590 - "url": "https://github.com/sponsors/epoberezkin" 1591 - } 1592 - }, 1593 - "node_modules/ansi-styles": { 1594 - "version": "4.3.0", 1595 - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1596 - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1597 - "dev": true, 1598 - "dependencies": { 1599 - "color-convert": "^2.0.1" 1600 - }, 1601 - "engines": { 1602 - "node": ">=8" 1603 - }, 1604 - "funding": { 1605 - "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1606 - } 1607 - }, 1608 - "node_modules/argparse": { 1609 - "version": "2.0.1", 1610 - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1611 - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1612 - "dev": true 1613 - }, 1614 - "node_modules/aria-query": { 1615 - "version": "5.3.2", 1616 - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", 1617 - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", 1618 - "dev": true, 1619 - "engines": { 1620 - "node": ">= 0.4" 1621 - } 1622 - }, 1623 - "node_modules/axobject-query": { 1624 - "version": "4.1.0", 1625 - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", 1626 - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", 1627 - "dev": true, 1628 - "engines": { 1629 - "node": ">= 0.4" 1630 - } 1631 - }, 1632 - "node_modules/balanced-match": { 1633 - "version": "1.0.2", 1634 - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1635 - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1636 - "dev": true 1637 - }, 1638 - "node_modules/brace-expansion": { 1639 - "version": "1.1.11", 1640 - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1641 - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1642 - "dev": true, 1643 - "dependencies": { 1644 - "balanced-match": "^1.0.0", 1645 - "concat-map": "0.0.1" 1646 - } 1647 - }, 1648 - "node_modules/braces": { 1649 - "version": "3.0.3", 1650 - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1651 - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1652 - "dev": true, 1653 - "dependencies": { 1654 - "fill-range": "^7.1.1" 1655 - }, 1656 - "engines": { 1657 - "node": ">=8" 1658 - } 1659 - }, 1660 - "node_modules/callsites": { 1661 - "version": "3.1.0", 1662 - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1663 - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1664 - "dev": true, 1665 - "engines": { 1666 - "node": ">=6" 1667 - } 1668 - }, 1669 - "node_modules/chalk": { 1670 - "version": "4.1.2", 1671 - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1672 - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1673 - "dev": true, 1674 - "dependencies": { 1675 - "ansi-styles": "^4.1.0", 1676 - "supports-color": "^7.1.0" 1677 - }, 1678 - "engines": { 1679 - "node": ">=10" 1680 - }, 1681 - "funding": { 1682 - "url": "https://github.com/chalk/chalk?sponsor=1" 1683 - } 1684 - }, 1685 - "node_modules/chokidar": { 1686 - "version": "4.0.3", 1687 - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", 1688 - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", 1689 - "dev": true, 1690 - "dependencies": { 1691 - "readdirp": "^4.0.1" 1692 - }, 1693 - "engines": { 1694 - "node": ">= 14.16.0" 1695 - }, 1696 - "funding": { 1697 - "url": "https://paulmillr.com/funding/" 1698 - } 1699 - }, 1700 - "node_modules/clsx": { 1701 - "version": "2.1.1", 1702 - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", 1703 - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", 1704 - "dev": true, 1705 - "engines": { 1706 - "node": ">=6" 1707 - } 1708 - }, 1709 - "node_modules/color-convert": { 1710 - "version": "2.0.1", 1711 - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1712 - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1713 - "dev": true, 1714 - "dependencies": { 1715 - "color-name": "~1.1.4" 1716 - }, 1717 - "engines": { 1718 - "node": ">=7.0.0" 1719 - } 1720 - }, 1721 - "node_modules/color-name": { 1722 - "version": "1.1.4", 1723 - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1724 - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1725 - "dev": true 1726 - }, 1727 - "node_modules/concat-map": { 1728 - "version": "0.0.1", 1729 - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1730 - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1731 - "dev": true 1732 - }, 1733 - "node_modules/cookie": { 1734 - "version": "0.6.0", 1735 - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", 1736 - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", 1737 - "dev": true, 1738 - "engines": { 1739 - "node": ">= 0.6" 1740 - } 1741 - }, 1742 - "node_modules/cross-spawn": { 1743 - "version": "7.0.6", 1744 - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 1745 - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 1746 - "dev": true, 1747 - "dependencies": { 1748 - "path-key": "^3.1.0", 1749 - "shebang-command": "^2.0.0", 1750 - "which": "^2.0.1" 1751 - }, 1752 - "engines": { 1753 - "node": ">= 8" 1754 - } 1755 - }, 1756 - "node_modules/cssesc": { 1757 - "version": "3.0.0", 1758 - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 1759 - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 1760 - "dev": true, 1761 - "bin": { 1762 - "cssesc": "bin/cssesc" 1763 - }, 1764 - "engines": { 1765 - "node": ">=4" 1766 - } 1767 - }, 1768 - "node_modules/debug": { 1769 - "version": "4.4.0", 1770 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1771 - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 1772 - "dev": true, 1773 - "dependencies": { 1774 - "ms": "^2.1.3" 1775 - }, 1776 - "engines": { 1777 - "node": ">=6.0" 1778 - }, 1779 - "peerDependenciesMeta": { 1780 - "supports-color": { 1781 - "optional": true 1782 - } 1783 - } 1784 - }, 1785 - "node_modules/deep-is": { 1786 - "version": "0.1.4", 1787 - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1788 - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1789 - "dev": true 1790 - }, 1791 - "node_modules/deepmerge": { 1792 - "version": "4.3.1", 1793 - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 1794 - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 1795 - "dev": true, 1796 - "engines": { 1797 - "node": ">=0.10.0" 1798 - } 1799 - }, 1800 - "node_modules/detect-libc": { 1801 - "version": "1.0.3", 1802 - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 1803 - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", 1804 - "dev": true, 1805 - "bin": { 1806 - "detect-libc": "bin/detect-libc.js" 1807 - }, 1808 - "engines": { 1809 - "node": ">=0.10" 1810 - } 1811 - }, 1812 - "node_modules/devalue": { 1813 - "version": "5.1.1", 1814 - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", 1815 - "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", 1816 - "dev": true 1817 - }, 1818 - "node_modules/enhanced-resolve": { 1819 - "version": "5.18.1", 1820 - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", 1821 - "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", 1822 - "dev": true, 1823 - "dependencies": { 1824 - "graceful-fs": "^4.2.4", 1825 - "tapable": "^2.2.0" 1826 - }, 1827 - "engines": { 1828 - "node": ">=10.13.0" 1829 - } 1830 - }, 1831 - "node_modules/esbuild": { 1832 - "version": "0.24.2", 1833 - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", 1834 - "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", 1835 - "dev": true, 1836 - "hasInstallScript": true, 1837 - "bin": { 1838 - "esbuild": "bin/esbuild" 1839 - }, 1840 - "engines": { 1841 - "node": ">=18" 1842 - }, 1843 - "optionalDependencies": { 1844 - "@esbuild/aix-ppc64": "0.24.2", 1845 - "@esbuild/android-arm": "0.24.2", 1846 - "@esbuild/android-arm64": "0.24.2", 1847 - "@esbuild/android-x64": "0.24.2", 1848 - "@esbuild/darwin-arm64": "0.24.2", 1849 - "@esbuild/darwin-x64": "0.24.2", 1850 - "@esbuild/freebsd-arm64": "0.24.2", 1851 - "@esbuild/freebsd-x64": "0.24.2", 1852 - "@esbuild/linux-arm": "0.24.2", 1853 - "@esbuild/linux-arm64": "0.24.2", 1854 - "@esbuild/linux-ia32": "0.24.2", 1855 - "@esbuild/linux-loong64": "0.24.2", 1856 - "@esbuild/linux-mips64el": "0.24.2", 1857 - "@esbuild/linux-ppc64": "0.24.2", 1858 - "@esbuild/linux-riscv64": "0.24.2", 1859 - "@esbuild/linux-s390x": "0.24.2", 1860 - "@esbuild/linux-x64": "0.24.2", 1861 - "@esbuild/netbsd-arm64": "0.24.2", 1862 - "@esbuild/netbsd-x64": "0.24.2", 1863 - "@esbuild/openbsd-arm64": "0.24.2", 1864 - "@esbuild/openbsd-x64": "0.24.2", 1865 - "@esbuild/sunos-x64": "0.24.2", 1866 - "@esbuild/win32-arm64": "0.24.2", 1867 - "@esbuild/win32-ia32": "0.24.2", 1868 - "@esbuild/win32-x64": "0.24.2" 1869 - } 1870 - }, 1871 - "node_modules/escape-string-regexp": { 1872 - "version": "4.0.0", 1873 - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1874 - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1875 - "dev": true, 1876 - "engines": { 1877 - "node": ">=10" 1878 - }, 1879 - "funding": { 1880 - "url": "https://github.com/sponsors/sindresorhus" 1881 - } 1882 - }, 1883 - "node_modules/eslint": { 1884 - "version": "9.21.0", 1885 - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", 1886 - "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", 1887 - "dev": true, 1888 - "dependencies": { 1889 - "@eslint-community/eslint-utils": "^4.2.0", 1890 - "@eslint-community/regexpp": "^4.12.1", 1891 - "@eslint/config-array": "^0.19.2", 1892 - "@eslint/core": "^0.12.0", 1893 - "@eslint/eslintrc": "^3.3.0", 1894 - "@eslint/js": "9.21.0", 1895 - "@eslint/plugin-kit": "^0.2.7", 1896 - "@humanfs/node": "^0.16.6", 1897 - "@humanwhocodes/module-importer": "^1.0.1", 1898 - "@humanwhocodes/retry": "^0.4.2", 1899 - "@types/estree": "^1.0.6", 1900 - "@types/json-schema": "^7.0.15", 1901 - "ajv": "^6.12.4", 1902 - "chalk": "^4.0.0", 1903 - "cross-spawn": "^7.0.6", 1904 - "debug": "^4.3.2", 1905 - "escape-string-regexp": "^4.0.0", 1906 - "eslint-scope": "^8.2.0", 1907 - "eslint-visitor-keys": "^4.2.0", 1908 - "espree": "^10.3.0", 1909 - "esquery": "^1.5.0", 1910 - "esutils": "^2.0.2", 1911 - "fast-deep-equal": "^3.1.3", 1912 - "file-entry-cache": "^8.0.0", 1913 - "find-up": "^5.0.0", 1914 - "glob-parent": "^6.0.2", 1915 - "ignore": "^5.2.0", 1916 - "imurmurhash": "^0.1.4", 1917 - "is-glob": "^4.0.0", 1918 - "json-stable-stringify-without-jsonify": "^1.0.1", 1919 - "lodash.merge": "^4.6.2", 1920 - "minimatch": "^3.1.2", 1921 - "natural-compare": "^1.4.0", 1922 - "optionator": "^0.9.3" 1923 - }, 1924 - "bin": { 1925 - "eslint": "bin/eslint.js" 1926 - }, 1927 - "engines": { 1928 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1929 - }, 1930 - "funding": { 1931 - "url": "https://eslint.org/donate" 1932 - }, 1933 - "peerDependencies": { 1934 - "jiti": "*" 1935 - }, 1936 - "peerDependenciesMeta": { 1937 - "jiti": { 1938 - "optional": true 1939 - } 1940 - } 1941 - }, 1942 - "node_modules/eslint-compat-utils": { 1943 - "version": "0.5.1", 1944 - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", 1945 - "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", 1946 - "dev": true, 1947 - "dependencies": { 1948 - "semver": "^7.5.4" 1949 - }, 1950 - "engines": { 1951 - "node": ">=12" 1952 - }, 1953 - "peerDependencies": { 1954 - "eslint": ">=6.0.0" 1955 - } 1956 - }, 1957 - "node_modules/eslint-config-prettier": { 1958 - "version": "10.0.1", 1959 - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz", 1960 - "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==", 1961 - "dev": true, 1962 - "bin": { 1963 - "eslint-config-prettier": "build/bin/cli.js" 1964 - }, 1965 - "peerDependencies": { 1966 - "eslint": ">=7.0.0" 1967 - } 1968 - }, 1969 - "node_modules/eslint-plugin-svelte": { 1970 - "version": "2.46.1", 1971 - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.46.1.tgz", 1972 - "integrity": "sha512-7xYr2o4NID/f9OEYMqxsEQsCsj4KaMy4q5sANaKkAb6/QeCjYFxRmDm2S3YC3A3pl1kyPZ/syOx/i7LcWYSbIw==", 1973 - "dev": true, 1974 - "dependencies": { 1975 - "@eslint-community/eslint-utils": "^4.4.0", 1976 - "@jridgewell/sourcemap-codec": "^1.4.15", 1977 - "eslint-compat-utils": "^0.5.1", 1978 - "esutils": "^2.0.3", 1979 - "known-css-properties": "^0.35.0", 1980 - "postcss": "^8.4.38", 1981 - "postcss-load-config": "^3.1.4", 1982 - "postcss-safe-parser": "^6.0.0", 1983 - "postcss-selector-parser": "^6.1.0", 1984 - "semver": "^7.6.2", 1985 - "svelte-eslint-parser": "^0.43.0" 1986 - }, 1987 - "engines": { 1988 - "node": "^14.17.0 || >=16.0.0" 1989 - }, 1990 - "funding": { 1991 - "url": "https://github.com/sponsors/ota-meshi" 1992 - }, 1993 - "peerDependencies": { 1994 - "eslint": "^7.0.0 || ^8.0.0-0 || ^9.0.0-0", 1995 - "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" 1996 - }, 1997 - "peerDependenciesMeta": { 1998 - "svelte": { 1999 - "optional": true 2000 - } 2001 - } 2002 - }, 2003 - "node_modules/eslint-scope": { 2004 - "version": "8.2.0", 2005 - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", 2006 - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", 2007 - "dev": true, 2008 - "dependencies": { 2009 - "esrecurse": "^4.3.0", 2010 - "estraverse": "^5.2.0" 2011 - }, 2012 - "engines": { 2013 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2014 - }, 2015 - "funding": { 2016 - "url": "https://opencollective.com/eslint" 2017 - } 2018 - }, 2019 - "node_modules/eslint-visitor-keys": { 2020 - "version": "4.2.0", 2021 - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", 2022 - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", 2023 - "dev": true, 2024 - "engines": { 2025 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2026 - }, 2027 - "funding": { 2028 - "url": "https://opencollective.com/eslint" 2029 - } 2030 - }, 2031 - "node_modules/esm-env": { 2032 - "version": "1.2.2", 2033 - "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", 2034 - "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", 2035 - "dev": true 2036 - }, 2037 - "node_modules/espree": { 2038 - "version": "10.3.0", 2039 - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", 2040 - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", 2041 - "dev": true, 2042 - "dependencies": { 2043 - "acorn": "^8.14.0", 2044 - "acorn-jsx": "^5.3.2", 2045 - "eslint-visitor-keys": "^4.2.0" 2046 - }, 2047 - "engines": { 2048 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2049 - }, 2050 - "funding": { 2051 - "url": "https://opencollective.com/eslint" 2052 - } 2053 - }, 2054 - "node_modules/esquery": { 2055 - "version": "1.6.0", 2056 - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", 2057 - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", 2058 - "dev": true, 2059 - "dependencies": { 2060 - "estraverse": "^5.1.0" 2061 - }, 2062 - "engines": { 2063 - "node": ">=0.10" 2064 - } 2065 - }, 2066 - "node_modules/esrap": { 2067 - "version": "1.4.5", 2068 - "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.5.tgz", 2069 - "integrity": "sha512-CjNMjkBWWZeHn+VX+gS8YvFwJ5+NDhg8aWZBSFJPR8qQduDNjbJodA2WcwCm7uQa5Rjqj+nZvVmceg1RbHFB9g==", 2070 - "dev": true, 2071 - "dependencies": { 2072 - "@jridgewell/sourcemap-codec": "^1.4.15" 2073 - } 2074 - }, 2075 - "node_modules/esrecurse": { 2076 - "version": "4.3.0", 2077 - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 2078 - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 2079 - "dev": true, 2080 - "dependencies": { 2081 - "estraverse": "^5.2.0" 2082 - }, 2083 - "engines": { 2084 - "node": ">=4.0" 2085 - } 2086 - }, 2087 - "node_modules/estraverse": { 2088 - "version": "5.3.0", 2089 - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 2090 - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 2091 - "dev": true, 2092 - "engines": { 2093 - "node": ">=4.0" 2094 - } 2095 - }, 2096 - "node_modules/esutils": { 2097 - "version": "2.0.3", 2098 - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 2099 - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 2100 - "dev": true, 2101 - "engines": { 2102 - "node": ">=0.10.0" 2103 - } 2104 - }, 2105 - "node_modules/fast-deep-equal": { 2106 - "version": "3.1.3", 2107 - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 2108 - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 2109 - "dev": true 2110 - }, 2111 - "node_modules/fast-glob": { 2112 - "version": "3.3.3", 2113 - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", 2114 - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", 2115 - "dev": true, 2116 - "dependencies": { 2117 - "@nodelib/fs.stat": "^2.0.2", 2118 - "@nodelib/fs.walk": "^1.2.3", 2119 - "glob-parent": "^5.1.2", 2120 - "merge2": "^1.3.0", 2121 - "micromatch": "^4.0.8" 2122 - }, 2123 - "engines": { 2124 - "node": ">=8.6.0" 2125 - } 2126 - }, 2127 - "node_modules/fast-glob/node_modules/glob-parent": { 2128 - "version": "5.1.2", 2129 - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2130 - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2131 - "dev": true, 2132 - "dependencies": { 2133 - "is-glob": "^4.0.1" 2134 - }, 2135 - "engines": { 2136 - "node": ">= 6" 2137 - } 2138 - }, 2139 - "node_modules/fast-json-stable-stringify": { 2140 - "version": "2.1.0", 2141 - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 2142 - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 2143 - "dev": true 2144 - }, 2145 - "node_modules/fast-levenshtein": { 2146 - "version": "2.0.6", 2147 - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 2148 - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 2149 - "dev": true 2150 - }, 2151 - "node_modules/fastq": { 2152 - "version": "1.19.0", 2153 - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", 2154 - "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", 2155 - "dev": true, 2156 - "dependencies": { 2157 - "reusify": "^1.0.4" 2158 - } 2159 - }, 2160 - "node_modules/fdir": { 2161 - "version": "6.4.3", 2162 - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", 2163 - "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", 2164 - "dev": true, 2165 - "peerDependencies": { 2166 - "picomatch": "^3 || ^4" 2167 - }, 2168 - "peerDependenciesMeta": { 2169 - "picomatch": { 2170 - "optional": true 2171 - } 2172 - } 2173 - }, 2174 - "node_modules/file-entry-cache": { 2175 - "version": "8.0.0", 2176 - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", 2177 - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", 2178 - "dev": true, 2179 - "dependencies": { 2180 - "flat-cache": "^4.0.0" 2181 - }, 2182 - "engines": { 2183 - "node": ">=16.0.0" 2184 - } 2185 - }, 2186 - "node_modules/fill-range": { 2187 - "version": "7.1.1", 2188 - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 2189 - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 2190 - "dev": true, 2191 - "dependencies": { 2192 - "to-regex-range": "^5.0.1" 2193 - }, 2194 - "engines": { 2195 - "node": ">=8" 2196 - } 2197 - }, 2198 - "node_modules/find-up": { 2199 - "version": "5.0.0", 2200 - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2201 - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2202 - "dev": true, 2203 - "dependencies": { 2204 - "locate-path": "^6.0.0", 2205 - "path-exists": "^4.0.0" 2206 - }, 2207 - "engines": { 2208 - "node": ">=10" 2209 - }, 2210 - "funding": { 2211 - "url": "https://github.com/sponsors/sindresorhus" 2212 - } 2213 - }, 2214 - "node_modules/flat-cache": { 2215 - "version": "4.0.1", 2216 - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", 2217 - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", 2218 - "dev": true, 2219 - "dependencies": { 2220 - "flatted": "^3.2.9", 2221 - "keyv": "^4.5.4" 2222 - }, 2223 - "engines": { 2224 - "node": ">=16" 2225 - } 2226 - }, 2227 - "node_modules/flatted": { 2228 - "version": "3.3.3", 2229 - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", 2230 - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", 2231 - "dev": true 2232 - }, 2233 - "node_modules/fsevents": { 2234 - "version": "2.3.3", 2235 - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 2236 - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 2237 - "dev": true, 2238 - "hasInstallScript": true, 2239 - "optional": true, 2240 - "os": [ 2241 - "darwin" 2242 - ], 2243 - "engines": { 2244 - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2245 - } 2246 - }, 2247 - "node_modules/glob-parent": { 2248 - "version": "6.0.2", 2249 - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 2250 - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 2251 - "dev": true, 2252 - "dependencies": { 2253 - "is-glob": "^4.0.3" 2254 - }, 2255 - "engines": { 2256 - "node": ">=10.13.0" 2257 - } 2258 - }, 2259 - "node_modules/globals": { 2260 - "version": "15.15.0", 2261 - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", 2262 - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", 2263 - "dev": true, 2264 - "engines": { 2265 - "node": ">=18" 2266 - }, 2267 - "funding": { 2268 - "url": "https://github.com/sponsors/sindresorhus" 2269 - } 2270 - }, 2271 - "node_modules/graceful-fs": { 2272 - "version": "4.2.11", 2273 - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 2274 - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 2275 - "dev": true 2276 - }, 2277 - "node_modules/graphemer": { 2278 - "version": "1.4.0", 2279 - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 2280 - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 2281 - "dev": true 2282 - }, 2283 - "node_modules/has-flag": { 2284 - "version": "4.0.0", 2285 - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2286 - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2287 - "dev": true, 2288 - "engines": { 2289 - "node": ">=8" 2290 - } 2291 - }, 2292 - "node_modules/ignore": { 2293 - "version": "5.3.2", 2294 - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", 2295 - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", 2296 - "dev": true, 2297 - "engines": { 2298 - "node": ">= 4" 2299 - } 2300 - }, 2301 - "node_modules/import-fresh": { 2302 - "version": "3.3.1", 2303 - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", 2304 - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", 2305 - "dev": true, 2306 - "dependencies": { 2307 - "parent-module": "^1.0.0", 2308 - "resolve-from": "^4.0.0" 2309 - }, 2310 - "engines": { 2311 - "node": ">=6" 2312 - }, 2313 - "funding": { 2314 - "url": "https://github.com/sponsors/sindresorhus" 2315 - } 2316 - }, 2317 - "node_modules/import-meta-resolve": { 2318 - "version": "4.1.0", 2319 - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", 2320 - "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", 2321 - "dev": true, 2322 - "funding": { 2323 - "type": "github", 2324 - "url": "https://github.com/sponsors/wooorm" 2325 - } 2326 - }, 2327 - "node_modules/imurmurhash": { 2328 - "version": "0.1.4", 2329 - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2330 - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 2331 - "dev": true, 2332 - "engines": { 2333 - "node": ">=0.8.19" 2334 - } 2335 - }, 2336 - "node_modules/is-extglob": { 2337 - "version": "2.1.1", 2338 - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2339 - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 2340 - "dev": true, 2341 - "engines": { 2342 - "node": ">=0.10.0" 2343 - } 2344 - }, 2345 - "node_modules/is-glob": { 2346 - "version": "4.0.3", 2347 - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2348 - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2349 - "dev": true, 2350 - "dependencies": { 2351 - "is-extglob": "^2.1.1" 2352 - }, 2353 - "engines": { 2354 - "node": ">=0.10.0" 2355 - } 2356 - }, 2357 - "node_modules/is-number": { 2358 - "version": "7.0.0", 2359 - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2360 - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2361 - "dev": true, 2362 - "engines": { 2363 - "node": ">=0.12.0" 2364 - } 2365 - }, 2366 - "node_modules/is-reference": { 2367 - "version": "3.0.3", 2368 - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", 2369 - "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", 2370 - "dev": true, 2371 - "dependencies": { 2372 - "@types/estree": "^1.0.6" 2373 - } 2374 - }, 2375 - "node_modules/isexe": { 2376 - "version": "2.0.0", 2377 - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2378 - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 2379 - "dev": true 2380 - }, 2381 - "node_modules/jiti": { 2382 - "version": "2.4.2", 2383 - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", 2384 - "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", 2385 - "dev": true, 2386 - "bin": { 2387 - "jiti": "lib/jiti-cli.mjs" 2388 - } 2389 - }, 2390 - "node_modules/js-yaml": { 2391 - "version": "4.1.0", 2392 - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 2393 - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 2394 - "dev": true, 2395 - "dependencies": { 2396 - "argparse": "^2.0.1" 2397 - }, 2398 - "bin": { 2399 - "js-yaml": "bin/js-yaml.js" 2400 - } 2401 - }, 2402 - "node_modules/json-buffer": { 2403 - "version": "3.0.1", 2404 - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 2405 - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 2406 - "dev": true 2407 - }, 2408 - "node_modules/json-schema-traverse": { 2409 - "version": "0.4.1", 2410 - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2411 - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2412 - "dev": true 2413 - }, 2414 - "node_modules/json-stable-stringify-without-jsonify": { 2415 - "version": "1.0.1", 2416 - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2417 - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 2418 - "dev": true 2419 - }, 2420 - "node_modules/keyv": { 2421 - "version": "4.5.4", 2422 - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 2423 - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 2424 - "dev": true, 2425 - "dependencies": { 2426 - "json-buffer": "3.0.1" 2427 - } 2428 - }, 2429 - "node_modules/kleur": { 2430 - "version": "4.1.5", 2431 - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 2432 - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 2433 - "dev": true, 2434 - "engines": { 2435 - "node": ">=6" 2436 - } 2437 - }, 2438 - "node_modules/known-css-properties": { 2439 - "version": "0.35.0", 2440 - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", 2441 - "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", 2442 - "dev": true 2443 - }, 2444 - "node_modules/levn": { 2445 - "version": "0.4.1", 2446 - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 2447 - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2448 - "dev": true, 2449 - "dependencies": { 2450 - "prelude-ls": "^1.2.1", 2451 - "type-check": "~0.4.0" 2452 - }, 2453 - "engines": { 2454 - "node": ">= 0.8.0" 2455 - } 2456 - }, 2457 - "node_modules/lightningcss": { 2458 - "version": "1.29.1", 2459 - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.1.tgz", 2460 - "integrity": "sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==", 2461 - "dev": true, 2462 - "dependencies": { 2463 - "detect-libc": "^1.0.3" 2464 - }, 2465 - "engines": { 2466 - "node": ">= 12.0.0" 2467 - }, 2468 - "funding": { 2469 - "type": "opencollective", 2470 - "url": "https://opencollective.com/parcel" 2471 - }, 2472 - "optionalDependencies": { 2473 - "lightningcss-darwin-arm64": "1.29.1", 2474 - "lightningcss-darwin-x64": "1.29.1", 2475 - "lightningcss-freebsd-x64": "1.29.1", 2476 - "lightningcss-linux-arm-gnueabihf": "1.29.1", 2477 - "lightningcss-linux-arm64-gnu": "1.29.1", 2478 - "lightningcss-linux-arm64-musl": "1.29.1", 2479 - "lightningcss-linux-x64-gnu": "1.29.1", 2480 - "lightningcss-linux-x64-musl": "1.29.1", 2481 - "lightningcss-win32-arm64-msvc": "1.29.1", 2482 - "lightningcss-win32-x64-msvc": "1.29.1" 2483 - } 2484 - }, 2485 - "node_modules/lightningcss-darwin-arm64": { 2486 - "version": "1.29.1", 2487 - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.1.tgz", 2488 - "integrity": "sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==", 2489 - "cpu": [ 2490 - "arm64" 2491 - ], 2492 - "dev": true, 2493 - "optional": true, 2494 - "os": [ 2495 - "darwin" 2496 - ], 2497 - "engines": { 2498 - "node": ">= 12.0.0" 2499 - }, 2500 - "funding": { 2501 - "type": "opencollective", 2502 - "url": "https://opencollective.com/parcel" 2503 - } 2504 - }, 2505 - "node_modules/lightningcss-darwin-x64": { 2506 - "version": "1.29.1", 2507 - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.1.tgz", 2508 - "integrity": "sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==", 2509 - "cpu": [ 2510 - "x64" 2511 - ], 2512 - "dev": true, 2513 - "optional": true, 2514 - "os": [ 2515 - "darwin" 2516 - ], 2517 - "engines": { 2518 - "node": ">= 12.0.0" 2519 - }, 2520 - "funding": { 2521 - "type": "opencollective", 2522 - "url": "https://opencollective.com/parcel" 2523 - } 2524 - }, 2525 - "node_modules/lightningcss-freebsd-x64": { 2526 - "version": "1.29.1", 2527 - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.1.tgz", 2528 - "integrity": "sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==", 2529 - "cpu": [ 2530 - "x64" 2531 - ], 2532 - "dev": true, 2533 - "optional": true, 2534 - "os": [ 2535 - "freebsd" 2536 - ], 2537 - "engines": { 2538 - "node": ">= 12.0.0" 2539 - }, 2540 - "funding": { 2541 - "type": "opencollective", 2542 - "url": "https://opencollective.com/parcel" 2543 - } 2544 - }, 2545 - "node_modules/lightningcss-linux-arm-gnueabihf": { 2546 - "version": "1.29.1", 2547 - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.1.tgz", 2548 - "integrity": "sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==", 2549 - "cpu": [ 2550 - "arm" 2551 - ], 2552 - "dev": true, 2553 - "optional": true, 2554 - "os": [ 2555 - "linux" 2556 - ], 2557 - "engines": { 2558 - "node": ">= 12.0.0" 2559 - }, 2560 - "funding": { 2561 - "type": "opencollective", 2562 - "url": "https://opencollective.com/parcel" 2563 - } 2564 - }, 2565 - "node_modules/lightningcss-linux-arm64-gnu": { 2566 - "version": "1.29.1", 2567 - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.1.tgz", 2568 - "integrity": "sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==", 2569 - "cpu": [ 2570 - "arm64" 2571 - ], 2572 - "dev": true, 2573 - "optional": true, 2574 - "os": [ 2575 - "linux" 2576 - ], 2577 - "engines": { 2578 - "node": ">= 12.0.0" 2579 - }, 2580 - "funding": { 2581 - "type": "opencollective", 2582 - "url": "https://opencollective.com/parcel" 2583 - } 2584 - }, 2585 - "node_modules/lightningcss-linux-arm64-musl": { 2586 - "version": "1.29.1", 2587 - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.1.tgz", 2588 - "integrity": "sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==", 2589 - "cpu": [ 2590 - "arm64" 2591 - ], 2592 - "dev": true, 2593 - "optional": true, 2594 - "os": [ 2595 - "linux" 2596 - ], 2597 - "engines": { 2598 - "node": ">= 12.0.0" 2599 - }, 2600 - "funding": { 2601 - "type": "opencollective", 2602 - "url": "https://opencollective.com/parcel" 2603 - } 2604 - }, 2605 - "node_modules/lightningcss-linux-x64-gnu": { 2606 - "version": "1.29.1", 2607 - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.1.tgz", 2608 - "integrity": "sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==", 2609 - "cpu": [ 2610 - "x64" 2611 - ], 2612 - "dev": true, 2613 - "optional": true, 2614 - "os": [ 2615 - "linux" 2616 - ], 2617 - "engines": { 2618 - "node": ">= 12.0.0" 2619 - }, 2620 - "funding": { 2621 - "type": "opencollective", 2622 - "url": "https://opencollective.com/parcel" 2623 - } 2624 - }, 2625 - "node_modules/lightningcss-linux-x64-musl": { 2626 - "version": "1.29.1", 2627 - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.1.tgz", 2628 - "integrity": "sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==", 2629 - "cpu": [ 2630 - "x64" 2631 - ], 2632 - "dev": true, 2633 - "optional": true, 2634 - "os": [ 2635 - "linux" 2636 - ], 2637 - "engines": { 2638 - "node": ">= 12.0.0" 2639 - }, 2640 - "funding": { 2641 - "type": "opencollective", 2642 - "url": "https://opencollective.com/parcel" 2643 - } 2644 - }, 2645 - "node_modules/lightningcss-win32-arm64-msvc": { 2646 - "version": "1.29.1", 2647 - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.1.tgz", 2648 - "integrity": "sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==", 2649 - "cpu": [ 2650 - "arm64" 2651 - ], 2652 - "dev": true, 2653 - "optional": true, 2654 - "os": [ 2655 - "win32" 2656 - ], 2657 - "engines": { 2658 - "node": ">= 12.0.0" 2659 - }, 2660 - "funding": { 2661 - "type": "opencollective", 2662 - "url": "https://opencollective.com/parcel" 2663 - } 2664 - }, 2665 - "node_modules/lightningcss-win32-x64-msvc": { 2666 - "version": "1.29.1", 2667 - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.1.tgz", 2668 - "integrity": "sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==", 2669 - "cpu": [ 2670 - "x64" 2671 - ], 2672 - "dev": true, 2673 - "optional": true, 2674 - "os": [ 2675 - "win32" 2676 - ], 2677 - "engines": { 2678 - "node": ">= 12.0.0" 2679 - }, 2680 - "funding": { 2681 - "type": "opencollective", 2682 - "url": "https://opencollective.com/parcel" 2683 - } 2684 - }, 2685 - "node_modules/lilconfig": { 2686 - "version": "2.1.0", 2687 - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", 2688 - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", 2689 - "dev": true, 2690 - "engines": { 2691 - "node": ">=10" 2692 - } 2693 - }, 2694 - "node_modules/locate-character": { 2695 - "version": "3.0.0", 2696 - "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", 2697 - "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", 2698 - "dev": true 2699 - }, 2700 - "node_modules/locate-path": { 2701 - "version": "6.0.0", 2702 - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 2703 - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 2704 - "dev": true, 2705 - "dependencies": { 2706 - "p-locate": "^5.0.0" 2707 - }, 2708 - "engines": { 2709 - "node": ">=10" 2710 - }, 2711 - "funding": { 2712 - "url": "https://github.com/sponsors/sindresorhus" 2713 - } 2714 - }, 2715 - "node_modules/lodash.merge": { 2716 - "version": "4.6.2", 2717 - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 2718 - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 2719 - "dev": true 2720 - }, 2721 - "node_modules/magic-string": { 2722 - "version": "0.30.17", 2723 - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", 2724 - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", 2725 - "dev": true, 2726 - "dependencies": { 2727 - "@jridgewell/sourcemap-codec": "^1.5.0" 2728 - } 2729 - }, 2730 - "node_modules/merge2": { 2731 - "version": "1.4.1", 2732 - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2733 - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2734 - "dev": true, 2735 - "engines": { 2736 - "node": ">= 8" 2737 - } 2738 - }, 2739 - "node_modules/micromatch": { 2740 - "version": "4.0.8", 2741 - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 2742 - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 2743 - "dev": true, 2744 - "dependencies": { 2745 - "braces": "^3.0.3", 2746 - "picomatch": "^2.3.1" 2747 - }, 2748 - "engines": { 2749 - "node": ">=8.6" 2750 - } 2751 - }, 2752 - "node_modules/micromatch/node_modules/picomatch": { 2753 - "version": "2.3.1", 2754 - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2755 - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2756 - "dev": true, 2757 - "engines": { 2758 - "node": ">=8.6" 2759 - }, 2760 - "funding": { 2761 - "url": "https://github.com/sponsors/jonschlinkert" 2762 - } 2763 - }, 2764 - "node_modules/mini-svg-data-uri": { 2765 - "version": "1.4.4", 2766 - "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", 2767 - "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", 2768 - "dev": true, 2769 - "bin": { 2770 - "mini-svg-data-uri": "cli.js" 2771 - } 2772 - }, 2773 - "node_modules/minimatch": { 2774 - "version": "3.1.2", 2775 - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2776 - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2777 - "dev": true, 2778 - "dependencies": { 2779 - "brace-expansion": "^1.1.7" 2780 - }, 2781 - "engines": { 2782 - "node": "*" 2783 - } 2784 - }, 2785 - "node_modules/mri": { 2786 - "version": "1.2.0", 2787 - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 2788 - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 2789 - "dev": true, 2790 - "engines": { 2791 - "node": ">=4" 2792 - } 2793 - }, 2794 - "node_modules/mrmime": { 2795 - "version": "2.0.1", 2796 - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", 2797 - "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", 2798 - "dev": true, 2799 - "engines": { 2800 - "node": ">=10" 2801 - } 2802 - }, 2803 - "node_modules/ms": { 2804 - "version": "2.1.3", 2805 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2806 - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2807 - "dev": true 2808 - }, 2809 - "node_modules/nanoid": { 2810 - "version": "3.3.8", 2811 - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", 2812 - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", 2813 - "dev": true, 2814 - "funding": [ 2815 - { 2816 - "type": "github", 2817 - "url": "https://github.com/sponsors/ai" 2818 - } 2819 - ], 2820 - "bin": { 2821 - "nanoid": "bin/nanoid.cjs" 2822 - }, 2823 - "engines": { 2824 - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 2825 - } 2826 - }, 2827 - "node_modules/natural-compare": { 2828 - "version": "1.4.0", 2829 - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2830 - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 2831 - "dev": true 2832 - }, 2833 - "node_modules/optionator": { 2834 - "version": "0.9.4", 2835 - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", 2836 - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", 2837 - "dev": true, 2838 - "dependencies": { 2839 - "deep-is": "^0.1.3", 2840 - "fast-levenshtein": "^2.0.6", 2841 - "levn": "^0.4.1", 2842 - "prelude-ls": "^1.2.1", 2843 - "type-check": "^0.4.0", 2844 - "word-wrap": "^1.2.5" 2845 - }, 2846 - "engines": { 2847 - "node": ">= 0.8.0" 2848 - } 2849 - }, 2850 - "node_modules/p-limit": { 2851 - "version": "3.1.0", 2852 - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2853 - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2854 - "dev": true, 2855 - "dependencies": { 2856 - "yocto-queue": "^0.1.0" 2857 - }, 2858 - "engines": { 2859 - "node": ">=10" 2860 - }, 2861 - "funding": { 2862 - "url": "https://github.com/sponsors/sindresorhus" 2863 - } 2864 - }, 2865 - "node_modules/p-locate": { 2866 - "version": "5.0.0", 2867 - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2868 - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2869 - "dev": true, 2870 - "dependencies": { 2871 - "p-limit": "^3.0.2" 2872 - }, 2873 - "engines": { 2874 - "node": ">=10" 2875 - }, 2876 - "funding": { 2877 - "url": "https://github.com/sponsors/sindresorhus" 2878 - } 2879 - }, 2880 - "node_modules/parent-module": { 2881 - "version": "1.0.1", 2882 - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2883 - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2884 - "dev": true, 2885 - "dependencies": { 2886 - "callsites": "^3.0.0" 2887 - }, 2888 - "engines": { 2889 - "node": ">=6" 2890 - } 2891 - }, 2892 - "node_modules/path-exists": { 2893 - "version": "4.0.0", 2894 - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2895 - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2896 - "dev": true, 2897 - "engines": { 2898 - "node": ">=8" 2899 - } 2900 - }, 2901 - "node_modules/path-key": { 2902 - "version": "3.1.1", 2903 - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2904 - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2905 - "dev": true, 2906 - "engines": { 2907 - "node": ">=8" 2908 - } 2909 - }, 2910 - "node_modules/picocolors": { 2911 - "version": "1.1.1", 2912 - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 2913 - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 2914 - "dev": true 2915 - }, 2916 - "node_modules/picomatch": { 2917 - "version": "4.0.2", 2918 - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", 2919 - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", 2920 - "dev": true, 2921 - "optional": true, 2922 - "peer": true, 2923 - "engines": { 2924 - "node": ">=12" 2925 - }, 2926 - "funding": { 2927 - "url": "https://github.com/sponsors/jonschlinkert" 2928 - } 2929 - }, 2930 - "node_modules/postcss": { 2931 - "version": "8.5.3", 2932 - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", 2933 - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", 2934 - "dev": true, 2935 - "funding": [ 2936 - { 2937 - "type": "opencollective", 2938 - "url": "https://opencollective.com/postcss/" 2939 - }, 2940 - { 2941 - "type": "tidelift", 2942 - "url": "https://tidelift.com/funding/github/npm/postcss" 2943 - }, 2944 - { 2945 - "type": "github", 2946 - "url": "https://github.com/sponsors/ai" 2947 - } 2948 - ], 2949 - "dependencies": { 2950 - "nanoid": "^3.3.8", 2951 - "picocolors": "^1.1.1", 2952 - "source-map-js": "^1.2.1" 2953 - }, 2954 - "engines": { 2955 - "node": "^10 || ^12 || >=14" 2956 - } 2957 - }, 2958 - "node_modules/postcss-load-config": { 2959 - "version": "3.1.4", 2960 - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", 2961 - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", 2962 - "dev": true, 2963 - "dependencies": { 2964 - "lilconfig": "^2.0.5", 2965 - "yaml": "^1.10.2" 2966 - }, 2967 - "engines": { 2968 - "node": ">= 10" 2969 - }, 2970 - "funding": { 2971 - "type": "opencollective", 2972 - "url": "https://opencollective.com/postcss/" 2973 - }, 2974 - "peerDependencies": { 2975 - "postcss": ">=8.0.9", 2976 - "ts-node": ">=9.0.0" 2977 - }, 2978 - "peerDependenciesMeta": { 2979 - "postcss": { 2980 - "optional": true 2981 - }, 2982 - "ts-node": { 2983 - "optional": true 2984 - } 2985 - } 2986 - }, 2987 - "node_modules/postcss-load-config/node_modules/yaml": { 2988 - "version": "1.10.2", 2989 - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 2990 - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", 2991 - "dev": true, 2992 - "engines": { 2993 - "node": ">= 6" 2994 - } 2995 - }, 2996 - "node_modules/postcss-safe-parser": { 2997 - "version": "6.0.0", 2998 - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", 2999 - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", 3000 - "dev": true, 3001 - "engines": { 3002 - "node": ">=12.0" 3003 - }, 3004 - "funding": { 3005 - "type": "opencollective", 3006 - "url": "https://opencollective.com/postcss/" 3007 - }, 3008 - "peerDependencies": { 3009 - "postcss": "^8.3.3" 3010 - } 3011 - }, 3012 - "node_modules/postcss-scss": { 3013 - "version": "4.0.9", 3014 - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", 3015 - "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", 3016 - "dev": true, 3017 - "funding": [ 3018 - { 3019 - "type": "opencollective", 3020 - "url": "https://opencollective.com/postcss/" 3021 - }, 3022 - { 3023 - "type": "tidelift", 3024 - "url": "https://tidelift.com/funding/github/npm/postcss-scss" 3025 - }, 3026 - { 3027 - "type": "github", 3028 - "url": "https://github.com/sponsors/ai" 3029 - } 3030 - ], 3031 - "engines": { 3032 - "node": ">=12.0" 3033 - }, 3034 - "peerDependencies": { 3035 - "postcss": "^8.4.29" 3036 - } 3037 - }, 3038 - "node_modules/postcss-selector-parser": { 3039 - "version": "6.1.2", 3040 - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", 3041 - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", 3042 - "dev": true, 3043 - "dependencies": { 3044 - "cssesc": "^3.0.0", 3045 - "util-deprecate": "^1.0.2" 3046 - }, 3047 - "engines": { 3048 - "node": ">=4" 3049 - } 3050 - }, 3051 - "node_modules/prelude-ls": { 3052 - "version": "1.2.1", 3053 - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 3054 - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 3055 - "dev": true, 3056 - "engines": { 3057 - "node": ">= 0.8.0" 3058 - } 3059 - }, 3060 - "node_modules/prettier": { 3061 - "version": "3.5.2", 3062 - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", 3063 - "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", 3064 - "dev": true, 3065 - "bin": { 3066 - "prettier": "bin/prettier.cjs" 3067 - }, 3068 - "engines": { 3069 - "node": ">=14" 3070 - }, 3071 - "funding": { 3072 - "url": "https://github.com/prettier/prettier?sponsor=1" 3073 - } 3074 - }, 3075 - "node_modules/prettier-plugin-svelte": { 3076 - "version": "3.3.3", 3077 - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.3.3.tgz", 3078 - "integrity": "sha512-yViK9zqQ+H2qZD1w/bH7W8i+bVfKrD8GIFjkFe4Thl6kCT9SlAsXVNmt3jCvQOCsnOhcvYgsoVlRV/Eu6x5nNw==", 3079 - "dev": true, 3080 - "peerDependencies": { 3081 - "prettier": "^3.0.0", 3082 - "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" 3083 - } 3084 - }, 3085 - "node_modules/prettier-plugin-tailwindcss": { 3086 - "version": "0.6.11", 3087 - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.11.tgz", 3088 - "integrity": "sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==", 3089 - "dev": true, 3090 - "engines": { 3091 - "node": ">=14.21.3" 3092 - }, 3093 - "peerDependencies": { 3094 - "@ianvs/prettier-plugin-sort-imports": "*", 3095 - "@prettier/plugin-pug": "*", 3096 - "@shopify/prettier-plugin-liquid": "*", 3097 - "@trivago/prettier-plugin-sort-imports": "*", 3098 - "@zackad/prettier-plugin-twig": "*", 3099 - "prettier": "^3.0", 3100 - "prettier-plugin-astro": "*", 3101 - "prettier-plugin-css-order": "*", 3102 - "prettier-plugin-import-sort": "*", 3103 - "prettier-plugin-jsdoc": "*", 3104 - "prettier-plugin-marko": "*", 3105 - "prettier-plugin-multiline-arrays": "*", 3106 - "prettier-plugin-organize-attributes": "*", 3107 - "prettier-plugin-organize-imports": "*", 3108 - "prettier-plugin-sort-imports": "*", 3109 - "prettier-plugin-style-order": "*", 3110 - "prettier-plugin-svelte": "*" 3111 - }, 3112 - "peerDependenciesMeta": { 3113 - "@ianvs/prettier-plugin-sort-imports": { 3114 - "optional": true 3115 - }, 3116 - "@prettier/plugin-pug": { 3117 - "optional": true 3118 - }, 3119 - "@shopify/prettier-plugin-liquid": { 3120 - "optional": true 3121 - }, 3122 - "@trivago/prettier-plugin-sort-imports": { 3123 - "optional": true 3124 - }, 3125 - "@zackad/prettier-plugin-twig": { 3126 - "optional": true 3127 - }, 3128 - "prettier-plugin-astro": { 3129 - "optional": true 3130 - }, 3131 - "prettier-plugin-css-order": { 3132 - "optional": true 3133 - }, 3134 - "prettier-plugin-import-sort": { 3135 - "optional": true 3136 - }, 3137 - "prettier-plugin-jsdoc": { 3138 - "optional": true 3139 - }, 3140 - "prettier-plugin-marko": { 3141 - "optional": true 3142 - }, 3143 - "prettier-plugin-multiline-arrays": { 3144 - "optional": true 3145 - }, 3146 - "prettier-plugin-organize-attributes": { 3147 - "optional": true 3148 - }, 3149 - "prettier-plugin-organize-imports": { 3150 - "optional": true 3151 - }, 3152 - "prettier-plugin-sort-imports": { 3153 - "optional": true 3154 - }, 3155 - "prettier-plugin-style-order": { 3156 - "optional": true 3157 - }, 3158 - "prettier-plugin-svelte": { 3159 - "optional": true 3160 - } 3161 - } 3162 - }, 3163 - "node_modules/punycode": { 3164 - "version": "2.3.1", 3165 - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 3166 - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 3167 - "dev": true, 3168 - "engines": { 3169 - "node": ">=6" 3170 - } 3171 - }, 3172 - "node_modules/queue-microtask": { 3173 - "version": "1.2.3", 3174 - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 3175 - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 3176 - "dev": true, 3177 - "funding": [ 3178 - { 3179 - "type": "github", 3180 - "url": "https://github.com/sponsors/feross" 3181 - }, 3182 - { 3183 - "type": "patreon", 3184 - "url": "https://www.patreon.com/feross" 3185 - }, 3186 - { 3187 - "type": "consulting", 3188 - "url": "https://feross.org/support" 3189 - } 3190 - ] 3191 - }, 3192 - "node_modules/readdirp": { 3193 - "version": "4.1.2", 3194 - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", 3195 - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", 3196 - "dev": true, 3197 - "engines": { 3198 - "node": ">= 14.18.0" 3199 - }, 3200 - "funding": { 3201 - "type": "individual", 3202 - "url": "https://paulmillr.com/funding/" 3203 - } 3204 - }, 3205 - "node_modules/resolve-from": { 3206 - "version": "4.0.0", 3207 - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3208 - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3209 - "dev": true, 3210 - "engines": { 3211 - "node": ">=4" 3212 - } 3213 - }, 3214 - "node_modules/reusify": { 3215 - "version": "1.0.4", 3216 - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 3217 - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 3218 - "dev": true, 3219 - "engines": { 3220 - "iojs": ">=1.0.0", 3221 - "node": ">=0.10.0" 3222 - } 3223 - }, 3224 - "node_modules/rollup": { 3225 - "version": "4.34.8", 3226 - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", 3227 - "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", 3228 - "dev": true, 3229 - "dependencies": { 3230 - "@types/estree": "1.0.6" 3231 - }, 3232 - "bin": { 3233 - "rollup": "dist/bin/rollup" 3234 - }, 3235 - "engines": { 3236 - "node": ">=18.0.0", 3237 - "npm": ">=8.0.0" 3238 - }, 3239 - "optionalDependencies": { 3240 - "@rollup/rollup-android-arm-eabi": "4.34.8", 3241 - "@rollup/rollup-android-arm64": "4.34.8", 3242 - "@rollup/rollup-darwin-arm64": "4.34.8", 3243 - "@rollup/rollup-darwin-x64": "4.34.8", 3244 - "@rollup/rollup-freebsd-arm64": "4.34.8", 3245 - "@rollup/rollup-freebsd-x64": "4.34.8", 3246 - "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", 3247 - "@rollup/rollup-linux-arm-musleabihf": "4.34.8", 3248 - "@rollup/rollup-linux-arm64-gnu": "4.34.8", 3249 - "@rollup/rollup-linux-arm64-musl": "4.34.8", 3250 - "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", 3251 - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", 3252 - "@rollup/rollup-linux-riscv64-gnu": "4.34.8", 3253 - "@rollup/rollup-linux-s390x-gnu": "4.34.8", 3254 - "@rollup/rollup-linux-x64-gnu": "4.34.8", 3255 - "@rollup/rollup-linux-x64-musl": "4.34.8", 3256 - "@rollup/rollup-win32-arm64-msvc": "4.34.8", 3257 - "@rollup/rollup-win32-ia32-msvc": "4.34.8", 3258 - "@rollup/rollup-win32-x64-msvc": "4.34.8", 3259 - "fsevents": "~2.3.2" 3260 - } 3261 - }, 3262 - "node_modules/run-parallel": { 3263 - "version": "1.2.0", 3264 - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 3265 - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 3266 - "dev": true, 3267 - "funding": [ 3268 - { 3269 - "type": "github", 3270 - "url": "https://github.com/sponsors/feross" 3271 - }, 3272 - { 3273 - "type": "patreon", 3274 - "url": "https://www.patreon.com/feross" 3275 - }, 3276 - { 3277 - "type": "consulting", 3278 - "url": "https://feross.org/support" 3279 - } 3280 - ], 3281 - "dependencies": { 3282 - "queue-microtask": "^1.2.2" 3283 - } 3284 - }, 3285 - "node_modules/sade": { 3286 - "version": "1.8.1", 3287 - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 3288 - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 3289 - "dev": true, 3290 - "dependencies": { 3291 - "mri": "^1.1.0" 3292 - }, 3293 - "engines": { 3294 - "node": ">=6" 3295 - } 3296 - }, 3297 - "node_modules/semver": { 3298 - "version": "7.7.1", 3299 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", 3300 - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", 3301 - "dev": true, 3302 - "bin": { 3303 - "semver": "bin/semver.js" 3304 - }, 3305 - "engines": { 3306 - "node": ">=10" 3307 - } 3308 - }, 3309 - "node_modules/set-cookie-parser": { 3310 - "version": "2.7.1", 3311 - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", 3312 - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", 3313 - "dev": true 3314 - }, 3315 - "node_modules/shebang-command": { 3316 - "version": "2.0.0", 3317 - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3318 - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3319 - "dev": true, 3320 - "dependencies": { 3321 - "shebang-regex": "^3.0.0" 3322 - }, 3323 - "engines": { 3324 - "node": ">=8" 3325 - } 3326 - }, 3327 - "node_modules/shebang-regex": { 3328 - "version": "3.0.0", 3329 - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3330 - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3331 - "dev": true, 3332 - "engines": { 3333 - "node": ">=8" 3334 - } 3335 - }, 3336 - "node_modules/sirv": { 3337 - "version": "3.0.1", 3338 - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", 3339 - "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", 3340 - "dev": true, 3341 - "dependencies": { 3342 - "@polka/url": "^1.0.0-next.24", 3343 - "mrmime": "^2.0.0", 3344 - "totalist": "^3.0.0" 3345 - }, 3346 - "engines": { 3347 - "node": ">=18" 3348 - } 3349 - }, 3350 - "node_modules/source-map-js": { 3351 - "version": "1.2.1", 3352 - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 3353 - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 3354 - "dev": true, 3355 - "engines": { 3356 - "node": ">=0.10.0" 3357 - } 3358 - }, 3359 - "node_modules/strip-json-comments": { 3360 - "version": "3.1.1", 3361 - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 3362 - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 3363 - "dev": true, 3364 - "engines": { 3365 - "node": ">=8" 3366 - }, 3367 - "funding": { 3368 - "url": "https://github.com/sponsors/sindresorhus" 3369 - } 3370 - }, 3371 - "node_modules/supports-color": { 3372 - "version": "7.2.0", 3373 - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3374 - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3375 - "dev": true, 3376 - "dependencies": { 3377 - "has-flag": "^4.0.0" 3378 - }, 3379 - "engines": { 3380 - "node": ">=8" 3381 - } 3382 - }, 3383 - "node_modules/svelte": { 3384 - "version": "5.20.3", 3385 - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.20.3.tgz", 3386 - "integrity": "sha512-8eE+/KXZP5tAYEefOG4eIvElARIrnh+IXJq2e+OM7hmhuZDk9yf7esrVD1YBxUtk5eqYBDYtvu628h71iFrXiA==", 3387 - "dev": true, 3388 - "dependencies": { 3389 - "@ampproject/remapping": "^2.3.0", 3390 - "@jridgewell/sourcemap-codec": "^1.5.0", 3391 - "@types/estree": "^1.0.5", 3392 - "acorn": "^8.12.1", 3393 - "acorn-typescript": "^1.4.13", 3394 - "aria-query": "^5.3.1", 3395 - "axobject-query": "^4.1.0", 3396 - "clsx": "^2.1.1", 3397 - "esm-env": "^1.2.1", 3398 - "esrap": "^1.4.3", 3399 - "is-reference": "^3.0.3", 3400 - "locate-character": "^3.0.0", 3401 - "magic-string": "^0.30.11", 3402 - "zimmerframe": "^1.1.2" 3403 - }, 3404 - "engines": { 3405 - "node": ">=18" 3406 - } 3407 - }, 3408 - "node_modules/svelte-check": { 3409 - "version": "4.1.4", 3410 - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.4.tgz", 3411 - "integrity": "sha512-v0j7yLbT29MezzaQJPEDwksybTE2Ups9rUxEXy92T06TiA0cbqcO8wAOwNUVkFW6B0hsYHA+oAX3BS8b/2oHtw==", 3412 - "dev": true, 3413 - "dependencies": { 3414 - "@jridgewell/trace-mapping": "^0.3.25", 3415 - "chokidar": "^4.0.1", 3416 - "fdir": "^6.2.0", 3417 - "picocolors": "^1.0.0", 3418 - "sade": "^1.7.4" 3419 - }, 3420 - "bin": { 3421 - "svelte-check": "bin/svelte-check" 3422 - }, 3423 - "engines": { 3424 - "node": ">= 18.0.0" 3425 - }, 3426 - "peerDependencies": { 3427 - "svelte": "^4.0.0 || ^5.0.0-next.0", 3428 - "typescript": ">=5.0.0" 3429 - } 3430 - }, 3431 - "node_modules/svelte-eslint-parser": { 3432 - "version": "0.43.0", 3433 - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.43.0.tgz", 3434 - "integrity": "sha512-GpU52uPKKcVnh8tKN5P4UZpJ/fUDndmq7wfsvoVXsyP+aY0anol7Yqo01fyrlaWGMFfm4av5DyrjlaXdLRJvGA==", 3435 - "dev": true, 3436 - "dependencies": { 3437 - "eslint-scope": "^7.2.2", 3438 - "eslint-visitor-keys": "^3.4.3", 3439 - "espree": "^9.6.1", 3440 - "postcss": "^8.4.39", 3441 - "postcss-scss": "^4.0.9" 3442 - }, 3443 - "engines": { 3444 - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 3445 - }, 3446 - "funding": { 3447 - "url": "https://github.com/sponsors/ota-meshi" 3448 - }, 3449 - "peerDependencies": { 3450 - "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" 3451 - }, 3452 - "peerDependenciesMeta": { 3453 - "svelte": { 3454 - "optional": true 3455 - } 3456 - } 3457 - }, 3458 - "node_modules/svelte-eslint-parser/node_modules/eslint-scope": { 3459 - "version": "7.2.2", 3460 - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 3461 - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 3462 - "dev": true, 3463 - "dependencies": { 3464 - "esrecurse": "^4.3.0", 3465 - "estraverse": "^5.2.0" 3466 - }, 3467 - "engines": { 3468 - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 3469 - }, 3470 - "funding": { 3471 - "url": "https://opencollective.com/eslint" 3472 - } 3473 - }, 3474 - "node_modules/svelte-eslint-parser/node_modules/eslint-visitor-keys": { 3475 - "version": "3.4.3", 3476 - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 3477 - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 3478 - "dev": true, 3479 - "engines": { 3480 - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 3481 - }, 3482 - "funding": { 3483 - "url": "https://opencollective.com/eslint" 3484 - } 3485 - }, 3486 - "node_modules/svelte-eslint-parser/node_modules/espree": { 3487 - "version": "9.6.1", 3488 - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 3489 - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 3490 - "dev": true, 3491 - "dependencies": { 3492 - "acorn": "^8.9.0", 3493 - "acorn-jsx": "^5.3.2", 3494 - "eslint-visitor-keys": "^3.4.1" 3495 - }, 3496 - "engines": { 3497 - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 3498 - }, 3499 - "funding": { 3500 - "url": "https://opencollective.com/eslint" 3501 - } 3502 - }, 3503 - "node_modules/tailwindcss": { 3504 - "version": "4.0.8", 3505 - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.8.tgz", 3506 - "integrity": "sha512-Me7N5CKR+D2A1xdWA5t5+kjjT7bwnxZOE6/yDI/ixJdJokszsn2n++mdU5yJwrsTpqFX2B9ZNMBJDwcqk9C9lw==", 3507 - "dev": true 3508 - }, 3509 - "node_modules/tapable": { 3510 - "version": "2.2.1", 3511 - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", 3512 - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", 3513 - "dev": true, 3514 - "engines": { 3515 - "node": ">=6" 3516 - } 3517 - }, 3518 - "node_modules/to-regex-range": { 3519 - "version": "5.0.1", 3520 - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3521 - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3522 - "dev": true, 3523 - "dependencies": { 3524 - "is-number": "^7.0.0" 3525 - }, 3526 - "engines": { 3527 - "node": ">=8.0" 3528 - } 3529 - }, 3530 - "node_modules/totalist": { 3531 - "version": "3.0.1", 3532 - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", 3533 - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", 3534 - "dev": true, 3535 - "engines": { 3536 - "node": ">=6" 3537 - } 3538 - }, 3539 - "node_modules/ts-api-utils": { 3540 - "version": "2.0.1", 3541 - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", 3542 - "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", 3543 - "dev": true, 3544 - "engines": { 3545 - "node": ">=18.12" 3546 - }, 3547 - "peerDependencies": { 3548 - "typescript": ">=4.8.4" 3549 - } 3550 - }, 3551 - "node_modules/type-check": { 3552 - "version": "0.4.0", 3553 - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 3554 - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 3555 - "dev": true, 3556 - "dependencies": { 3557 - "prelude-ls": "^1.2.1" 3558 - }, 3559 - "engines": { 3560 - "node": ">= 0.8.0" 3561 - } 3562 - }, 3563 - "node_modules/typescript": { 3564 - "version": "5.7.3", 3565 - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", 3566 - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", 3567 - "dev": true, 3568 - "bin": { 3569 - "tsc": "bin/tsc", 3570 - "tsserver": "bin/tsserver" 3571 - }, 3572 - "engines": { 3573 - "node": ">=14.17" 3574 - } 3575 - }, 3576 - "node_modules/typescript-eslint": { 3577 - "version": "8.24.1", 3578 - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.24.1.tgz", 3579 - "integrity": "sha512-cw3rEdzDqBs70TIcb0Gdzbt6h11BSs2pS0yaq7hDWDBtCCSei1pPSUXE9qUdQ/Wm9NgFg8mKtMt1b8fTHIl1jA==", 3580 - "dev": true, 3581 - "dependencies": { 3582 - "@typescript-eslint/eslint-plugin": "8.24.1", 3583 - "@typescript-eslint/parser": "8.24.1", 3584 - "@typescript-eslint/utils": "8.24.1" 3585 - }, 3586 - "engines": { 3587 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 3588 - }, 3589 - "funding": { 3590 - "type": "opencollective", 3591 - "url": "https://opencollective.com/typescript-eslint" 3592 - }, 3593 - "peerDependencies": { 3594 - "eslint": "^8.57.0 || ^9.0.0", 3595 - "typescript": ">=4.8.4 <5.8.0" 3596 - } 3597 - }, 3598 - "node_modules/uri-js": { 3599 - "version": "4.4.1", 3600 - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3601 - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3602 - "dev": true, 3603 - "dependencies": { 3604 - "punycode": "^2.1.0" 3605 - } 3606 - }, 3607 - "node_modules/util-deprecate": { 3608 - "version": "1.0.2", 3609 - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3610 - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 3611 - "dev": true 3612 - }, 3613 - "node_modules/vite": { 3614 - "version": "6.1.1", 3615 - "resolved": "https://registry.npmjs.org/vite/-/vite-6.1.1.tgz", 3616 - "integrity": "sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==", 3617 - "dev": true, 3618 - "dependencies": { 3619 - "esbuild": "^0.24.2", 3620 - "postcss": "^8.5.2", 3621 - "rollup": "^4.30.1" 3622 - }, 3623 - "bin": { 3624 - "vite": "bin/vite.js" 3625 - }, 3626 - "engines": { 3627 - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 3628 - }, 3629 - "funding": { 3630 - "url": "https://github.com/vitejs/vite?sponsor=1" 3631 - }, 3632 - "optionalDependencies": { 3633 - "fsevents": "~2.3.3" 3634 - }, 3635 - "peerDependencies": { 3636 - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 3637 - "jiti": ">=1.21.0", 3638 - "less": "*", 3639 - "lightningcss": "^1.21.0", 3640 - "sass": "*", 3641 - "sass-embedded": "*", 3642 - "stylus": "*", 3643 - "sugarss": "*", 3644 - "terser": "^5.16.0", 3645 - "tsx": "^4.8.1", 3646 - "yaml": "^2.4.2" 3647 - }, 3648 - "peerDependenciesMeta": { 3649 - "@types/node": { 3650 - "optional": true 3651 - }, 3652 - "jiti": { 3653 - "optional": true 3654 - }, 3655 - "less": { 3656 - "optional": true 3657 - }, 3658 - "lightningcss": { 3659 - "optional": true 3660 - }, 3661 - "sass": { 3662 - "optional": true 3663 - }, 3664 - "sass-embedded": { 3665 - "optional": true 3666 - }, 3667 - "stylus": { 3668 - "optional": true 3669 - }, 3670 - "sugarss": { 3671 - "optional": true 3672 - }, 3673 - "terser": { 3674 - "optional": true 3675 - }, 3676 - "tsx": { 3677 - "optional": true 3678 - }, 3679 - "yaml": { 3680 - "optional": true 3681 - } 3682 - } 3683 - }, 3684 - "node_modules/vitefu": { 3685 - "version": "1.0.6", 3686 - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.6.tgz", 3687 - "integrity": "sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==", 3688 - "dev": true, 3689 - "peerDependencies": { 3690 - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" 3691 - }, 3692 - "peerDependenciesMeta": { 3693 - "vite": { 3694 - "optional": true 3695 - } 3696 - } 3697 - }, 3698 - "node_modules/which": { 3699 - "version": "2.0.2", 3700 - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3701 - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3702 - "dev": true, 3703 - "dependencies": { 3704 - "isexe": "^2.0.0" 3705 - }, 3706 - "bin": { 3707 - "node-which": "bin/node-which" 3708 - }, 3709 - "engines": { 3710 - "node": ">= 8" 3711 - } 3712 - }, 3713 - "node_modules/word-wrap": { 3714 - "version": "1.2.5", 3715 - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 3716 - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 3717 - "dev": true, 3718 - "engines": { 3719 - "node": ">=0.10.0" 3720 - } 3721 - }, 3722 - "node_modules/yaml": { 3723 - "version": "2.7.0", 3724 - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", 3725 - "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", 3726 - "dev": true, 3727 - "optional": true, 3728 - "peer": true, 3729 - "bin": { 3730 - "yaml": "bin.mjs" 3731 - }, 3732 - "engines": { 3733 - "node": ">= 14" 3734 - } 3735 - }, 3736 - "node_modules/yocto-queue": { 3737 - "version": "0.1.0", 3738 - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 3739 - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 3740 - "dev": true, 3741 - "engines": { 3742 - "node": ">=10" 3743 - }, 3744 - "funding": { 3745 - "url": "https://github.com/sponsors/sindresorhus" 3746 - } 3747 - }, 3748 - "node_modules/zimmerframe": { 3749 - "version": "1.1.2", 3750 - "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", 3751 - "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==", 3752 - "dev": true 3753 - } 3754 - } 3755 - }
+29 -25
package.json
··· 1 1 { 2 2 "name": "svelte-atproto-client-oauth", 3 3 "private": true, 4 - "version": "0.0.1", 4 + "version": "0.1.0", 5 5 "type": "module", 6 6 "scripts": { 7 7 "dev": "vite dev", ··· 14 14 "lint": "prettier --check . && eslint ." 15 15 }, 16 16 "devDependencies": { 17 - "@eslint/compat": "^1.2.5", 18 - "@eslint/js": "^9.18.0", 19 - "@sveltejs/adapter-auto": "^4.0.0", 20 - "@sveltejs/kit": "^2.16.0", 21 - "@sveltejs/vite-plugin-svelte": "^5.0.0", 22 - "@tailwindcss/vite": "^4.0.0", 23 - "eslint": "^9.18.0", 24 - "eslint-config-prettier": "^10.0.1", 25 - "eslint-plugin-svelte": "^2.46.1", 26 - "globals": "^15.14.0", 27 - "prettier": "^3.4.2", 28 - "prettier-plugin-svelte": "^3.3.3", 29 - "prettier-plugin-tailwindcss": "^0.6.11", 30 - "svelte": "^5.0.0", 31 - "svelte-check": "^4.0.0", 32 - "tailwindcss": "^4.0.0", 33 - "typescript": "^5.0.0", 34 - "typescript-eslint": "^8.20.0", 35 - "vite": "^6.0.0", 36 - "@sveltejs/adapter-static": "^3.0.8", 37 - "@tailwindcss/forms": "^0.5.10" 38 - }, 39 - "dependencies": { 40 - "@atcute/oauth-browser-client": "^1.0.13" 17 + "@atcute/atproto": "^3.1.10", 18 + "@atcute/bluesky": "^3.2.15", 19 + "@atcute/client": "^4.2.1", 20 + "@atcute/identity-resolver": "^1.2.2", 21 + "@atcute/lexicons": "^1.2.6", 22 + "@atcute/oauth-browser-client": "^2.0.3", 23 + "@eslint/compat": "^2.0.1", 24 + "@eslint/js": "^9.39.2", 25 + "@sveltejs/adapter-auto": "^7.0.0", 26 + "@sveltejs/adapter-static": "^3.0.10", 27 + "@sveltejs/kit": "^2.50.0", 28 + "@sveltejs/vite-plugin-svelte": "^6.2.4", 29 + "@tailwindcss/forms": "^0.5.11", 30 + "@tailwindcss/vite": "^4.1.18", 31 + "bits-ui": "^2.15.4", 32 + "eslint": "^9.39.2", 33 + "eslint-config-prettier": "^10.1.8", 34 + "eslint-plugin-svelte": "^3.14.0", 35 + "globals": "^17.0.0", 36 + "prettier": "^3.8.1", 37 + "prettier-plugin-svelte": "^3.4.1", 38 + "prettier-plugin-tailwindcss": "^0.7.2", 39 + "svelte": "^5.48.0", 40 + "svelte-check": "^4.3.5", 41 + "tailwindcss": "^4.1.18", 42 + "typescript": "^5.9.3", 43 + "typescript-eslint": "^8.53.1", 44 + "vite": "^7.3.1" 41 45 }, 42 46 "license": "MIT" 43 47 }
+2736
pnpm-lock.yaml
··· 1 + lockfileVersion: '9.0' 2 + 3 + settings: 4 + autoInstallPeers: true 5 + excludeLinksFromLockfile: false 6 + 7 + importers: 8 + 9 + .: 10 + devDependencies: 11 + '@atcute/atproto': 12 + specifier: ^3.1.10 13 + version: 3.1.10 14 + '@atcute/bluesky': 15 + specifier: ^3.2.15 16 + version: 3.2.15 17 + '@atcute/client': 18 + specifier: ^4.2.1 19 + version: 4.2.1 20 + '@atcute/identity-resolver': 21 + specifier: ^1.2.2 22 + version: 1.2.2(@atcute/identity@1.1.3) 23 + '@atcute/lexicons': 24 + specifier: ^1.2.6 25 + version: 1.2.6 26 + '@atcute/oauth-browser-client': 27 + specifier: ^2.0.3 28 + version: 2.0.3(@atcute/identity@1.1.3) 29 + '@eslint/compat': 30 + specifier: ^2.0.1 31 + version: 2.0.1(eslint@9.39.2(jiti@2.6.1)) 32 + '@eslint/js': 33 + specifier: ^9.39.2 34 + version: 9.39.2 35 + '@sveltejs/adapter-auto': 36 + specifier: ^7.0.0 37 + version: 7.0.0(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2))) 38 + '@sveltejs/adapter-static': 39 + specifier: ^3.0.10 40 + version: 3.0.10(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2))) 41 + '@sveltejs/kit': 42 + specifier: ^2.50.0 43 + version: 2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)) 44 + '@sveltejs/vite-plugin-svelte': 45 + specifier: ^6.2.4 46 + version: 6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)) 47 + '@tailwindcss/forms': 48 + specifier: ^0.5.11 49 + version: 0.5.11(tailwindcss@4.1.18) 50 + '@tailwindcss/vite': 51 + specifier: ^4.1.18 52 + version: 4.1.18(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)) 53 + bits-ui: 54 + specifier: ^2.15.4 55 + version: 2.15.4(@internationalized/date@3.10.1)(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0) 56 + eslint: 57 + specifier: ^9.39.2 58 + version: 9.39.2(jiti@2.6.1) 59 + eslint-config-prettier: 60 + specifier: ^10.1.8 61 + version: 10.1.8(eslint@9.39.2(jiti@2.6.1)) 62 + eslint-plugin-svelte: 63 + specifier: ^3.14.0 64 + version: 3.14.0(eslint@9.39.2(jiti@2.6.1))(svelte@5.48.0) 65 + globals: 66 + specifier: ^17.0.0 67 + version: 17.0.0 68 + prettier: 69 + specifier: ^3.8.1 70 + version: 3.8.1 71 + prettier-plugin-svelte: 72 + specifier: ^3.4.1 73 + version: 3.4.1(prettier@3.8.1)(svelte@5.48.0) 74 + prettier-plugin-tailwindcss: 75 + specifier: ^0.7.2 76 + version: 0.7.2(prettier-plugin-svelte@3.4.1(prettier@3.8.1)(svelte@5.48.0))(prettier@3.8.1) 77 + svelte: 78 + specifier: ^5.48.0 79 + version: 5.48.0 80 + svelte-check: 81 + specifier: ^4.3.5 82 + version: 4.3.5(picomatch@4.0.3)(svelte@5.48.0)(typescript@5.9.3) 83 + tailwindcss: 84 + specifier: ^4.1.18 85 + version: 4.1.18 86 + typescript: 87 + specifier: ^5.9.3 88 + version: 5.9.3 89 + typescript-eslint: 90 + specifier: ^8.53.1 91 + version: 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 92 + vite: 93 + specifier: ^7.3.1 94 + version: 7.3.1(jiti@2.6.1)(lightningcss@1.30.2) 95 + 96 + packages: 97 + 98 + '@atcute/atproto@3.1.10': 99 + resolution: {integrity: sha512-+GKZpOc0PJcdWMQEkTfg/rSNDAAHxmAUGBl60g2az15etqJn5WaUPNGFE2sB7hKpwi5Ue2h/L0OacINcE/JDDQ==, tarball: https://registry.npmjs.org/@atcute/atproto/-/atproto-3.1.10.tgz} 100 + 101 + '@atcute/bluesky@3.2.15': 102 + resolution: {integrity: sha512-H4RW3WffjfdKvOZ9issEUQnuSR4KfuAwwJnYu0fclA9VDa99JTJ+pa8tTl9lFeBV9DINtWJAx7rdIbICoVCstQ==, tarball: https://registry.npmjs.org/@atcute/bluesky/-/bluesky-3.2.15.tgz} 103 + 104 + '@atcute/client@4.2.1': 105 + resolution: {integrity: sha512-ZBFM2pW075JtgGFu5g7HHZBecrClhlcNH8GVP9Zz1aViWR+cjjBsTpeE63rJs+FCOHFYlirUyo5L8SGZ4kMINw==, tarball: https://registry.npmjs.org/@atcute/client/-/client-4.2.1.tgz} 106 + 107 + '@atcute/identity-resolver@1.2.2': 108 + resolution: {integrity: sha512-eUh/UH4bFvuXS0X7epYCeJC/kj4rbBXfSRumLEH4smMVwNOgTo7cL/0Srty+P/qVPoZEyXdfEbS0PHJyzoXmHw==, tarball: https://registry.npmjs.org/@atcute/identity-resolver/-/identity-resolver-1.2.2.tgz} 109 + peerDependencies: 110 + '@atcute/identity': ^1.0.0 111 + 112 + '@atcute/identity@1.1.3': 113 + resolution: {integrity: sha512-oIqPoI8TwWeQxvcLmFEZLdN2XdWcaLVtlm8pNk0E72As9HNzzD9pwKPrLr3rmTLRIoULPPFmq9iFNsTeCIU9ng==, tarball: https://registry.npmjs.org/@atcute/identity/-/identity-1.1.3.tgz} 114 + 115 + '@atcute/lexicons@1.2.6': 116 + resolution: {integrity: sha512-s76UQd8D+XmHIzrjD9CJ9SOOeeLPHc+sMmcj7UFakAW/dDFXc579fcRdRfuUKvXBL5v1Gs2VgDdlh/IvvQZAwA==, tarball: https://registry.npmjs.org/@atcute/lexicons/-/lexicons-1.2.6.tgz} 117 + 118 + '@atcute/multibase@1.1.6': 119 + resolution: {integrity: sha512-HBxuCgYLKPPxETV0Rot4VP9e24vKl8JdzGCZOVsDaOXJgbRZoRIF67Lp0H/OgnJeH/Xpva8Z5ReoTNJE5dn3kg==, tarball: https://registry.npmjs.org/@atcute/multibase/-/multibase-1.1.6.tgz} 120 + 121 + '@atcute/oauth-browser-client@2.0.3': 122 + resolution: {integrity: sha512-rzUjwhjE4LRRKdQnCFQag/zXRZMEAB1hhBoLfnoQuHwWbmDUCL7fzwC3jRhDPp3om8XaYNDj8a/iqRip0wRqoQ==, tarball: https://registry.npmjs.org/@atcute/oauth-browser-client/-/oauth-browser-client-2.0.3.tgz} 123 + 124 + '@atcute/uint8array@1.0.6': 125 + resolution: {integrity: sha512-ucfRBQc7BFT8n9eCyGOzDHEMKF/nZwhS2pPao4Xtab1ML3HdFYcX2DM1tadCzas85QTGxHe5urnUAAcNKGRi9A==, tarball: https://registry.npmjs.org/@atcute/uint8array/-/uint8array-1.0.6.tgz} 126 + 127 + '@atcute/util-fetch@1.0.5': 128 + resolution: {integrity: sha512-qjHj01BGxjSjIFdPiAjSARnodJIIyKxnCMMEcXMESo9TAyND6XZQqrie5fia+LlYWVXdpsTds8uFQwc9jdKTig==, tarball: https://registry.npmjs.org/@atcute/util-fetch/-/util-fetch-1.0.5.tgz} 129 + 130 + '@atcute/util-text@0.0.1': 131 + resolution: {integrity: sha512-t1KZqvn0AYy+h2KcJyHnKF9aEqfRfMUmyY8j1ELtAEIgqN9CxINAjxnoRCJIFUlvWzb+oY3uElQL/Vyk3yss0g==, tarball: https://registry.npmjs.org/@atcute/util-text/-/util-text-0.0.1.tgz} 132 + 133 + '@badrap/valita@0.4.6': 134 + resolution: {integrity: sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==, tarball: https://registry.npmjs.org/@badrap/valita/-/valita-0.4.6.tgz} 135 + engines: {node: '>= 18'} 136 + 137 + '@esbuild/aix-ppc64@0.27.2': 138 + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz} 139 + engines: {node: '>=18'} 140 + cpu: [ppc64] 141 + os: [aix] 142 + 143 + '@esbuild/android-arm64@0.27.2': 144 + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz} 145 + engines: {node: '>=18'} 146 + cpu: [arm64] 147 + os: [android] 148 + 149 + '@esbuild/android-arm@0.27.2': 150 + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz} 151 + engines: {node: '>=18'} 152 + cpu: [arm] 153 + os: [android] 154 + 155 + '@esbuild/android-x64@0.27.2': 156 + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz} 157 + engines: {node: '>=18'} 158 + cpu: [x64] 159 + os: [android] 160 + 161 + '@esbuild/darwin-arm64@0.27.2': 162 + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz} 163 + engines: {node: '>=18'} 164 + cpu: [arm64] 165 + os: [darwin] 166 + 167 + '@esbuild/darwin-x64@0.27.2': 168 + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz} 169 + engines: {node: '>=18'} 170 + cpu: [x64] 171 + os: [darwin] 172 + 173 + '@esbuild/freebsd-arm64@0.27.2': 174 + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz} 175 + engines: {node: '>=18'} 176 + cpu: [arm64] 177 + os: [freebsd] 178 + 179 + '@esbuild/freebsd-x64@0.27.2': 180 + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz} 181 + engines: {node: '>=18'} 182 + cpu: [x64] 183 + os: [freebsd] 184 + 185 + '@esbuild/linux-arm64@0.27.2': 186 + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz} 187 + engines: {node: '>=18'} 188 + cpu: [arm64] 189 + os: [linux] 190 + 191 + '@esbuild/linux-arm@0.27.2': 192 + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz} 193 + engines: {node: '>=18'} 194 + cpu: [arm] 195 + os: [linux] 196 + 197 + '@esbuild/linux-ia32@0.27.2': 198 + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz} 199 + engines: {node: '>=18'} 200 + cpu: [ia32] 201 + os: [linux] 202 + 203 + '@esbuild/linux-loong64@0.27.2': 204 + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz} 205 + engines: {node: '>=18'} 206 + cpu: [loong64] 207 + os: [linux] 208 + 209 + '@esbuild/linux-mips64el@0.27.2': 210 + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz} 211 + engines: {node: '>=18'} 212 + cpu: [mips64el] 213 + os: [linux] 214 + 215 + '@esbuild/linux-ppc64@0.27.2': 216 + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz} 217 + engines: {node: '>=18'} 218 + cpu: [ppc64] 219 + os: [linux] 220 + 221 + '@esbuild/linux-riscv64@0.27.2': 222 + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz} 223 + engines: {node: '>=18'} 224 + cpu: [riscv64] 225 + os: [linux] 226 + 227 + '@esbuild/linux-s390x@0.27.2': 228 + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz} 229 + engines: {node: '>=18'} 230 + cpu: [s390x] 231 + os: [linux] 232 + 233 + '@esbuild/linux-x64@0.27.2': 234 + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz} 235 + engines: {node: '>=18'} 236 + cpu: [x64] 237 + os: [linux] 238 + 239 + '@esbuild/netbsd-arm64@0.27.2': 240 + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==, tarball: https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz} 241 + engines: {node: '>=18'} 242 + cpu: [arm64] 243 + os: [netbsd] 244 + 245 + '@esbuild/netbsd-x64@0.27.2': 246 + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz} 247 + engines: {node: '>=18'} 248 + cpu: [x64] 249 + os: [netbsd] 250 + 251 + '@esbuild/openbsd-arm64@0.27.2': 252 + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==, tarball: https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz} 253 + engines: {node: '>=18'} 254 + cpu: [arm64] 255 + os: [openbsd] 256 + 257 + '@esbuild/openbsd-x64@0.27.2': 258 + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz} 259 + engines: {node: '>=18'} 260 + cpu: [x64] 261 + os: [openbsd] 262 + 263 + '@esbuild/openharmony-arm64@0.27.2': 264 + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==, tarball: https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz} 265 + engines: {node: '>=18'} 266 + cpu: [arm64] 267 + os: [openharmony] 268 + 269 + '@esbuild/sunos-x64@0.27.2': 270 + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz} 271 + engines: {node: '>=18'} 272 + cpu: [x64] 273 + os: [sunos] 274 + 275 + '@esbuild/win32-arm64@0.27.2': 276 + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz} 277 + engines: {node: '>=18'} 278 + cpu: [arm64] 279 + os: [win32] 280 + 281 + '@esbuild/win32-ia32@0.27.2': 282 + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz} 283 + engines: {node: '>=18'} 284 + cpu: [ia32] 285 + os: [win32] 286 + 287 + '@esbuild/win32-x64@0.27.2': 288 + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz} 289 + engines: {node: '>=18'} 290 + cpu: [x64] 291 + os: [win32] 292 + 293 + '@eslint-community/eslint-utils@4.9.1': 294 + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==, tarball: https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz} 295 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 296 + peerDependencies: 297 + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 298 + 299 + '@eslint-community/regexpp@4.12.2': 300 + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==, tarball: https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz} 301 + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 302 + 303 + '@eslint/compat@2.0.1': 304 + resolution: {integrity: sha512-yl/JsgplclzuvGFNqwNYV4XNPhP3l62ZOP9w/47atNAdmDtIFCx6X7CSk/SlWUuBGkT4Et/5+UD+WyvX2iiIWA==, tarball: https://registry.npmjs.org/@eslint/compat/-/compat-2.0.1.tgz} 305 + engines: {node: ^20.19.0 || ^22.13.0 || >=24} 306 + peerDependencies: 307 + eslint: ^8.40 || 9 308 + peerDependenciesMeta: 309 + eslint: 310 + optional: true 311 + 312 + '@eslint/config-array@0.21.1': 313 + resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==, tarball: https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz} 314 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 315 + 316 + '@eslint/config-helpers@0.4.2': 317 + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==, tarball: https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz} 318 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 319 + 320 + '@eslint/core@0.17.0': 321 + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==, tarball: https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz} 322 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 323 + 324 + '@eslint/core@1.0.1': 325 + resolution: {integrity: sha512-r18fEAj9uCk+VjzGt2thsbOmychS+4kxI14spVNibUO2vqKX7obOG+ymZljAwuPZl+S3clPGwCwTDtrdqTiY6Q==, tarball: https://registry.npmjs.org/@eslint/core/-/core-1.0.1.tgz} 326 + engines: {node: ^20.19.0 || ^22.13.0 || >=24} 327 + 328 + '@eslint/eslintrc@3.3.3': 329 + resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==, tarball: https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz} 330 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 331 + 332 + '@eslint/js@9.39.2': 333 + resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==, tarball: https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz} 334 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 335 + 336 + '@eslint/object-schema@2.1.7': 337 + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==, tarball: https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz} 338 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 339 + 340 + '@eslint/plugin-kit@0.4.1': 341 + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==, tarball: https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz} 342 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 343 + 344 + '@floating-ui/core@1.7.3': 345 + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==, tarball: https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz} 346 + 347 + '@floating-ui/dom@1.7.4': 348 + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==, tarball: https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz} 349 + 350 + '@floating-ui/utils@0.2.10': 351 + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==, tarball: https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz} 352 + 353 + '@humanfs/core@0.19.1': 354 + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==, tarball: https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz} 355 + engines: {node: '>=18.18.0'} 356 + 357 + '@humanfs/node@0.16.7': 358 + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==, tarball: https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz} 359 + engines: {node: '>=18.18.0'} 360 + 361 + '@humanwhocodes/module-importer@1.0.1': 362 + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, tarball: https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz} 363 + engines: {node: '>=12.22'} 364 + 365 + '@humanwhocodes/retry@0.4.3': 366 + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==, tarball: https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz} 367 + engines: {node: '>=18.18'} 368 + 369 + '@internationalized/date@3.10.1': 370 + resolution: {integrity: sha512-oJrXtQiAXLvT9clCf1K4kxp3eKsQhIaZqxEyowkBcsvZDdZkbWrVmnGknxs5flTD0VGsxrxKgBCZty1EzoiMzA==, tarball: https://registry.npmjs.org/@internationalized/date/-/date-3.10.1.tgz} 371 + 372 + '@jridgewell/gen-mapping@0.3.13': 373 + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, tarball: https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz} 374 + 375 + '@jridgewell/remapping@2.3.5': 376 + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==, tarball: https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz} 377 + 378 + '@jridgewell/resolve-uri@3.1.2': 379 + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, tarball: https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz} 380 + engines: {node: '>=6.0.0'} 381 + 382 + '@jridgewell/sourcemap-codec@1.5.5': 383 + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, tarball: https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz} 384 + 385 + '@jridgewell/trace-mapping@0.3.31': 386 + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, tarball: https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz} 387 + 388 + '@polka/url@1.0.0-next.29': 389 + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==, tarball: https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz} 390 + 391 + '@rollup/rollup-android-arm-eabi@4.56.0': 392 + resolution: {integrity: sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz} 393 + cpu: [arm] 394 + os: [android] 395 + 396 + '@rollup/rollup-android-arm64@4.56.0': 397 + resolution: {integrity: sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz} 398 + cpu: [arm64] 399 + os: [android] 400 + 401 + '@rollup/rollup-darwin-arm64@4.56.0': 402 + resolution: {integrity: sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz} 403 + cpu: [arm64] 404 + os: [darwin] 405 + 406 + '@rollup/rollup-darwin-x64@4.56.0': 407 + resolution: {integrity: sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz} 408 + cpu: [x64] 409 + os: [darwin] 410 + 411 + '@rollup/rollup-freebsd-arm64@4.56.0': 412 + resolution: {integrity: sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==, tarball: https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz} 413 + cpu: [arm64] 414 + os: [freebsd] 415 + 416 + '@rollup/rollup-freebsd-x64@4.56.0': 417 + resolution: {integrity: sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==, tarball: https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz} 418 + cpu: [x64] 419 + os: [freebsd] 420 + 421 + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': 422 + resolution: {integrity: sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz} 423 + cpu: [arm] 424 + os: [linux] 425 + 426 + '@rollup/rollup-linux-arm-musleabihf@4.56.0': 427 + resolution: {integrity: sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz} 428 + cpu: [arm] 429 + os: [linux] 430 + 431 + '@rollup/rollup-linux-arm64-gnu@4.56.0': 432 + resolution: {integrity: sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz} 433 + cpu: [arm64] 434 + os: [linux] 435 + 436 + '@rollup/rollup-linux-arm64-musl@4.56.0': 437 + resolution: {integrity: sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz} 438 + cpu: [arm64] 439 + os: [linux] 440 + 441 + '@rollup/rollup-linux-loong64-gnu@4.56.0': 442 + resolution: {integrity: sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz} 443 + cpu: [loong64] 444 + os: [linux] 445 + 446 + '@rollup/rollup-linux-loong64-musl@4.56.0': 447 + resolution: {integrity: sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz} 448 + cpu: [loong64] 449 + os: [linux] 450 + 451 + '@rollup/rollup-linux-ppc64-gnu@4.56.0': 452 + resolution: {integrity: sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz} 453 + cpu: [ppc64] 454 + os: [linux] 455 + 456 + '@rollup/rollup-linux-ppc64-musl@4.56.0': 457 + resolution: {integrity: sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz} 458 + cpu: [ppc64] 459 + os: [linux] 460 + 461 + '@rollup/rollup-linux-riscv64-gnu@4.56.0': 462 + resolution: {integrity: sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz} 463 + cpu: [riscv64] 464 + os: [linux] 465 + 466 + '@rollup/rollup-linux-riscv64-musl@4.56.0': 467 + resolution: {integrity: sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz} 468 + cpu: [riscv64] 469 + os: [linux] 470 + 471 + '@rollup/rollup-linux-s390x-gnu@4.56.0': 472 + resolution: {integrity: sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz} 473 + cpu: [s390x] 474 + os: [linux] 475 + 476 + '@rollup/rollup-linux-x64-gnu@4.56.0': 477 + resolution: {integrity: sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz} 478 + cpu: [x64] 479 + os: [linux] 480 + 481 + '@rollup/rollup-linux-x64-musl@4.56.0': 482 + resolution: {integrity: sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz} 483 + cpu: [x64] 484 + os: [linux] 485 + 486 + '@rollup/rollup-openbsd-x64@4.56.0': 487 + resolution: {integrity: sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==, tarball: https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz} 488 + cpu: [x64] 489 + os: [openbsd] 490 + 491 + '@rollup/rollup-openharmony-arm64@4.56.0': 492 + resolution: {integrity: sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==, tarball: https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz} 493 + cpu: [arm64] 494 + os: [openharmony] 495 + 496 + '@rollup/rollup-win32-arm64-msvc@4.56.0': 497 + resolution: {integrity: sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz} 498 + cpu: [arm64] 499 + os: [win32] 500 + 501 + '@rollup/rollup-win32-ia32-msvc@4.56.0': 502 + resolution: {integrity: sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz} 503 + cpu: [ia32] 504 + os: [win32] 505 + 506 + '@rollup/rollup-win32-x64-gnu@4.56.0': 507 + resolution: {integrity: sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz} 508 + cpu: [x64] 509 + os: [win32] 510 + 511 + '@rollup/rollup-win32-x64-msvc@4.56.0': 512 + resolution: {integrity: sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz} 513 + cpu: [x64] 514 + os: [win32] 515 + 516 + '@standard-schema/spec@1.1.0': 517 + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==, tarball: https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz} 518 + 519 + '@sveltejs/acorn-typescript@1.0.8': 520 + resolution: {integrity: sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==, tarball: https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.8.tgz} 521 + peerDependencies: 522 + acorn: ^8.9.0 523 + 524 + '@sveltejs/adapter-auto@7.0.0': 525 + resolution: {integrity: sha512-ImDWaErTOCkRS4Gt+5gZuymKFBobnhChXUZ9lhUZLahUgvA4OOvRzi3sahzYgbxGj5nkA6OV0GAW378+dl/gyw==, tarball: https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-7.0.0.tgz} 526 + peerDependencies: 527 + '@sveltejs/kit': ^2.0.0 528 + 529 + '@sveltejs/adapter-static@3.0.10': 530 + resolution: {integrity: sha512-7D9lYFWJmB7zxZyTE/qxjksvMqzMuYrrsyh1f4AlZqeZeACPRySjbC3aFiY55wb1tWUaKOQG9PVbm74JcN2Iew==, tarball: https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.10.tgz} 531 + peerDependencies: 532 + '@sveltejs/kit': ^2.0.0 533 + 534 + '@sveltejs/kit@2.50.0': 535 + resolution: {integrity: sha512-Hj8sR8O27p2zshFEIJzsvfhLzxga/hWw6tRLnBjMYw70m1aS9BSYCqAUtzDBjRREtX1EvLMYgaC0mYE3Hz4KWA==, tarball: https://registry.npmjs.org/@sveltejs/kit/-/kit-2.50.0.tgz} 536 + engines: {node: '>=18.13'} 537 + hasBin: true 538 + peerDependencies: 539 + '@opentelemetry/api': ^1.0.0 540 + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 541 + svelte: ^4.0.0 || ^5.0.0-next.0 542 + typescript: ^5.3.3 543 + vite: ^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 544 + peerDependenciesMeta: 545 + '@opentelemetry/api': 546 + optional: true 547 + typescript: 548 + optional: true 549 + 550 + '@sveltejs/vite-plugin-svelte-inspector@5.0.2': 551 + resolution: {integrity: sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==, tarball: https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-5.0.2.tgz} 552 + engines: {node: ^20.19 || ^22.12 || >=24} 553 + peerDependencies: 554 + '@sveltejs/vite-plugin-svelte': ^6.0.0-next.0 555 + svelte: ^5.0.0 556 + vite: ^6.3.0 || ^7.0.0 557 + 558 + '@sveltejs/vite-plugin-svelte@6.2.4': 559 + resolution: {integrity: sha512-ou/d51QSdTyN26D7h6dSpusAKaZkAiGM55/AKYi+9AGZw7q85hElbjK3kEyzXHhLSnRISHOYzVge6x0jRZ7DXA==, tarball: https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.4.tgz} 560 + engines: {node: ^20.19 || ^22.12 || >=24} 561 + peerDependencies: 562 + svelte: ^5.0.0 563 + vite: ^6.3.0 || ^7.0.0 564 + 565 + '@swc/helpers@0.5.18': 566 + resolution: {integrity: sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==, tarball: https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.18.tgz} 567 + 568 + '@tailwindcss/forms@0.5.11': 569 + resolution: {integrity: sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA==, tarball: https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.11.tgz} 570 + peerDependencies: 571 + tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1' 572 + 573 + '@tailwindcss/node@4.1.18': 574 + resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==, tarball: https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz} 575 + 576 + '@tailwindcss/oxide-android-arm64@4.1.18': 577 + resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz} 578 + engines: {node: '>= 10'} 579 + cpu: [arm64] 580 + os: [android] 581 + 582 + '@tailwindcss/oxide-darwin-arm64@4.1.18': 583 + resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz} 584 + engines: {node: '>= 10'} 585 + cpu: [arm64] 586 + os: [darwin] 587 + 588 + '@tailwindcss/oxide-darwin-x64@4.1.18': 589 + resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz} 590 + engines: {node: '>= 10'} 591 + cpu: [x64] 592 + os: [darwin] 593 + 594 + '@tailwindcss/oxide-freebsd-x64@4.1.18': 595 + resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz} 596 + engines: {node: '>= 10'} 597 + cpu: [x64] 598 + os: [freebsd] 599 + 600 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': 601 + resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz} 602 + engines: {node: '>= 10'} 603 + cpu: [arm] 604 + os: [linux] 605 + 606 + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': 607 + resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz} 608 + engines: {node: '>= 10'} 609 + cpu: [arm64] 610 + os: [linux] 611 + 612 + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': 613 + resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz} 614 + engines: {node: '>= 10'} 615 + cpu: [arm64] 616 + os: [linux] 617 + 618 + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': 619 + resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz} 620 + engines: {node: '>= 10'} 621 + cpu: [x64] 622 + os: [linux] 623 + 624 + '@tailwindcss/oxide-linux-x64-musl@4.1.18': 625 + resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz} 626 + engines: {node: '>= 10'} 627 + cpu: [x64] 628 + os: [linux] 629 + 630 + '@tailwindcss/oxide-wasm32-wasi@4.1.18': 631 + resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz} 632 + engines: {node: '>=14.0.0'} 633 + cpu: [wasm32] 634 + bundledDependencies: 635 + - '@napi-rs/wasm-runtime' 636 + - '@emnapi/core' 637 + - '@emnapi/runtime' 638 + - '@tybys/wasm-util' 639 + - '@emnapi/wasi-threads' 640 + - tslib 641 + 642 + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': 643 + resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz} 644 + engines: {node: '>= 10'} 645 + cpu: [arm64] 646 + os: [win32] 647 + 648 + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': 649 + resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz} 650 + engines: {node: '>= 10'} 651 + cpu: [x64] 652 + os: [win32] 653 + 654 + '@tailwindcss/oxide@4.1.18': 655 + resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==, tarball: https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz} 656 + engines: {node: '>= 10'} 657 + 658 + '@tailwindcss/vite@4.1.18': 659 + resolution: {integrity: sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==, tarball: https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.18.tgz} 660 + peerDependencies: 661 + vite: ^5.2.0 || ^6 || ^7 662 + 663 + '@types/cookie@0.6.0': 664 + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==, tarball: https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz} 665 + 666 + '@types/estree@1.0.8': 667 + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==, tarball: https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz} 668 + 669 + '@types/json-schema@7.0.15': 670 + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, tarball: https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz} 671 + 672 + '@typescript-eslint/eslint-plugin@8.53.1': 673 + resolution: {integrity: sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==, tarball: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.1.tgz} 674 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 675 + peerDependencies: 676 + '@typescript-eslint/parser': ^8.53.1 677 + eslint: ^8.57.0 || ^9.0.0 678 + typescript: '>=4.8.4 <6.0.0' 679 + 680 + '@typescript-eslint/parser@8.53.1': 681 + resolution: {integrity: sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==, tarball: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.53.1.tgz} 682 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 683 + peerDependencies: 684 + eslint: ^8.57.0 || ^9.0.0 685 + typescript: '>=4.8.4 <6.0.0' 686 + 687 + '@typescript-eslint/project-service@8.53.1': 688 + resolution: {integrity: sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==, tarball: https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.53.1.tgz} 689 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 690 + peerDependencies: 691 + typescript: '>=4.8.4 <6.0.0' 692 + 693 + '@typescript-eslint/scope-manager@8.53.1': 694 + resolution: {integrity: sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==, tarball: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.1.tgz} 695 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 696 + 697 + '@typescript-eslint/tsconfig-utils@8.53.1': 698 + resolution: {integrity: sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==, tarball: https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.1.tgz} 699 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 700 + peerDependencies: 701 + typescript: '>=4.8.4 <6.0.0' 702 + 703 + '@typescript-eslint/type-utils@8.53.1': 704 + resolution: {integrity: sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==, tarball: https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.53.1.tgz} 705 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 706 + peerDependencies: 707 + eslint: ^8.57.0 || ^9.0.0 708 + typescript: '>=4.8.4 <6.0.0' 709 + 710 + '@typescript-eslint/types@8.53.1': 711 + resolution: {integrity: sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==, tarball: https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.1.tgz} 712 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 713 + 714 + '@typescript-eslint/typescript-estree@8.53.1': 715 + resolution: {integrity: sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==, tarball: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.1.tgz} 716 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 717 + peerDependencies: 718 + typescript: '>=4.8.4 <6.0.0' 719 + 720 + '@typescript-eslint/utils@8.53.1': 721 + resolution: {integrity: sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==, tarball: https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.1.tgz} 722 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 723 + peerDependencies: 724 + eslint: ^8.57.0 || ^9.0.0 725 + typescript: '>=4.8.4 <6.0.0' 726 + 727 + '@typescript-eslint/visitor-keys@8.53.1': 728 + resolution: {integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==, tarball: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.1.tgz} 729 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 730 + 731 + acorn-jsx@5.3.2: 732 + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, tarball: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz} 733 + peerDependencies: 734 + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 735 + 736 + acorn@8.15.0: 737 + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==, tarball: https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz} 738 + engines: {node: '>=0.4.0'} 739 + hasBin: true 740 + 741 + ajv@6.12.6: 742 + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, tarball: https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz} 743 + 744 + ansi-styles@4.3.0: 745 + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz} 746 + engines: {node: '>=8'} 747 + 748 + argparse@2.0.1: 749 + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, tarball: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz} 750 + 751 + aria-query@5.3.2: 752 + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==, tarball: https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz} 753 + engines: {node: '>= 0.4'} 754 + 755 + axobject-query@4.1.0: 756 + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==, tarball: https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz} 757 + engines: {node: '>= 0.4'} 758 + 759 + balanced-match@1.0.2: 760 + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, tarball: https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz} 761 + 762 + bits-ui@2.15.4: 763 + resolution: {integrity: sha512-7H9YUfp03KOk1LVDh8wPYSRPxlZgG/GRWLNSA8QC73/8Z8ytun+DWJhIuibyFyz7A0cP/RANVcB4iDrbY8q+Og==, tarball: https://registry.npmjs.org/bits-ui/-/bits-ui-2.15.4.tgz} 764 + engines: {node: '>=20'} 765 + peerDependencies: 766 + '@internationalized/date': ^3.8.1 767 + svelte: ^5.33.0 768 + 769 + brace-expansion@1.1.12: 770 + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==, tarball: https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz} 771 + 772 + brace-expansion@2.0.2: 773 + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==, tarball: https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz} 774 + 775 + callsites@3.1.0: 776 + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, tarball: https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz} 777 + engines: {node: '>=6'} 778 + 779 + chalk@4.1.2: 780 + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, tarball: https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz} 781 + engines: {node: '>=10'} 782 + 783 + chokidar@4.0.3: 784 + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==, tarball: https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz} 785 + engines: {node: '>= 14.16.0'} 786 + 787 + clsx@2.1.1: 788 + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==, tarball: https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz} 789 + engines: {node: '>=6'} 790 + 791 + color-convert@2.0.1: 792 + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, tarball: https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz} 793 + engines: {node: '>=7.0.0'} 794 + 795 + color-name@1.1.4: 796 + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, tarball: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz} 797 + 798 + concat-map@0.0.1: 799 + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, tarball: https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz} 800 + 801 + cookie@0.6.0: 802 + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==, tarball: https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz} 803 + engines: {node: '>= 0.6'} 804 + 805 + cross-spawn@7.0.6: 806 + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, tarball: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz} 807 + engines: {node: '>= 8'} 808 + 809 + cssesc@3.0.0: 810 + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, tarball: https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz} 811 + engines: {node: '>=4'} 812 + hasBin: true 813 + 814 + debug@4.4.3: 815 + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, tarball: https://registry.npmjs.org/debug/-/debug-4.4.3.tgz} 816 + engines: {node: '>=6.0'} 817 + peerDependencies: 818 + supports-color: '*' 819 + peerDependenciesMeta: 820 + supports-color: 821 + optional: true 822 + 823 + deep-is@0.1.4: 824 + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, tarball: https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz} 825 + 826 + deepmerge@4.3.1: 827 + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, tarball: https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz} 828 + engines: {node: '>=0.10.0'} 829 + 830 + dequal@2.0.3: 831 + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, tarball: https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz} 832 + engines: {node: '>=6'} 833 + 834 + detect-libc@2.1.2: 835 + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, tarball: https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz} 836 + engines: {node: '>=8'} 837 + 838 + devalue@5.6.2: 839 + resolution: {integrity: sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==, tarball: https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz} 840 + 841 + enhanced-resolve@5.18.4: 842 + resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==, tarball: https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz} 843 + engines: {node: '>=10.13.0'} 844 + 845 + esbuild@0.27.2: 846 + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==, tarball: https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz} 847 + engines: {node: '>=18'} 848 + hasBin: true 849 + 850 + escape-string-regexp@4.0.0: 851 + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, tarball: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz} 852 + engines: {node: '>=10'} 853 + 854 + eslint-config-prettier@10.1.8: 855 + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==, tarball: https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz} 856 + hasBin: true 857 + peerDependencies: 858 + eslint: '>=7.0.0' 859 + 860 + eslint-plugin-svelte@3.14.0: 861 + resolution: {integrity: sha512-Isw0GvaMm0yHxAj71edAdGFh28ufYs+6rk2KlbbZphnqZAzrH3Se3t12IFh2H9+1F/jlDhBBL4oiOJmLqmYX0g==, tarball: https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-3.14.0.tgz} 862 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 863 + peerDependencies: 864 + eslint: ^8.57.1 || ^9.0.0 865 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 866 + peerDependenciesMeta: 867 + svelte: 868 + optional: true 869 + 870 + eslint-scope@8.4.0: 871 + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==, tarball: https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz} 872 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 873 + 874 + eslint-visitor-keys@3.4.3: 875 + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, tarball: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz} 876 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 877 + 878 + eslint-visitor-keys@4.2.1: 879 + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==, tarball: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz} 880 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 881 + 882 + eslint@9.39.2: 883 + resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==, tarball: https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz} 884 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 885 + hasBin: true 886 + peerDependencies: 887 + jiti: '*' 888 + peerDependenciesMeta: 889 + jiti: 890 + optional: true 891 + 892 + esm-env@1.2.2: 893 + resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==, tarball: https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz} 894 + 895 + espree@10.4.0: 896 + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==, tarball: https://registry.npmjs.org/espree/-/espree-10.4.0.tgz} 897 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 898 + 899 + esquery@1.7.0: 900 + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==, tarball: https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz} 901 + engines: {node: '>=0.10'} 902 + 903 + esrap@2.2.2: 904 + resolution: {integrity: sha512-zA6497ha+qKvoWIK+WM9NAh5ni17sKZKhbS5B3PoYbBvaYHZWoS33zmFybmyqpn07RLUxSmn+RCls2/XF+d0oQ==, tarball: https://registry.npmjs.org/esrap/-/esrap-2.2.2.tgz} 905 + 906 + esrecurse@4.3.0: 907 + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, tarball: https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz} 908 + engines: {node: '>=4.0'} 909 + 910 + estraverse@5.3.0: 911 + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, tarball: https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz} 912 + engines: {node: '>=4.0'} 913 + 914 + esutils@2.0.3: 915 + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, tarball: https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz} 916 + engines: {node: '>=0.10.0'} 917 + 918 + fast-deep-equal@3.1.3: 919 + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, tarball: https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz} 920 + 921 + fast-json-stable-stringify@2.1.0: 922 + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, tarball: https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz} 923 + 924 + fast-levenshtein@2.0.6: 925 + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, tarball: https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz} 926 + 927 + fdir@6.5.0: 928 + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, tarball: https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz} 929 + engines: {node: '>=12.0.0'} 930 + peerDependencies: 931 + picomatch: ^3 || ^4 932 + peerDependenciesMeta: 933 + picomatch: 934 + optional: true 935 + 936 + file-entry-cache@8.0.0: 937 + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==, tarball: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz} 938 + engines: {node: '>=16.0.0'} 939 + 940 + find-up@5.0.0: 941 + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, tarball: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz} 942 + engines: {node: '>=10'} 943 + 944 + flat-cache@4.0.1: 945 + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==, tarball: https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz} 946 + engines: {node: '>=16'} 947 + 948 + flatted@3.3.3: 949 + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==, tarball: https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz} 950 + 951 + fsevents@2.3.3: 952 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz} 953 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 954 + os: [darwin] 955 + 956 + glob-parent@6.0.2: 957 + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, tarball: https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz} 958 + engines: {node: '>=10.13.0'} 959 + 960 + globals@14.0.0: 961 + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==, tarball: https://registry.npmjs.org/globals/-/globals-14.0.0.tgz} 962 + engines: {node: '>=18'} 963 + 964 + globals@16.5.0: 965 + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==, tarball: https://registry.npmjs.org/globals/-/globals-16.5.0.tgz} 966 + engines: {node: '>=18'} 967 + 968 + globals@17.0.0: 969 + resolution: {integrity: sha512-gv5BeD2EssA793rlFWVPMMCqefTlpusw6/2TbAVMy0FzcG8wKJn4O+NqJ4+XWmmwrayJgw5TzrmWjFgmz1XPqw==, tarball: https://registry.npmjs.org/globals/-/globals-17.0.0.tgz} 970 + engines: {node: '>=18'} 971 + 972 + graceful-fs@4.2.11: 973 + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, tarball: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz} 974 + 975 + has-flag@4.0.0: 976 + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, tarball: https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz} 977 + engines: {node: '>=8'} 978 + 979 + ignore@5.3.2: 980 + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, tarball: https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz} 981 + engines: {node: '>= 4'} 982 + 983 + ignore@7.0.5: 984 + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==, tarball: https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz} 985 + engines: {node: '>= 4'} 986 + 987 + import-fresh@3.3.1: 988 + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, tarball: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz} 989 + engines: {node: '>=6'} 990 + 991 + imurmurhash@0.1.4: 992 + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, tarball: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz} 993 + engines: {node: '>=0.8.19'} 994 + 995 + inline-style-parser@0.2.7: 996 + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==, tarball: https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz} 997 + 998 + is-extglob@2.1.1: 999 + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, tarball: https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz} 1000 + engines: {node: '>=0.10.0'} 1001 + 1002 + is-glob@4.0.3: 1003 + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, tarball: https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz} 1004 + engines: {node: '>=0.10.0'} 1005 + 1006 + is-reference@3.0.3: 1007 + resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==, tarball: https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz} 1008 + 1009 + isexe@2.0.0: 1010 + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, tarball: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz} 1011 + 1012 + jiti@2.6.1: 1013 + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==, tarball: https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz} 1014 + hasBin: true 1015 + 1016 + js-yaml@4.1.1: 1017 + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==, tarball: https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz} 1018 + hasBin: true 1019 + 1020 + json-buffer@3.0.1: 1021 + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, tarball: https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz} 1022 + 1023 + json-schema-traverse@0.4.1: 1024 + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, tarball: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz} 1025 + 1026 + json-stable-stringify-without-jsonify@1.0.1: 1027 + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, tarball: https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz} 1028 + 1029 + keyv@4.5.4: 1030 + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, tarball: https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz} 1031 + 1032 + kleur@4.1.5: 1033 + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==, tarball: https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz} 1034 + engines: {node: '>=6'} 1035 + 1036 + known-css-properties@0.37.0: 1037 + resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==, tarball: https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz} 1038 + 1039 + levn@0.4.1: 1040 + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, tarball: https://registry.npmjs.org/levn/-/levn-0.4.1.tgz} 1041 + engines: {node: '>= 0.8.0'} 1042 + 1043 + lightningcss-android-arm64@1.30.2: 1044 + resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==, tarball: https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz} 1045 + engines: {node: '>= 12.0.0'} 1046 + cpu: [arm64] 1047 + os: [android] 1048 + 1049 + lightningcss-darwin-arm64@1.30.2: 1050 + resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==, tarball: https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz} 1051 + engines: {node: '>= 12.0.0'} 1052 + cpu: [arm64] 1053 + os: [darwin] 1054 + 1055 + lightningcss-darwin-x64@1.30.2: 1056 + resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==, tarball: https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz} 1057 + engines: {node: '>= 12.0.0'} 1058 + cpu: [x64] 1059 + os: [darwin] 1060 + 1061 + lightningcss-freebsd-x64@1.30.2: 1062 + resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==, tarball: https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz} 1063 + engines: {node: '>= 12.0.0'} 1064 + cpu: [x64] 1065 + os: [freebsd] 1066 + 1067 + lightningcss-linux-arm-gnueabihf@1.30.2: 1068 + resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==, tarball: https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz} 1069 + engines: {node: '>= 12.0.0'} 1070 + cpu: [arm] 1071 + os: [linux] 1072 + 1073 + lightningcss-linux-arm64-gnu@1.30.2: 1074 + resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz} 1075 + engines: {node: '>= 12.0.0'} 1076 + cpu: [arm64] 1077 + os: [linux] 1078 + 1079 + lightningcss-linux-arm64-musl@1.30.2: 1080 + resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz} 1081 + engines: {node: '>= 12.0.0'} 1082 + cpu: [arm64] 1083 + os: [linux] 1084 + 1085 + lightningcss-linux-x64-gnu@1.30.2: 1086 + resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz} 1087 + engines: {node: '>= 12.0.0'} 1088 + cpu: [x64] 1089 + os: [linux] 1090 + 1091 + lightningcss-linux-x64-musl@1.30.2: 1092 + resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz} 1093 + engines: {node: '>= 12.0.0'} 1094 + cpu: [x64] 1095 + os: [linux] 1096 + 1097 + lightningcss-win32-arm64-msvc@1.30.2: 1098 + resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==, tarball: https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz} 1099 + engines: {node: '>= 12.0.0'} 1100 + cpu: [arm64] 1101 + os: [win32] 1102 + 1103 + lightningcss-win32-x64-msvc@1.30.2: 1104 + resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==, tarball: https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz} 1105 + engines: {node: '>= 12.0.0'} 1106 + cpu: [x64] 1107 + os: [win32] 1108 + 1109 + lightningcss@1.30.2: 1110 + resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==, tarball: https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz} 1111 + engines: {node: '>= 12.0.0'} 1112 + 1113 + lilconfig@2.1.0: 1114 + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, tarball: https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz} 1115 + engines: {node: '>=10'} 1116 + 1117 + locate-character@3.0.0: 1118 + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==, tarball: https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz} 1119 + 1120 + locate-path@6.0.0: 1121 + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, tarball: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz} 1122 + engines: {node: '>=10'} 1123 + 1124 + lodash.merge@4.6.2: 1125 + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, tarball: https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz} 1126 + 1127 + lz-string@1.5.0: 1128 + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==, tarball: https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz} 1129 + hasBin: true 1130 + 1131 + magic-string@0.30.21: 1132 + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, tarball: https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz} 1133 + 1134 + mini-svg-data-uri@1.4.4: 1135 + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==, tarball: https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz} 1136 + hasBin: true 1137 + 1138 + minimatch@3.1.2: 1139 + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, tarball: https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz} 1140 + 1141 + minimatch@9.0.5: 1142 + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==, tarball: https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz} 1143 + engines: {node: '>=16 || 14 >=14.17'} 1144 + 1145 + mri@1.2.0: 1146 + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, tarball: https://registry.npmjs.org/mri/-/mri-1.2.0.tgz} 1147 + engines: {node: '>=4'} 1148 + 1149 + mrmime@2.0.1: 1150 + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==, tarball: https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz} 1151 + engines: {node: '>=10'} 1152 + 1153 + ms@2.1.3: 1154 + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, tarball: https://registry.npmjs.org/ms/-/ms-2.1.3.tgz} 1155 + 1156 + nanoid@3.3.11: 1157 + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==, tarball: https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz} 1158 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1159 + hasBin: true 1160 + 1161 + nanoid@5.1.6: 1162 + resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==, tarball: https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz} 1163 + engines: {node: ^18 || >=20} 1164 + hasBin: true 1165 + 1166 + natural-compare@1.4.0: 1167 + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, tarball: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz} 1168 + 1169 + obug@2.1.1: 1170 + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==, tarball: https://registry.npmjs.org/obug/-/obug-2.1.1.tgz} 1171 + 1172 + optionator@0.9.4: 1173 + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, tarball: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz} 1174 + engines: {node: '>= 0.8.0'} 1175 + 1176 + p-limit@3.1.0: 1177 + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, tarball: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz} 1178 + engines: {node: '>=10'} 1179 + 1180 + p-locate@5.0.0: 1181 + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, tarball: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz} 1182 + engines: {node: '>=10'} 1183 + 1184 + parent-module@1.0.1: 1185 + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, tarball: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz} 1186 + engines: {node: '>=6'} 1187 + 1188 + path-exists@4.0.0: 1189 + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, tarball: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz} 1190 + engines: {node: '>=8'} 1191 + 1192 + path-key@3.1.1: 1193 + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, tarball: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz} 1194 + engines: {node: '>=8'} 1195 + 1196 + picocolors@1.1.1: 1197 + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, tarball: https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz} 1198 + 1199 + picomatch@4.0.3: 1200 + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==, tarball: https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz} 1201 + engines: {node: '>=12'} 1202 + 1203 + postcss-load-config@3.1.4: 1204 + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==, tarball: https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz} 1205 + engines: {node: '>= 10'} 1206 + peerDependencies: 1207 + postcss: '>=8.0.9' 1208 + ts-node: '>=9.0.0' 1209 + peerDependenciesMeta: 1210 + postcss: 1211 + optional: true 1212 + ts-node: 1213 + optional: true 1214 + 1215 + postcss-safe-parser@7.0.1: 1216 + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==, tarball: https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz} 1217 + engines: {node: '>=18.0'} 1218 + peerDependencies: 1219 + postcss: ^8.4.31 1220 + 1221 + postcss-scss@4.0.9: 1222 + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==, tarball: https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz} 1223 + engines: {node: '>=12.0'} 1224 + peerDependencies: 1225 + postcss: ^8.4.29 1226 + 1227 + postcss-selector-parser@7.1.1: 1228 + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==, tarball: https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz} 1229 + engines: {node: '>=4'} 1230 + 1231 + postcss@8.5.6: 1232 + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==, tarball: https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz} 1233 + engines: {node: ^10 || ^12 || >=14} 1234 + 1235 + prelude-ls@1.2.1: 1236 + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, tarball: https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz} 1237 + engines: {node: '>= 0.8.0'} 1238 + 1239 + prettier-plugin-svelte@3.4.1: 1240 + resolution: {integrity: sha512-xL49LCloMoZRvSwa6IEdN2GV6cq2IqpYGstYtMT+5wmml1/dClEoI0MZR78MiVPpu6BdQFfN0/y73yO6+br5Pg==, tarball: https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.4.1.tgz} 1241 + peerDependencies: 1242 + prettier: ^3.0.0 1243 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 1244 + 1245 + prettier-plugin-tailwindcss@0.7.2: 1246 + resolution: {integrity: sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA==, tarball: https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.7.2.tgz} 1247 + engines: {node: '>=20.19'} 1248 + peerDependencies: 1249 + '@ianvs/prettier-plugin-sort-imports': '*' 1250 + '@prettier/plugin-hermes': '*' 1251 + '@prettier/plugin-oxc': '*' 1252 + '@prettier/plugin-pug': '*' 1253 + '@shopify/prettier-plugin-liquid': '*' 1254 + '@trivago/prettier-plugin-sort-imports': '*' 1255 + '@zackad/prettier-plugin-twig': '*' 1256 + prettier: ^3.0 1257 + prettier-plugin-astro: '*' 1258 + prettier-plugin-css-order: '*' 1259 + prettier-plugin-jsdoc: '*' 1260 + prettier-plugin-marko: '*' 1261 + prettier-plugin-multiline-arrays: '*' 1262 + prettier-plugin-organize-attributes: '*' 1263 + prettier-plugin-organize-imports: '*' 1264 + prettier-plugin-sort-imports: '*' 1265 + prettier-plugin-svelte: '*' 1266 + peerDependenciesMeta: 1267 + '@ianvs/prettier-plugin-sort-imports': 1268 + optional: true 1269 + '@prettier/plugin-hermes': 1270 + optional: true 1271 + '@prettier/plugin-oxc': 1272 + optional: true 1273 + '@prettier/plugin-pug': 1274 + optional: true 1275 + '@shopify/prettier-plugin-liquid': 1276 + optional: true 1277 + '@trivago/prettier-plugin-sort-imports': 1278 + optional: true 1279 + '@zackad/prettier-plugin-twig': 1280 + optional: true 1281 + prettier-plugin-astro: 1282 + optional: true 1283 + prettier-plugin-css-order: 1284 + optional: true 1285 + prettier-plugin-jsdoc: 1286 + optional: true 1287 + prettier-plugin-marko: 1288 + optional: true 1289 + prettier-plugin-multiline-arrays: 1290 + optional: true 1291 + prettier-plugin-organize-attributes: 1292 + optional: true 1293 + prettier-plugin-organize-imports: 1294 + optional: true 1295 + prettier-plugin-sort-imports: 1296 + optional: true 1297 + prettier-plugin-svelte: 1298 + optional: true 1299 + 1300 + prettier@3.8.1: 1301 + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==, tarball: https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz} 1302 + engines: {node: '>=14'} 1303 + hasBin: true 1304 + 1305 + punycode@2.3.1: 1306 + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, tarball: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz} 1307 + engines: {node: '>=6'} 1308 + 1309 + readdirp@4.1.2: 1310 + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==, tarball: https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz} 1311 + engines: {node: '>= 14.18.0'} 1312 + 1313 + resolve-from@4.0.0: 1314 + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, tarball: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz} 1315 + engines: {node: '>=4'} 1316 + 1317 + rollup@4.56.0: 1318 + resolution: {integrity: sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==, tarball: https://registry.npmjs.org/rollup/-/rollup-4.56.0.tgz} 1319 + engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1320 + hasBin: true 1321 + 1322 + runed@0.35.1: 1323 + resolution: {integrity: sha512-2F4Q/FZzbeJTFdIS/PuOoPRSm92sA2LhzTnv6FXhCoENb3huf5+fDuNOg1LNvGOouy3u/225qxmuJvcV3IZK5Q==, tarball: https://registry.npmjs.org/runed/-/runed-0.35.1.tgz} 1324 + peerDependencies: 1325 + '@sveltejs/kit': ^2.21.0 1326 + svelte: ^5.7.0 1327 + peerDependenciesMeta: 1328 + '@sveltejs/kit': 1329 + optional: true 1330 + 1331 + sade@1.8.1: 1332 + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==, tarball: https://registry.npmjs.org/sade/-/sade-1.8.1.tgz} 1333 + engines: {node: '>=6'} 1334 + 1335 + semver@7.7.3: 1336 + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==, tarball: https://registry.npmjs.org/semver/-/semver-7.7.3.tgz} 1337 + engines: {node: '>=10'} 1338 + hasBin: true 1339 + 1340 + set-cookie-parser@2.7.2: 1341 + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==, tarball: https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz} 1342 + 1343 + shebang-command@2.0.0: 1344 + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, tarball: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz} 1345 + engines: {node: '>=8'} 1346 + 1347 + shebang-regex@3.0.0: 1348 + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, tarball: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz} 1349 + engines: {node: '>=8'} 1350 + 1351 + sirv@3.0.2: 1352 + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==, tarball: https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz} 1353 + engines: {node: '>=18'} 1354 + 1355 + source-map-js@1.2.1: 1356 + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, tarball: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz} 1357 + engines: {node: '>=0.10.0'} 1358 + 1359 + strip-json-comments@3.1.1: 1360 + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, tarball: https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz} 1361 + engines: {node: '>=8'} 1362 + 1363 + style-to-object@1.0.14: 1364 + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==, tarball: https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz} 1365 + 1366 + supports-color@7.2.0: 1367 + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, tarball: https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz} 1368 + engines: {node: '>=8'} 1369 + 1370 + svelte-check@4.3.5: 1371 + resolution: {integrity: sha512-e4VWZETyXaKGhpkxOXP+B/d0Fp/zKViZoJmneZWe/05Y2aqSKj3YN2nLfYPJBQ87WEiY4BQCQ9hWGu9mPT1a1Q==, tarball: https://registry.npmjs.org/svelte-check/-/svelte-check-4.3.5.tgz} 1372 + engines: {node: '>= 18.0.0'} 1373 + hasBin: true 1374 + peerDependencies: 1375 + svelte: ^4.0.0 || ^5.0.0-next.0 1376 + typescript: '>=5.0.0' 1377 + 1378 + svelte-eslint-parser@1.4.1: 1379 + resolution: {integrity: sha512-1eqkfQ93goAhjAXxZiu1SaKI9+0/sxp4JIWQwUpsz7ybehRE5L8dNuz7Iry7K22R47p5/+s9EM+38nHV2OlgXA==, tarball: https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.4.1.tgz} 1380 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: 10.24.0} 1381 + peerDependencies: 1382 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 1383 + peerDependenciesMeta: 1384 + svelte: 1385 + optional: true 1386 + 1387 + svelte-toolbelt@0.10.6: 1388 + resolution: {integrity: sha512-YWuX+RE+CnWYx09yseAe4ZVMM7e7GRFZM6OYWpBKOb++s+SQ8RBIMMe+Bs/CznBMc0QPLjr+vDBxTAkozXsFXQ==, tarball: https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.10.6.tgz} 1389 + engines: {node: '>=18', pnpm: '>=8.7.0'} 1390 + peerDependencies: 1391 + svelte: ^5.30.2 1392 + 1393 + svelte@5.48.0: 1394 + resolution: {integrity: sha512-+NUe82VoFP1RQViZI/esojx70eazGF4u0O/9ucqZ4rPcOZD+n5EVp17uYsqwdzjUjZyTpGKunHbDziW6AIAVkQ==, tarball: https://registry.npmjs.org/svelte/-/svelte-5.48.0.tgz} 1395 + engines: {node: '>=18'} 1396 + 1397 + tabbable@6.4.0: 1398 + resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==, tarball: https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz} 1399 + 1400 + tailwindcss@4.1.18: 1401 + resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==, tarball: https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz} 1402 + 1403 + tapable@2.3.0: 1404 + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==, tarball: https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz} 1405 + engines: {node: '>=6'} 1406 + 1407 + tinyglobby@0.2.15: 1408 + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==, tarball: https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz} 1409 + engines: {node: '>=12.0.0'} 1410 + 1411 + totalist@3.0.1: 1412 + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==, tarball: https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz} 1413 + engines: {node: '>=6'} 1414 + 1415 + ts-api-utils@2.4.0: 1416 + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==, tarball: https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz} 1417 + engines: {node: '>=18.12'} 1418 + peerDependencies: 1419 + typescript: '>=4.8.4' 1420 + 1421 + tslib@2.8.1: 1422 + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, tarball: https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz} 1423 + 1424 + type-check@0.4.0: 1425 + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, tarball: https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz} 1426 + engines: {node: '>= 0.8.0'} 1427 + 1428 + typescript-eslint@8.53.1: 1429 + resolution: {integrity: sha512-gB+EVQfP5RDElh9ittfXlhZJdjSU4jUSTyE2+ia8CYyNvet4ElfaLlAIqDvQV9JPknKx0jQH1racTYe/4LaLSg==, tarball: https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.53.1.tgz} 1430 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1431 + peerDependencies: 1432 + eslint: ^8.57.0 || ^9.0.0 1433 + typescript: '>=4.8.4 <6.0.0' 1434 + 1435 + typescript@5.9.3: 1436 + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==, tarball: https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz} 1437 + engines: {node: '>=14.17'} 1438 + hasBin: true 1439 + 1440 + unicode-segmenter@0.14.5: 1441 + resolution: {integrity: sha512-jHGmj2LUuqDcX3hqY12Ql+uhUTn8huuxNZGq7GvtF6bSybzH3aFgedYu/KTzQStEgt1Ra2F3HxadNXsNjb3m3g==, tarball: https://registry.npmjs.org/unicode-segmenter/-/unicode-segmenter-0.14.5.tgz} 1442 + 1443 + uri-js@4.4.1: 1444 + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, tarball: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz} 1445 + 1446 + util-deprecate@1.0.2: 1447 + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, tarball: https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz} 1448 + 1449 + vite@7.3.1: 1450 + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==, tarball: https://registry.npmjs.org/vite/-/vite-7.3.1.tgz} 1451 + engines: {node: ^20.19.0 || >=22.12.0} 1452 + hasBin: true 1453 + peerDependencies: 1454 + '@types/node': ^20.19.0 || >=22.12.0 1455 + jiti: '>=1.21.0' 1456 + less: ^4.0.0 1457 + lightningcss: ^1.21.0 1458 + sass: ^1.70.0 1459 + sass-embedded: ^1.70.0 1460 + stylus: '>=0.54.8' 1461 + sugarss: ^5.0.0 1462 + terser: ^5.16.0 1463 + tsx: ^4.8.1 1464 + yaml: ^2.4.2 1465 + peerDependenciesMeta: 1466 + '@types/node': 1467 + optional: true 1468 + jiti: 1469 + optional: true 1470 + less: 1471 + optional: true 1472 + lightningcss: 1473 + optional: true 1474 + sass: 1475 + optional: true 1476 + sass-embedded: 1477 + optional: true 1478 + stylus: 1479 + optional: true 1480 + sugarss: 1481 + optional: true 1482 + terser: 1483 + optional: true 1484 + tsx: 1485 + optional: true 1486 + yaml: 1487 + optional: true 1488 + 1489 + vitefu@1.1.1: 1490 + resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==, tarball: https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz} 1491 + peerDependencies: 1492 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 1493 + peerDependenciesMeta: 1494 + vite: 1495 + optional: true 1496 + 1497 + which@2.0.2: 1498 + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, tarball: https://registry.npmjs.org/which/-/which-2.0.2.tgz} 1499 + engines: {node: '>= 8'} 1500 + hasBin: true 1501 + 1502 + word-wrap@1.2.5: 1503 + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, tarball: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz} 1504 + engines: {node: '>=0.10.0'} 1505 + 1506 + yaml@1.10.2: 1507 + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, tarball: https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz} 1508 + engines: {node: '>= 6'} 1509 + 1510 + yocto-queue@0.1.0: 1511 + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, tarball: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz} 1512 + engines: {node: '>=10'} 1513 + 1514 + zimmerframe@1.1.4: 1515 + resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==, tarball: https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz} 1516 + 1517 + snapshots: 1518 + 1519 + '@atcute/atproto@3.1.10': 1520 + dependencies: 1521 + '@atcute/lexicons': 1.2.6 1522 + 1523 + '@atcute/bluesky@3.2.15': 1524 + dependencies: 1525 + '@atcute/atproto': 3.1.10 1526 + '@atcute/lexicons': 1.2.6 1527 + 1528 + '@atcute/client@4.2.1': 1529 + dependencies: 1530 + '@atcute/identity': 1.1.3 1531 + '@atcute/lexicons': 1.2.6 1532 + 1533 + '@atcute/identity-resolver@1.2.2(@atcute/identity@1.1.3)': 1534 + dependencies: 1535 + '@atcute/identity': 1.1.3 1536 + '@atcute/lexicons': 1.2.6 1537 + '@atcute/util-fetch': 1.0.5 1538 + '@badrap/valita': 0.4.6 1539 + 1540 + '@atcute/identity@1.1.3': 1541 + dependencies: 1542 + '@atcute/lexicons': 1.2.6 1543 + '@badrap/valita': 0.4.6 1544 + 1545 + '@atcute/lexicons@1.2.6': 1546 + dependencies: 1547 + '@atcute/uint8array': 1.0.6 1548 + '@atcute/util-text': 0.0.1 1549 + '@standard-schema/spec': 1.1.0 1550 + esm-env: 1.2.2 1551 + 1552 + '@atcute/multibase@1.1.6': 1553 + dependencies: 1554 + '@atcute/uint8array': 1.0.6 1555 + 1556 + '@atcute/oauth-browser-client@2.0.3(@atcute/identity@1.1.3)': 1557 + dependencies: 1558 + '@atcute/client': 4.2.1 1559 + '@atcute/identity-resolver': 1.2.2(@atcute/identity@1.1.3) 1560 + '@atcute/lexicons': 1.2.6 1561 + '@atcute/multibase': 1.1.6 1562 + '@atcute/uint8array': 1.0.6 1563 + nanoid: 5.1.6 1564 + transitivePeerDependencies: 1565 + - '@atcute/identity' 1566 + 1567 + '@atcute/uint8array@1.0.6': {} 1568 + 1569 + '@atcute/util-fetch@1.0.5': 1570 + dependencies: 1571 + '@badrap/valita': 0.4.6 1572 + 1573 + '@atcute/util-text@0.0.1': 1574 + dependencies: 1575 + unicode-segmenter: 0.14.5 1576 + 1577 + '@badrap/valita@0.4.6': {} 1578 + 1579 + '@esbuild/aix-ppc64@0.27.2': 1580 + optional: true 1581 + 1582 + '@esbuild/android-arm64@0.27.2': 1583 + optional: true 1584 + 1585 + '@esbuild/android-arm@0.27.2': 1586 + optional: true 1587 + 1588 + '@esbuild/android-x64@0.27.2': 1589 + optional: true 1590 + 1591 + '@esbuild/darwin-arm64@0.27.2': 1592 + optional: true 1593 + 1594 + '@esbuild/darwin-x64@0.27.2': 1595 + optional: true 1596 + 1597 + '@esbuild/freebsd-arm64@0.27.2': 1598 + optional: true 1599 + 1600 + '@esbuild/freebsd-x64@0.27.2': 1601 + optional: true 1602 + 1603 + '@esbuild/linux-arm64@0.27.2': 1604 + optional: true 1605 + 1606 + '@esbuild/linux-arm@0.27.2': 1607 + optional: true 1608 + 1609 + '@esbuild/linux-ia32@0.27.2': 1610 + optional: true 1611 + 1612 + '@esbuild/linux-loong64@0.27.2': 1613 + optional: true 1614 + 1615 + '@esbuild/linux-mips64el@0.27.2': 1616 + optional: true 1617 + 1618 + '@esbuild/linux-ppc64@0.27.2': 1619 + optional: true 1620 + 1621 + '@esbuild/linux-riscv64@0.27.2': 1622 + optional: true 1623 + 1624 + '@esbuild/linux-s390x@0.27.2': 1625 + optional: true 1626 + 1627 + '@esbuild/linux-x64@0.27.2': 1628 + optional: true 1629 + 1630 + '@esbuild/netbsd-arm64@0.27.2': 1631 + optional: true 1632 + 1633 + '@esbuild/netbsd-x64@0.27.2': 1634 + optional: true 1635 + 1636 + '@esbuild/openbsd-arm64@0.27.2': 1637 + optional: true 1638 + 1639 + '@esbuild/openbsd-x64@0.27.2': 1640 + optional: true 1641 + 1642 + '@esbuild/openharmony-arm64@0.27.2': 1643 + optional: true 1644 + 1645 + '@esbuild/sunos-x64@0.27.2': 1646 + optional: true 1647 + 1648 + '@esbuild/win32-arm64@0.27.2': 1649 + optional: true 1650 + 1651 + '@esbuild/win32-ia32@0.27.2': 1652 + optional: true 1653 + 1654 + '@esbuild/win32-x64@0.27.2': 1655 + optional: true 1656 + 1657 + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': 1658 + dependencies: 1659 + eslint: 9.39.2(jiti@2.6.1) 1660 + eslint-visitor-keys: 3.4.3 1661 + 1662 + '@eslint-community/regexpp@4.12.2': {} 1663 + 1664 + '@eslint/compat@2.0.1(eslint@9.39.2(jiti@2.6.1))': 1665 + dependencies: 1666 + '@eslint/core': 1.0.1 1667 + optionalDependencies: 1668 + eslint: 9.39.2(jiti@2.6.1) 1669 + 1670 + '@eslint/config-array@0.21.1': 1671 + dependencies: 1672 + '@eslint/object-schema': 2.1.7 1673 + debug: 4.4.3 1674 + minimatch: 3.1.2 1675 + transitivePeerDependencies: 1676 + - supports-color 1677 + 1678 + '@eslint/config-helpers@0.4.2': 1679 + dependencies: 1680 + '@eslint/core': 0.17.0 1681 + 1682 + '@eslint/core@0.17.0': 1683 + dependencies: 1684 + '@types/json-schema': 7.0.15 1685 + 1686 + '@eslint/core@1.0.1': 1687 + dependencies: 1688 + '@types/json-schema': 7.0.15 1689 + 1690 + '@eslint/eslintrc@3.3.3': 1691 + dependencies: 1692 + ajv: 6.12.6 1693 + debug: 4.4.3 1694 + espree: 10.4.0 1695 + globals: 14.0.0 1696 + ignore: 5.3.2 1697 + import-fresh: 3.3.1 1698 + js-yaml: 4.1.1 1699 + minimatch: 3.1.2 1700 + strip-json-comments: 3.1.1 1701 + transitivePeerDependencies: 1702 + - supports-color 1703 + 1704 + '@eslint/js@9.39.2': {} 1705 + 1706 + '@eslint/object-schema@2.1.7': {} 1707 + 1708 + '@eslint/plugin-kit@0.4.1': 1709 + dependencies: 1710 + '@eslint/core': 0.17.0 1711 + levn: 0.4.1 1712 + 1713 + '@floating-ui/core@1.7.3': 1714 + dependencies: 1715 + '@floating-ui/utils': 0.2.10 1716 + 1717 + '@floating-ui/dom@1.7.4': 1718 + dependencies: 1719 + '@floating-ui/core': 1.7.3 1720 + '@floating-ui/utils': 0.2.10 1721 + 1722 + '@floating-ui/utils@0.2.10': {} 1723 + 1724 + '@humanfs/core@0.19.1': {} 1725 + 1726 + '@humanfs/node@0.16.7': 1727 + dependencies: 1728 + '@humanfs/core': 0.19.1 1729 + '@humanwhocodes/retry': 0.4.3 1730 + 1731 + '@humanwhocodes/module-importer@1.0.1': {} 1732 + 1733 + '@humanwhocodes/retry@0.4.3': {} 1734 + 1735 + '@internationalized/date@3.10.1': 1736 + dependencies: 1737 + '@swc/helpers': 0.5.18 1738 + 1739 + '@jridgewell/gen-mapping@0.3.13': 1740 + dependencies: 1741 + '@jridgewell/sourcemap-codec': 1.5.5 1742 + '@jridgewell/trace-mapping': 0.3.31 1743 + 1744 + '@jridgewell/remapping@2.3.5': 1745 + dependencies: 1746 + '@jridgewell/gen-mapping': 0.3.13 1747 + '@jridgewell/trace-mapping': 0.3.31 1748 + 1749 + '@jridgewell/resolve-uri@3.1.2': {} 1750 + 1751 + '@jridgewell/sourcemap-codec@1.5.5': {} 1752 + 1753 + '@jridgewell/trace-mapping@0.3.31': 1754 + dependencies: 1755 + '@jridgewell/resolve-uri': 3.1.2 1756 + '@jridgewell/sourcemap-codec': 1.5.5 1757 + 1758 + '@polka/url@1.0.0-next.29': {} 1759 + 1760 + '@rollup/rollup-android-arm-eabi@4.56.0': 1761 + optional: true 1762 + 1763 + '@rollup/rollup-android-arm64@4.56.0': 1764 + optional: true 1765 + 1766 + '@rollup/rollup-darwin-arm64@4.56.0': 1767 + optional: true 1768 + 1769 + '@rollup/rollup-darwin-x64@4.56.0': 1770 + optional: true 1771 + 1772 + '@rollup/rollup-freebsd-arm64@4.56.0': 1773 + optional: true 1774 + 1775 + '@rollup/rollup-freebsd-x64@4.56.0': 1776 + optional: true 1777 + 1778 + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': 1779 + optional: true 1780 + 1781 + '@rollup/rollup-linux-arm-musleabihf@4.56.0': 1782 + optional: true 1783 + 1784 + '@rollup/rollup-linux-arm64-gnu@4.56.0': 1785 + optional: true 1786 + 1787 + '@rollup/rollup-linux-arm64-musl@4.56.0': 1788 + optional: true 1789 + 1790 + '@rollup/rollup-linux-loong64-gnu@4.56.0': 1791 + optional: true 1792 + 1793 + '@rollup/rollup-linux-loong64-musl@4.56.0': 1794 + optional: true 1795 + 1796 + '@rollup/rollup-linux-ppc64-gnu@4.56.0': 1797 + optional: true 1798 + 1799 + '@rollup/rollup-linux-ppc64-musl@4.56.0': 1800 + optional: true 1801 + 1802 + '@rollup/rollup-linux-riscv64-gnu@4.56.0': 1803 + optional: true 1804 + 1805 + '@rollup/rollup-linux-riscv64-musl@4.56.0': 1806 + optional: true 1807 + 1808 + '@rollup/rollup-linux-s390x-gnu@4.56.0': 1809 + optional: true 1810 + 1811 + '@rollup/rollup-linux-x64-gnu@4.56.0': 1812 + optional: true 1813 + 1814 + '@rollup/rollup-linux-x64-musl@4.56.0': 1815 + optional: true 1816 + 1817 + '@rollup/rollup-openbsd-x64@4.56.0': 1818 + optional: true 1819 + 1820 + '@rollup/rollup-openharmony-arm64@4.56.0': 1821 + optional: true 1822 + 1823 + '@rollup/rollup-win32-arm64-msvc@4.56.0': 1824 + optional: true 1825 + 1826 + '@rollup/rollup-win32-ia32-msvc@4.56.0': 1827 + optional: true 1828 + 1829 + '@rollup/rollup-win32-x64-gnu@4.56.0': 1830 + optional: true 1831 + 1832 + '@rollup/rollup-win32-x64-msvc@4.56.0': 1833 + optional: true 1834 + 1835 + '@standard-schema/spec@1.1.0': {} 1836 + 1837 + '@sveltejs/acorn-typescript@1.0.8(acorn@8.15.0)': 1838 + dependencies: 1839 + acorn: 8.15.0 1840 + 1841 + '@sveltejs/adapter-auto@7.0.0(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))': 1842 + dependencies: 1843 + '@sveltejs/kit': 2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)) 1844 + 1845 + '@sveltejs/adapter-static@3.0.10(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))': 1846 + dependencies: 1847 + '@sveltejs/kit': 2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)) 1848 + 1849 + '@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2))': 1850 + dependencies: 1851 + '@standard-schema/spec': 1.1.0 1852 + '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) 1853 + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)) 1854 + '@types/cookie': 0.6.0 1855 + acorn: 8.15.0 1856 + cookie: 0.6.0 1857 + devalue: 5.6.2 1858 + esm-env: 1.2.2 1859 + kleur: 4.1.5 1860 + magic-string: 0.30.21 1861 + mrmime: 2.0.1 1862 + sade: 1.8.1 1863 + set-cookie-parser: 2.7.2 1864 + sirv: 3.0.2 1865 + svelte: 5.48.0 1866 + vite: 7.3.1(jiti@2.6.1)(lightningcss@1.30.2) 1867 + optionalDependencies: 1868 + typescript: 5.9.3 1869 + 1870 + '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2))': 1871 + dependencies: 1872 + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)) 1873 + obug: 2.1.1 1874 + svelte: 5.48.0 1875 + vite: 7.3.1(jiti@2.6.1)(lightningcss@1.30.2) 1876 + 1877 + '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2))': 1878 + dependencies: 1879 + '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)) 1880 + deepmerge: 4.3.1 1881 + magic-string: 0.30.21 1882 + obug: 2.1.1 1883 + svelte: 5.48.0 1884 + vite: 7.3.1(jiti@2.6.1)(lightningcss@1.30.2) 1885 + vitefu: 1.1.1(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)) 1886 + 1887 + '@swc/helpers@0.5.18': 1888 + dependencies: 1889 + tslib: 2.8.1 1890 + 1891 + '@tailwindcss/forms@0.5.11(tailwindcss@4.1.18)': 1892 + dependencies: 1893 + mini-svg-data-uri: 1.4.4 1894 + tailwindcss: 4.1.18 1895 + 1896 + '@tailwindcss/node@4.1.18': 1897 + dependencies: 1898 + '@jridgewell/remapping': 2.3.5 1899 + enhanced-resolve: 5.18.4 1900 + jiti: 2.6.1 1901 + lightningcss: 1.30.2 1902 + magic-string: 0.30.21 1903 + source-map-js: 1.2.1 1904 + tailwindcss: 4.1.18 1905 + 1906 + '@tailwindcss/oxide-android-arm64@4.1.18': 1907 + optional: true 1908 + 1909 + '@tailwindcss/oxide-darwin-arm64@4.1.18': 1910 + optional: true 1911 + 1912 + '@tailwindcss/oxide-darwin-x64@4.1.18': 1913 + optional: true 1914 + 1915 + '@tailwindcss/oxide-freebsd-x64@4.1.18': 1916 + optional: true 1917 + 1918 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': 1919 + optional: true 1920 + 1921 + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': 1922 + optional: true 1923 + 1924 + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': 1925 + optional: true 1926 + 1927 + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': 1928 + optional: true 1929 + 1930 + '@tailwindcss/oxide-linux-x64-musl@4.1.18': 1931 + optional: true 1932 + 1933 + '@tailwindcss/oxide-wasm32-wasi@4.1.18': 1934 + optional: true 1935 + 1936 + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': 1937 + optional: true 1938 + 1939 + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': 1940 + optional: true 1941 + 1942 + '@tailwindcss/oxide@4.1.18': 1943 + optionalDependencies: 1944 + '@tailwindcss/oxide-android-arm64': 4.1.18 1945 + '@tailwindcss/oxide-darwin-arm64': 4.1.18 1946 + '@tailwindcss/oxide-darwin-x64': 4.1.18 1947 + '@tailwindcss/oxide-freebsd-x64': 4.1.18 1948 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18 1949 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18 1950 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.18 1951 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.18 1952 + '@tailwindcss/oxide-linux-x64-musl': 4.1.18 1953 + '@tailwindcss/oxide-wasm32-wasi': 4.1.18 1954 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 1955 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 1956 + 1957 + '@tailwindcss/vite@4.1.18(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2))': 1958 + dependencies: 1959 + '@tailwindcss/node': 4.1.18 1960 + '@tailwindcss/oxide': 4.1.18 1961 + tailwindcss: 4.1.18 1962 + vite: 7.3.1(jiti@2.6.1)(lightningcss@1.30.2) 1963 + 1964 + '@types/cookie@0.6.0': {} 1965 + 1966 + '@types/estree@1.0.8': {} 1967 + 1968 + '@types/json-schema@7.0.15': {} 1969 + 1970 + '@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': 1971 + dependencies: 1972 + '@eslint-community/regexpp': 4.12.2 1973 + '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 1974 + '@typescript-eslint/scope-manager': 8.53.1 1975 + '@typescript-eslint/type-utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 1976 + '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 1977 + '@typescript-eslint/visitor-keys': 8.53.1 1978 + eslint: 9.39.2(jiti@2.6.1) 1979 + ignore: 7.0.5 1980 + natural-compare: 1.4.0 1981 + ts-api-utils: 2.4.0(typescript@5.9.3) 1982 + typescript: 5.9.3 1983 + transitivePeerDependencies: 1984 + - supports-color 1985 + 1986 + '@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': 1987 + dependencies: 1988 + '@typescript-eslint/scope-manager': 8.53.1 1989 + '@typescript-eslint/types': 8.53.1 1990 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) 1991 + '@typescript-eslint/visitor-keys': 8.53.1 1992 + debug: 4.4.3 1993 + eslint: 9.39.2(jiti@2.6.1) 1994 + typescript: 5.9.3 1995 + transitivePeerDependencies: 1996 + - supports-color 1997 + 1998 + '@typescript-eslint/project-service@8.53.1(typescript@5.9.3)': 1999 + dependencies: 2000 + '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) 2001 + '@typescript-eslint/types': 8.53.1 2002 + debug: 4.4.3 2003 + typescript: 5.9.3 2004 + transitivePeerDependencies: 2005 + - supports-color 2006 + 2007 + '@typescript-eslint/scope-manager@8.53.1': 2008 + dependencies: 2009 + '@typescript-eslint/types': 8.53.1 2010 + '@typescript-eslint/visitor-keys': 8.53.1 2011 + 2012 + '@typescript-eslint/tsconfig-utils@8.53.1(typescript@5.9.3)': 2013 + dependencies: 2014 + typescript: 5.9.3 2015 + 2016 + '@typescript-eslint/type-utils@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': 2017 + dependencies: 2018 + '@typescript-eslint/types': 8.53.1 2019 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) 2020 + '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 2021 + debug: 4.4.3 2022 + eslint: 9.39.2(jiti@2.6.1) 2023 + ts-api-utils: 2.4.0(typescript@5.9.3) 2024 + typescript: 5.9.3 2025 + transitivePeerDependencies: 2026 + - supports-color 2027 + 2028 + '@typescript-eslint/types@8.53.1': {} 2029 + 2030 + '@typescript-eslint/typescript-estree@8.53.1(typescript@5.9.3)': 2031 + dependencies: 2032 + '@typescript-eslint/project-service': 8.53.1(typescript@5.9.3) 2033 + '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) 2034 + '@typescript-eslint/types': 8.53.1 2035 + '@typescript-eslint/visitor-keys': 8.53.1 2036 + debug: 4.4.3 2037 + minimatch: 9.0.5 2038 + semver: 7.7.3 2039 + tinyglobby: 0.2.15 2040 + ts-api-utils: 2.4.0(typescript@5.9.3) 2041 + typescript: 5.9.3 2042 + transitivePeerDependencies: 2043 + - supports-color 2044 + 2045 + '@typescript-eslint/utils@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': 2046 + dependencies: 2047 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) 2048 + '@typescript-eslint/scope-manager': 8.53.1 2049 + '@typescript-eslint/types': 8.53.1 2050 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) 2051 + eslint: 9.39.2(jiti@2.6.1) 2052 + typescript: 5.9.3 2053 + transitivePeerDependencies: 2054 + - supports-color 2055 + 2056 + '@typescript-eslint/visitor-keys@8.53.1': 2057 + dependencies: 2058 + '@typescript-eslint/types': 8.53.1 2059 + eslint-visitor-keys: 4.2.1 2060 + 2061 + acorn-jsx@5.3.2(acorn@8.15.0): 2062 + dependencies: 2063 + acorn: 8.15.0 2064 + 2065 + acorn@8.15.0: {} 2066 + 2067 + ajv@6.12.6: 2068 + dependencies: 2069 + fast-deep-equal: 3.1.3 2070 + fast-json-stable-stringify: 2.1.0 2071 + json-schema-traverse: 0.4.1 2072 + uri-js: 4.4.1 2073 + 2074 + ansi-styles@4.3.0: 2075 + dependencies: 2076 + color-convert: 2.0.1 2077 + 2078 + argparse@2.0.1: {} 2079 + 2080 + aria-query@5.3.2: {} 2081 + 2082 + axobject-query@4.1.0: {} 2083 + 2084 + balanced-match@1.0.2: {} 2085 + 2086 + bits-ui@2.15.4(@internationalized/date@3.10.1)(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0): 2087 + dependencies: 2088 + '@floating-ui/core': 1.7.3 2089 + '@floating-ui/dom': 1.7.4 2090 + '@internationalized/date': 3.10.1 2091 + esm-env: 1.2.2 2092 + runed: 0.35.1(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0) 2093 + svelte: 5.48.0 2094 + svelte-toolbelt: 0.10.6(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0) 2095 + tabbable: 6.4.0 2096 + transitivePeerDependencies: 2097 + - '@sveltejs/kit' 2098 + 2099 + brace-expansion@1.1.12: 2100 + dependencies: 2101 + balanced-match: 1.0.2 2102 + concat-map: 0.0.1 2103 + 2104 + brace-expansion@2.0.2: 2105 + dependencies: 2106 + balanced-match: 1.0.2 2107 + 2108 + callsites@3.1.0: {} 2109 + 2110 + chalk@4.1.2: 2111 + dependencies: 2112 + ansi-styles: 4.3.0 2113 + supports-color: 7.2.0 2114 + 2115 + chokidar@4.0.3: 2116 + dependencies: 2117 + readdirp: 4.1.2 2118 + 2119 + clsx@2.1.1: {} 2120 + 2121 + color-convert@2.0.1: 2122 + dependencies: 2123 + color-name: 1.1.4 2124 + 2125 + color-name@1.1.4: {} 2126 + 2127 + concat-map@0.0.1: {} 2128 + 2129 + cookie@0.6.0: {} 2130 + 2131 + cross-spawn@7.0.6: 2132 + dependencies: 2133 + path-key: 3.1.1 2134 + shebang-command: 2.0.0 2135 + which: 2.0.2 2136 + 2137 + cssesc@3.0.0: {} 2138 + 2139 + debug@4.4.3: 2140 + dependencies: 2141 + ms: 2.1.3 2142 + 2143 + deep-is@0.1.4: {} 2144 + 2145 + deepmerge@4.3.1: {} 2146 + 2147 + dequal@2.0.3: {} 2148 + 2149 + detect-libc@2.1.2: {} 2150 + 2151 + devalue@5.6.2: {} 2152 + 2153 + enhanced-resolve@5.18.4: 2154 + dependencies: 2155 + graceful-fs: 4.2.11 2156 + tapable: 2.3.0 2157 + 2158 + esbuild@0.27.2: 2159 + optionalDependencies: 2160 + '@esbuild/aix-ppc64': 0.27.2 2161 + '@esbuild/android-arm': 0.27.2 2162 + '@esbuild/android-arm64': 0.27.2 2163 + '@esbuild/android-x64': 0.27.2 2164 + '@esbuild/darwin-arm64': 0.27.2 2165 + '@esbuild/darwin-x64': 0.27.2 2166 + '@esbuild/freebsd-arm64': 0.27.2 2167 + '@esbuild/freebsd-x64': 0.27.2 2168 + '@esbuild/linux-arm': 0.27.2 2169 + '@esbuild/linux-arm64': 0.27.2 2170 + '@esbuild/linux-ia32': 0.27.2 2171 + '@esbuild/linux-loong64': 0.27.2 2172 + '@esbuild/linux-mips64el': 0.27.2 2173 + '@esbuild/linux-ppc64': 0.27.2 2174 + '@esbuild/linux-riscv64': 0.27.2 2175 + '@esbuild/linux-s390x': 0.27.2 2176 + '@esbuild/linux-x64': 0.27.2 2177 + '@esbuild/netbsd-arm64': 0.27.2 2178 + '@esbuild/netbsd-x64': 0.27.2 2179 + '@esbuild/openbsd-arm64': 0.27.2 2180 + '@esbuild/openbsd-x64': 0.27.2 2181 + '@esbuild/openharmony-arm64': 0.27.2 2182 + '@esbuild/sunos-x64': 0.27.2 2183 + '@esbuild/win32-arm64': 0.27.2 2184 + '@esbuild/win32-ia32': 0.27.2 2185 + '@esbuild/win32-x64': 0.27.2 2186 + 2187 + escape-string-regexp@4.0.0: {} 2188 + 2189 + eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)): 2190 + dependencies: 2191 + eslint: 9.39.2(jiti@2.6.1) 2192 + 2193 + eslint-plugin-svelte@3.14.0(eslint@9.39.2(jiti@2.6.1))(svelte@5.48.0): 2194 + dependencies: 2195 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) 2196 + '@jridgewell/sourcemap-codec': 1.5.5 2197 + eslint: 9.39.2(jiti@2.6.1) 2198 + esutils: 2.0.3 2199 + globals: 16.5.0 2200 + known-css-properties: 0.37.0 2201 + postcss: 8.5.6 2202 + postcss-load-config: 3.1.4(postcss@8.5.6) 2203 + postcss-safe-parser: 7.0.1(postcss@8.5.6) 2204 + semver: 7.7.3 2205 + svelte-eslint-parser: 1.4.1(svelte@5.48.0) 2206 + optionalDependencies: 2207 + svelte: 5.48.0 2208 + transitivePeerDependencies: 2209 + - ts-node 2210 + 2211 + eslint-scope@8.4.0: 2212 + dependencies: 2213 + esrecurse: 4.3.0 2214 + estraverse: 5.3.0 2215 + 2216 + eslint-visitor-keys@3.4.3: {} 2217 + 2218 + eslint-visitor-keys@4.2.1: {} 2219 + 2220 + eslint@9.39.2(jiti@2.6.1): 2221 + dependencies: 2222 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) 2223 + '@eslint-community/regexpp': 4.12.2 2224 + '@eslint/config-array': 0.21.1 2225 + '@eslint/config-helpers': 0.4.2 2226 + '@eslint/core': 0.17.0 2227 + '@eslint/eslintrc': 3.3.3 2228 + '@eslint/js': 9.39.2 2229 + '@eslint/plugin-kit': 0.4.1 2230 + '@humanfs/node': 0.16.7 2231 + '@humanwhocodes/module-importer': 1.0.1 2232 + '@humanwhocodes/retry': 0.4.3 2233 + '@types/estree': 1.0.8 2234 + ajv: 6.12.6 2235 + chalk: 4.1.2 2236 + cross-spawn: 7.0.6 2237 + debug: 4.4.3 2238 + escape-string-regexp: 4.0.0 2239 + eslint-scope: 8.4.0 2240 + eslint-visitor-keys: 4.2.1 2241 + espree: 10.4.0 2242 + esquery: 1.7.0 2243 + esutils: 2.0.3 2244 + fast-deep-equal: 3.1.3 2245 + file-entry-cache: 8.0.0 2246 + find-up: 5.0.0 2247 + glob-parent: 6.0.2 2248 + ignore: 5.3.2 2249 + imurmurhash: 0.1.4 2250 + is-glob: 4.0.3 2251 + json-stable-stringify-without-jsonify: 1.0.1 2252 + lodash.merge: 4.6.2 2253 + minimatch: 3.1.2 2254 + natural-compare: 1.4.0 2255 + optionator: 0.9.4 2256 + optionalDependencies: 2257 + jiti: 2.6.1 2258 + transitivePeerDependencies: 2259 + - supports-color 2260 + 2261 + esm-env@1.2.2: {} 2262 + 2263 + espree@10.4.0: 2264 + dependencies: 2265 + acorn: 8.15.0 2266 + acorn-jsx: 5.3.2(acorn@8.15.0) 2267 + eslint-visitor-keys: 4.2.1 2268 + 2269 + esquery@1.7.0: 2270 + dependencies: 2271 + estraverse: 5.3.0 2272 + 2273 + esrap@2.2.2: 2274 + dependencies: 2275 + '@jridgewell/sourcemap-codec': 1.5.5 2276 + 2277 + esrecurse@4.3.0: 2278 + dependencies: 2279 + estraverse: 5.3.0 2280 + 2281 + estraverse@5.3.0: {} 2282 + 2283 + esutils@2.0.3: {} 2284 + 2285 + fast-deep-equal@3.1.3: {} 2286 + 2287 + fast-json-stable-stringify@2.1.0: {} 2288 + 2289 + fast-levenshtein@2.0.6: {} 2290 + 2291 + fdir@6.5.0(picomatch@4.0.3): 2292 + optionalDependencies: 2293 + picomatch: 4.0.3 2294 + 2295 + file-entry-cache@8.0.0: 2296 + dependencies: 2297 + flat-cache: 4.0.1 2298 + 2299 + find-up@5.0.0: 2300 + dependencies: 2301 + locate-path: 6.0.0 2302 + path-exists: 4.0.0 2303 + 2304 + flat-cache@4.0.1: 2305 + dependencies: 2306 + flatted: 3.3.3 2307 + keyv: 4.5.4 2308 + 2309 + flatted@3.3.3: {} 2310 + 2311 + fsevents@2.3.3: 2312 + optional: true 2313 + 2314 + glob-parent@6.0.2: 2315 + dependencies: 2316 + is-glob: 4.0.3 2317 + 2318 + globals@14.0.0: {} 2319 + 2320 + globals@16.5.0: {} 2321 + 2322 + globals@17.0.0: {} 2323 + 2324 + graceful-fs@4.2.11: {} 2325 + 2326 + has-flag@4.0.0: {} 2327 + 2328 + ignore@5.3.2: {} 2329 + 2330 + ignore@7.0.5: {} 2331 + 2332 + import-fresh@3.3.1: 2333 + dependencies: 2334 + parent-module: 1.0.1 2335 + resolve-from: 4.0.0 2336 + 2337 + imurmurhash@0.1.4: {} 2338 + 2339 + inline-style-parser@0.2.7: {} 2340 + 2341 + is-extglob@2.1.1: {} 2342 + 2343 + is-glob@4.0.3: 2344 + dependencies: 2345 + is-extglob: 2.1.1 2346 + 2347 + is-reference@3.0.3: 2348 + dependencies: 2349 + '@types/estree': 1.0.8 2350 + 2351 + isexe@2.0.0: {} 2352 + 2353 + jiti@2.6.1: {} 2354 + 2355 + js-yaml@4.1.1: 2356 + dependencies: 2357 + argparse: 2.0.1 2358 + 2359 + json-buffer@3.0.1: {} 2360 + 2361 + json-schema-traverse@0.4.1: {} 2362 + 2363 + json-stable-stringify-without-jsonify@1.0.1: {} 2364 + 2365 + keyv@4.5.4: 2366 + dependencies: 2367 + json-buffer: 3.0.1 2368 + 2369 + kleur@4.1.5: {} 2370 + 2371 + known-css-properties@0.37.0: {} 2372 + 2373 + levn@0.4.1: 2374 + dependencies: 2375 + prelude-ls: 1.2.1 2376 + type-check: 0.4.0 2377 + 2378 + lightningcss-android-arm64@1.30.2: 2379 + optional: true 2380 + 2381 + lightningcss-darwin-arm64@1.30.2: 2382 + optional: true 2383 + 2384 + lightningcss-darwin-x64@1.30.2: 2385 + optional: true 2386 + 2387 + lightningcss-freebsd-x64@1.30.2: 2388 + optional: true 2389 + 2390 + lightningcss-linux-arm-gnueabihf@1.30.2: 2391 + optional: true 2392 + 2393 + lightningcss-linux-arm64-gnu@1.30.2: 2394 + optional: true 2395 + 2396 + lightningcss-linux-arm64-musl@1.30.2: 2397 + optional: true 2398 + 2399 + lightningcss-linux-x64-gnu@1.30.2: 2400 + optional: true 2401 + 2402 + lightningcss-linux-x64-musl@1.30.2: 2403 + optional: true 2404 + 2405 + lightningcss-win32-arm64-msvc@1.30.2: 2406 + optional: true 2407 + 2408 + lightningcss-win32-x64-msvc@1.30.2: 2409 + optional: true 2410 + 2411 + lightningcss@1.30.2: 2412 + dependencies: 2413 + detect-libc: 2.1.2 2414 + optionalDependencies: 2415 + lightningcss-android-arm64: 1.30.2 2416 + lightningcss-darwin-arm64: 1.30.2 2417 + lightningcss-darwin-x64: 1.30.2 2418 + lightningcss-freebsd-x64: 1.30.2 2419 + lightningcss-linux-arm-gnueabihf: 1.30.2 2420 + lightningcss-linux-arm64-gnu: 1.30.2 2421 + lightningcss-linux-arm64-musl: 1.30.2 2422 + lightningcss-linux-x64-gnu: 1.30.2 2423 + lightningcss-linux-x64-musl: 1.30.2 2424 + lightningcss-win32-arm64-msvc: 1.30.2 2425 + lightningcss-win32-x64-msvc: 1.30.2 2426 + 2427 + lilconfig@2.1.0: {} 2428 + 2429 + locate-character@3.0.0: {} 2430 + 2431 + locate-path@6.0.0: 2432 + dependencies: 2433 + p-locate: 5.0.0 2434 + 2435 + lodash.merge@4.6.2: {} 2436 + 2437 + lz-string@1.5.0: {} 2438 + 2439 + magic-string@0.30.21: 2440 + dependencies: 2441 + '@jridgewell/sourcemap-codec': 1.5.5 2442 + 2443 + mini-svg-data-uri@1.4.4: {} 2444 + 2445 + minimatch@3.1.2: 2446 + dependencies: 2447 + brace-expansion: 1.1.12 2448 + 2449 + minimatch@9.0.5: 2450 + dependencies: 2451 + brace-expansion: 2.0.2 2452 + 2453 + mri@1.2.0: {} 2454 + 2455 + mrmime@2.0.1: {} 2456 + 2457 + ms@2.1.3: {} 2458 + 2459 + nanoid@3.3.11: {} 2460 + 2461 + nanoid@5.1.6: {} 2462 + 2463 + natural-compare@1.4.0: {} 2464 + 2465 + obug@2.1.1: {} 2466 + 2467 + optionator@0.9.4: 2468 + dependencies: 2469 + deep-is: 0.1.4 2470 + fast-levenshtein: 2.0.6 2471 + levn: 0.4.1 2472 + prelude-ls: 1.2.1 2473 + type-check: 0.4.0 2474 + word-wrap: 1.2.5 2475 + 2476 + p-limit@3.1.0: 2477 + dependencies: 2478 + yocto-queue: 0.1.0 2479 + 2480 + p-locate@5.0.0: 2481 + dependencies: 2482 + p-limit: 3.1.0 2483 + 2484 + parent-module@1.0.1: 2485 + dependencies: 2486 + callsites: 3.1.0 2487 + 2488 + path-exists@4.0.0: {} 2489 + 2490 + path-key@3.1.1: {} 2491 + 2492 + picocolors@1.1.1: {} 2493 + 2494 + picomatch@4.0.3: {} 2495 + 2496 + postcss-load-config@3.1.4(postcss@8.5.6): 2497 + dependencies: 2498 + lilconfig: 2.1.0 2499 + yaml: 1.10.2 2500 + optionalDependencies: 2501 + postcss: 8.5.6 2502 + 2503 + postcss-safe-parser@7.0.1(postcss@8.5.6): 2504 + dependencies: 2505 + postcss: 8.5.6 2506 + 2507 + postcss-scss@4.0.9(postcss@8.5.6): 2508 + dependencies: 2509 + postcss: 8.5.6 2510 + 2511 + postcss-selector-parser@7.1.1: 2512 + dependencies: 2513 + cssesc: 3.0.0 2514 + util-deprecate: 1.0.2 2515 + 2516 + postcss@8.5.6: 2517 + dependencies: 2518 + nanoid: 3.3.11 2519 + picocolors: 1.1.1 2520 + source-map-js: 1.2.1 2521 + 2522 + prelude-ls@1.2.1: {} 2523 + 2524 + prettier-plugin-svelte@3.4.1(prettier@3.8.1)(svelte@5.48.0): 2525 + dependencies: 2526 + prettier: 3.8.1 2527 + svelte: 5.48.0 2528 + 2529 + prettier-plugin-tailwindcss@0.7.2(prettier-plugin-svelte@3.4.1(prettier@3.8.1)(svelte@5.48.0))(prettier@3.8.1): 2530 + dependencies: 2531 + prettier: 3.8.1 2532 + optionalDependencies: 2533 + prettier-plugin-svelte: 3.4.1(prettier@3.8.1)(svelte@5.48.0) 2534 + 2535 + prettier@3.8.1: {} 2536 + 2537 + punycode@2.3.1: {} 2538 + 2539 + readdirp@4.1.2: {} 2540 + 2541 + resolve-from@4.0.0: {} 2542 + 2543 + rollup@4.56.0: 2544 + dependencies: 2545 + '@types/estree': 1.0.8 2546 + optionalDependencies: 2547 + '@rollup/rollup-android-arm-eabi': 4.56.0 2548 + '@rollup/rollup-android-arm64': 4.56.0 2549 + '@rollup/rollup-darwin-arm64': 4.56.0 2550 + '@rollup/rollup-darwin-x64': 4.56.0 2551 + '@rollup/rollup-freebsd-arm64': 4.56.0 2552 + '@rollup/rollup-freebsd-x64': 4.56.0 2553 + '@rollup/rollup-linux-arm-gnueabihf': 4.56.0 2554 + '@rollup/rollup-linux-arm-musleabihf': 4.56.0 2555 + '@rollup/rollup-linux-arm64-gnu': 4.56.0 2556 + '@rollup/rollup-linux-arm64-musl': 4.56.0 2557 + '@rollup/rollup-linux-loong64-gnu': 4.56.0 2558 + '@rollup/rollup-linux-loong64-musl': 4.56.0 2559 + '@rollup/rollup-linux-ppc64-gnu': 4.56.0 2560 + '@rollup/rollup-linux-ppc64-musl': 4.56.0 2561 + '@rollup/rollup-linux-riscv64-gnu': 4.56.0 2562 + '@rollup/rollup-linux-riscv64-musl': 4.56.0 2563 + '@rollup/rollup-linux-s390x-gnu': 4.56.0 2564 + '@rollup/rollup-linux-x64-gnu': 4.56.0 2565 + '@rollup/rollup-linux-x64-musl': 4.56.0 2566 + '@rollup/rollup-openbsd-x64': 4.56.0 2567 + '@rollup/rollup-openharmony-arm64': 4.56.0 2568 + '@rollup/rollup-win32-arm64-msvc': 4.56.0 2569 + '@rollup/rollup-win32-ia32-msvc': 4.56.0 2570 + '@rollup/rollup-win32-x64-gnu': 4.56.0 2571 + '@rollup/rollup-win32-x64-msvc': 4.56.0 2572 + fsevents: 2.3.3 2573 + 2574 + runed@0.35.1(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0): 2575 + dependencies: 2576 + dequal: 2.0.3 2577 + esm-env: 1.2.2 2578 + lz-string: 1.5.0 2579 + svelte: 5.48.0 2580 + optionalDependencies: 2581 + '@sveltejs/kit': 2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)) 2582 + 2583 + sade@1.8.1: 2584 + dependencies: 2585 + mri: 1.2.0 2586 + 2587 + semver@7.7.3: {} 2588 + 2589 + set-cookie-parser@2.7.2: {} 2590 + 2591 + shebang-command@2.0.0: 2592 + dependencies: 2593 + shebang-regex: 3.0.0 2594 + 2595 + shebang-regex@3.0.0: {} 2596 + 2597 + sirv@3.0.2: 2598 + dependencies: 2599 + '@polka/url': 1.0.0-next.29 2600 + mrmime: 2.0.1 2601 + totalist: 3.0.1 2602 + 2603 + source-map-js@1.2.1: {} 2604 + 2605 + strip-json-comments@3.1.1: {} 2606 + 2607 + style-to-object@1.0.14: 2608 + dependencies: 2609 + inline-style-parser: 0.2.7 2610 + 2611 + supports-color@7.2.0: 2612 + dependencies: 2613 + has-flag: 4.0.0 2614 + 2615 + svelte-check@4.3.5(picomatch@4.0.3)(svelte@5.48.0)(typescript@5.9.3): 2616 + dependencies: 2617 + '@jridgewell/trace-mapping': 0.3.31 2618 + chokidar: 4.0.3 2619 + fdir: 6.5.0(picomatch@4.0.3) 2620 + picocolors: 1.1.1 2621 + sade: 1.8.1 2622 + svelte: 5.48.0 2623 + typescript: 5.9.3 2624 + transitivePeerDependencies: 2625 + - picomatch 2626 + 2627 + svelte-eslint-parser@1.4.1(svelte@5.48.0): 2628 + dependencies: 2629 + eslint-scope: 8.4.0 2630 + eslint-visitor-keys: 4.2.1 2631 + espree: 10.4.0 2632 + postcss: 8.5.6 2633 + postcss-scss: 4.0.9(postcss@8.5.6) 2634 + postcss-selector-parser: 7.1.1 2635 + optionalDependencies: 2636 + svelte: 5.48.0 2637 + 2638 + svelte-toolbelt@0.10.6(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0): 2639 + dependencies: 2640 + clsx: 2.1.1 2641 + runed: 0.35.1(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.0)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.48.0) 2642 + style-to-object: 1.0.14 2643 + svelte: 5.48.0 2644 + transitivePeerDependencies: 2645 + - '@sveltejs/kit' 2646 + 2647 + svelte@5.48.0: 2648 + dependencies: 2649 + '@jridgewell/remapping': 2.3.5 2650 + '@jridgewell/sourcemap-codec': 1.5.5 2651 + '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) 2652 + '@types/estree': 1.0.8 2653 + acorn: 8.15.0 2654 + aria-query: 5.3.2 2655 + axobject-query: 4.1.0 2656 + clsx: 2.1.1 2657 + devalue: 5.6.2 2658 + esm-env: 1.2.2 2659 + esrap: 2.2.2 2660 + is-reference: 3.0.3 2661 + locate-character: 3.0.0 2662 + magic-string: 0.30.21 2663 + zimmerframe: 1.1.4 2664 + 2665 + tabbable@6.4.0: {} 2666 + 2667 + tailwindcss@4.1.18: {} 2668 + 2669 + tapable@2.3.0: {} 2670 + 2671 + tinyglobby@0.2.15: 2672 + dependencies: 2673 + fdir: 6.5.0(picomatch@4.0.3) 2674 + picomatch: 4.0.3 2675 + 2676 + totalist@3.0.1: {} 2677 + 2678 + ts-api-utils@2.4.0(typescript@5.9.3): 2679 + dependencies: 2680 + typescript: 5.9.3 2681 + 2682 + tslib@2.8.1: {} 2683 + 2684 + type-check@0.4.0: 2685 + dependencies: 2686 + prelude-ls: 1.2.1 2687 + 2688 + typescript-eslint@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): 2689 + dependencies: 2690 + '@typescript-eslint/eslint-plugin': 8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 2691 + '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 2692 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) 2693 + '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 2694 + eslint: 9.39.2(jiti@2.6.1) 2695 + typescript: 5.9.3 2696 + transitivePeerDependencies: 2697 + - supports-color 2698 + 2699 + typescript@5.9.3: {} 2700 + 2701 + unicode-segmenter@0.14.5: {} 2702 + 2703 + uri-js@4.4.1: 2704 + dependencies: 2705 + punycode: 2.3.1 2706 + 2707 + util-deprecate@1.0.2: {} 2708 + 2709 + vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2): 2710 + dependencies: 2711 + esbuild: 0.27.2 2712 + fdir: 6.5.0(picomatch@4.0.3) 2713 + picomatch: 4.0.3 2714 + postcss: 8.5.6 2715 + rollup: 4.56.0 2716 + tinyglobby: 0.2.15 2717 + optionalDependencies: 2718 + fsevents: 2.3.3 2719 + jiti: 2.6.1 2720 + lightningcss: 1.30.2 2721 + 2722 + vitefu@1.1.1(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)): 2723 + optionalDependencies: 2724 + vite: 7.3.1(jiti@2.6.1)(lightningcss@1.30.2) 2725 + 2726 + which@2.0.2: 2727 + dependencies: 2728 + isexe: 2.0.0 2729 + 2730 + word-wrap@1.2.5: {} 2731 + 2732 + yaml@1.10.2: {} 2733 + 2734 + yocto-queue@0.1.0: {} 2735 + 2736 + zimmerframe@1.1.4: {}
+54
src/app.css
··· 3 3 @plugin '@tailwindcss/forms'; 4 4 5 5 @custom-variant dark (&:where(.dark, .dark *)); 6 + 7 + @theme inline { 8 + --color-base-50: var(--base-50); 9 + --color-base-100: var(--base-100); 10 + --color-base-200: var(--base-200); 11 + --color-base-300: var(--base-300); 12 + --color-base-400: var(--base-400); 13 + --color-base-500: var(--base-500); 14 + --color-base-600: var(--base-600); 15 + --color-base-700: var(--base-700); 16 + --color-base-800: var(--base-800); 17 + --color-base-900: var(--base-900); 18 + --color-base-950: var(--base-950); 19 + 20 + --color-accent-50: var(--accent-50); 21 + --color-accent-100: var(--accent-100); 22 + --color-accent-200: var(--accent-200); 23 + --color-accent-300: var(--accent-300); 24 + --color-accent-400: var(--accent-400); 25 + --color-accent-500: var(--accent-500); 26 + --color-accent-600: var(--accent-600); 27 + --color-accent-700: var(--accent-700); 28 + --color-accent-800: var(--accent-800); 29 + --color-accent-900: var(--accent-900); 30 + --color-accent-950: var(--accent-950); 31 + } 32 + 33 + @layer base { 34 + :root { 35 + --accent-50: var(--color-rose-50); 36 + --accent-100: var(--color-rose-100); 37 + --accent-200: var(--color-rose-200); 38 + --accent-300: var(--color-rose-300); 39 + --accent-400: var(--color-rose-400); 40 + --accent-500: var(--color-rose-500); 41 + --accent-600: var(--color-rose-600); 42 + --accent-700: var(--color-rose-700); 43 + --accent-800: var(--color-rose-800); 44 + --accent-900: var(--color-rose-900); 45 + --accent-950: var(--color-rose-950); 46 + 47 + --base-50: var(--color-stone-50); 48 + --base-100: var(--color-stone-100); 49 + --base-200: var(--color-stone-200); 50 + --base-300: var(--color-stone-300); 51 + --base-400: var(--color-stone-400); 52 + --base-500: var(--color-stone-500); 53 + --base-600: var(--color-stone-600); 54 + --base-700: var(--color-stone-700); 55 + --base-800: var(--color-stone-800); 56 + --base-900: var(--color-stone-900); 57 + --base-950: var(--color-stone-950); 58 + } 59 + }
+2
src/app.d.ts
··· 9 9 // interface Platform {} 10 10 } 11 11 } 12 + import type {} from '@atcute/atproto'; 13 + import type {} from '@atcute/bluesky'; 12 14 13 15 export {};
+66
src/lib/UI/Avatar.svelte
··· 1 + <script lang="ts"> 2 + import { Avatar as AvatarPrimitive, type WithoutChildrenOrChild } from 'bits-ui'; 3 + 4 + let { 5 + src, 6 + alt, 7 + fallback, 8 + ref = $bindable(null), 9 + 10 + imageRef = $bindable(null), 11 + imageClass, 12 + 13 + fallbackRef = $bindable(null), 14 + fallbackClass, 15 + 16 + class: className, 17 + ...restProps 18 + }: WithoutChildrenOrChild<AvatarPrimitive.RootProps> & { 19 + fallback?: string; 20 + imageRef?: HTMLImageElement | null; 21 + imageClass?: string; 22 + fallbackRef?: HTMLElement | null; 23 + fallbackClass?: string; 24 + 25 + src?: string; 26 + alt?: string; 27 + } = $props(); 28 + </script> 29 + 30 + <div 31 + class={[ 32 + 'border-base-300 bg-base-200 text-base-900 dark:border-base-800 dark:bg-base-900 dark:text-base-50 relative isolate flex size-6 shrink-0 overflow-hidden rounded-full border', 33 + className 34 + ]} 35 + {...restProps} 36 + bind:this={ref} 37 + > 38 + {#if fallback} 39 + <span class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 font-medium" 40 + >{fallback}</span 41 + > 42 + {:else} 43 + <svg 44 + xmlns="http://www.w3.org/2000/svg" 45 + viewBox="0 0 24 24" 46 + fill="currentColor" 47 + class="text-base-400 dark:text-base-600 absolute top-1/2 left-1/2 mt-[15%] size-full -translate-x-1/2 -translate-y-1/2" 48 + > 49 + <path 50 + fill-rule="evenodd" 51 + d="M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z" 52 + clip-rule="evenodd" 53 + /> 54 + </svg> 55 + {/if} 56 + {#if src} 57 + <img 58 + {src} 59 + alt={alt ?? ''} 60 + class="z-10 aspect-square size-full object-cover" 61 + onerror={() => { 62 + imageRef?.classList.add('hidden'); 63 + }} 64 + /> 65 + {/if} 66 + </div>
+1 -2
src/lib/UI/Button.svelte
··· 11 11 <button 12 12 class={[ 13 13 'bg-rose-600 text-white hover:bg-rose-500 focus-visible:outline-rose-600', 14 - 'inline-flex cursor-pointer justify-center rounded-full px-3 py-2 text-sm font-semibold shadow-sm focus-visible:outline focus-visible:outline-offset-2', 15 - 'disabled:cursor-not-allowed disabled:opacity-50', 14 + 'inline-flex cursor-pointer justify-center rounded-full px-3 py-2 text-sm font-semibold shadow-sm focus-visible:outline focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50', 16 15 className 17 16 ]} 18 17 {...props}
+90
src/lib/UI/HandleInput.svelte
··· 1 + <script lang="ts"> 2 + import { AppBskyActorDefs } from '@atcute/bluesky'; 3 + import { Combobox } from 'bits-ui'; 4 + import { searchActorsTypeahead } from '$lib/oauth/atproto'; 5 + import Avatar from './Avatar.svelte'; 6 + 7 + let results: AppBskyActorDefs.ProfileViewBasic[] = $state([]); 8 + 9 + async function search(q: string) { 10 + if (!q || q.length < 2) { 11 + results = []; 12 + return; 13 + } 14 + results = (await searchActorsTypeahead(q, 5)).actors; 15 + } 16 + let open = $state(false); 17 + 18 + let { 19 + value = $bindable(), 20 + onselected, 21 + ref = $bindable() 22 + }: { 23 + value: string; 24 + onselected: (actor: AppBskyActorDefs.ProfileViewBasic) => void; 25 + ref?: HTMLInputElement | null; 26 + } = $props(); 27 + </script> 28 + 29 + <Combobox.Root 30 + type="single" 31 + onOpenChangeComplete={(o) => { 32 + if (!o) results = []; 33 + }} 34 + bind:value={ 35 + () => { 36 + return value; 37 + }, 38 + (val) => { 39 + const profile = results.find((v) => v.handle === val); 40 + if (profile) onselected?.(profile); 41 + 42 + value = val; 43 + } 44 + } 45 + bind:open={ 46 + () => { 47 + return open && results.length > 0; 48 + }, 49 + (val) => { 50 + open = val; 51 + } 52 + } 53 + > 54 + <Combobox.Input 55 + bind:ref 56 + oninput={(e) => { 57 + value = e.currentTarget.value; 58 + search(e.currentTarget.value); 59 + }} 60 + class="w-full touch-none rounded-full border-0 bg-white ring-0 outline-1 -outline-offset-1 outline-gray-300 focus-within:outline-2 focus-within:-outline-offset-2 focus-within:outline-rose-600 dark:bg-white/5 dark:outline-white/10 dark:focus-within:outline-rose-500" 61 + placeholder="handle" 62 + id="" 63 + aria-label="enter your handle" 64 + /> 65 + <Combobox.Content 66 + class="z-100 max-h-[30dvh] w-full rounded-2xl border border-neutral-300 bg-neutral-50 shadow-lg" 67 + sideOffset={10} 68 + align="start" 69 + side="top" 70 + > 71 + <Combobox.Viewport class="w-full p-1"> 72 + {#each results as actor (actor.did)} 73 + <Combobox.Item 74 + class="rounded-button my-0.5 flex w-full cursor-pointer items-center gap-2 rounded-xl p-2 px-2 data-highlighted:bg-rose-100" 75 + value={actor.handle} 76 + label={actor.handle} 77 + > 78 + {#snippet children()} 79 + <Avatar 80 + src={actor.avatar?.replace('avatar', 'avatar_thumbnail')} 81 + alt="" 82 + class="size-6 rounded-full" 83 + /> 84 + {actor.handle} 85 + {/snippet} 86 + </Combobox.Item> 87 + {/each} 88 + </Combobox.Viewport> 89 + </Combobox.Content> 90 + </Combobox.Root>
+157 -44
src/lib/UI/LoginModal.svelte
··· 7 7 </script> 8 8 9 9 <script lang="ts"> 10 - import { login } from '$lib/oauth/auth.svelte'; 10 + import { login, signup } from '$lib/oauth/auth.svelte'; 11 + import type { ActorIdentifier, Did } from '@atcute/lexicons'; 11 12 import Button from './Button.svelte'; 12 - import { tick } from 'svelte'; 13 + import { onMount, tick } from 'svelte'; 14 + import SecondaryButton from './SecondaryButton.svelte'; 15 + import HandleInput from './HandleInput.svelte'; 16 + import { AppBskyActorDefs } from '@atcute/bluesky'; 17 + import Avatar from './Avatar.svelte'; 18 + 19 + let { signIn = true, loginOnSelect = true }: { signIn?: boolean; loginOnSelect?: boolean } = 20 + $props(); 13 21 14 22 let value = $state(''); 15 23 let error: string | null = $state(null); 16 - let loading = $state(false); 24 + let loadingLogin = $state(false); 25 + let loadingSignup = $state(false); 17 26 18 - async function onSubmit(event: Event) { 19 - event.preventDefault(); 20 - if (loading) return; 27 + async function onSubmit(event?: Event) { 28 + event?.preventDefault(); 29 + if (loadingLogin) return; 21 30 22 31 error = null; 23 - loading = true; 32 + loadingLogin = true; 24 33 25 34 try { 26 - await login(value); 35 + await login(value as ActorIdentifier); 27 36 } catch (err) { 28 37 error = err instanceof Error ? err.message : String(err); 29 38 } finally { 30 - loading = false; 39 + loadingLogin = false; 31 40 } 32 41 } 33 42 34 - let input: HTMLInputElement | undefined = $state(); 43 + let input: HTMLInputElement | null = $state(null); 35 44 36 45 $effect(() => { 37 46 if (!loginModalState.visible) { 38 47 error = null; 39 48 value = ''; 40 - loading = false; 49 + loadingLogin = false; 50 + selectedActor = undefined; 41 51 } else { 42 52 tick().then(() => { 43 53 input?.focus(); 44 54 }); 45 55 } 46 56 }); 57 + 58 + let selectedActor: AppBskyActorDefs.ProfileViewBasic | undefined = $state(); 59 + 60 + let recentLogins: Record<Did, AppBskyActorDefs.ProfileViewBasic> = $state({}); 61 + 62 + onMount(() => { 63 + try { 64 + recentLogins = JSON.parse(localStorage.getItem('recent-logins') || '{}'); 65 + } catch {} 66 + }); 67 + 68 + function removeRecentLogin(did: Did) { 69 + try { 70 + delete recentLogins[did]; 71 + 72 + localStorage.setItem('recent-logins', JSON.stringify(recentLogins)); 73 + } catch {} 74 + } 47 75 </script> 48 76 49 77 {#if loginModalState.visible} 50 78 <div 51 - class="fixed inset-0 z-[100] w-screen overflow-y-auto" 79 + class="fixed inset-0 z-100 w-screen overflow-y-auto" 52 80 aria-labelledby="modal-title" 53 81 role="dialog" 54 82 aria-modal="true" ··· 59 87 aria-hidden="true" 60 88 ></div> 61 89 62 - <div class="pointer-events-none fixed inset-0 z-10 w-screen overflow-y-auto"> 90 + <div class="pointer-events-none fixed inset-0 isolate z-10 w-screen overflow-y-auto"> 63 91 <div 64 92 class="flex min-h-full w-screen items-end justify-center p-4 text-center sm:items-center sm:p-0" 65 93 > ··· 67 95 class="pointer-events-auto relative w-full transform overflow-hidden rounded-2xl border border-neutral-200 bg-neutral-100 px-4 pt-4 pb-4 text-left shadow-xl transition-all sm:my-8 sm:max-w-sm sm:p-6 dark:border-neutral-700 dark:bg-neutral-800" 68 96 > 69 97 <h3 class="font-semibold text-neutral-900 dark:text-neutral-100" id="modal-title"> 70 - Login With Bluesky 98 + Login with your internet handle 71 99 </h3> 72 - <form onsubmit={onSubmit} class="mt-4 flex w-full flex-col gap-2"> 73 - <div class="w-full"> 74 - <label 75 - for="bluesky-handle" 76 - class="block text-sm/6 font-medium text-neutral-900 dark:text-neutral-100" 77 - >Your handle</label 78 - > 79 - <div class="mt-2"> 80 - <input 81 - bind:this={input} 82 - type="text" 83 - name="bluesky-handle" 84 - id="bluesky-handle" 85 - placeholder="yourname.bsky.social" 100 + 101 + <div class="mt-2 mb-2 text-xs font-light text-neutral-800">e.g. your bluesky account</div> 102 + 103 + {#if Object.keys(recentLogins).length > 0 && !loadingLogin && !selectedActor} 104 + <div class="mt-2 mb-2 text-sm font-medium">Recent logins</div> 105 + <div class="flex flex-col gap-2"> 106 + {#each Object.values(recentLogins) as recentLogin} 107 + <div class="group"> 108 + <div 109 + class="group-hover:bg-base-300 bg-base-200 border-base-300 relative flex h-10 w-full items-center justify-between gap-2 rounded-full border px-2 font-semibold transition-colors duration-100" 110 + > 111 + <div class="flex items-center gap-2"> 112 + <Avatar src={recentLogin.avatar} /> 113 + {recentLogin.handle} 114 + </div> 115 + <button 116 + class="z-20 cursor-pointer" 117 + onclick={() => { 118 + value = recentLogin.handle; 119 + selectedActor = recentLogin; 120 + onSubmit(); 121 + }} 122 + > 123 + <div class="absolute inset-0 h-full w-full"></div> 124 + <span class="sr-only">login</span> 125 + </button> 126 + 127 + <button 128 + onclick={() => { 129 + removeRecentLogin(recentLogin.did); 130 + }} 131 + class="z-30 cursor-pointer rounded-full p-0.5" 132 + > 133 + <svg 134 + xmlns="http://www.w3.org/2000/svg" 135 + fill="none" 136 + viewBox="0 0 24 24" 137 + stroke-width="1.5" 138 + stroke="currentColor" 139 + class="size-3" 140 + > 141 + <path 142 + stroke-linecap="round" 143 + stroke-linejoin="round" 144 + d="M6 18 18 6M6 6l12 12" 145 + /> 146 + </svg> 147 + <span class="sr-only">sign in with other account</span> 148 + </button> 149 + </div> 150 + </div> 151 + {/each} 152 + </div> 153 + 154 + <div class="mt-4 text-sm font-medium">Or new handle</div> 155 + {/if} 156 + 157 + <form onsubmit={onSubmit} class="mt-2 flex w-full flex-col gap-2"> 158 + {#if !selectedActor} 159 + <div class="w-full"> 160 + <HandleInput 86 161 bind:value 87 - class="block w-full rounded-full border-0 py-1.5 text-neutral-900 caret-rose-500 shadow-sm ring-1 ring-neutral-300 ring-inset placeholder:text-neutral-500 focus:ring-2 focus:ring-rose-600 focus:ring-inset sm:text-sm/6 dark:bg-neutral-950 dark:text-neutral-100 dark:ring-neutral-700 dark:placeholder:text-neutral-600" 162 + onselected={(a) => { 163 + selectedActor = a; 164 + value = a.handle; 165 + if (loginOnSelect) onSubmit(); 166 + }} 167 + bind:ref={input} 88 168 /> 89 169 </div> 90 - </div> 170 + {:else} 171 + <div 172 + class="bg-base-200 border-base-300 flex h-10 w-full items-center justify-between gap-2 rounded-full border px-2 font-semibold" 173 + > 174 + <div class="flex items-center gap-2"> 175 + <Avatar src={selectedActor.avatar} /> 176 + {selectedActor.handle} 177 + </div> 178 + 179 + <button 180 + onclick={() => { 181 + selectedActor = undefined; 182 + value = ''; 183 + }} 184 + class="cursor-pointer rounded-full p-0.5" 185 + > 186 + <svg 187 + xmlns="http://www.w3.org/2000/svg" 188 + fill="none" 189 + viewBox="0 0 24 24" 190 + stroke-width="1.5" 191 + stroke="currentColor" 192 + class="size-3" 193 + > 194 + <path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12" /> 195 + </svg> 196 + <span class="sr-only">sign in with other account</span> 197 + </button> 198 + </div> 199 + {/if} 91 200 92 201 {#if error} 93 202 <p class="text-sm font-semibold text-rose-500">{error}</p> 94 203 {/if} 95 204 96 - <div class="mt-5 sm:mt-6"> 97 - <Button type="submit" disabled={loading} class="w-full" 98 - >{loading ? 'Loading...' : 'Login'}</Button 205 + <div class="mt-4"> 206 + <Button type="submit" disabled={loadingLogin} class="w-full" 207 + >{loadingLogin ? 'Loading...' : 'Login'}</Button 99 208 > 100 209 </div> 101 210 102 - <div class="mt-4 border-t border-neutral-200 pt-4 text-sm leading-7 text-neutral-800"> 103 - Don't have an account? 104 - <br /> 105 - <a 106 - href="https://bsky.app" 107 - target="_blank" 108 - class="font-medium text-rose-600 hover:text-rose-500" 109 - > 110 - Create one on bluesky 111 - </a>, then sign in here. 112 - </div> 211 + {#if signIn} 212 + <div class="mt-4 border-t border-neutral-200 pt-4 text-sm leading-7 text-neutral-800"> 213 + Don't have an account? 214 + <div class="mt-3"> 215 + <SecondaryButton 216 + onclick={async () => { 217 + loadingSignup = true; 218 + await signup(); 219 + }} 220 + disabled={loadingSignup} 221 + class="w-full">{loadingSignup ? 'Loading...' : 'Sign Up'}</SecondaryButton 222 + > 223 + </div> 224 + </div> 225 + {/if} 113 226 </form> 114 227 </div> 115 228 </div>
+20
src/lib/UI/SecondaryButton.svelte
··· 1 + <script lang="ts"> 2 + import type { HTMLButtonAttributes } from 'svelte/elements'; 3 + 4 + type Props = HTMLButtonAttributes & { 5 + children: () => any; 6 + }; 7 + 8 + let { children, class: className, ...props }: Props = $props(); 9 + </script> 10 + 11 + <button 12 + class={[ 13 + 'bg-neutral-300 text-black transition-colors duration-100 hover:bg-neutral-200 focus-visible:outline-neutral-600', 14 + 'inline-flex cursor-pointer justify-center rounded-full px-3 py-2 text-sm font-semibold shadow-sm focus-visible:outline focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50', 15 + className 16 + ]} 17 + {...props} 18 + > 19 + {@render children()} 20 + </button>
+297
src/lib/oauth/atproto.ts
··· 1 + import type { Did, Handle } from '@atcute/lexicons'; 2 + import { user } from './auth.svelte'; 3 + import { 4 + CompositeDidDocumentResolver, 5 + CompositeHandleResolver, 6 + DohJsonHandleResolver, 7 + PlcDidDocumentResolver, 8 + WebDidDocumentResolver, 9 + WellKnownHandleResolver 10 + } from '@atcute/identity-resolver'; 11 + import { Client, simpleFetchHandler } from '@atcute/client'; 12 + import type { AppBskyActorDefs } from '@atcute/bluesky'; 13 + 14 + export type Collection = `${string}.${string}.${string}`; 15 + 16 + export function parseUri(uri: string) { 17 + const [did, collection, rkey] = uri.replace('at://', '').split('/'); 18 + return { did, collection, rkey } as { 19 + collection: `${string}.${string}.${string}`; 20 + rkey: string; 21 + did: string; 22 + }; 23 + } 24 + 25 + export async function resolveHandle({ handle }: { handle: Handle }) { 26 + const handleResolver = new CompositeHandleResolver({ 27 + methods: { 28 + dns: new DohJsonHandleResolver({ dohUrl: 'https://mozilla.cloudflare-dns.com/dns-query' }), 29 + http: new WellKnownHandleResolver() 30 + } 31 + }); 32 + 33 + const data = await handleResolver.resolve(handle); 34 + return data; 35 + } 36 + 37 + const didResolver = new CompositeDidDocumentResolver({ 38 + methods: { 39 + plc: new PlcDidDocumentResolver(), 40 + web: new WebDidDocumentResolver() 41 + } 42 + }); 43 + 44 + export async function getPDS(did: Did) { 45 + const doc = await didResolver.resolve(did as `did:plc:${string}` | `did:web:${string}`); 46 + if (!doc.service) throw new Error('No PDS found'); 47 + for (const service of doc.service) { 48 + if (service.id === '#atproto_pds') { 49 + return service.serviceEndpoint.toString(); 50 + } 51 + } 52 + } 53 + 54 + export async function getDetailedProfile(data?: { did?: Did; client?: Client }) { 55 + data ??= {}; 56 + data.did ??= user.did; 57 + 58 + if (!data.did) throw new Error('Error getting detailed profile: no did'); 59 + 60 + data.client ??= new Client({ 61 + handler: simpleFetchHandler({ service: 'https://public.api.bsky.app' }) 62 + }); 63 + 64 + const response = await data.client.get('app.bsky.actor.getProfile', { 65 + params: { actor: data.did } 66 + }); 67 + 68 + if (!response.ok) return; 69 + 70 + return response.data; 71 + } 72 + 73 + export async function getClient({ did }: { did: Did }) { 74 + const pds = await getPDS(did); 75 + if (!pds) throw new Error('PDS not found'); 76 + 77 + const client = new Client({ 78 + handler: simpleFetchHandler({ service: pds }) 79 + }); 80 + 81 + return client; 82 + } 83 + 84 + export async function listRecords({ 85 + did, 86 + collection, 87 + cursor, 88 + limit = 0, 89 + client 90 + }: { 91 + did?: Did; 92 + collection: `${string}.${string}.${string}`; 93 + cursor?: string; 94 + limit?: number; 95 + client?: Client; 96 + }) { 97 + did ??= user.did; 98 + if (!collection) { 99 + throw new Error('Missing parameters for listRecords'); 100 + } 101 + if (!did) { 102 + throw new Error('Missing did for getRecord'); 103 + } 104 + 105 + client ??= await getClient({ did }); 106 + 107 + const allRecords = []; 108 + 109 + let currentCursor = cursor; 110 + do { 111 + const response = await client.get('com.atproto.repo.listRecords', { 112 + params: { 113 + repo: did, 114 + collection, 115 + limit: limit || 100, 116 + cursor: currentCursor 117 + } 118 + }); 119 + 120 + if (!response.ok) { 121 + return; 122 + } 123 + 124 + allRecords.push(...response.data.records); 125 + currentCursor = response.data.cursor; 126 + } while (currentCursor && (!limit || allRecords.length < limit)); 127 + 128 + return allRecords; 129 + } 130 + 131 + export async function getRecord({ 132 + did, 133 + collection, 134 + rkey, 135 + client 136 + }: { 137 + did?: Did; 138 + collection: Collection; 139 + rkey?: string; 140 + client?: Client; 141 + }) { 142 + did ??= user.did; 143 + rkey ??= 'self'; 144 + 145 + if (!collection) { 146 + throw new Error('Missing parameters for getRecord'); 147 + } 148 + if (!did) { 149 + throw new Error('Missing did for getRecord'); 150 + } 151 + 152 + client ??= await getClient({ did }); 153 + 154 + const record = await client.get('com.atproto.repo.getRecord', { 155 + params: { 156 + repo: did, 157 + collection, 158 + rkey 159 + } 160 + }); 161 + 162 + return JSON.parse(JSON.stringify(record.data)); 163 + } 164 + 165 + export async function putRecord({ 166 + collection, 167 + rkey, 168 + record 169 + }: { 170 + collection: Collection; 171 + rkey: string; 172 + record: Record<string, unknown>; 173 + }) { 174 + if (!user.client || !user.did) throw new Error('No rpc or did'); 175 + 176 + const response = await user.client.post('com.atproto.repo.putRecord', { 177 + input: { 178 + collection, 179 + repo: user.did, 180 + rkey, 181 + record: { 182 + ...record 183 + } 184 + } 185 + }); 186 + 187 + return response; 188 + } 189 + 190 + export async function deleteRecord({ collection, rkey }: { collection: Collection; rkey: string }) { 191 + if (!user.client || !user.did) throw new Error('No profile or rpc or did'); 192 + 193 + const response = await user.client.post('com.atproto.repo.deleteRecord', { 194 + input: { 195 + collection, 196 + repo: user.did, 197 + rkey 198 + } 199 + }); 200 + 201 + return response.ok; 202 + } 203 + 204 + export async function uploadBlob({ blob }: { blob: Blob }) { 205 + if (!user.did || !user.client) throw new Error("Can't upload blob: Not logged in"); 206 + 207 + const blobResponse = await user.client.post('com.atproto.repo.uploadBlob', { 208 + params: { 209 + repo: user.did 210 + }, 211 + input: blob 212 + }); 213 + 214 + if (!blobResponse?.ok) return; 215 + 216 + const blobInfo = blobResponse?.data.blob as { 217 + $type: 'blob'; 218 + ref: { 219 + $link: string; 220 + }; 221 + mimeType: string; 222 + size: number; 223 + }; 224 + 225 + return blobInfo; 226 + } 227 + 228 + export async function describeRepo({ client, did }: { client: Client; did?: Did }) { 229 + did ??= user.did; 230 + if (!did) { 231 + throw new Error('Error describeRepo: No did'); 232 + } 233 + client ??= await getClient({ did }); 234 + 235 + const repo = await client.get('com.atproto.repo.describeRepo', { 236 + params: { 237 + repo: did 238 + } 239 + }); 240 + if (!repo.ok) return; 241 + 242 + return repo.data; 243 + } 244 + 245 + export async function getBlobURL({ 246 + did, 247 + blob 248 + }: { 249 + did: Did; 250 + blob: { 251 + $type: 'blob'; 252 + ref: { 253 + $link: string; 254 + }; 255 + }; 256 + }) { 257 + const pds = await getPDS(did); 258 + return `${pds}/xrpc/com.atproto.sync.getBlob?did=${did}&cid=${blob.ref.$link}`; 259 + } 260 + 261 + export function getImageBlobUrl({ 262 + did, 263 + blob 264 + }: { 265 + did: string; 266 + blob: { 267 + $type: 'blob'; 268 + ref: { 269 + $link: string; 270 + }; 271 + }; 272 + }) { 273 + return `https://cdn.bsky.app/img/feed_thumbnail/plain/${did}/${blob.ref.$link}@jpeg`; 274 + } 275 + 276 + export async function searchActorsTypeahead( 277 + q: string, 278 + limit: number = 10, 279 + host?: string 280 + ): Promise<{ actors: AppBskyActorDefs.ProfileViewBasic[]; q: string }> { 281 + host ??= 'https://public.api.bsky.app'; 282 + 283 + const client = new Client({ 284 + handler: simpleFetchHandler({ service: host }) 285 + }); 286 + 287 + const response = await client.get('app.bsky.actor.searchActorsTypeahead', { 288 + params: { 289 + q, 290 + limit 291 + } 292 + }); 293 + 294 + if (!response.ok) return { actors: [], q }; 295 + 296 + return { actors: response.data.actors, q }; 297 + }
+140 -94
src/lib/oauth/auth.svelte.ts
··· 2 2 configureOAuth, 3 3 createAuthorizationUrl, 4 4 finalizeAuthorization, 5 - resolveFromIdentity, 6 - type Session, 7 5 OAuthUserAgent, 8 - getSession 6 + getSession, 7 + deleteStoredSession 9 8 } from '@atcute/oauth-browser-client'; 9 + import { AppBskyActorDefs } from '@atcute/bluesky'; 10 + import type { ActorIdentifier, Did } from '@atcute/lexicons'; 11 + 12 + import { 13 + CompositeDidDocumentResolver, 14 + CompositeHandleResolver, 15 + DohJsonHandleResolver, 16 + LocalActorResolver, 17 + PlcDidDocumentResolver, 18 + WebDidDocumentResolver, 19 + WellKnownHandleResolver 20 + } from '@atcute/identity-resolver'; 21 + 22 + import { Client } from '@atcute/client'; 23 + 10 24 import { dev } from '$app/environment'; 11 - import { XRPC } from '@atcute/client'; 12 - import { metadata } from './const'; 25 + import { metadata } from './metadata'; 26 + import { replaceState } from '$app/navigation'; 27 + import { getDetailedProfile } from './atproto'; 28 + import { signUpPDS } from './settings'; 13 29 14 - export const client = $state({ 30 + export const user = $state({ 15 31 agent: null as OAuthUserAgent | null, 16 - session: null as Session | null, 17 - rpc: null as XRPC | null, 18 - profile: null as { 19 - handle: string; 20 - did: string; 21 - createdAt: string; 22 - description?: string; 23 - displayName?: string; 24 - banner?: string; 25 - avatar?: string; 26 - followersCount?: number; 27 - followsCount?: number; 28 - postsCount?: number; 29 - } | null, 32 + client: null as Client | null, 33 + profile: null as AppBskyActorDefs.ProfileViewDetailed | null | undefined, 30 34 isInitializing: true, 31 - isLoggedIn: false 35 + isLoggedIn: false, 36 + did: undefined as Did | undefined 32 37 }); 33 38 34 39 export async function initClient() { 35 - client.isInitializing = true; 40 + user.isInitializing = true; 36 41 37 42 const clientId = dev 38 43 ? `http://localhost` + ··· 40 45 `&scope=${encodeURIComponent(metadata.scope)}` 41 46 : metadata.client_id; 42 47 48 + const handleResolver = new CompositeHandleResolver({ 49 + methods: { 50 + dns: new DohJsonHandleResolver({ dohUrl: 'https://mozilla.cloudflare-dns.com/dns-query' }), 51 + http: new WellKnownHandleResolver() 52 + } 53 + }); 54 + 43 55 configureOAuth({ 44 56 metadata: { 45 57 client_id: clientId, 46 58 redirect_uri: `${dev ? 'http://127.0.0.1:5179' : metadata.redirect_uris[0]}` 47 - } 59 + }, 60 + identityResolver: new LocalActorResolver({ 61 + handleResolver: handleResolver, 62 + didDocumentResolver: new CompositeDidDocumentResolver({ 63 + methods: { 64 + plc: new PlcDidDocumentResolver(), 65 + web: new WebDidDocumentResolver() 66 + } 67 + }) 68 + }) 48 69 }); 49 70 50 71 const params = new URLSearchParams(location.hash.slice(1)); 51 72 52 - const did = localStorage.getItem('last-login') ?? undefined; 73 + const did = (localStorage.getItem('current-login') as Did) ?? undefined; 53 74 54 75 if (params.size > 0) { 55 76 await finalizeLogin(params, did); ··· 57 78 await resumeSession(did); 58 79 } 59 80 60 - client.isInitializing = false; 81 + user.isInitializing = false; 61 82 } 62 83 63 - export async function login(handle: string) { 84 + export async function login(handle: ActorIdentifier) { 85 + console.log('login in with', handle); 64 86 if (handle.startsWith('did:')) { 65 - if (handle.length > 5) await authorizationFlow(handle); 66 - else throw new Error('DID must be at least 6 characters'); 87 + if (handle.length < 6) throw new Error('DID must be at least 6 characters'); 88 + 89 + await startAuthorization(handle as ActorIdentifier); 67 90 } else if (handle.includes('.') && handle.length > 3) { 68 91 const processed = handle.startsWith('@') ? handle.slice(1) : handle; 69 - if (processed.length > 3) await authorizationFlow(processed); 70 - else throw new Error('Handle must be at least 4 characters'); 92 + if (processed.length < 4) throw new Error('Handle must be at least 4 characters'); 93 + 94 + await startAuthorization(processed as ActorIdentifier); 71 95 } else if (handle.length > 3) { 72 96 const processed = (handle.startsWith('@') ? handle.slice(1) : handle) + '.bsky.social'; 73 - await authorizationFlow(processed); 97 + await startAuthorization(processed as ActorIdentifier); 74 98 } else { 75 - throw new Error('Please provide a valid handle, DID, or PDS URL'); 99 + throw new Error('Please provide a valid handle or DID.'); 76 100 } 77 101 } 78 102 103 + export async function signup() { 104 + await startAuthorization(); 105 + } 106 + 107 + async function startAuthorization(identity?: ActorIdentifier) { 108 + const authUrl = await createAuthorizationUrl({ 109 + target: identity 110 + ? { type: 'account', identifier: identity } 111 + : { type: 'pds', serviceUrl: signUpPDS }, 112 + // @ts-expect-error - new stuff 113 + prompt: identity ? undefined : 'create', 114 + scope: metadata.scope 115 + }); 116 + 117 + // let browser persist local storage 118 + await new Promise((resolve) => setTimeout(resolve, 200)); 119 + 120 + window.location.assign(authUrl); 121 + 122 + await new Promise((_resolve, reject) => { 123 + const listener = () => { 124 + reject(new Error(`user aborted the login request`)); 125 + }; 126 + 127 + window.addEventListener('pageshow', listener, { once: true }); 128 + }); 129 + } 130 + 79 131 export async function logout() { 80 - const currentAgent = client.agent; 132 + const currentAgent = user.agent; 81 133 if (currentAgent) { 82 134 const did = currentAgent.session.info.sub; 83 135 84 - localStorage.removeItem('last-login'); 136 + localStorage.removeItem('current-login'); 85 137 localStorage.removeItem(`profile-${did}`); 86 138 87 - await currentAgent.signOut(); 88 - client.session = null; 89 - client.agent = null; 90 - client.profile = null; 139 + try { 140 + await currentAgent.signOut(); 141 + } catch { 142 + deleteStoredSession(did); 143 + } 91 144 92 - client.isLoggedIn = false; 145 + user.agent = null; 146 + user.profile = null; 147 + user.isLoggedIn = false; 93 148 } else { 94 - throw new Error('Not signed in'); 149 + console.error('trying to logout, but user not signed in'); 150 + return false; 95 151 } 96 152 } 97 153 98 - async function finalizeLogin(params: URLSearchParams, did?: string) { 154 + async function finalizeLogin(params: URLSearchParams, did?: Did) { 99 155 try { 100 - history.replaceState(null, '', location.pathname + location.search); 156 + const { session } = await finalizeAuthorization(params); 157 + replaceState(location.pathname + location.search, {}); 101 158 102 - const session = await finalizeAuthorization(params); 103 - client.session = session; 159 + user.agent = new OAuthUserAgent(session); 160 + user.did = session.info.sub; 161 + user.client = new Client({ handler: user.agent }); 104 162 105 - setAgentAndXRPC(session); 106 - localStorage.setItem('last-login', session.info.sub); 163 + localStorage.setItem('current-login', session.info.sub); 107 164 108 165 await loadProfile(session.info.sub); 109 166 110 - client.isLoggedIn = true; 167 + user.isLoggedIn = true; 168 + 169 + try { 170 + if (!user.profile) return; 171 + const recentLogins = JSON.parse(localStorage.getItem('recent-logins') || '{}'); 172 + 173 + recentLogins[session.info.sub] = user.profile; 174 + 175 + localStorage.setItem('recent-logins', JSON.stringify(recentLogins)); 176 + } catch { 177 + console.log('failed to save to recent logins'); 178 + } 111 179 } catch (error) { 112 180 console.error('error finalizing login', error); 113 181 if (did) { ··· 116 184 } 117 185 } 118 186 119 - async function resumeSession(did: string) { 187 + async function resumeSession(did: Did) { 120 188 try { 121 - const session = await getSession(did as `did:${string}`, { allowStale: true }); 122 - client.session = session; 189 + const session = await getSession(did, { allowStale: true }); 123 190 124 - setAgentAndXRPC(session); 191 + if (session.token.expires_at && session.token.expires_at < Date.now()) { 192 + throw Error('session expired'); 193 + } 194 + 195 + if (session.token.scope !== metadata.scope) { 196 + throw Error('scope changed, signing out!'); 197 + } 198 + 199 + user.agent = new OAuthUserAgent(session); 200 + user.did = session.info.sub; 201 + user.client = new Client({ handler: user.agent }); 125 202 126 203 await loadProfile(session.info.sub); 127 204 128 - client.isLoggedIn = true; 205 + user.isLoggedIn = true; 129 206 } catch (error) { 130 207 console.error('error resuming session', error); 208 + deleteStoredSession(did); 131 209 } 132 210 } 133 211 134 - function setAgentAndXRPC(session: Session) { 135 - client.agent = new OAuthUserAgent(session); 136 - 137 - client.rpc = new XRPC({ handler: client.agent }); 138 - } 139 - 140 - async function loadProfile(actor: string) { 212 + async function loadProfile(actor: Did) { 141 213 // check if profile is already loaded in local storage 142 214 const profile = localStorage.getItem(`profile-${actor}`); 143 215 if (profile) { 144 - console.log('loading profile from local storage'); 145 - client.profile = JSON.parse(profile); 146 - return; 147 - } 148 - 149 - console.log('loading profile from server'); 150 - const response = await client.rpc?.request({ 151 - type: 'get', 152 - nsid: 'app.bsky.actor.getProfile', 153 - params: { actor } 154 - }); 155 - 156 - if (response) { 157 - client.profile = response.data; 158 - localStorage.setItem(`profile-${actor}`, JSON.stringify(response.data)); 216 + try { 217 + user.profile = JSON.parse(profile); 218 + return; 219 + } catch { 220 + console.error('error loading profile from local storage'); 221 + } 159 222 } 160 - } 161 223 162 - async function authorizationFlow(input: string) { 163 - const { identity, metadata: meta } = await resolveFromIdentity(input); 224 + const response = await getDetailedProfile(); 164 225 165 - const authUrl = await createAuthorizationUrl({ 166 - metadata: meta, 167 - identity: identity, 168 - scope: metadata.scope 169 - }); 170 - 171 - await new Promise((resolve) => setTimeout(resolve, 200)); 172 - 173 - window.location.assign(authUrl); 174 - 175 - await new Promise((_resolve, reject) => { 176 - const listener = () => { 177 - reject(new Error(`user aborted the login request`)); 178 - }; 179 - 180 - window.addEventListener('pageshow', listener, { once: true }); 181 - }); 226 + user.profile = response; 227 + localStorage.setItem(`profile-${actor}`, JSON.stringify(response)); 182 228 }
-16
src/lib/oauth/const.ts
··· 1 - import { base } from '$app/paths'; 2 - 3 - export const SITE_URL = 'https://flo-bit.dev'; 4 - 5 - export const metadata = { 6 - client_id: `${SITE_URL}${base}/client-metadata.json`, 7 - 8 - redirect_uris: [SITE_URL + base], 9 - 10 - scope: 'atproto transition:generic', 11 - grant_types: ['authorization_code', 'refresh_token'], 12 - response_types: ['code'], 13 - token_endpoint_auth_method: 'none', 14 - application_type: 'web', 15 - dpop_bound_access_tokens: true 16 - };
+2 -6
src/lib/oauth/index.ts
··· 1 - import { client, login, logout, initClient } from './auth.svelte'; 2 - import LoginModal, { loginModalState } from '../UI/LoginModal.svelte'; 3 - import Button from '../UI/Button.svelte'; 4 - import { metadata } from './const'; 5 - 6 - export { metadata, client, login, logout, initClient, LoginModal, Button, loginModalState }; 1 + export { user, login, signup, logout, initClient } from './auth.svelte'; 2 + export { metadata } from './metadata';
+36
src/lib/oauth/metadata.ts
··· 1 + import { resolve } from '$app/paths'; 2 + import { blobs, collections, rpcCalls } from './settings'; 3 + 4 + function constructScope() { 5 + const repos = collections.map((collection) => 'repo:' + collection).join(' '); 6 + 7 + let rpcs = ''; 8 + for (const [key, value] of Object.entries(rpcCalls)) { 9 + if (Array.isArray(value)) { 10 + rpcs += value.map((lxm) => 'rpc?lxm=' + lxm + '&aud=' + key).join(' '); 11 + } else { 12 + rpcs += 'rpc?lxm=' + value + '&aud=' + key; 13 + } 14 + } 15 + let blobScope: string | undefined = undefined; 16 + if (Array.isArray(blobs)) { 17 + blobScope = 'blob?' + blobs.map((b) => 'accept=' + b).join('&'); 18 + } else if (blobs) { 19 + blobScope = 'blob:' + blobs; 20 + } 21 + 22 + const scope = ['atproto', repos, rpcs, blobScope].filter((v) => v?.trim()).join(' '); 23 + console.log(scope); 24 + return scope; 25 + } 26 + 27 + export const metadata = { 28 + client_id: resolve('/oauth-client-metadata.json'), 29 + redirect_uris: [resolve('/')], 30 + scope: constructScope(), 31 + grant_types: ['authorization_code', 'refresh_token'], 32 + response_types: ['code'], 33 + token_endpoint_auth_method: 'none', 34 + application_type: 'web', 35 + dpop_bound_access_tokens: true 36 + };
+9
src/lib/oauth/settings.ts
··· 1 + export const collections: string[] = ['xyz.statusphere.status']; 2 + 3 + export const rpcCalls: Record<string, string | string[]> = { 4 + //'did:web:api.bsky.app#bsky_appview': ['app.bsky.actor.getProfile'] 5 + }; 6 + 7 + export const blobs = ['video/*', 'text/html'] as string | string[] | undefined; 8 + 9 + export const signUpPDS = 'https://pds.rip/';
+2 -1
src/routes/+layout.svelte
··· 2 2 import '../app.css'; 3 3 4 4 import { onMount } from 'svelte'; 5 - import { initClient, LoginModal } from '$lib/oauth'; 5 + import { initClient } from '$lib/oauth'; 6 + import LoginModal from '$lib/UI/LoginModal.svelte'; 6 7 7 8 let { children } = $props(); 8 9
+14 -46
src/routes/+page.svelte
··· 1 1 <script lang="ts"> 2 - import { client, logout, Button, loginModalState } from '$lib/oauth'; 3 - 4 - let likes: { 5 - post: { 6 - record: { 7 - text: string; 8 - }; 9 - }; 10 - }[] = $state([]); 11 - 12 - async function getLikes() { 13 - if (!client.profile?.did || !client.rpc) return; 14 - 15 - // example of how to get some data for a logged in user 16 - const response = await client.rpc.request({ 17 - type: 'get', 18 - nsid: 'app.bsky.feed.getActorLikes', 19 - params: { 20 - actor: client.profile.did, 21 - limit: 10 22 - } 23 - }); 24 - 25 - likes = response?.data.feed; 26 - } 2 + import { user, logout } from '$lib/oauth'; 3 + import Avatar from '$lib/UI/Avatar.svelte'; 4 + import Button from '$lib/UI/Button.svelte'; 5 + import { loginModalState } from '$lib/UI/LoginModal.svelte'; 27 6 </script> 28 7 29 8 <div class="mx-auto my-4 max-w-3xl px-4 md:my-32"> 30 9 <h1 class="text-3xl font-bold">svelte atproto client oauth demo</h1> 31 10 32 - <a href="https://github.com/flo-bit/svelte-atproto-client-oauth" target="_blank" class="text-sm text-rose-600 mt-2">source code</a> 11 + <a 12 + href="https://github.com/flo-bit/svelte-atproto-client-oauth" 13 + target="_blank" 14 + class="mt-2 text-sm text-rose-600">source code</a 15 + > 33 16 34 - {#if client.isInitializing} 17 + {#if user.isInitializing} 35 18 <div class="mt-8 text-sm">loading...</div> 36 19 {/if} 37 20 38 - {#if !client.isInitializing && !client.agent} 21 + {#if !user.isInitializing && !user.agent} 39 22 <div class="mt-8 text-sm">not signed in</div> 40 23 <Button class="mt-4" onclick={() => loginModalState.show()}>Sign In</Button> 41 24 {/if} 42 25 43 - {#if client.isLoggedIn} 26 + {#if user.isLoggedIn} 44 27 <div class="mt-8 text-sm">signed in as</div> 45 28 46 29 <div class="mt-2 flex gap-1 font-semibold"> 47 - <img 48 - src={client.profile?.avatar} 49 - class="h-6 w-6 rounded-full" 50 - alt="avatar of {client.profile?.handle}" 51 - /> 52 - <span>{client.profile?.handle}</span> 30 + <Avatar src={user.profile?.avatar} /> 31 + <span>{user.profile?.displayName || user.profile?.handle}</span> 53 32 </div> 54 33 55 34 <Button class="mt-4" onclick={() => logout()}>Sign Out</Button> 56 - 57 - <Button class="mt-4" onclick={getLikes}>Get recent likes</Button> 58 - 59 - {#if likes.length > 0} 60 - <div class="mt-8 text-sm">recent likes</div> 61 - <ul class="mt-4 flex flex-col gap-2 text-sm"> 62 - {#each likes as like} 63 - <li>{like.post.record.text}</li> 64 - {/each} 65 - </ul> 66 - {/if} 67 35 {/if} 68 36 </div>
src/routes/client-metadata.json/+server.ts src/routes/oauth-client-metadata.json/+server.ts