this repo has no description
0
fork

Configure Feed

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

init

Renaud Bellec 57329c33

+4054
+18
README.md
··· 1 + **Pour lancer** 2 + 3 + ```bash 4 + docker compose up -d # lance le container de la db 5 + sqlx database create # cree la DB "dyfc" si elle n'existe pas 6 + sqlx migrate run # applique les migrations 7 + cargo run # depuis /backend 8 + ``` 9 + 10 + `Le sqlx::migrate!()` dans le main.rs creera la table games automatiquement au premier 11 + demarrage. 12 + 13 + **Commandes utiles** 14 + ```bash 15 + docker compose logs db # voir les logs Postgres 16 + docker compose down # arreter (les donnees restent dans le volume) 17 + docker compose down -v # arreter ET supprimer les donnees (reset complet) 18 + ```
+2
backend/.env
··· 1 + DATABASE_URL=postgres://postgres:postgres@localhost:5432/dyfc 2 + RUST_LOG=tower_http=debug,backend=debug
+1
backend/.gitignore
··· 1 + target
+1969
backend/Cargo.lock
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 4 4 + 5 + [[package]] 6 + name = "aho-corasick" 7 + version = "1.1.4" 8 + source = "registry+https://github.com/rust-lang/crates.io-index" 9 + checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" 10 + dependencies = [ 11 + "memchr", 12 + ] 13 + 14 + [[package]] 15 + name = "allocator-api2" 16 + version = "0.2.21" 17 + source = "registry+https://github.com/rust-lang/crates.io-index" 18 + checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" 19 + 20 + [[package]] 21 + name = "anyhow" 22 + version = "1.0.102" 23 + source = "registry+https://github.com/rust-lang/crates.io-index" 24 + checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" 25 + 26 + [[package]] 27 + name = "atoi" 28 + version = "2.0.0" 29 + source = "registry+https://github.com/rust-lang/crates.io-index" 30 + checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" 31 + dependencies = [ 32 + "num-traits", 33 + ] 34 + 35 + [[package]] 36 + name = "atomic-waker" 37 + version = "1.1.2" 38 + source = "registry+https://github.com/rust-lang/crates.io-index" 39 + checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 40 + 41 + [[package]] 42 + name = "autocfg" 43 + version = "1.5.0" 44 + source = "registry+https://github.com/rust-lang/crates.io-index" 45 + checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 46 + 47 + [[package]] 48 + name = "axum" 49 + version = "0.8.9" 50 + source = "registry+https://github.com/rust-lang/crates.io-index" 51 + checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" 52 + dependencies = [ 53 + "axum-core", 54 + "bytes", 55 + "form_urlencoded", 56 + "futures-util", 57 + "http", 58 + "http-body", 59 + "http-body-util", 60 + "hyper", 61 + "hyper-util", 62 + "itoa", 63 + "matchit", 64 + "memchr", 65 + "mime", 66 + "percent-encoding", 67 + "pin-project-lite", 68 + "serde_core", 69 + "serde_json", 70 + "serde_path_to_error", 71 + "serde_urlencoded", 72 + "sync_wrapper", 73 + "tokio", 74 + "tower", 75 + "tower-layer", 76 + "tower-service", 77 + "tracing", 78 + ] 79 + 80 + [[package]] 81 + name = "axum-core" 82 + version = "0.5.6" 83 + source = "registry+https://github.com/rust-lang/crates.io-index" 84 + checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" 85 + dependencies = [ 86 + "bytes", 87 + "futures-core", 88 + "http", 89 + "http-body", 90 + "http-body-util", 91 + "mime", 92 + "pin-project-lite", 93 + "sync_wrapper", 94 + "tower-layer", 95 + "tower-service", 96 + "tracing", 97 + ] 98 + 99 + [[package]] 100 + name = "backend" 101 + version = "0.1.0" 102 + dependencies = [ 103 + "anyhow", 104 + "axum", 105 + "dotenvy", 106 + "serde", 107 + "serde_json", 108 + "sqlx", 109 + "tokio", 110 + "tower-http", 111 + "tracing", 112 + "tracing-subscriber", 113 + ] 114 + 115 + [[package]] 116 + name = "base64" 117 + version = "0.22.1" 118 + source = "registry+https://github.com/rust-lang/crates.io-index" 119 + checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 120 + 121 + [[package]] 122 + name = "base64ct" 123 + version = "1.8.3" 124 + source = "registry+https://github.com/rust-lang/crates.io-index" 125 + checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" 126 + 127 + [[package]] 128 + name = "bitflags" 129 + version = "2.11.1" 130 + source = "registry+https://github.com/rust-lang/crates.io-index" 131 + checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" 132 + dependencies = [ 133 + "serde_core", 134 + ] 135 + 136 + [[package]] 137 + name = "block-buffer" 138 + version = "0.10.4" 139 + source = "registry+https://github.com/rust-lang/crates.io-index" 140 + checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 141 + dependencies = [ 142 + "generic-array", 143 + ] 144 + 145 + [[package]] 146 + name = "byteorder" 147 + version = "1.5.0" 148 + source = "registry+https://github.com/rust-lang/crates.io-index" 149 + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 150 + 151 + [[package]] 152 + name = "bytes" 153 + version = "1.11.1" 154 + source = "registry+https://github.com/rust-lang/crates.io-index" 155 + checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" 156 + 157 + [[package]] 158 + name = "cfg-if" 159 + version = "1.0.4" 160 + source = "registry+https://github.com/rust-lang/crates.io-index" 161 + checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" 162 + 163 + [[package]] 164 + name = "concurrent-queue" 165 + version = "2.5.0" 166 + source = "registry+https://github.com/rust-lang/crates.io-index" 167 + checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 168 + dependencies = [ 169 + "crossbeam-utils", 170 + ] 171 + 172 + [[package]] 173 + name = "const-oid" 174 + version = "0.9.6" 175 + source = "registry+https://github.com/rust-lang/crates.io-index" 176 + checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 177 + 178 + [[package]] 179 + name = "cpufeatures" 180 + version = "0.2.17" 181 + source = "registry+https://github.com/rust-lang/crates.io-index" 182 + checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" 183 + dependencies = [ 184 + "libc", 185 + ] 186 + 187 + [[package]] 188 + name = "crc" 189 + version = "3.4.0" 190 + source = "registry+https://github.com/rust-lang/crates.io-index" 191 + checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" 192 + dependencies = [ 193 + "crc-catalog", 194 + ] 195 + 196 + [[package]] 197 + name = "crc-catalog" 198 + version = "2.4.0" 199 + source = "registry+https://github.com/rust-lang/crates.io-index" 200 + checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" 201 + 202 + [[package]] 203 + name = "crossbeam-queue" 204 + version = "0.3.12" 205 + source = "registry+https://github.com/rust-lang/crates.io-index" 206 + checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" 207 + dependencies = [ 208 + "crossbeam-utils", 209 + ] 210 + 211 + [[package]] 212 + name = "crossbeam-utils" 213 + version = "0.8.21" 214 + source = "registry+https://github.com/rust-lang/crates.io-index" 215 + checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 216 + 217 + [[package]] 218 + name = "crypto-common" 219 + version = "0.1.7" 220 + source = "registry+https://github.com/rust-lang/crates.io-index" 221 + checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" 222 + dependencies = [ 223 + "generic-array", 224 + "typenum", 225 + ] 226 + 227 + [[package]] 228 + name = "der" 229 + version = "0.7.10" 230 + source = "registry+https://github.com/rust-lang/crates.io-index" 231 + checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" 232 + dependencies = [ 233 + "const-oid", 234 + "pem-rfc7468", 235 + "zeroize", 236 + ] 237 + 238 + [[package]] 239 + name = "digest" 240 + version = "0.10.7" 241 + source = "registry+https://github.com/rust-lang/crates.io-index" 242 + checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 243 + dependencies = [ 244 + "block-buffer", 245 + "const-oid", 246 + "crypto-common", 247 + "subtle", 248 + ] 249 + 250 + [[package]] 251 + name = "displaydoc" 252 + version = "0.2.5" 253 + source = "registry+https://github.com/rust-lang/crates.io-index" 254 + checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 255 + dependencies = [ 256 + "proc-macro2", 257 + "quote", 258 + "syn", 259 + ] 260 + 261 + [[package]] 262 + name = "dotenvy" 263 + version = "0.15.7" 264 + source = "registry+https://github.com/rust-lang/crates.io-index" 265 + checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" 266 + 267 + [[package]] 268 + name = "either" 269 + version = "1.15.0" 270 + source = "registry+https://github.com/rust-lang/crates.io-index" 271 + checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 272 + dependencies = [ 273 + "serde", 274 + ] 275 + 276 + [[package]] 277 + name = "equivalent" 278 + version = "1.0.2" 279 + source = "registry+https://github.com/rust-lang/crates.io-index" 280 + checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 281 + 282 + [[package]] 283 + name = "errno" 284 + version = "0.3.14" 285 + source = "registry+https://github.com/rust-lang/crates.io-index" 286 + checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" 287 + dependencies = [ 288 + "libc", 289 + "windows-sys 0.61.2", 290 + ] 291 + 292 + [[package]] 293 + name = "etcetera" 294 + version = "0.8.0" 295 + source = "registry+https://github.com/rust-lang/crates.io-index" 296 + checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" 297 + dependencies = [ 298 + "cfg-if", 299 + "home", 300 + "windows-sys 0.48.0", 301 + ] 302 + 303 + [[package]] 304 + name = "event-listener" 305 + version = "5.4.1" 306 + source = "registry+https://github.com/rust-lang/crates.io-index" 307 + checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" 308 + dependencies = [ 309 + "concurrent-queue", 310 + "parking", 311 + "pin-project-lite", 312 + ] 313 + 314 + [[package]] 315 + name = "flume" 316 + version = "0.11.1" 317 + source = "registry+https://github.com/rust-lang/crates.io-index" 318 + checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" 319 + dependencies = [ 320 + "futures-core", 321 + "futures-sink", 322 + "spin", 323 + ] 324 + 325 + [[package]] 326 + name = "foldhash" 327 + version = "0.1.5" 328 + source = "registry+https://github.com/rust-lang/crates.io-index" 329 + checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" 330 + 331 + [[package]] 332 + name = "form_urlencoded" 333 + version = "1.2.2" 334 + source = "registry+https://github.com/rust-lang/crates.io-index" 335 + checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 336 + dependencies = [ 337 + "percent-encoding", 338 + ] 339 + 340 + [[package]] 341 + name = "futures-channel" 342 + version = "0.3.32" 343 + source = "registry+https://github.com/rust-lang/crates.io-index" 344 + checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" 345 + dependencies = [ 346 + "futures-core", 347 + "futures-sink", 348 + ] 349 + 350 + [[package]] 351 + name = "futures-core" 352 + version = "0.3.32" 353 + source = "registry+https://github.com/rust-lang/crates.io-index" 354 + checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" 355 + 356 + [[package]] 357 + name = "futures-executor" 358 + version = "0.3.32" 359 + source = "registry+https://github.com/rust-lang/crates.io-index" 360 + checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" 361 + dependencies = [ 362 + "futures-core", 363 + "futures-task", 364 + "futures-util", 365 + ] 366 + 367 + [[package]] 368 + name = "futures-intrusive" 369 + version = "0.5.0" 370 + source = "registry+https://github.com/rust-lang/crates.io-index" 371 + checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" 372 + dependencies = [ 373 + "futures-core", 374 + "lock_api", 375 + "parking_lot", 376 + ] 377 + 378 + [[package]] 379 + name = "futures-io" 380 + version = "0.3.32" 381 + source = "registry+https://github.com/rust-lang/crates.io-index" 382 + checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" 383 + 384 + [[package]] 385 + name = "futures-sink" 386 + version = "0.3.32" 387 + source = "registry+https://github.com/rust-lang/crates.io-index" 388 + checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" 389 + 390 + [[package]] 391 + name = "futures-task" 392 + version = "0.3.32" 393 + source = "registry+https://github.com/rust-lang/crates.io-index" 394 + checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" 395 + 396 + [[package]] 397 + name = "futures-util" 398 + version = "0.3.32" 399 + source = "registry+https://github.com/rust-lang/crates.io-index" 400 + checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" 401 + dependencies = [ 402 + "futures-core", 403 + "futures-io", 404 + "futures-sink", 405 + "futures-task", 406 + "memchr", 407 + "pin-project-lite", 408 + "slab", 409 + ] 410 + 411 + [[package]] 412 + name = "generic-array" 413 + version = "0.14.7" 414 + source = "registry+https://github.com/rust-lang/crates.io-index" 415 + checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 416 + dependencies = [ 417 + "typenum", 418 + "version_check", 419 + ] 420 + 421 + [[package]] 422 + name = "getrandom" 423 + version = "0.2.17" 424 + source = "registry+https://github.com/rust-lang/crates.io-index" 425 + checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" 426 + dependencies = [ 427 + "cfg-if", 428 + "libc", 429 + "wasi", 430 + ] 431 + 432 + [[package]] 433 + name = "hashbrown" 434 + version = "0.15.5" 435 + source = "registry+https://github.com/rust-lang/crates.io-index" 436 + checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" 437 + dependencies = [ 438 + "allocator-api2", 439 + "equivalent", 440 + "foldhash", 441 + ] 442 + 443 + [[package]] 444 + name = "hashbrown" 445 + version = "0.17.0" 446 + source = "registry+https://github.com/rust-lang/crates.io-index" 447 + checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" 448 + 449 + [[package]] 450 + name = "hashlink" 451 + version = "0.10.0" 452 + source = "registry+https://github.com/rust-lang/crates.io-index" 453 + checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" 454 + dependencies = [ 455 + "hashbrown 0.15.5", 456 + ] 457 + 458 + [[package]] 459 + name = "heck" 460 + version = "0.5.0" 461 + source = "registry+https://github.com/rust-lang/crates.io-index" 462 + checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 463 + 464 + [[package]] 465 + name = "hex" 466 + version = "0.4.3" 467 + source = "registry+https://github.com/rust-lang/crates.io-index" 468 + checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 469 + 470 + [[package]] 471 + name = "hkdf" 472 + version = "0.12.4" 473 + source = "registry+https://github.com/rust-lang/crates.io-index" 474 + checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" 475 + dependencies = [ 476 + "hmac", 477 + ] 478 + 479 + [[package]] 480 + name = "hmac" 481 + version = "0.12.1" 482 + source = "registry+https://github.com/rust-lang/crates.io-index" 483 + checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 484 + dependencies = [ 485 + "digest", 486 + ] 487 + 488 + [[package]] 489 + name = "home" 490 + version = "0.5.12" 491 + source = "registry+https://github.com/rust-lang/crates.io-index" 492 + checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" 493 + dependencies = [ 494 + "windows-sys 0.61.2", 495 + ] 496 + 497 + [[package]] 498 + name = "http" 499 + version = "1.4.0" 500 + source = "registry+https://github.com/rust-lang/crates.io-index" 501 + checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" 502 + dependencies = [ 503 + "bytes", 504 + "itoa", 505 + ] 506 + 507 + [[package]] 508 + name = "http-body" 509 + version = "1.0.1" 510 + source = "registry+https://github.com/rust-lang/crates.io-index" 511 + checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 512 + dependencies = [ 513 + "bytes", 514 + "http", 515 + ] 516 + 517 + [[package]] 518 + name = "http-body-util" 519 + version = "0.1.3" 520 + source = "registry+https://github.com/rust-lang/crates.io-index" 521 + checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" 522 + dependencies = [ 523 + "bytes", 524 + "futures-core", 525 + "http", 526 + "http-body", 527 + "pin-project-lite", 528 + ] 529 + 530 + [[package]] 531 + name = "httparse" 532 + version = "1.10.1" 533 + source = "registry+https://github.com/rust-lang/crates.io-index" 534 + checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 535 + 536 + [[package]] 537 + name = "httpdate" 538 + version = "1.0.3" 539 + source = "registry+https://github.com/rust-lang/crates.io-index" 540 + checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 541 + 542 + [[package]] 543 + name = "hyper" 544 + version = "1.9.0" 545 + source = "registry+https://github.com/rust-lang/crates.io-index" 546 + checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" 547 + dependencies = [ 548 + "atomic-waker", 549 + "bytes", 550 + "futures-channel", 551 + "futures-core", 552 + "http", 553 + "http-body", 554 + "httparse", 555 + "httpdate", 556 + "itoa", 557 + "pin-project-lite", 558 + "smallvec", 559 + "tokio", 560 + ] 561 + 562 + [[package]] 563 + name = "hyper-util" 564 + version = "0.1.20" 565 + source = "registry+https://github.com/rust-lang/crates.io-index" 566 + checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" 567 + dependencies = [ 568 + "bytes", 569 + "http", 570 + "http-body", 571 + "hyper", 572 + "pin-project-lite", 573 + "tokio", 574 + "tower-service", 575 + ] 576 + 577 + [[package]] 578 + name = "icu_collections" 579 + version = "2.2.0" 580 + source = "registry+https://github.com/rust-lang/crates.io-index" 581 + checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" 582 + dependencies = [ 583 + "displaydoc", 584 + "potential_utf", 585 + "utf8_iter", 586 + "yoke", 587 + "zerofrom", 588 + "zerovec", 589 + ] 590 + 591 + [[package]] 592 + name = "icu_locale_core" 593 + version = "2.2.0" 594 + source = "registry+https://github.com/rust-lang/crates.io-index" 595 + checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" 596 + dependencies = [ 597 + "displaydoc", 598 + "litemap", 599 + "tinystr", 600 + "writeable", 601 + "zerovec", 602 + ] 603 + 604 + [[package]] 605 + name = "icu_normalizer" 606 + version = "2.2.0" 607 + source = "registry+https://github.com/rust-lang/crates.io-index" 608 + checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" 609 + dependencies = [ 610 + "icu_collections", 611 + "icu_normalizer_data", 612 + "icu_properties", 613 + "icu_provider", 614 + "smallvec", 615 + "zerovec", 616 + ] 617 + 618 + [[package]] 619 + name = "icu_normalizer_data" 620 + version = "2.2.0" 621 + source = "registry+https://github.com/rust-lang/crates.io-index" 622 + checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" 623 + 624 + [[package]] 625 + name = "icu_properties" 626 + version = "2.2.0" 627 + source = "registry+https://github.com/rust-lang/crates.io-index" 628 + checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" 629 + dependencies = [ 630 + "icu_collections", 631 + "icu_locale_core", 632 + "icu_properties_data", 633 + "icu_provider", 634 + "zerotrie", 635 + "zerovec", 636 + ] 637 + 638 + [[package]] 639 + name = "icu_properties_data" 640 + version = "2.2.0" 641 + source = "registry+https://github.com/rust-lang/crates.io-index" 642 + checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" 643 + 644 + [[package]] 645 + name = "icu_provider" 646 + version = "2.2.0" 647 + source = "registry+https://github.com/rust-lang/crates.io-index" 648 + checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" 649 + dependencies = [ 650 + "displaydoc", 651 + "icu_locale_core", 652 + "writeable", 653 + "yoke", 654 + "zerofrom", 655 + "zerotrie", 656 + "zerovec", 657 + ] 658 + 659 + [[package]] 660 + name = "idna" 661 + version = "1.1.0" 662 + source = "registry+https://github.com/rust-lang/crates.io-index" 663 + checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" 664 + dependencies = [ 665 + "idna_adapter", 666 + "smallvec", 667 + "utf8_iter", 668 + ] 669 + 670 + [[package]] 671 + name = "idna_adapter" 672 + version = "1.2.1" 673 + source = "registry+https://github.com/rust-lang/crates.io-index" 674 + checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 675 + dependencies = [ 676 + "icu_normalizer", 677 + "icu_properties", 678 + ] 679 + 680 + [[package]] 681 + name = "indexmap" 682 + version = "2.14.0" 683 + source = "registry+https://github.com/rust-lang/crates.io-index" 684 + checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" 685 + dependencies = [ 686 + "equivalent", 687 + "hashbrown 0.17.0", 688 + ] 689 + 690 + [[package]] 691 + name = "itoa" 692 + version = "1.0.18" 693 + source = "registry+https://github.com/rust-lang/crates.io-index" 694 + checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" 695 + 696 + [[package]] 697 + name = "lazy_static" 698 + version = "1.5.0" 699 + source = "registry+https://github.com/rust-lang/crates.io-index" 700 + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 701 + dependencies = [ 702 + "spin", 703 + ] 704 + 705 + [[package]] 706 + name = "libc" 707 + version = "0.2.185" 708 + source = "registry+https://github.com/rust-lang/crates.io-index" 709 + checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f" 710 + 711 + [[package]] 712 + name = "libm" 713 + version = "0.2.16" 714 + source = "registry+https://github.com/rust-lang/crates.io-index" 715 + checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" 716 + 717 + [[package]] 718 + name = "libredox" 719 + version = "0.1.16" 720 + source = "registry+https://github.com/rust-lang/crates.io-index" 721 + checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" 722 + dependencies = [ 723 + "bitflags", 724 + "libc", 725 + "plain", 726 + "redox_syscall 0.7.4", 727 + ] 728 + 729 + [[package]] 730 + name = "libsqlite3-sys" 731 + version = "0.30.1" 732 + source = "registry+https://github.com/rust-lang/crates.io-index" 733 + checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" 734 + dependencies = [ 735 + "pkg-config", 736 + "vcpkg", 737 + ] 738 + 739 + [[package]] 740 + name = "litemap" 741 + version = "0.8.2" 742 + source = "registry+https://github.com/rust-lang/crates.io-index" 743 + checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" 744 + 745 + [[package]] 746 + name = "lock_api" 747 + version = "0.4.14" 748 + source = "registry+https://github.com/rust-lang/crates.io-index" 749 + checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" 750 + dependencies = [ 751 + "scopeguard", 752 + ] 753 + 754 + [[package]] 755 + name = "log" 756 + version = "0.4.29" 757 + source = "registry+https://github.com/rust-lang/crates.io-index" 758 + checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" 759 + 760 + [[package]] 761 + name = "matchers" 762 + version = "0.2.0" 763 + source = "registry+https://github.com/rust-lang/crates.io-index" 764 + checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" 765 + dependencies = [ 766 + "regex-automata", 767 + ] 768 + 769 + [[package]] 770 + name = "matchit" 771 + version = "0.8.4" 772 + source = "registry+https://github.com/rust-lang/crates.io-index" 773 + checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" 774 + 775 + [[package]] 776 + name = "md-5" 777 + version = "0.10.6" 778 + source = "registry+https://github.com/rust-lang/crates.io-index" 779 + checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" 780 + dependencies = [ 781 + "cfg-if", 782 + "digest", 783 + ] 784 + 785 + [[package]] 786 + name = "memchr" 787 + version = "2.8.0" 788 + source = "registry+https://github.com/rust-lang/crates.io-index" 789 + checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" 790 + 791 + [[package]] 792 + name = "mime" 793 + version = "0.3.17" 794 + source = "registry+https://github.com/rust-lang/crates.io-index" 795 + checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 796 + 797 + [[package]] 798 + name = "mio" 799 + version = "1.2.0" 800 + source = "registry+https://github.com/rust-lang/crates.io-index" 801 + checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" 802 + dependencies = [ 803 + "libc", 804 + "wasi", 805 + "windows-sys 0.61.2", 806 + ] 807 + 808 + [[package]] 809 + name = "nu-ansi-term" 810 + version = "0.50.3" 811 + source = "registry+https://github.com/rust-lang/crates.io-index" 812 + checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" 813 + dependencies = [ 814 + "windows-sys 0.61.2", 815 + ] 816 + 817 + [[package]] 818 + name = "num-bigint-dig" 819 + version = "0.8.6" 820 + source = "registry+https://github.com/rust-lang/crates.io-index" 821 + checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" 822 + dependencies = [ 823 + "lazy_static", 824 + "libm", 825 + "num-integer", 826 + "num-iter", 827 + "num-traits", 828 + "rand", 829 + "smallvec", 830 + "zeroize", 831 + ] 832 + 833 + [[package]] 834 + name = "num-integer" 835 + version = "0.1.46" 836 + source = "registry+https://github.com/rust-lang/crates.io-index" 837 + checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 838 + dependencies = [ 839 + "num-traits", 840 + ] 841 + 842 + [[package]] 843 + name = "num-iter" 844 + version = "0.1.45" 845 + source = "registry+https://github.com/rust-lang/crates.io-index" 846 + checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" 847 + dependencies = [ 848 + "autocfg", 849 + "num-integer", 850 + "num-traits", 851 + ] 852 + 853 + [[package]] 854 + name = "num-traits" 855 + version = "0.2.19" 856 + source = "registry+https://github.com/rust-lang/crates.io-index" 857 + checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 858 + dependencies = [ 859 + "autocfg", 860 + "libm", 861 + ] 862 + 863 + [[package]] 864 + name = "once_cell" 865 + version = "1.21.4" 866 + source = "registry+https://github.com/rust-lang/crates.io-index" 867 + checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" 868 + 869 + [[package]] 870 + name = "parking" 871 + version = "2.2.1" 872 + source = "registry+https://github.com/rust-lang/crates.io-index" 873 + checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 874 + 875 + [[package]] 876 + name = "parking_lot" 877 + version = "0.12.5" 878 + source = "registry+https://github.com/rust-lang/crates.io-index" 879 + checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" 880 + dependencies = [ 881 + "lock_api", 882 + "parking_lot_core", 883 + ] 884 + 885 + [[package]] 886 + name = "parking_lot_core" 887 + version = "0.9.12" 888 + source = "registry+https://github.com/rust-lang/crates.io-index" 889 + checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" 890 + dependencies = [ 891 + "cfg-if", 892 + "libc", 893 + "redox_syscall 0.5.18", 894 + "smallvec", 895 + "windows-link", 896 + ] 897 + 898 + [[package]] 899 + name = "pem-rfc7468" 900 + version = "0.7.0" 901 + source = "registry+https://github.com/rust-lang/crates.io-index" 902 + checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" 903 + dependencies = [ 904 + "base64ct", 905 + ] 906 + 907 + [[package]] 908 + name = "percent-encoding" 909 + version = "2.3.2" 910 + source = "registry+https://github.com/rust-lang/crates.io-index" 911 + checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 912 + 913 + [[package]] 914 + name = "pin-project-lite" 915 + version = "0.2.17" 916 + source = "registry+https://github.com/rust-lang/crates.io-index" 917 + checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" 918 + 919 + [[package]] 920 + name = "pkcs1" 921 + version = "0.7.5" 922 + source = "registry+https://github.com/rust-lang/crates.io-index" 923 + checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" 924 + dependencies = [ 925 + "der", 926 + "pkcs8", 927 + "spki", 928 + ] 929 + 930 + [[package]] 931 + name = "pkcs8" 932 + version = "0.10.2" 933 + source = "registry+https://github.com/rust-lang/crates.io-index" 934 + checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" 935 + dependencies = [ 936 + "der", 937 + "spki", 938 + ] 939 + 940 + [[package]] 941 + name = "pkg-config" 942 + version = "0.3.33" 943 + source = "registry+https://github.com/rust-lang/crates.io-index" 944 + checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" 945 + 946 + [[package]] 947 + name = "plain" 948 + version = "0.2.3" 949 + source = "registry+https://github.com/rust-lang/crates.io-index" 950 + checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" 951 + 952 + [[package]] 953 + name = "potential_utf" 954 + version = "0.1.5" 955 + source = "registry+https://github.com/rust-lang/crates.io-index" 956 + checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" 957 + dependencies = [ 958 + "zerovec", 959 + ] 960 + 961 + [[package]] 962 + name = "ppv-lite86" 963 + version = "0.2.21" 964 + source = "registry+https://github.com/rust-lang/crates.io-index" 965 + checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 966 + dependencies = [ 967 + "zerocopy", 968 + ] 969 + 970 + [[package]] 971 + name = "proc-macro2" 972 + version = "1.0.106" 973 + source = "registry+https://github.com/rust-lang/crates.io-index" 974 + checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" 975 + dependencies = [ 976 + "unicode-ident", 977 + ] 978 + 979 + [[package]] 980 + name = "quote" 981 + version = "1.0.45" 982 + source = "registry+https://github.com/rust-lang/crates.io-index" 983 + checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" 984 + dependencies = [ 985 + "proc-macro2", 986 + ] 987 + 988 + [[package]] 989 + name = "rand" 990 + version = "0.8.6" 991 + source = "registry+https://github.com/rust-lang/crates.io-index" 992 + checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" 993 + dependencies = [ 994 + "libc", 995 + "rand_chacha", 996 + "rand_core", 997 + ] 998 + 999 + [[package]] 1000 + name = "rand_chacha" 1001 + version = "0.3.1" 1002 + source = "registry+https://github.com/rust-lang/crates.io-index" 1003 + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1004 + dependencies = [ 1005 + "ppv-lite86", 1006 + "rand_core", 1007 + ] 1008 + 1009 + [[package]] 1010 + name = "rand_core" 1011 + version = "0.6.4" 1012 + source = "registry+https://github.com/rust-lang/crates.io-index" 1013 + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1014 + dependencies = [ 1015 + "getrandom", 1016 + ] 1017 + 1018 + [[package]] 1019 + name = "redox_syscall" 1020 + version = "0.5.18" 1021 + source = "registry+https://github.com/rust-lang/crates.io-index" 1022 + checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" 1023 + dependencies = [ 1024 + "bitflags", 1025 + ] 1026 + 1027 + [[package]] 1028 + name = "redox_syscall" 1029 + version = "0.7.4" 1030 + source = "registry+https://github.com/rust-lang/crates.io-index" 1031 + checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" 1032 + dependencies = [ 1033 + "bitflags", 1034 + ] 1035 + 1036 + [[package]] 1037 + name = "regex-automata" 1038 + version = "0.4.14" 1039 + source = "registry+https://github.com/rust-lang/crates.io-index" 1040 + checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" 1041 + dependencies = [ 1042 + "aho-corasick", 1043 + "memchr", 1044 + "regex-syntax", 1045 + ] 1046 + 1047 + [[package]] 1048 + name = "regex-syntax" 1049 + version = "0.8.10" 1050 + source = "registry+https://github.com/rust-lang/crates.io-index" 1051 + checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" 1052 + 1053 + [[package]] 1054 + name = "rsa" 1055 + version = "0.9.10" 1056 + source = "registry+https://github.com/rust-lang/crates.io-index" 1057 + checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" 1058 + dependencies = [ 1059 + "const-oid", 1060 + "digest", 1061 + "num-bigint-dig", 1062 + "num-integer", 1063 + "num-traits", 1064 + "pkcs1", 1065 + "pkcs8", 1066 + "rand_core", 1067 + "signature", 1068 + "spki", 1069 + "subtle", 1070 + "zeroize", 1071 + ] 1072 + 1073 + [[package]] 1074 + name = "ryu" 1075 + version = "1.0.23" 1076 + source = "registry+https://github.com/rust-lang/crates.io-index" 1077 + checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" 1078 + 1079 + [[package]] 1080 + name = "scopeguard" 1081 + version = "1.2.0" 1082 + source = "registry+https://github.com/rust-lang/crates.io-index" 1083 + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 1084 + 1085 + [[package]] 1086 + name = "serde" 1087 + version = "1.0.228" 1088 + source = "registry+https://github.com/rust-lang/crates.io-index" 1089 + checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" 1090 + dependencies = [ 1091 + "serde_core", 1092 + "serde_derive", 1093 + ] 1094 + 1095 + [[package]] 1096 + name = "serde_core" 1097 + version = "1.0.228" 1098 + source = "registry+https://github.com/rust-lang/crates.io-index" 1099 + checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" 1100 + dependencies = [ 1101 + "serde_derive", 1102 + ] 1103 + 1104 + [[package]] 1105 + name = "serde_derive" 1106 + version = "1.0.228" 1107 + source = "registry+https://github.com/rust-lang/crates.io-index" 1108 + checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" 1109 + dependencies = [ 1110 + "proc-macro2", 1111 + "quote", 1112 + "syn", 1113 + ] 1114 + 1115 + [[package]] 1116 + name = "serde_json" 1117 + version = "1.0.149" 1118 + source = "registry+https://github.com/rust-lang/crates.io-index" 1119 + checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" 1120 + dependencies = [ 1121 + "itoa", 1122 + "memchr", 1123 + "serde", 1124 + "serde_core", 1125 + "zmij", 1126 + ] 1127 + 1128 + [[package]] 1129 + name = "serde_path_to_error" 1130 + version = "0.1.20" 1131 + source = "registry+https://github.com/rust-lang/crates.io-index" 1132 + checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" 1133 + dependencies = [ 1134 + "itoa", 1135 + "serde", 1136 + "serde_core", 1137 + ] 1138 + 1139 + [[package]] 1140 + name = "serde_urlencoded" 1141 + version = "0.7.1" 1142 + source = "registry+https://github.com/rust-lang/crates.io-index" 1143 + checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 1144 + dependencies = [ 1145 + "form_urlencoded", 1146 + "itoa", 1147 + "ryu", 1148 + "serde", 1149 + ] 1150 + 1151 + [[package]] 1152 + name = "sha1" 1153 + version = "0.10.6" 1154 + source = "registry+https://github.com/rust-lang/crates.io-index" 1155 + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 1156 + dependencies = [ 1157 + "cfg-if", 1158 + "cpufeatures", 1159 + "digest", 1160 + ] 1161 + 1162 + [[package]] 1163 + name = "sha2" 1164 + version = "0.10.9" 1165 + source = "registry+https://github.com/rust-lang/crates.io-index" 1166 + checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" 1167 + dependencies = [ 1168 + "cfg-if", 1169 + "cpufeatures", 1170 + "digest", 1171 + ] 1172 + 1173 + [[package]] 1174 + name = "sharded-slab" 1175 + version = "0.1.7" 1176 + source = "registry+https://github.com/rust-lang/crates.io-index" 1177 + checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 1178 + dependencies = [ 1179 + "lazy_static", 1180 + ] 1181 + 1182 + [[package]] 1183 + name = "signal-hook-registry" 1184 + version = "1.4.8" 1185 + source = "registry+https://github.com/rust-lang/crates.io-index" 1186 + checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" 1187 + dependencies = [ 1188 + "errno", 1189 + "libc", 1190 + ] 1191 + 1192 + [[package]] 1193 + name = "signature" 1194 + version = "2.2.0" 1195 + source = "registry+https://github.com/rust-lang/crates.io-index" 1196 + checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" 1197 + dependencies = [ 1198 + "digest", 1199 + "rand_core", 1200 + ] 1201 + 1202 + [[package]] 1203 + name = "slab" 1204 + version = "0.4.12" 1205 + source = "registry+https://github.com/rust-lang/crates.io-index" 1206 + checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" 1207 + 1208 + [[package]] 1209 + name = "smallvec" 1210 + version = "1.15.1" 1211 + source = "registry+https://github.com/rust-lang/crates.io-index" 1212 + checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 1213 + dependencies = [ 1214 + "serde", 1215 + ] 1216 + 1217 + [[package]] 1218 + name = "socket2" 1219 + version = "0.6.3" 1220 + source = "registry+https://github.com/rust-lang/crates.io-index" 1221 + checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" 1222 + dependencies = [ 1223 + "libc", 1224 + "windows-sys 0.61.2", 1225 + ] 1226 + 1227 + [[package]] 1228 + name = "spin" 1229 + version = "0.9.8" 1230 + source = "registry+https://github.com/rust-lang/crates.io-index" 1231 + checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 1232 + dependencies = [ 1233 + "lock_api", 1234 + ] 1235 + 1236 + [[package]] 1237 + name = "spki" 1238 + version = "0.7.3" 1239 + source = "registry+https://github.com/rust-lang/crates.io-index" 1240 + checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" 1241 + dependencies = [ 1242 + "base64ct", 1243 + "der", 1244 + ] 1245 + 1246 + [[package]] 1247 + name = "sqlx" 1248 + version = "0.8.6" 1249 + source = "registry+https://github.com/rust-lang/crates.io-index" 1250 + checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" 1251 + dependencies = [ 1252 + "sqlx-core", 1253 + "sqlx-macros", 1254 + "sqlx-mysql", 1255 + "sqlx-postgres", 1256 + "sqlx-sqlite", 1257 + ] 1258 + 1259 + [[package]] 1260 + name = "sqlx-core" 1261 + version = "0.8.6" 1262 + source = "registry+https://github.com/rust-lang/crates.io-index" 1263 + checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" 1264 + dependencies = [ 1265 + "base64", 1266 + "bytes", 1267 + "crc", 1268 + "crossbeam-queue", 1269 + "either", 1270 + "event-listener", 1271 + "futures-core", 1272 + "futures-intrusive", 1273 + "futures-io", 1274 + "futures-util", 1275 + "hashbrown 0.15.5", 1276 + "hashlink", 1277 + "indexmap", 1278 + "log", 1279 + "memchr", 1280 + "once_cell", 1281 + "percent-encoding", 1282 + "serde", 1283 + "serde_json", 1284 + "sha2", 1285 + "smallvec", 1286 + "thiserror", 1287 + "tokio", 1288 + "tokio-stream", 1289 + "tracing", 1290 + "url", 1291 + ] 1292 + 1293 + [[package]] 1294 + name = "sqlx-macros" 1295 + version = "0.8.6" 1296 + source = "registry+https://github.com/rust-lang/crates.io-index" 1297 + checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" 1298 + dependencies = [ 1299 + "proc-macro2", 1300 + "quote", 1301 + "sqlx-core", 1302 + "sqlx-macros-core", 1303 + "syn", 1304 + ] 1305 + 1306 + [[package]] 1307 + name = "sqlx-macros-core" 1308 + version = "0.8.6" 1309 + source = "registry+https://github.com/rust-lang/crates.io-index" 1310 + checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" 1311 + dependencies = [ 1312 + "dotenvy", 1313 + "either", 1314 + "heck", 1315 + "hex", 1316 + "once_cell", 1317 + "proc-macro2", 1318 + "quote", 1319 + "serde", 1320 + "serde_json", 1321 + "sha2", 1322 + "sqlx-core", 1323 + "sqlx-mysql", 1324 + "sqlx-postgres", 1325 + "sqlx-sqlite", 1326 + "syn", 1327 + "tokio", 1328 + "url", 1329 + ] 1330 + 1331 + [[package]] 1332 + name = "sqlx-mysql" 1333 + version = "0.8.6" 1334 + source = "registry+https://github.com/rust-lang/crates.io-index" 1335 + checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" 1336 + dependencies = [ 1337 + "atoi", 1338 + "base64", 1339 + "bitflags", 1340 + "byteorder", 1341 + "bytes", 1342 + "crc", 1343 + "digest", 1344 + "dotenvy", 1345 + "either", 1346 + "futures-channel", 1347 + "futures-core", 1348 + "futures-io", 1349 + "futures-util", 1350 + "generic-array", 1351 + "hex", 1352 + "hkdf", 1353 + "hmac", 1354 + "itoa", 1355 + "log", 1356 + "md-5", 1357 + "memchr", 1358 + "once_cell", 1359 + "percent-encoding", 1360 + "rand", 1361 + "rsa", 1362 + "serde", 1363 + "sha1", 1364 + "sha2", 1365 + "smallvec", 1366 + "sqlx-core", 1367 + "stringprep", 1368 + "thiserror", 1369 + "tracing", 1370 + "whoami", 1371 + ] 1372 + 1373 + [[package]] 1374 + name = "sqlx-postgres" 1375 + version = "0.8.6" 1376 + source = "registry+https://github.com/rust-lang/crates.io-index" 1377 + checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" 1378 + dependencies = [ 1379 + "atoi", 1380 + "base64", 1381 + "bitflags", 1382 + "byteorder", 1383 + "crc", 1384 + "dotenvy", 1385 + "etcetera", 1386 + "futures-channel", 1387 + "futures-core", 1388 + "futures-util", 1389 + "hex", 1390 + "hkdf", 1391 + "hmac", 1392 + "home", 1393 + "itoa", 1394 + "log", 1395 + "md-5", 1396 + "memchr", 1397 + "once_cell", 1398 + "rand", 1399 + "serde", 1400 + "serde_json", 1401 + "sha2", 1402 + "smallvec", 1403 + "sqlx-core", 1404 + "stringprep", 1405 + "thiserror", 1406 + "tracing", 1407 + "whoami", 1408 + ] 1409 + 1410 + [[package]] 1411 + name = "sqlx-sqlite" 1412 + version = "0.8.6" 1413 + source = "registry+https://github.com/rust-lang/crates.io-index" 1414 + checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" 1415 + dependencies = [ 1416 + "atoi", 1417 + "flume", 1418 + "futures-channel", 1419 + "futures-core", 1420 + "futures-executor", 1421 + "futures-intrusive", 1422 + "futures-util", 1423 + "libsqlite3-sys", 1424 + "log", 1425 + "percent-encoding", 1426 + "serde", 1427 + "serde_urlencoded", 1428 + "sqlx-core", 1429 + "thiserror", 1430 + "tracing", 1431 + "url", 1432 + ] 1433 + 1434 + [[package]] 1435 + name = "stable_deref_trait" 1436 + version = "1.2.1" 1437 + source = "registry+https://github.com/rust-lang/crates.io-index" 1438 + checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" 1439 + 1440 + [[package]] 1441 + name = "stringprep" 1442 + version = "0.1.5" 1443 + source = "registry+https://github.com/rust-lang/crates.io-index" 1444 + checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" 1445 + dependencies = [ 1446 + "unicode-bidi", 1447 + "unicode-normalization", 1448 + "unicode-properties", 1449 + ] 1450 + 1451 + [[package]] 1452 + name = "subtle" 1453 + version = "2.6.1" 1454 + source = "registry+https://github.com/rust-lang/crates.io-index" 1455 + checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 1456 + 1457 + [[package]] 1458 + name = "syn" 1459 + version = "2.0.117" 1460 + source = "registry+https://github.com/rust-lang/crates.io-index" 1461 + checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" 1462 + dependencies = [ 1463 + "proc-macro2", 1464 + "quote", 1465 + "unicode-ident", 1466 + ] 1467 + 1468 + [[package]] 1469 + name = "sync_wrapper" 1470 + version = "1.0.2" 1471 + source = "registry+https://github.com/rust-lang/crates.io-index" 1472 + checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 1473 + 1474 + [[package]] 1475 + name = "synstructure" 1476 + version = "0.13.2" 1477 + source = "registry+https://github.com/rust-lang/crates.io-index" 1478 + checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 1479 + dependencies = [ 1480 + "proc-macro2", 1481 + "quote", 1482 + "syn", 1483 + ] 1484 + 1485 + [[package]] 1486 + name = "thiserror" 1487 + version = "2.0.18" 1488 + source = "registry+https://github.com/rust-lang/crates.io-index" 1489 + checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" 1490 + dependencies = [ 1491 + "thiserror-impl", 1492 + ] 1493 + 1494 + [[package]] 1495 + name = "thiserror-impl" 1496 + version = "2.0.18" 1497 + source = "registry+https://github.com/rust-lang/crates.io-index" 1498 + checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" 1499 + dependencies = [ 1500 + "proc-macro2", 1501 + "quote", 1502 + "syn", 1503 + ] 1504 + 1505 + [[package]] 1506 + name = "thread_local" 1507 + version = "1.1.9" 1508 + source = "registry+https://github.com/rust-lang/crates.io-index" 1509 + checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" 1510 + dependencies = [ 1511 + "cfg-if", 1512 + ] 1513 + 1514 + [[package]] 1515 + name = "tinystr" 1516 + version = "0.8.3" 1517 + source = "registry+https://github.com/rust-lang/crates.io-index" 1518 + checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" 1519 + dependencies = [ 1520 + "displaydoc", 1521 + "zerovec", 1522 + ] 1523 + 1524 + [[package]] 1525 + name = "tinyvec" 1526 + version = "1.11.0" 1527 + source = "registry+https://github.com/rust-lang/crates.io-index" 1528 + checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" 1529 + dependencies = [ 1530 + "tinyvec_macros", 1531 + ] 1532 + 1533 + [[package]] 1534 + name = "tinyvec_macros" 1535 + version = "0.1.1" 1536 + source = "registry+https://github.com/rust-lang/crates.io-index" 1537 + checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 1538 + 1539 + [[package]] 1540 + name = "tokio" 1541 + version = "1.52.1" 1542 + source = "registry+https://github.com/rust-lang/crates.io-index" 1543 + checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6" 1544 + dependencies = [ 1545 + "bytes", 1546 + "libc", 1547 + "mio", 1548 + "parking_lot", 1549 + "pin-project-lite", 1550 + "signal-hook-registry", 1551 + "socket2", 1552 + "tokio-macros", 1553 + "windows-sys 0.61.2", 1554 + ] 1555 + 1556 + [[package]] 1557 + name = "tokio-macros" 1558 + version = "2.7.0" 1559 + source = "registry+https://github.com/rust-lang/crates.io-index" 1560 + checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" 1561 + dependencies = [ 1562 + "proc-macro2", 1563 + "quote", 1564 + "syn", 1565 + ] 1566 + 1567 + [[package]] 1568 + name = "tokio-stream" 1569 + version = "0.1.18" 1570 + source = "registry+https://github.com/rust-lang/crates.io-index" 1571 + checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" 1572 + dependencies = [ 1573 + "futures-core", 1574 + "pin-project-lite", 1575 + "tokio", 1576 + ] 1577 + 1578 + [[package]] 1579 + name = "tower" 1580 + version = "0.5.3" 1581 + source = "registry+https://github.com/rust-lang/crates.io-index" 1582 + checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" 1583 + dependencies = [ 1584 + "futures-core", 1585 + "futures-util", 1586 + "pin-project-lite", 1587 + "sync_wrapper", 1588 + "tokio", 1589 + "tower-layer", 1590 + "tower-service", 1591 + "tracing", 1592 + ] 1593 + 1594 + [[package]] 1595 + name = "tower-http" 1596 + version = "0.6.8" 1597 + source = "registry+https://github.com/rust-lang/crates.io-index" 1598 + checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" 1599 + dependencies = [ 1600 + "bitflags", 1601 + "bytes", 1602 + "http", 1603 + "http-body", 1604 + "pin-project-lite", 1605 + "tower-layer", 1606 + "tower-service", 1607 + "tracing", 1608 + ] 1609 + 1610 + [[package]] 1611 + name = "tower-layer" 1612 + version = "0.3.3" 1613 + source = "registry+https://github.com/rust-lang/crates.io-index" 1614 + checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" 1615 + 1616 + [[package]] 1617 + name = "tower-service" 1618 + version = "0.3.3" 1619 + source = "registry+https://github.com/rust-lang/crates.io-index" 1620 + checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 1621 + 1622 + [[package]] 1623 + name = "tracing" 1624 + version = "0.1.44" 1625 + source = "registry+https://github.com/rust-lang/crates.io-index" 1626 + checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" 1627 + dependencies = [ 1628 + "log", 1629 + "pin-project-lite", 1630 + "tracing-attributes", 1631 + "tracing-core", 1632 + ] 1633 + 1634 + [[package]] 1635 + name = "tracing-attributes" 1636 + version = "0.1.31" 1637 + source = "registry+https://github.com/rust-lang/crates.io-index" 1638 + checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" 1639 + dependencies = [ 1640 + "proc-macro2", 1641 + "quote", 1642 + "syn", 1643 + ] 1644 + 1645 + [[package]] 1646 + name = "tracing-core" 1647 + version = "0.1.36" 1648 + source = "registry+https://github.com/rust-lang/crates.io-index" 1649 + checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" 1650 + dependencies = [ 1651 + "once_cell", 1652 + "valuable", 1653 + ] 1654 + 1655 + [[package]] 1656 + name = "tracing-log" 1657 + version = "0.2.0" 1658 + source = "registry+https://github.com/rust-lang/crates.io-index" 1659 + checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 1660 + dependencies = [ 1661 + "log", 1662 + "once_cell", 1663 + "tracing-core", 1664 + ] 1665 + 1666 + [[package]] 1667 + name = "tracing-subscriber" 1668 + version = "0.3.23" 1669 + source = "registry+https://github.com/rust-lang/crates.io-index" 1670 + checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" 1671 + dependencies = [ 1672 + "matchers", 1673 + "nu-ansi-term", 1674 + "once_cell", 1675 + "regex-automata", 1676 + "sharded-slab", 1677 + "smallvec", 1678 + "thread_local", 1679 + "tracing", 1680 + "tracing-core", 1681 + "tracing-log", 1682 + ] 1683 + 1684 + [[package]] 1685 + name = "typenum" 1686 + version = "1.19.0" 1687 + source = "registry+https://github.com/rust-lang/crates.io-index" 1688 + checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" 1689 + 1690 + [[package]] 1691 + name = "unicode-bidi" 1692 + version = "0.3.18" 1693 + source = "registry+https://github.com/rust-lang/crates.io-index" 1694 + checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" 1695 + 1696 + [[package]] 1697 + name = "unicode-ident" 1698 + version = "1.0.24" 1699 + source = "registry+https://github.com/rust-lang/crates.io-index" 1700 + checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" 1701 + 1702 + [[package]] 1703 + name = "unicode-normalization" 1704 + version = "0.1.25" 1705 + source = "registry+https://github.com/rust-lang/crates.io-index" 1706 + checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" 1707 + dependencies = [ 1708 + "tinyvec", 1709 + ] 1710 + 1711 + [[package]] 1712 + name = "unicode-properties" 1713 + version = "0.1.4" 1714 + source = "registry+https://github.com/rust-lang/crates.io-index" 1715 + checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" 1716 + 1717 + [[package]] 1718 + name = "url" 1719 + version = "2.5.8" 1720 + source = "registry+https://github.com/rust-lang/crates.io-index" 1721 + checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" 1722 + dependencies = [ 1723 + "form_urlencoded", 1724 + "idna", 1725 + "percent-encoding", 1726 + "serde", 1727 + ] 1728 + 1729 + [[package]] 1730 + name = "utf8_iter" 1731 + version = "1.0.4" 1732 + source = "registry+https://github.com/rust-lang/crates.io-index" 1733 + checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 1734 + 1735 + [[package]] 1736 + name = "valuable" 1737 + version = "0.1.1" 1738 + source = "registry+https://github.com/rust-lang/crates.io-index" 1739 + checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 1740 + 1741 + [[package]] 1742 + name = "vcpkg" 1743 + version = "0.2.15" 1744 + source = "registry+https://github.com/rust-lang/crates.io-index" 1745 + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 1746 + 1747 + [[package]] 1748 + name = "version_check" 1749 + version = "0.9.5" 1750 + source = "registry+https://github.com/rust-lang/crates.io-index" 1751 + checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 1752 + 1753 + [[package]] 1754 + name = "wasi" 1755 + version = "0.11.1+wasi-snapshot-preview1" 1756 + source = "registry+https://github.com/rust-lang/crates.io-index" 1757 + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 1758 + 1759 + [[package]] 1760 + name = "wasite" 1761 + version = "0.1.0" 1762 + source = "registry+https://github.com/rust-lang/crates.io-index" 1763 + checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" 1764 + 1765 + [[package]] 1766 + name = "whoami" 1767 + version = "1.6.1" 1768 + source = "registry+https://github.com/rust-lang/crates.io-index" 1769 + checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" 1770 + dependencies = [ 1771 + "libredox", 1772 + "wasite", 1773 + ] 1774 + 1775 + [[package]] 1776 + name = "windows-link" 1777 + version = "0.2.1" 1778 + source = "registry+https://github.com/rust-lang/crates.io-index" 1779 + checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" 1780 + 1781 + [[package]] 1782 + name = "windows-sys" 1783 + version = "0.48.0" 1784 + source = "registry+https://github.com/rust-lang/crates.io-index" 1785 + checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 1786 + dependencies = [ 1787 + "windows-targets", 1788 + ] 1789 + 1790 + [[package]] 1791 + name = "windows-sys" 1792 + version = "0.61.2" 1793 + source = "registry+https://github.com/rust-lang/crates.io-index" 1794 + checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" 1795 + dependencies = [ 1796 + "windows-link", 1797 + ] 1798 + 1799 + [[package]] 1800 + name = "windows-targets" 1801 + version = "0.48.5" 1802 + source = "registry+https://github.com/rust-lang/crates.io-index" 1803 + checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 1804 + dependencies = [ 1805 + "windows_aarch64_gnullvm", 1806 + "windows_aarch64_msvc", 1807 + "windows_i686_gnu", 1808 + "windows_i686_msvc", 1809 + "windows_x86_64_gnu", 1810 + "windows_x86_64_gnullvm", 1811 + "windows_x86_64_msvc", 1812 + ] 1813 + 1814 + [[package]] 1815 + name = "windows_aarch64_gnullvm" 1816 + version = "0.48.5" 1817 + source = "registry+https://github.com/rust-lang/crates.io-index" 1818 + checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 1819 + 1820 + [[package]] 1821 + name = "windows_aarch64_msvc" 1822 + version = "0.48.5" 1823 + source = "registry+https://github.com/rust-lang/crates.io-index" 1824 + checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 1825 + 1826 + [[package]] 1827 + name = "windows_i686_gnu" 1828 + version = "0.48.5" 1829 + source = "registry+https://github.com/rust-lang/crates.io-index" 1830 + checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 1831 + 1832 + [[package]] 1833 + name = "windows_i686_msvc" 1834 + version = "0.48.5" 1835 + source = "registry+https://github.com/rust-lang/crates.io-index" 1836 + checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 1837 + 1838 + [[package]] 1839 + name = "windows_x86_64_gnu" 1840 + version = "0.48.5" 1841 + source = "registry+https://github.com/rust-lang/crates.io-index" 1842 + checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 1843 + 1844 + [[package]] 1845 + name = "windows_x86_64_gnullvm" 1846 + version = "0.48.5" 1847 + source = "registry+https://github.com/rust-lang/crates.io-index" 1848 + checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 1849 + 1850 + [[package]] 1851 + name = "windows_x86_64_msvc" 1852 + version = "0.48.5" 1853 + source = "registry+https://github.com/rust-lang/crates.io-index" 1854 + checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 1855 + 1856 + [[package]] 1857 + name = "writeable" 1858 + version = "0.6.3" 1859 + source = "registry+https://github.com/rust-lang/crates.io-index" 1860 + checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" 1861 + 1862 + [[package]] 1863 + name = "yoke" 1864 + version = "0.8.2" 1865 + source = "registry+https://github.com/rust-lang/crates.io-index" 1866 + checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" 1867 + dependencies = [ 1868 + "stable_deref_trait", 1869 + "yoke-derive", 1870 + "zerofrom", 1871 + ] 1872 + 1873 + [[package]] 1874 + name = "yoke-derive" 1875 + version = "0.8.2" 1876 + source = "registry+https://github.com/rust-lang/crates.io-index" 1877 + checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" 1878 + dependencies = [ 1879 + "proc-macro2", 1880 + "quote", 1881 + "syn", 1882 + "synstructure", 1883 + ] 1884 + 1885 + [[package]] 1886 + name = "zerocopy" 1887 + version = "0.8.48" 1888 + source = "registry+https://github.com/rust-lang/crates.io-index" 1889 + checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" 1890 + dependencies = [ 1891 + "zerocopy-derive", 1892 + ] 1893 + 1894 + [[package]] 1895 + name = "zerocopy-derive" 1896 + version = "0.8.48" 1897 + source = "registry+https://github.com/rust-lang/crates.io-index" 1898 + checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" 1899 + dependencies = [ 1900 + "proc-macro2", 1901 + "quote", 1902 + "syn", 1903 + ] 1904 + 1905 + [[package]] 1906 + name = "zerofrom" 1907 + version = "0.1.7" 1908 + source = "registry+https://github.com/rust-lang/crates.io-index" 1909 + checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" 1910 + dependencies = [ 1911 + "zerofrom-derive", 1912 + ] 1913 + 1914 + [[package]] 1915 + name = "zerofrom-derive" 1916 + version = "0.1.7" 1917 + source = "registry+https://github.com/rust-lang/crates.io-index" 1918 + checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" 1919 + dependencies = [ 1920 + "proc-macro2", 1921 + "quote", 1922 + "syn", 1923 + "synstructure", 1924 + ] 1925 + 1926 + [[package]] 1927 + name = "zeroize" 1928 + version = "1.8.2" 1929 + source = "registry+https://github.com/rust-lang/crates.io-index" 1930 + checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" 1931 + 1932 + [[package]] 1933 + name = "zerotrie" 1934 + version = "0.2.4" 1935 + source = "registry+https://github.com/rust-lang/crates.io-index" 1936 + checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" 1937 + dependencies = [ 1938 + "displaydoc", 1939 + "yoke", 1940 + "zerofrom", 1941 + ] 1942 + 1943 + [[package]] 1944 + name = "zerovec" 1945 + version = "0.11.6" 1946 + source = "registry+https://github.com/rust-lang/crates.io-index" 1947 + checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" 1948 + dependencies = [ 1949 + "yoke", 1950 + "zerofrom", 1951 + "zerovec-derive", 1952 + ] 1953 + 1954 + [[package]] 1955 + name = "zerovec-derive" 1956 + version = "0.11.3" 1957 + source = "registry+https://github.com/rust-lang/crates.io-index" 1958 + checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" 1959 + dependencies = [ 1960 + "proc-macro2", 1961 + "quote", 1962 + "syn", 1963 + ] 1964 + 1965 + [[package]] 1966 + name = "zmij" 1967 + version = "1.0.21" 1968 + source = "registry+https://github.com/rust-lang/crates.io-index" 1969 + checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
+16
backend/Cargo.toml
··· 1 + [package] 2 + name = "backend" 3 + version = "0.1.0" 4 + edition = "2024" 5 + 6 + [dependencies] 7 + anyhow = "1.0.102" 8 + axum = "0.8.9" 9 + dotenvy = "0.15.7" 10 + serde = { version = "1.0.228", features = ["derive"] } 11 + serde_json = "1.0.149" 12 + sqlx = { version = "0.8.6", features = ["runtime-tokio", "postgres", "json"] } 13 + tokio = { version = "1.52.1", features = ["full"] } 14 + tower-http = { version = "0.6.8", features = ["cors", "trace"] } 15 + tracing = "0.1.44" 16 + tracing-subscriber = {version = "0.3.23", features = ["env-filter"] }
+6
backend/migrations/001_create_games.sql
··· 1 + CREATE TABLE IF NOT EXISTS games ( 2 + id SERIAL PRIMARY KEY, 3 + state JSONB NOT NULL, 4 + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), 5 + updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() 6 + );
+156
backend/src/main.rs
··· 1 + use axum::{ 2 + Json, Router, 3 + extract::{Path, State}, 4 + http::StatusCode, 5 + response::IntoResponse, 6 + routing::{get, post}, 7 + }; 8 + use serde::{Deserialize, Serialize}; 9 + use sqlx::PgPool; 10 + use tower_http::cors::CorsLayer; 11 + use tower_http::trace::TraceLayer; 12 + use tracing_subscriber; 13 + 14 + // === App State === 15 + // Ce qui est partage entre tous les handlers (clone-able, passe via State) 16 + 17 + #[derive(Clone)] 18 + struct AppState { 19 + db: PgPool, 20 + } 21 + 22 + // === Models === 23 + // Pour l'instant un GameState minimal — on le fera grandir plus tard 24 + 25 + #[derive(Debug, Clone, Serialize, Deserialize)] 26 + struct GameState { 27 + turn: u32, 28 + phase: String, // deviendra un enum plus tard 29 + resources: Resources, 30 + } 31 + 32 + #[derive(Debug, Clone, Serialize, Deserialize)] 33 + struct Resources { 34 + gold: i32, 35 + food: i32, 36 + population: i32, 37 + } 38 + 39 + impl GameState { 40 + fn new() -> Self { 41 + Self { 42 + turn: 1, 43 + phase: "draw".to_string(), 44 + resources: Resources { 45 + gold: 100, 46 + food: 50, 47 + population: 10, 48 + }, 49 + } 50 + } 51 + } 52 + 53 + // === Errors === 54 + // Un type d'erreur applicatif simple avec anyhow en interne 55 + 56 + enum AppError { 57 + NotFound(String), 58 + Internal(anyhow::Error), 59 + } 60 + 61 + // Convertit nos erreurs en reponses HTTP automatiquement 62 + impl IntoResponse for AppError { 63 + fn into_response(self) -> axum::response::Response { 64 + let (status, message) = match self { 65 + AppError::NotFound(msg) => (StatusCode::NOT_FOUND, msg), 66 + AppError::Internal(err) => ( 67 + StatusCode::INTERNAL_SERVER_ERROR, 68 + format!("Internal error: {err}"), 69 + ), 70 + }; 71 + (status, Json(serde_json::json!({ "error": message }))).into_response() 72 + } 73 + } 74 + 75 + // Permet d'utiliser `?` sur les erreurs sqlx/anyhow dans les handlers 76 + impl From<sqlx::Error> for AppError { 77 + fn from(err: sqlx::Error) -> Self { 78 + AppError::Internal(err.into()) 79 + } 80 + } 81 + 82 + // === Handlers === 83 + 84 + async fn health() -> &'static str { 85 + "ok" 86 + } 87 + 88 + async fn create_game(State(state): State<AppState>) -> Result<Json<serde_json::Value>, AppError> { 89 + let game = GameState::new(); 90 + let game_json = serde_json::to_value(&game).unwrap(); 91 + 92 + let row = sqlx::query_scalar!( 93 + r#"INSERT INTO games (state) VALUES ($1) RETURNING id"#, 94 + game_json 95 + ) 96 + .fetch_one(&state.db) 97 + .await?; 98 + 99 + Ok(Json(serde_json::json!({ 100 + "id": row, 101 + "state": game 102 + }))) 103 + } 104 + 105 + async fn get_game( 106 + Path(id): Path<i32>, 107 + State(state): State<AppState>, 108 + ) -> Result<Json<serde_json::Value>, AppError> { 109 + let row = sqlx::query!(r#"SELECT id, state FROM games WHERE id = $1"#, id) 110 + .fetch_optional(&state.db) 111 + .await? 112 + .ok_or_else(|| AppError::NotFound(format!("Game {id} not found")))?; 113 + 114 + Ok(Json(serde_json::json!({ 115 + "id": row.id, 116 + "state": row.state 117 + }))) 118 + } 119 + 120 + // === Main === 121 + 122 + #[tokio::main] 123 + async fn main() -> anyhow::Result<()> { 124 + // Charge le .env (DATABASE_URL, etc.) 125 + dotenvy::dotenv().ok(); 126 + 127 + // Initialise le logging en lisant RUST_LOG (ex: tower_http=debug,backend=debug) 128 + tracing_subscriber::fmt() 129 + .with_env_filter(tracing_subscriber::EnvFilter::from_default_env()) 130 + .init(); 131 + 132 + // Connexion a PostgreSQL 133 + let database_url = std::env::var("DATABASE_URL").expect("DATABASE_URL must be set"); 134 + let pool = PgPool::connect(&database_url).await?; 135 + 136 + // Lance les migrations SQL au demarrage 137 + sqlx::migrate!().run(&pool).await?; 138 + 139 + let state = AppState { db: pool }; 140 + 141 + // Routes 142 + let app = Router::new() 143 + .route("/health", get(health)) 144 + .route("/games", post(create_game)) 145 + .route("/games/{id}", get(get_game)) 146 + .layer(CorsLayer::permissive()) // autorise tout en dev 147 + .layer(TraceLayer::new_for_http()) 148 + .with_state(state); 149 + 150 + let addr = "0.0.0.0:3000"; 151 + tracing::info!("Listening on {addr}"); 152 + let listener = tokio::net::TcpListener::bind(addr).await?; 153 + axum::serve(listener, app).await?; 154 + 155 + Ok(()) 156 + }
+14
docker-compose.yml
··· 1 + services: 2 + db: 3 + image: postgres:17 4 + environment: 5 + POSTGRES_USER: postgres 6 + POSTGRES_PASSWORD: postgres 7 + POSTGRES_DB: dyfc 8 + ports: 9 + - "5432:5432" 10 + volumes: 11 + - pgdata:/var/lib/postgresql/data 12 + 13 + volumes: 14 + pgdata:
+24
frontend/.gitignore
··· 1 + # Logs 2 + logs 3 + *.log 4 + npm-debug.log* 5 + yarn-debug.log* 6 + yarn-error.log* 7 + pnpm-debug.log* 8 + lerna-debug.log* 9 + 10 + node_modules 11 + dist 12 + dist-ssr 13 + *.local 14 + 15 + # Editor directories and files 16 + .vscode/* 17 + !.vscode/extensions.json 18 + .idea 19 + .DS_Store 20 + *.suo 21 + *.ntvs* 22 + *.njsproj 23 + *.sln 24 + *.sw?
+3
frontend/.vscode/extensions.json
··· 1 + { 2 + "recommendations": ["svelte.svelte-vscode"] 3 + }
+47
frontend/README.md
··· 1 + # Svelte + TS + Vite 2 + 3 + This template should help get you started developing with Svelte and TypeScript in Vite. 4 + 5 + ## Recommended IDE Setup 6 + 7 + [VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode). 8 + 9 + ## Need an official Svelte framework? 10 + 11 + Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more. 12 + 13 + ## Technical considerations 14 + 15 + **Why use this over SvelteKit?** 16 + 17 + - It brings its own routing solution which might not be preferable for some users. 18 + - It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app. 19 + 20 + This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project. 21 + 22 + Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate. 23 + 24 + **Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?** 25 + 26 + Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information. 27 + 28 + **Why include `.vscode/extensions.json`?** 29 + 30 + Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project. 31 + 32 + **Why enable `allowJs` in the TS template?** 33 + 34 + While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant. 35 + 36 + **Why is HMR not preserving my local component state?** 37 + 38 + HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr). 39 + 40 + If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR. 41 + 42 + ```ts 43 + // store.ts 44 + // An extremely simple external store 45 + import { writable } from 'svelte/store' 46 + export default writable(0) 47 + ```
+13
frontend/index.html
··· 1 + <!doctype html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="UTF-8" /> 5 + <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + <title>frontend</title> 8 + </head> 9 + <body> 10 + <div id="app"></div> 11 + <script type="module" src="/src/main.ts"></script> 12 + </body> 13 + </html>
+1273
frontend/package-lock.json
··· 1 + { 2 + "name": "frontend", 3 + "version": "0.0.0", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "frontend", 9 + "version": "0.0.0", 10 + "devDependencies": { 11 + "@sveltejs/vite-plugin-svelte": "^7.0.0", 12 + "@tsconfig/svelte": "^5.0.8", 13 + "@types/node": "^24.12.2", 14 + "svelte": "^5.55.1", 15 + "svelte-check": "^4.4.6", 16 + "typescript": "~6.0.2", 17 + "vite": "^8.0.4" 18 + } 19 + }, 20 + "node_modules/@emnapi/core": { 21 + "version": "1.9.2", 22 + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz", 23 + "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==", 24 + "dev": true, 25 + "license": "MIT", 26 + "optional": true, 27 + "peer": true, 28 + "dependencies": { 29 + "@emnapi/wasi-threads": "1.2.1", 30 + "tslib": "^2.4.0" 31 + } 32 + }, 33 + "node_modules/@emnapi/runtime": { 34 + "version": "1.9.2", 35 + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz", 36 + "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==", 37 + "dev": true, 38 + "license": "MIT", 39 + "optional": true, 40 + "peer": true, 41 + "dependencies": { 42 + "tslib": "^2.4.0" 43 + } 44 + }, 45 + "node_modules/@emnapi/wasi-threads": { 46 + "version": "1.2.1", 47 + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", 48 + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", 49 + "dev": true, 50 + "license": "MIT", 51 + "optional": true, 52 + "dependencies": { 53 + "tslib": "^2.4.0" 54 + } 55 + }, 56 + "node_modules/@jridgewell/gen-mapping": { 57 + "version": "0.3.13", 58 + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", 59 + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", 60 + "dev": true, 61 + "license": "MIT", 62 + "dependencies": { 63 + "@jridgewell/sourcemap-codec": "^1.5.0", 64 + "@jridgewell/trace-mapping": "^0.3.24" 65 + } 66 + }, 67 + "node_modules/@jridgewell/remapping": { 68 + "version": "2.3.5", 69 + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", 70 + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", 71 + "dev": true, 72 + "license": "MIT", 73 + "dependencies": { 74 + "@jridgewell/gen-mapping": "^0.3.5", 75 + "@jridgewell/trace-mapping": "^0.3.24" 76 + } 77 + }, 78 + "node_modules/@jridgewell/resolve-uri": { 79 + "version": "3.1.2", 80 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 81 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 82 + "dev": true, 83 + "license": "MIT", 84 + "engines": { 85 + "node": ">=6.0.0" 86 + } 87 + }, 88 + "node_modules/@jridgewell/sourcemap-codec": { 89 + "version": "1.5.5", 90 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", 91 + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", 92 + "dev": true, 93 + "license": "MIT" 94 + }, 95 + "node_modules/@jridgewell/trace-mapping": { 96 + "version": "0.3.31", 97 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", 98 + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", 99 + "dev": true, 100 + "license": "MIT", 101 + "dependencies": { 102 + "@jridgewell/resolve-uri": "^3.1.0", 103 + "@jridgewell/sourcemap-codec": "^1.4.14" 104 + } 105 + }, 106 + "node_modules/@napi-rs/wasm-runtime": { 107 + "version": "1.1.4", 108 + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", 109 + "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", 110 + "dev": true, 111 + "license": "MIT", 112 + "optional": true, 113 + "dependencies": { 114 + "@tybys/wasm-util": "^0.10.1" 115 + }, 116 + "funding": { 117 + "type": "github", 118 + "url": "https://github.com/sponsors/Brooooooklyn" 119 + }, 120 + "peerDependencies": { 121 + "@emnapi/core": "^1.7.1", 122 + "@emnapi/runtime": "^1.7.1" 123 + } 124 + }, 125 + "node_modules/@oxc-project/types": { 126 + "version": "0.124.0", 127 + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.124.0.tgz", 128 + "integrity": "sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==", 129 + "dev": true, 130 + "license": "MIT", 131 + "funding": { 132 + "url": "https://github.com/sponsors/Boshen" 133 + } 134 + }, 135 + "node_modules/@rolldown/binding-android-arm64": { 136 + "version": "1.0.0-rc.15", 137 + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.15.tgz", 138 + "integrity": "sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==", 139 + "cpu": [ 140 + "arm64" 141 + ], 142 + "dev": true, 143 + "license": "MIT", 144 + "optional": true, 145 + "os": [ 146 + "android" 147 + ], 148 + "engines": { 149 + "node": "^20.19.0 || >=22.12.0" 150 + } 151 + }, 152 + "node_modules/@rolldown/binding-darwin-arm64": { 153 + "version": "1.0.0-rc.15", 154 + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.15.tgz", 155 + "integrity": "sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg==", 156 + "cpu": [ 157 + "arm64" 158 + ], 159 + "dev": true, 160 + "license": "MIT", 161 + "optional": true, 162 + "os": [ 163 + "darwin" 164 + ], 165 + "engines": { 166 + "node": "^20.19.0 || >=22.12.0" 167 + } 168 + }, 169 + "node_modules/@rolldown/binding-darwin-x64": { 170 + "version": "1.0.0-rc.15", 171 + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.15.tgz", 172 + "integrity": "sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw==", 173 + "cpu": [ 174 + "x64" 175 + ], 176 + "dev": true, 177 + "license": "MIT", 178 + "optional": true, 179 + "os": [ 180 + "darwin" 181 + ], 182 + "engines": { 183 + "node": "^20.19.0 || >=22.12.0" 184 + } 185 + }, 186 + "node_modules/@rolldown/binding-freebsd-x64": { 187 + "version": "1.0.0-rc.15", 188 + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.15.tgz", 189 + "integrity": "sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw==", 190 + "cpu": [ 191 + "x64" 192 + ], 193 + "dev": true, 194 + "license": "MIT", 195 + "optional": true, 196 + "os": [ 197 + "freebsd" 198 + ], 199 + "engines": { 200 + "node": "^20.19.0 || >=22.12.0" 201 + } 202 + }, 203 + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { 204 + "version": "1.0.0-rc.15", 205 + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.15.tgz", 206 + "integrity": "sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA==", 207 + "cpu": [ 208 + "arm" 209 + ], 210 + "dev": true, 211 + "license": "MIT", 212 + "optional": true, 213 + "os": [ 214 + "linux" 215 + ], 216 + "engines": { 217 + "node": "^20.19.0 || >=22.12.0" 218 + } 219 + }, 220 + "node_modules/@rolldown/binding-linux-arm64-gnu": { 221 + "version": "1.0.0-rc.15", 222 + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.15.tgz", 223 + "integrity": "sha512-eBZ/u8iAK9SoHGanqe/jrPnY0JvBN6iXbVOsbO38mbz+ZJsaobExAm1Iu+rxa4S1l2FjG0qEZn4Rc6X8n+9M+w==", 224 + "cpu": [ 225 + "arm64" 226 + ], 227 + "dev": true, 228 + "license": "MIT", 229 + "optional": true, 230 + "os": [ 231 + "linux" 232 + ], 233 + "engines": { 234 + "node": "^20.19.0 || >=22.12.0" 235 + } 236 + }, 237 + "node_modules/@rolldown/binding-linux-arm64-musl": { 238 + "version": "1.0.0-rc.15", 239 + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.15.tgz", 240 + "integrity": "sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ==", 241 + "cpu": [ 242 + "arm64" 243 + ], 244 + "dev": true, 245 + "license": "MIT", 246 + "optional": true, 247 + "os": [ 248 + "linux" 249 + ], 250 + "engines": { 251 + "node": "^20.19.0 || >=22.12.0" 252 + } 253 + }, 254 + "node_modules/@rolldown/binding-linux-ppc64-gnu": { 255 + "version": "1.0.0-rc.15", 256 + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.15.tgz", 257 + "integrity": "sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ==", 258 + "cpu": [ 259 + "ppc64" 260 + ], 261 + "dev": true, 262 + "license": "MIT", 263 + "optional": true, 264 + "os": [ 265 + "linux" 266 + ], 267 + "engines": { 268 + "node": "^20.19.0 || >=22.12.0" 269 + } 270 + }, 271 + "node_modules/@rolldown/binding-linux-s390x-gnu": { 272 + "version": "1.0.0-rc.15", 273 + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.15.tgz", 274 + "integrity": "sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ==", 275 + "cpu": [ 276 + "s390x" 277 + ], 278 + "dev": true, 279 + "license": "MIT", 280 + "optional": true, 281 + "os": [ 282 + "linux" 283 + ], 284 + "engines": { 285 + "node": "^20.19.0 || >=22.12.0" 286 + } 287 + }, 288 + "node_modules/@rolldown/binding-linux-x64-gnu": { 289 + "version": "1.0.0-rc.15", 290 + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.15.tgz", 291 + "integrity": "sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA==", 292 + "cpu": [ 293 + "x64" 294 + ], 295 + "dev": true, 296 + "license": "MIT", 297 + "optional": true, 298 + "os": [ 299 + "linux" 300 + ], 301 + "engines": { 302 + "node": "^20.19.0 || >=22.12.0" 303 + } 304 + }, 305 + "node_modules/@rolldown/binding-linux-x64-musl": { 306 + "version": "1.0.0-rc.15", 307 + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.15.tgz", 308 + "integrity": "sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw==", 309 + "cpu": [ 310 + "x64" 311 + ], 312 + "dev": true, 313 + "license": "MIT", 314 + "optional": true, 315 + "os": [ 316 + "linux" 317 + ], 318 + "engines": { 319 + "node": "^20.19.0 || >=22.12.0" 320 + } 321 + }, 322 + "node_modules/@rolldown/binding-openharmony-arm64": { 323 + "version": "1.0.0-rc.15", 324 + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.15.tgz", 325 + "integrity": "sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg==", 326 + "cpu": [ 327 + "arm64" 328 + ], 329 + "dev": true, 330 + "license": "MIT", 331 + "optional": true, 332 + "os": [ 333 + "openharmony" 334 + ], 335 + "engines": { 336 + "node": "^20.19.0 || >=22.12.0" 337 + } 338 + }, 339 + "node_modules/@rolldown/binding-wasm32-wasi": { 340 + "version": "1.0.0-rc.15", 341 + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.15.tgz", 342 + "integrity": "sha512-ApLruZq/ig+nhaE7OJm4lDjayUnOHVUa77zGeqnqZ9pn0ovdVbbNPerVibLXDmWeUZXjIYIT8V3xkT58Rm9u5Q==", 343 + "cpu": [ 344 + "wasm32" 345 + ], 346 + "dev": true, 347 + "license": "MIT", 348 + "optional": true, 349 + "dependencies": { 350 + "@emnapi/core": "1.9.2", 351 + "@emnapi/runtime": "1.9.2", 352 + "@napi-rs/wasm-runtime": "^1.1.3" 353 + }, 354 + "engines": { 355 + "node": ">=14.0.0" 356 + } 357 + }, 358 + "node_modules/@rolldown/binding-win32-arm64-msvc": { 359 + "version": "1.0.0-rc.15", 360 + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.15.tgz", 361 + "integrity": "sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA==", 362 + "cpu": [ 363 + "arm64" 364 + ], 365 + "dev": true, 366 + "license": "MIT", 367 + "optional": true, 368 + "os": [ 369 + "win32" 370 + ], 371 + "engines": { 372 + "node": "^20.19.0 || >=22.12.0" 373 + } 374 + }, 375 + "node_modules/@rolldown/binding-win32-x64-msvc": { 376 + "version": "1.0.0-rc.15", 377 + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.15.tgz", 378 + "integrity": "sha512-3P2A8L+x75qavWLe/Dll3EYBJLQmtkJN8rfh+U/eR3MqMgL/h98PhYI+JFfXuDPgPeCB7iZAKiqii5vqOvnA0g==", 379 + "cpu": [ 380 + "x64" 381 + ], 382 + "dev": true, 383 + "license": "MIT", 384 + "optional": true, 385 + "os": [ 386 + "win32" 387 + ], 388 + "engines": { 389 + "node": "^20.19.0 || >=22.12.0" 390 + } 391 + }, 392 + "node_modules/@rolldown/pluginutils": { 393 + "version": "1.0.0-rc.15", 394 + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.15.tgz", 395 + "integrity": "sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g==", 396 + "dev": true, 397 + "license": "MIT" 398 + }, 399 + "node_modules/@sveltejs/acorn-typescript": { 400 + "version": "1.0.9", 401 + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.9.tgz", 402 + "integrity": "sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==", 403 + "dev": true, 404 + "license": "MIT", 405 + "peerDependencies": { 406 + "acorn": "^8.9.0" 407 + } 408 + }, 409 + "node_modules/@sveltejs/vite-plugin-svelte": { 410 + "version": "7.0.0", 411 + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-7.0.0.tgz", 412 + "integrity": "sha512-ILXmxC7HAsnkK2eslgPetrqqW1BKSL7LktsFgqzNj83MaivMGZzluWq32m25j2mDOjmSKX7GGWahePhuEs7P/g==", 413 + "dev": true, 414 + "license": "MIT", 415 + "dependencies": { 416 + "deepmerge": "^4.3.1", 417 + "magic-string": "^0.30.21", 418 + "obug": "^2.1.0", 419 + "vitefu": "^1.1.2" 420 + }, 421 + "engines": { 422 + "node": "^20.19 || ^22.12 || >=24" 423 + }, 424 + "peerDependencies": { 425 + "svelte": "^5.46.4", 426 + "vite": "^8.0.0-beta.7 || ^8.0.0" 427 + } 428 + }, 429 + "node_modules/@tsconfig/svelte": { 430 + "version": "5.0.8", 431 + "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-5.0.8.tgz", 432 + "integrity": "sha512-UkNnw1/oFEfecR8ypyHIQuWYdkPvHiwcQ78sh+ymIiYoF+uc5H1UBetbjyqT+vgGJ3qQN6nhucJviX6HesWtKQ==", 433 + "dev": true, 434 + "license": "MIT" 435 + }, 436 + "node_modules/@tybys/wasm-util": { 437 + "version": "0.10.1", 438 + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", 439 + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", 440 + "dev": true, 441 + "license": "MIT", 442 + "optional": true, 443 + "dependencies": { 444 + "tslib": "^2.4.0" 445 + } 446 + }, 447 + "node_modules/@types/estree": { 448 + "version": "1.0.8", 449 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", 450 + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", 451 + "dev": true, 452 + "license": "MIT" 453 + }, 454 + "node_modules/@types/node": { 455 + "version": "24.12.2", 456 + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.2.tgz", 457 + "integrity": "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==", 458 + "dev": true, 459 + "license": "MIT", 460 + "peer": true, 461 + "dependencies": { 462 + "undici-types": "~7.16.0" 463 + } 464 + }, 465 + "node_modules/@types/trusted-types": { 466 + "version": "2.0.7", 467 + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", 468 + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", 469 + "dev": true, 470 + "license": "MIT" 471 + }, 472 + "node_modules/acorn": { 473 + "version": "8.16.0", 474 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", 475 + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", 476 + "dev": true, 477 + "license": "MIT", 478 + "peer": true, 479 + "bin": { 480 + "acorn": "bin/acorn" 481 + }, 482 + "engines": { 483 + "node": ">=0.4.0" 484 + } 485 + }, 486 + "node_modules/aria-query": { 487 + "version": "5.3.1", 488 + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.1.tgz", 489 + "integrity": "sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==", 490 + "dev": true, 491 + "license": "Apache-2.0", 492 + "engines": { 493 + "node": ">= 0.4" 494 + } 495 + }, 496 + "node_modules/axobject-query": { 497 + "version": "4.1.0", 498 + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", 499 + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", 500 + "dev": true, 501 + "license": "Apache-2.0", 502 + "engines": { 503 + "node": ">= 0.4" 504 + } 505 + }, 506 + "node_modules/chokidar": { 507 + "version": "4.0.3", 508 + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", 509 + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", 510 + "dev": true, 511 + "license": "MIT", 512 + "dependencies": { 513 + "readdirp": "^4.0.1" 514 + }, 515 + "engines": { 516 + "node": ">= 14.16.0" 517 + }, 518 + "funding": { 519 + "url": "https://paulmillr.com/funding/" 520 + } 521 + }, 522 + "node_modules/clsx": { 523 + "version": "2.1.1", 524 + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", 525 + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", 526 + "dev": true, 527 + "license": "MIT", 528 + "engines": { 529 + "node": ">=6" 530 + } 531 + }, 532 + "node_modules/deepmerge": { 533 + "version": "4.3.1", 534 + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 535 + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 536 + "dev": true, 537 + "license": "MIT", 538 + "engines": { 539 + "node": ">=0.10.0" 540 + } 541 + }, 542 + "node_modules/detect-libc": { 543 + "version": "2.1.2", 544 + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", 545 + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", 546 + "dev": true, 547 + "license": "Apache-2.0", 548 + "engines": { 549 + "node": ">=8" 550 + } 551 + }, 552 + "node_modules/devalue": { 553 + "version": "5.7.1", 554 + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.7.1.tgz", 555 + "integrity": "sha512-MUbZ586EgQqdRnC4yDrlod3BEdyvE4TapGYHMW2CiaW+KkkFmWEFqBUaLltEZCGi0iFXCEjRF0OjF0DV2QHjOA==", 556 + "dev": true, 557 + "license": "MIT" 558 + }, 559 + "node_modules/esm-env": { 560 + "version": "1.2.2", 561 + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", 562 + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", 563 + "dev": true, 564 + "license": "MIT" 565 + }, 566 + "node_modules/esrap": { 567 + "version": "2.2.5", 568 + "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.5.tgz", 569 + "integrity": "sha512-/yLB1538mag+dn0wsePTe8C0rDIjUOaJpMs2McodSzmM2msWcZsBSdRtg6HOBt0A/r82BN+Md3pgwSc/uWt2Ig==", 570 + "dev": true, 571 + "license": "MIT", 572 + "dependencies": { 573 + "@jridgewell/sourcemap-codec": "^1.4.15" 574 + }, 575 + "peerDependencies": { 576 + "@typescript-eslint/types": "^8.2.0" 577 + }, 578 + "peerDependenciesMeta": { 579 + "@typescript-eslint/types": { 580 + "optional": true 581 + } 582 + } 583 + }, 584 + "node_modules/fdir": { 585 + "version": "6.5.0", 586 + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", 587 + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", 588 + "dev": true, 589 + "license": "MIT", 590 + "engines": { 591 + "node": ">=12.0.0" 592 + }, 593 + "peerDependencies": { 594 + "picomatch": "^3 || ^4" 595 + }, 596 + "peerDependenciesMeta": { 597 + "picomatch": { 598 + "optional": true 599 + } 600 + } 601 + }, 602 + "node_modules/fsevents": { 603 + "version": "2.3.3", 604 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 605 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 606 + "dev": true, 607 + "hasInstallScript": true, 608 + "license": "MIT", 609 + "optional": true, 610 + "os": [ 611 + "darwin" 612 + ], 613 + "engines": { 614 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 615 + } 616 + }, 617 + "node_modules/is-reference": { 618 + "version": "3.0.3", 619 + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", 620 + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", 621 + "dev": true, 622 + "license": "MIT", 623 + "dependencies": { 624 + "@types/estree": "^1.0.6" 625 + } 626 + }, 627 + "node_modules/lightningcss": { 628 + "version": "1.32.0", 629 + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", 630 + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", 631 + "dev": true, 632 + "license": "MPL-2.0", 633 + "dependencies": { 634 + "detect-libc": "^2.0.3" 635 + }, 636 + "engines": { 637 + "node": ">= 12.0.0" 638 + }, 639 + "funding": { 640 + "type": "opencollective", 641 + "url": "https://opencollective.com/parcel" 642 + }, 643 + "optionalDependencies": { 644 + "lightningcss-android-arm64": "1.32.0", 645 + "lightningcss-darwin-arm64": "1.32.0", 646 + "lightningcss-darwin-x64": "1.32.0", 647 + "lightningcss-freebsd-x64": "1.32.0", 648 + "lightningcss-linux-arm-gnueabihf": "1.32.0", 649 + "lightningcss-linux-arm64-gnu": "1.32.0", 650 + "lightningcss-linux-arm64-musl": "1.32.0", 651 + "lightningcss-linux-x64-gnu": "1.32.0", 652 + "lightningcss-linux-x64-musl": "1.32.0", 653 + "lightningcss-win32-arm64-msvc": "1.32.0", 654 + "lightningcss-win32-x64-msvc": "1.32.0" 655 + } 656 + }, 657 + "node_modules/lightningcss-android-arm64": { 658 + "version": "1.32.0", 659 + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", 660 + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", 661 + "cpu": [ 662 + "arm64" 663 + ], 664 + "dev": true, 665 + "license": "MPL-2.0", 666 + "optional": true, 667 + "os": [ 668 + "android" 669 + ], 670 + "engines": { 671 + "node": ">= 12.0.0" 672 + }, 673 + "funding": { 674 + "type": "opencollective", 675 + "url": "https://opencollective.com/parcel" 676 + } 677 + }, 678 + "node_modules/lightningcss-darwin-arm64": { 679 + "version": "1.32.0", 680 + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", 681 + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", 682 + "cpu": [ 683 + "arm64" 684 + ], 685 + "dev": true, 686 + "license": "MPL-2.0", 687 + "optional": true, 688 + "os": [ 689 + "darwin" 690 + ], 691 + "engines": { 692 + "node": ">= 12.0.0" 693 + }, 694 + "funding": { 695 + "type": "opencollective", 696 + "url": "https://opencollective.com/parcel" 697 + } 698 + }, 699 + "node_modules/lightningcss-darwin-x64": { 700 + "version": "1.32.0", 701 + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", 702 + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", 703 + "cpu": [ 704 + "x64" 705 + ], 706 + "dev": true, 707 + "license": "MPL-2.0", 708 + "optional": true, 709 + "os": [ 710 + "darwin" 711 + ], 712 + "engines": { 713 + "node": ">= 12.0.0" 714 + }, 715 + "funding": { 716 + "type": "opencollective", 717 + "url": "https://opencollective.com/parcel" 718 + } 719 + }, 720 + "node_modules/lightningcss-freebsd-x64": { 721 + "version": "1.32.0", 722 + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", 723 + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", 724 + "cpu": [ 725 + "x64" 726 + ], 727 + "dev": true, 728 + "license": "MPL-2.0", 729 + "optional": true, 730 + "os": [ 731 + "freebsd" 732 + ], 733 + "engines": { 734 + "node": ">= 12.0.0" 735 + }, 736 + "funding": { 737 + "type": "opencollective", 738 + "url": "https://opencollective.com/parcel" 739 + } 740 + }, 741 + "node_modules/lightningcss-linux-arm-gnueabihf": { 742 + "version": "1.32.0", 743 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", 744 + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", 745 + "cpu": [ 746 + "arm" 747 + ], 748 + "dev": true, 749 + "license": "MPL-2.0", 750 + "optional": true, 751 + "os": [ 752 + "linux" 753 + ], 754 + "engines": { 755 + "node": ">= 12.0.0" 756 + }, 757 + "funding": { 758 + "type": "opencollective", 759 + "url": "https://opencollective.com/parcel" 760 + } 761 + }, 762 + "node_modules/lightningcss-linux-arm64-gnu": { 763 + "version": "1.32.0", 764 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", 765 + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", 766 + "cpu": [ 767 + "arm64" 768 + ], 769 + "dev": true, 770 + "license": "MPL-2.0", 771 + "optional": true, 772 + "os": [ 773 + "linux" 774 + ], 775 + "engines": { 776 + "node": ">= 12.0.0" 777 + }, 778 + "funding": { 779 + "type": "opencollective", 780 + "url": "https://opencollective.com/parcel" 781 + } 782 + }, 783 + "node_modules/lightningcss-linux-arm64-musl": { 784 + "version": "1.32.0", 785 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", 786 + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", 787 + "cpu": [ 788 + "arm64" 789 + ], 790 + "dev": true, 791 + "license": "MPL-2.0", 792 + "optional": true, 793 + "os": [ 794 + "linux" 795 + ], 796 + "engines": { 797 + "node": ">= 12.0.0" 798 + }, 799 + "funding": { 800 + "type": "opencollective", 801 + "url": "https://opencollective.com/parcel" 802 + } 803 + }, 804 + "node_modules/lightningcss-linux-x64-gnu": { 805 + "version": "1.32.0", 806 + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", 807 + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", 808 + "cpu": [ 809 + "x64" 810 + ], 811 + "dev": true, 812 + "license": "MPL-2.0", 813 + "optional": true, 814 + "os": [ 815 + "linux" 816 + ], 817 + "engines": { 818 + "node": ">= 12.0.0" 819 + }, 820 + "funding": { 821 + "type": "opencollective", 822 + "url": "https://opencollective.com/parcel" 823 + } 824 + }, 825 + "node_modules/lightningcss-linux-x64-musl": { 826 + "version": "1.32.0", 827 + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", 828 + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", 829 + "cpu": [ 830 + "x64" 831 + ], 832 + "dev": true, 833 + "license": "MPL-2.0", 834 + "optional": true, 835 + "os": [ 836 + "linux" 837 + ], 838 + "engines": { 839 + "node": ">= 12.0.0" 840 + }, 841 + "funding": { 842 + "type": "opencollective", 843 + "url": "https://opencollective.com/parcel" 844 + } 845 + }, 846 + "node_modules/lightningcss-win32-arm64-msvc": { 847 + "version": "1.32.0", 848 + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", 849 + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", 850 + "cpu": [ 851 + "arm64" 852 + ], 853 + "dev": true, 854 + "license": "MPL-2.0", 855 + "optional": true, 856 + "os": [ 857 + "win32" 858 + ], 859 + "engines": { 860 + "node": ">= 12.0.0" 861 + }, 862 + "funding": { 863 + "type": "opencollective", 864 + "url": "https://opencollective.com/parcel" 865 + } 866 + }, 867 + "node_modules/lightningcss-win32-x64-msvc": { 868 + "version": "1.32.0", 869 + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", 870 + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", 871 + "cpu": [ 872 + "x64" 873 + ], 874 + "dev": true, 875 + "license": "MPL-2.0", 876 + "optional": true, 877 + "os": [ 878 + "win32" 879 + ], 880 + "engines": { 881 + "node": ">= 12.0.0" 882 + }, 883 + "funding": { 884 + "type": "opencollective", 885 + "url": "https://opencollective.com/parcel" 886 + } 887 + }, 888 + "node_modules/locate-character": { 889 + "version": "3.0.0", 890 + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", 891 + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", 892 + "dev": true, 893 + "license": "MIT" 894 + }, 895 + "node_modules/magic-string": { 896 + "version": "0.30.21", 897 + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", 898 + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", 899 + "dev": true, 900 + "license": "MIT", 901 + "dependencies": { 902 + "@jridgewell/sourcemap-codec": "^1.5.5" 903 + } 904 + }, 905 + "node_modules/mri": { 906 + "version": "1.2.0", 907 + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 908 + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 909 + "dev": true, 910 + "license": "MIT", 911 + "engines": { 912 + "node": ">=4" 913 + } 914 + }, 915 + "node_modules/nanoid": { 916 + "version": "3.3.11", 917 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 918 + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 919 + "dev": true, 920 + "funding": [ 921 + { 922 + "type": "github", 923 + "url": "https://github.com/sponsors/ai" 924 + } 925 + ], 926 + "license": "MIT", 927 + "bin": { 928 + "nanoid": "bin/nanoid.cjs" 929 + }, 930 + "engines": { 931 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 932 + } 933 + }, 934 + "node_modules/obug": { 935 + "version": "2.1.1", 936 + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", 937 + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", 938 + "dev": true, 939 + "funding": [ 940 + "https://github.com/sponsors/sxzz", 941 + "https://opencollective.com/debug" 942 + ], 943 + "license": "MIT" 944 + }, 945 + "node_modules/picocolors": { 946 + "version": "1.1.1", 947 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 948 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 949 + "dev": true, 950 + "license": "ISC" 951 + }, 952 + "node_modules/picomatch": { 953 + "version": "4.0.4", 954 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", 955 + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", 956 + "dev": true, 957 + "license": "MIT", 958 + "peer": true, 959 + "engines": { 960 + "node": ">=12" 961 + }, 962 + "funding": { 963 + "url": "https://github.com/sponsors/jonschlinkert" 964 + } 965 + }, 966 + "node_modules/postcss": { 967 + "version": "8.5.10", 968 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz", 969 + "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", 970 + "dev": true, 971 + "funding": [ 972 + { 973 + "type": "opencollective", 974 + "url": "https://opencollective.com/postcss/" 975 + }, 976 + { 977 + "type": "tidelift", 978 + "url": "https://tidelift.com/funding/github/npm/postcss" 979 + }, 980 + { 981 + "type": "github", 982 + "url": "https://github.com/sponsors/ai" 983 + } 984 + ], 985 + "license": "MIT", 986 + "dependencies": { 987 + "nanoid": "^3.3.11", 988 + "picocolors": "^1.1.1", 989 + "source-map-js": "^1.2.1" 990 + }, 991 + "engines": { 992 + "node": "^10 || ^12 || >=14" 993 + } 994 + }, 995 + "node_modules/readdirp": { 996 + "version": "4.1.2", 997 + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", 998 + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", 999 + "dev": true, 1000 + "license": "MIT", 1001 + "engines": { 1002 + "node": ">= 14.18.0" 1003 + }, 1004 + "funding": { 1005 + "type": "individual", 1006 + "url": "https://paulmillr.com/funding/" 1007 + } 1008 + }, 1009 + "node_modules/rolldown": { 1010 + "version": "1.0.0-rc.15", 1011 + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.15.tgz", 1012 + "integrity": "sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g==", 1013 + "dev": true, 1014 + "license": "MIT", 1015 + "dependencies": { 1016 + "@oxc-project/types": "=0.124.0", 1017 + "@rolldown/pluginutils": "1.0.0-rc.15" 1018 + }, 1019 + "bin": { 1020 + "rolldown": "bin/cli.mjs" 1021 + }, 1022 + "engines": { 1023 + "node": "^20.19.0 || >=22.12.0" 1024 + }, 1025 + "optionalDependencies": { 1026 + "@rolldown/binding-android-arm64": "1.0.0-rc.15", 1027 + "@rolldown/binding-darwin-arm64": "1.0.0-rc.15", 1028 + "@rolldown/binding-darwin-x64": "1.0.0-rc.15", 1029 + "@rolldown/binding-freebsd-x64": "1.0.0-rc.15", 1030 + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.15", 1031 + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.15", 1032 + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.15", 1033 + "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.15", 1034 + "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.15", 1035 + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.15", 1036 + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.15", 1037 + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.15", 1038 + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.15", 1039 + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.15", 1040 + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.15" 1041 + } 1042 + }, 1043 + "node_modules/sade": { 1044 + "version": "1.8.1", 1045 + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 1046 + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 1047 + "dev": true, 1048 + "license": "MIT", 1049 + "dependencies": { 1050 + "mri": "^1.1.0" 1051 + }, 1052 + "engines": { 1053 + "node": ">=6" 1054 + } 1055 + }, 1056 + "node_modules/source-map-js": { 1057 + "version": "1.2.1", 1058 + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 1059 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 1060 + "dev": true, 1061 + "license": "BSD-3-Clause", 1062 + "engines": { 1063 + "node": ">=0.10.0" 1064 + } 1065 + }, 1066 + "node_modules/svelte": { 1067 + "version": "5.55.4", 1068 + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.55.4.tgz", 1069 + "integrity": "sha512-q8DFohk6vUswSng95IZb9nzWJnbINZsK7OiM1snAa3qCjJBL0ZQpvMyAaVXjUukdM75J/m8UE8xwqat8Ors/zQ==", 1070 + "dev": true, 1071 + "license": "MIT", 1072 + "peer": true, 1073 + "dependencies": { 1074 + "@jridgewell/remapping": "^2.3.4", 1075 + "@jridgewell/sourcemap-codec": "^1.5.0", 1076 + "@sveltejs/acorn-typescript": "^1.0.5", 1077 + "@types/estree": "^1.0.5", 1078 + "@types/trusted-types": "^2.0.7", 1079 + "acorn": "^8.12.1", 1080 + "aria-query": "5.3.1", 1081 + "axobject-query": "^4.1.0", 1082 + "clsx": "^2.1.1", 1083 + "devalue": "^5.6.4", 1084 + "esm-env": "^1.2.1", 1085 + "esrap": "^2.2.4", 1086 + "is-reference": "^3.0.3", 1087 + "locate-character": "^3.0.0", 1088 + "magic-string": "^0.30.11", 1089 + "zimmerframe": "^1.1.2" 1090 + }, 1091 + "engines": { 1092 + "node": ">=18" 1093 + } 1094 + }, 1095 + "node_modules/svelte-check": { 1096 + "version": "4.4.6", 1097 + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.4.6.tgz", 1098 + "integrity": "sha512-kP1zG81EWaFe9ZyTv4ZXv44Csi6Pkdpb7S3oj6m+K2ec/IcDg/a8LsFsnVLqm2nxtkSwsd5xPj/qFkTBgXHXjg==", 1099 + "dev": true, 1100 + "license": "MIT", 1101 + "dependencies": { 1102 + "@jridgewell/trace-mapping": "^0.3.25", 1103 + "chokidar": "^4.0.1", 1104 + "fdir": "^6.2.0", 1105 + "picocolors": "^1.0.0", 1106 + "sade": "^1.7.4" 1107 + }, 1108 + "bin": { 1109 + "svelte-check": "bin/svelte-check" 1110 + }, 1111 + "engines": { 1112 + "node": ">= 18.0.0" 1113 + }, 1114 + "peerDependencies": { 1115 + "svelte": "^4.0.0 || ^5.0.0-next.0", 1116 + "typescript": ">=5.0.0" 1117 + } 1118 + }, 1119 + "node_modules/tinyglobby": { 1120 + "version": "0.2.16", 1121 + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", 1122 + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", 1123 + "dev": true, 1124 + "license": "MIT", 1125 + "dependencies": { 1126 + "fdir": "^6.5.0", 1127 + "picomatch": "^4.0.4" 1128 + }, 1129 + "engines": { 1130 + "node": ">=12.0.0" 1131 + }, 1132 + "funding": { 1133 + "url": "https://github.com/sponsors/SuperchupuDev" 1134 + } 1135 + }, 1136 + "node_modules/tslib": { 1137 + "version": "2.8.1", 1138 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", 1139 + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", 1140 + "dev": true, 1141 + "license": "0BSD", 1142 + "optional": true 1143 + }, 1144 + "node_modules/typescript": { 1145 + "version": "6.0.3", 1146 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", 1147 + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", 1148 + "dev": true, 1149 + "license": "Apache-2.0", 1150 + "peer": true, 1151 + "bin": { 1152 + "tsc": "bin/tsc", 1153 + "tsserver": "bin/tsserver" 1154 + }, 1155 + "engines": { 1156 + "node": ">=14.17" 1157 + } 1158 + }, 1159 + "node_modules/undici-types": { 1160 + "version": "7.16.0", 1161 + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", 1162 + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", 1163 + "dev": true, 1164 + "license": "MIT" 1165 + }, 1166 + "node_modules/vite": { 1167 + "version": "8.0.8", 1168 + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.8.tgz", 1169 + "integrity": "sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==", 1170 + "dev": true, 1171 + "license": "MIT", 1172 + "peer": true, 1173 + "dependencies": { 1174 + "lightningcss": "^1.32.0", 1175 + "picomatch": "^4.0.4", 1176 + "postcss": "^8.5.8", 1177 + "rolldown": "1.0.0-rc.15", 1178 + "tinyglobby": "^0.2.15" 1179 + }, 1180 + "bin": { 1181 + "vite": "bin/vite.js" 1182 + }, 1183 + "engines": { 1184 + "node": "^20.19.0 || >=22.12.0" 1185 + }, 1186 + "funding": { 1187 + "url": "https://github.com/vitejs/vite?sponsor=1" 1188 + }, 1189 + "optionalDependencies": { 1190 + "fsevents": "~2.3.3" 1191 + }, 1192 + "peerDependencies": { 1193 + "@types/node": "^20.19.0 || >=22.12.0", 1194 + "@vitejs/devtools": "^0.1.0", 1195 + "esbuild": "^0.27.0 || ^0.28.0", 1196 + "jiti": ">=1.21.0", 1197 + "less": "^4.0.0", 1198 + "sass": "^1.70.0", 1199 + "sass-embedded": "^1.70.0", 1200 + "stylus": ">=0.54.8", 1201 + "sugarss": "^5.0.0", 1202 + "terser": "^5.16.0", 1203 + "tsx": "^4.8.1", 1204 + "yaml": "^2.4.2" 1205 + }, 1206 + "peerDependenciesMeta": { 1207 + "@types/node": { 1208 + "optional": true 1209 + }, 1210 + "@vitejs/devtools": { 1211 + "optional": true 1212 + }, 1213 + "esbuild": { 1214 + "optional": true 1215 + }, 1216 + "jiti": { 1217 + "optional": true 1218 + }, 1219 + "less": { 1220 + "optional": true 1221 + }, 1222 + "sass": { 1223 + "optional": true 1224 + }, 1225 + "sass-embedded": { 1226 + "optional": true 1227 + }, 1228 + "stylus": { 1229 + "optional": true 1230 + }, 1231 + "sugarss": { 1232 + "optional": true 1233 + }, 1234 + "terser": { 1235 + "optional": true 1236 + }, 1237 + "tsx": { 1238 + "optional": true 1239 + }, 1240 + "yaml": { 1241 + "optional": true 1242 + } 1243 + } 1244 + }, 1245 + "node_modules/vitefu": { 1246 + "version": "1.1.3", 1247 + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.3.tgz", 1248 + "integrity": "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==", 1249 + "dev": true, 1250 + "license": "MIT", 1251 + "workspaces": [ 1252 + "tests/deps/*", 1253 + "tests/projects/*", 1254 + "tests/projects/workspace/packages/*" 1255 + ], 1256 + "peerDependencies": { 1257 + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" 1258 + }, 1259 + "peerDependenciesMeta": { 1260 + "vite": { 1261 + "optional": true 1262 + } 1263 + } 1264 + }, 1265 + "node_modules/zimmerframe": { 1266 + "version": "1.1.4", 1267 + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", 1268 + "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==", 1269 + "dev": true, 1270 + "license": "MIT" 1271 + } 1272 + } 1273 + }
+21
frontend/package.json
··· 1 + { 2 + "name": "frontend", 3 + "private": true, 4 + "version": "0.0.0", 5 + "type": "module", 6 + "scripts": { 7 + "dev": "vite", 8 + "build": "vite build", 9 + "preview": "vite preview", 10 + "check": "svelte-check --tsconfig ./tsconfig.app.json && tsc -p tsconfig.node.json" 11 + }, 12 + "devDependencies": { 13 + "@sveltejs/vite-plugin-svelte": "^7.0.0", 14 + "@tsconfig/svelte": "^5.0.8", 15 + "@types/node": "^24.12.2", 16 + "svelte": "^5.55.1", 17 + "svelte-check": "^4.4.6", 18 + "typescript": "~6.0.2", 19 + "vite": "^8.0.4" 20 + } 21 + }
+1
frontend/public/favicon.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" width="48" height="46" fill="none" viewBox="0 0 48 46"><path fill="#863bff" d="M25.946 44.938c-.664.845-2.021.375-2.021-.698V33.937a2.26 2.26 0 0 0-2.262-2.262H10.287c-.92 0-1.456-1.04-.92-1.788l7.48-10.471c1.07-1.497 0-3.578-1.842-3.578H1.237c-.92 0-1.456-1.04-.92-1.788L10.013.474c.214-.297.556-.474.92-.474h28.894c.92 0 1.456 1.04.92 1.788l-7.48 10.471c-1.07 1.498 0 3.579 1.842 3.579h11.377c.943 0 1.473 1.088.89 1.83L25.947 44.94z" style="fill:#863bff;fill:color(display-p3 .5252 .23 1);fill-opacity:1"/><mask id="a" width="48" height="46" x="0" y="0" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="#000" d="M25.842 44.938c-.664.844-2.021.375-2.021-.698V33.937a2.26 2.26 0 0 0-2.262-2.262H10.183c-.92 0-1.456-1.04-.92-1.788l7.48-10.471c1.07-1.498 0-3.579-1.842-3.579H1.133c-.92 0-1.456-1.04-.92-1.787L9.91.473c.214-.297.556-.474.92-.474h28.894c.92 0 1.456 1.04.92 1.788l-7.48 10.471c-1.07 1.498 0 3.578 1.842 3.578h11.377c.943 0 1.473 1.088.89 1.832L25.843 44.94z" style="fill:#000;fill-opacity:1"/></mask><g mask="url(#a)"><g filter="url(#b)"><ellipse cx="5.508" cy="14.704" fill="#ede6ff" rx="5.508" ry="14.704" style="fill:#ede6ff;fill:color(display-p3 .9275 .9033 1);fill-opacity:1" transform="matrix(.00324 1 1 -.00324 -4.47 31.516)"/></g><g filter="url(#c)"><ellipse cx="10.399" cy="29.851" fill="#ede6ff" rx="10.399" ry="29.851" style="fill:#ede6ff;fill:color(display-p3 .9275 .9033 1);fill-opacity:1" transform="matrix(.00324 1 1 -.00324 -39.328 7.883)"/></g><g filter="url(#d)"><ellipse cx="5.508" cy="30.487" fill="#7e14ff" rx="5.508" ry="30.487" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(89.814 -25.913 -14.639)scale(1 -1)"/></g><g filter="url(#e)"><ellipse cx="5.508" cy="30.599" fill="#7e14ff" rx="5.508" ry="30.599" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(89.814 -32.644 -3.334)scale(1 -1)"/></g><g filter="url(#f)"><ellipse cx="5.508" cy="30.599" fill="#7e14ff" rx="5.508" ry="30.599" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="matrix(.00324 1 1 -.00324 -34.34 30.47)"/></g><g filter="url(#g)"><ellipse cx="14.072" cy="22.078" fill="#ede6ff" rx="14.072" ry="22.078" style="fill:#ede6ff;fill:color(display-p3 .9275 .9033 1);fill-opacity:1" transform="rotate(93.35 24.506 48.493)scale(-1 1)"/></g><g filter="url(#h)"><ellipse cx="3.47" cy="21.501" fill="#7e14ff" rx="3.47" ry="21.501" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(89.009 28.708 47.59)scale(-1 1)"/></g><g filter="url(#i)"><ellipse cx="3.47" cy="21.501" fill="#7e14ff" rx="3.47" ry="21.501" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(89.009 28.708 47.59)scale(-1 1)"/></g><g filter="url(#j)"><ellipse cx=".387" cy="8.972" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(39.51 .387 8.972)"/></g><g filter="url(#k)"><ellipse cx="47.523" cy="-6.092" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(37.892 47.523 -6.092)"/></g><g filter="url(#l)"><ellipse cx="41.412" cy="6.333" fill="#47bfff" rx="5.971" ry="9.665" style="fill:#47bfff;fill:color(display-p3 .2799 .748 1);fill-opacity:1" transform="rotate(37.892 41.412 6.333)"/></g><g filter="url(#m)"><ellipse cx="-1.879" cy="38.332" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(37.892 -1.88 38.332)"/></g><g filter="url(#n)"><ellipse cx="-1.879" cy="38.332" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(37.892 -1.88 38.332)"/></g><g filter="url(#o)"><ellipse cx="35.651" cy="29.907" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(37.892 35.651 29.907)"/></g><g filter="url(#p)"><ellipse cx="38.418" cy="32.4" fill="#47bfff" rx="5.971" ry="15.297" style="fill:#47bfff;fill:color(display-p3 .2799 .748 1);fill-opacity:1" transform="rotate(37.892 38.418 32.4)"/></g></g><defs><filter id="b" width="60.045" height="41.654" x="-19.77" y="16.149" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="7.659"/></filter><filter id="c" width="90.34" height="51.437" x="-54.613" y="-7.533" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="7.659"/></filter><filter id="d" width="79.355" height="29.4" x="-49.64" y="2.03" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="e" width="79.579" height="29.4" x="-45.045" y="20.029" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="f" width="79.579" height="29.4" x="-43.513" y="21.178" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="g" width="74.749" height="58.852" x="15.756" y="-17.901" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="7.659"/></filter><filter id="h" width="61.377" height="25.362" x="23.548" y="2.284" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="i" width="61.377" height="25.362" x="23.548" y="2.284" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="j" width="56.045" height="63.649" x="-27.636" y="-22.853" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="k" width="54.814" height="64.646" x="20.116" y="-38.415" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="l" width="33.541" height="35.313" x="24.641" y="-11.323" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="m" width="54.814" height="64.646" x="-29.286" y="6.009" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="n" width="54.814" height="64.646" x="-29.286" y="6.009" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="o" width="54.814" height="64.646" x="8.244" y="-2.416" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="p" width="39.409" height="43.623" x="18.713" y="10.588" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter></defs></svg>
+24
frontend/public/icons.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg"> 2 + <symbol id="bluesky-icon" viewBox="0 0 16 17"> 3 + <g clip-path="url(#bluesky-clip)"><path fill="#08060d" d="M7.75 7.735c-.693-1.348-2.58-3.86-4.334-5.097-1.68-1.187-2.32-.981-2.74-.79C.188 2.065.1 2.812.1 3.251s.241 3.602.398 4.13c.52 1.744 2.367 2.333 4.07 2.145-2.495.37-4.71 1.278-1.805 4.512 3.196 3.309 4.38-.71 4.987-2.746.608 2.036 1.307 5.91 4.93 2.746 2.72-2.746.747-4.143-1.747-4.512 1.702.189 3.55-.4 4.07-2.145.156-.528.397-3.691.397-4.13s-.088-1.186-.575-1.406c-.42-.19-1.06-.395-2.741.79-1.755 1.24-3.64 3.752-4.334 5.099"/></g> 4 + <defs><clipPath id="bluesky-clip"><path fill="#fff" d="M.1.85h15.3v15.3H.1z"/></clipPath></defs> 5 + </symbol> 6 + <symbol id="discord-icon" viewBox="0 0 20 19"> 7 + <path fill="#08060d" d="M16.224 3.768a14.5 14.5 0 0 0-3.67-1.153c-.158.286-.343.67-.47.976a13.5 13.5 0 0 0-4.067 0c-.128-.306-.317-.69-.476-.976A14.4 14.4 0 0 0 3.868 3.77C1.546 7.28.916 10.703 1.231 14.077a14.7 14.7 0 0 0 4.5 2.306q.545-.748.965-1.587a9.5 9.5 0 0 1-1.518-.74q.191-.14.372-.293c2.927 1.369 6.107 1.369 8.999 0q.183.152.372.294-.723.437-1.52.74.418.838.963 1.588a14.6 14.6 0 0 0 4.504-2.308c.37-3.911-.63-7.302-2.644-10.309m-9.13 8.234c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.894 0 1.614.82 1.599 1.82.001 1-.705 1.82-1.6 1.82m5.91 0c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.893 0 1.614.82 1.599 1.82 0 1-.706 1.82-1.6 1.82"/> 8 + </symbol> 9 + <symbol id="documentation-icon" viewBox="0 0 21 20"> 10 + <path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="m15.5 13.333 1.533 1.322c.645.555.967.833.967 1.178s-.322.623-.967 1.179L15.5 18.333m-3.333-5-1.534 1.322c-.644.555-.966.833-.966 1.178s.322.623.966 1.179l1.534 1.321"/> 11 + <path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M17.167 10.836v-4.32c0-1.41 0-2.117-.224-2.68-.359-.906-1.118-1.621-2.08-1.96-.599-.21-1.349-.21-2.848-.21-2.623 0-3.935 0-4.983.369-1.684.591-3.013 1.842-3.641 3.428C3 6.449 3 7.684 3 10.154v2.122c0 2.558 0 3.838.706 4.726q.306.383.713.671c.76.536 1.79.64 3.581.66"/> 12 + <path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M3 10a2.78 2.78 0 0 1 2.778-2.778c.555 0 1.209.097 1.748-.047.48-.129.854-.503.982-.982.145-.54.048-1.194.048-1.749a2.78 2.78 0 0 1 2.777-2.777"/> 13 + </symbol> 14 + <symbol id="github-icon" viewBox="0 0 19 19"> 15 + <path fill="#08060d" fill-rule="evenodd" d="M9.356 1.85C5.05 1.85 1.57 5.356 1.57 9.694a7.84 7.84 0 0 0 5.324 7.44c.387.079.528-.168.528-.376 0-.182-.013-.805-.013-1.454-2.165.467-2.616-.935-2.616-.935-.349-.91-.864-1.143-.864-1.143-.71-.48.051-.48.051-.48.787.051 1.2.805 1.2.805.695 1.194 1.817.857 2.268.649.064-.507.27-.857.49-1.052-1.728-.182-3.545-.857-3.545-3.87 0-.857.31-1.558.8-2.104-.078-.195-.349-1 .077-2.078 0 0 .657-.208 2.14.805a7.5 7.5 0 0 1 1.946-.26c.657 0 1.328.092 1.946.26 1.483-1.013 2.14-.805 2.14-.805.426 1.078.155 1.883.078 2.078.502.546.799 1.247.799 2.104 0 3.013-1.818 3.675-3.558 3.87.284.247.528.714.528 1.454 0 1.052-.012 1.896-.012 2.156 0 .208.142.455.528.377a7.84 7.84 0 0 0 5.324-7.441c.013-4.338-3.48-7.844-7.773-7.844" clip-rule="evenodd"/> 16 + </symbol> 17 + <symbol id="social-icon" viewBox="0 0 20 20"> 18 + <path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M12.5 6.667a4.167 4.167 0 1 0-8.334 0 4.167 4.167 0 0 0 8.334 0"/> 19 + <path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M2.5 16.667a5.833 5.833 0 0 1 8.75-5.053m3.837.474.513 1.035c.07.144.257.282.414.309l.93.155c.596.1.736.536.307.965l-.723.73a.64.64 0 0 0-.152.531l.207.903c.164.715-.213.991-.84.618l-.872-.52a.63.63 0 0 0-.577 0l-.872.52c-.624.373-1.003.094-.84-.618l.207-.903a.64.64 0 0 0-.152-.532l-.723-.729c-.426-.43-.289-.864.306-.964l.93-.156a.64.64 0 0 0 .412-.31l.513-1.034c.28-.562.735-.562 1.012 0"/> 20 + </symbol> 21 + <symbol id="x-icon" viewBox="0 0 19 19"> 22 + <path fill="#08060d" fill-rule="evenodd" d="M1.893 1.98c.052.072 1.245 1.769 2.653 3.77l2.892 4.114c.183.261.333.48.333.486s-.068.089-.152.183l-.522.593-.765.867-3.597 4.087c-.375.426-.734.834-.798.905a1 1 0 0 0-.118.148c0 .01.236.017.664.017h.663l.729-.83c.4-.457.796-.906.879-.999a692 692 0 0 0 1.794-2.038c.034-.037.301-.34.594-.675l.551-.624.345-.392a7 7 0 0 1 .34-.374c.006 0 .93 1.306 2.052 2.903l2.084 2.965.045.063h2.275c1.87 0 2.273-.003 2.266-.021-.008-.02-1.098-1.572-3.894-5.547-2.013-2.862-2.28-3.246-2.273-3.266.008-.019.282-.332 2.085-2.38l2-2.274 1.567-1.782c.022-.028-.016-.03-.65-.03h-.674l-.3.342a871 871 0 0 1-1.782 2.025c-.067.075-.405.458-.75.852a100 100 0 0 1-.803.91c-.148.172-.299.344-.99 1.127-.304.343-.32.358-.345.327-.015-.019-.904-1.282-1.976-2.808L6.365 1.85H1.8zm1.782.91 8.078 11.294c.772 1.08 1.413 1.973 1.425 1.984.016.017.241.02 1.05.017l1.03-.004-2.694-3.766L7.796 5.75 5.722 2.852l-1.039-.004-1.039-.004z" clip-rule="evenodd"/> 23 + </symbol> 24 + </svg>
+89
frontend/src/App.svelte
··· 1 + <script> 2 + import svelteLogo from './assets/svelte.svg' 3 + import viteLogo from './assets/vite.svg' 4 + import heroImg from './assets/hero.png' 5 + import Counter from './lib/Counter.svelte' 6 + </script> 7 + 8 + <section id="center"> 9 + <div class="hero"> 10 + <img src={heroImg} class="base" width="170" height="179" alt="" /> 11 + <img src={svelteLogo} class="framework" alt="Svelte logo" /> 12 + <img src={viteLogo} class="vite" alt="Vite logo" /> 13 + </div> 14 + <div> 15 + <h1>Get started</h1> 16 + <p>Edit <code>src/App.svelte</code> and save to test <code>HMR</code></p> 17 + </div> 18 + <Counter /> 19 + </section> 20 + 21 + <div class="ticks"></div> 22 + 23 + <section id="next-steps"> 24 + <div id="docs"> 25 + <svg class="icon" role="presentation" aria-hidden="true"> 26 + <use href="/icons.svg#documentation-icon"></use> 27 + </svg> 28 + <h2>Documentation</h2> 29 + <p>Your questions, answered</p> 30 + <ul> 31 + <li> 32 + <a href="https://vite.dev/" target="_blank" rel="noreferrer"> 33 + <img class="logo" src={viteLogo} alt="" /> 34 + Explore Vite 35 + </a> 36 + </li> 37 + <li> 38 + <a href="https://svelte.dev/" target="_blank" rel="noreferrer"> 39 + <img class="button-icon" src={svelteLogo} alt="" /> 40 + Learn more 41 + </a> 42 + </li> 43 + </ul> 44 + </div> 45 + <div id="social"> 46 + <svg class="icon" role="presentation" aria-hidden="true"> 47 + <use href="/icons.svg#social-icon"></use> 48 + </svg> 49 + <h2>Connect with us</h2> 50 + <p>Join the Vite community</p> 51 + <ul> 52 + <li> 53 + <a href="https://github.com/vitejs/vite" target="_blank" rel="noreferrer"> 54 + <svg class="button-icon" role="presentation" aria-hidden="true"> 55 + <use href="/icons.svg#github-icon"></use> 56 + </svg> 57 + GitHub 58 + </a> 59 + </li> 60 + <li> 61 + <a href="https://chat.vite.dev/" target="_blank" rel="noreferrer"> 62 + <svg class="button-icon" role="presentation" aria-hidden="true"> 63 + <use href="/icons.svg#discord-icon"></use> 64 + </svg> 65 + Discord 66 + </a> 67 + </li> 68 + <li> 69 + <a href="https://x.com/vite_js" target="_blank" rel="noreferrer"> 70 + <svg class="button-icon" role="presentation" aria-hidden="true"> 71 + <use href="/icons.svg#x-icon"></use> 72 + </svg> 73 + X.com 74 + </a> 75 + </li> 76 + <li> 77 + <a href="https://bsky.app/profile/vite.dev" target="_blank" rel="noreferrer"> 78 + <svg class="button-icon" role="presentation" aria-hidden="true"> 79 + <use href="/icons.svg#bluesky-icon"></use> 80 + </svg> 81 + Bluesky 82 + </a> 83 + </li> 84 + </ul> 85 + </div> 86 + </section> 87 + 88 + <div class="ticks"></div> 89 + <section id="spacer"></section>
+296
frontend/src/app.css
··· 1 + :root { 2 + --text: #6b6375; 3 + --text-h: #08060d; 4 + --bg: #fff; 5 + --border: #e5e4e7; 6 + --code-bg: #f4f3ec; 7 + --accent: #aa3bff; 8 + --accent-bg: rgba(170, 59, 255, 0.1); 9 + --accent-border: rgba(170, 59, 255, 0.5); 10 + --social-bg: rgba(244, 243, 236, 0.5); 11 + --shadow: 12 + rgba(0, 0, 0, 0.1) 0 10px 15px -3px, rgba(0, 0, 0, 0.05) 0 4px 6px -2px; 13 + 14 + --sans: system-ui, 'Segoe UI', Roboto, sans-serif; 15 + --heading: system-ui, 'Segoe UI', Roboto, sans-serif; 16 + --mono: ui-monospace, Consolas, monospace; 17 + 18 + font: 18px/145% var(--sans); 19 + letter-spacing: 0.18px; 20 + color-scheme: light dark; 21 + color: var(--text); 22 + background: var(--bg); 23 + font-synthesis: none; 24 + text-rendering: optimizeLegibility; 25 + -webkit-font-smoothing: antialiased; 26 + -moz-osx-font-smoothing: grayscale; 27 + 28 + @media (max-width: 1024px) { 29 + font-size: 16px; 30 + } 31 + } 32 + 33 + @media (prefers-color-scheme: dark) { 34 + :root { 35 + --text: #9ca3af; 36 + --text-h: #f3f4f6; 37 + --bg: #16171d; 38 + --border: #2e303a; 39 + --code-bg: #1f2028; 40 + --accent: #c084fc; 41 + --accent-bg: rgba(192, 132, 252, 0.15); 42 + --accent-border: rgba(192, 132, 252, 0.5); 43 + --social-bg: rgba(47, 48, 58, 0.5); 44 + --shadow: 45 + rgba(0, 0, 0, 0.4) 0 10px 15px -3px, rgba(0, 0, 0, 0.25) 0 4px 6px -2px; 46 + } 47 + 48 + #social .button-icon { 49 + filter: invert(1) brightness(2); 50 + } 51 + } 52 + 53 + body { 54 + margin: 0; 55 + } 56 + 57 + h1, 58 + h2 { 59 + font-family: var(--heading); 60 + font-weight: 500; 61 + color: var(--text-h); 62 + } 63 + 64 + h1 { 65 + font-size: 56px; 66 + letter-spacing: -1.68px; 67 + margin: 32px 0; 68 + @media (max-width: 1024px) { 69 + font-size: 36px; 70 + margin: 20px 0; 71 + } 72 + } 73 + h2 { 74 + font-size: 24px; 75 + line-height: 118%; 76 + letter-spacing: -0.24px; 77 + margin: 0 0 8px; 78 + @media (max-width: 1024px) { 79 + font-size: 20px; 80 + } 81 + } 82 + p { 83 + margin: 0; 84 + } 85 + 86 + code, 87 + .counter { 88 + font-family: var(--mono); 89 + display: inline-flex; 90 + border-radius: 4px; 91 + color: var(--text-h); 92 + } 93 + 94 + code { 95 + font-size: 15px; 96 + line-height: 135%; 97 + padding: 4px 8px; 98 + background: var(--code-bg); 99 + } 100 + 101 + .counter { 102 + font-size: 16px; 103 + padding: 5px 10px; 104 + border-radius: 5px; 105 + color: var(--accent); 106 + background: var(--accent-bg); 107 + border: 2px solid transparent; 108 + transition: border-color 0.3s; 109 + margin-bottom: 24px; 110 + 111 + &:hover { 112 + border-color: var(--accent-border); 113 + } 114 + &:focus-visible { 115 + outline: 2px solid var(--accent); 116 + outline-offset: 2px; 117 + } 118 + } 119 + 120 + .hero { 121 + position: relative; 122 + 123 + .base, 124 + .framework, 125 + .vite { 126 + inset-inline: 0; 127 + margin: 0 auto; 128 + } 129 + 130 + .base { 131 + width: 170px; 132 + position: relative; 133 + z-index: 0; 134 + } 135 + 136 + .framework, 137 + .vite { 138 + position: absolute; 139 + } 140 + 141 + .framework { 142 + z-index: 1; 143 + top: 34px; 144 + height: 28px; 145 + transform: perspective(2000px) rotateZ(300deg) rotateX(44deg) rotateY(39deg) 146 + scale(1.4); 147 + } 148 + 149 + .vite { 150 + z-index: 0; 151 + top: 107px; 152 + height: 26px; 153 + width: auto; 154 + transform: perspective(2000px) rotateZ(300deg) rotateX(40deg) rotateY(39deg) 155 + scale(0.8); 156 + } 157 + } 158 + 159 + #app { 160 + width: 1126px; 161 + max-width: 100%; 162 + margin: 0 auto; 163 + text-align: center; 164 + border-inline: 1px solid var(--border); 165 + min-height: 100svh; 166 + display: flex; 167 + flex-direction: column; 168 + box-sizing: border-box; 169 + } 170 + 171 + #center { 172 + display: flex; 173 + flex-direction: column; 174 + gap: 25px; 175 + place-content: center; 176 + place-items: center; 177 + flex-grow: 1; 178 + 179 + @media (max-width: 1024px) { 180 + padding: 32px 20px 24px; 181 + gap: 18px; 182 + } 183 + } 184 + 185 + #next-steps { 186 + display: flex; 187 + border-top: 1px solid var(--border); 188 + text-align: left; 189 + 190 + & > div { 191 + flex: 1 1 0; 192 + padding: 32px; 193 + @media (max-width: 1024px) { 194 + padding: 24px 20px; 195 + } 196 + } 197 + 198 + .icon { 199 + margin-bottom: 16px; 200 + width: 22px; 201 + height: 22px; 202 + } 203 + 204 + @media (max-width: 1024px) { 205 + flex-direction: column; 206 + text-align: center; 207 + } 208 + } 209 + 210 + #docs { 211 + border-right: 1px solid var(--border); 212 + 213 + @media (max-width: 1024px) { 214 + border-right: none; 215 + border-bottom: 1px solid var(--border); 216 + } 217 + } 218 + 219 + #next-steps ul { 220 + list-style: none; 221 + padding: 0; 222 + display: flex; 223 + gap: 8px; 224 + margin: 32px 0 0; 225 + 226 + .logo { 227 + height: 18px; 228 + } 229 + 230 + a { 231 + color: var(--text-h); 232 + font-size: 16px; 233 + border-radius: 6px; 234 + background: var(--social-bg); 235 + display: flex; 236 + padding: 6px 12px; 237 + align-items: center; 238 + gap: 8px; 239 + text-decoration: none; 240 + transition: box-shadow 0.3s; 241 + 242 + &:hover { 243 + box-shadow: var(--shadow); 244 + } 245 + .button-icon { 246 + height: 18px; 247 + width: 18px; 248 + } 249 + } 250 + 251 + @media (max-width: 1024px) { 252 + margin-top: 20px; 253 + flex-wrap: wrap; 254 + justify-content: center; 255 + 256 + li { 257 + flex: 1 1 calc(50% - 8px); 258 + } 259 + 260 + a { 261 + width: 100%; 262 + justify-content: center; 263 + box-sizing: border-box; 264 + } 265 + } 266 + } 267 + 268 + #spacer { 269 + height: 88px; 270 + border-top: 1px solid var(--border); 271 + @media (max-width: 1024px) { 272 + height: 48px; 273 + } 274 + } 275 + 276 + .ticks { 277 + position: relative; 278 + width: 100%; 279 + 280 + &::before, 281 + &::after { 282 + content: ''; 283 + position: absolute; 284 + top: -4.5px; 285 + border: 5px solid transparent; 286 + } 287 + 288 + &::before { 289 + left: 0; 290 + border-left-color: var(--border); 291 + } 292 + &::after { 293 + right: 0; 294 + border-right-color: var(--border); 295 + } 296 + }
frontend/src/assets/hero.png

This is a binary file and will not be displayed.

+1
frontend/src/assets/svelte.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="26.6" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 308"><path fill="#FF3E00" d="M239.682 40.707C211.113-.182 154.69-12.301 113.895 13.69L42.247 59.356a82.198 82.198 0 0 0-37.135 55.056a86.566 86.566 0 0 0 8.536 55.576a82.425 82.425 0 0 0-12.296 30.719a87.596 87.596 0 0 0 14.964 66.244c28.574 40.893 84.997 53.007 125.787 27.016l71.648-45.664a82.182 82.182 0 0 0 37.135-55.057a86.601 86.601 0 0 0-8.53-55.577a82.409 82.409 0 0 0 12.29-30.718a87.573 87.573 0 0 0-14.963-66.244"></path><path fill="#FFF" d="M106.889 270.841c-23.102 6.007-47.497-3.036-61.103-22.648a52.685 52.685 0 0 1-9.003-39.85a49.978 49.978 0 0 1 1.713-6.693l1.35-4.115l3.671 2.697a92.447 92.447 0 0 0 28.036 14.007l2.663.808l-.245 2.659a16.067 16.067 0 0 0 2.89 10.656a17.143 17.143 0 0 0 18.397 6.828a15.786 15.786 0 0 0 4.403-1.935l71.67-45.672a14.922 14.922 0 0 0 6.734-9.977a15.923 15.923 0 0 0-2.713-12.011a17.156 17.156 0 0 0-18.404-6.832a15.78 15.78 0 0 0-4.396 1.933l-27.35 17.434a52.298 52.298 0 0 1-14.553 6.391c-23.101 6.007-47.497-3.036-61.101-22.649a52.681 52.681 0 0 1-9.004-39.849a49.428 49.428 0 0 1 22.34-33.114l71.664-45.677a52.218 52.218 0 0 1 14.563-6.398c23.101-6.007 47.497 3.036 61.101 22.648a52.685 52.685 0 0 1 9.004 39.85a50.559 50.559 0 0 1-1.713 6.692l-1.35 4.116l-3.67-2.693a92.373 92.373 0 0 0-28.037-14.013l-2.664-.809l.246-2.658a16.099 16.099 0 0 0-2.89-10.656a17.143 17.143 0 0 0-18.398-6.828a15.786 15.786 0 0 0-4.402 1.935l-71.67 45.674a14.898 14.898 0 0 0-6.73 9.975a15.9 15.9 0 0 0 2.709 12.012a17.156 17.156 0 0 0 18.404 6.832a15.841 15.841 0 0 0 4.402-1.935l27.345-17.427a52.147 52.147 0 0 1 14.552-6.397c23.101-6.006 47.497 3.037 61.102 22.65a52.681 52.681 0 0 1 9.003 39.848a49.453 49.453 0 0 1-22.34 33.12l-71.664 45.673a52.218 52.218 0 0 1-14.563 6.398"></path></svg>
+1
frontend/src/assets/vite.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" width="77" height="47" fill="none" aria-labelledby="vite-logo-title" viewBox="0 0 77 47"><title id="vite-logo-title">Vite</title><style>.parenthesis{fill:#000}@media (prefers-color-scheme:dark){.parenthesis{fill:#fff}}</style><path fill="#9135ff" d="M40.151 45.71c-.663.844-2.02.374-2.02-.699V34.708a2.26 2.26 0 0 0-2.262-2.262H24.493c-.92 0-1.457-1.04-.92-1.788l7.479-10.471c1.07-1.498 0-3.578-1.842-3.578H15.443c-.92 0-1.456-1.04-.92-1.788l9.696-13.576c.213-.297.556-.474.92-.474h28.894c.92 0 1.456 1.04.92 1.788l-7.48 10.472c-1.07 1.497 0 3.578 1.842 3.578h11.376c.944 0 1.474 1.087.89 1.83L40.153 45.712z"/><mask id="a" width="48" height="47" x="14" y="0" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="#000" d="M40.047 45.71c-.663.843-2.02.374-2.02-.699V34.708a2.26 2.26 0 0 0-2.262-2.262H24.389c-.92 0-1.457-1.04-.92-1.788l7.479-10.472c1.07-1.497 0-3.578-1.842-3.578H15.34c-.92 0-1.456-1.04-.92-1.788l9.696-13.575c.213-.297.556-.474.92-.474H53.93c.92 0 1.456 1.04.92 1.788L47.37 13.03c-1.07 1.498 0 3.578 1.842 3.578h11.376c.944 0 1.474 1.088.89 1.831L40.049 45.712z"/></mask><g mask="url(#a)"><g filter="url(#b)"><ellipse cx="5.508" cy="14.704" fill="#eee6ff" rx="5.508" ry="14.704" transform="rotate(269.814 20.96 11.29)scale(-1 1)"/></g><g filter="url(#c)"><ellipse cx="10.399" cy="29.851" fill="#eee6ff" rx="10.399" ry="29.851" transform="rotate(89.814 -16.902 -8.275)scale(1 -1)"/></g><g filter="url(#d)"><ellipse cx="5.508" cy="30.487" fill="#8900ff" rx="5.508" ry="30.487" transform="rotate(89.814 -19.197 -7.127)scale(1 -1)"/></g><g filter="url(#e)"><ellipse cx="5.508" cy="30.599" fill="#8900ff" rx="5.508" ry="30.599" transform="rotate(89.814 -25.928 4.177)scale(1 -1)"/></g><g filter="url(#f)"><ellipse cx="5.508" cy="30.599" fill="#8900ff" rx="5.508" ry="30.599" transform="rotate(89.814 -25.738 5.52)scale(1 -1)"/></g><g filter="url(#g)"><ellipse cx="14.072" cy="22.078" fill="#eee6ff" rx="14.072" ry="22.078" transform="rotate(93.35 31.245 55.578)scale(-1 1)"/></g><g filter="url(#h)"><ellipse cx="3.47" cy="21.501" fill="#8900ff" rx="3.47" ry="21.501" transform="rotate(89.009 35.419 55.202)scale(-1 1)"/></g><g filter="url(#i)"><ellipse cx="3.47" cy="21.501" fill="#8900ff" rx="3.47" ry="21.501" transform="rotate(89.009 35.419 55.202)scale(-1 1)"/></g><g filter="url(#j)"><ellipse cx="14.592" cy="9.743" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(39.51 14.592 9.743)"/></g><g filter="url(#k)"><ellipse cx="61.728" cy="-5.321" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(37.892 61.728 -5.32)"/></g><g filter="url(#l)"><ellipse cx="55.618" cy="7.104" fill="#00c2ff" rx="5.971" ry="9.665" transform="rotate(37.892 55.618 7.104)"/></g><g filter="url(#m)"><ellipse cx="12.326" cy="39.103" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(37.892 12.326 39.103)"/></g><g filter="url(#n)"><ellipse cx="12.326" cy="39.103" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(37.892 12.326 39.103)"/></g><g filter="url(#o)"><ellipse cx="49.857" cy="30.678" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(37.892 49.857 30.678)"/></g><g filter="url(#p)"><ellipse cx="52.623" cy="33.171" fill="#00c2ff" rx="5.971" ry="15.297" transform="rotate(37.892 52.623 33.17)"/></g></g><path d="M6.919 0c-9.198 13.166-9.252 33.575 0 46.789h6.215c-9.25-13.214-9.196-33.623 0-46.789zm62.424 0h-6.215c9.198 13.166 9.252 33.575 0 46.789h6.215c9.25-13.214 9.196-33.623 0-46.789" class="parenthesis"/><defs><filter id="b" width="60.045" height="41.654" x="-5.564" y="16.92" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="7.659"/></filter><filter id="c" width="90.34" height="51.437" x="-40.407" y="-6.762" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="7.659"/></filter><filter id="d" width="79.355" height="29.4" x="-35.435" y="2.801" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="e" width="79.579" height="29.4" x="-30.84" y="20.8" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="f" width="79.579" height="29.4" x="-29.307" y="21.949" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="g" width="74.749" height="58.852" x="29.961" y="-17.13" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="7.659"/></filter><filter id="h" width="61.377" height="25.362" x="37.754" y="3.055" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="i" width="61.377" height="25.362" x="37.754" y="3.055" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="j" width="56.045" height="63.649" x="-13.43" y="-22.082" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="k" width="54.814" height="64.646" x="34.321" y="-37.644" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="l" width="33.541" height="35.313" x="38.847" y="-10.552" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="m" width="54.814" height="64.646" x="-15.081" y="6.78" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="n" width="54.814" height="64.646" x="-15.081" y="6.78" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="o" width="54.814" height="64.646" x="22.45" y="-1.645" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="p" width="39.409" height="43.623" x="32.919" y="11.36" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter></defs></svg>
+10
frontend/src/lib/Counter.svelte
··· 1 + <script lang="ts"> 2 + let count: number = $state(0) 3 + const increment = () => { 4 + count += 1 5 + } 6 + </script> 7 + 8 + <button class="counter" onclick={increment}> 9 + Count is {count} 10 + </button>
+9
frontend/src/main.ts
··· 1 + import { mount } from 'svelte' 2 + import './app.css' 3 + import App from './App.svelte' 4 + 5 + const app = mount(App, { 6 + target: document.getElementById('app')!, 7 + }) 8 + 9 + export default app
+2
frontend/svelte.config.js
··· 1 + /** @type {import("@sveltejs/vite-plugin-svelte").SvelteConfig} */ 2 + export default {}
+20
frontend/tsconfig.app.json
··· 1 + { 2 + "extends": "@tsconfig/svelte/tsconfig.json", 3 + "compilerOptions": { 4 + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", 5 + "target": "es2023", 6 + "module": "esnext", 7 + "types": ["svelte", "vite/client"], 8 + "noEmit": true, 9 + /** 10 + * Typecheck JS in `.svelte` and `.js` files by default. 11 + * Disable checkJs if you'd like to use dynamic types in JS. 12 + * Note that setting allowJs false does not prevent the use 13 + * of JS in `.svelte` files. 14 + */ 15 + "allowJs": true, 16 + "checkJs": true, 17 + "moduleDetection": "force" 18 + }, 19 + "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"] 20 + }
+7
frontend/tsconfig.json
··· 1 + { 2 + "files": [], 3 + "references": [ 4 + { "path": "./tsconfig.app.json" }, 5 + { "path": "./tsconfig.node.json" } 6 + ] 7 + }
+24
frontend/tsconfig.node.json
··· 1 + { 2 + "compilerOptions": { 3 + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", 4 + "target": "es2023", 5 + "lib": ["ES2023"], 6 + "module": "esnext", 7 + "types": ["node"], 8 + "skipLibCheck": true, 9 + 10 + /* Bundler mode */ 11 + "moduleResolution": "bundler", 12 + "allowImportingTsExtensions": true, 13 + "verbatimModuleSyntax": true, 14 + "moduleDetection": "force", 15 + "noEmit": true, 16 + 17 + /* Linting */ 18 + "noUnusedLocals": true, 19 + "noUnusedParameters": true, 20 + "erasableSyntaxOnly": true, 21 + "noFallthroughCasesInSwitch": true 22 + }, 23 + "include": ["vite.config.ts"] 24 + }
+7
frontend/vite.config.ts
··· 1 + import { defineConfig } from 'vite' 2 + import { svelte } from '@sveltejs/vite-plugin-svelte' 3 + 4 + // https://vite.dev/config/ 5 + export default defineConfig({ 6 + plugins: [svelte()], 7 + })