A website inspired by Last.fm that will keep track of your listening statistics
lastfm music statistics
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

move over code from web to client

oscar345 dcd8bf00 efe9108a

+4367 -2363
+15
client/better-auth_migrations/2026-01-22T22-06-57.108Z.sql
··· 1 + create table "user" ("id" text not null primary key, "name" text not null, "email" text not null unique, "emailVerified" integer not null, "image" text, "createdAt" date not null, "updatedAt" date not null); 2 + 3 + create table "session" ("id" text not null primary key, "expiresAt" date not null, "token" text not null unique, "createdAt" date not null, "updatedAt" date not null, "ipAddress" text, "userAgent" text, "userId" text not null references "user" ("id") on delete cascade); 4 + 5 + create table "account" ("id" text not null primary key, "accountId" text not null, "providerId" text not null, "userId" text not null references "user" ("id") on delete cascade, "accessToken" text, "refreshToken" text, "idToken" text, "accessTokenExpiresAt" date, "refreshTokenExpiresAt" date, "scope" text, "password" text, "createdAt" date not null, "updatedAt" date not null); 6 + 7 + create table "verification" ("id" text not null primary key, "identifier" text not null, "value" text not null, "expiresAt" date not null, "createdAt" date not null, "updatedAt" date not null); 8 + 9 + create table "jwks" ("id" text not null primary key, "publicKey" text not null, "privateKey" text not null, "createdAt" date not null, "expiresAt" date); 10 + 11 + create index "session_userId_idx" on "session" ("userId"); 12 + 13 + create index "account_userId_idx" on "account" ("userId"); 14 + 15 + create index "verification_identifier_idx" on "verification" ("identifier");
+2968 -2224
client/package-lock.json
··· 1 1 { 2 - "name": "client", 3 - "version": "0.0.1", 4 - "lockfileVersion": 3, 5 - "requires": true, 6 - "packages": { 7 - "": { 8 - "name": "client", 9 - "version": "0.0.1", 10 - "devDependencies": { 11 - "@sveltejs/adapter-auto": "^7.0.0", 12 - "@sveltejs/kit": "^2.49.1", 13 - "@sveltejs/vite-plugin-svelte": "^6.2.1", 14 - "@tailwindcss/forms": "^0.5.10", 15 - "@tailwindcss/vite": "^4.1.17", 16 - "svelte": "^5.45.6", 17 - "svelte-check": "^4.3.4", 18 - "tailwindcss": "^4.1.17", 19 - "typescript": "^5.9.3", 20 - "vite": "^7.2.6" 21 - } 22 - }, 23 - "node_modules/@esbuild/aix-ppc64": { 24 - "version": "0.27.2", 25 - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", 26 - "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", 27 - "cpu": [ 28 - "ppc64" 29 - ], 30 - "dev": true, 31 - "license": "MIT", 32 - "optional": true, 33 - "os": [ 34 - "aix" 35 - ], 36 - "engines": { 37 - "node": ">=18" 38 - } 39 - }, 40 - "node_modules/@esbuild/android-arm": { 41 - "version": "0.27.2", 42 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", 43 - "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", 44 - "cpu": [ 45 - "arm" 46 - ], 47 - "dev": true, 48 - "license": "MIT", 49 - "optional": true, 50 - "os": [ 51 - "android" 52 - ], 53 - "engines": { 54 - "node": ">=18" 55 - } 56 - }, 57 - "node_modules/@esbuild/android-arm64": { 58 - "version": "0.27.2", 59 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", 60 - "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", 61 - "cpu": [ 62 - "arm64" 63 - ], 64 - "dev": true, 65 - "license": "MIT", 66 - "optional": true, 67 - "os": [ 68 - "android" 69 - ], 70 - "engines": { 71 - "node": ">=18" 72 - } 73 - }, 74 - "node_modules/@esbuild/android-x64": { 75 - "version": "0.27.2", 76 - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", 77 - "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", 78 - "cpu": [ 79 - "x64" 80 - ], 81 - "dev": true, 82 - "license": "MIT", 83 - "optional": true, 84 - "os": [ 85 - "android" 86 - ], 87 - "engines": { 88 - "node": ">=18" 89 - } 90 - }, 91 - "node_modules/@esbuild/darwin-arm64": { 92 - "version": "0.27.2", 93 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", 94 - "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", 95 - "cpu": [ 96 - "arm64" 97 - ], 98 - "dev": true, 99 - "license": "MIT", 100 - "optional": true, 101 - "os": [ 102 - "darwin" 103 - ], 104 - "engines": { 105 - "node": ">=18" 106 - } 107 - }, 108 - "node_modules/@esbuild/darwin-x64": { 109 - "version": "0.27.2", 110 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", 111 - "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", 112 - "cpu": [ 113 - "x64" 114 - ], 115 - "dev": true, 116 - "license": "MIT", 117 - "optional": true, 118 - "os": [ 119 - "darwin" 120 - ], 121 - "engines": { 122 - "node": ">=18" 123 - } 124 - }, 125 - "node_modules/@esbuild/freebsd-arm64": { 126 - "version": "0.27.2", 127 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", 128 - "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", 129 - "cpu": [ 130 - "arm64" 131 - ], 132 - "dev": true, 133 - "license": "MIT", 134 - "optional": true, 135 - "os": [ 136 - "freebsd" 137 - ], 138 - "engines": { 139 - "node": ">=18" 140 - } 141 - }, 142 - "node_modules/@esbuild/freebsd-x64": { 143 - "version": "0.27.2", 144 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", 145 - "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", 146 - "cpu": [ 147 - "x64" 148 - ], 149 - "dev": true, 150 - "license": "MIT", 151 - "optional": true, 152 - "os": [ 153 - "freebsd" 154 - ], 155 - "engines": { 156 - "node": ">=18" 157 - } 158 - }, 159 - "node_modules/@esbuild/linux-arm": { 160 - "version": "0.27.2", 161 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", 162 - "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", 163 - "cpu": [ 164 - "arm" 165 - ], 166 - "dev": true, 167 - "license": "MIT", 168 - "optional": true, 169 - "os": [ 170 - "linux" 171 - ], 172 - "engines": { 173 - "node": ">=18" 174 - } 175 - }, 176 - "node_modules/@esbuild/linux-arm64": { 177 - "version": "0.27.2", 178 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", 179 - "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", 180 - "cpu": [ 181 - "arm64" 182 - ], 183 - "dev": true, 184 - "license": "MIT", 185 - "optional": true, 186 - "os": [ 187 - "linux" 188 - ], 189 - "engines": { 190 - "node": ">=18" 191 - } 192 - }, 193 - "node_modules/@esbuild/linux-ia32": { 194 - "version": "0.27.2", 195 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", 196 - "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", 197 - "cpu": [ 198 - "ia32" 199 - ], 200 - "dev": true, 201 - "license": "MIT", 202 - "optional": true, 203 - "os": [ 204 - "linux" 205 - ], 206 - "engines": { 207 - "node": ">=18" 208 - } 209 - }, 210 - "node_modules/@esbuild/linux-loong64": { 211 - "version": "0.27.2", 212 - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", 213 - "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", 214 - "cpu": [ 215 - "loong64" 216 - ], 217 - "dev": true, 218 - "license": "MIT", 219 - "optional": true, 220 - "os": [ 221 - "linux" 222 - ], 223 - "engines": { 224 - "node": ">=18" 225 - } 226 - }, 227 - "node_modules/@esbuild/linux-mips64el": { 228 - "version": "0.27.2", 229 - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", 230 - "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", 231 - "cpu": [ 232 - "mips64el" 233 - ], 234 - "dev": true, 235 - "license": "MIT", 236 - "optional": true, 237 - "os": [ 238 - "linux" 239 - ], 240 - "engines": { 241 - "node": ">=18" 242 - } 243 - }, 244 - "node_modules/@esbuild/linux-ppc64": { 245 - "version": "0.27.2", 246 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", 247 - "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", 248 - "cpu": [ 249 - "ppc64" 250 - ], 251 - "dev": true, 252 - "license": "MIT", 253 - "optional": true, 254 - "os": [ 255 - "linux" 256 - ], 257 - "engines": { 258 - "node": ">=18" 259 - } 260 - }, 261 - "node_modules/@esbuild/linux-riscv64": { 262 - "version": "0.27.2", 263 - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", 264 - "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", 265 - "cpu": [ 266 - "riscv64" 267 - ], 268 - "dev": true, 269 - "license": "MIT", 270 - "optional": true, 271 - "os": [ 272 - "linux" 273 - ], 274 - "engines": { 275 - "node": ">=18" 276 - } 277 - }, 278 - "node_modules/@esbuild/linux-s390x": { 279 - "version": "0.27.2", 280 - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", 281 - "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", 282 - "cpu": [ 283 - "s390x" 284 - ], 285 - "dev": true, 286 - "license": "MIT", 287 - "optional": true, 288 - "os": [ 289 - "linux" 290 - ], 291 - "engines": { 292 - "node": ">=18" 293 - } 294 - }, 295 - "node_modules/@esbuild/linux-x64": { 296 - "version": "0.27.2", 297 - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", 298 - "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", 299 - "cpu": [ 300 - "x64" 301 - ], 302 - "dev": true, 303 - "license": "MIT", 304 - "optional": true, 305 - "os": [ 306 - "linux" 307 - ], 308 - "engines": { 309 - "node": ">=18" 310 - } 311 - }, 312 - "node_modules/@esbuild/netbsd-arm64": { 313 - "version": "0.27.2", 314 - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", 315 - "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", 316 - "cpu": [ 317 - "arm64" 318 - ], 319 - "dev": true, 320 - "license": "MIT", 321 - "optional": true, 322 - "os": [ 323 - "netbsd" 324 - ], 325 - "engines": { 326 - "node": ">=18" 327 - } 328 - }, 329 - "node_modules/@esbuild/netbsd-x64": { 330 - "version": "0.27.2", 331 - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", 332 - "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", 333 - "cpu": [ 334 - "x64" 335 - ], 336 - "dev": true, 337 - "license": "MIT", 338 - "optional": true, 339 - "os": [ 340 - "netbsd" 341 - ], 342 - "engines": { 343 - "node": ">=18" 344 - } 345 - }, 346 - "node_modules/@esbuild/openbsd-arm64": { 347 - "version": "0.27.2", 348 - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", 349 - "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", 350 - "cpu": [ 351 - "arm64" 352 - ], 353 - "dev": true, 354 - "license": "MIT", 355 - "optional": true, 356 - "os": [ 357 - "openbsd" 358 - ], 359 - "engines": { 360 - "node": ">=18" 361 - } 362 - }, 363 - "node_modules/@esbuild/openbsd-x64": { 364 - "version": "0.27.2", 365 - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", 366 - "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", 367 - "cpu": [ 368 - "x64" 369 - ], 370 - "dev": true, 371 - "license": "MIT", 372 - "optional": true, 373 - "os": [ 374 - "openbsd" 375 - ], 376 - "engines": { 377 - "node": ">=18" 378 - } 379 - }, 380 - "node_modules/@esbuild/openharmony-arm64": { 381 - "version": "0.27.2", 382 - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", 383 - "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", 384 - "cpu": [ 385 - "arm64" 386 - ], 387 - "dev": true, 388 - "license": "MIT", 389 - "optional": true, 390 - "os": [ 391 - "openharmony" 392 - ], 393 - "engines": { 394 - "node": ">=18" 395 - } 396 - }, 397 - "node_modules/@esbuild/sunos-x64": { 398 - "version": "0.27.2", 399 - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", 400 - "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", 401 - "cpu": [ 402 - "x64" 403 - ], 404 - "dev": true, 405 - "license": "MIT", 406 - "optional": true, 407 - "os": [ 408 - "sunos" 409 - ], 410 - "engines": { 411 - "node": ">=18" 412 - } 413 - }, 414 - "node_modules/@esbuild/win32-arm64": { 415 - "version": "0.27.2", 416 - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", 417 - "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", 418 - "cpu": [ 419 - "arm64" 420 - ], 421 - "dev": true, 422 - "license": "MIT", 423 - "optional": true, 424 - "os": [ 425 - "win32" 426 - ], 427 - "engines": { 428 - "node": ">=18" 429 - } 430 - }, 431 - "node_modules/@esbuild/win32-ia32": { 432 - "version": "0.27.2", 433 - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", 434 - "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", 435 - "cpu": [ 436 - "ia32" 437 - ], 438 - "dev": true, 439 - "license": "MIT", 440 - "optional": true, 441 - "os": [ 442 - "win32" 443 - ], 444 - "engines": { 445 - "node": ">=18" 446 - } 447 - }, 448 - "node_modules/@esbuild/win32-x64": { 449 - "version": "0.27.2", 450 - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", 451 - "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", 452 - "cpu": [ 453 - "x64" 454 - ], 455 - "dev": true, 456 - "license": "MIT", 457 - "optional": true, 458 - "os": [ 459 - "win32" 460 - ], 461 - "engines": { 462 - "node": ">=18" 463 - } 464 - }, 465 - "node_modules/@jridgewell/gen-mapping": { 466 - "version": "0.3.13", 467 - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", 468 - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", 469 - "dev": true, 470 - "license": "MIT", 471 - "dependencies": { 472 - "@jridgewell/sourcemap-codec": "^1.5.0", 473 - "@jridgewell/trace-mapping": "^0.3.24" 474 - } 475 - }, 476 - "node_modules/@jridgewell/remapping": { 477 - "version": "2.3.5", 478 - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", 479 - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", 480 - "dev": true, 481 - "license": "MIT", 482 - "dependencies": { 483 - "@jridgewell/gen-mapping": "^0.3.5", 484 - "@jridgewell/trace-mapping": "^0.3.24" 485 - } 486 - }, 487 - "node_modules/@jridgewell/resolve-uri": { 488 - "version": "3.1.2", 489 - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 490 - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 491 - "dev": true, 492 - "license": "MIT", 493 - "engines": { 494 - "node": ">=6.0.0" 495 - } 496 - }, 497 - "node_modules/@jridgewell/sourcemap-codec": { 498 - "version": "1.5.5", 499 - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", 500 - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", 501 - "dev": true, 502 - "license": "MIT" 503 - }, 504 - "node_modules/@jridgewell/trace-mapping": { 505 - "version": "0.3.31", 506 - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", 507 - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", 508 - "dev": true, 509 - "license": "MIT", 510 - "dependencies": { 511 - "@jridgewell/resolve-uri": "^3.1.0", 512 - "@jridgewell/sourcemap-codec": "^1.4.14" 513 - } 514 - }, 515 - "node_modules/@polka/url": { 516 - "version": "1.0.0-next.29", 517 - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", 518 - "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", 519 - "dev": true, 520 - "license": "MIT" 521 - }, 522 - "node_modules/@rollup/rollup-android-arm-eabi": { 523 - "version": "4.56.0", 524 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz", 525 - "integrity": "sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==", 526 - "cpu": [ 527 - "arm" 528 - ], 529 - "dev": true, 530 - "license": "MIT", 531 - "optional": true, 532 - "os": [ 533 - "android" 534 - ] 535 - }, 536 - "node_modules/@rollup/rollup-android-arm64": { 537 - "version": "4.56.0", 538 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz", 539 - "integrity": "sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==", 540 - "cpu": [ 541 - "arm64" 542 - ], 543 - "dev": true, 544 - "license": "MIT", 545 - "optional": true, 546 - "os": [ 547 - "android" 548 - ] 549 - }, 550 - "node_modules/@rollup/rollup-darwin-arm64": { 551 - "version": "4.56.0", 552 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz", 553 - "integrity": "sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==", 554 - "cpu": [ 555 - "arm64" 556 - ], 557 - "dev": true, 558 - "license": "MIT", 559 - "optional": true, 560 - "os": [ 561 - "darwin" 562 - ] 563 - }, 564 - "node_modules/@rollup/rollup-darwin-x64": { 565 - "version": "4.56.0", 566 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz", 567 - "integrity": "sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==", 568 - "cpu": [ 569 - "x64" 570 - ], 571 - "dev": true, 572 - "license": "MIT", 573 - "optional": true, 574 - "os": [ 575 - "darwin" 576 - ] 577 - }, 578 - "node_modules/@rollup/rollup-freebsd-arm64": { 579 - "version": "4.56.0", 580 - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz", 581 - "integrity": "sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==", 582 - "cpu": [ 583 - "arm64" 584 - ], 585 - "dev": true, 586 - "license": "MIT", 587 - "optional": true, 588 - "os": [ 589 - "freebsd" 590 - ] 591 - }, 592 - "node_modules/@rollup/rollup-freebsd-x64": { 593 - "version": "4.56.0", 594 - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz", 595 - "integrity": "sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==", 596 - "cpu": [ 597 - "x64" 598 - ], 599 - "dev": true, 600 - "license": "MIT", 601 - "optional": true, 602 - "os": [ 603 - "freebsd" 604 - ] 605 - }, 606 - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 607 - "version": "4.56.0", 608 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz", 609 - "integrity": "sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==", 610 - "cpu": [ 611 - "arm" 612 - ], 613 - "dev": true, 614 - "license": "MIT", 615 - "optional": true, 616 - "os": [ 617 - "linux" 618 - ] 619 - }, 620 - "node_modules/@rollup/rollup-linux-arm-musleabihf": { 621 - "version": "4.56.0", 622 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz", 623 - "integrity": "sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==", 624 - "cpu": [ 625 - "arm" 626 - ], 627 - "dev": true, 628 - "license": "MIT", 629 - "optional": true, 630 - "os": [ 631 - "linux" 632 - ] 633 - }, 634 - "node_modules/@rollup/rollup-linux-arm64-gnu": { 635 - "version": "4.56.0", 636 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz", 637 - "integrity": "sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==", 638 - "cpu": [ 639 - "arm64" 640 - ], 641 - "dev": true, 642 - "license": "MIT", 643 - "optional": true, 644 - "os": [ 645 - "linux" 646 - ] 647 - }, 648 - "node_modules/@rollup/rollup-linux-arm64-musl": { 649 - "version": "4.56.0", 650 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz", 651 - "integrity": "sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==", 652 - "cpu": [ 653 - "arm64" 654 - ], 655 - "dev": true, 656 - "license": "MIT", 657 - "optional": true, 658 - "os": [ 659 - "linux" 660 - ] 661 - }, 662 - "node_modules/@rollup/rollup-linux-loong64-gnu": { 663 - "version": "4.56.0", 664 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz", 665 - "integrity": "sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==", 666 - "cpu": [ 667 - "loong64" 668 - ], 669 - "dev": true, 670 - "license": "MIT", 671 - "optional": true, 672 - "os": [ 673 - "linux" 674 - ] 675 - }, 676 - "node_modules/@rollup/rollup-linux-loong64-musl": { 677 - "version": "4.56.0", 678 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz", 679 - "integrity": "sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==", 680 - "cpu": [ 681 - "loong64" 682 - ], 683 - "dev": true, 684 - "license": "MIT", 685 - "optional": true, 686 - "os": [ 687 - "linux" 688 - ] 689 - }, 690 - "node_modules/@rollup/rollup-linux-ppc64-gnu": { 691 - "version": "4.56.0", 692 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz", 693 - "integrity": "sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==", 694 - "cpu": [ 695 - "ppc64" 696 - ], 697 - "dev": true, 698 - "license": "MIT", 699 - "optional": true, 700 - "os": [ 701 - "linux" 702 - ] 703 - }, 704 - "node_modules/@rollup/rollup-linux-ppc64-musl": { 705 - "version": "4.56.0", 706 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz", 707 - "integrity": "sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==", 708 - "cpu": [ 709 - "ppc64" 710 - ], 711 - "dev": true, 712 - "license": "MIT", 713 - "optional": true, 714 - "os": [ 715 - "linux" 716 - ] 717 - }, 718 - "node_modules/@rollup/rollup-linux-riscv64-gnu": { 719 - "version": "4.56.0", 720 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz", 721 - "integrity": "sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==", 722 - "cpu": [ 723 - "riscv64" 724 - ], 725 - "dev": true, 726 - "license": "MIT", 727 - "optional": true, 728 - "os": [ 729 - "linux" 730 - ] 731 - }, 732 - "node_modules/@rollup/rollup-linux-riscv64-musl": { 733 - "version": "4.56.0", 734 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz", 735 - "integrity": "sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==", 736 - "cpu": [ 737 - "riscv64" 738 - ], 739 - "dev": true, 740 - "license": "MIT", 741 - "optional": true, 742 - "os": [ 743 - "linux" 744 - ] 745 - }, 746 - "node_modules/@rollup/rollup-linux-s390x-gnu": { 747 - "version": "4.56.0", 748 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz", 749 - "integrity": "sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==", 750 - "cpu": [ 751 - "s390x" 752 - ], 753 - "dev": true, 754 - "license": "MIT", 755 - "optional": true, 756 - "os": [ 757 - "linux" 758 - ] 759 - }, 760 - "node_modules/@rollup/rollup-linux-x64-gnu": { 761 - "version": "4.56.0", 762 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz", 763 - "integrity": "sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==", 764 - "cpu": [ 765 - "x64" 766 - ], 767 - "dev": true, 768 - "license": "MIT", 769 - "optional": true, 770 - "os": [ 771 - "linux" 772 - ] 773 - }, 774 - "node_modules/@rollup/rollup-linux-x64-musl": { 775 - "version": "4.56.0", 776 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz", 777 - "integrity": "sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==", 778 - "cpu": [ 779 - "x64" 780 - ], 781 - "dev": true, 782 - "license": "MIT", 783 - "optional": true, 784 - "os": [ 785 - "linux" 786 - ] 787 - }, 788 - "node_modules/@rollup/rollup-openbsd-x64": { 789 - "version": "4.56.0", 790 - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz", 791 - "integrity": "sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==", 792 - "cpu": [ 793 - "x64" 794 - ], 795 - "dev": true, 796 - "license": "MIT", 797 - "optional": true, 798 - "os": [ 799 - "openbsd" 800 - ] 801 - }, 802 - "node_modules/@rollup/rollup-openharmony-arm64": { 803 - "version": "4.56.0", 804 - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz", 805 - "integrity": "sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==", 806 - "cpu": [ 807 - "arm64" 808 - ], 809 - "dev": true, 810 - "license": "MIT", 811 - "optional": true, 812 - "os": [ 813 - "openharmony" 814 - ] 815 - }, 816 - "node_modules/@rollup/rollup-win32-arm64-msvc": { 817 - "version": "4.56.0", 818 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz", 819 - "integrity": "sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==", 820 - "cpu": [ 821 - "arm64" 822 - ], 823 - "dev": true, 824 - "license": "MIT", 825 - "optional": true, 826 - "os": [ 827 - "win32" 828 - ] 829 - }, 830 - "node_modules/@rollup/rollup-win32-ia32-msvc": { 831 - "version": "4.56.0", 832 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz", 833 - "integrity": "sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==", 834 - "cpu": [ 835 - "ia32" 836 - ], 837 - "dev": true, 838 - "license": "MIT", 839 - "optional": true, 840 - "os": [ 841 - "win32" 842 - ] 843 - }, 844 - "node_modules/@rollup/rollup-win32-x64-gnu": { 845 - "version": "4.56.0", 846 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz", 847 - "integrity": "sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==", 848 - "cpu": [ 849 - "x64" 850 - ], 851 - "dev": true, 852 - "license": "MIT", 853 - "optional": true, 854 - "os": [ 855 - "win32" 856 - ] 857 - }, 858 - "node_modules/@rollup/rollup-win32-x64-msvc": { 859 - "version": "4.56.0", 860 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz", 861 - "integrity": "sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==", 862 - "cpu": [ 863 - "x64" 864 - ], 865 - "dev": true, 866 - "license": "MIT", 867 - "optional": true, 868 - "os": [ 869 - "win32" 870 - ] 871 - }, 872 - "node_modules/@standard-schema/spec": { 873 - "version": "1.1.0", 874 - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", 875 - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", 876 - "dev": true, 877 - "license": "MIT" 878 - }, 879 - "node_modules/@sveltejs/acorn-typescript": { 880 - "version": "1.0.8", 881 - "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.8.tgz", 882 - "integrity": "sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==", 883 - "dev": true, 884 - "license": "MIT", 885 - "peerDependencies": { 886 - "acorn": "^8.9.0" 887 - } 888 - }, 889 - "node_modules/@sveltejs/adapter-auto": { 890 - "version": "7.0.0", 891 - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-7.0.0.tgz", 892 - "integrity": "sha512-ImDWaErTOCkRS4Gt+5gZuymKFBobnhChXUZ9lhUZLahUgvA4OOvRzi3sahzYgbxGj5nkA6OV0GAW378+dl/gyw==", 893 - "dev": true, 894 - "license": "MIT", 895 - "peerDependencies": { 896 - "@sveltejs/kit": "^2.0.0" 897 - } 898 - }, 899 - "node_modules/@sveltejs/kit": { 900 - "version": "2.50.0", 901 - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.50.0.tgz", 902 - "integrity": "sha512-Hj8sR8O27p2zshFEIJzsvfhLzxga/hWw6tRLnBjMYw70m1aS9BSYCqAUtzDBjRREtX1EvLMYgaC0mYE3Hz4KWA==", 903 - "dev": true, 904 - "license": "MIT", 905 - "dependencies": { 906 - "@standard-schema/spec": "^1.0.0", 907 - "@sveltejs/acorn-typescript": "^1.0.5", 908 - "@types/cookie": "^0.6.0", 909 - "acorn": "^8.14.1", 910 - "cookie": "^0.6.0", 911 - "devalue": "^5.6.2", 912 - "esm-env": "^1.2.2", 913 - "kleur": "^4.1.5", 914 - "magic-string": "^0.30.5", 915 - "mrmime": "^2.0.0", 916 - "sade": "^1.8.1", 917 - "set-cookie-parser": "^2.6.0", 918 - "sirv": "^3.0.0" 919 - }, 920 - "bin": { 921 - "svelte-kit": "svelte-kit.js" 922 - }, 923 - "engines": { 924 - "node": ">=18.13" 925 - }, 926 - "peerDependencies": { 927 - "@opentelemetry/api": "^1.0.0", 928 - "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0", 929 - "svelte": "^4.0.0 || ^5.0.0-next.0", 930 - "typescript": "^5.3.3", 931 - "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0" 932 - }, 933 - "peerDependenciesMeta": { 934 - "@opentelemetry/api": { 935 - "optional": true 936 - }, 937 - "typescript": { 938 - "optional": true 939 - } 940 - } 941 - }, 942 - "node_modules/@sveltejs/vite-plugin-svelte": { 943 - "version": "6.2.4", 944 - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.4.tgz", 945 - "integrity": "sha512-ou/d51QSdTyN26D7h6dSpusAKaZkAiGM55/AKYi+9AGZw7q85hElbjK3kEyzXHhLSnRISHOYzVge6x0jRZ7DXA==", 946 - "dev": true, 947 - "license": "MIT", 948 - "dependencies": { 949 - "@sveltejs/vite-plugin-svelte-inspector": "^5.0.0", 950 - "deepmerge": "^4.3.1", 951 - "magic-string": "^0.30.21", 952 - "obug": "^2.1.0", 953 - "vitefu": "^1.1.1" 954 - }, 955 - "engines": { 956 - "node": "^20.19 || ^22.12 || >=24" 957 - }, 958 - "peerDependencies": { 959 - "svelte": "^5.0.0", 960 - "vite": "^6.3.0 || ^7.0.0" 961 - } 962 - }, 963 - "node_modules/@sveltejs/vite-plugin-svelte-inspector": { 964 - "version": "5.0.2", 965 - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-5.0.2.tgz", 966 - "integrity": "sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==", 967 - "dev": true, 968 - "license": "MIT", 969 - "dependencies": { 970 - "obug": "^2.1.0" 971 - }, 972 - "engines": { 973 - "node": "^20.19 || ^22.12 || >=24" 974 - }, 975 - "peerDependencies": { 976 - "@sveltejs/vite-plugin-svelte": "^6.0.0-next.0", 977 - "svelte": "^5.0.0", 978 - "vite": "^6.3.0 || ^7.0.0" 979 - } 980 - }, 981 - "node_modules/@tailwindcss/forms": { 982 - "version": "0.5.11", 983 - "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.11.tgz", 984 - "integrity": "sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA==", 985 - "dev": true, 986 - "license": "MIT", 987 - "dependencies": { 988 - "mini-svg-data-uri": "^1.2.3" 989 - }, 990 - "peerDependencies": { 991 - "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" 992 - } 993 - }, 994 - "node_modules/@tailwindcss/node": { 995 - "version": "4.1.18", 996 - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", 997 - "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", 998 - "dev": true, 999 - "license": "MIT", 1000 - "dependencies": { 1001 - "@jridgewell/remapping": "^2.3.4", 1002 - "enhanced-resolve": "^5.18.3", 1003 - "jiti": "^2.6.1", 1004 - "lightningcss": "1.30.2", 1005 - "magic-string": "^0.30.21", 1006 - "source-map-js": "^1.2.1", 1007 - "tailwindcss": "4.1.18" 1008 - } 1009 - }, 1010 - "node_modules/@tailwindcss/oxide": { 1011 - "version": "4.1.18", 1012 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", 1013 - "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", 1014 - "dev": true, 1015 - "license": "MIT", 1016 - "engines": { 1017 - "node": ">= 10" 1018 - }, 1019 - "optionalDependencies": { 1020 - "@tailwindcss/oxide-android-arm64": "4.1.18", 1021 - "@tailwindcss/oxide-darwin-arm64": "4.1.18", 1022 - "@tailwindcss/oxide-darwin-x64": "4.1.18", 1023 - "@tailwindcss/oxide-freebsd-x64": "4.1.18", 1024 - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", 1025 - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", 1026 - "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", 1027 - "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", 1028 - "@tailwindcss/oxide-linux-x64-musl": "4.1.18", 1029 - "@tailwindcss/oxide-wasm32-wasi": "4.1.18", 1030 - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", 1031 - "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" 1032 - } 1033 - }, 1034 - "node_modules/@tailwindcss/oxide-android-arm64": { 1035 - "version": "4.1.18", 1036 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", 1037 - "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", 1038 - "cpu": [ 1039 - "arm64" 1040 - ], 1041 - "dev": true, 1042 - "license": "MIT", 1043 - "optional": true, 1044 - "os": [ 1045 - "android" 1046 - ], 1047 - "engines": { 1048 - "node": ">= 10" 1049 - } 1050 - }, 1051 - "node_modules/@tailwindcss/oxide-darwin-arm64": { 1052 - "version": "4.1.18", 1053 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", 1054 - "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", 1055 - "cpu": [ 1056 - "arm64" 1057 - ], 1058 - "dev": true, 1059 - "license": "MIT", 1060 - "optional": true, 1061 - "os": [ 1062 - "darwin" 1063 - ], 1064 - "engines": { 1065 - "node": ">= 10" 1066 - } 1067 - }, 1068 - "node_modules/@tailwindcss/oxide-darwin-x64": { 1069 - "version": "4.1.18", 1070 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", 1071 - "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", 1072 - "cpu": [ 1073 - "x64" 1074 - ], 1075 - "dev": true, 1076 - "license": "MIT", 1077 - "optional": true, 1078 - "os": [ 1079 - "darwin" 1080 - ], 1081 - "engines": { 1082 - "node": ">= 10" 1083 - } 1084 - }, 1085 - "node_modules/@tailwindcss/oxide-freebsd-x64": { 1086 - "version": "4.1.18", 1087 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", 1088 - "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", 1089 - "cpu": [ 1090 - "x64" 1091 - ], 1092 - "dev": true, 1093 - "license": "MIT", 1094 - "optional": true, 1095 - "os": [ 1096 - "freebsd" 1097 - ], 1098 - "engines": { 1099 - "node": ">= 10" 1100 - } 1101 - }, 1102 - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { 1103 - "version": "4.1.18", 1104 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", 1105 - "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", 1106 - "cpu": [ 1107 - "arm" 1108 - ], 1109 - "dev": true, 1110 - "license": "MIT", 1111 - "optional": true, 1112 - "os": [ 1113 - "linux" 1114 - ], 1115 - "engines": { 1116 - "node": ">= 10" 1117 - } 1118 - }, 1119 - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { 1120 - "version": "4.1.18", 1121 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", 1122 - "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", 1123 - "cpu": [ 1124 - "arm64" 1125 - ], 1126 - "dev": true, 1127 - "license": "MIT", 1128 - "optional": true, 1129 - "os": [ 1130 - "linux" 1131 - ], 1132 - "engines": { 1133 - "node": ">= 10" 1134 - } 1135 - }, 1136 - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { 1137 - "version": "4.1.18", 1138 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", 1139 - "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", 1140 - "cpu": [ 1141 - "arm64" 1142 - ], 1143 - "dev": true, 1144 - "license": "MIT", 1145 - "optional": true, 1146 - "os": [ 1147 - "linux" 1148 - ], 1149 - "engines": { 1150 - "node": ">= 10" 1151 - } 1152 - }, 1153 - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { 1154 - "version": "4.1.18", 1155 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", 1156 - "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", 1157 - "cpu": [ 1158 - "x64" 1159 - ], 1160 - "dev": true, 1161 - "license": "MIT", 1162 - "optional": true, 1163 - "os": [ 1164 - "linux" 1165 - ], 1166 - "engines": { 1167 - "node": ">= 10" 1168 - } 1169 - }, 1170 - "node_modules/@tailwindcss/oxide-linux-x64-musl": { 1171 - "version": "4.1.18", 1172 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", 1173 - "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", 1174 - "cpu": [ 1175 - "x64" 1176 - ], 1177 - "dev": true, 1178 - "license": "MIT", 1179 - "optional": true, 1180 - "os": [ 1181 - "linux" 1182 - ], 1183 - "engines": { 1184 - "node": ">= 10" 1185 - } 1186 - }, 1187 - "node_modules/@tailwindcss/oxide-wasm32-wasi": { 1188 - "version": "4.1.18", 1189 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", 1190 - "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", 1191 - "bundleDependencies": [ 1192 - "@napi-rs/wasm-runtime", 1193 - "@emnapi/core", 1194 - "@emnapi/runtime", 1195 - "@tybys/wasm-util", 1196 - "@emnapi/wasi-threads", 1197 - "tslib" 1198 - ], 1199 - "cpu": [ 1200 - "wasm32" 1201 - ], 1202 - "dev": true, 1203 - "license": "MIT", 1204 - "optional": true, 1205 - "dependencies": { 1206 - "@emnapi/core": "^1.7.1", 1207 - "@emnapi/runtime": "^1.7.1", 1208 - "@emnapi/wasi-threads": "^1.1.0", 1209 - "@napi-rs/wasm-runtime": "^1.1.0", 1210 - "@tybys/wasm-util": "^0.10.1", 1211 - "tslib": "^2.4.0" 1212 - }, 1213 - "engines": { 1214 - "node": ">=14.0.0" 1215 - } 1216 - }, 1217 - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { 1218 - "version": "4.1.18", 1219 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", 1220 - "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", 1221 - "cpu": [ 1222 - "arm64" 1223 - ], 1224 - "dev": true, 1225 - "license": "MIT", 1226 - "optional": true, 1227 - "os": [ 1228 - "win32" 1229 - ], 1230 - "engines": { 1231 - "node": ">= 10" 1232 - } 1233 - }, 1234 - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { 1235 - "version": "4.1.18", 1236 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", 1237 - "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", 1238 - "cpu": [ 1239 - "x64" 1240 - ], 1241 - "dev": true, 1242 - "license": "MIT", 1243 - "optional": true, 1244 - "os": [ 1245 - "win32" 1246 - ], 1247 - "engines": { 1248 - "node": ">= 10" 1249 - } 1250 - }, 1251 - "node_modules/@tailwindcss/vite": { 1252 - "version": "4.1.18", 1253 - "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.18.tgz", 1254 - "integrity": "sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==", 1255 - "dev": true, 1256 - "license": "MIT", 1257 - "dependencies": { 1258 - "@tailwindcss/node": "4.1.18", 1259 - "@tailwindcss/oxide": "4.1.18", 1260 - "tailwindcss": "4.1.18" 1261 - }, 1262 - "peerDependencies": { 1263 - "vite": "^5.2.0 || ^6 || ^7" 1264 - } 1265 - }, 1266 - "node_modules/@types/cookie": { 1267 - "version": "0.6.0", 1268 - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", 1269 - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", 1270 - "dev": true, 1271 - "license": "MIT" 1272 - }, 1273 - "node_modules/@types/estree": { 1274 - "version": "1.0.8", 1275 - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", 1276 - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", 1277 - "dev": true, 1278 - "license": "MIT" 1279 - }, 1280 - "node_modules/acorn": { 1281 - "version": "8.15.0", 1282 - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", 1283 - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", 1284 - "dev": true, 1285 - "license": "MIT", 1286 - "bin": { 1287 - "acorn": "bin/acorn" 1288 - }, 1289 - "engines": { 1290 - "node": ">=0.4.0" 1291 - } 1292 - }, 1293 - "node_modules/aria-query": { 1294 - "version": "5.3.2", 1295 - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", 1296 - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", 1297 - "dev": true, 1298 - "license": "Apache-2.0", 1299 - "engines": { 1300 - "node": ">= 0.4" 1301 - } 1302 - }, 1303 - "node_modules/axobject-query": { 1304 - "version": "4.1.0", 1305 - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", 1306 - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", 1307 - "dev": true, 1308 - "license": "Apache-2.0", 1309 - "engines": { 1310 - "node": ">= 0.4" 1311 - } 1312 - }, 1313 - "node_modules/chokidar": { 1314 - "version": "4.0.3", 1315 - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", 1316 - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", 1317 - "dev": true, 1318 - "license": "MIT", 1319 - "dependencies": { 1320 - "readdirp": "^4.0.1" 1321 - }, 1322 - "engines": { 1323 - "node": ">= 14.16.0" 1324 - }, 1325 - "funding": { 1326 - "url": "https://paulmillr.com/funding/" 1327 - } 1328 - }, 1329 - "node_modules/clsx": { 1330 - "version": "2.1.1", 1331 - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", 1332 - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", 1333 - "dev": true, 1334 - "license": "MIT", 1335 - "engines": { 1336 - "node": ">=6" 1337 - } 1338 - }, 1339 - "node_modules/cookie": { 1340 - "version": "0.6.0", 1341 - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", 1342 - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", 1343 - "dev": true, 1344 - "license": "MIT", 1345 - "engines": { 1346 - "node": ">= 0.6" 1347 - } 1348 - }, 1349 - "node_modules/deepmerge": { 1350 - "version": "4.3.1", 1351 - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 1352 - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 1353 - "dev": true, 1354 - "license": "MIT", 1355 - "engines": { 1356 - "node": ">=0.10.0" 1357 - } 1358 - }, 1359 - "node_modules/detect-libc": { 1360 - "version": "2.1.2", 1361 - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", 1362 - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", 1363 - "dev": true, 1364 - "license": "Apache-2.0", 1365 - "engines": { 1366 - "node": ">=8" 1367 - } 1368 - }, 1369 - "node_modules/devalue": { 1370 - "version": "5.6.2", 1371 - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", 1372 - "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", 1373 - "dev": true, 1374 - "license": "MIT" 1375 - }, 1376 - "node_modules/enhanced-resolve": { 1377 - "version": "5.18.4", 1378 - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", 1379 - "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", 1380 - "dev": true, 1381 - "license": "MIT", 1382 - "dependencies": { 1383 - "graceful-fs": "^4.2.4", 1384 - "tapable": "^2.2.0" 1385 - }, 1386 - "engines": { 1387 - "node": ">=10.13.0" 1388 - } 1389 - }, 1390 - "node_modules/esbuild": { 1391 - "version": "0.27.2", 1392 - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", 1393 - "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", 1394 - "dev": true, 1395 - "hasInstallScript": true, 1396 - "license": "MIT", 1397 - "bin": { 1398 - "esbuild": "bin/esbuild" 1399 - }, 1400 - "engines": { 1401 - "node": ">=18" 1402 - }, 1403 - "optionalDependencies": { 1404 - "@esbuild/aix-ppc64": "0.27.2", 1405 - "@esbuild/android-arm": "0.27.2", 1406 - "@esbuild/android-arm64": "0.27.2", 1407 - "@esbuild/android-x64": "0.27.2", 1408 - "@esbuild/darwin-arm64": "0.27.2", 1409 - "@esbuild/darwin-x64": "0.27.2", 1410 - "@esbuild/freebsd-arm64": "0.27.2", 1411 - "@esbuild/freebsd-x64": "0.27.2", 1412 - "@esbuild/linux-arm": "0.27.2", 1413 - "@esbuild/linux-arm64": "0.27.2", 1414 - "@esbuild/linux-ia32": "0.27.2", 1415 - "@esbuild/linux-loong64": "0.27.2", 1416 - "@esbuild/linux-mips64el": "0.27.2", 1417 - "@esbuild/linux-ppc64": "0.27.2", 1418 - "@esbuild/linux-riscv64": "0.27.2", 1419 - "@esbuild/linux-s390x": "0.27.2", 1420 - "@esbuild/linux-x64": "0.27.2", 1421 - "@esbuild/netbsd-arm64": "0.27.2", 1422 - "@esbuild/netbsd-x64": "0.27.2", 1423 - "@esbuild/openbsd-arm64": "0.27.2", 1424 - "@esbuild/openbsd-x64": "0.27.2", 1425 - "@esbuild/openharmony-arm64": "0.27.2", 1426 - "@esbuild/sunos-x64": "0.27.2", 1427 - "@esbuild/win32-arm64": "0.27.2", 1428 - "@esbuild/win32-ia32": "0.27.2", 1429 - "@esbuild/win32-x64": "0.27.2" 1430 - } 1431 - }, 1432 - "node_modules/esm-env": { 1433 - "version": "1.2.2", 1434 - "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", 1435 - "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", 1436 - "dev": true, 1437 - "license": "MIT" 1438 - }, 1439 - "node_modules/esrap": { 1440 - "version": "2.2.2", 1441 - "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.2.tgz", 1442 - "integrity": "sha512-zA6497ha+qKvoWIK+WM9NAh5ni17sKZKhbS5B3PoYbBvaYHZWoS33zmFybmyqpn07RLUxSmn+RCls2/XF+d0oQ==", 1443 - "dev": true, 1444 - "license": "MIT", 1445 - "dependencies": { 1446 - "@jridgewell/sourcemap-codec": "^1.4.15" 1447 - } 1448 - }, 1449 - "node_modules/fdir": { 1450 - "version": "6.5.0", 1451 - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", 1452 - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", 1453 - "dev": true, 1454 - "license": "MIT", 1455 - "engines": { 1456 - "node": ">=12.0.0" 1457 - }, 1458 - "peerDependencies": { 1459 - "picomatch": "^3 || ^4" 1460 - }, 1461 - "peerDependenciesMeta": { 1462 - "picomatch": { 1463 - "optional": true 1464 - } 1465 - } 1466 - }, 1467 - "node_modules/fsevents": { 1468 - "version": "2.3.3", 1469 - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1470 - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1471 - "dev": true, 1472 - "hasInstallScript": true, 1473 - "license": "MIT", 1474 - "optional": true, 1475 - "os": [ 1476 - "darwin" 1477 - ], 1478 - "engines": { 1479 - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1480 - } 1481 - }, 1482 - "node_modules/graceful-fs": { 1483 - "version": "4.2.11", 1484 - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1485 - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1486 - "dev": true, 1487 - "license": "ISC" 1488 - }, 1489 - "node_modules/is-reference": { 1490 - "version": "3.0.3", 1491 - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", 1492 - "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", 1493 - "dev": true, 1494 - "license": "MIT", 1495 - "dependencies": { 1496 - "@types/estree": "^1.0.6" 1497 - } 1498 - }, 1499 - "node_modules/jiti": { 1500 - "version": "2.6.1", 1501 - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", 1502 - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", 1503 - "dev": true, 1504 - "license": "MIT", 1505 - "bin": { 1506 - "jiti": "lib/jiti-cli.mjs" 1507 - } 1508 - }, 1509 - "node_modules/kleur": { 1510 - "version": "4.1.5", 1511 - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 1512 - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 1513 - "dev": true, 1514 - "license": "MIT", 1515 - "engines": { 1516 - "node": ">=6" 1517 - } 1518 - }, 1519 - "node_modules/lightningcss": { 1520 - "version": "1.30.2", 1521 - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", 1522 - "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", 1523 - "dev": true, 1524 - "license": "MPL-2.0", 1525 - "dependencies": { 1526 - "detect-libc": "^2.0.3" 1527 - }, 1528 - "engines": { 1529 - "node": ">= 12.0.0" 1530 - }, 1531 - "funding": { 1532 - "type": "opencollective", 1533 - "url": "https://opencollective.com/parcel" 1534 - }, 1535 - "optionalDependencies": { 1536 - "lightningcss-android-arm64": "1.30.2", 1537 - "lightningcss-darwin-arm64": "1.30.2", 1538 - "lightningcss-darwin-x64": "1.30.2", 1539 - "lightningcss-freebsd-x64": "1.30.2", 1540 - "lightningcss-linux-arm-gnueabihf": "1.30.2", 1541 - "lightningcss-linux-arm64-gnu": "1.30.2", 1542 - "lightningcss-linux-arm64-musl": "1.30.2", 1543 - "lightningcss-linux-x64-gnu": "1.30.2", 1544 - "lightningcss-linux-x64-musl": "1.30.2", 1545 - "lightningcss-win32-arm64-msvc": "1.30.2", 1546 - "lightningcss-win32-x64-msvc": "1.30.2" 1547 - } 1548 - }, 1549 - "node_modules/lightningcss-android-arm64": { 1550 - "version": "1.30.2", 1551 - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", 1552 - "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", 1553 - "cpu": [ 1554 - "arm64" 1555 - ], 1556 - "dev": true, 1557 - "license": "MPL-2.0", 1558 - "optional": true, 1559 - "os": [ 1560 - "android" 1561 - ], 1562 - "engines": { 1563 - "node": ">= 12.0.0" 1564 - }, 1565 - "funding": { 1566 - "type": "opencollective", 1567 - "url": "https://opencollective.com/parcel" 1568 - } 1569 - }, 1570 - "node_modules/lightningcss-darwin-arm64": { 1571 - "version": "1.30.2", 1572 - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", 1573 - "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", 1574 - "cpu": [ 1575 - "arm64" 1576 - ], 1577 - "dev": true, 1578 - "license": "MPL-2.0", 1579 - "optional": true, 1580 - "os": [ 1581 - "darwin" 1582 - ], 1583 - "engines": { 1584 - "node": ">= 12.0.0" 1585 - }, 1586 - "funding": { 1587 - "type": "opencollective", 1588 - "url": "https://opencollective.com/parcel" 1589 - } 1590 - }, 1591 - "node_modules/lightningcss-darwin-x64": { 1592 - "version": "1.30.2", 1593 - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", 1594 - "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", 1595 - "cpu": [ 1596 - "x64" 1597 - ], 1598 - "dev": true, 1599 - "license": "MPL-2.0", 1600 - "optional": true, 1601 - "os": [ 1602 - "darwin" 1603 - ], 1604 - "engines": { 1605 - "node": ">= 12.0.0" 1606 - }, 1607 - "funding": { 1608 - "type": "opencollective", 1609 - "url": "https://opencollective.com/parcel" 1610 - } 1611 - }, 1612 - "node_modules/lightningcss-freebsd-x64": { 1613 - "version": "1.30.2", 1614 - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", 1615 - "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", 1616 - "cpu": [ 1617 - "x64" 1618 - ], 1619 - "dev": true, 1620 - "license": "MPL-2.0", 1621 - "optional": true, 1622 - "os": [ 1623 - "freebsd" 1624 - ], 1625 - "engines": { 1626 - "node": ">= 12.0.0" 1627 - }, 1628 - "funding": { 1629 - "type": "opencollective", 1630 - "url": "https://opencollective.com/parcel" 1631 - } 1632 - }, 1633 - "node_modules/lightningcss-linux-arm-gnueabihf": { 1634 - "version": "1.30.2", 1635 - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", 1636 - "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", 1637 - "cpu": [ 1638 - "arm" 1639 - ], 1640 - "dev": true, 1641 - "license": "MPL-2.0", 1642 - "optional": true, 1643 - "os": [ 1644 - "linux" 1645 - ], 1646 - "engines": { 1647 - "node": ">= 12.0.0" 1648 - }, 1649 - "funding": { 1650 - "type": "opencollective", 1651 - "url": "https://opencollective.com/parcel" 1652 - } 1653 - }, 1654 - "node_modules/lightningcss-linux-arm64-gnu": { 1655 - "version": "1.30.2", 1656 - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", 1657 - "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", 1658 - "cpu": [ 1659 - "arm64" 1660 - ], 1661 - "dev": true, 1662 - "license": "MPL-2.0", 1663 - "optional": true, 1664 - "os": [ 1665 - "linux" 1666 - ], 1667 - "engines": { 1668 - "node": ">= 12.0.0" 1669 - }, 1670 - "funding": { 1671 - "type": "opencollective", 1672 - "url": "https://opencollective.com/parcel" 1673 - } 1674 - }, 1675 - "node_modules/lightningcss-linux-arm64-musl": { 1676 - "version": "1.30.2", 1677 - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", 1678 - "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", 1679 - "cpu": [ 1680 - "arm64" 1681 - ], 1682 - "dev": true, 1683 - "license": "MPL-2.0", 1684 - "optional": true, 1685 - "os": [ 1686 - "linux" 1687 - ], 1688 - "engines": { 1689 - "node": ">= 12.0.0" 1690 - }, 1691 - "funding": { 1692 - "type": "opencollective", 1693 - "url": "https://opencollective.com/parcel" 1694 - } 1695 - }, 1696 - "node_modules/lightningcss-linux-x64-gnu": { 1697 - "version": "1.30.2", 1698 - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", 1699 - "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", 1700 - "cpu": [ 1701 - "x64" 1702 - ], 1703 - "dev": true, 1704 - "license": "MPL-2.0", 1705 - "optional": true, 1706 - "os": [ 1707 - "linux" 1708 - ], 1709 - "engines": { 1710 - "node": ">= 12.0.0" 1711 - }, 1712 - "funding": { 1713 - "type": "opencollective", 1714 - "url": "https://opencollective.com/parcel" 1715 - } 1716 - }, 1717 - "node_modules/lightningcss-linux-x64-musl": { 1718 - "version": "1.30.2", 1719 - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", 1720 - "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", 1721 - "cpu": [ 1722 - "x64" 1723 - ], 1724 - "dev": true, 1725 - "license": "MPL-2.0", 1726 - "optional": true, 1727 - "os": [ 1728 - "linux" 1729 - ], 1730 - "engines": { 1731 - "node": ">= 12.0.0" 1732 - }, 1733 - "funding": { 1734 - "type": "opencollective", 1735 - "url": "https://opencollective.com/parcel" 1736 - } 1737 - }, 1738 - "node_modules/lightningcss-win32-arm64-msvc": { 1739 - "version": "1.30.2", 1740 - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", 1741 - "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", 1742 - "cpu": [ 1743 - "arm64" 1744 - ], 1745 - "dev": true, 1746 - "license": "MPL-2.0", 1747 - "optional": true, 1748 - "os": [ 1749 - "win32" 1750 - ], 1751 - "engines": { 1752 - "node": ">= 12.0.0" 1753 - }, 1754 - "funding": { 1755 - "type": "opencollective", 1756 - "url": "https://opencollective.com/parcel" 1757 - } 1758 - }, 1759 - "node_modules/lightningcss-win32-x64-msvc": { 1760 - "version": "1.30.2", 1761 - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", 1762 - "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", 1763 - "cpu": [ 1764 - "x64" 1765 - ], 1766 - "dev": true, 1767 - "license": "MPL-2.0", 1768 - "optional": true, 1769 - "os": [ 1770 - "win32" 1771 - ], 1772 - "engines": { 1773 - "node": ">= 12.0.0" 1774 - }, 1775 - "funding": { 1776 - "type": "opencollective", 1777 - "url": "https://opencollective.com/parcel" 1778 - } 1779 - }, 1780 - "node_modules/locate-character": { 1781 - "version": "3.0.0", 1782 - "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", 1783 - "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", 1784 - "dev": true, 1785 - "license": "MIT" 1786 - }, 1787 - "node_modules/magic-string": { 1788 - "version": "0.30.21", 1789 - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", 1790 - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", 1791 - "dev": true, 1792 - "license": "MIT", 1793 - "dependencies": { 1794 - "@jridgewell/sourcemap-codec": "^1.5.5" 1795 - } 1796 - }, 1797 - "node_modules/mini-svg-data-uri": { 1798 - "version": "1.4.4", 1799 - "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", 1800 - "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", 1801 - "dev": true, 1802 - "license": "MIT", 1803 - "bin": { 1804 - "mini-svg-data-uri": "cli.js" 1805 - } 1806 - }, 1807 - "node_modules/mri": { 1808 - "version": "1.2.0", 1809 - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 1810 - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 1811 - "dev": true, 1812 - "license": "MIT", 1813 - "engines": { 1814 - "node": ">=4" 1815 - } 1816 - }, 1817 - "node_modules/mrmime": { 1818 - "version": "2.0.1", 1819 - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", 1820 - "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", 1821 - "dev": true, 1822 - "license": "MIT", 1823 - "engines": { 1824 - "node": ">=10" 1825 - } 1826 - }, 1827 - "node_modules/nanoid": { 1828 - "version": "3.3.11", 1829 - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 1830 - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 1831 - "dev": true, 1832 - "funding": [ 1833 - { 1834 - "type": "github", 1835 - "url": "https://github.com/sponsors/ai" 1836 - } 1837 - ], 1838 - "license": "MIT", 1839 - "bin": { 1840 - "nanoid": "bin/nanoid.cjs" 1841 - }, 1842 - "engines": { 1843 - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1844 - } 1845 - }, 1846 - "node_modules/obug": { 1847 - "version": "2.1.1", 1848 - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", 1849 - "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", 1850 - "dev": true, 1851 - "funding": [ 1852 - "https://github.com/sponsors/sxzz", 1853 - "https://opencollective.com/debug" 1854 - ], 1855 - "license": "MIT" 1856 - }, 1857 - "node_modules/picocolors": { 1858 - "version": "1.1.1", 1859 - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1860 - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1861 - "dev": true, 1862 - "license": "ISC" 1863 - }, 1864 - "node_modules/picomatch": { 1865 - "version": "4.0.3", 1866 - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", 1867 - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", 1868 - "dev": true, 1869 - "license": "MIT", 1870 - "engines": { 1871 - "node": ">=12" 1872 - }, 1873 - "funding": { 1874 - "url": "https://github.com/sponsors/jonschlinkert" 1875 - } 1876 - }, 1877 - "node_modules/postcss": { 1878 - "version": "8.5.6", 1879 - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", 1880 - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", 1881 - "dev": true, 1882 - "funding": [ 1883 - { 1884 - "type": "opencollective", 1885 - "url": "https://opencollective.com/postcss/" 1886 - }, 1887 - { 1888 - "type": "tidelift", 1889 - "url": "https://tidelift.com/funding/github/npm/postcss" 1890 - }, 1891 - { 1892 - "type": "github", 1893 - "url": "https://github.com/sponsors/ai" 1894 - } 1895 - ], 1896 - "license": "MIT", 1897 - "dependencies": { 1898 - "nanoid": "^3.3.11", 1899 - "picocolors": "^1.1.1", 1900 - "source-map-js": "^1.2.1" 1901 - }, 1902 - "engines": { 1903 - "node": "^10 || ^12 || >=14" 1904 - } 1905 - }, 1906 - "node_modules/readdirp": { 1907 - "version": "4.1.2", 1908 - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", 1909 - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", 1910 - "dev": true, 1911 - "license": "MIT", 1912 - "engines": { 1913 - "node": ">= 14.18.0" 1914 - }, 1915 - "funding": { 1916 - "type": "individual", 1917 - "url": "https://paulmillr.com/funding/" 1918 - } 1919 - }, 1920 - "node_modules/rollup": { 1921 - "version": "4.56.0", 1922 - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.56.0.tgz", 1923 - "integrity": "sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==", 1924 - "dev": true, 1925 - "license": "MIT", 1926 - "dependencies": { 1927 - "@types/estree": "1.0.8" 1928 - }, 1929 - "bin": { 1930 - "rollup": "dist/bin/rollup" 1931 - }, 1932 - "engines": { 1933 - "node": ">=18.0.0", 1934 - "npm": ">=8.0.0" 1935 - }, 1936 - "optionalDependencies": { 1937 - "@rollup/rollup-android-arm-eabi": "4.56.0", 1938 - "@rollup/rollup-android-arm64": "4.56.0", 1939 - "@rollup/rollup-darwin-arm64": "4.56.0", 1940 - "@rollup/rollup-darwin-x64": "4.56.0", 1941 - "@rollup/rollup-freebsd-arm64": "4.56.0", 1942 - "@rollup/rollup-freebsd-x64": "4.56.0", 1943 - "@rollup/rollup-linux-arm-gnueabihf": "4.56.0", 1944 - "@rollup/rollup-linux-arm-musleabihf": "4.56.0", 1945 - "@rollup/rollup-linux-arm64-gnu": "4.56.0", 1946 - "@rollup/rollup-linux-arm64-musl": "4.56.0", 1947 - "@rollup/rollup-linux-loong64-gnu": "4.56.0", 1948 - "@rollup/rollup-linux-loong64-musl": "4.56.0", 1949 - "@rollup/rollup-linux-ppc64-gnu": "4.56.0", 1950 - "@rollup/rollup-linux-ppc64-musl": "4.56.0", 1951 - "@rollup/rollup-linux-riscv64-gnu": "4.56.0", 1952 - "@rollup/rollup-linux-riscv64-musl": "4.56.0", 1953 - "@rollup/rollup-linux-s390x-gnu": "4.56.0", 1954 - "@rollup/rollup-linux-x64-gnu": "4.56.0", 1955 - "@rollup/rollup-linux-x64-musl": "4.56.0", 1956 - "@rollup/rollup-openbsd-x64": "4.56.0", 1957 - "@rollup/rollup-openharmony-arm64": "4.56.0", 1958 - "@rollup/rollup-win32-arm64-msvc": "4.56.0", 1959 - "@rollup/rollup-win32-ia32-msvc": "4.56.0", 1960 - "@rollup/rollup-win32-x64-gnu": "4.56.0", 1961 - "@rollup/rollup-win32-x64-msvc": "4.56.0", 1962 - "fsevents": "~2.3.2" 1963 - } 1964 - }, 1965 - "node_modules/sade": { 1966 - "version": "1.8.1", 1967 - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 1968 - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 1969 - "dev": true, 1970 - "license": "MIT", 1971 - "dependencies": { 1972 - "mri": "^1.1.0" 1973 - }, 1974 - "engines": { 1975 - "node": ">=6" 1976 - } 1977 - }, 1978 - "node_modules/set-cookie-parser": { 1979 - "version": "2.7.2", 1980 - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", 1981 - "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", 1982 - "dev": true, 1983 - "license": "MIT" 1984 - }, 1985 - "node_modules/sirv": { 1986 - "version": "3.0.2", 1987 - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", 1988 - "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", 1989 - "dev": true, 1990 - "license": "MIT", 1991 - "dependencies": { 1992 - "@polka/url": "^1.0.0-next.24", 1993 - "mrmime": "^2.0.0", 1994 - "totalist": "^3.0.0" 1995 - }, 1996 - "engines": { 1997 - "node": ">=18" 1998 - } 1999 - }, 2000 - "node_modules/source-map-js": { 2001 - "version": "1.2.1", 2002 - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 2003 - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 2004 - "dev": true, 2005 - "license": "BSD-3-Clause", 2006 - "engines": { 2007 - "node": ">=0.10.0" 2008 - } 2009 - }, 2010 - "node_modules/svelte": { 2011 - "version": "5.48.0", 2012 - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.48.0.tgz", 2013 - "integrity": "sha512-+NUe82VoFP1RQViZI/esojx70eazGF4u0O/9ucqZ4rPcOZD+n5EVp17uYsqwdzjUjZyTpGKunHbDziW6AIAVkQ==", 2014 - "dev": true, 2015 - "license": "MIT", 2016 - "dependencies": { 2017 - "@jridgewell/remapping": "^2.3.4", 2018 - "@jridgewell/sourcemap-codec": "^1.5.0", 2019 - "@sveltejs/acorn-typescript": "^1.0.5", 2020 - "@types/estree": "^1.0.5", 2021 - "acorn": "^8.12.1", 2022 - "aria-query": "^5.3.1", 2023 - "axobject-query": "^4.1.0", 2024 - "clsx": "^2.1.1", 2025 - "devalue": "^5.6.2", 2026 - "esm-env": "^1.2.1", 2027 - "esrap": "^2.2.1", 2028 - "is-reference": "^3.0.3", 2029 - "locate-character": "^3.0.0", 2030 - "magic-string": "^0.30.11", 2031 - "zimmerframe": "^1.1.2" 2032 - }, 2033 - "engines": { 2034 - "node": ">=18" 2035 - } 2036 - }, 2037 - "node_modules/svelte-check": { 2038 - "version": "4.3.5", 2039 - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.3.5.tgz", 2040 - "integrity": "sha512-e4VWZETyXaKGhpkxOXP+B/d0Fp/zKViZoJmneZWe/05Y2aqSKj3YN2nLfYPJBQ87WEiY4BQCQ9hWGu9mPT1a1Q==", 2041 - "dev": true, 2042 - "license": "MIT", 2043 - "dependencies": { 2044 - "@jridgewell/trace-mapping": "^0.3.25", 2045 - "chokidar": "^4.0.1", 2046 - "fdir": "^6.2.0", 2047 - "picocolors": "^1.0.0", 2048 - "sade": "^1.7.4" 2049 - }, 2050 - "bin": { 2051 - "svelte-check": "bin/svelte-check" 2052 - }, 2053 - "engines": { 2054 - "node": ">= 18.0.0" 2055 - }, 2056 - "peerDependencies": { 2057 - "svelte": "^4.0.0 || ^5.0.0-next.0", 2058 - "typescript": ">=5.0.0" 2059 - } 2060 - }, 2061 - "node_modules/tailwindcss": { 2062 - "version": "4.1.18", 2063 - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", 2064 - "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", 2065 - "dev": true, 2066 - "license": "MIT" 2067 - }, 2068 - "node_modules/tapable": { 2069 - "version": "2.3.0", 2070 - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", 2071 - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", 2072 - "dev": true, 2073 - "license": "MIT", 2074 - "engines": { 2075 - "node": ">=6" 2076 - }, 2077 - "funding": { 2078 - "type": "opencollective", 2079 - "url": "https://opencollective.com/webpack" 2080 - } 2081 - }, 2082 - "node_modules/tinyglobby": { 2083 - "version": "0.2.15", 2084 - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", 2085 - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", 2086 - "dev": true, 2087 - "license": "MIT", 2088 - "dependencies": { 2089 - "fdir": "^6.5.0", 2090 - "picomatch": "^4.0.3" 2091 - }, 2092 - "engines": { 2093 - "node": ">=12.0.0" 2094 - }, 2095 - "funding": { 2096 - "url": "https://github.com/sponsors/SuperchupuDev" 2097 - } 2098 - }, 2099 - "node_modules/totalist": { 2100 - "version": "3.0.1", 2101 - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", 2102 - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", 2103 - "dev": true, 2104 - "license": "MIT", 2105 - "engines": { 2106 - "node": ">=6" 2107 - } 2108 - }, 2109 - "node_modules/typescript": { 2110 - "version": "5.9.3", 2111 - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", 2112 - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", 2113 - "dev": true, 2114 - "license": "Apache-2.0", 2115 - "bin": { 2116 - "tsc": "bin/tsc", 2117 - "tsserver": "bin/tsserver" 2118 - }, 2119 - "engines": { 2120 - "node": ">=14.17" 2121 - } 2122 - }, 2123 - "node_modules/vite": { 2124 - "version": "7.3.1", 2125 - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", 2126 - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", 2127 - "dev": true, 2128 - "license": "MIT", 2129 - "dependencies": { 2130 - "esbuild": "^0.27.0", 2131 - "fdir": "^6.5.0", 2132 - "picomatch": "^4.0.3", 2133 - "postcss": "^8.5.6", 2134 - "rollup": "^4.43.0", 2135 - "tinyglobby": "^0.2.15" 2136 - }, 2137 - "bin": { 2138 - "vite": "bin/vite.js" 2139 - }, 2140 - "engines": { 2141 - "node": "^20.19.0 || >=22.12.0" 2142 - }, 2143 - "funding": { 2144 - "url": "https://github.com/vitejs/vite?sponsor=1" 2145 - }, 2146 - "optionalDependencies": { 2147 - "fsevents": "~2.3.3" 2148 - }, 2149 - "peerDependencies": { 2150 - "@types/node": "^20.19.0 || >=22.12.0", 2151 - "jiti": ">=1.21.0", 2152 - "less": "^4.0.0", 2153 - "lightningcss": "^1.21.0", 2154 - "sass": "^1.70.0", 2155 - "sass-embedded": "^1.70.0", 2156 - "stylus": ">=0.54.8", 2157 - "sugarss": "^5.0.0", 2158 - "terser": "^5.16.0", 2159 - "tsx": "^4.8.1", 2160 - "yaml": "^2.4.2" 2161 - }, 2162 - "peerDependenciesMeta": { 2163 - "@types/node": { 2164 - "optional": true 2165 - }, 2166 - "jiti": { 2167 - "optional": true 2168 - }, 2169 - "less": { 2170 - "optional": true 2171 - }, 2172 - "lightningcss": { 2173 - "optional": true 2174 - }, 2175 - "sass": { 2176 - "optional": true 2177 - }, 2178 - "sass-embedded": { 2179 - "optional": true 2180 - }, 2181 - "stylus": { 2182 - "optional": true 2183 - }, 2184 - "sugarss": { 2185 - "optional": true 2186 - }, 2187 - "terser": { 2188 - "optional": true 2189 - }, 2190 - "tsx": { 2191 - "optional": true 2192 - }, 2193 - "yaml": { 2194 - "optional": true 2195 - } 2196 - } 2197 - }, 2198 - "node_modules/vitefu": { 2199 - "version": "1.1.1", 2200 - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", 2201 - "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", 2202 - "dev": true, 2203 - "license": "MIT", 2204 - "workspaces": [ 2205 - "tests/deps/*", 2206 - "tests/projects/*", 2207 - "tests/projects/workspace/packages/*" 2208 - ], 2209 - "peerDependencies": { 2210 - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" 2211 - }, 2212 - "peerDependenciesMeta": { 2213 - "vite": { 2214 - "optional": true 2215 - } 2216 - } 2217 - }, 2218 - "node_modules/zimmerframe": { 2219 - "version": "1.1.4", 2220 - "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", 2221 - "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==", 2222 - "dev": true, 2223 - "license": "MIT" 2224 - } 2225 - } 2 + "name": "client", 3 + "version": "0.0.1", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "client", 9 + "version": "0.0.1", 10 + "dependencies": { 11 + "better-auth": "^1.4.17", 12 + "better-sqlite3": "^12.6.2", 13 + "heroicons": "^2.2.0", 14 + "ky": "^1.14.2", 15 + "valibot": "^1.2.0" 16 + }, 17 + "devDependencies": { 18 + "@sveltejs/adapter-auto": "^7.0.0", 19 + "@sveltejs/kit": "^2.49.1", 20 + "@sveltejs/vite-plugin-svelte": "^6.2.1", 21 + "@tailwindcss/forms": "^0.5.10", 22 + "@tailwindcss/vite": "^4.1.17", 23 + "@types/better-sqlite3": "^7.6.13", 24 + "svelte": "^5.45.6", 25 + "svelte-check": "^4.3.4", 26 + "tailwindcss": "^4.1.17", 27 + "typescript": "^5.9.3", 28 + "vite": "^7.2.6" 29 + } 30 + }, 31 + "node_modules/@better-auth/core": { 32 + "version": "1.4.17", 33 + "resolved": "https://registry.npmjs.org/@better-auth/core/-/core-1.4.17.tgz", 34 + "integrity": "sha512-WSaEQDdUO6B1CzAmissN6j0lx9fM9lcslEYzlApB5UzFaBeAOHNUONTdglSyUs6/idiZBoRvt0t/qMXCgIU8ug==", 35 + "dependencies": { 36 + "@standard-schema/spec": "^1.0.0", 37 + "zod": "^4.3.5" 38 + }, 39 + "peerDependencies": { 40 + "@better-auth/utils": "0.3.0", 41 + "@better-fetch/fetch": "1.1.21", 42 + "better-call": "1.1.8", 43 + "jose": "^6.1.0", 44 + "kysely": "^0.28.5", 45 + "nanostores": "^1.0.1" 46 + } 47 + }, 48 + "node_modules/@better-auth/telemetry": { 49 + "version": "1.4.17", 50 + "resolved": "https://registry.npmjs.org/@better-auth/telemetry/-/telemetry-1.4.17.tgz", 51 + "integrity": "sha512-R1BC4e/bNjQbXu7lG6ubpgmsPj7IMqky5DvMlzAtnAJWJhh99pMh/n6w5gOHa0cqDZgEAuj75IPTxv+q3YiInA==", 52 + "dependencies": { 53 + "@better-auth/utils": "0.3.0", 54 + "@better-fetch/fetch": "1.1.21" 55 + }, 56 + "peerDependencies": { 57 + "@better-auth/core": "1.4.17" 58 + } 59 + }, 60 + "node_modules/@better-auth/utils": { 61 + "version": "0.3.0", 62 + "resolved": "https://registry.npmjs.org/@better-auth/utils/-/utils-0.3.0.tgz", 63 + "integrity": "sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw==", 64 + "license": "MIT" 65 + }, 66 + "node_modules/@better-fetch/fetch": { 67 + "version": "1.1.21", 68 + "resolved": "https://registry.npmjs.org/@better-fetch/fetch/-/fetch-1.1.21.tgz", 69 + "integrity": "sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A==" 70 + }, 71 + "node_modules/@esbuild/aix-ppc64": { 72 + "version": "0.27.2", 73 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", 74 + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", 75 + "cpu": [ 76 + "ppc64" 77 + ], 78 + "dev": true, 79 + "license": "MIT", 80 + "optional": true, 81 + "os": [ 82 + "aix" 83 + ], 84 + "engines": { 85 + "node": ">=18" 86 + } 87 + }, 88 + "node_modules/@esbuild/android-arm": { 89 + "version": "0.27.2", 90 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", 91 + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", 92 + "cpu": [ 93 + "arm" 94 + ], 95 + "dev": true, 96 + "license": "MIT", 97 + "optional": true, 98 + "os": [ 99 + "android" 100 + ], 101 + "engines": { 102 + "node": ">=18" 103 + } 104 + }, 105 + "node_modules/@esbuild/android-arm64": { 106 + "version": "0.27.2", 107 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", 108 + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", 109 + "cpu": [ 110 + "arm64" 111 + ], 112 + "dev": true, 113 + "license": "MIT", 114 + "optional": true, 115 + "os": [ 116 + "android" 117 + ], 118 + "engines": { 119 + "node": ">=18" 120 + } 121 + }, 122 + "node_modules/@esbuild/android-x64": { 123 + "version": "0.27.2", 124 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", 125 + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", 126 + "cpu": [ 127 + "x64" 128 + ], 129 + "dev": true, 130 + "license": "MIT", 131 + "optional": true, 132 + "os": [ 133 + "android" 134 + ], 135 + "engines": { 136 + "node": ">=18" 137 + } 138 + }, 139 + "node_modules/@esbuild/darwin-arm64": { 140 + "version": "0.27.2", 141 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", 142 + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", 143 + "cpu": [ 144 + "arm64" 145 + ], 146 + "dev": true, 147 + "license": "MIT", 148 + "optional": true, 149 + "os": [ 150 + "darwin" 151 + ], 152 + "engines": { 153 + "node": ">=18" 154 + } 155 + }, 156 + "node_modules/@esbuild/darwin-x64": { 157 + "version": "0.27.2", 158 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", 159 + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", 160 + "cpu": [ 161 + "x64" 162 + ], 163 + "dev": true, 164 + "license": "MIT", 165 + "optional": true, 166 + "os": [ 167 + "darwin" 168 + ], 169 + "engines": { 170 + "node": ">=18" 171 + } 172 + }, 173 + "node_modules/@esbuild/freebsd-arm64": { 174 + "version": "0.27.2", 175 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", 176 + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", 177 + "cpu": [ 178 + "arm64" 179 + ], 180 + "dev": true, 181 + "license": "MIT", 182 + "optional": true, 183 + "os": [ 184 + "freebsd" 185 + ], 186 + "engines": { 187 + "node": ">=18" 188 + } 189 + }, 190 + "node_modules/@esbuild/freebsd-x64": { 191 + "version": "0.27.2", 192 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", 193 + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", 194 + "cpu": [ 195 + "x64" 196 + ], 197 + "dev": true, 198 + "license": "MIT", 199 + "optional": true, 200 + "os": [ 201 + "freebsd" 202 + ], 203 + "engines": { 204 + "node": ">=18" 205 + } 206 + }, 207 + "node_modules/@esbuild/linux-arm": { 208 + "version": "0.27.2", 209 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", 210 + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", 211 + "cpu": [ 212 + "arm" 213 + ], 214 + "dev": true, 215 + "license": "MIT", 216 + "optional": true, 217 + "os": [ 218 + "linux" 219 + ], 220 + "engines": { 221 + "node": ">=18" 222 + } 223 + }, 224 + "node_modules/@esbuild/linux-arm64": { 225 + "version": "0.27.2", 226 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", 227 + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", 228 + "cpu": [ 229 + "arm64" 230 + ], 231 + "dev": true, 232 + "license": "MIT", 233 + "optional": true, 234 + "os": [ 235 + "linux" 236 + ], 237 + "engines": { 238 + "node": ">=18" 239 + } 240 + }, 241 + "node_modules/@esbuild/linux-ia32": { 242 + "version": "0.27.2", 243 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", 244 + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", 245 + "cpu": [ 246 + "ia32" 247 + ], 248 + "dev": true, 249 + "license": "MIT", 250 + "optional": true, 251 + "os": [ 252 + "linux" 253 + ], 254 + "engines": { 255 + "node": ">=18" 256 + } 257 + }, 258 + "node_modules/@esbuild/linux-loong64": { 259 + "version": "0.27.2", 260 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", 261 + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", 262 + "cpu": [ 263 + "loong64" 264 + ], 265 + "dev": true, 266 + "license": "MIT", 267 + "optional": true, 268 + "os": [ 269 + "linux" 270 + ], 271 + "engines": { 272 + "node": ">=18" 273 + } 274 + }, 275 + "node_modules/@esbuild/linux-mips64el": { 276 + "version": "0.27.2", 277 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", 278 + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", 279 + "cpu": [ 280 + "mips64el" 281 + ], 282 + "dev": true, 283 + "license": "MIT", 284 + "optional": true, 285 + "os": [ 286 + "linux" 287 + ], 288 + "engines": { 289 + "node": ">=18" 290 + } 291 + }, 292 + "node_modules/@esbuild/linux-ppc64": { 293 + "version": "0.27.2", 294 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", 295 + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", 296 + "cpu": [ 297 + "ppc64" 298 + ], 299 + "dev": true, 300 + "license": "MIT", 301 + "optional": true, 302 + "os": [ 303 + "linux" 304 + ], 305 + "engines": { 306 + "node": ">=18" 307 + } 308 + }, 309 + "node_modules/@esbuild/linux-riscv64": { 310 + "version": "0.27.2", 311 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", 312 + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", 313 + "cpu": [ 314 + "riscv64" 315 + ], 316 + "dev": true, 317 + "license": "MIT", 318 + "optional": true, 319 + "os": [ 320 + "linux" 321 + ], 322 + "engines": { 323 + "node": ">=18" 324 + } 325 + }, 326 + "node_modules/@esbuild/linux-s390x": { 327 + "version": "0.27.2", 328 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", 329 + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", 330 + "cpu": [ 331 + "s390x" 332 + ], 333 + "dev": true, 334 + "license": "MIT", 335 + "optional": true, 336 + "os": [ 337 + "linux" 338 + ], 339 + "engines": { 340 + "node": ">=18" 341 + } 342 + }, 343 + "node_modules/@esbuild/linux-x64": { 344 + "version": "0.27.2", 345 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", 346 + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", 347 + "cpu": [ 348 + "x64" 349 + ], 350 + "dev": true, 351 + "license": "MIT", 352 + "optional": true, 353 + "os": [ 354 + "linux" 355 + ], 356 + "engines": { 357 + "node": ">=18" 358 + } 359 + }, 360 + "node_modules/@esbuild/netbsd-arm64": { 361 + "version": "0.27.2", 362 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", 363 + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", 364 + "cpu": [ 365 + "arm64" 366 + ], 367 + "dev": true, 368 + "license": "MIT", 369 + "optional": true, 370 + "os": [ 371 + "netbsd" 372 + ], 373 + "engines": { 374 + "node": ">=18" 375 + } 376 + }, 377 + "node_modules/@esbuild/netbsd-x64": { 378 + "version": "0.27.2", 379 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", 380 + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", 381 + "cpu": [ 382 + "x64" 383 + ], 384 + "dev": true, 385 + "license": "MIT", 386 + "optional": true, 387 + "os": [ 388 + "netbsd" 389 + ], 390 + "engines": { 391 + "node": ">=18" 392 + } 393 + }, 394 + "node_modules/@esbuild/openbsd-arm64": { 395 + "version": "0.27.2", 396 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", 397 + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", 398 + "cpu": [ 399 + "arm64" 400 + ], 401 + "dev": true, 402 + "license": "MIT", 403 + "optional": true, 404 + "os": [ 405 + "openbsd" 406 + ], 407 + "engines": { 408 + "node": ">=18" 409 + } 410 + }, 411 + "node_modules/@esbuild/openbsd-x64": { 412 + "version": "0.27.2", 413 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", 414 + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", 415 + "cpu": [ 416 + "x64" 417 + ], 418 + "dev": true, 419 + "license": "MIT", 420 + "optional": true, 421 + "os": [ 422 + "openbsd" 423 + ], 424 + "engines": { 425 + "node": ">=18" 426 + } 427 + }, 428 + "node_modules/@esbuild/openharmony-arm64": { 429 + "version": "0.27.2", 430 + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", 431 + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", 432 + "cpu": [ 433 + "arm64" 434 + ], 435 + "dev": true, 436 + "license": "MIT", 437 + "optional": true, 438 + "os": [ 439 + "openharmony" 440 + ], 441 + "engines": { 442 + "node": ">=18" 443 + } 444 + }, 445 + "node_modules/@esbuild/sunos-x64": { 446 + "version": "0.27.2", 447 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", 448 + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", 449 + "cpu": [ 450 + "x64" 451 + ], 452 + "dev": true, 453 + "license": "MIT", 454 + "optional": true, 455 + "os": [ 456 + "sunos" 457 + ], 458 + "engines": { 459 + "node": ">=18" 460 + } 461 + }, 462 + "node_modules/@esbuild/win32-arm64": { 463 + "version": "0.27.2", 464 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", 465 + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", 466 + "cpu": [ 467 + "arm64" 468 + ], 469 + "dev": true, 470 + "license": "MIT", 471 + "optional": true, 472 + "os": [ 473 + "win32" 474 + ], 475 + "engines": { 476 + "node": ">=18" 477 + } 478 + }, 479 + "node_modules/@esbuild/win32-ia32": { 480 + "version": "0.27.2", 481 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", 482 + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", 483 + "cpu": [ 484 + "ia32" 485 + ], 486 + "dev": true, 487 + "license": "MIT", 488 + "optional": true, 489 + "os": [ 490 + "win32" 491 + ], 492 + "engines": { 493 + "node": ">=18" 494 + } 495 + }, 496 + "node_modules/@esbuild/win32-x64": { 497 + "version": "0.27.2", 498 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", 499 + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", 500 + "cpu": [ 501 + "x64" 502 + ], 503 + "dev": true, 504 + "license": "MIT", 505 + "optional": true, 506 + "os": [ 507 + "win32" 508 + ], 509 + "engines": { 510 + "node": ">=18" 511 + } 512 + }, 513 + "node_modules/@jridgewell/gen-mapping": { 514 + "version": "0.3.13", 515 + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", 516 + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", 517 + "devOptional": true, 518 + "license": "MIT", 519 + "dependencies": { 520 + "@jridgewell/sourcemap-codec": "^1.5.0", 521 + "@jridgewell/trace-mapping": "^0.3.24" 522 + } 523 + }, 524 + "node_modules/@jridgewell/remapping": { 525 + "version": "2.3.5", 526 + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", 527 + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", 528 + "devOptional": true, 529 + "license": "MIT", 530 + "dependencies": { 531 + "@jridgewell/gen-mapping": "^0.3.5", 532 + "@jridgewell/trace-mapping": "^0.3.24" 533 + } 534 + }, 535 + "node_modules/@jridgewell/resolve-uri": { 536 + "version": "3.1.2", 537 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 538 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 539 + "devOptional": true, 540 + "license": "MIT", 541 + "engines": { 542 + "node": ">=6.0.0" 543 + } 544 + }, 545 + "node_modules/@jridgewell/sourcemap-codec": { 546 + "version": "1.5.5", 547 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", 548 + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", 549 + "devOptional": true, 550 + "license": "MIT" 551 + }, 552 + "node_modules/@jridgewell/trace-mapping": { 553 + "version": "0.3.31", 554 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", 555 + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", 556 + "devOptional": true, 557 + "license": "MIT", 558 + "dependencies": { 559 + "@jridgewell/resolve-uri": "^3.1.0", 560 + "@jridgewell/sourcemap-codec": "^1.4.14" 561 + } 562 + }, 563 + "node_modules/@noble/ciphers": { 564 + "version": "2.1.1", 565 + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-2.1.1.tgz", 566 + "integrity": "sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw==", 567 + "license": "MIT", 568 + "engines": { 569 + "node": ">= 20.19.0" 570 + }, 571 + "funding": { 572 + "url": "https://paulmillr.com/funding/" 573 + } 574 + }, 575 + "node_modules/@noble/hashes": { 576 + "version": "2.0.1", 577 + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", 578 + "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", 579 + "license": "MIT", 580 + "engines": { 581 + "node": ">= 20.19.0" 582 + }, 583 + "funding": { 584 + "url": "https://paulmillr.com/funding/" 585 + } 586 + }, 587 + "node_modules/@polka/url": { 588 + "version": "1.0.0-next.29", 589 + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", 590 + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", 591 + "devOptional": true, 592 + "license": "MIT" 593 + }, 594 + "node_modules/@rollup/rollup-android-arm-eabi": { 595 + "version": "4.56.0", 596 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz", 597 + "integrity": "sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==", 598 + "cpu": [ 599 + "arm" 600 + ], 601 + "dev": true, 602 + "license": "MIT", 603 + "optional": true, 604 + "os": [ 605 + "android" 606 + ] 607 + }, 608 + "node_modules/@rollup/rollup-android-arm64": { 609 + "version": "4.56.0", 610 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz", 611 + "integrity": "sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==", 612 + "cpu": [ 613 + "arm64" 614 + ], 615 + "dev": true, 616 + "license": "MIT", 617 + "optional": true, 618 + "os": [ 619 + "android" 620 + ] 621 + }, 622 + "node_modules/@rollup/rollup-darwin-arm64": { 623 + "version": "4.56.0", 624 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz", 625 + "integrity": "sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==", 626 + "cpu": [ 627 + "arm64" 628 + ], 629 + "dev": true, 630 + "license": "MIT", 631 + "optional": true, 632 + "os": [ 633 + "darwin" 634 + ] 635 + }, 636 + "node_modules/@rollup/rollup-darwin-x64": { 637 + "version": "4.56.0", 638 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz", 639 + "integrity": "sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==", 640 + "cpu": [ 641 + "x64" 642 + ], 643 + "dev": true, 644 + "license": "MIT", 645 + "optional": true, 646 + "os": [ 647 + "darwin" 648 + ] 649 + }, 650 + "node_modules/@rollup/rollup-freebsd-arm64": { 651 + "version": "4.56.0", 652 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz", 653 + "integrity": "sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==", 654 + "cpu": [ 655 + "arm64" 656 + ], 657 + "dev": true, 658 + "license": "MIT", 659 + "optional": true, 660 + "os": [ 661 + "freebsd" 662 + ] 663 + }, 664 + "node_modules/@rollup/rollup-freebsd-x64": { 665 + "version": "4.56.0", 666 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz", 667 + "integrity": "sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==", 668 + "cpu": [ 669 + "x64" 670 + ], 671 + "dev": true, 672 + "license": "MIT", 673 + "optional": true, 674 + "os": [ 675 + "freebsd" 676 + ] 677 + }, 678 + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 679 + "version": "4.56.0", 680 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz", 681 + "integrity": "sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==", 682 + "cpu": [ 683 + "arm" 684 + ], 685 + "dev": true, 686 + "license": "MIT", 687 + "optional": true, 688 + "os": [ 689 + "linux" 690 + ] 691 + }, 692 + "node_modules/@rollup/rollup-linux-arm-musleabihf": { 693 + "version": "4.56.0", 694 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz", 695 + "integrity": "sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==", 696 + "cpu": [ 697 + "arm" 698 + ], 699 + "dev": true, 700 + "license": "MIT", 701 + "optional": true, 702 + "os": [ 703 + "linux" 704 + ] 705 + }, 706 + "node_modules/@rollup/rollup-linux-arm64-gnu": { 707 + "version": "4.56.0", 708 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz", 709 + "integrity": "sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==", 710 + "cpu": [ 711 + "arm64" 712 + ], 713 + "dev": true, 714 + "license": "MIT", 715 + "optional": true, 716 + "os": [ 717 + "linux" 718 + ] 719 + }, 720 + "node_modules/@rollup/rollup-linux-arm64-musl": { 721 + "version": "4.56.0", 722 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz", 723 + "integrity": "sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==", 724 + "cpu": [ 725 + "arm64" 726 + ], 727 + "dev": true, 728 + "license": "MIT", 729 + "optional": true, 730 + "os": [ 731 + "linux" 732 + ] 733 + }, 734 + "node_modules/@rollup/rollup-linux-loong64-gnu": { 735 + "version": "4.56.0", 736 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz", 737 + "integrity": "sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==", 738 + "cpu": [ 739 + "loong64" 740 + ], 741 + "dev": true, 742 + "license": "MIT", 743 + "optional": true, 744 + "os": [ 745 + "linux" 746 + ] 747 + }, 748 + "node_modules/@rollup/rollup-linux-loong64-musl": { 749 + "version": "4.56.0", 750 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz", 751 + "integrity": "sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==", 752 + "cpu": [ 753 + "loong64" 754 + ], 755 + "dev": true, 756 + "license": "MIT", 757 + "optional": true, 758 + "os": [ 759 + "linux" 760 + ] 761 + }, 762 + "node_modules/@rollup/rollup-linux-ppc64-gnu": { 763 + "version": "4.56.0", 764 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz", 765 + "integrity": "sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==", 766 + "cpu": [ 767 + "ppc64" 768 + ], 769 + "dev": true, 770 + "license": "MIT", 771 + "optional": true, 772 + "os": [ 773 + "linux" 774 + ] 775 + }, 776 + "node_modules/@rollup/rollup-linux-ppc64-musl": { 777 + "version": "4.56.0", 778 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz", 779 + "integrity": "sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==", 780 + "cpu": [ 781 + "ppc64" 782 + ], 783 + "dev": true, 784 + "license": "MIT", 785 + "optional": true, 786 + "os": [ 787 + "linux" 788 + ] 789 + }, 790 + "node_modules/@rollup/rollup-linux-riscv64-gnu": { 791 + "version": "4.56.0", 792 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz", 793 + "integrity": "sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==", 794 + "cpu": [ 795 + "riscv64" 796 + ], 797 + "dev": true, 798 + "license": "MIT", 799 + "optional": true, 800 + "os": [ 801 + "linux" 802 + ] 803 + }, 804 + "node_modules/@rollup/rollup-linux-riscv64-musl": { 805 + "version": "4.56.0", 806 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz", 807 + "integrity": "sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==", 808 + "cpu": [ 809 + "riscv64" 810 + ], 811 + "dev": true, 812 + "license": "MIT", 813 + "optional": true, 814 + "os": [ 815 + "linux" 816 + ] 817 + }, 818 + "node_modules/@rollup/rollup-linux-s390x-gnu": { 819 + "version": "4.56.0", 820 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz", 821 + "integrity": "sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==", 822 + "cpu": [ 823 + "s390x" 824 + ], 825 + "dev": true, 826 + "license": "MIT", 827 + "optional": true, 828 + "os": [ 829 + "linux" 830 + ] 831 + }, 832 + "node_modules/@rollup/rollup-linux-x64-gnu": { 833 + "version": "4.56.0", 834 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz", 835 + "integrity": "sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==", 836 + "cpu": [ 837 + "x64" 838 + ], 839 + "dev": true, 840 + "license": "MIT", 841 + "optional": true, 842 + "os": [ 843 + "linux" 844 + ] 845 + }, 846 + "node_modules/@rollup/rollup-linux-x64-musl": { 847 + "version": "4.56.0", 848 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz", 849 + "integrity": "sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==", 850 + "cpu": [ 851 + "x64" 852 + ], 853 + "dev": true, 854 + "license": "MIT", 855 + "optional": true, 856 + "os": [ 857 + "linux" 858 + ] 859 + }, 860 + "node_modules/@rollup/rollup-openbsd-x64": { 861 + "version": "4.56.0", 862 + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz", 863 + "integrity": "sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==", 864 + "cpu": [ 865 + "x64" 866 + ], 867 + "dev": true, 868 + "license": "MIT", 869 + "optional": true, 870 + "os": [ 871 + "openbsd" 872 + ] 873 + }, 874 + "node_modules/@rollup/rollup-openharmony-arm64": { 875 + "version": "4.56.0", 876 + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz", 877 + "integrity": "sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==", 878 + "cpu": [ 879 + "arm64" 880 + ], 881 + "dev": true, 882 + "license": "MIT", 883 + "optional": true, 884 + "os": [ 885 + "openharmony" 886 + ] 887 + }, 888 + "node_modules/@rollup/rollup-win32-arm64-msvc": { 889 + "version": "4.56.0", 890 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz", 891 + "integrity": "sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==", 892 + "cpu": [ 893 + "arm64" 894 + ], 895 + "dev": true, 896 + "license": "MIT", 897 + "optional": true, 898 + "os": [ 899 + "win32" 900 + ] 901 + }, 902 + "node_modules/@rollup/rollup-win32-ia32-msvc": { 903 + "version": "4.56.0", 904 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz", 905 + "integrity": "sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==", 906 + "cpu": [ 907 + "ia32" 908 + ], 909 + "dev": true, 910 + "license": "MIT", 911 + "optional": true, 912 + "os": [ 913 + "win32" 914 + ] 915 + }, 916 + "node_modules/@rollup/rollup-win32-x64-gnu": { 917 + "version": "4.56.0", 918 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz", 919 + "integrity": "sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==", 920 + "cpu": [ 921 + "x64" 922 + ], 923 + "dev": true, 924 + "license": "MIT", 925 + "optional": true, 926 + "os": [ 927 + "win32" 928 + ] 929 + }, 930 + "node_modules/@rollup/rollup-win32-x64-msvc": { 931 + "version": "4.56.0", 932 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz", 933 + "integrity": "sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==", 934 + "cpu": [ 935 + "x64" 936 + ], 937 + "dev": true, 938 + "license": "MIT", 939 + "optional": true, 940 + "os": [ 941 + "win32" 942 + ] 943 + }, 944 + "node_modules/@standard-schema/spec": { 945 + "version": "1.1.0", 946 + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", 947 + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", 948 + "license": "MIT" 949 + }, 950 + "node_modules/@sveltejs/acorn-typescript": { 951 + "version": "1.0.8", 952 + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.8.tgz", 953 + "integrity": "sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==", 954 + "devOptional": true, 955 + "license": "MIT", 956 + "peerDependencies": { 957 + "acorn": "^8.9.0" 958 + } 959 + }, 960 + "node_modules/@sveltejs/adapter-auto": { 961 + "version": "7.0.0", 962 + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-7.0.0.tgz", 963 + "integrity": "sha512-ImDWaErTOCkRS4Gt+5gZuymKFBobnhChXUZ9lhUZLahUgvA4OOvRzi3sahzYgbxGj5nkA6OV0GAW378+dl/gyw==", 964 + "dev": true, 965 + "license": "MIT", 966 + "peerDependencies": { 967 + "@sveltejs/kit": "^2.0.0" 968 + } 969 + }, 970 + "node_modules/@sveltejs/kit": { 971 + "version": "2.50.0", 972 + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.50.0.tgz", 973 + "integrity": "sha512-Hj8sR8O27p2zshFEIJzsvfhLzxga/hWw6tRLnBjMYw70m1aS9BSYCqAUtzDBjRREtX1EvLMYgaC0mYE3Hz4KWA==", 974 + "devOptional": true, 975 + "license": "MIT", 976 + "dependencies": { 977 + "@standard-schema/spec": "^1.0.0", 978 + "@sveltejs/acorn-typescript": "^1.0.5", 979 + "@types/cookie": "^0.6.0", 980 + "acorn": "^8.14.1", 981 + "cookie": "^0.6.0", 982 + "devalue": "^5.6.2", 983 + "esm-env": "^1.2.2", 984 + "kleur": "^4.1.5", 985 + "magic-string": "^0.30.5", 986 + "mrmime": "^2.0.0", 987 + "sade": "^1.8.1", 988 + "set-cookie-parser": "^2.6.0", 989 + "sirv": "^3.0.0" 990 + }, 991 + "bin": { 992 + "svelte-kit": "svelte-kit.js" 993 + }, 994 + "engines": { 995 + "node": ">=18.13" 996 + }, 997 + "peerDependencies": { 998 + "@opentelemetry/api": "^1.0.0", 999 + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0", 1000 + "svelte": "^4.0.0 || ^5.0.0-next.0", 1001 + "typescript": "^5.3.3", 1002 + "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0" 1003 + }, 1004 + "peerDependenciesMeta": { 1005 + "@opentelemetry/api": { 1006 + "optional": true 1007 + }, 1008 + "typescript": { 1009 + "optional": true 1010 + } 1011 + } 1012 + }, 1013 + "node_modules/@sveltejs/vite-plugin-svelte": { 1014 + "version": "6.2.4", 1015 + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.4.tgz", 1016 + "integrity": "sha512-ou/d51QSdTyN26D7h6dSpusAKaZkAiGM55/AKYi+9AGZw7q85hElbjK3kEyzXHhLSnRISHOYzVge6x0jRZ7DXA==", 1017 + "devOptional": true, 1018 + "license": "MIT", 1019 + "dependencies": { 1020 + "@sveltejs/vite-plugin-svelte-inspector": "^5.0.0", 1021 + "deepmerge": "^4.3.1", 1022 + "magic-string": "^0.30.21", 1023 + "obug": "^2.1.0", 1024 + "vitefu": "^1.1.1" 1025 + }, 1026 + "engines": { 1027 + "node": "^20.19 || ^22.12 || >=24" 1028 + }, 1029 + "peerDependencies": { 1030 + "svelte": "^5.0.0", 1031 + "vite": "^6.3.0 || ^7.0.0" 1032 + } 1033 + }, 1034 + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { 1035 + "version": "5.0.2", 1036 + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-5.0.2.tgz", 1037 + "integrity": "sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==", 1038 + "devOptional": true, 1039 + "license": "MIT", 1040 + "dependencies": { 1041 + "obug": "^2.1.0" 1042 + }, 1043 + "engines": { 1044 + "node": "^20.19 || ^22.12 || >=24" 1045 + }, 1046 + "peerDependencies": { 1047 + "@sveltejs/vite-plugin-svelte": "^6.0.0-next.0", 1048 + "svelte": "^5.0.0", 1049 + "vite": "^6.3.0 || ^7.0.0" 1050 + } 1051 + }, 1052 + "node_modules/@tailwindcss/forms": { 1053 + "version": "0.5.11", 1054 + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.11.tgz", 1055 + "integrity": "sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA==", 1056 + "dev": true, 1057 + "license": "MIT", 1058 + "dependencies": { 1059 + "mini-svg-data-uri": "^1.2.3" 1060 + }, 1061 + "peerDependencies": { 1062 + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" 1063 + } 1064 + }, 1065 + "node_modules/@tailwindcss/node": { 1066 + "version": "4.1.18", 1067 + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", 1068 + "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", 1069 + "dev": true, 1070 + "license": "MIT", 1071 + "dependencies": { 1072 + "@jridgewell/remapping": "^2.3.4", 1073 + "enhanced-resolve": "^5.18.3", 1074 + "jiti": "^2.6.1", 1075 + "lightningcss": "1.30.2", 1076 + "magic-string": "^0.30.21", 1077 + "source-map-js": "^1.2.1", 1078 + "tailwindcss": "4.1.18" 1079 + } 1080 + }, 1081 + "node_modules/@tailwindcss/oxide": { 1082 + "version": "4.1.18", 1083 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", 1084 + "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", 1085 + "dev": true, 1086 + "license": "MIT", 1087 + "engines": { 1088 + "node": ">= 10" 1089 + }, 1090 + "optionalDependencies": { 1091 + "@tailwindcss/oxide-android-arm64": "4.1.18", 1092 + "@tailwindcss/oxide-darwin-arm64": "4.1.18", 1093 + "@tailwindcss/oxide-darwin-x64": "4.1.18", 1094 + "@tailwindcss/oxide-freebsd-x64": "4.1.18", 1095 + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", 1096 + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", 1097 + "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", 1098 + "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", 1099 + "@tailwindcss/oxide-linux-x64-musl": "4.1.18", 1100 + "@tailwindcss/oxide-wasm32-wasi": "4.1.18", 1101 + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", 1102 + "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" 1103 + } 1104 + }, 1105 + "node_modules/@tailwindcss/oxide-android-arm64": { 1106 + "version": "4.1.18", 1107 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", 1108 + "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", 1109 + "cpu": [ 1110 + "arm64" 1111 + ], 1112 + "dev": true, 1113 + "license": "MIT", 1114 + "optional": true, 1115 + "os": [ 1116 + "android" 1117 + ], 1118 + "engines": { 1119 + "node": ">= 10" 1120 + } 1121 + }, 1122 + "node_modules/@tailwindcss/oxide-darwin-arm64": { 1123 + "version": "4.1.18", 1124 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", 1125 + "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", 1126 + "cpu": [ 1127 + "arm64" 1128 + ], 1129 + "dev": true, 1130 + "license": "MIT", 1131 + "optional": true, 1132 + "os": [ 1133 + "darwin" 1134 + ], 1135 + "engines": { 1136 + "node": ">= 10" 1137 + } 1138 + }, 1139 + "node_modules/@tailwindcss/oxide-darwin-x64": { 1140 + "version": "4.1.18", 1141 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", 1142 + "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", 1143 + "cpu": [ 1144 + "x64" 1145 + ], 1146 + "dev": true, 1147 + "license": "MIT", 1148 + "optional": true, 1149 + "os": [ 1150 + "darwin" 1151 + ], 1152 + "engines": { 1153 + "node": ">= 10" 1154 + } 1155 + }, 1156 + "node_modules/@tailwindcss/oxide-freebsd-x64": { 1157 + "version": "4.1.18", 1158 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", 1159 + "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", 1160 + "cpu": [ 1161 + "x64" 1162 + ], 1163 + "dev": true, 1164 + "license": "MIT", 1165 + "optional": true, 1166 + "os": [ 1167 + "freebsd" 1168 + ], 1169 + "engines": { 1170 + "node": ">= 10" 1171 + } 1172 + }, 1173 + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { 1174 + "version": "4.1.18", 1175 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", 1176 + "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", 1177 + "cpu": [ 1178 + "arm" 1179 + ], 1180 + "dev": true, 1181 + "license": "MIT", 1182 + "optional": true, 1183 + "os": [ 1184 + "linux" 1185 + ], 1186 + "engines": { 1187 + "node": ">= 10" 1188 + } 1189 + }, 1190 + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { 1191 + "version": "4.1.18", 1192 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", 1193 + "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", 1194 + "cpu": [ 1195 + "arm64" 1196 + ], 1197 + "dev": true, 1198 + "license": "MIT", 1199 + "optional": true, 1200 + "os": [ 1201 + "linux" 1202 + ], 1203 + "engines": { 1204 + "node": ">= 10" 1205 + } 1206 + }, 1207 + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { 1208 + "version": "4.1.18", 1209 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", 1210 + "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", 1211 + "cpu": [ 1212 + "arm64" 1213 + ], 1214 + "dev": true, 1215 + "license": "MIT", 1216 + "optional": true, 1217 + "os": [ 1218 + "linux" 1219 + ], 1220 + "engines": { 1221 + "node": ">= 10" 1222 + } 1223 + }, 1224 + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { 1225 + "version": "4.1.18", 1226 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", 1227 + "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", 1228 + "cpu": [ 1229 + "x64" 1230 + ], 1231 + "dev": true, 1232 + "license": "MIT", 1233 + "optional": true, 1234 + "os": [ 1235 + "linux" 1236 + ], 1237 + "engines": { 1238 + "node": ">= 10" 1239 + } 1240 + }, 1241 + "node_modules/@tailwindcss/oxide-linux-x64-musl": { 1242 + "version": "4.1.18", 1243 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", 1244 + "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", 1245 + "cpu": [ 1246 + "x64" 1247 + ], 1248 + "dev": true, 1249 + "license": "MIT", 1250 + "optional": true, 1251 + "os": [ 1252 + "linux" 1253 + ], 1254 + "engines": { 1255 + "node": ">= 10" 1256 + } 1257 + }, 1258 + "node_modules/@tailwindcss/oxide-wasm32-wasi": { 1259 + "version": "4.1.18", 1260 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", 1261 + "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", 1262 + "bundleDependencies": [ 1263 + "@napi-rs/wasm-runtime", 1264 + "@emnapi/core", 1265 + "@emnapi/runtime", 1266 + "@tybys/wasm-util", 1267 + "@emnapi/wasi-threads", 1268 + "tslib" 1269 + ], 1270 + "cpu": [ 1271 + "wasm32" 1272 + ], 1273 + "dev": true, 1274 + "license": "MIT", 1275 + "optional": true, 1276 + "dependencies": { 1277 + "@emnapi/core": "^1.7.1", 1278 + "@emnapi/runtime": "^1.7.1", 1279 + "@emnapi/wasi-threads": "^1.1.0", 1280 + "@napi-rs/wasm-runtime": "^1.1.0", 1281 + "@tybys/wasm-util": "^0.10.1", 1282 + "tslib": "^2.4.0" 1283 + }, 1284 + "engines": { 1285 + "node": ">=14.0.0" 1286 + } 1287 + }, 1288 + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { 1289 + "version": "4.1.18", 1290 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", 1291 + "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", 1292 + "cpu": [ 1293 + "arm64" 1294 + ], 1295 + "dev": true, 1296 + "license": "MIT", 1297 + "optional": true, 1298 + "os": [ 1299 + "win32" 1300 + ], 1301 + "engines": { 1302 + "node": ">= 10" 1303 + } 1304 + }, 1305 + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { 1306 + "version": "4.1.18", 1307 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", 1308 + "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", 1309 + "cpu": [ 1310 + "x64" 1311 + ], 1312 + "dev": true, 1313 + "license": "MIT", 1314 + "optional": true, 1315 + "os": [ 1316 + "win32" 1317 + ], 1318 + "engines": { 1319 + "node": ">= 10" 1320 + } 1321 + }, 1322 + "node_modules/@tailwindcss/vite": { 1323 + "version": "4.1.18", 1324 + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.18.tgz", 1325 + "integrity": "sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==", 1326 + "dev": true, 1327 + "license": "MIT", 1328 + "dependencies": { 1329 + "@tailwindcss/node": "4.1.18", 1330 + "@tailwindcss/oxide": "4.1.18", 1331 + "tailwindcss": "4.1.18" 1332 + }, 1333 + "peerDependencies": { 1334 + "vite": "^5.2.0 || ^6 || ^7" 1335 + } 1336 + }, 1337 + "node_modules/@types/better-sqlite3": { 1338 + "version": "7.6.13", 1339 + "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.13.tgz", 1340 + "integrity": "sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==", 1341 + "dev": true, 1342 + "license": "MIT", 1343 + "dependencies": { 1344 + "@types/node": "*" 1345 + } 1346 + }, 1347 + "node_modules/@types/cookie": { 1348 + "version": "0.6.0", 1349 + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", 1350 + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", 1351 + "devOptional": true, 1352 + "license": "MIT" 1353 + }, 1354 + "node_modules/@types/estree": { 1355 + "version": "1.0.8", 1356 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", 1357 + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", 1358 + "devOptional": true, 1359 + "license": "MIT" 1360 + }, 1361 + "node_modules/@types/node": { 1362 + "version": "25.0.10", 1363 + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.10.tgz", 1364 + "integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==", 1365 + "dev": true, 1366 + "license": "MIT", 1367 + "dependencies": { 1368 + "undici-types": "~7.16.0" 1369 + } 1370 + }, 1371 + "node_modules/acorn": { 1372 + "version": "8.15.0", 1373 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", 1374 + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", 1375 + "devOptional": true, 1376 + "license": "MIT", 1377 + "bin": { 1378 + "acorn": "bin/acorn" 1379 + }, 1380 + "engines": { 1381 + "node": ">=0.4.0" 1382 + } 1383 + }, 1384 + "node_modules/aria-query": { 1385 + "version": "5.3.2", 1386 + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", 1387 + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", 1388 + "devOptional": true, 1389 + "license": "Apache-2.0", 1390 + "engines": { 1391 + "node": ">= 0.4" 1392 + } 1393 + }, 1394 + "node_modules/axobject-query": { 1395 + "version": "4.1.0", 1396 + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", 1397 + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", 1398 + "devOptional": true, 1399 + "license": "Apache-2.0", 1400 + "engines": { 1401 + "node": ">= 0.4" 1402 + } 1403 + }, 1404 + "node_modules/base64-js": { 1405 + "version": "1.5.1", 1406 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1407 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 1408 + "funding": [ 1409 + { 1410 + "type": "github", 1411 + "url": "https://github.com/sponsors/feross" 1412 + }, 1413 + { 1414 + "type": "patreon", 1415 + "url": "https://www.patreon.com/feross" 1416 + }, 1417 + { 1418 + "type": "consulting", 1419 + "url": "https://feross.org/support" 1420 + } 1421 + ], 1422 + "license": "MIT" 1423 + }, 1424 + "node_modules/better-auth": { 1425 + "version": "1.4.17", 1426 + "resolved": "https://registry.npmjs.org/better-auth/-/better-auth-1.4.17.tgz", 1427 + "integrity": "sha512-VmHGQyKsEahkEs37qguROKg/6ypYpNF13D7v/lkbO7w7Aivz0Bv2h+VyUkH4NzrGY0QBKXi1577mGhDCVwp0ew==", 1428 + "license": "MIT", 1429 + "dependencies": { 1430 + "@better-auth/core": "1.4.17", 1431 + "@better-auth/telemetry": "1.4.17", 1432 + "@better-auth/utils": "0.3.0", 1433 + "@better-fetch/fetch": "1.1.21", 1434 + "@noble/ciphers": "^2.0.0", 1435 + "@noble/hashes": "^2.0.0", 1436 + "better-call": "1.1.8", 1437 + "defu": "^6.1.4", 1438 + "jose": "^6.1.0", 1439 + "kysely": "^0.28.5", 1440 + "nanostores": "^1.0.1", 1441 + "zod": "^4.3.5" 1442 + }, 1443 + "peerDependencies": { 1444 + "@lynx-js/react": "*", 1445 + "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", 1446 + "@sveltejs/kit": "^2.0.0", 1447 + "@tanstack/react-start": "^1.0.0", 1448 + "@tanstack/solid-start": "^1.0.0", 1449 + "better-sqlite3": "^12.0.0", 1450 + "drizzle-kit": ">=0.31.4", 1451 + "drizzle-orm": ">=0.41.0", 1452 + "mongodb": "^6.0.0 || ^7.0.0", 1453 + "mysql2": "^3.0.0", 1454 + "next": "^14.0.0 || ^15.0.0 || ^16.0.0", 1455 + "pg": "^8.0.0", 1456 + "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0", 1457 + "react": "^18.0.0 || ^19.0.0", 1458 + "react-dom": "^18.0.0 || ^19.0.0", 1459 + "solid-js": "^1.0.0", 1460 + "svelte": "^4.0.0 || ^5.0.0", 1461 + "vitest": "^2.0.0 || ^3.0.0 || ^4.0.0", 1462 + "vue": "^3.0.0" 1463 + }, 1464 + "peerDependenciesMeta": { 1465 + "@lynx-js/react": { 1466 + "optional": true 1467 + }, 1468 + "@prisma/client": { 1469 + "optional": true 1470 + }, 1471 + "@sveltejs/kit": { 1472 + "optional": true 1473 + }, 1474 + "@tanstack/react-start": { 1475 + "optional": true 1476 + }, 1477 + "@tanstack/solid-start": { 1478 + "optional": true 1479 + }, 1480 + "better-sqlite3": { 1481 + "optional": true 1482 + }, 1483 + "drizzle-kit": { 1484 + "optional": true 1485 + }, 1486 + "drizzle-orm": { 1487 + "optional": true 1488 + }, 1489 + "mongodb": { 1490 + "optional": true 1491 + }, 1492 + "mysql2": { 1493 + "optional": true 1494 + }, 1495 + "next": { 1496 + "optional": true 1497 + }, 1498 + "pg": { 1499 + "optional": true 1500 + }, 1501 + "prisma": { 1502 + "optional": true 1503 + }, 1504 + "react": { 1505 + "optional": true 1506 + }, 1507 + "react-dom": { 1508 + "optional": true 1509 + }, 1510 + "solid-js": { 1511 + "optional": true 1512 + }, 1513 + "svelte": { 1514 + "optional": true 1515 + }, 1516 + "vitest": { 1517 + "optional": true 1518 + }, 1519 + "vue": { 1520 + "optional": true 1521 + } 1522 + } 1523 + }, 1524 + "node_modules/better-call": { 1525 + "version": "1.1.8", 1526 + "resolved": "https://registry.npmjs.org/better-call/-/better-call-1.1.8.tgz", 1527 + "integrity": "sha512-XMQ2rs6FNXasGNfMjzbyroSwKwYbZ/T3IxruSS6U2MJRsSYh3wYtG3o6H00ZlKZ/C/UPOAD97tqgQJNsxyeTXw==", 1528 + "license": "MIT", 1529 + "dependencies": { 1530 + "@better-auth/utils": "^0.3.0", 1531 + "@better-fetch/fetch": "^1.1.4", 1532 + "rou3": "^0.7.10", 1533 + "set-cookie-parser": "^2.7.1" 1534 + }, 1535 + "peerDependencies": { 1536 + "zod": "^4.0.0" 1537 + }, 1538 + "peerDependenciesMeta": { 1539 + "zod": { 1540 + "optional": true 1541 + } 1542 + } 1543 + }, 1544 + "node_modules/better-sqlite3": { 1545 + "version": "12.6.2", 1546 + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.6.2.tgz", 1547 + "integrity": "sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==", 1548 + "hasInstallScript": true, 1549 + "license": "MIT", 1550 + "dependencies": { 1551 + "bindings": "^1.5.0", 1552 + "prebuild-install": "^7.1.1" 1553 + }, 1554 + "engines": { 1555 + "node": "20.x || 22.x || 23.x || 24.x || 25.x" 1556 + } 1557 + }, 1558 + "node_modules/bindings": { 1559 + "version": "1.5.0", 1560 + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", 1561 + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 1562 + "license": "MIT", 1563 + "dependencies": { 1564 + "file-uri-to-path": "1.0.0" 1565 + } 1566 + }, 1567 + "node_modules/bl": { 1568 + "version": "4.1.0", 1569 + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 1570 + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 1571 + "license": "MIT", 1572 + "dependencies": { 1573 + "buffer": "^5.5.0", 1574 + "inherits": "^2.0.4", 1575 + "readable-stream": "^3.4.0" 1576 + } 1577 + }, 1578 + "node_modules/buffer": { 1579 + "version": "5.7.1", 1580 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 1581 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 1582 + "funding": [ 1583 + { 1584 + "type": "github", 1585 + "url": "https://github.com/sponsors/feross" 1586 + }, 1587 + { 1588 + "type": "patreon", 1589 + "url": "https://www.patreon.com/feross" 1590 + }, 1591 + { 1592 + "type": "consulting", 1593 + "url": "https://feross.org/support" 1594 + } 1595 + ], 1596 + "license": "MIT", 1597 + "dependencies": { 1598 + "base64-js": "^1.3.1", 1599 + "ieee754": "^1.1.13" 1600 + } 1601 + }, 1602 + "node_modules/chokidar": { 1603 + "version": "4.0.3", 1604 + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", 1605 + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", 1606 + "dev": true, 1607 + "license": "MIT", 1608 + "dependencies": { 1609 + "readdirp": "^4.0.1" 1610 + }, 1611 + "engines": { 1612 + "node": ">= 14.16.0" 1613 + }, 1614 + "funding": { 1615 + "url": "https://paulmillr.com/funding/" 1616 + } 1617 + }, 1618 + "node_modules/chownr": { 1619 + "version": "1.1.4", 1620 + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 1621 + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", 1622 + "license": "ISC" 1623 + }, 1624 + "node_modules/clsx": { 1625 + "version": "2.1.1", 1626 + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", 1627 + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", 1628 + "devOptional": true, 1629 + "license": "MIT", 1630 + "engines": { 1631 + "node": ">=6" 1632 + } 1633 + }, 1634 + "node_modules/cookie": { 1635 + "version": "0.6.0", 1636 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", 1637 + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", 1638 + "devOptional": true, 1639 + "license": "MIT", 1640 + "engines": { 1641 + "node": ">= 0.6" 1642 + } 1643 + }, 1644 + "node_modules/decompress-response": { 1645 + "version": "6.0.0", 1646 + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 1647 + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 1648 + "license": "MIT", 1649 + "dependencies": { 1650 + "mimic-response": "^3.1.0" 1651 + }, 1652 + "engines": { 1653 + "node": ">=10" 1654 + }, 1655 + "funding": { 1656 + "url": "https://github.com/sponsors/sindresorhus" 1657 + } 1658 + }, 1659 + "node_modules/deep-extend": { 1660 + "version": "0.6.0", 1661 + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 1662 + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 1663 + "license": "MIT", 1664 + "engines": { 1665 + "node": ">=4.0.0" 1666 + } 1667 + }, 1668 + "node_modules/deepmerge": { 1669 + "version": "4.3.1", 1670 + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 1671 + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 1672 + "devOptional": true, 1673 + "license": "MIT", 1674 + "engines": { 1675 + "node": ">=0.10.0" 1676 + } 1677 + }, 1678 + "node_modules/defu": { 1679 + "version": "6.1.4", 1680 + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", 1681 + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", 1682 + "license": "MIT" 1683 + }, 1684 + "node_modules/detect-libc": { 1685 + "version": "2.1.2", 1686 + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", 1687 + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", 1688 + "license": "Apache-2.0", 1689 + "engines": { 1690 + "node": ">=8" 1691 + } 1692 + }, 1693 + "node_modules/devalue": { 1694 + "version": "5.6.2", 1695 + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", 1696 + "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", 1697 + "devOptional": true, 1698 + "license": "MIT" 1699 + }, 1700 + "node_modules/end-of-stream": { 1701 + "version": "1.4.5", 1702 + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", 1703 + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", 1704 + "license": "MIT", 1705 + "dependencies": { 1706 + "once": "^1.4.0" 1707 + } 1708 + }, 1709 + "node_modules/enhanced-resolve": { 1710 + "version": "5.18.4", 1711 + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", 1712 + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", 1713 + "dev": true, 1714 + "license": "MIT", 1715 + "dependencies": { 1716 + "graceful-fs": "^4.2.4", 1717 + "tapable": "^2.2.0" 1718 + }, 1719 + "engines": { 1720 + "node": ">=10.13.0" 1721 + } 1722 + }, 1723 + "node_modules/esbuild": { 1724 + "version": "0.27.2", 1725 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", 1726 + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", 1727 + "devOptional": true, 1728 + "hasInstallScript": true, 1729 + "license": "MIT", 1730 + "bin": { 1731 + "esbuild": "bin/esbuild" 1732 + }, 1733 + "engines": { 1734 + "node": ">=18" 1735 + }, 1736 + "optionalDependencies": { 1737 + "@esbuild/aix-ppc64": "0.27.2", 1738 + "@esbuild/android-arm": "0.27.2", 1739 + "@esbuild/android-arm64": "0.27.2", 1740 + "@esbuild/android-x64": "0.27.2", 1741 + "@esbuild/darwin-arm64": "0.27.2", 1742 + "@esbuild/darwin-x64": "0.27.2", 1743 + "@esbuild/freebsd-arm64": "0.27.2", 1744 + "@esbuild/freebsd-x64": "0.27.2", 1745 + "@esbuild/linux-arm": "0.27.2", 1746 + "@esbuild/linux-arm64": "0.27.2", 1747 + "@esbuild/linux-ia32": "0.27.2", 1748 + "@esbuild/linux-loong64": "0.27.2", 1749 + "@esbuild/linux-mips64el": "0.27.2", 1750 + "@esbuild/linux-ppc64": "0.27.2", 1751 + "@esbuild/linux-riscv64": "0.27.2", 1752 + "@esbuild/linux-s390x": "0.27.2", 1753 + "@esbuild/linux-x64": "0.27.2", 1754 + "@esbuild/netbsd-arm64": "0.27.2", 1755 + "@esbuild/netbsd-x64": "0.27.2", 1756 + "@esbuild/openbsd-arm64": "0.27.2", 1757 + "@esbuild/openbsd-x64": "0.27.2", 1758 + "@esbuild/openharmony-arm64": "0.27.2", 1759 + "@esbuild/sunos-x64": "0.27.2", 1760 + "@esbuild/win32-arm64": "0.27.2", 1761 + "@esbuild/win32-ia32": "0.27.2", 1762 + "@esbuild/win32-x64": "0.27.2" 1763 + } 1764 + }, 1765 + "node_modules/esm-env": { 1766 + "version": "1.2.2", 1767 + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", 1768 + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", 1769 + "devOptional": true, 1770 + "license": "MIT" 1771 + }, 1772 + "node_modules/esrap": { 1773 + "version": "2.2.2", 1774 + "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.2.tgz", 1775 + "integrity": "sha512-zA6497ha+qKvoWIK+WM9NAh5ni17sKZKhbS5B3PoYbBvaYHZWoS33zmFybmyqpn07RLUxSmn+RCls2/XF+d0oQ==", 1776 + "devOptional": true, 1777 + "license": "MIT", 1778 + "dependencies": { 1779 + "@jridgewell/sourcemap-codec": "^1.4.15" 1780 + } 1781 + }, 1782 + "node_modules/expand-template": { 1783 + "version": "2.0.3", 1784 + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", 1785 + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", 1786 + "license": "(MIT OR WTFPL)", 1787 + "engines": { 1788 + "node": ">=6" 1789 + } 1790 + }, 1791 + "node_modules/fdir": { 1792 + "version": "6.5.0", 1793 + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", 1794 + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", 1795 + "devOptional": true, 1796 + "license": "MIT", 1797 + "engines": { 1798 + "node": ">=12.0.0" 1799 + }, 1800 + "peerDependencies": { 1801 + "picomatch": "^3 || ^4" 1802 + }, 1803 + "peerDependenciesMeta": { 1804 + "picomatch": { 1805 + "optional": true 1806 + } 1807 + } 1808 + }, 1809 + "node_modules/file-uri-to-path": { 1810 + "version": "1.0.0", 1811 + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", 1812 + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", 1813 + "license": "MIT" 1814 + }, 1815 + "node_modules/fs-constants": { 1816 + "version": "1.0.0", 1817 + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 1818 + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", 1819 + "license": "MIT" 1820 + }, 1821 + "node_modules/fsevents": { 1822 + "version": "2.3.3", 1823 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1824 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1825 + "dev": true, 1826 + "hasInstallScript": true, 1827 + "license": "MIT", 1828 + "optional": true, 1829 + "os": [ 1830 + "darwin" 1831 + ], 1832 + "engines": { 1833 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1834 + } 1835 + }, 1836 + "node_modules/github-from-package": { 1837 + "version": "0.0.0", 1838 + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", 1839 + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", 1840 + "license": "MIT" 1841 + }, 1842 + "node_modules/graceful-fs": { 1843 + "version": "4.2.11", 1844 + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1845 + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1846 + "dev": true, 1847 + "license": "ISC" 1848 + }, 1849 + "node_modules/heroicons": { 1850 + "version": "2.2.0", 1851 + "resolved": "https://registry.npmjs.org/heroicons/-/heroicons-2.2.0.tgz", 1852 + "integrity": "sha512-yOwvztmNiBWqR946t+JdgZmyzEmnRMC2nxvHFC90bF1SUttwB6yJKYeme1JeEcBfobdOs827nCyiWBS2z/brog==", 1853 + "license": "MIT" 1854 + }, 1855 + "node_modules/ieee754": { 1856 + "version": "1.2.1", 1857 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1858 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1859 + "funding": [ 1860 + { 1861 + "type": "github", 1862 + "url": "https://github.com/sponsors/feross" 1863 + }, 1864 + { 1865 + "type": "patreon", 1866 + "url": "https://www.patreon.com/feross" 1867 + }, 1868 + { 1869 + "type": "consulting", 1870 + "url": "https://feross.org/support" 1871 + } 1872 + ], 1873 + "license": "BSD-3-Clause" 1874 + }, 1875 + "node_modules/inherits": { 1876 + "version": "2.0.4", 1877 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1878 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1879 + "license": "ISC" 1880 + }, 1881 + "node_modules/ini": { 1882 + "version": "1.3.8", 1883 + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1884 + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 1885 + "license": "ISC" 1886 + }, 1887 + "node_modules/is-reference": { 1888 + "version": "3.0.3", 1889 + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", 1890 + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", 1891 + "devOptional": true, 1892 + "license": "MIT", 1893 + "dependencies": { 1894 + "@types/estree": "^1.0.6" 1895 + } 1896 + }, 1897 + "node_modules/jiti": { 1898 + "version": "2.6.1", 1899 + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", 1900 + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", 1901 + "dev": true, 1902 + "license": "MIT", 1903 + "bin": { 1904 + "jiti": "lib/jiti-cli.mjs" 1905 + } 1906 + }, 1907 + "node_modules/jose": { 1908 + "version": "6.1.3", 1909 + "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz", 1910 + "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==", 1911 + "license": "MIT", 1912 + "funding": { 1913 + "url": "https://github.com/sponsors/panva" 1914 + } 1915 + }, 1916 + "node_modules/kleur": { 1917 + "version": "4.1.5", 1918 + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 1919 + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 1920 + "devOptional": true, 1921 + "license": "MIT", 1922 + "engines": { 1923 + "node": ">=6" 1924 + } 1925 + }, 1926 + "node_modules/ky": { 1927 + "version": "1.14.2", 1928 + "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.2.tgz", 1929 + "integrity": "sha512-q3RBbsO5A5zrPhB6CaCS8ZUv+NWCXv6JJT4Em0i264G9W0fdPB8YRfnnEi7Dm7X7omAkBIPojzYJ2D1oHTHqug==", 1930 + "license": "MIT", 1931 + "engines": { 1932 + "node": ">=18" 1933 + }, 1934 + "funding": { 1935 + "url": "https://github.com/sindresorhus/ky?sponsor=1" 1936 + } 1937 + }, 1938 + "node_modules/kysely": { 1939 + "version": "0.28.10", 1940 + "resolved": "https://registry.npmjs.org/kysely/-/kysely-0.28.10.tgz", 1941 + "integrity": "sha512-ksNxfzIW77OcZ+QWSAPC7yDqUSaIVwkTWnTPNiIy//vifNbwsSgQ57OkkncHxxpcBHM3LRfLAZVEh7kjq5twVA==", 1942 + "license": "MIT", 1943 + "engines": { 1944 + "node": ">=20.0.0" 1945 + } 1946 + }, 1947 + "node_modules/lightningcss": { 1948 + "version": "1.30.2", 1949 + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", 1950 + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", 1951 + "dev": true, 1952 + "license": "MPL-2.0", 1953 + "dependencies": { 1954 + "detect-libc": "^2.0.3" 1955 + }, 1956 + "engines": { 1957 + "node": ">= 12.0.0" 1958 + }, 1959 + "funding": { 1960 + "type": "opencollective", 1961 + "url": "https://opencollective.com/parcel" 1962 + }, 1963 + "optionalDependencies": { 1964 + "lightningcss-android-arm64": "1.30.2", 1965 + "lightningcss-darwin-arm64": "1.30.2", 1966 + "lightningcss-darwin-x64": "1.30.2", 1967 + "lightningcss-freebsd-x64": "1.30.2", 1968 + "lightningcss-linux-arm-gnueabihf": "1.30.2", 1969 + "lightningcss-linux-arm64-gnu": "1.30.2", 1970 + "lightningcss-linux-arm64-musl": "1.30.2", 1971 + "lightningcss-linux-x64-gnu": "1.30.2", 1972 + "lightningcss-linux-x64-musl": "1.30.2", 1973 + "lightningcss-win32-arm64-msvc": "1.30.2", 1974 + "lightningcss-win32-x64-msvc": "1.30.2" 1975 + } 1976 + }, 1977 + "node_modules/lightningcss-android-arm64": { 1978 + "version": "1.30.2", 1979 + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", 1980 + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", 1981 + "cpu": [ 1982 + "arm64" 1983 + ], 1984 + "dev": true, 1985 + "license": "MPL-2.0", 1986 + "optional": true, 1987 + "os": [ 1988 + "android" 1989 + ], 1990 + "engines": { 1991 + "node": ">= 12.0.0" 1992 + }, 1993 + "funding": { 1994 + "type": "opencollective", 1995 + "url": "https://opencollective.com/parcel" 1996 + } 1997 + }, 1998 + "node_modules/lightningcss-darwin-arm64": { 1999 + "version": "1.30.2", 2000 + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", 2001 + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", 2002 + "cpu": [ 2003 + "arm64" 2004 + ], 2005 + "dev": true, 2006 + "license": "MPL-2.0", 2007 + "optional": true, 2008 + "os": [ 2009 + "darwin" 2010 + ], 2011 + "engines": { 2012 + "node": ">= 12.0.0" 2013 + }, 2014 + "funding": { 2015 + "type": "opencollective", 2016 + "url": "https://opencollective.com/parcel" 2017 + } 2018 + }, 2019 + "node_modules/lightningcss-darwin-x64": { 2020 + "version": "1.30.2", 2021 + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", 2022 + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", 2023 + "cpu": [ 2024 + "x64" 2025 + ], 2026 + "dev": true, 2027 + "license": "MPL-2.0", 2028 + "optional": true, 2029 + "os": [ 2030 + "darwin" 2031 + ], 2032 + "engines": { 2033 + "node": ">= 12.0.0" 2034 + }, 2035 + "funding": { 2036 + "type": "opencollective", 2037 + "url": "https://opencollective.com/parcel" 2038 + } 2039 + }, 2040 + "node_modules/lightningcss-freebsd-x64": { 2041 + "version": "1.30.2", 2042 + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", 2043 + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", 2044 + "cpu": [ 2045 + "x64" 2046 + ], 2047 + "dev": true, 2048 + "license": "MPL-2.0", 2049 + "optional": true, 2050 + "os": [ 2051 + "freebsd" 2052 + ], 2053 + "engines": { 2054 + "node": ">= 12.0.0" 2055 + }, 2056 + "funding": { 2057 + "type": "opencollective", 2058 + "url": "https://opencollective.com/parcel" 2059 + } 2060 + }, 2061 + "node_modules/lightningcss-linux-arm-gnueabihf": { 2062 + "version": "1.30.2", 2063 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", 2064 + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", 2065 + "cpu": [ 2066 + "arm" 2067 + ], 2068 + "dev": true, 2069 + "license": "MPL-2.0", 2070 + "optional": true, 2071 + "os": [ 2072 + "linux" 2073 + ], 2074 + "engines": { 2075 + "node": ">= 12.0.0" 2076 + }, 2077 + "funding": { 2078 + "type": "opencollective", 2079 + "url": "https://opencollective.com/parcel" 2080 + } 2081 + }, 2082 + "node_modules/lightningcss-linux-arm64-gnu": { 2083 + "version": "1.30.2", 2084 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", 2085 + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", 2086 + "cpu": [ 2087 + "arm64" 2088 + ], 2089 + "dev": true, 2090 + "license": "MPL-2.0", 2091 + "optional": true, 2092 + "os": [ 2093 + "linux" 2094 + ], 2095 + "engines": { 2096 + "node": ">= 12.0.0" 2097 + }, 2098 + "funding": { 2099 + "type": "opencollective", 2100 + "url": "https://opencollective.com/parcel" 2101 + } 2102 + }, 2103 + "node_modules/lightningcss-linux-arm64-musl": { 2104 + "version": "1.30.2", 2105 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", 2106 + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", 2107 + "cpu": [ 2108 + "arm64" 2109 + ], 2110 + "dev": true, 2111 + "license": "MPL-2.0", 2112 + "optional": true, 2113 + "os": [ 2114 + "linux" 2115 + ], 2116 + "engines": { 2117 + "node": ">= 12.0.0" 2118 + }, 2119 + "funding": { 2120 + "type": "opencollective", 2121 + "url": "https://opencollective.com/parcel" 2122 + } 2123 + }, 2124 + "node_modules/lightningcss-linux-x64-gnu": { 2125 + "version": "1.30.2", 2126 + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", 2127 + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", 2128 + "cpu": [ 2129 + "x64" 2130 + ], 2131 + "dev": true, 2132 + "license": "MPL-2.0", 2133 + "optional": true, 2134 + "os": [ 2135 + "linux" 2136 + ], 2137 + "engines": { 2138 + "node": ">= 12.0.0" 2139 + }, 2140 + "funding": { 2141 + "type": "opencollective", 2142 + "url": "https://opencollective.com/parcel" 2143 + } 2144 + }, 2145 + "node_modules/lightningcss-linux-x64-musl": { 2146 + "version": "1.30.2", 2147 + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", 2148 + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", 2149 + "cpu": [ 2150 + "x64" 2151 + ], 2152 + "dev": true, 2153 + "license": "MPL-2.0", 2154 + "optional": true, 2155 + "os": [ 2156 + "linux" 2157 + ], 2158 + "engines": { 2159 + "node": ">= 12.0.0" 2160 + }, 2161 + "funding": { 2162 + "type": "opencollective", 2163 + "url": "https://opencollective.com/parcel" 2164 + } 2165 + }, 2166 + "node_modules/lightningcss-win32-arm64-msvc": { 2167 + "version": "1.30.2", 2168 + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", 2169 + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", 2170 + "cpu": [ 2171 + "arm64" 2172 + ], 2173 + "dev": true, 2174 + "license": "MPL-2.0", 2175 + "optional": true, 2176 + "os": [ 2177 + "win32" 2178 + ], 2179 + "engines": { 2180 + "node": ">= 12.0.0" 2181 + }, 2182 + "funding": { 2183 + "type": "opencollective", 2184 + "url": "https://opencollective.com/parcel" 2185 + } 2186 + }, 2187 + "node_modules/lightningcss-win32-x64-msvc": { 2188 + "version": "1.30.2", 2189 + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", 2190 + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", 2191 + "cpu": [ 2192 + "x64" 2193 + ], 2194 + "dev": true, 2195 + "license": "MPL-2.0", 2196 + "optional": true, 2197 + "os": [ 2198 + "win32" 2199 + ], 2200 + "engines": { 2201 + "node": ">= 12.0.0" 2202 + }, 2203 + "funding": { 2204 + "type": "opencollective", 2205 + "url": "https://opencollective.com/parcel" 2206 + } 2207 + }, 2208 + "node_modules/locate-character": { 2209 + "version": "3.0.0", 2210 + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", 2211 + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", 2212 + "devOptional": true, 2213 + "license": "MIT" 2214 + }, 2215 + "node_modules/magic-string": { 2216 + "version": "0.30.21", 2217 + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", 2218 + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", 2219 + "devOptional": true, 2220 + "license": "MIT", 2221 + "dependencies": { 2222 + "@jridgewell/sourcemap-codec": "^1.5.5" 2223 + } 2224 + }, 2225 + "node_modules/mimic-response": { 2226 + "version": "3.1.0", 2227 + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 2228 + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 2229 + "license": "MIT", 2230 + "engines": { 2231 + "node": ">=10" 2232 + }, 2233 + "funding": { 2234 + "url": "https://github.com/sponsors/sindresorhus" 2235 + } 2236 + }, 2237 + "node_modules/mini-svg-data-uri": { 2238 + "version": "1.4.4", 2239 + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", 2240 + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", 2241 + "dev": true, 2242 + "license": "MIT", 2243 + "bin": { 2244 + "mini-svg-data-uri": "cli.js" 2245 + } 2246 + }, 2247 + "node_modules/minimist": { 2248 + "version": "1.2.8", 2249 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 2250 + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 2251 + "license": "MIT", 2252 + "funding": { 2253 + "url": "https://github.com/sponsors/ljharb" 2254 + } 2255 + }, 2256 + "node_modules/mkdirp-classic": { 2257 + "version": "0.5.3", 2258 + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 2259 + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", 2260 + "license": "MIT" 2261 + }, 2262 + "node_modules/mri": { 2263 + "version": "1.2.0", 2264 + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 2265 + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 2266 + "devOptional": true, 2267 + "license": "MIT", 2268 + "engines": { 2269 + "node": ">=4" 2270 + } 2271 + }, 2272 + "node_modules/mrmime": { 2273 + "version": "2.0.1", 2274 + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", 2275 + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", 2276 + "devOptional": true, 2277 + "license": "MIT", 2278 + "engines": { 2279 + "node": ">=10" 2280 + } 2281 + }, 2282 + "node_modules/nanoid": { 2283 + "version": "3.3.11", 2284 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 2285 + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 2286 + "devOptional": true, 2287 + "funding": [ 2288 + { 2289 + "type": "github", 2290 + "url": "https://github.com/sponsors/ai" 2291 + } 2292 + ], 2293 + "license": "MIT", 2294 + "bin": { 2295 + "nanoid": "bin/nanoid.cjs" 2296 + }, 2297 + "engines": { 2298 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 2299 + } 2300 + }, 2301 + "node_modules/nanostores": { 2302 + "version": "1.1.0", 2303 + "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-1.1.0.tgz", 2304 + "integrity": "sha512-yJBmDJr18xy47dbNVlHcgdPrulSn1nhSE6Ns9vTG+Nx9VPT6iV1MD6aQFp/t52zpf82FhLLTXAXr30NuCnxvwA==", 2305 + "funding": [ 2306 + { 2307 + "type": "github", 2308 + "url": "https://github.com/sponsors/ai" 2309 + } 2310 + ], 2311 + "license": "MIT", 2312 + "engines": { 2313 + "node": "^20.0.0 || >=22.0.0" 2314 + } 2315 + }, 2316 + "node_modules/napi-build-utils": { 2317 + "version": "2.0.0", 2318 + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", 2319 + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", 2320 + "license": "MIT" 2321 + }, 2322 + "node_modules/node-abi": { 2323 + "version": "3.87.0", 2324 + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.87.0.tgz", 2325 + "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==", 2326 + "license": "MIT", 2327 + "dependencies": { 2328 + "semver": "^7.3.5" 2329 + }, 2330 + "engines": { 2331 + "node": ">=10" 2332 + } 2333 + }, 2334 + "node_modules/obug": { 2335 + "version": "2.1.1", 2336 + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", 2337 + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", 2338 + "devOptional": true, 2339 + "funding": [ 2340 + "https://github.com/sponsors/sxzz", 2341 + "https://opencollective.com/debug" 2342 + ], 2343 + "license": "MIT" 2344 + }, 2345 + "node_modules/once": { 2346 + "version": "1.4.0", 2347 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2348 + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2349 + "license": "ISC", 2350 + "dependencies": { 2351 + "wrappy": "1" 2352 + } 2353 + }, 2354 + "node_modules/picocolors": { 2355 + "version": "1.1.1", 2356 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 2357 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 2358 + "devOptional": true, 2359 + "license": "ISC" 2360 + }, 2361 + "node_modules/picomatch": { 2362 + "version": "4.0.3", 2363 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", 2364 + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", 2365 + "devOptional": true, 2366 + "license": "MIT", 2367 + "engines": { 2368 + "node": ">=12" 2369 + }, 2370 + "funding": { 2371 + "url": "https://github.com/sponsors/jonschlinkert" 2372 + } 2373 + }, 2374 + "node_modules/postcss": { 2375 + "version": "8.5.6", 2376 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", 2377 + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", 2378 + "devOptional": true, 2379 + "funding": [ 2380 + { 2381 + "type": "opencollective", 2382 + "url": "https://opencollective.com/postcss/" 2383 + }, 2384 + { 2385 + "type": "tidelift", 2386 + "url": "https://tidelift.com/funding/github/npm/postcss" 2387 + }, 2388 + { 2389 + "type": "github", 2390 + "url": "https://github.com/sponsors/ai" 2391 + } 2392 + ], 2393 + "license": "MIT", 2394 + "dependencies": { 2395 + "nanoid": "^3.3.11", 2396 + "picocolors": "^1.1.1", 2397 + "source-map-js": "^1.2.1" 2398 + }, 2399 + "engines": { 2400 + "node": "^10 || ^12 || >=14" 2401 + } 2402 + }, 2403 + "node_modules/prebuild-install": { 2404 + "version": "7.1.3", 2405 + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", 2406 + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", 2407 + "license": "MIT", 2408 + "dependencies": { 2409 + "detect-libc": "^2.0.0", 2410 + "expand-template": "^2.0.3", 2411 + "github-from-package": "0.0.0", 2412 + "minimist": "^1.2.3", 2413 + "mkdirp-classic": "^0.5.3", 2414 + "napi-build-utils": "^2.0.0", 2415 + "node-abi": "^3.3.0", 2416 + "pump": "^3.0.0", 2417 + "rc": "^1.2.7", 2418 + "simple-get": "^4.0.0", 2419 + "tar-fs": "^2.0.0", 2420 + "tunnel-agent": "^0.6.0" 2421 + }, 2422 + "bin": { 2423 + "prebuild-install": "bin.js" 2424 + }, 2425 + "engines": { 2426 + "node": ">=10" 2427 + } 2428 + }, 2429 + "node_modules/pump": { 2430 + "version": "3.0.3", 2431 + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", 2432 + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", 2433 + "license": "MIT", 2434 + "dependencies": { 2435 + "end-of-stream": "^1.1.0", 2436 + "once": "^1.3.1" 2437 + } 2438 + }, 2439 + "node_modules/rc": { 2440 + "version": "1.2.8", 2441 + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 2442 + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 2443 + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", 2444 + "dependencies": { 2445 + "deep-extend": "^0.6.0", 2446 + "ini": "~1.3.0", 2447 + "minimist": "^1.2.0", 2448 + "strip-json-comments": "~2.0.1" 2449 + }, 2450 + "bin": { 2451 + "rc": "cli.js" 2452 + } 2453 + }, 2454 + "node_modules/readable-stream": { 2455 + "version": "3.6.2", 2456 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 2457 + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 2458 + "license": "MIT", 2459 + "dependencies": { 2460 + "inherits": "^2.0.3", 2461 + "string_decoder": "^1.1.1", 2462 + "util-deprecate": "^1.0.1" 2463 + }, 2464 + "engines": { 2465 + "node": ">= 6" 2466 + } 2467 + }, 2468 + "node_modules/readdirp": { 2469 + "version": "4.1.2", 2470 + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", 2471 + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", 2472 + "dev": true, 2473 + "license": "MIT", 2474 + "engines": { 2475 + "node": ">= 14.18.0" 2476 + }, 2477 + "funding": { 2478 + "type": "individual", 2479 + "url": "https://paulmillr.com/funding/" 2480 + } 2481 + }, 2482 + "node_modules/rollup": { 2483 + "version": "4.56.0", 2484 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.56.0.tgz", 2485 + "integrity": "sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==", 2486 + "devOptional": true, 2487 + "license": "MIT", 2488 + "dependencies": { 2489 + "@types/estree": "1.0.8" 2490 + }, 2491 + "bin": { 2492 + "rollup": "dist/bin/rollup" 2493 + }, 2494 + "engines": { 2495 + "node": ">=18.0.0", 2496 + "npm": ">=8.0.0" 2497 + }, 2498 + "optionalDependencies": { 2499 + "@rollup/rollup-android-arm-eabi": "4.56.0", 2500 + "@rollup/rollup-android-arm64": "4.56.0", 2501 + "@rollup/rollup-darwin-arm64": "4.56.0", 2502 + "@rollup/rollup-darwin-x64": "4.56.0", 2503 + "@rollup/rollup-freebsd-arm64": "4.56.0", 2504 + "@rollup/rollup-freebsd-x64": "4.56.0", 2505 + "@rollup/rollup-linux-arm-gnueabihf": "4.56.0", 2506 + "@rollup/rollup-linux-arm-musleabihf": "4.56.0", 2507 + "@rollup/rollup-linux-arm64-gnu": "4.56.0", 2508 + "@rollup/rollup-linux-arm64-musl": "4.56.0", 2509 + "@rollup/rollup-linux-loong64-gnu": "4.56.0", 2510 + "@rollup/rollup-linux-loong64-musl": "4.56.0", 2511 + "@rollup/rollup-linux-ppc64-gnu": "4.56.0", 2512 + "@rollup/rollup-linux-ppc64-musl": "4.56.0", 2513 + "@rollup/rollup-linux-riscv64-gnu": "4.56.0", 2514 + "@rollup/rollup-linux-riscv64-musl": "4.56.0", 2515 + "@rollup/rollup-linux-s390x-gnu": "4.56.0", 2516 + "@rollup/rollup-linux-x64-gnu": "4.56.0", 2517 + "@rollup/rollup-linux-x64-musl": "4.56.0", 2518 + "@rollup/rollup-openbsd-x64": "4.56.0", 2519 + "@rollup/rollup-openharmony-arm64": "4.56.0", 2520 + "@rollup/rollup-win32-arm64-msvc": "4.56.0", 2521 + "@rollup/rollup-win32-ia32-msvc": "4.56.0", 2522 + "@rollup/rollup-win32-x64-gnu": "4.56.0", 2523 + "@rollup/rollup-win32-x64-msvc": "4.56.0", 2524 + "fsevents": "~2.3.2" 2525 + } 2526 + }, 2527 + "node_modules/rou3": { 2528 + "version": "0.7.12", 2529 + "resolved": "https://registry.npmjs.org/rou3/-/rou3-0.7.12.tgz", 2530 + "integrity": "sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg==", 2531 + "license": "MIT" 2532 + }, 2533 + "node_modules/sade": { 2534 + "version": "1.8.1", 2535 + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 2536 + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 2537 + "devOptional": true, 2538 + "license": "MIT", 2539 + "dependencies": { 2540 + "mri": "^1.1.0" 2541 + }, 2542 + "engines": { 2543 + "node": ">=6" 2544 + } 2545 + }, 2546 + "node_modules/safe-buffer": { 2547 + "version": "5.2.1", 2548 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2549 + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2550 + "funding": [ 2551 + { 2552 + "type": "github", 2553 + "url": "https://github.com/sponsors/feross" 2554 + }, 2555 + { 2556 + "type": "patreon", 2557 + "url": "https://www.patreon.com/feross" 2558 + }, 2559 + { 2560 + "type": "consulting", 2561 + "url": "https://feross.org/support" 2562 + } 2563 + ], 2564 + "license": "MIT" 2565 + }, 2566 + "node_modules/semver": { 2567 + "version": "7.7.3", 2568 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", 2569 + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", 2570 + "license": "ISC", 2571 + "bin": { 2572 + "semver": "bin/semver.js" 2573 + }, 2574 + "engines": { 2575 + "node": ">=10" 2576 + } 2577 + }, 2578 + "node_modules/set-cookie-parser": { 2579 + "version": "2.7.2", 2580 + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", 2581 + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", 2582 + "license": "MIT" 2583 + }, 2584 + "node_modules/simple-concat": { 2585 + "version": "1.0.1", 2586 + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 2587 + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", 2588 + "funding": [ 2589 + { 2590 + "type": "github", 2591 + "url": "https://github.com/sponsors/feross" 2592 + }, 2593 + { 2594 + "type": "patreon", 2595 + "url": "https://www.patreon.com/feross" 2596 + }, 2597 + { 2598 + "type": "consulting", 2599 + "url": "https://feross.org/support" 2600 + } 2601 + ], 2602 + "license": "MIT" 2603 + }, 2604 + "node_modules/simple-get": { 2605 + "version": "4.0.1", 2606 + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", 2607 + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", 2608 + "funding": [ 2609 + { 2610 + "type": "github", 2611 + "url": "https://github.com/sponsors/feross" 2612 + }, 2613 + { 2614 + "type": "patreon", 2615 + "url": "https://www.patreon.com/feross" 2616 + }, 2617 + { 2618 + "type": "consulting", 2619 + "url": "https://feross.org/support" 2620 + } 2621 + ], 2622 + "license": "MIT", 2623 + "dependencies": { 2624 + "decompress-response": "^6.0.0", 2625 + "once": "^1.3.1", 2626 + "simple-concat": "^1.0.0" 2627 + } 2628 + }, 2629 + "node_modules/sirv": { 2630 + "version": "3.0.2", 2631 + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", 2632 + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", 2633 + "devOptional": true, 2634 + "license": "MIT", 2635 + "dependencies": { 2636 + "@polka/url": "^1.0.0-next.24", 2637 + "mrmime": "^2.0.0", 2638 + "totalist": "^3.0.0" 2639 + }, 2640 + "engines": { 2641 + "node": ">=18" 2642 + } 2643 + }, 2644 + "node_modules/source-map-js": { 2645 + "version": "1.2.1", 2646 + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 2647 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 2648 + "devOptional": true, 2649 + "license": "BSD-3-Clause", 2650 + "engines": { 2651 + "node": ">=0.10.0" 2652 + } 2653 + }, 2654 + "node_modules/string_decoder": { 2655 + "version": "1.3.0", 2656 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2657 + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2658 + "license": "MIT", 2659 + "dependencies": { 2660 + "safe-buffer": "~5.2.0" 2661 + } 2662 + }, 2663 + "node_modules/strip-json-comments": { 2664 + "version": "2.0.1", 2665 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2666 + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", 2667 + "license": "MIT", 2668 + "engines": { 2669 + "node": ">=0.10.0" 2670 + } 2671 + }, 2672 + "node_modules/svelte": { 2673 + "version": "5.48.0", 2674 + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.48.0.tgz", 2675 + "integrity": "sha512-+NUe82VoFP1RQViZI/esojx70eazGF4u0O/9ucqZ4rPcOZD+n5EVp17uYsqwdzjUjZyTpGKunHbDziW6AIAVkQ==", 2676 + "devOptional": true, 2677 + "license": "MIT", 2678 + "dependencies": { 2679 + "@jridgewell/remapping": "^2.3.4", 2680 + "@jridgewell/sourcemap-codec": "^1.5.0", 2681 + "@sveltejs/acorn-typescript": "^1.0.5", 2682 + "@types/estree": "^1.0.5", 2683 + "acorn": "^8.12.1", 2684 + "aria-query": "^5.3.1", 2685 + "axobject-query": "^4.1.0", 2686 + "clsx": "^2.1.1", 2687 + "devalue": "^5.6.2", 2688 + "esm-env": "^1.2.1", 2689 + "esrap": "^2.2.1", 2690 + "is-reference": "^3.0.3", 2691 + "locate-character": "^3.0.0", 2692 + "magic-string": "^0.30.11", 2693 + "zimmerframe": "^1.1.2" 2694 + }, 2695 + "engines": { 2696 + "node": ">=18" 2697 + } 2698 + }, 2699 + "node_modules/svelte-check": { 2700 + "version": "4.3.5", 2701 + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.3.5.tgz", 2702 + "integrity": "sha512-e4VWZETyXaKGhpkxOXP+B/d0Fp/zKViZoJmneZWe/05Y2aqSKj3YN2nLfYPJBQ87WEiY4BQCQ9hWGu9mPT1a1Q==", 2703 + "dev": true, 2704 + "license": "MIT", 2705 + "dependencies": { 2706 + "@jridgewell/trace-mapping": "^0.3.25", 2707 + "chokidar": "^4.0.1", 2708 + "fdir": "^6.2.0", 2709 + "picocolors": "^1.0.0", 2710 + "sade": "^1.7.4" 2711 + }, 2712 + "bin": { 2713 + "svelte-check": "bin/svelte-check" 2714 + }, 2715 + "engines": { 2716 + "node": ">= 18.0.0" 2717 + }, 2718 + "peerDependencies": { 2719 + "svelte": "^4.0.0 || ^5.0.0-next.0", 2720 + "typescript": ">=5.0.0" 2721 + } 2722 + }, 2723 + "node_modules/tailwindcss": { 2724 + "version": "4.1.18", 2725 + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", 2726 + "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", 2727 + "dev": true, 2728 + "license": "MIT" 2729 + }, 2730 + "node_modules/tapable": { 2731 + "version": "2.3.0", 2732 + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", 2733 + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", 2734 + "dev": true, 2735 + "license": "MIT", 2736 + "engines": { 2737 + "node": ">=6" 2738 + }, 2739 + "funding": { 2740 + "type": "opencollective", 2741 + "url": "https://opencollective.com/webpack" 2742 + } 2743 + }, 2744 + "node_modules/tar-fs": { 2745 + "version": "2.1.4", 2746 + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", 2747 + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", 2748 + "license": "MIT", 2749 + "dependencies": { 2750 + "chownr": "^1.1.1", 2751 + "mkdirp-classic": "^0.5.2", 2752 + "pump": "^3.0.0", 2753 + "tar-stream": "^2.1.4" 2754 + } 2755 + }, 2756 + "node_modules/tar-stream": { 2757 + "version": "2.2.0", 2758 + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 2759 + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 2760 + "license": "MIT", 2761 + "dependencies": { 2762 + "bl": "^4.0.3", 2763 + "end-of-stream": "^1.4.1", 2764 + "fs-constants": "^1.0.0", 2765 + "inherits": "^2.0.3", 2766 + "readable-stream": "^3.1.1" 2767 + }, 2768 + "engines": { 2769 + "node": ">=6" 2770 + } 2771 + }, 2772 + "node_modules/tinyglobby": { 2773 + "version": "0.2.15", 2774 + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", 2775 + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", 2776 + "devOptional": true, 2777 + "license": "MIT", 2778 + "dependencies": { 2779 + "fdir": "^6.5.0", 2780 + "picomatch": "^4.0.3" 2781 + }, 2782 + "engines": { 2783 + "node": ">=12.0.0" 2784 + }, 2785 + "funding": { 2786 + "url": "https://github.com/sponsors/SuperchupuDev" 2787 + } 2788 + }, 2789 + "node_modules/totalist": { 2790 + "version": "3.0.1", 2791 + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", 2792 + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", 2793 + "devOptional": true, 2794 + "license": "MIT", 2795 + "engines": { 2796 + "node": ">=6" 2797 + } 2798 + }, 2799 + "node_modules/tunnel-agent": { 2800 + "version": "0.6.0", 2801 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 2802 + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 2803 + "license": "Apache-2.0", 2804 + "dependencies": { 2805 + "safe-buffer": "^5.0.1" 2806 + }, 2807 + "engines": { 2808 + "node": "*" 2809 + } 2810 + }, 2811 + "node_modules/typescript": { 2812 + "version": "5.9.3", 2813 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", 2814 + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", 2815 + "devOptional": true, 2816 + "license": "Apache-2.0", 2817 + "bin": { 2818 + "tsc": "bin/tsc", 2819 + "tsserver": "bin/tsserver" 2820 + }, 2821 + "engines": { 2822 + "node": ">=14.17" 2823 + } 2824 + }, 2825 + "node_modules/undici-types": { 2826 + "version": "7.16.0", 2827 + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", 2828 + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", 2829 + "dev": true, 2830 + "license": "MIT" 2831 + }, 2832 + "node_modules/util-deprecate": { 2833 + "version": "1.0.2", 2834 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2835 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 2836 + "license": "MIT" 2837 + }, 2838 + "node_modules/valibot": { 2839 + "version": "1.2.0", 2840 + "resolved": "https://registry.npmjs.org/valibot/-/valibot-1.2.0.tgz", 2841 + "integrity": "sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==", 2842 + "license": "MIT", 2843 + "peerDependencies": { 2844 + "typescript": ">=5" 2845 + }, 2846 + "peerDependenciesMeta": { 2847 + "typescript": { 2848 + "optional": true 2849 + } 2850 + } 2851 + }, 2852 + "node_modules/vite": { 2853 + "version": "7.3.1", 2854 + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", 2855 + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", 2856 + "devOptional": true, 2857 + "license": "MIT", 2858 + "dependencies": { 2859 + "esbuild": "^0.27.0", 2860 + "fdir": "^6.5.0", 2861 + "picomatch": "^4.0.3", 2862 + "postcss": "^8.5.6", 2863 + "rollup": "^4.43.0", 2864 + "tinyglobby": "^0.2.15" 2865 + }, 2866 + "bin": { 2867 + "vite": "bin/vite.js" 2868 + }, 2869 + "engines": { 2870 + "node": "^20.19.0 || >=22.12.0" 2871 + }, 2872 + "funding": { 2873 + "url": "https://github.com/vitejs/vite?sponsor=1" 2874 + }, 2875 + "optionalDependencies": { 2876 + "fsevents": "~2.3.3" 2877 + }, 2878 + "peerDependencies": { 2879 + "@types/node": "^20.19.0 || >=22.12.0", 2880 + "jiti": ">=1.21.0", 2881 + "less": "^4.0.0", 2882 + "lightningcss": "^1.21.0", 2883 + "sass": "^1.70.0", 2884 + "sass-embedded": "^1.70.0", 2885 + "stylus": ">=0.54.8", 2886 + "sugarss": "^5.0.0", 2887 + "terser": "^5.16.0", 2888 + "tsx": "^4.8.1", 2889 + "yaml": "^2.4.2" 2890 + }, 2891 + "peerDependenciesMeta": { 2892 + "@types/node": { 2893 + "optional": true 2894 + }, 2895 + "jiti": { 2896 + "optional": true 2897 + }, 2898 + "less": { 2899 + "optional": true 2900 + }, 2901 + "lightningcss": { 2902 + "optional": true 2903 + }, 2904 + "sass": { 2905 + "optional": true 2906 + }, 2907 + "sass-embedded": { 2908 + "optional": true 2909 + }, 2910 + "stylus": { 2911 + "optional": true 2912 + }, 2913 + "sugarss": { 2914 + "optional": true 2915 + }, 2916 + "terser": { 2917 + "optional": true 2918 + }, 2919 + "tsx": { 2920 + "optional": true 2921 + }, 2922 + "yaml": { 2923 + "optional": true 2924 + } 2925 + } 2926 + }, 2927 + "node_modules/vitefu": { 2928 + "version": "1.1.1", 2929 + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", 2930 + "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", 2931 + "devOptional": true, 2932 + "license": "MIT", 2933 + "workspaces": [ 2934 + "tests/deps/*", 2935 + "tests/projects/*", 2936 + "tests/projects/workspace/packages/*" 2937 + ], 2938 + "peerDependencies": { 2939 + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" 2940 + }, 2941 + "peerDependenciesMeta": { 2942 + "vite": { 2943 + "optional": true 2944 + } 2945 + } 2946 + }, 2947 + "node_modules/wrappy": { 2948 + "version": "1.0.2", 2949 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2950 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2951 + "license": "ISC" 2952 + }, 2953 + "node_modules/zimmerframe": { 2954 + "version": "1.1.4", 2955 + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", 2956 + "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==", 2957 + "devOptional": true, 2958 + "license": "MIT" 2959 + }, 2960 + "node_modules/zod": { 2961 + "version": "4.3.6", 2962 + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", 2963 + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", 2964 + "license": "MIT", 2965 + "funding": { 2966 + "url": "https://github.com/sponsors/colinhacks" 2967 + } 2968 + } 2969 + } 2226 2970 }
+32 -24
client/package.json
··· 1 1 { 2 - "name": "client", 3 - "private": true, 4 - "version": "0.0.1", 5 - "type": "module", 6 - "scripts": { 7 - "dev": "vite dev", 8 - "build": "vite build", 9 - "preview": "vite preview", 10 - "prepare": "svelte-kit sync || echo ''", 11 - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 12 - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" 13 - }, 14 - "devDependencies": { 15 - "@sveltejs/adapter-auto": "^7.0.0", 16 - "@sveltejs/kit": "^2.49.1", 17 - "@sveltejs/vite-plugin-svelte": "^6.2.1", 18 - "@tailwindcss/forms": "^0.5.10", 19 - "@tailwindcss/vite": "^4.1.17", 20 - "svelte": "^5.45.6", 21 - "svelte-check": "^4.3.4", 22 - "tailwindcss": "^4.1.17", 23 - "typescript": "^5.9.3", 24 - "vite": "^7.2.6" 25 - } 2 + "name": "client", 3 + "private": true, 4 + "version": "0.0.1", 5 + "type": "module", 6 + "scripts": { 7 + "dev": "vite dev", 8 + "build": "vite build", 9 + "preview": "vite preview", 10 + "prepare": "svelte-kit sync || echo ''", 11 + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 12 + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" 13 + }, 14 + "devDependencies": { 15 + "@sveltejs/adapter-auto": "^7.0.0", 16 + "@sveltejs/kit": "^2.49.1", 17 + "@sveltejs/vite-plugin-svelte": "^6.2.1", 18 + "@tailwindcss/forms": "^0.5.10", 19 + "@tailwindcss/vite": "^4.1.17", 20 + "@types/better-sqlite3": "^7.6.13", 21 + "svelte": "^5.45.6", 22 + "svelte-check": "^4.3.4", 23 + "tailwindcss": "^4.1.17", 24 + "typescript": "^5.9.3", 25 + "vite": "^7.2.6" 26 + }, 27 + "dependencies": { 28 + "better-auth": "^1.4.17", 29 + "better-sqlite3": "^12.6.2", 30 + "heroicons": "^2.2.0", 31 + "ky": "^1.14.2", 32 + "valibot": "^1.2.0" 33 + } 26 34 }
+118
client/src/app.css
··· 1 + @layer theme, base, components, utilities; 2 + 3 + @import "tailwindcss/theme.css" layer(theme); 4 + @import "tailwindcss/preflight.css" layer(base); 5 + @import "tailwindcss/utilities.css" layer(utilities); 6 + 7 + @plugin "@tailwindcss/forms"; 8 + @plugin "./lib/plugins/heroicons.plugin.js"; 9 + 10 + @import "./styles/colors.css" layer(theme); 11 + @import "./styles/button.css" layer(components); 12 + @import "./styles/typography.css" layer(components); 13 + 14 + @utility container { 15 + padding-inline: var(--spacing-4); 16 + margin-inline: auto; 17 + } 18 + 19 + body { 20 + background-color: var(--color-base-100); 21 + } 22 + 23 + @theme { 24 + /* Spacing */ 25 + --spacing-px: 1px; 26 + --spacing-0: 0px; 27 + --spacing-0_5: 0.125rem; 28 + --spacing-1: 0.25rem; 29 + --spacing-1_5: 0.375rem; 30 + --spacing-2: 0.5rem; 31 + --spacing-2_5: 0.625rem; 32 + --spacing-3: 0.75rem; 33 + --spacing-3_5: 0.875rem; 34 + --spacing-4: 1rem; 35 + --spacing-4_5: 1.125rem; 36 + --spacing-5: 1.25rem; 37 + --spacing-6: 1.5rem; 38 + --spacing-7: 1.75rem; 39 + --spacing-8: 2rem; 40 + --spacing-9: 2.25rem; 41 + --spacing-10: 2.5rem; 42 + --spacing-11: 2.75rem; 43 + --spacing-12: 3rem; 44 + --spacing-14: 3.5rem; 45 + --spacing-16: 4rem; 46 + --spacing-18: 4.5rem; 47 + --spacing-20: 5rem; 48 + --spacing-22: 5.5rem; 49 + --spacing-24: 6rem; 50 + --spacing-28: 7rem; 51 + --spacing-32: 8rem; 52 + --spacing-36: 9rem; 53 + --spacing-40: 10rem; 54 + --spacing-44: 11rem; 55 + --spacing-48: 12rem; 56 + --spacing-52: 13rem; 57 + --spacing-56: 14rem; 58 + --spacing-60: 15rem; 59 + --spacing-64: 16rem; 60 + --spacing-72: 18rem; 61 + --spacing-80: 20rem; 62 + --spacing-96: 24rem; 63 + 64 + /* Widths */ 65 + --width-3xs: 16rem; 66 + --width-2xs: 18rem; 67 + --width-xs: 20rem; 68 + --width-sm: 24rem; 69 + --width-md: 28rem; 70 + --width-lg: 32rem; 71 + --width-xl: 36rem; 72 + --width-2xl: 42rem; 73 + --width-3xl: 48rem; 74 + --width-4xl: 56rem; 75 + --width-5xl: 64rem; 76 + --width-6xl: 72rem; 77 + --width-7xl: 80rem; 78 + --width-prose: 65ch; 79 + 80 + /* Line height */ 81 + --leading-tighter: 1.175; 82 + --leading-tight: 1.25; 83 + --leading-snug: 1.375; 84 + --leading-normal: 1.5; 85 + --leading-relaxed: 1.625; 86 + --leading-loose: 2; 87 + } 88 + 89 + @theme inline { 90 + --color-base-100: var(--theme-color-base-100); 91 + --color-base-200: var(--theme-color-base-200); 92 + --color-base-300: var(--theme-color-base-300); 93 + --color-content-100: var(--theme-color-content-100); 94 + --color-content-200: var(--theme-color-content-200); 95 + --color-content-300: var(--theme-color-content-300); 96 + --color-muted-100: var(--theme-color-muted-100); 97 + --color-muted-200: var(--theme-color-muted-200); 98 + --color-muted-300: var(--theme-color-muted-300); 99 + --color-primary: var(--theme-color-primary); 100 + --color-primary-contrast: var(--theme-color-primary-contrast); 101 + --color-secondary: var(--theme-color-secondary); 102 + --color-secondary-contrast: var(--theme-color-secondary-contrast); 103 + --color-success: var(--theme-color-success); 104 + --color-success-contrast: var(--theme-color-success-contrast); 105 + --color-warning: var(--theme-color-warning); 106 + --color-warning-contrast: var(--theme-color-warning-contrast); 107 + --color-danger: var(--theme-color-danger); 108 + --color-danger-contrast: var(--theme-color-danger-contrast); 109 + } 110 + 111 + .icon { 112 + mask-repeat: no-repeat; 113 + background-color: currentColor; 114 + vertical-align: middle; 115 + display: inline-block; 116 + width: var(--spacing-4); 117 + height: var(--spacing-4); 118 + }
+13 -7
client/src/app.d.ts
··· 1 1 // See https://svelte.dev/docs/kit/types#app.d.ts 2 + 3 + import type { Session, User } from "better-auth"; 4 + 2 5 // for information about these interfaces 3 6 declare global { 4 - namespace App { 5 - // interface Error {} 6 - // interface Locals {} 7 - // interface PageData {} 8 - // interface PageState {} 9 - // interface Platform {} 10 - } 7 + namespace App { 8 + // interface Error {} 9 + interface Locals { 10 + user: User; 11 + session: Session; 12 + } 13 + // interface PageData {} 14 + // interface PageState {} 15 + // interface Platform {} 16 + } 11 17 } 12 18 13 19 export {};
+30
client/src/hooks.server.ts
··· 1 + import { auth } from "$lib/auth/server"; // path to your auth file 2 + import { svelteKitHandler } from "better-auth/svelte-kit"; 3 + import { building } from "$app/environment"; 4 + import { sequence } from "@sveltejs/kit/hooks"; 5 + import type { Handle } from "@sveltejs/kit"; 6 + 7 + const betterAuth: Handle = async ({ event, resolve }) => { 8 + const session = await auth.api.getSession({ 9 + headers: event.request.headers, 10 + }); 11 + 12 + if (session) { 13 + event.locals.session = session.session; 14 + event.locals.user = session.user; 15 + } 16 + 17 + return svelteKitHandler({ event, resolve, auth, building }); 18 + }; 19 + 20 + const protectDashboard: Handle = async ({ event, resolve }) => { 21 + if (event.url.pathname.startsWith("/dashboard")) { 22 + if (!event.locals.session) { 23 + return new Response("Unauthorized", { status: 401 }); 24 + } 25 + } 26 + 27 + return resolve(event); 28 + }; 29 + 30 + export const handle = sequence(betterAuth, protectDashboard);
+2
client/src/lib/auth/client.ts
··· 1 + import { createAuthClient } from "better-auth/svelte"; 2 + export const authClient = createAuthClient({});
+13
client/src/lib/auth/server.ts
··· 1 + import { getRequestEvent } from "$app/server"; 2 + import { betterAuth } from "better-auth"; 3 + import { jwt } from "better-auth/plugins"; 4 + import { sveltekitCookies } from "better-auth/svelte-kit"; 5 + import Database from "better-sqlite3"; 6 + 7 + export const auth = betterAuth({ 8 + database: new Database("../private/database/auth.db"), 9 + emailAndPassword: { 10 + enabled: true, 11 + }, 12 + plugins: [jwt(), sveltekitCookies(getRequestEvent)], 13 + });
+26
client/src/lib/components/content/Description.svelte
··· 1 + <script lang="ts"> 2 + import type { Snippet } from "svelte"; 3 + import type { HTMLAttributes } from "svelte/elements"; 4 + 5 + type Props = HTMLAttributes<HTMLSpanElement> & { 6 + children: Snippet; 7 + }; 8 + 9 + let { children, ...props }: Props = $props(); 10 + </script> 11 + 12 + <small {...props}> 13 + {@render children()} 14 + </small> 15 + 16 + <style> 17 + small { 18 + font-size: var(--text-sm); 19 + font-weight: var(--font-weight-normal); 20 + line-height: var(--leading-tighter); 21 + color: var(--color-content-200); 22 + display: inline-block; 23 + width: fit-content; 24 + max-width: 100%; 25 + } 26 + </style>
+46
client/src/lib/components/content/Error.svelte
··· 1 + <script lang="ts"> 2 + import type { HTMLAttributes } from "svelte/elements"; 3 + import Icon from "$lib/components/content/Icon.svelte"; 4 + 5 + type Props = HTMLAttributes<HTMLSpanElement> & { 6 + messages?: string[] | string; 7 + }; 8 + 9 + let { messages, ...props }: Props = $props(); 10 + 11 + let messages_ = $derived( 12 + typeof messages === "string" ? [messages] : messages, 13 + ); 14 + </script> 15 + 16 + {#if (messages_ ?? []).length > 0} 17 + <div class="messages"> 18 + {#each messages as message} 19 + <span {...props}> 20 + <Icon name="hero-exclamation-circle-mini" /> 21 + {message} 22 + </span> 23 + {/each} 24 + </div> 25 + {/if} 26 + 27 + <style> 28 + .messages { 29 + display: flex; 30 + flex-direction: column; 31 + gap: var(--spacing-0_5); 32 + } 33 + 34 + span { 35 + display: inline-flex; 36 + align-items: center; 37 + gap: var(--spacing-1); 38 + color: var(--color-danger); 39 + font-size: var(--text-sm); 40 + line-height: var(--leading-tighter); 41 + } 42 + 43 + span > :global(.icon) { 44 + color: var(--color-danger); 45 + } 46 + </style>
+10
client/src/lib/components/content/Icon.svelte
··· 1 + <script lang="ts"> 2 + type Props = { 3 + name: string; 4 + class?: string; 5 + }; 6 + 7 + let { name, class: class_ }: Props = $props(); 8 + </script> 9 + 10 + <span class={["icon", name, class_]}></span>
+14
client/src/lib/components/content/Label.svelte
··· 1 + <script lang="ts"> 2 + import type { Snippet } from "svelte"; 3 + import type { HTMLLabelAttributes } from "svelte/elements"; 4 + 5 + type Props = HTMLLabelAttributes & { 6 + children: Snippet; 7 + }; 8 + 9 + let { children, ...props }: Props = $props(); 10 + </script> 11 + 12 + <label class="label" {...props}> 13 + {@render children()} 14 + </label>
+32
client/src/lib/components/interaction/Back.svelte
··· 1 + <script lang="ts"> 2 + import Icon from "$lib/components/content/Icon.svelte"; 3 + 4 + type Props = { 5 + href: string; 6 + label?: string; 7 + }; 8 + 9 + let { href, label = "Go back" }: Props = $props(); 10 + </script> 11 + 12 + <div class="back"> 13 + <a {href}> 14 + <Icon name="hero-arrow-left" /> 15 + <span class="label"> 16 + {label} 17 + </span> 18 + </a> 19 + </div> 20 + 21 + <style> 22 + div { 23 + height: max-content; 24 + display: flex; 25 + } 26 + 27 + .back > :global(a) { 28 + display: inline-flex; 29 + align-items: center; 30 + gap: 0.5rem; 31 + } 32 + </style>
+40
client/src/lib/components/interaction/Button.svelte
··· 1 + <script lang="ts"> 2 + import Icon from "$lib/components/content/Icon.svelte"; 3 + import type { ButtonProps } from "$lib/types"; 4 + 5 + let { 6 + children, 7 + icon, 8 + shape = "square", 9 + scheme = "default", 10 + variant = "default", 11 + icon_position = "left", 12 + class: class_, 13 + ...rest 14 + }: ButtonProps = $props(); 15 + 16 + let classes = $derived([ 17 + scheme === "default" && "scheme-default", 18 + scheme === "primary" && "scheme-primary", 19 + variant === "default" && "variant-default", 20 + variant === "text" && "variant-text", 21 + shape === "square" && "shape-square", 22 + shape === "rounded" && "shape-rounded", 23 + shape === "circle" && "shape-circle", 24 + icon !== undefined && "with-icon", 25 + "button", 26 + class_, 27 + ]); 28 + </script> 29 + 30 + <button class={classes} {...rest}> 31 + {#if icon && icon_position === "left"} 32 + <Icon name={icon} /> 33 + {/if} 34 + {#if children} 35 + {@render children()} 36 + {/if} 37 + {#if icon && icon_position === "right"} 38 + <Icon name={icon} /> 39 + {/if} 40 + </button>
+34
client/src/lib/components/interaction/Checkbox.svelte
··· 1 + <script lang="ts"> 2 + import { type InputProps } from "$lib/types"; 3 + let randomID = $props.id(); 4 + let { 5 + id = randomID, 6 + checked = $bindable(), 7 + ...props 8 + }: InputProps = $props(); 9 + </script> 10 + 11 + <input {id} type="checkbox" {...props} bind:checked /> 12 + 13 + <style> 14 + input { 15 + height: var(--spacing-4); 16 + width: var(--spacing-4); 17 + border: var(--theme-default-border); 18 + color: color-mix(in srgb, var(--color-accent-700) 75%, white); 19 + background-color: var(--color-base-300); 20 + 21 + &:checked { 22 + border-color: var(--color-base-content); 23 + background-color: var(--color-content-100); 24 + } 25 + 26 + &:focus { 27 + box-shadow: none; 28 + } 29 + 30 + &:focus { 31 + outline: 2px solid var(--color-primary); 32 + } 33 + } 34 + </style>
+141
client/src/lib/components/interaction/Field.svelte
··· 1 + <script lang="ts"> 2 + import type { InputProps, SelectProps } from "$lib/types"; 3 + import type { Snippet } from "svelte"; 4 + import Select from "$lib/components/interaction/Select.svelte"; 5 + import Input from "$lib/components/interaction/Input.svelte"; 6 + import Label from "$lib/components/content/Label.svelte"; 7 + import Error from "$lib/components/content/Error.svelte"; 8 + import Description from "$lib/components/content/Description.svelte"; 9 + import Checkbox from "$lib/components/interaction/Checkbox.svelte"; 10 + 11 + let randomID = $props.id(); 12 + 13 + type Content = Snippet | string; 14 + 15 + type BaseProps = { 16 + label?: Content | undefined; 17 + errors?: string[] | string | undefined; 18 + description?: Content | undefined; 19 + children?: Snippet | undefined; 20 + checked?: boolean; 21 + description_and_errors?: boolean; 22 + }; 23 + 24 + type Props = 25 + | ({ as: "select" } & SelectProps & BaseProps) 26 + | ({ as: "input" } & InputProps & BaseProps) 27 + | ({ as: "checkbox" } & InputProps & BaseProps); 28 + 29 + let { 30 + label: label, 31 + errors: errors, 32 + description: description, 33 + as: as, 34 + id = randomID, 35 + description_and_errors = false, 36 + value = $bindable(), 37 + checked = $bindable(), 38 + ...props 39 + }: Props = $props(); 40 + </script> 41 + 42 + <div class={[as, "field"]}> 43 + <div class="label"> 44 + {#if label} 45 + {#if typeof label === "string"} 46 + <Label for={id}>{label}</Label> 47 + {:else} 48 + {@render label()} 49 + {/if} 50 + {/if} 51 + </div> 52 + 53 + <div class="interaction"> 54 + {#if as === "select"} 55 + <Select 56 + {id} 57 + aria-describedby={description !== undefined 58 + ? id + "-description" 59 + : undefined} 60 + {...props as SelectProps} 61 + /> 62 + {:else if as === "input"} 63 + <Input 64 + {id} 65 + bind:value 66 + aria-describedby={description !== undefined 67 + ? id + "-description" 68 + : undefined} 69 + {...props as InputProps} 70 + /> 71 + {:else if as === "checkbox"} 72 + <Checkbox 73 + {id} 74 + bind:checked 75 + aria-describedby={description !== undefined 76 + ? id + "-description" 77 + : undefined} 78 + {...props as InputProps} 79 + /> 80 + {/if} 81 + </div> 82 + 83 + {#if description && ((errors ?? []).length === 0 || description_and_errors)} 84 + <div class="description"> 85 + {#if typeof description === "string"} 86 + <Description id={id + "-description"}>{description}</Description> 87 + {:else} 88 + {@render description()} 89 + {/if} 90 + </div> 91 + {/if} 92 + 93 + {#if (errors ?? []).length > 0} 94 + <div class="error"> 95 + <Error messages={errors} /> 96 + </div> 97 + {/if} 98 + </div> 99 + 100 + <style> 101 + .field { 102 + display: grid; 103 + grid-template-columns: var(--spacing-4) 1fr; 104 + column-gap: var(--spacing-2); 105 + row-gap: var(--spacing-1); 106 + } 107 + 108 + .label { 109 + grid-column: 1 / 3; 110 + display: flex; 111 + } 112 + 113 + .field.checkbox > .label { 114 + grid-row: 1 / 2; 115 + grid-column: 2 / 3; 116 + align-self: center; 117 + } 118 + 119 + .interaction { 120 + grid-column: 1 / 3; 121 + } 122 + 123 + .field.checkbox .interaction { 124 + grid-column: 1 / 2; 125 + grid-row: 1 / 2; 126 + height: var(--spacing-4); 127 + align-self: center; 128 + display: flex; 129 + } 130 + 131 + .description { 132 + grid-column: 1 / 3; 133 + height: max-content; 134 + display: flex; 135 + } 136 + 137 + .error { 138 + grid-column: 1 / 3; 139 + display: flex; 140 + } 141 + </style>
+53
client/src/lib/components/interaction/Input.svelte
··· 1 + <script lang="ts"> 2 + import { type InputProps } from "$lib/types"; 3 + let randomID = $props.id(); 4 + let { 5 + name, 6 + id = randomID, 7 + value = $bindable(), 8 + ...props 9 + }: InputProps = $props(); 10 + </script> 11 + 12 + <input {name} {id} {...props} bind:value /> 13 + 14 + <style> 15 + input { 16 + font-weight: var(--font-weight-normal); 17 + color: var(--color-content-100); 18 + display: block; 19 + border-style: solid; 20 + border-color: var(--color-muted-200); 21 + border-width: 1px; 22 + padding-inline: var(--spacing-3); 23 + height: var(--spacing-10); 24 + width: 100%; 25 + box-shadow: var(--shadow-xs); 26 + background-color: hsl(from var(--color-base-100) h s 90%); 27 + font-size: var(--text-base); 28 + line-height: var(--text-base--line-height); 29 + 30 + @media (width >= 40rem) { 31 + height: var(--spacing-10); 32 + font-size: var(--text-sm); 33 + line-height: var(--spacing-6); 34 + } 35 + 36 + outline-offset: 0px; 37 + &:focus, 38 + &:focus-visible { 39 + outline: 1px solid var(--color-primary); 40 + border-color: var(--color-primary); 41 + } 42 + 43 + &[aria-invalid="true"] { 44 + border-color: var(--color-error); 45 + } 46 + 47 + &:disabled { 48 + color: var(--color-muted-300); 49 + border-color: var(--color-muted-100); 50 + cursor: not-allowed; 51 + } 52 + } 53 + </style>
+45
client/src/lib/components/interaction/Link.svelte
··· 1 + <script lang="ts"> 2 + import Icon from "$lib/components/content/Icon.svelte"; 3 + import type { LinkProps } from "$lib/types"; 4 + 5 + let { 6 + children, 7 + icon, 8 + href, 9 + shape = "square", 10 + scheme = "default", 11 + variant = "default", 12 + icon_position = "left", 13 + class: class_, 14 + ...rest 15 + }: LinkProps = $props(); 16 + 17 + let classes = $derived([ 18 + scheme === "default" && "scheme-default", 19 + scheme === "primary" && "scheme-primary", 20 + variant === "default" && "variant-default", 21 + variant === "text" && "variant-text", 22 + shape === "square" && "shape-square", 23 + shape === "rounded" && "shape-rounded", 24 + shape === "circle" && "shape-circle", 25 + icon !== undefined && "with-icon", 26 + "button", 27 + class_, 28 + ]); 29 + </script> 30 + 31 + {#snippet content()} 32 + {#if icon && icon_position === "left"} 33 + <Icon name={icon} /> 34 + {/if} 35 + {#if children} 36 + {@render children()} 37 + {/if} 38 + {#if icon && icon_position === "right"} 39 + <Icon name={icon} /> 40 + {/if} 41 + {/snippet} 42 + 43 + <a class={classes} {href} {...rest}> 44 + {@render content()} 45 + </a>
+65
client/src/lib/components/interaction/Select.svelte
··· 1 + <script lang="ts"> 2 + import type { SelectProps } from "$lib/types"; 3 + 4 + let randomID = $props.id(); 5 + 6 + let { 7 + name, 8 + id = randomID, 9 + value = $bindable(), 10 + values, 11 + ...props 12 + }: SelectProps = $props(); 13 + </script> 14 + 15 + <select {name} {id} bind:value {...props}> 16 + {#each values as item} 17 + <option 18 + value={item.value} 19 + disabled={item.disabled} 20 + selected={item.current}>{item.label}</option 21 + > 22 + {/each} 23 + </select> 24 + 25 + <style> 26 + select { 27 + font-weight: var(--font-weight-normal); 28 + color: var(--color-content-100); 29 + display: block; 30 + border-style: solid; 31 + border-color: var(--color-muted-200); 32 + border-width: 1px; 33 + padding-inline: var(--spacing-3); 34 + height: var(--spacing-10); 35 + width: 100%; 36 + box-shadow: var(--shadow-xs); 37 + border-radius: var(--radius-interactive); 38 + background-color: hsl(from var(--color-base-100) h s 90%); 39 + font-size: var(--text-base); 40 + line-height: var(--text-base--line-height); 41 + 42 + @media (width >= 40rem) { 43 + height: var(--spacing-10); 44 + font-size: var(--text-sm); 45 + line-height: var(--spacing-6); 46 + } 47 + 48 + outline-offset: 0px; 49 + &:focus, 50 + &:focus-visible { 51 + outline: 1px solid var(--color-primary); 52 + border-color: var(--color-primary); 53 + } 54 + 55 + &[aria-invalid="true"] { 56 + border-color: var(--color-error); 57 + } 58 + 59 + &:disabled { 60 + color: var(--color-muted-300); 61 + border-color: var(--color-muted-100); 62 + cursor: not-allowed; 63 + } 64 + } 65 + </style>
+32
client/src/lib/components/interaction/Setting.svelte
··· 1 + <script lang="ts"> 2 + import type { Snippet } from "svelte"; 3 + import Button from "$lib/components/interaction/Button.svelte"; 4 + 5 + type Props = { 6 + value: Snippet; 7 + save: () => boolean; 8 + field: Snippet; 9 + direction: "horizontal" | "vertical"; 10 + }; 11 + 12 + let editing = $state(false); 13 + 14 + let { value, save, field, direction = "horizontal" }: Props = $props(); 15 + </script> 16 + 17 + <div class={direction}> 18 + {#if editing} 19 + {@render field()} 20 + <Button 21 + variant="text" 22 + onclick={() => { 23 + if (save()) { 24 + editing = false; 25 + } 26 + }}>Save</Button 27 + > 28 + {:else} 29 + {@render value()} 30 + <Button variant="text" onclick={() => (editing = true)}>Edit</Button> 31 + {/if} 32 + </div>
client/src/lib/components/interaction/Switch.svelte

This is a binary file and will not be displayed.

client/src/lib/components/interaction/Textarea.svelte

This is a binary file and will not be displayed.

+33
client/src/lib/index.ts
··· 1 1 // place files you want to import through the `$lib` alias in this folder. 2 + 3 + import ky, { type KyInstance, type Options, type ResponsePromise } from "ky"; 4 + import { auth } from "$lib/auth/server"; 5 + import * as v from "valibot"; 6 + 7 + export const api = ky.create({ 8 + fetch: fetch, 9 + json: true, 10 + prefixUrl: "http://localhost:3000", 11 + hooks: { 12 + beforeRequest: [ 13 + (request) => { 14 + const token = auth.api.getToken({ 15 + headers: request.headers, 16 + }); 17 + request.headers.set("Authorization", `Bearer ${token}`); 18 + }, 19 + ], 20 + }, 21 + }); 22 + 23 + export type Endpoint = { 24 + method: "get" | "post" | "put" | "delete" | "patch"; 25 + url: string; 26 + }; 27 + 28 + export function call<T>( 29 + instance: KyInstance, 30 + endpoint: Endpoint, 31 + options = {} as Options, 32 + ): ResponsePromise<T> { 33 + return instance<T>(endpoint.url, { method: endpoint.method, ...options }); 34 + }
+50
client/src/lib/plugins/heroicons.plugin.js
··· 1 + // Taken from the phoenix framework 2 + 3 + import plugin from "tailwindcss/plugin"; 4 + import { readdirSync, readFileSync } from "fs"; 5 + import { join, basename, dirname } from "path"; 6 + import { fileURLToPath } from "url"; 7 + 8 + const __dirname = dirname(fileURLToPath(import.meta.url)); 9 + 10 + export default plugin(function ({ matchComponents, theme }) { 11 + let iconsDir = join(__dirname, "../../../node_modules/heroicons"); 12 + let values = {}; 13 + let icons = [ 14 + ["", "/24/outline"], 15 + ["-solid", "/24/solid"], 16 + ["-mini", "/20/solid"], 17 + ["-micro", "/16/solid"], 18 + ]; 19 + icons.forEach(([suffix, dir]) => { 20 + readdirSync(join(iconsDir, dir)).forEach((file) => { 21 + let name = basename(file, ".svg") + suffix; 22 + // @ts-ignore 23 + values[name] = { name, fullPath: join(iconsDir, dir, file) }; 24 + }); 25 + }); 26 + matchComponents( 27 + { 28 + // @ts-ignore 29 + hero: ({ name, fullPath }) => { 30 + let content = readFileSync(fullPath) 31 + .toString() 32 + .replace(/\r?\n|\r/g, ""); 33 + content = encodeURIComponent(content); 34 + let size = theme("spacing.6"); 35 + if (name.endsWith("-mini")) { 36 + size = theme("spacing.5"); 37 + } else if (name.endsWith("-micro")) { 38 + size = theme("spacing.4"); 39 + } 40 + return { 41 + [`--hero-${name}`]: `url('data:image/svg+xml;utf8,${content}')`, 42 + "-webkit-mask": `var(--hero-${name})`, 43 + mask: `var(--hero-${name})`, 44 + }; 45 + }, 46 + }, 47 + // @ts-ignore 48 + { values }, 49 + ); 50 + });
+11
client/src/lib/schemas/requests.ts
··· 1 + import * as v from "valibot"; 2 + 3 + export const LoginSchema = v.object({ 4 + email: v.pipe(v.string(), v.email(), v.nonEmpty()), 5 + password: v.pipe(v.string(), v.nonEmpty()), 6 + name: v.pipe(v.string(), v.nonEmpty()), 7 + }); 8 + 9 + export type FormErrors<TSchema extends v.GenericSchema> = ReturnType< 10 + typeof v.flatten<TSchema> 11 + >["nested"];
+53
client/src/lib/types.ts
··· 1 + import type { Snippet } from "svelte"; 2 + import type { 3 + HTMLAnchorAttributes, 4 + HTMLButtonAttributes, 5 + HTMLInputAttributes, 6 + HTMLSelectAttributes, 7 + } from "svelte/elements"; 8 + import type { GenericSchema, InferInput } from "valibot"; 9 + 10 + export type NavigationItemProps = { 11 + label: string; 12 + href: string | MethodURL; 13 + view?: string; 14 + }; 15 + 16 + export type Method = "get" | "post" | "put" | "patch" | "delete"; 17 + 18 + export type MethodURL = { 19 + method: Method; 20 + url: string; 21 + }; 22 + 23 + export type SelectProps = HTMLSelectAttributes & { 24 + values: { 25 + label: string; 26 + value: string; 27 + current?: boolean; 28 + disabled?: boolean; 29 + }[]; 30 + }; 31 + 32 + export type InputProps = HTMLInputAttributes; 33 + 34 + type ButtonPropsExtension = { 35 + children?: Snippet; 36 + scheme?: "default" | "primary"; 37 + variant?: "default" | "text"; 38 + shape?: "square" | "rounded" | "circle"; 39 + icon?: string; 40 + icon_position?: "left" | "right"; 41 + }; 42 + 43 + export type ButtonProps = ButtonPropsExtension & HTMLButtonAttributes; 44 + export type LinkProps = Omit<HTMLAnchorAttributes, "href"> & 45 + ButtonPropsExtension & { 46 + external?: boolean; 47 + disabled?: boolean; 48 + href: string; 49 + }; 50 + 51 + export type Errors<T extends GenericSchema> = { 52 + [K in keyof InferInput<T>]?: string[] | undefined | string; 53 + };
+3 -3
client/src/routes/+layout.svelte
··· 1 1 <script lang="ts"> 2 - import './layout.css'; 3 - import favicon from '$lib/assets/favicon.svg'; 2 + import "../app.css"; 3 + import favicon from "$lib/assets/favicon.svg"; 4 4 5 - let { children } = $props(); 5 + let { children } = $props(); 6 6 </script> 7 7 8 8 <svelte:head><link rel="icon" href={favicon} /></svelte:head>
+8 -1
client/src/routes/+page.svelte
··· 1 1 <h1>Welcome to SvelteKit</h1> 2 - <p>Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation</p> 2 + <p> 3 + Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the 4 + documentation 5 + </p> 6 + 7 + <a href="/authentication/signup"> Sign Up </a> 8 + 9 + <a href="/authentication/signin"> Login </a>
+49
client/src/routes/authentication/+layout.svelte
··· 1 + <script lang="ts"> 2 + import type { Snippet } from "svelte"; 3 + 4 + type Props = { 5 + children: Snippet; 6 + }; 7 + 8 + let { children }: Props = $props(); 9 + </script> 10 + 11 + <main> 12 + <section> 13 + {@render children()} 14 + </section> 15 + </main> 16 + 17 + <style> 18 + main { 19 + background-color: var(--color-primary); 20 + display: grid; 21 + place-items: center; 22 + height: 100vh; 23 + 24 + @media (width < 48rem) { 25 + padding: var(--spacing-4); 26 + } 27 + 28 + @media (width >= 48rem) { 29 + justify-items: end; 30 + } 31 + } 32 + 33 + section { 34 + display: flex; 35 + flex-direction: column; 36 + justify-content: center; 37 + gap: var(--spacing-4); 38 + box-shadow: var(--shadow-lg); 39 + background-color: var(--color-base-300); 40 + padding: var(--spacing-6); 41 + width: 100%; 42 + max-width: var(--width-lg); 43 + 44 + @media (width >= 48rem) { 45 + padding: var(--spacing-8); 46 + height: 100%; 47 + } 48 + } 49 + </style>
+42
client/src/routes/authentication/signin/+page.svelte
··· 1 + <script lang="ts"> 2 + import Back from "$lib/components/interaction/Back.svelte"; 3 + import Button from "$lib/components/interaction/Button.svelte"; 4 + import Field from "$lib/components/interaction/Field.svelte"; 5 + </script> 6 + 7 + <header class="header"> 8 + <hgroup> 9 + <h1 class="h1">Login</h1> 10 + <p class="subtitle"> 11 + Don't have an account yet? Go to the <a href="/authentication/signup" 12 + >register</a 13 + > page to create an account. 14 + </p> 15 + </hgroup> 16 + </header> 17 + 18 + <Back href="/" label="Go back home" /> 19 + 20 + <form> 21 + <Field as="input" type="text" label="Email" description="Enter your email" /> 22 + <Field 23 + as="input" 24 + type="password" 25 + label="Password" 26 + description="Enter your password" 27 + /> 28 + <Field 29 + as="checkbox" 30 + label="Remember me" 31 + description="We will keep you logged in for 30 days" 32 + /> 33 + <Button scheme="primary">Submit</Button> 34 + </form> 35 + 36 + <style> 37 + form { 38 + display: flex; 39 + flex-direction: column; 40 + gap: var(--spacing-4); 41 + } 42 + </style>
+42
client/src/routes/authentication/signup/+page.server.ts
··· 1 + import { auth } from "$lib/auth/server"; 2 + import { LoginSchema, type FormErrors } from "$lib/schemas/requests"; 3 + import type { Errors } from "$lib/types"; 4 + import { fail, redirect, type Actions } from "@sveltejs/kit"; 5 + import { APIError } from "better-auth"; 6 + import * as v from "valibot"; 7 + 8 + export const actions: Actions = { 9 + default: async ({ request }) => { 10 + const data = Object.fromEntries(await request.formData()); 11 + 12 + let result = v.safeParse(LoginSchema, data); 13 + 14 + if (!result.success) { 15 + return fail(400, { 16 + errors: v.flatten(result.issues).nested as Errors<typeof LoginSchema>, 17 + data: data, 18 + }); 19 + } 20 + 21 + try { 22 + await auth.api.signUpEmail({ 23 + body: { 24 + email: result.output.email, 25 + password: result.output.password, 26 + name: result.output.name, 27 + }, 28 + }); 29 + } catch (error) { 30 + if (error instanceof APIError) { 31 + return { 32 + success: false, 33 + errors: { email: "Something went wrong" } as Errors< 34 + typeof LoginSchema 35 + >, 36 + }; 37 + } 38 + } 39 + 40 + return redirect(303, "/"); 41 + }, 42 + };
+67
client/src/routes/authentication/signup/+page.svelte
··· 1 + <script lang="ts"> 2 + import { enhance } from "$app/forms"; 3 + import Back from "$lib/components/interaction/Back.svelte"; 4 + import Button from "$lib/components/interaction/Button.svelte"; 5 + import Field from "$lib/components/interaction/Field.svelte"; 6 + import type { PageProps } from "./$types"; 7 + 8 + let { form }: PageProps = $props(); 9 + </script> 10 + 11 + <header class="header"> 12 + <hgroup> 13 + <h1 class="h1">Register</h1> 14 + <p class="subtitle"> 15 + Create a new account to start using the application. Already have an 16 + account? <a href="/authentication/signin">Login</a> 17 + </p> 18 + </hgroup> 19 + </header> 20 + 21 + <Back href="/" label="Go back home" /> 22 + 23 + <form method="POST" use:enhance> 24 + <Field 25 + as="input" 26 + type="text" 27 + label="Email" 28 + description="Enter your email" 29 + name="email" 30 + value={form?.data?.email} 31 + errors={form?.errors?.email} 32 + /> 33 + <Field 34 + as="input" 35 + type="text" 36 + label="Name" 37 + description="Enter your name" 38 + name="name" 39 + value={form?.data?.name} 40 + errors={form?.errors?.name} 41 + /> 42 + <Field 43 + as="input" 44 + name="password" 45 + type="password" 46 + label="Password" 47 + value={form?.data?.password} 48 + errors={form?.errors?.password} 49 + description="Enter your password" 50 + /> 51 + <Field 52 + as="input" 53 + type="password" 54 + name="confirmPassword" 55 + label="Confirm password" 56 + description="Confirm your password" 57 + /> 58 + <Button scheme="primary">submit</Button> 59 + </form> 60 + 61 + <style> 62 + form { 63 + display: flex; 64 + flex-direction: column; 65 + gap: var(--spacing-4); 66 + } 67 + </style>
-2
client/src/routes/layout.css
··· 1 - @import 'tailwindcss'; 2 - @plugin '@tailwindcss/forms';
+5
client/src/routes/library/artists/+page.svelte
··· 1 + <script lang="ts"> 2 + import type { PageProps } from "./$types"; 3 + 4 + let { data }: PageProps = $props(); 5 + </script>
+83
client/src/styles/button.css
··· 1 + .button { 2 + font-size: var(--text-sm); 3 + font-weight: var(--font-weight-medium); 4 + display: inline-flex; 5 + align-items: center; 6 + justify-content: center; 7 + text-align: center; 8 + } 9 + 10 + .button.variant-default { 11 + gap: var(--spacing-1); 12 + line-height: var(--text-sm--line-height); 13 + height: var(--spacing-10); 14 + 15 + padding-inline: var(--padding-inline); 16 + border: 1px solid var(--border-color); 17 + 18 + background-color: var(--bg-color); 19 + color: var(--text-color); 20 + 21 + &:hover:not(:where(:disabled, .state-disabled)) { 22 + background-color: hsl(from var(--bg-color) h calc(s * 0.8) l / 0.8); 23 + } 24 + 25 + &:active { 26 + color: hsl(from var(--text-color) h s l / 0.75); 27 + } 28 + 29 + &:disabled, 30 + &.state-disabled { 31 + pointer-events: none; 32 + color: hsl(from var(--text-color) h s l / 0.75); 33 + background-color: hsl(from var(--bg-color) h calc(s * 0.8) l / 0.8); 34 + 35 + &:hover { 36 + cursor: not-allowed; 37 + } 38 + } 39 + 40 + &.with-icon > .icon { 41 + width: var(--spacing-5); 42 + height: var(--spacing-5); 43 + } 44 + } 45 + 46 + .button.variant-text { 47 + gap: var(--spacing-0_5); 48 + line-height: var(--leading-tight); 49 + height: var(--spacing-4); 50 + } 51 + 52 + .button.variant-text > .icon { 53 + margin-bottom: -2px; 54 + } 55 + 56 + .button.shape-square { 57 + --border-radius: var(--radius-md); 58 + --padding-inline: var(--spacing-3); 59 + } 60 + 61 + .button.shape-rounded { 62 + --border-radius: 9999px; 63 + --padding-inline: var(--spacing-3_5); 64 + } 65 + 66 + .button.shape-circle { 67 + --border-radius: 9999px; 68 + --padding-inline: var(--spacing-1); 69 + aspect-ratio: 1 / 1; 70 + width: var(--spacing-9); 71 + } 72 + 73 + .button.scheme-default { 74 + --bg-color: var(--color-secondary); 75 + --text-color: var(--color-secondary-contrast); 76 + --border-color: hsl(from var(--text-color) h s l / 0.5); 77 + } 78 + 79 + .button.scheme-primary { 80 + --bg-color: var(--color-primary); 81 + --text-color: var(--color-primary-contrast); 82 + --border-color: hsl(from var(--bg-color) h s calc(l * 0.25) / 1); 83 + }
+80
client/src/styles/colors.css
··· 1 + @layer theme { 2 + :root { 3 + --relative-l-100: 98%; 4 + --relative-l-200: 96%; 5 + --relative-l-300: 94%; 6 + --relative-l-400: 92%; 7 + --relative-l-500: 90%; 8 + --relative-l-600: 88%; 9 + --relative-l-700: 86%; 10 + --relative-l-800: 84%; 11 + --relative-l-900: 82%; 12 + --relative-l-950: 80%; 13 + 14 + --theme-color-base-100: var(--color-zinc-50); 15 + --theme-color-base-200: var(--color-zinc-100); 16 + --theme-color-base-300: #fff; 17 + 18 + --theme-color-content-100: var(--color-zinc-950); 19 + --theme-color-content-200: var(--color-zinc-800); 20 + --theme-color-content-300: var(--color-zinc-600); 21 + 22 + --theme-color-muted-100: var(--color-zinc-200); 23 + --theme-color-muted-200: var(--color-zinc-300); 24 + --theme-color-muted-300: var(--color-zinc-400); 25 + 26 + --theme-color-primary: var(--color-blue-600); 27 + --theme-color-primary-contrast: var(--color-blue-50); 28 + --theme-color-secondary: var(--color-blue-200); 29 + --theme-color-secondary-contrast: var(--color-blue-950); 30 + --theme-color-success: #00cc66; 31 + --theme-color-success-contrast: #fff; 32 + --theme-color-warning: #ff9900; 33 + --theme-color-warning-contrast: #fff; 34 + --theme-color-danger: #ff3333; 35 + --theme-color-danger-contrast: #fff; 36 + 37 + --theme-default-border: 1px solid var(--color-muted-200); 38 + } 39 + 40 + /*@media (prefers-color-scheme: dark) { 41 + :root { 42 + --mixin-color-light-100: #fff 20%; 43 + --mixin-color-light-200: #fff 50%; 44 + --mixin-color-light-300: #fff 80%; 45 + 46 + --mixin-color-dark-100: #000 20%; 47 + --mixin-color-dark-200: #000 50%; 48 + --mixin-color-dark-300: #000 80%; 49 + 50 + --theme-color-base-100: color-mix( 51 + in srgb, 52 + var(--color-zinc-900), 53 + var(--color-zinc-950) 54 + ); 55 + --theme-color-base-200: var(--color-zinc-900); 56 + --theme-color-base-300: var(--color-zinc-950); 57 + 58 + --theme-color-content-100: var(--color-zinc-50); 59 + --theme-color-content-200: var(--color-zinc-100); 60 + --theme-color-content-300: var(--color-zinc-400); 61 + 62 + --theme-color-muted-100: var(--color-zinc-800); 63 + --theme-color-muted-200: var(--color-zinc-700); 64 + --theme-color-muted-300: var(--color-zinc-500); 65 + 66 + --theme-color-primary: var(--color-blue-600); 67 + --theme-color-primary-contrast: var(--color-blue-50); 68 + --theme-color-secondary: var(--color-blue-200); 69 + --theme-color-secondary-contrast: var(--color-blue-950); 70 + --theme-color-success: #00cc66; 71 + --theme-color-success-contrast: #fff; 72 + --theme-color-warning: #ff9900; 73 + --theme-color-warning-contrast: #fff; 74 + --theme-color-danger: #ff3333; 75 + --theme-color-danger-contrast: #fff; 76 + 77 + --theme-default-border: 1px solid var(--color-muted-200); 78 + } 79 + }*/ 80 + }
+51
client/src/styles/typography.css
··· 1 + .h1 { 2 + font-size: var(--text-2xl); 3 + line-height: var(--leading-normal); 4 + font-weight: var(--font-weight-medium); 5 + color: var(--color-content-100); 6 + } 7 + 8 + .h2 { 9 + font-size: var(--text-lg); 10 + line-height: var(--leading-snug); 11 + font-weight: var(--font-weight-medium); 12 + color: var(--color-content-100); 13 + } 14 + 15 + .h3 { 16 + font-size: var(--text-sm); 17 + line-height: var(--leading-tight); 18 + font-weight: var(--font-weight-semibold); 19 + color: var(--color-content-100); 20 + text-transform: uppercase; 21 + } 22 + 23 + .subtitle { 24 + font-size: var(--text-sm); 25 + line-height: var(--text-sm--line-height); 26 + font-weight: var(--font-weight-normal); 27 + color: var(--color-content-300); 28 + } 29 + 30 + .subtitle > a { 31 + text-decoration: underline; 32 + } 33 + 34 + .subtitle > a:hover { 35 + color: var(--color-content-100); 36 + } 37 + 38 + /* Automatically add spacing between hgroup children, unless the hgroup has the class no-hgroup */ 39 + hgroup:not(.no-hgroup) { 40 + display: flex; 41 + flex-direction: column; 42 + } 43 + 44 + .label { 45 + font-size: var(--text-sm); 46 + font-weight: var(--font-weight-medium); 47 + line-height: var(--leading-tighter); 48 + color: var(--color-content-100); 49 + width: fit-content; 50 + max-width: 100%; 51 + }
+1 -1
cmd/bridge/main.go
··· 36 36 return errors.New("path is required") 37 37 } 38 38 39 - router := router.New(services.ArtistService{}, services.UserService{}, nil, &config.Config{}) 39 + router := router.New(services.ArtistService{}, services.UserService{}, &config.Config{}) 40 40 bridge.CreateRoutes(router.Router(), c.path) 41 41 42 42 return nil
+4 -6
go.mod
··· 3 3 go 1.24.5 4 4 5 5 require ( 6 + github.com/MicahParks/keyfunc/v3 v3.7.0 6 7 github.com/duckdb/duckdb-go/v2 v2.5.4 7 - github.com/ggicci/httpin v0.20.2 8 8 github.com/go-chi/chi/v5 v5.2.3 9 - github.com/gorilla/csrf v1.7.3 10 - github.com/gorilla/sessions v1.4.0 9 + github.com/golang-jwt/jwt/v5 v5.3.0 11 10 github.com/joho/godotenv v1.5.1 12 - golang.org/x/crypto v0.47.0 13 11 golang.org/x/sync v0.19.0 14 12 golang.org/x/tools v0.40.0 15 13 modernc.org/sqlite v1.44.1 16 14 ) 17 15 18 16 require ( 17 + github.com/MicahParks/jwkset v0.11.0 // indirect 19 18 github.com/apache/arrow-go/v18 v18.4.1 // indirect 20 19 github.com/duckdb/duckdb-go-bindings v0.1.24 // indirect 21 20 github.com/duckdb/duckdb-go-bindings/darwin-amd64 v0.1.24 // indirect ··· 26 25 github.com/duckdb/duckdb-go/arrowmapping v0.0.27 // indirect 27 26 github.com/duckdb/duckdb-go/mapping v0.0.27 // indirect 28 27 github.com/dustin/go-humanize v1.0.1 // indirect 29 - github.com/ggicci/owl v0.8.2 // indirect 30 28 github.com/go-viper/mapstructure/v2 v2.4.0 // indirect 31 29 github.com/goccy/go-json v0.10.5 // indirect 32 30 github.com/google/flatbuffers v25.9.23+incompatible // indirect 33 31 github.com/google/uuid v1.6.0 // indirect 34 - github.com/gorilla/securecookie v1.1.2 // indirect 35 32 github.com/klauspost/compress v1.18.2 // indirect 36 33 github.com/klauspost/cpuid/v2 v2.3.0 // indirect 37 34 github.com/mattn/go-isatty v0.0.20 // indirect ··· 43 40 golang.org/x/mod v0.31.0 // indirect 44 41 golang.org/x/sys v0.40.0 // indirect 45 42 golang.org/x/telemetry v0.0.0-20251208220230-2638a1023523 // indirect 43 + golang.org/x/time v0.9.0 // indirect 46 44 golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect 47 45 modernc.org/libc v1.67.6 // indirect 48 46 modernc.org/mathutil v1.7.1 // indirect
+8 -16
go.sum
··· 1 + github.com/MicahParks/jwkset v0.11.0 h1:yc0zG+jCvZpWgFDFmvs8/8jqqVBG9oyIbmBtmjOhoyQ= 2 + github.com/MicahParks/jwkset v0.11.0/go.mod h1:U2oRhRaLgDCLjtpGL2GseNKGmZtLs/3O7p+OZaL5vo0= 3 + github.com/MicahParks/keyfunc/v3 v3.7.0 h1:pdafUNyq+p3ZlvjJX1HWFP7MA3+cLpDtg69U3kITJGM= 4 + github.com/MicahParks/keyfunc/v3 v3.7.0/go.mod h1:z66bkCviwqfg2YUp+Jcc/xRE9IXLcMq6DrgV/+Htru0= 1 5 github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ= 2 6 github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= 3 7 github.com/apache/arrow-go/v18 v18.4.1 h1:q/jVkBWCJOB9reDgaIZIdruLQUb1kbkvOnOFezVH1C4= ··· 26 30 github.com/duckdb/duckdb-go/v2 v2.5.4/go.mod h1:CeobOFmWpf7MTDb+MW08/zIWP8TQ2jbPbMgGo5761tY= 27 31 github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= 28 32 github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= 29 - github.com/ggicci/httpin v0.20.2 h1:SmXSM/jg58H2W4+fIcF+6bo4JXQW/f8oeHYHYmwecmk= 30 - github.com/ggicci/httpin v0.20.2/go.mod h1:lQaLWTYNcs4eo8WoESBqqT4fUc9dgdIKeHweZMj17No= 31 - github.com/ggicci/owl v0.8.2 h1:og+lhqpzSMPDdEB+NJfzoAJARP7qCG3f8uUC3xvGukA= 32 - github.com/ggicci/owl v0.8.2/go.mod h1:PHRD57u41vFN5UtFz2SF79yTVoM3HlWpjMiE+ZU2dj4= 33 33 github.com/go-chi/chi/v5 v5.2.3 h1:WQIt9uxdsAbgIYgid+BpYc+liqQZGMHRaUwp0JUcvdE= 34 34 github.com/go-chi/chi/v5 v5.2.3/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops= 35 35 github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= 36 36 github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= 37 37 github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= 38 38 github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= 39 + github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= 40 + github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= 39 41 github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= 40 42 github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 41 43 github.com/google/flatbuffers v25.9.23+incompatible h1:rGZKv+wOb6QPzIdkM2KxhBZCDrA0DeN6DNmRDrqIsQU= 42 44 github.com/google/flatbuffers v25.9.23+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= 43 45 github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= 44 46 github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 45 - github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= 46 - github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= 47 47 github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs= 48 48 github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= 49 49 github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= 50 50 github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 51 - github.com/gorilla/csrf v1.7.3 h1:BHWt6FTLZAb2HtWT5KDBf6qgpZzvtbp9QWDRKZMXJC0= 52 - github.com/gorilla/csrf v1.7.3/go.mod h1:F1Fj3KG23WYHE6gozCmBAezKookxbIvUJT+121wTuLk= 53 - github.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kXD8ePA= 54 - github.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo= 55 - github.com/gorilla/sessions v1.4.0 h1:kpIYOp/oi6MG/p5PgxApU8srsSw9tuFbt46Lt7auzqQ= 56 - github.com/gorilla/sessions v1.4.0/go.mod h1:FLWm50oby91+hl7p/wRxDth9bWSuk0qVL2emc7lT5ik= 57 51 github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= 58 52 github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= 59 53 github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= 60 54 github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= 61 - github.com/justinas/alice v1.2.0 h1:+MHSA/vccVCF4Uq37S42jwlkvI2Xzl7zTPCN5BnZNVo= 62 - github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= 63 55 github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= 64 56 github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= 65 57 github.com/klauspost/compress v1.18.2 h1:iiPHWW0YrcFgpBYhsA6D1+fqHssJscY/Tm/y2Uqnapk= ··· 86 78 github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= 87 79 github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= 88 80 github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= 89 - golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= 90 - golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= 91 81 golang.org/x/exp v0.0.0-20251209150349-8475f28825e9 h1:MDfG8Cvcqlt9XXrmEiD4epKn7VJHZO84hejP9Jmp0MM= 92 82 golang.org/x/exp v0.0.0-20251209150349-8475f28825e9/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU= 93 83 golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI= ··· 99 89 golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= 100 90 golang.org/x/telemetry v0.0.0-20251208220230-2638a1023523 h1:H52Mhyrc44wBgLTGzq6+0cmuVuF3LURCSXsLMOqfFos= 101 91 golang.org/x/telemetry v0.0.0-20251208220230-2638a1023523/go.mod h1:ArQvPJS723nJQietgilmZA+shuB3CZxH1n2iXq9VSfs= 92 + golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= 93 + golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= 102 94 golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA= 103 95 golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc= 104 96 golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY=
+1 -20
internal/server/server.go
··· 6 6 "net/http" 7 7 8 8 _ "github.com/duckdb/duckdb-go/v2" 9 - "github.com/gorilla/sessions" 10 9 "github.com/oscar345/keeptrack/internal/config" 11 10 "github.com/oscar345/keeptrack/internal/image" 12 11 "github.com/oscar345/keeptrack/internal/providers" ··· 48 47 }) 49 48 defer statisticsDB.Close() 50 49 51 - store := NewSessionStore(s.config) 52 50 services := s.services(generalDB, statisticsDB) 53 51 54 52 router := router. 55 - New(services.Artist, services.User, store, s.config). 53 + New(services.Artist, services.User, s.config). 56 54 Router() 57 55 58 56 log.Printf("Listening on http://%s\n", s.address) ··· 88 86 ), 89 87 } 90 88 } 91 - 92 - func NewSessionStore(cfg *config.Config) sessions.Store { 93 - store := sessions.NewCookieStore( 94 - utilities.DeriveKey(cfg.Server.SecretKey, "authentication"), 95 - utilities.DeriveKey(cfg.Server.SecretKey, "encryption"), 96 - ) 97 - 98 - store.Options = &sessions.Options{ 99 - Path: "/", 100 - MaxAge: 60 * 60 * 24 * 7, // 7 days 101 - Secure: cfg.Environment == config.Production, 102 - SameSite: http.SameSiteLaxMode, 103 - HttpOnly: true, 104 - } 105 - 106 - return store 107 - }
+44
internal/web/middleware/middleware.go
··· 1 1 package middleware 2 + 3 + import ( 4 + "context" 5 + "log" 6 + "net/http" 7 + "strings" 8 + 9 + "github.com/MicahParks/keyfunc/v3" 10 + "github.com/golang-jwt/jwt/v5" 11 + ) 12 + 13 + type ContextKey string 14 + 15 + const ( 16 + UserContextKey ContextKey = "user" 17 + ) 18 + 19 + func FetchUser(keyfn keyfunc.Keyfunc) func(next http.Handler) http.Handler { 20 + return func(next http.Handler) http.Handler { 21 + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 22 + token, err := jwt.Parse( 23 + strings.TrimSpace(strings.Replace(r.Header.Get("Authorization"), "Bearer", "", 1)), 24 + keyfn.Keyfunc, 25 + ) 26 + 27 + if err != nil { 28 + http.Error(w, "Invalid token", http.StatusUnauthorized) 29 + log.Println("JWT parse error:", err) 30 + return 31 + } 32 + 33 + claims, ok := token.Claims.(jwt.MapClaims) 34 + if !ok { 35 + http.Error(w, "Invalid claims", http.StatusUnauthorized) 36 + log.Println("Invalid claims") 37 + return 38 + } 39 + 40 + r = r.WithContext(context.WithValue(r.Context(), UserContextKey, claims)) 41 + 42 + next.ServeHTTP(w, r) 43 + }) 44 + } 45 + }
-52
internal/web/requests/authentication.go
··· 1 1 package requests 2 - 3 - import "github.com/oscar345/keeptrack/pkg/validation" 4 - 5 - type LoginForm struct { 6 - Email string `json:"email"` 7 - Password string `json:"password"` 8 - } 9 - 10 - func (f *LoginForm) Validate() error { 11 - validator := validation.New() 12 - 13 - validator.Validate("email", map[string]bool{ 14 - validator.Required(): f.Email != "", 15 - validator.BetweenValue(3, 20): len(f.Email) >= 3 && len(f.Email) <= 20, 16 - }) 17 - 18 - validator.Validate("password", map[string]bool{ 19 - validator.Required(): f.Password != "", 20 - validator.BetweenValue(8, 20): len(f.Password) >= 8 && len(f.Password) <= 20, 21 - }) 22 - 23 - return validator.Run() 24 - } 25 - 26 - type RegisterForm struct { 27 - Email string `json:"email"` 28 - Password string `json:"password"` 29 - ConfirmPassword string `json:"confirm_password"` 30 - } 31 - 32 - func (f *RegisterForm) Validate() error { 33 - validator := validation.New() 34 - 35 - validator.Validate("email", map[string]bool{ 36 - validator.Required(): f.Email != "", 37 - validator.BetweenValue(3, 20): len(f.Email) >= 3 && len(f.Email) <= 20, 38 - validator.Email(): validation.IsValidEmail(f.Email), 39 - }) 40 - 41 - validator.Validate("password", map[string]bool{ 42 - validator.Required(): f.Password != "", 43 - validator.Contains("uppercase characters"): validation.HasUpperCase(f.Password), 44 - validator.BetweenValue(8, 20): len(f.Password) >= 8 && len(f.Password) <= 20, 45 - }) 46 - 47 - validator.Validate("confirm_password", map[string]bool{ 48 - validator.Required(): f.ConfirmPassword != "", 49 - validator.EqualTo("password"): f.ConfirmPassword == f.Password, 50 - }) 51 - 52 - return validator.Run() 53 - }
-4
internal/web/router/router.go
··· 5 5 6 6 "github.com/go-chi/chi/v5" 7 7 chimiddleware "github.com/go-chi/chi/v5/middleware" 8 - "github.com/gorilla/sessions" 9 8 "github.com/oscar345/keeptrack/internal/config" 10 9 "github.com/oscar345/keeptrack/internal/services" 11 10 "github.com/oscar345/keeptrack/internal/web/handlers" ··· 16 15 artistService services.ArtistService 17 16 userService services.UserService 18 17 config *config.Config 19 - store sessions.Store 20 18 } 21 19 22 20 func New( 23 21 artistService services.ArtistService, 24 22 userService services.UserService, 25 - store sessions.Store, 26 23 config *config.Config, 27 24 ) *Server { 28 25 return &Server{ 29 26 artistService: artistService, 30 27 userService: userService, 31 - store: store, 32 28 config: config, 33 29 } 34 30 }
+3 -3
taskfile.yml
··· 108 108 silent: true 109 109 cmds: 110 110 - task: build:bridge 111 - - ./bin/bridge schema --package github.com/oscar345/keeptrack/internal/web/responses --path web/lib/.gen/schemas/responses.ts 112 - - ./bin/bridge schema --package github.com/oscar345/keeptrack/internal/web/requests --path web/lib/.gen/schemas/requests.ts 111 + - ./bin/bridge schema --package github.com/oscar345/keeptrack/internal/web/responses --path client/src/lib/.gen/schemas/responses.ts 112 + - ./bin/bridge schema --package github.com/oscar345/keeptrack/internal/web/requests --path client/src/lib/.gen/schemas/requests.ts 113 113 114 114 generate:routes: 115 115 silent: true 116 116 cmds: 117 117 - task: build:bridge 118 - - ./bin/bridge route --path web/lib/.gen/routes.ts 118 + - ./bin/bridge route --path client/src/lib/.gen/routes.ts 119 119 120 120 serve: 121 121 watch: true