Take the pain out of keeping all your calendars together

Compare changes

Choose any two refs to compare.

+8
.gitignore
··· 1 + .devenv.flake.nix 2 + .devenv/ 3 + .direnv/ 4 + .envrc 5 + .sass-cache 6 + /debug 7 + /target 8 + /test-data/private-*
+4644
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 = "adler2" 7 + version = "2.0.1" 8 + source = "registry+https://github.com/rust-lang/crates.io-index" 9 + checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" 10 + 11 + [[package]] 12 + name = "aho-corasick" 13 + version = "1.1.3" 14 + source = "registry+https://github.com/rust-lang/crates.io-index" 15 + checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 16 + dependencies = [ 17 + "memchr", 18 + ] 19 + 20 + [[package]] 21 + name = "alloc-no-stdlib" 22 + version = "2.0.4" 23 + source = "registry+https://github.com/rust-lang/crates.io-index" 24 + checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 25 + 26 + [[package]] 27 + name = "alloc-stdlib" 28 + version = "0.2.2" 29 + source = "registry+https://github.com/rust-lang/crates.io-index" 30 + checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" 31 + dependencies = [ 32 + "alloc-no-stdlib", 33 + ] 34 + 35 + [[package]] 36 + name = "allocator-api2" 37 + version = "0.2.21" 38 + source = "registry+https://github.com/rust-lang/crates.io-index" 39 + checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" 40 + 41 + [[package]] 42 + name = "android_system_properties" 43 + version = "0.1.5" 44 + source = "registry+https://github.com/rust-lang/crates.io-index" 45 + checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 46 + dependencies = [ 47 + "libc", 48 + ] 49 + 50 + [[package]] 51 + name = "any_spawner" 52 + version = "0.3.0" 53 + source = "registry+https://github.com/rust-lang/crates.io-index" 54 + checksum = "1384d3fe1eecb464229fcf6eebb72306591c56bf27b373561489458a7c73027d" 55 + dependencies = [ 56 + "futures", 57 + "thiserror 2.0.17", 58 + "tokio", 59 + "wasm-bindgen-futures", 60 + ] 61 + 62 + [[package]] 63 + name = "anyhow" 64 + version = "1.0.100" 65 + source = "registry+https://github.com/rust-lang/crates.io-index" 66 + checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" 67 + 68 + [[package]] 69 + name = "async-compression" 70 + version = "0.4.32" 71 + source = "registry+https://github.com/rust-lang/crates.io-index" 72 + checksum = "5a89bce6054c720275ac2432fbba080a66a2106a44a1b804553930ca6909f4e0" 73 + dependencies = [ 74 + "compression-codecs", 75 + "compression-core", 76 + "futures-core", 77 + "pin-project-lite", 78 + "tokio", 79 + ] 80 + 81 + [[package]] 82 + name = "async-lock" 83 + version = "3.4.1" 84 + source = "registry+https://github.com/rust-lang/crates.io-index" 85 + checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" 86 + dependencies = [ 87 + "event-listener", 88 + "event-listener-strategy", 89 + "pin-project-lite", 90 + ] 91 + 92 + [[package]] 93 + name = "async-once-cell" 94 + version = "0.5.4" 95 + source = "registry+https://github.com/rust-lang/crates.io-index" 96 + checksum = "4288f83726785267c6f2ef073a3d83dc3f9b81464e9f99898240cced85fce35a" 97 + 98 + [[package]] 99 + name = "async-trait" 100 + version = "0.1.89" 101 + source = "registry+https://github.com/rust-lang/crates.io-index" 102 + checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" 103 + dependencies = [ 104 + "proc-macro2", 105 + "quote", 106 + "syn", 107 + ] 108 + 109 + [[package]] 110 + name = "atoi" 111 + version = "2.0.0" 112 + source = "registry+https://github.com/rust-lang/crates.io-index" 113 + checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" 114 + dependencies = [ 115 + "num-traits", 116 + ] 117 + 118 + [[package]] 119 + name = "atomic-waker" 120 + version = "1.1.2" 121 + source = "registry+https://github.com/rust-lang/crates.io-index" 122 + checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 123 + 124 + [[package]] 125 + name = "attribute-derive" 126 + version = "0.10.5" 127 + source = "registry+https://github.com/rust-lang/crates.io-index" 128 + checksum = "05832cdddc8f2650cc2cc187cc2e952b8c133a48eb055f35211f61ee81502d77" 129 + dependencies = [ 130 + "attribute-derive-macro", 131 + "derive-where", 132 + "manyhow", 133 + "proc-macro2", 134 + "quote", 135 + "syn", 136 + ] 137 + 138 + [[package]] 139 + name = "attribute-derive-macro" 140 + version = "0.10.5" 141 + source = "registry+https://github.com/rust-lang/crates.io-index" 142 + checksum = "0a7cdbbd4bd005c5d3e2e9c885e6fa575db4f4a3572335b974d8db853b6beb61" 143 + dependencies = [ 144 + "collection_literals", 145 + "interpolator", 146 + "manyhow", 147 + "proc-macro-utils", 148 + "proc-macro2", 149 + "quote", 150 + "quote-use", 151 + "syn", 152 + ] 153 + 154 + [[package]] 155 + name = "autocfg" 156 + version = "1.5.0" 157 + source = "registry+https://github.com/rust-lang/crates.io-index" 158 + checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 159 + 160 + [[package]] 161 + name = "aws-lc-rs" 162 + version = "1.14.1" 163 + source = "registry+https://github.com/rust-lang/crates.io-index" 164 + checksum = "879b6c89592deb404ba4dc0ae6b58ffd1795c78991cbb5b8bc441c48a070440d" 165 + dependencies = [ 166 + "aws-lc-sys", 167 + "zeroize", 168 + ] 169 + 170 + [[package]] 171 + name = "aws-lc-sys" 172 + version = "0.32.3" 173 + source = "registry+https://github.com/rust-lang/crates.io-index" 174 + checksum = "107a4e9d9cab9963e04e84bb8dee0e25f2a987f9a8bad5ed054abd439caa8f8c" 175 + dependencies = [ 176 + "bindgen", 177 + "cc", 178 + "cmake", 179 + "dunce", 180 + "fs_extra", 181 + ] 182 + 183 + [[package]] 184 + name = "axum" 185 + version = "0.8.6" 186 + source = "registry+https://github.com/rust-lang/crates.io-index" 187 + checksum = "8a18ed336352031311f4e0b4dd2ff392d4fbb370777c9d18d7fc9d7359f73871" 188 + dependencies = [ 189 + "axum-core", 190 + "base64", 191 + "bytes", 192 + "form_urlencoded", 193 + "futures-util", 194 + "http", 195 + "http-body", 196 + "http-body-util", 197 + "hyper", 198 + "hyper-util", 199 + "itoa", 200 + "matchit", 201 + "memchr", 202 + "mime", 203 + "multer", 204 + "percent-encoding", 205 + "pin-project-lite", 206 + "serde_core", 207 + "serde_json", 208 + "serde_path_to_error", 209 + "serde_urlencoded", 210 + "sha1", 211 + "sync_wrapper", 212 + "tokio", 213 + "tokio-tungstenite", 214 + "tower", 215 + "tower-layer", 216 + "tower-service", 217 + "tracing", 218 + ] 219 + 220 + [[package]] 221 + name = "axum-core" 222 + version = "0.5.5" 223 + source = "registry+https://github.com/rust-lang/crates.io-index" 224 + checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" 225 + dependencies = [ 226 + "bytes", 227 + "futures-core", 228 + "http", 229 + "http-body", 230 + "http-body-util", 231 + "mime", 232 + "pin-project-lite", 233 + "sync_wrapper", 234 + "tower-layer", 235 + "tower-service", 236 + "tracing", 237 + ] 238 + 239 + [[package]] 240 + name = "base16" 241 + version = "0.2.1" 242 + source = "registry+https://github.com/rust-lang/crates.io-index" 243 + checksum = "d27c3610c36aee21ce8ac510e6224498de4228ad772a171ed65643a24693a5a8" 244 + 245 + [[package]] 246 + name = "base64" 247 + version = "0.22.1" 248 + source = "registry+https://github.com/rust-lang/crates.io-index" 249 + checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 250 + 251 + [[package]] 252 + name = "base64ct" 253 + version = "1.8.0" 254 + source = "registry+https://github.com/rust-lang/crates.io-index" 255 + checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" 256 + 257 + [[package]] 258 + name = "bindgen" 259 + version = "0.72.1" 260 + source = "registry+https://github.com/rust-lang/crates.io-index" 261 + checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" 262 + dependencies = [ 263 + "bitflags", 264 + "cexpr", 265 + "clang-sys", 266 + "itertools 0.13.0", 267 + "log", 268 + "prettyplease", 269 + "proc-macro2", 270 + "quote", 271 + "regex", 272 + "rustc-hash", 273 + "shlex", 274 + "syn", 275 + ] 276 + 277 + [[package]] 278 + name = "bitflags" 279 + version = "2.10.0" 280 + source = "registry+https://github.com/rust-lang/crates.io-index" 281 + checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" 282 + dependencies = [ 283 + "serde_core", 284 + ] 285 + 286 + [[package]] 287 + name = "block-buffer" 288 + version = "0.10.4" 289 + source = "registry+https://github.com/rust-lang/crates.io-index" 290 + checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 291 + dependencies = [ 292 + "generic-array", 293 + ] 294 + 295 + [[package]] 296 + name = "brotli" 297 + version = "8.0.2" 298 + source = "registry+https://github.com/rust-lang/crates.io-index" 299 + checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" 300 + dependencies = [ 301 + "alloc-no-stdlib", 302 + "alloc-stdlib", 303 + "brotli-decompressor", 304 + ] 305 + 306 + [[package]] 307 + name = "brotli-decompressor" 308 + version = "5.0.0" 309 + source = "registry+https://github.com/rust-lang/crates.io-index" 310 + checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" 311 + dependencies = [ 312 + "alloc-no-stdlib", 313 + "alloc-stdlib", 314 + ] 315 + 316 + [[package]] 317 + name = "bumpalo" 318 + version = "3.19.0" 319 + source = "registry+https://github.com/rust-lang/crates.io-index" 320 + checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" 321 + 322 + [[package]] 323 + name = "byteorder" 324 + version = "1.5.0" 325 + source = "registry+https://github.com/rust-lang/crates.io-index" 326 + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 327 + 328 + [[package]] 329 + name = "bytes" 330 + version = "1.10.1" 331 + source = "registry+https://github.com/rust-lang/crates.io-index" 332 + checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 333 + 334 + [[package]] 335 + name = "calpoll" 336 + version = "0.1.0" 337 + dependencies = [ 338 + "anyhow", 339 + "axum", 340 + "console_error_panic_hook", 341 + "fast-dav-rs", 342 + "icalendar", 343 + "leptos", 344 + "leptos_axum", 345 + "leptos_meta", 346 + "leptos_router", 347 + "reqwest", 348 + "rustls", 349 + "sqlx", 350 + "tokio", 351 + "uuid", 352 + "wasm-bindgen", 353 + ] 354 + 355 + [[package]] 356 + name = "camino" 357 + version = "1.2.1" 358 + source = "registry+https://github.com/rust-lang/crates.io-index" 359 + checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" 360 + 361 + [[package]] 362 + name = "cc" 363 + version = "1.2.43" 364 + source = "registry+https://github.com/rust-lang/crates.io-index" 365 + checksum = "739eb0f94557554b3ca9a86d2d37bebd49c5e6d0c1d2bda35ba5bdac830befc2" 366 + dependencies = [ 367 + "find-msvc-tools", 368 + "jobserver", 369 + "libc", 370 + "shlex", 371 + ] 372 + 373 + [[package]] 374 + name = "cexpr" 375 + version = "0.6.0" 376 + source = "registry+https://github.com/rust-lang/crates.io-index" 377 + checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 378 + dependencies = [ 379 + "nom 7.1.3", 380 + ] 381 + 382 + [[package]] 383 + name = "cfg-if" 384 + version = "1.0.4" 385 + source = "registry+https://github.com/rust-lang/crates.io-index" 386 + checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" 387 + 388 + [[package]] 389 + name = "cfg_aliases" 390 + version = "0.2.1" 391 + source = "registry+https://github.com/rust-lang/crates.io-index" 392 + checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 393 + 394 + [[package]] 395 + name = "chrono" 396 + version = "0.4.42" 397 + source = "registry+https://github.com/rust-lang/crates.io-index" 398 + checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" 399 + dependencies = [ 400 + "iana-time-zone", 401 + "js-sys", 402 + "num-traits", 403 + "wasm-bindgen", 404 + "windows-link 0.2.1", 405 + ] 406 + 407 + [[package]] 408 + name = "chrono-tz" 409 + version = "0.10.4" 410 + source = "registry+https://github.com/rust-lang/crates.io-index" 411 + checksum = "a6139a8597ed92cf816dfb33f5dd6cf0bb93a6adc938f11039f371bc5bcd26c3" 412 + dependencies = [ 413 + "chrono", 414 + "phf", 415 + ] 416 + 417 + [[package]] 418 + name = "clang-sys" 419 + version = "1.8.1" 420 + source = "registry+https://github.com/rust-lang/crates.io-index" 421 + checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" 422 + dependencies = [ 423 + "glob", 424 + "libc", 425 + "libloading", 426 + ] 427 + 428 + [[package]] 429 + name = "cmake" 430 + version = "0.1.54" 431 + source = "registry+https://github.com/rust-lang/crates.io-index" 432 + checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" 433 + dependencies = [ 434 + "cc", 435 + ] 436 + 437 + [[package]] 438 + name = "codee" 439 + version = "0.3.3" 440 + source = "registry+https://github.com/rust-lang/crates.io-index" 441 + checksum = "774365d8238a8dbd57c3047f865187fe6417e765d9955ba8e99e794678a41a0e" 442 + dependencies = [ 443 + "serde", 444 + "serde_json", 445 + "thiserror 2.0.17", 446 + ] 447 + 448 + [[package]] 449 + name = "collection_literals" 450 + version = "1.0.3" 451 + source = "registry+https://github.com/rust-lang/crates.io-index" 452 + checksum = "2550f75b8cfac212855f6b1885455df8eaee8fe8e246b647d69146142e016084" 453 + 454 + [[package]] 455 + name = "compression-codecs" 456 + version = "0.4.31" 457 + source = "registry+https://github.com/rust-lang/crates.io-index" 458 + checksum = "ef8a506ec4b81c460798f572caead636d57d3d7e940f998160f52bd254bf2d23" 459 + dependencies = [ 460 + "brotli", 461 + "compression-core", 462 + "flate2", 463 + "memchr", 464 + "zstd", 465 + "zstd-safe", 466 + ] 467 + 468 + [[package]] 469 + name = "compression-core" 470 + version = "0.4.29" 471 + source = "registry+https://github.com/rust-lang/crates.io-index" 472 + checksum = "e47641d3deaf41fb1538ac1f54735925e275eaf3bf4d55c81b137fba797e5cbb" 473 + 474 + [[package]] 475 + name = "concurrent-queue" 476 + version = "2.5.0" 477 + source = "registry+https://github.com/rust-lang/crates.io-index" 478 + checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 479 + dependencies = [ 480 + "crossbeam-utils", 481 + ] 482 + 483 + [[package]] 484 + name = "config" 485 + version = "0.15.18" 486 + source = "registry+https://github.com/rust-lang/crates.io-index" 487 + checksum = "180e549344080374f9b32ed41bf3b6b57885ff6a289367b3dbc10eea8acc1918" 488 + dependencies = [ 489 + "convert_case 0.6.0", 490 + "pathdiff", 491 + "serde_core", 492 + "toml", 493 + "winnow", 494 + ] 495 + 496 + [[package]] 497 + name = "console_error_panic_hook" 498 + version = "0.1.7" 499 + source = "registry+https://github.com/rust-lang/crates.io-index" 500 + checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 501 + dependencies = [ 502 + "cfg-if", 503 + "wasm-bindgen", 504 + ] 505 + 506 + [[package]] 507 + name = "const-oid" 508 + version = "0.9.6" 509 + source = "registry+https://github.com/rust-lang/crates.io-index" 510 + checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 511 + 512 + [[package]] 513 + name = "const-str" 514 + version = "0.6.4" 515 + source = "registry+https://github.com/rust-lang/crates.io-index" 516 + checksum = "451d0640545a0553814b4c646eb549343561618838e9b42495f466131fe3ad49" 517 + 518 + [[package]] 519 + name = "const_format" 520 + version = "0.2.35" 521 + source = "registry+https://github.com/rust-lang/crates.io-index" 522 + checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" 523 + dependencies = [ 524 + "const_format_proc_macros", 525 + ] 526 + 527 + [[package]] 528 + name = "const_format_proc_macros" 529 + version = "0.2.34" 530 + source = "registry+https://github.com/rust-lang/crates.io-index" 531 + checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" 532 + dependencies = [ 533 + "proc-macro2", 534 + "quote", 535 + "unicode-xid", 536 + ] 537 + 538 + [[package]] 539 + name = "const_str_slice_concat" 540 + version = "0.1.0" 541 + source = "registry+https://github.com/rust-lang/crates.io-index" 542 + checksum = "f67855af358fcb20fac58f9d714c94e2b228fe5694c1c9b4ead4a366343eda1b" 543 + 544 + [[package]] 545 + name = "convert_case" 546 + version = "0.6.0" 547 + source = "registry+https://github.com/rust-lang/crates.io-index" 548 + checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" 549 + dependencies = [ 550 + "unicode-segmentation", 551 + ] 552 + 553 + [[package]] 554 + name = "convert_case" 555 + version = "0.8.0" 556 + source = "registry+https://github.com/rust-lang/crates.io-index" 557 + checksum = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f" 558 + dependencies = [ 559 + "unicode-segmentation", 560 + ] 561 + 562 + [[package]] 563 + name = "core-foundation" 564 + version = "0.9.4" 565 + source = "registry+https://github.com/rust-lang/crates.io-index" 566 + checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 567 + dependencies = [ 568 + "core-foundation-sys", 569 + "libc", 570 + ] 571 + 572 + [[package]] 573 + name = "core-foundation" 574 + version = "0.10.1" 575 + source = "registry+https://github.com/rust-lang/crates.io-index" 576 + checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" 577 + dependencies = [ 578 + "core-foundation-sys", 579 + "libc", 580 + ] 581 + 582 + [[package]] 583 + name = "core-foundation-sys" 584 + version = "0.8.7" 585 + source = "registry+https://github.com/rust-lang/crates.io-index" 586 + checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 587 + 588 + [[package]] 589 + name = "cpufeatures" 590 + version = "0.2.17" 591 + source = "registry+https://github.com/rust-lang/crates.io-index" 592 + checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" 593 + dependencies = [ 594 + "libc", 595 + ] 596 + 597 + [[package]] 598 + name = "crc" 599 + version = "3.3.0" 600 + source = "registry+https://github.com/rust-lang/crates.io-index" 601 + checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" 602 + dependencies = [ 603 + "crc-catalog", 604 + ] 605 + 606 + [[package]] 607 + name = "crc-catalog" 608 + version = "2.4.0" 609 + source = "registry+https://github.com/rust-lang/crates.io-index" 610 + checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" 611 + 612 + [[package]] 613 + name = "crc32fast" 614 + version = "1.5.0" 615 + source = "registry+https://github.com/rust-lang/crates.io-index" 616 + checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" 617 + dependencies = [ 618 + "cfg-if", 619 + ] 620 + 621 + [[package]] 622 + name = "crossbeam-queue" 623 + version = "0.3.12" 624 + source = "registry+https://github.com/rust-lang/crates.io-index" 625 + checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" 626 + dependencies = [ 627 + "crossbeam-utils", 628 + ] 629 + 630 + [[package]] 631 + name = "crossbeam-utils" 632 + version = "0.8.21" 633 + source = "registry+https://github.com/rust-lang/crates.io-index" 634 + checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 635 + 636 + [[package]] 637 + name = "crypto-common" 638 + version = "0.1.6" 639 + source = "registry+https://github.com/rust-lang/crates.io-index" 640 + checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 641 + dependencies = [ 642 + "generic-array", 643 + "typenum", 644 + ] 645 + 646 + [[package]] 647 + name = "dashmap" 648 + version = "6.1.0" 649 + source = "registry+https://github.com/rust-lang/crates.io-index" 650 + checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" 651 + dependencies = [ 652 + "cfg-if", 653 + "crossbeam-utils", 654 + "hashbrown 0.14.5", 655 + "lock_api", 656 + "once_cell", 657 + "parking_lot_core", 658 + ] 659 + 660 + [[package]] 661 + name = "data-encoding" 662 + version = "2.9.0" 663 + source = "registry+https://github.com/rust-lang/crates.io-index" 664 + checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" 665 + 666 + [[package]] 667 + name = "der" 668 + version = "0.7.10" 669 + source = "registry+https://github.com/rust-lang/crates.io-index" 670 + checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" 671 + dependencies = [ 672 + "const-oid", 673 + "pem-rfc7468", 674 + "zeroize", 675 + ] 676 + 677 + [[package]] 678 + name = "deranged" 679 + version = "0.5.4" 680 + source = "registry+https://github.com/rust-lang/crates.io-index" 681 + checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" 682 + dependencies = [ 683 + "powerfmt", 684 + ] 685 + 686 + [[package]] 687 + name = "derive-where" 688 + version = "1.6.0" 689 + source = "registry+https://github.com/rust-lang/crates.io-index" 690 + checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" 691 + dependencies = [ 692 + "proc-macro2", 693 + "quote", 694 + "syn", 695 + ] 696 + 697 + [[package]] 698 + name = "digest" 699 + version = "0.10.7" 700 + source = "registry+https://github.com/rust-lang/crates.io-index" 701 + checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 702 + dependencies = [ 703 + "block-buffer", 704 + "const-oid", 705 + "crypto-common", 706 + "subtle", 707 + ] 708 + 709 + [[package]] 710 + name = "displaydoc" 711 + version = "0.2.5" 712 + source = "registry+https://github.com/rust-lang/crates.io-index" 713 + checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 714 + dependencies = [ 715 + "proc-macro2", 716 + "quote", 717 + "syn", 718 + ] 719 + 720 + [[package]] 721 + name = "dotenvy" 722 + version = "0.15.7" 723 + source = "registry+https://github.com/rust-lang/crates.io-index" 724 + checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" 725 + 726 + [[package]] 727 + name = "drain_filter_polyfill" 728 + version = "0.1.3" 729 + source = "registry+https://github.com/rust-lang/crates.io-index" 730 + checksum = "669a445ee724c5c69b1b06fe0b63e70a1c84bc9bb7d9696cd4f4e3ec45050408" 731 + 732 + [[package]] 733 + name = "dunce" 734 + version = "1.0.5" 735 + source = "registry+https://github.com/rust-lang/crates.io-index" 736 + checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" 737 + 738 + [[package]] 739 + name = "either" 740 + version = "1.15.0" 741 + source = "registry+https://github.com/rust-lang/crates.io-index" 742 + checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 743 + dependencies = [ 744 + "serde", 745 + ] 746 + 747 + [[package]] 748 + name = "either_of" 749 + version = "0.1.6" 750 + source = "registry+https://github.com/rust-lang/crates.io-index" 751 + checksum = "216d23e0ec69759a17f05e1c553f3a6870e5ec73420fbb07807a6f34d5d1d5a4" 752 + dependencies = [ 753 + "paste", 754 + "pin-project-lite", 755 + ] 756 + 757 + [[package]] 758 + name = "encoding_rs" 759 + version = "0.8.35" 760 + source = "registry+https://github.com/rust-lang/crates.io-index" 761 + checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 762 + dependencies = [ 763 + "cfg-if", 764 + ] 765 + 766 + [[package]] 767 + name = "equivalent" 768 + version = "1.0.2" 769 + source = "registry+https://github.com/rust-lang/crates.io-index" 770 + checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 771 + 772 + [[package]] 773 + name = "erased" 774 + version = "0.1.2" 775 + source = "registry+https://github.com/rust-lang/crates.io-index" 776 + checksum = "a1731451909bde27714eacba19c2566362a7f35224f52b153d3f42cf60f72472" 777 + 778 + [[package]] 779 + name = "errno" 780 + version = "0.3.14" 781 + source = "registry+https://github.com/rust-lang/crates.io-index" 782 + checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" 783 + dependencies = [ 784 + "libc", 785 + "windows-sys 0.61.2", 786 + ] 787 + 788 + [[package]] 789 + name = "etcetera" 790 + version = "0.8.0" 791 + source = "registry+https://github.com/rust-lang/crates.io-index" 792 + checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" 793 + dependencies = [ 794 + "cfg-if", 795 + "home", 796 + "windows-sys 0.48.0", 797 + ] 798 + 799 + [[package]] 800 + name = "event-listener" 801 + version = "5.4.1" 802 + source = "registry+https://github.com/rust-lang/crates.io-index" 803 + checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" 804 + dependencies = [ 805 + "concurrent-queue", 806 + "parking", 807 + "pin-project-lite", 808 + ] 809 + 810 + [[package]] 811 + name = "event-listener-strategy" 812 + version = "0.5.4" 813 + source = "registry+https://github.com/rust-lang/crates.io-index" 814 + checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" 815 + dependencies = [ 816 + "event-listener", 817 + "pin-project-lite", 818 + ] 819 + 820 + [[package]] 821 + name = "fast-dav-rs" 822 + version = "0.1.0" 823 + source = "registry+https://github.com/rust-lang/crates.io-index" 824 + checksum = "51f55d1a4f112e8df314be4b39dabee93c1d6d42a27af3cd0699be4315bc0cdf" 825 + dependencies = [ 826 + "anyhow", 827 + "async-compression", 828 + "base64", 829 + "bytes", 830 + "futures", 831 + "futures-util", 832 + "http-body-util", 833 + "hyper", 834 + "hyper-rustls", 835 + "hyper-util", 836 + "quick-xml", 837 + "tokio", 838 + "tokio-util", 839 + ] 840 + 841 + [[package]] 842 + name = "fastrand" 843 + version = "2.3.0" 844 + source = "registry+https://github.com/rust-lang/crates.io-index" 845 + checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 846 + 847 + [[package]] 848 + name = "find-msvc-tools" 849 + version = "0.1.4" 850 + source = "registry+https://github.com/rust-lang/crates.io-index" 851 + checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" 852 + 853 + [[package]] 854 + name = "flate2" 855 + version = "1.1.5" 856 + source = "registry+https://github.com/rust-lang/crates.io-index" 857 + checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" 858 + dependencies = [ 859 + "crc32fast", 860 + "miniz_oxide", 861 + ] 862 + 863 + [[package]] 864 + name = "flume" 865 + version = "0.11.1" 866 + source = "registry+https://github.com/rust-lang/crates.io-index" 867 + checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" 868 + dependencies = [ 869 + "futures-core", 870 + "futures-sink", 871 + "spin", 872 + ] 873 + 874 + [[package]] 875 + name = "fnv" 876 + version = "1.0.7" 877 + source = "registry+https://github.com/rust-lang/crates.io-index" 878 + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 879 + 880 + [[package]] 881 + name = "foldhash" 882 + version = "0.1.5" 883 + source = "registry+https://github.com/rust-lang/crates.io-index" 884 + checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" 885 + 886 + [[package]] 887 + name = "foreign-types" 888 + version = "0.3.2" 889 + source = "registry+https://github.com/rust-lang/crates.io-index" 890 + checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 891 + dependencies = [ 892 + "foreign-types-shared", 893 + ] 894 + 895 + [[package]] 896 + name = "foreign-types-shared" 897 + version = "0.1.1" 898 + source = "registry+https://github.com/rust-lang/crates.io-index" 899 + checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 900 + 901 + [[package]] 902 + name = "form_urlencoded" 903 + version = "1.2.2" 904 + source = "registry+https://github.com/rust-lang/crates.io-index" 905 + checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 906 + dependencies = [ 907 + "percent-encoding", 908 + ] 909 + 910 + [[package]] 911 + name = "fs_extra" 912 + version = "1.3.0" 913 + source = "registry+https://github.com/rust-lang/crates.io-index" 914 + checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" 915 + 916 + [[package]] 917 + name = "futures" 918 + version = "0.3.31" 919 + source = "registry+https://github.com/rust-lang/crates.io-index" 920 + checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" 921 + dependencies = [ 922 + "futures-channel", 923 + "futures-core", 924 + "futures-executor", 925 + "futures-io", 926 + "futures-sink", 927 + "futures-task", 928 + "futures-util", 929 + ] 930 + 931 + [[package]] 932 + name = "futures-channel" 933 + version = "0.3.31" 934 + source = "registry+https://github.com/rust-lang/crates.io-index" 935 + checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 936 + dependencies = [ 937 + "futures-core", 938 + "futures-sink", 939 + ] 940 + 941 + [[package]] 942 + name = "futures-core" 943 + version = "0.3.31" 944 + source = "registry+https://github.com/rust-lang/crates.io-index" 945 + checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 946 + 947 + [[package]] 948 + name = "futures-executor" 949 + version = "0.3.31" 950 + source = "registry+https://github.com/rust-lang/crates.io-index" 951 + checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" 952 + dependencies = [ 953 + "futures-core", 954 + "futures-task", 955 + "futures-util", 956 + "num_cpus", 957 + ] 958 + 959 + [[package]] 960 + name = "futures-intrusive" 961 + version = "0.5.0" 962 + source = "registry+https://github.com/rust-lang/crates.io-index" 963 + checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" 964 + dependencies = [ 965 + "futures-core", 966 + "lock_api", 967 + "parking_lot", 968 + ] 969 + 970 + [[package]] 971 + name = "futures-io" 972 + version = "0.3.31" 973 + source = "registry+https://github.com/rust-lang/crates.io-index" 974 + checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 975 + 976 + [[package]] 977 + name = "futures-macro" 978 + version = "0.3.31" 979 + source = "registry+https://github.com/rust-lang/crates.io-index" 980 + checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" 981 + dependencies = [ 982 + "proc-macro2", 983 + "quote", 984 + "syn", 985 + ] 986 + 987 + [[package]] 988 + name = "futures-sink" 989 + version = "0.3.31" 990 + source = "registry+https://github.com/rust-lang/crates.io-index" 991 + checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 992 + 993 + [[package]] 994 + name = "futures-task" 995 + version = "0.3.31" 996 + source = "registry+https://github.com/rust-lang/crates.io-index" 997 + checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 998 + 999 + [[package]] 1000 + name = "futures-util" 1001 + version = "0.3.31" 1002 + source = "registry+https://github.com/rust-lang/crates.io-index" 1003 + checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 1004 + dependencies = [ 1005 + "futures-channel", 1006 + "futures-core", 1007 + "futures-io", 1008 + "futures-macro", 1009 + "futures-sink", 1010 + "futures-task", 1011 + "memchr", 1012 + "pin-project-lite", 1013 + "pin-utils", 1014 + "slab", 1015 + ] 1016 + 1017 + [[package]] 1018 + name = "generic-array" 1019 + version = "0.14.9" 1020 + source = "registry+https://github.com/rust-lang/crates.io-index" 1021 + checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" 1022 + dependencies = [ 1023 + "typenum", 1024 + "version_check", 1025 + ] 1026 + 1027 + [[package]] 1028 + name = "getrandom" 1029 + version = "0.2.16" 1030 + source = "registry+https://github.com/rust-lang/crates.io-index" 1031 + checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" 1032 + dependencies = [ 1033 + "cfg-if", 1034 + "js-sys", 1035 + "libc", 1036 + "wasi", 1037 + "wasm-bindgen", 1038 + ] 1039 + 1040 + [[package]] 1041 + name = "getrandom" 1042 + version = "0.3.4" 1043 + source = "registry+https://github.com/rust-lang/crates.io-index" 1044 + checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" 1045 + dependencies = [ 1046 + "cfg-if", 1047 + "js-sys", 1048 + "libc", 1049 + "r-efi", 1050 + "wasip2", 1051 + "wasm-bindgen", 1052 + ] 1053 + 1054 + [[package]] 1055 + name = "glob" 1056 + version = "0.3.3" 1057 + source = "registry+https://github.com/rust-lang/crates.io-index" 1058 + checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" 1059 + 1060 + [[package]] 1061 + name = "gloo-net" 1062 + version = "0.6.0" 1063 + source = "registry+https://github.com/rust-lang/crates.io-index" 1064 + checksum = "c06f627b1a58ca3d42b45d6104bf1e1a03799df472df00988b6ba21accc10580" 1065 + dependencies = [ 1066 + "futures-channel", 1067 + "futures-core", 1068 + "futures-sink", 1069 + "gloo-utils", 1070 + "http", 1071 + "js-sys", 1072 + "pin-project", 1073 + "serde", 1074 + "serde_json", 1075 + "thiserror 1.0.69", 1076 + "wasm-bindgen", 1077 + "wasm-bindgen-futures", 1078 + "web-sys", 1079 + ] 1080 + 1081 + [[package]] 1082 + name = "gloo-utils" 1083 + version = "0.2.0" 1084 + source = "registry+https://github.com/rust-lang/crates.io-index" 1085 + checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" 1086 + dependencies = [ 1087 + "js-sys", 1088 + "serde", 1089 + "serde_json", 1090 + "wasm-bindgen", 1091 + "web-sys", 1092 + ] 1093 + 1094 + [[package]] 1095 + name = "guardian" 1096 + version = "1.3.0" 1097 + source = "registry+https://github.com/rust-lang/crates.io-index" 1098 + checksum = "17e2ac29387b1aa07a1e448f7bb4f35b500787971e965b02842b900afa5c8f6f" 1099 + 1100 + [[package]] 1101 + name = "h2" 1102 + version = "0.4.12" 1103 + source = "registry+https://github.com/rust-lang/crates.io-index" 1104 + checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" 1105 + dependencies = [ 1106 + "atomic-waker", 1107 + "bytes", 1108 + "fnv", 1109 + "futures-core", 1110 + "futures-sink", 1111 + "http", 1112 + "indexmap", 1113 + "slab", 1114 + "tokio", 1115 + "tokio-util", 1116 + "tracing", 1117 + ] 1118 + 1119 + [[package]] 1120 + name = "hashbrown" 1121 + version = "0.14.5" 1122 + source = "registry+https://github.com/rust-lang/crates.io-index" 1123 + checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1124 + 1125 + [[package]] 1126 + name = "hashbrown" 1127 + version = "0.15.5" 1128 + source = "registry+https://github.com/rust-lang/crates.io-index" 1129 + checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" 1130 + dependencies = [ 1131 + "allocator-api2", 1132 + "equivalent", 1133 + "foldhash", 1134 + ] 1135 + 1136 + [[package]] 1137 + name = "hashbrown" 1138 + version = "0.16.0" 1139 + source = "registry+https://github.com/rust-lang/crates.io-index" 1140 + checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" 1141 + 1142 + [[package]] 1143 + name = "hashlink" 1144 + version = "0.10.0" 1145 + source = "registry+https://github.com/rust-lang/crates.io-index" 1146 + checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" 1147 + dependencies = [ 1148 + "hashbrown 0.15.5", 1149 + ] 1150 + 1151 + [[package]] 1152 + name = "heck" 1153 + version = "0.5.0" 1154 + source = "registry+https://github.com/rust-lang/crates.io-index" 1155 + checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 1156 + 1157 + [[package]] 1158 + name = "hermit-abi" 1159 + version = "0.5.2" 1160 + source = "registry+https://github.com/rust-lang/crates.io-index" 1161 + checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" 1162 + 1163 + [[package]] 1164 + name = "hex" 1165 + version = "0.4.3" 1166 + source = "registry+https://github.com/rust-lang/crates.io-index" 1167 + checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1168 + 1169 + [[package]] 1170 + name = "hkdf" 1171 + version = "0.12.4" 1172 + source = "registry+https://github.com/rust-lang/crates.io-index" 1173 + checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" 1174 + dependencies = [ 1175 + "hmac", 1176 + ] 1177 + 1178 + [[package]] 1179 + name = "hmac" 1180 + version = "0.12.1" 1181 + source = "registry+https://github.com/rust-lang/crates.io-index" 1182 + checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1183 + dependencies = [ 1184 + "digest", 1185 + ] 1186 + 1187 + [[package]] 1188 + name = "home" 1189 + version = "0.5.12" 1190 + source = "registry+https://github.com/rust-lang/crates.io-index" 1191 + checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" 1192 + dependencies = [ 1193 + "windows-sys 0.61.2", 1194 + ] 1195 + 1196 + [[package]] 1197 + name = "html-escape" 1198 + version = "0.2.13" 1199 + source = "registry+https://github.com/rust-lang/crates.io-index" 1200 + checksum = "6d1ad449764d627e22bfd7cd5e8868264fc9236e07c752972b4080cd351cb476" 1201 + dependencies = [ 1202 + "utf8-width", 1203 + ] 1204 + 1205 + [[package]] 1206 + name = "http" 1207 + version = "1.3.1" 1208 + source = "registry+https://github.com/rust-lang/crates.io-index" 1209 + checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" 1210 + dependencies = [ 1211 + "bytes", 1212 + "fnv", 1213 + "itoa", 1214 + ] 1215 + 1216 + [[package]] 1217 + name = "http-body" 1218 + version = "1.0.1" 1219 + source = "registry+https://github.com/rust-lang/crates.io-index" 1220 + checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 1221 + dependencies = [ 1222 + "bytes", 1223 + "http", 1224 + ] 1225 + 1226 + [[package]] 1227 + name = "http-body-util" 1228 + version = "0.1.3" 1229 + source = "registry+https://github.com/rust-lang/crates.io-index" 1230 + checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" 1231 + dependencies = [ 1232 + "bytes", 1233 + "futures-core", 1234 + "http", 1235 + "http-body", 1236 + "pin-project-lite", 1237 + ] 1238 + 1239 + [[package]] 1240 + name = "http-range-header" 1241 + version = "0.4.2" 1242 + source = "registry+https://github.com/rust-lang/crates.io-index" 1243 + checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" 1244 + 1245 + [[package]] 1246 + name = "httparse" 1247 + version = "1.10.1" 1248 + source = "registry+https://github.com/rust-lang/crates.io-index" 1249 + checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 1250 + 1251 + [[package]] 1252 + name = "httpdate" 1253 + version = "1.0.3" 1254 + source = "registry+https://github.com/rust-lang/crates.io-index" 1255 + checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 1256 + 1257 + [[package]] 1258 + name = "hydration_context" 1259 + version = "0.3.0" 1260 + source = "registry+https://github.com/rust-lang/crates.io-index" 1261 + checksum = "e8714ae4adeaa846d838f380fbd72f049197de629948f91bf045329e0cf0a283" 1262 + dependencies = [ 1263 + "futures", 1264 + "js-sys", 1265 + "once_cell", 1266 + "or_poisoned", 1267 + "pin-project-lite", 1268 + "serde", 1269 + "throw_error", 1270 + "wasm-bindgen", 1271 + ] 1272 + 1273 + [[package]] 1274 + name = "hyper" 1275 + version = "1.7.0" 1276 + source = "registry+https://github.com/rust-lang/crates.io-index" 1277 + checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" 1278 + dependencies = [ 1279 + "atomic-waker", 1280 + "bytes", 1281 + "futures-channel", 1282 + "futures-core", 1283 + "h2", 1284 + "http", 1285 + "http-body", 1286 + "httparse", 1287 + "httpdate", 1288 + "itoa", 1289 + "pin-project-lite", 1290 + "pin-utils", 1291 + "smallvec", 1292 + "tokio", 1293 + "want", 1294 + ] 1295 + 1296 + [[package]] 1297 + name = "hyper-rustls" 1298 + version = "0.27.7" 1299 + source = "registry+https://github.com/rust-lang/crates.io-index" 1300 + checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" 1301 + dependencies = [ 1302 + "http", 1303 + "hyper", 1304 + "hyper-util", 1305 + "log", 1306 + "rustls", 1307 + "rustls-native-certs", 1308 + "rustls-pki-types", 1309 + "tokio", 1310 + "tokio-rustls", 1311 + "tower-service", 1312 + "webpki-roots 1.0.3", 1313 + ] 1314 + 1315 + [[package]] 1316 + name = "hyper-tls" 1317 + version = "0.6.0" 1318 + source = "registry+https://github.com/rust-lang/crates.io-index" 1319 + checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" 1320 + dependencies = [ 1321 + "bytes", 1322 + "http-body-util", 1323 + "hyper", 1324 + "hyper-util", 1325 + "native-tls", 1326 + "tokio", 1327 + "tokio-native-tls", 1328 + "tower-service", 1329 + ] 1330 + 1331 + [[package]] 1332 + name = "hyper-util" 1333 + version = "0.1.17" 1334 + source = "registry+https://github.com/rust-lang/crates.io-index" 1335 + checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" 1336 + dependencies = [ 1337 + "base64", 1338 + "bytes", 1339 + "futures-channel", 1340 + "futures-core", 1341 + "futures-util", 1342 + "http", 1343 + "http-body", 1344 + "hyper", 1345 + "ipnet", 1346 + "libc", 1347 + "percent-encoding", 1348 + "pin-project-lite", 1349 + "socket2", 1350 + "system-configuration", 1351 + "tokio", 1352 + "tower-service", 1353 + "tracing", 1354 + "windows-registry", 1355 + ] 1356 + 1357 + [[package]] 1358 + name = "iana-time-zone" 1359 + version = "0.1.64" 1360 + source = "registry+https://github.com/rust-lang/crates.io-index" 1361 + checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" 1362 + dependencies = [ 1363 + "android_system_properties", 1364 + "core-foundation-sys", 1365 + "iana-time-zone-haiku", 1366 + "js-sys", 1367 + "log", 1368 + "wasm-bindgen", 1369 + "windows-core", 1370 + ] 1371 + 1372 + [[package]] 1373 + name = "iana-time-zone-haiku" 1374 + version = "0.1.2" 1375 + source = "registry+https://github.com/rust-lang/crates.io-index" 1376 + checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 1377 + dependencies = [ 1378 + "cc", 1379 + ] 1380 + 1381 + [[package]] 1382 + name = "icalendar" 1383 + version = "0.17.5" 1384 + source = "registry+https://github.com/rust-lang/crates.io-index" 1385 + checksum = "f25bc68d1c3113be52919708c870cabe55ba0646b9dade87913fe565aa956a3b" 1386 + dependencies = [ 1387 + "chrono", 1388 + "chrono-tz", 1389 + "iso8601", 1390 + "nom 8.0.0", 1391 + "nom-language", 1392 + "serde", 1393 + "time", 1394 + "uuid", 1395 + ] 1396 + 1397 + [[package]] 1398 + name = "icu_collections" 1399 + version = "2.0.0" 1400 + source = "registry+https://github.com/rust-lang/crates.io-index" 1401 + checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" 1402 + dependencies = [ 1403 + "displaydoc", 1404 + "potential_utf", 1405 + "yoke", 1406 + "zerofrom", 1407 + "zerovec", 1408 + ] 1409 + 1410 + [[package]] 1411 + name = "icu_locale_core" 1412 + version = "2.0.0" 1413 + source = "registry+https://github.com/rust-lang/crates.io-index" 1414 + checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" 1415 + dependencies = [ 1416 + "displaydoc", 1417 + "litemap", 1418 + "tinystr", 1419 + "writeable", 1420 + "zerovec", 1421 + ] 1422 + 1423 + [[package]] 1424 + name = "icu_normalizer" 1425 + version = "2.0.0" 1426 + source = "registry+https://github.com/rust-lang/crates.io-index" 1427 + checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" 1428 + dependencies = [ 1429 + "displaydoc", 1430 + "icu_collections", 1431 + "icu_normalizer_data", 1432 + "icu_properties", 1433 + "icu_provider", 1434 + "smallvec", 1435 + "zerovec", 1436 + ] 1437 + 1438 + [[package]] 1439 + name = "icu_normalizer_data" 1440 + version = "2.0.0" 1441 + source = "registry+https://github.com/rust-lang/crates.io-index" 1442 + checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" 1443 + 1444 + [[package]] 1445 + name = "icu_properties" 1446 + version = "2.0.1" 1447 + source = "registry+https://github.com/rust-lang/crates.io-index" 1448 + checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" 1449 + dependencies = [ 1450 + "displaydoc", 1451 + "icu_collections", 1452 + "icu_locale_core", 1453 + "icu_properties_data", 1454 + "icu_provider", 1455 + "potential_utf", 1456 + "zerotrie", 1457 + "zerovec", 1458 + ] 1459 + 1460 + [[package]] 1461 + name = "icu_properties_data" 1462 + version = "2.0.1" 1463 + source = "registry+https://github.com/rust-lang/crates.io-index" 1464 + checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" 1465 + 1466 + [[package]] 1467 + name = "icu_provider" 1468 + version = "2.0.0" 1469 + source = "registry+https://github.com/rust-lang/crates.io-index" 1470 + checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" 1471 + dependencies = [ 1472 + "displaydoc", 1473 + "icu_locale_core", 1474 + "stable_deref_trait", 1475 + "tinystr", 1476 + "writeable", 1477 + "yoke", 1478 + "zerofrom", 1479 + "zerotrie", 1480 + "zerovec", 1481 + ] 1482 + 1483 + [[package]] 1484 + name = "idna" 1485 + version = "1.1.0" 1486 + source = "registry+https://github.com/rust-lang/crates.io-index" 1487 + checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" 1488 + dependencies = [ 1489 + "idna_adapter", 1490 + "smallvec", 1491 + "utf8_iter", 1492 + ] 1493 + 1494 + [[package]] 1495 + name = "idna_adapter" 1496 + version = "1.2.1" 1497 + source = "registry+https://github.com/rust-lang/crates.io-index" 1498 + checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 1499 + dependencies = [ 1500 + "icu_normalizer", 1501 + "icu_properties", 1502 + ] 1503 + 1504 + [[package]] 1505 + name = "indexmap" 1506 + version = "2.12.0" 1507 + source = "registry+https://github.com/rust-lang/crates.io-index" 1508 + checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" 1509 + dependencies = [ 1510 + "equivalent", 1511 + "hashbrown 0.16.0", 1512 + ] 1513 + 1514 + [[package]] 1515 + name = "interpolator" 1516 + version = "0.5.0" 1517 + source = "registry+https://github.com/rust-lang/crates.io-index" 1518 + checksum = "71dd52191aae121e8611f1e8dc3e324dd0dd1dee1e6dd91d10ee07a3cfb4d9d8" 1519 + 1520 + [[package]] 1521 + name = "inventory" 1522 + version = "0.3.21" 1523 + source = "registry+https://github.com/rust-lang/crates.io-index" 1524 + checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" 1525 + dependencies = [ 1526 + "rustversion", 1527 + ] 1528 + 1529 + [[package]] 1530 + name = "ipnet" 1531 + version = "2.11.0" 1532 + source = "registry+https://github.com/rust-lang/crates.io-index" 1533 + checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" 1534 + 1535 + [[package]] 1536 + name = "iri-string" 1537 + version = "0.7.8" 1538 + source = "registry+https://github.com/rust-lang/crates.io-index" 1539 + checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" 1540 + dependencies = [ 1541 + "memchr", 1542 + "serde", 1543 + ] 1544 + 1545 + [[package]] 1546 + name = "iso8601" 1547 + version = "0.6.3" 1548 + source = "registry+https://github.com/rust-lang/crates.io-index" 1549 + checksum = "e1082f0c48f143442a1ac6122f67e360ceee130b967af4d50996e5154a45df46" 1550 + dependencies = [ 1551 + "nom 8.0.0", 1552 + ] 1553 + 1554 + [[package]] 1555 + name = "itertools" 1556 + version = "0.13.0" 1557 + source = "registry+https://github.com/rust-lang/crates.io-index" 1558 + checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" 1559 + dependencies = [ 1560 + "either", 1561 + ] 1562 + 1563 + [[package]] 1564 + name = "itertools" 1565 + version = "0.14.0" 1566 + source = "registry+https://github.com/rust-lang/crates.io-index" 1567 + checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" 1568 + dependencies = [ 1569 + "either", 1570 + ] 1571 + 1572 + [[package]] 1573 + name = "itoa" 1574 + version = "1.0.15" 1575 + source = "registry+https://github.com/rust-lang/crates.io-index" 1576 + checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 1577 + 1578 + [[package]] 1579 + name = "jobserver" 1580 + version = "0.1.34" 1581 + source = "registry+https://github.com/rust-lang/crates.io-index" 1582 + checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" 1583 + dependencies = [ 1584 + "getrandom 0.3.4", 1585 + "libc", 1586 + ] 1587 + 1588 + [[package]] 1589 + name = "js-sys" 1590 + version = "0.3.77" 1591 + source = "registry+https://github.com/rust-lang/crates.io-index" 1592 + checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" 1593 + dependencies = [ 1594 + "once_cell", 1595 + "wasm-bindgen", 1596 + ] 1597 + 1598 + [[package]] 1599 + name = "lazy_static" 1600 + version = "1.5.0" 1601 + source = "registry+https://github.com/rust-lang/crates.io-index" 1602 + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 1603 + dependencies = [ 1604 + "spin", 1605 + ] 1606 + 1607 + [[package]] 1608 + name = "leptos" 1609 + version = "0.8.11" 1610 + source = "registry+https://github.com/rust-lang/crates.io-index" 1611 + checksum = "9d916b7c270615f493e43a43c389725094b8e08eb635fe2469c5c767750c62a0" 1612 + dependencies = [ 1613 + "any_spawner", 1614 + "base64", 1615 + "cfg-if", 1616 + "either_of", 1617 + "futures", 1618 + "getrandom 0.3.4", 1619 + "hydration_context", 1620 + "leptos_config", 1621 + "leptos_dom", 1622 + "leptos_hot_reload", 1623 + "leptos_macro", 1624 + "leptos_server", 1625 + "oco_ref", 1626 + "or_poisoned", 1627 + "paste", 1628 + "rand 0.9.2", 1629 + "reactive_graph", 1630 + "rustc-hash", 1631 + "rustc_version", 1632 + "send_wrapper", 1633 + "serde", 1634 + "serde_json", 1635 + "serde_qs", 1636 + "server_fn", 1637 + "slotmap", 1638 + "tachys", 1639 + "thiserror 2.0.17", 1640 + "throw_error", 1641 + "typed-builder", 1642 + "typed-builder-macro", 1643 + "wasm-bindgen", 1644 + "wasm-bindgen-futures", 1645 + "wasm_split_helpers", 1646 + "web-sys", 1647 + ] 1648 + 1649 + [[package]] 1650 + name = "leptos_axum" 1651 + version = "0.8.6" 1652 + source = "registry+https://github.com/rust-lang/crates.io-index" 1653 + checksum = "1ba0d920d78828a8811bc52bdb25c7982d3c707f3497c3bdbb8a6c796d843a9c" 1654 + dependencies = [ 1655 + "any_spawner", 1656 + "axum", 1657 + "dashmap", 1658 + "futures", 1659 + "hydration_context", 1660 + "leptos", 1661 + "leptos_integration_utils", 1662 + "leptos_macro", 1663 + "leptos_meta", 1664 + "leptos_router", 1665 + "parking_lot", 1666 + "server_fn", 1667 + "tachys", 1668 + "tokio", 1669 + "tower", 1670 + "tower-http", 1671 + ] 1672 + 1673 + [[package]] 1674 + name = "leptos_config" 1675 + version = "0.8.7" 1676 + source = "registry+https://github.com/rust-lang/crates.io-index" 1677 + checksum = "240b4cb96284256a44872563cf029f24d6fe14bc341dcf0f4164e077cb5a1471" 1678 + dependencies = [ 1679 + "config", 1680 + "regex", 1681 + "serde", 1682 + "thiserror 2.0.17", 1683 + "typed-builder", 1684 + ] 1685 + 1686 + [[package]] 1687 + name = "leptos_dom" 1688 + version = "0.8.7" 1689 + source = "registry+https://github.com/rust-lang/crates.io-index" 1690 + checksum = "78f4330c88694c5575e0bfe4eecf81b045d14e76a4f8b00d5fd2a63f8779f895" 1691 + dependencies = [ 1692 + "js-sys", 1693 + "or_poisoned", 1694 + "reactive_graph", 1695 + "send_wrapper", 1696 + "tachys", 1697 + "wasm-bindgen", 1698 + "web-sys", 1699 + ] 1700 + 1701 + [[package]] 1702 + name = "leptos_hot_reload" 1703 + version = "0.8.5" 1704 + source = "registry+https://github.com/rust-lang/crates.io-index" 1705 + checksum = "0d61ec3e1ff8aaee8c5151688550c0363f85bc37845450764c31ff7584a33f38" 1706 + dependencies = [ 1707 + "anyhow", 1708 + "camino", 1709 + "indexmap", 1710 + "parking_lot", 1711 + "proc-macro2", 1712 + "quote", 1713 + "rstml", 1714 + "serde", 1715 + "syn", 1716 + "walkdir", 1717 + ] 1718 + 1719 + [[package]] 1720 + name = "leptos_integration_utils" 1721 + version = "0.8.6" 1722 + source = "registry+https://github.com/rust-lang/crates.io-index" 1723 + checksum = "b530341b8fa93a33b590efe4d235ea109a1fd08b7676b503e9aa3d35f575edfb" 1724 + dependencies = [ 1725 + "futures", 1726 + "hydration_context", 1727 + "leptos", 1728 + "leptos_config", 1729 + "leptos_meta", 1730 + "leptos_router", 1731 + "reactive_graph", 1732 + ] 1733 + 1734 + [[package]] 1735 + name = "leptos_macro" 1736 + version = "0.8.10" 1737 + source = "registry+https://github.com/rust-lang/crates.io-index" 1738 + checksum = "18e29d53c342a1ebb63c4578b4d398057a25967166e7eaa3759f25bb74263472" 1739 + dependencies = [ 1740 + "attribute-derive", 1741 + "cfg-if", 1742 + "convert_case 0.8.0", 1743 + "html-escape", 1744 + "itertools 0.14.0", 1745 + "leptos_hot_reload", 1746 + "prettyplease", 1747 + "proc-macro-error2", 1748 + "proc-macro2", 1749 + "quote", 1750 + "rstml", 1751 + "rustc_version", 1752 + "server_fn_macro", 1753 + "syn", 1754 + "uuid", 1755 + ] 1756 + 1757 + [[package]] 1758 + name = "leptos_meta" 1759 + version = "0.8.5" 1760 + source = "registry+https://github.com/rust-lang/crates.io-index" 1761 + checksum = "2d489e38d3f541e9e43ecc2e3a815527840345a2afca629b3e23fcc1dd254578" 1762 + dependencies = [ 1763 + "futures", 1764 + "indexmap", 1765 + "leptos", 1766 + "or_poisoned", 1767 + "send_wrapper", 1768 + "wasm-bindgen", 1769 + "web-sys", 1770 + ] 1771 + 1772 + [[package]] 1773 + name = "leptos_router" 1774 + version = "0.8.9" 1775 + source = "registry+https://github.com/rust-lang/crates.io-index" 1776 + checksum = "21f482679fc1856ca368560fe7d827d7a34b5bbaa12c8b7c4daf1c02eaf8f09a" 1777 + dependencies = [ 1778 + "any_spawner", 1779 + "either_of", 1780 + "futures", 1781 + "gloo-net", 1782 + "js-sys", 1783 + "leptos", 1784 + "leptos_router_macro", 1785 + "or_poisoned", 1786 + "percent-encoding", 1787 + "reactive_graph", 1788 + "rustc_version", 1789 + "send_wrapper", 1790 + "tachys", 1791 + "thiserror 2.0.17", 1792 + "url", 1793 + "wasm-bindgen", 1794 + "web-sys", 1795 + ] 1796 + 1797 + [[package]] 1798 + name = "leptos_router_macro" 1799 + version = "0.8.5" 1800 + source = "registry+https://github.com/rust-lang/crates.io-index" 1801 + checksum = "571042420d79f4f5b6b0d149dc1561b03f47e08c37c8fa0dfc80c73ad67be8af" 1802 + dependencies = [ 1803 + "proc-macro-error2", 1804 + "proc-macro2", 1805 + "quote", 1806 + "syn", 1807 + ] 1808 + 1809 + [[package]] 1810 + name = "leptos_server" 1811 + version = "0.8.5" 1812 + source = "registry+https://github.com/rust-lang/crates.io-index" 1813 + checksum = "38acbf32649a4b127c8d4ccaed8fb388e19a746430a0ea8f8160e51e28c36e2d" 1814 + dependencies = [ 1815 + "any_spawner", 1816 + "base64", 1817 + "codee", 1818 + "futures", 1819 + "hydration_context", 1820 + "or_poisoned", 1821 + "reactive_graph", 1822 + "send_wrapper", 1823 + "serde", 1824 + "serde_json", 1825 + "server_fn", 1826 + "tachys", 1827 + ] 1828 + 1829 + [[package]] 1830 + name = "libc" 1831 + version = "0.2.177" 1832 + source = "registry+https://github.com/rust-lang/crates.io-index" 1833 + checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" 1834 + 1835 + [[package]] 1836 + name = "libloading" 1837 + version = "0.8.9" 1838 + source = "registry+https://github.com/rust-lang/crates.io-index" 1839 + checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" 1840 + dependencies = [ 1841 + "cfg-if", 1842 + "windows-link 0.2.1", 1843 + ] 1844 + 1845 + [[package]] 1846 + name = "libm" 1847 + version = "0.2.15" 1848 + source = "registry+https://github.com/rust-lang/crates.io-index" 1849 + checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" 1850 + 1851 + [[package]] 1852 + name = "libredox" 1853 + version = "0.1.10" 1854 + source = "registry+https://github.com/rust-lang/crates.io-index" 1855 + checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" 1856 + dependencies = [ 1857 + "bitflags", 1858 + "libc", 1859 + "redox_syscall", 1860 + ] 1861 + 1862 + [[package]] 1863 + name = "libsqlite3-sys" 1864 + version = "0.30.1" 1865 + source = "registry+https://github.com/rust-lang/crates.io-index" 1866 + checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" 1867 + dependencies = [ 1868 + "pkg-config", 1869 + "vcpkg", 1870 + ] 1871 + 1872 + [[package]] 1873 + name = "linear-map" 1874 + version = "1.2.0" 1875 + source = "registry+https://github.com/rust-lang/crates.io-index" 1876 + checksum = "bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee" 1877 + 1878 + [[package]] 1879 + name = "linux-raw-sys" 1880 + version = "0.11.0" 1881 + source = "registry+https://github.com/rust-lang/crates.io-index" 1882 + checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" 1883 + 1884 + [[package]] 1885 + name = "litemap" 1886 + version = "0.8.0" 1887 + source = "registry+https://github.com/rust-lang/crates.io-index" 1888 + checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" 1889 + 1890 + [[package]] 1891 + name = "lock_api" 1892 + version = "0.4.14" 1893 + source = "registry+https://github.com/rust-lang/crates.io-index" 1894 + checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" 1895 + dependencies = [ 1896 + "scopeguard", 1897 + ] 1898 + 1899 + [[package]] 1900 + name = "log" 1901 + version = "0.4.28" 1902 + source = "registry+https://github.com/rust-lang/crates.io-index" 1903 + checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" 1904 + 1905 + [[package]] 1906 + name = "lru-slab" 1907 + version = "0.1.2" 1908 + source = "registry+https://github.com/rust-lang/crates.io-index" 1909 + checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" 1910 + 1911 + [[package]] 1912 + name = "manyhow" 1913 + version = "0.11.4" 1914 + source = "registry+https://github.com/rust-lang/crates.io-index" 1915 + checksum = "b33efb3ca6d3b07393750d4030418d594ab1139cee518f0dc88db70fec873587" 1916 + dependencies = [ 1917 + "manyhow-macros", 1918 + "proc-macro2", 1919 + "quote", 1920 + "syn", 1921 + ] 1922 + 1923 + [[package]] 1924 + name = "manyhow-macros" 1925 + version = "0.11.4" 1926 + source = "registry+https://github.com/rust-lang/crates.io-index" 1927 + checksum = "46fce34d199b78b6e6073abf984c9cf5fd3e9330145a93ee0738a7443e371495" 1928 + dependencies = [ 1929 + "proc-macro-utils", 1930 + "proc-macro2", 1931 + "quote", 1932 + ] 1933 + 1934 + [[package]] 1935 + name = "matchit" 1936 + version = "0.8.4" 1937 + source = "registry+https://github.com/rust-lang/crates.io-index" 1938 + checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" 1939 + 1940 + [[package]] 1941 + name = "md-5" 1942 + version = "0.10.6" 1943 + source = "registry+https://github.com/rust-lang/crates.io-index" 1944 + checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" 1945 + dependencies = [ 1946 + "cfg-if", 1947 + "digest", 1948 + ] 1949 + 1950 + [[package]] 1951 + name = "memchr" 1952 + version = "2.7.6" 1953 + source = "registry+https://github.com/rust-lang/crates.io-index" 1954 + checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" 1955 + 1956 + [[package]] 1957 + name = "mime" 1958 + version = "0.3.17" 1959 + source = "registry+https://github.com/rust-lang/crates.io-index" 1960 + checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 1961 + 1962 + [[package]] 1963 + name = "mime_guess" 1964 + version = "2.0.5" 1965 + source = "registry+https://github.com/rust-lang/crates.io-index" 1966 + checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" 1967 + dependencies = [ 1968 + "mime", 1969 + "unicase", 1970 + ] 1971 + 1972 + [[package]] 1973 + name = "minimal-lexical" 1974 + version = "0.2.1" 1975 + source = "registry+https://github.com/rust-lang/crates.io-index" 1976 + checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 1977 + 1978 + [[package]] 1979 + name = "miniz_oxide" 1980 + version = "0.8.9" 1981 + source = "registry+https://github.com/rust-lang/crates.io-index" 1982 + checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" 1983 + dependencies = [ 1984 + "adler2", 1985 + "simd-adler32", 1986 + ] 1987 + 1988 + [[package]] 1989 + name = "mio" 1990 + version = "1.1.0" 1991 + source = "registry+https://github.com/rust-lang/crates.io-index" 1992 + checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" 1993 + dependencies = [ 1994 + "libc", 1995 + "wasi", 1996 + "windows-sys 0.61.2", 1997 + ] 1998 + 1999 + [[package]] 2000 + name = "multer" 2001 + version = "3.1.0" 2002 + source = "registry+https://github.com/rust-lang/crates.io-index" 2003 + checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" 2004 + dependencies = [ 2005 + "bytes", 2006 + "encoding_rs", 2007 + "futures-util", 2008 + "http", 2009 + "httparse", 2010 + "memchr", 2011 + "mime", 2012 + "spin", 2013 + "version_check", 2014 + ] 2015 + 2016 + [[package]] 2017 + name = "native-tls" 2018 + version = "0.2.14" 2019 + source = "registry+https://github.com/rust-lang/crates.io-index" 2020 + checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" 2021 + dependencies = [ 2022 + "libc", 2023 + "log", 2024 + "openssl", 2025 + "openssl-probe", 2026 + "openssl-sys", 2027 + "schannel", 2028 + "security-framework 2.11.1", 2029 + "security-framework-sys", 2030 + "tempfile", 2031 + ] 2032 + 2033 + [[package]] 2034 + name = "next_tuple" 2035 + version = "0.1.0" 2036 + source = "registry+https://github.com/rust-lang/crates.io-index" 2037 + checksum = "60993920e071b0c9b66f14e2b32740a4e27ffc82854dcd72035887f336a09a28" 2038 + 2039 + [[package]] 2040 + name = "nom" 2041 + version = "7.1.3" 2042 + source = "registry+https://github.com/rust-lang/crates.io-index" 2043 + checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 2044 + dependencies = [ 2045 + "memchr", 2046 + "minimal-lexical", 2047 + ] 2048 + 2049 + [[package]] 2050 + name = "nom" 2051 + version = "8.0.0" 2052 + source = "registry+https://github.com/rust-lang/crates.io-index" 2053 + checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" 2054 + dependencies = [ 2055 + "memchr", 2056 + ] 2057 + 2058 + [[package]] 2059 + name = "nom-language" 2060 + version = "0.1.0" 2061 + source = "registry+https://github.com/rust-lang/crates.io-index" 2062 + checksum = "2de2bc5b451bfedaef92c90b8939a8fff5770bdcc1fafd6239d086aab8fa6b29" 2063 + dependencies = [ 2064 + "nom 8.0.0", 2065 + ] 2066 + 2067 + [[package]] 2068 + name = "num-bigint-dig" 2069 + version = "0.8.4" 2070 + source = "registry+https://github.com/rust-lang/crates.io-index" 2071 + checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" 2072 + dependencies = [ 2073 + "byteorder", 2074 + "lazy_static", 2075 + "libm", 2076 + "num-integer", 2077 + "num-iter", 2078 + "num-traits", 2079 + "rand 0.8.5", 2080 + "smallvec", 2081 + "zeroize", 2082 + ] 2083 + 2084 + [[package]] 2085 + name = "num-conv" 2086 + version = "0.1.0" 2087 + source = "registry+https://github.com/rust-lang/crates.io-index" 2088 + checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 2089 + 2090 + [[package]] 2091 + name = "num-integer" 2092 + version = "0.1.46" 2093 + source = "registry+https://github.com/rust-lang/crates.io-index" 2094 + checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 2095 + dependencies = [ 2096 + "num-traits", 2097 + ] 2098 + 2099 + [[package]] 2100 + name = "num-iter" 2101 + version = "0.1.45" 2102 + source = "registry+https://github.com/rust-lang/crates.io-index" 2103 + checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" 2104 + dependencies = [ 2105 + "autocfg", 2106 + "num-integer", 2107 + "num-traits", 2108 + ] 2109 + 2110 + [[package]] 2111 + name = "num-traits" 2112 + version = "0.2.19" 2113 + source = "registry+https://github.com/rust-lang/crates.io-index" 2114 + checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 2115 + dependencies = [ 2116 + "autocfg", 2117 + "libm", 2118 + ] 2119 + 2120 + [[package]] 2121 + name = "num_cpus" 2122 + version = "1.17.0" 2123 + source = "registry+https://github.com/rust-lang/crates.io-index" 2124 + checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" 2125 + dependencies = [ 2126 + "hermit-abi", 2127 + "libc", 2128 + ] 2129 + 2130 + [[package]] 2131 + name = "oco_ref" 2132 + version = "0.2.1" 2133 + source = "registry+https://github.com/rust-lang/crates.io-index" 2134 + checksum = "ed0423ff9973dea4d6bd075934fdda86ebb8c05bdf9d6b0507067d4a1226371d" 2135 + dependencies = [ 2136 + "serde", 2137 + "thiserror 2.0.17", 2138 + ] 2139 + 2140 + [[package]] 2141 + name = "once_cell" 2142 + version = "1.21.3" 2143 + source = "registry+https://github.com/rust-lang/crates.io-index" 2144 + checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 2145 + 2146 + [[package]] 2147 + name = "openssl" 2148 + version = "0.10.74" 2149 + source = "registry+https://github.com/rust-lang/crates.io-index" 2150 + checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654" 2151 + dependencies = [ 2152 + "bitflags", 2153 + "cfg-if", 2154 + "foreign-types", 2155 + "libc", 2156 + "once_cell", 2157 + "openssl-macros", 2158 + "openssl-sys", 2159 + ] 2160 + 2161 + [[package]] 2162 + name = "openssl-macros" 2163 + version = "0.1.1" 2164 + source = "registry+https://github.com/rust-lang/crates.io-index" 2165 + checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 2166 + dependencies = [ 2167 + "proc-macro2", 2168 + "quote", 2169 + "syn", 2170 + ] 2171 + 2172 + [[package]] 2173 + name = "openssl-probe" 2174 + version = "0.1.6" 2175 + source = "registry+https://github.com/rust-lang/crates.io-index" 2176 + checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" 2177 + 2178 + [[package]] 2179 + name = "openssl-sys" 2180 + version = "0.9.110" 2181 + source = "registry+https://github.com/rust-lang/crates.io-index" 2182 + checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2" 2183 + dependencies = [ 2184 + "cc", 2185 + "libc", 2186 + "pkg-config", 2187 + "vcpkg", 2188 + ] 2189 + 2190 + [[package]] 2191 + name = "or_poisoned" 2192 + version = "0.1.0" 2193 + source = "registry+https://github.com/rust-lang/crates.io-index" 2194 + checksum = "8c04f5d74368e4d0dfe06c45c8627c81bd7c317d52762d118fb9b3076f6420fd" 2195 + 2196 + [[package]] 2197 + name = "parking" 2198 + version = "2.2.1" 2199 + source = "registry+https://github.com/rust-lang/crates.io-index" 2200 + checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 2201 + 2202 + [[package]] 2203 + name = "parking_lot" 2204 + version = "0.12.5" 2205 + source = "registry+https://github.com/rust-lang/crates.io-index" 2206 + checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" 2207 + dependencies = [ 2208 + "lock_api", 2209 + "parking_lot_core", 2210 + ] 2211 + 2212 + [[package]] 2213 + name = "parking_lot_core" 2214 + version = "0.9.12" 2215 + source = "registry+https://github.com/rust-lang/crates.io-index" 2216 + checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" 2217 + dependencies = [ 2218 + "cfg-if", 2219 + "libc", 2220 + "redox_syscall", 2221 + "smallvec", 2222 + "windows-link 0.2.1", 2223 + ] 2224 + 2225 + [[package]] 2226 + name = "paste" 2227 + version = "1.0.15" 2228 + source = "registry+https://github.com/rust-lang/crates.io-index" 2229 + checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 2230 + 2231 + [[package]] 2232 + name = "pathdiff" 2233 + version = "0.2.3" 2234 + source = "registry+https://github.com/rust-lang/crates.io-index" 2235 + checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" 2236 + 2237 + [[package]] 2238 + name = "pem-rfc7468" 2239 + version = "0.7.0" 2240 + source = "registry+https://github.com/rust-lang/crates.io-index" 2241 + checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" 2242 + dependencies = [ 2243 + "base64ct", 2244 + ] 2245 + 2246 + [[package]] 2247 + name = "percent-encoding" 2248 + version = "2.3.2" 2249 + source = "registry+https://github.com/rust-lang/crates.io-index" 2250 + checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 2251 + 2252 + [[package]] 2253 + name = "phf" 2254 + version = "0.12.1" 2255 + source = "registry+https://github.com/rust-lang/crates.io-index" 2256 + checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7" 2257 + dependencies = [ 2258 + "phf_shared", 2259 + ] 2260 + 2261 + [[package]] 2262 + name = "phf_shared" 2263 + version = "0.12.1" 2264 + source = "registry+https://github.com/rust-lang/crates.io-index" 2265 + checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981" 2266 + dependencies = [ 2267 + "siphasher", 2268 + ] 2269 + 2270 + [[package]] 2271 + name = "pin-project" 2272 + version = "1.1.10" 2273 + source = "registry+https://github.com/rust-lang/crates.io-index" 2274 + checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" 2275 + dependencies = [ 2276 + "pin-project-internal", 2277 + ] 2278 + 2279 + [[package]] 2280 + name = "pin-project-internal" 2281 + version = "1.1.10" 2282 + source = "registry+https://github.com/rust-lang/crates.io-index" 2283 + checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" 2284 + dependencies = [ 2285 + "proc-macro2", 2286 + "quote", 2287 + "syn", 2288 + ] 2289 + 2290 + [[package]] 2291 + name = "pin-project-lite" 2292 + version = "0.2.16" 2293 + source = "registry+https://github.com/rust-lang/crates.io-index" 2294 + checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 2295 + 2296 + [[package]] 2297 + name = "pin-utils" 2298 + version = "0.1.0" 2299 + source = "registry+https://github.com/rust-lang/crates.io-index" 2300 + checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2301 + 2302 + [[package]] 2303 + name = "pkcs1" 2304 + version = "0.7.5" 2305 + source = "registry+https://github.com/rust-lang/crates.io-index" 2306 + checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" 2307 + dependencies = [ 2308 + "der", 2309 + "pkcs8", 2310 + "spki", 2311 + ] 2312 + 2313 + [[package]] 2314 + name = "pkcs8" 2315 + version = "0.10.2" 2316 + source = "registry+https://github.com/rust-lang/crates.io-index" 2317 + checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" 2318 + dependencies = [ 2319 + "der", 2320 + "spki", 2321 + ] 2322 + 2323 + [[package]] 2324 + name = "pkg-config" 2325 + version = "0.3.32" 2326 + source = "registry+https://github.com/rust-lang/crates.io-index" 2327 + checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 2328 + 2329 + [[package]] 2330 + name = "potential_utf" 2331 + version = "0.1.3" 2332 + source = "registry+https://github.com/rust-lang/crates.io-index" 2333 + checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" 2334 + dependencies = [ 2335 + "zerovec", 2336 + ] 2337 + 2338 + [[package]] 2339 + name = "powerfmt" 2340 + version = "0.2.0" 2341 + source = "registry+https://github.com/rust-lang/crates.io-index" 2342 + checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 2343 + 2344 + [[package]] 2345 + name = "ppv-lite86" 2346 + version = "0.2.21" 2347 + source = "registry+https://github.com/rust-lang/crates.io-index" 2348 + checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 2349 + dependencies = [ 2350 + "zerocopy", 2351 + ] 2352 + 2353 + [[package]] 2354 + name = "prettyplease" 2355 + version = "0.2.37" 2356 + source = "registry+https://github.com/rust-lang/crates.io-index" 2357 + checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" 2358 + dependencies = [ 2359 + "proc-macro2", 2360 + "syn", 2361 + ] 2362 + 2363 + [[package]] 2364 + name = "proc-macro-error-attr2" 2365 + version = "2.0.0" 2366 + source = "registry+https://github.com/rust-lang/crates.io-index" 2367 + checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" 2368 + dependencies = [ 2369 + "proc-macro2", 2370 + "quote", 2371 + ] 2372 + 2373 + [[package]] 2374 + name = "proc-macro-error2" 2375 + version = "2.0.1" 2376 + source = "registry+https://github.com/rust-lang/crates.io-index" 2377 + checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" 2378 + dependencies = [ 2379 + "proc-macro-error-attr2", 2380 + "proc-macro2", 2381 + "quote", 2382 + "syn", 2383 + ] 2384 + 2385 + [[package]] 2386 + name = "proc-macro-utils" 2387 + version = "0.10.0" 2388 + source = "registry+https://github.com/rust-lang/crates.io-index" 2389 + checksum = "eeaf08a13de400bc215877b5bdc088f241b12eb42f0a548d3390dc1c56bb7071" 2390 + dependencies = [ 2391 + "proc-macro2", 2392 + "quote", 2393 + "smallvec", 2394 + ] 2395 + 2396 + [[package]] 2397 + name = "proc-macro2" 2398 + version = "1.0.103" 2399 + source = "registry+https://github.com/rust-lang/crates.io-index" 2400 + checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" 2401 + dependencies = [ 2402 + "unicode-ident", 2403 + ] 2404 + 2405 + [[package]] 2406 + name = "proc-macro2-diagnostics" 2407 + version = "0.10.1" 2408 + source = "registry+https://github.com/rust-lang/crates.io-index" 2409 + checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" 2410 + dependencies = [ 2411 + "proc-macro2", 2412 + "quote", 2413 + "syn", 2414 + "version_check", 2415 + "yansi", 2416 + ] 2417 + 2418 + [[package]] 2419 + name = "quick-xml" 2420 + version = "0.38.3" 2421 + source = "registry+https://github.com/rust-lang/crates.io-index" 2422 + checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89" 2423 + dependencies = [ 2424 + "memchr", 2425 + "tokio", 2426 + ] 2427 + 2428 + [[package]] 2429 + name = "quinn" 2430 + version = "0.11.9" 2431 + source = "registry+https://github.com/rust-lang/crates.io-index" 2432 + checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" 2433 + dependencies = [ 2434 + "bytes", 2435 + "cfg_aliases", 2436 + "pin-project-lite", 2437 + "quinn-proto", 2438 + "quinn-udp", 2439 + "rustc-hash", 2440 + "rustls", 2441 + "socket2", 2442 + "thiserror 2.0.17", 2443 + "tokio", 2444 + "tracing", 2445 + "web-time", 2446 + ] 2447 + 2448 + [[package]] 2449 + name = "quinn-proto" 2450 + version = "0.11.13" 2451 + source = "registry+https://github.com/rust-lang/crates.io-index" 2452 + checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" 2453 + dependencies = [ 2454 + "bytes", 2455 + "getrandom 0.3.4", 2456 + "lru-slab", 2457 + "rand 0.9.2", 2458 + "ring", 2459 + "rustc-hash", 2460 + "rustls", 2461 + "rustls-pki-types", 2462 + "slab", 2463 + "thiserror 2.0.17", 2464 + "tinyvec", 2465 + "tracing", 2466 + "web-time", 2467 + ] 2468 + 2469 + [[package]] 2470 + name = "quinn-udp" 2471 + version = "0.5.14" 2472 + source = "registry+https://github.com/rust-lang/crates.io-index" 2473 + checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" 2474 + dependencies = [ 2475 + "cfg_aliases", 2476 + "libc", 2477 + "once_cell", 2478 + "socket2", 2479 + "tracing", 2480 + "windows-sys 0.60.2", 2481 + ] 2482 + 2483 + [[package]] 2484 + name = "quote" 2485 + version = "1.0.41" 2486 + source = "registry+https://github.com/rust-lang/crates.io-index" 2487 + checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" 2488 + dependencies = [ 2489 + "proc-macro2", 2490 + ] 2491 + 2492 + [[package]] 2493 + name = "quote-use" 2494 + version = "0.8.4" 2495 + source = "registry+https://github.com/rust-lang/crates.io-index" 2496 + checksum = "9619db1197b497a36178cfc736dc96b271fe918875fbf1344c436a7e93d0321e" 2497 + dependencies = [ 2498 + "quote", 2499 + "quote-use-macros", 2500 + ] 2501 + 2502 + [[package]] 2503 + name = "quote-use-macros" 2504 + version = "0.8.4" 2505 + source = "registry+https://github.com/rust-lang/crates.io-index" 2506 + checksum = "82ebfb7faafadc06a7ab141a6f67bcfb24cb8beb158c6fe933f2f035afa99f35" 2507 + dependencies = [ 2508 + "proc-macro-utils", 2509 + "proc-macro2", 2510 + "quote", 2511 + "syn", 2512 + ] 2513 + 2514 + [[package]] 2515 + name = "r-efi" 2516 + version = "5.3.0" 2517 + source = "registry+https://github.com/rust-lang/crates.io-index" 2518 + checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" 2519 + 2520 + [[package]] 2521 + name = "rand" 2522 + version = "0.8.5" 2523 + source = "registry+https://github.com/rust-lang/crates.io-index" 2524 + checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 2525 + dependencies = [ 2526 + "libc", 2527 + "rand_chacha 0.3.1", 2528 + "rand_core 0.6.4", 2529 + ] 2530 + 2531 + [[package]] 2532 + name = "rand" 2533 + version = "0.9.2" 2534 + source = "registry+https://github.com/rust-lang/crates.io-index" 2535 + checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" 2536 + dependencies = [ 2537 + "rand_chacha 0.9.0", 2538 + "rand_core 0.9.3", 2539 + ] 2540 + 2541 + [[package]] 2542 + name = "rand_chacha" 2543 + version = "0.3.1" 2544 + source = "registry+https://github.com/rust-lang/crates.io-index" 2545 + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 2546 + dependencies = [ 2547 + "ppv-lite86", 2548 + "rand_core 0.6.4", 2549 + ] 2550 + 2551 + [[package]] 2552 + name = "rand_chacha" 2553 + version = "0.9.0" 2554 + source = "registry+https://github.com/rust-lang/crates.io-index" 2555 + checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 2556 + dependencies = [ 2557 + "ppv-lite86", 2558 + "rand_core 0.9.3", 2559 + ] 2560 + 2561 + [[package]] 2562 + name = "rand_core" 2563 + version = "0.6.4" 2564 + source = "registry+https://github.com/rust-lang/crates.io-index" 2565 + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2566 + dependencies = [ 2567 + "getrandom 0.2.16", 2568 + ] 2569 + 2570 + [[package]] 2571 + name = "rand_core" 2572 + version = "0.9.3" 2573 + source = "registry+https://github.com/rust-lang/crates.io-index" 2574 + checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" 2575 + dependencies = [ 2576 + "getrandom 0.3.4", 2577 + ] 2578 + 2579 + [[package]] 2580 + name = "reactive_graph" 2581 + version = "0.2.9" 2582 + source = "registry+https://github.com/rust-lang/crates.io-index" 2583 + checksum = "77cbe7c61b939523104883fd00d431f6c681c7005fd350f01a9ff2fc96509399" 2584 + dependencies = [ 2585 + "any_spawner", 2586 + "async-lock", 2587 + "futures", 2588 + "guardian", 2589 + "hydration_context", 2590 + "indexmap", 2591 + "or_poisoned", 2592 + "pin-project-lite", 2593 + "rustc-hash", 2594 + "rustc_version", 2595 + "send_wrapper", 2596 + "serde", 2597 + "slotmap", 2598 + "thiserror 2.0.17", 2599 + "web-sys", 2600 + ] 2601 + 2602 + [[package]] 2603 + name = "reactive_stores" 2604 + version = "0.3.0" 2605 + source = "registry+https://github.com/rust-lang/crates.io-index" 2606 + checksum = "25b73d94139821e0a2f31fb4e0eaf6ebbcf4d15c5e2fb353dc3babd4f6d35674" 2607 + dependencies = [ 2608 + "dashmap", 2609 + "guardian", 2610 + "itertools 0.14.0", 2611 + "or_poisoned", 2612 + "paste", 2613 + "reactive_graph", 2614 + "reactive_stores_macro", 2615 + "rustc-hash", 2616 + "send_wrapper", 2617 + ] 2618 + 2619 + [[package]] 2620 + name = "reactive_stores_macro" 2621 + version = "0.2.6" 2622 + source = "registry+https://github.com/rust-lang/crates.io-index" 2623 + checksum = "4fa40919eb2975100283b2a70e68eafce1e8bcf81f0622ff168e4c2b3f8d46bb" 2624 + dependencies = [ 2625 + "convert_case 0.8.0", 2626 + "proc-macro-error2", 2627 + "proc-macro2", 2628 + "quote", 2629 + "syn", 2630 + ] 2631 + 2632 + [[package]] 2633 + name = "redox_syscall" 2634 + version = "0.5.18" 2635 + source = "registry+https://github.com/rust-lang/crates.io-index" 2636 + checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" 2637 + dependencies = [ 2638 + "bitflags", 2639 + ] 2640 + 2641 + [[package]] 2642 + name = "regex" 2643 + version = "1.12.2" 2644 + source = "registry+https://github.com/rust-lang/crates.io-index" 2645 + checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" 2646 + dependencies = [ 2647 + "aho-corasick", 2648 + "memchr", 2649 + "regex-automata", 2650 + "regex-syntax", 2651 + ] 2652 + 2653 + [[package]] 2654 + name = "regex-automata" 2655 + version = "0.4.13" 2656 + source = "registry+https://github.com/rust-lang/crates.io-index" 2657 + checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" 2658 + dependencies = [ 2659 + "aho-corasick", 2660 + "memchr", 2661 + "regex-syntax", 2662 + ] 2663 + 2664 + [[package]] 2665 + name = "regex-syntax" 2666 + version = "0.8.8" 2667 + source = "registry+https://github.com/rust-lang/crates.io-index" 2668 + checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" 2669 + 2670 + [[package]] 2671 + name = "reqwest" 2672 + version = "0.12.24" 2673 + source = "registry+https://github.com/rust-lang/crates.io-index" 2674 + checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" 2675 + dependencies = [ 2676 + "base64", 2677 + "bytes", 2678 + "encoding_rs", 2679 + "futures-core", 2680 + "h2", 2681 + "http", 2682 + "http-body", 2683 + "http-body-util", 2684 + "hyper", 2685 + "hyper-rustls", 2686 + "hyper-tls", 2687 + "hyper-util", 2688 + "js-sys", 2689 + "log", 2690 + "mime", 2691 + "native-tls", 2692 + "percent-encoding", 2693 + "pin-project-lite", 2694 + "quinn", 2695 + "rustls", 2696 + "rustls-pki-types", 2697 + "serde", 2698 + "serde_json", 2699 + "serde_urlencoded", 2700 + "sync_wrapper", 2701 + "tokio", 2702 + "tokio-native-tls", 2703 + "tokio-rustls", 2704 + "tower", 2705 + "tower-http", 2706 + "tower-service", 2707 + "url", 2708 + "wasm-bindgen", 2709 + "wasm-bindgen-futures", 2710 + "web-sys", 2711 + "webpki-roots 1.0.3", 2712 + ] 2713 + 2714 + [[package]] 2715 + name = "ring" 2716 + version = "0.17.14" 2717 + source = "registry+https://github.com/rust-lang/crates.io-index" 2718 + checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" 2719 + dependencies = [ 2720 + "cc", 2721 + "cfg-if", 2722 + "getrandom 0.2.16", 2723 + "libc", 2724 + "untrusted", 2725 + "windows-sys 0.52.0", 2726 + ] 2727 + 2728 + [[package]] 2729 + name = "rsa" 2730 + version = "0.9.8" 2731 + source = "registry+https://github.com/rust-lang/crates.io-index" 2732 + checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" 2733 + dependencies = [ 2734 + "const-oid", 2735 + "digest", 2736 + "num-bigint-dig", 2737 + "num-integer", 2738 + "num-traits", 2739 + "pkcs1", 2740 + "pkcs8", 2741 + "rand_core 0.6.4", 2742 + "signature", 2743 + "spki", 2744 + "subtle", 2745 + "zeroize", 2746 + ] 2747 + 2748 + [[package]] 2749 + name = "rstml" 2750 + version = "0.12.1" 2751 + source = "registry+https://github.com/rust-lang/crates.io-index" 2752 + checksum = "61cf4616de7499fc5164570d40ca4e1b24d231c6833a88bff0fe00725080fd56" 2753 + dependencies = [ 2754 + "derive-where", 2755 + "proc-macro2", 2756 + "proc-macro2-diagnostics", 2757 + "quote", 2758 + "syn", 2759 + "syn_derive", 2760 + "thiserror 2.0.17", 2761 + ] 2762 + 2763 + [[package]] 2764 + name = "rustc-hash" 2765 + version = "2.1.1" 2766 + source = "registry+https://github.com/rust-lang/crates.io-index" 2767 + checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" 2768 + 2769 + [[package]] 2770 + name = "rustc_version" 2771 + version = "0.4.1" 2772 + source = "registry+https://github.com/rust-lang/crates.io-index" 2773 + checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" 2774 + dependencies = [ 2775 + "semver", 2776 + ] 2777 + 2778 + [[package]] 2779 + name = "rustix" 2780 + version = "1.1.2" 2781 + source = "registry+https://github.com/rust-lang/crates.io-index" 2782 + checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" 2783 + dependencies = [ 2784 + "bitflags", 2785 + "errno", 2786 + "libc", 2787 + "linux-raw-sys", 2788 + "windows-sys 0.61.2", 2789 + ] 2790 + 2791 + [[package]] 2792 + name = "rustls" 2793 + version = "0.23.34" 2794 + source = "registry+https://github.com/rust-lang/crates.io-index" 2795 + checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7" 2796 + dependencies = [ 2797 + "aws-lc-rs", 2798 + "log", 2799 + "once_cell", 2800 + "ring", 2801 + "rustls-pki-types", 2802 + "rustls-webpki", 2803 + "subtle", 2804 + "zeroize", 2805 + ] 2806 + 2807 + [[package]] 2808 + name = "rustls-native-certs" 2809 + version = "0.8.2" 2810 + source = "registry+https://github.com/rust-lang/crates.io-index" 2811 + checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" 2812 + dependencies = [ 2813 + "openssl-probe", 2814 + "rustls-pki-types", 2815 + "schannel", 2816 + "security-framework 3.5.1", 2817 + ] 2818 + 2819 + [[package]] 2820 + name = "rustls-pki-types" 2821 + version = "1.12.0" 2822 + source = "registry+https://github.com/rust-lang/crates.io-index" 2823 + checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" 2824 + dependencies = [ 2825 + "web-time", 2826 + "zeroize", 2827 + ] 2828 + 2829 + [[package]] 2830 + name = "rustls-webpki" 2831 + version = "0.103.7" 2832 + source = "registry+https://github.com/rust-lang/crates.io-index" 2833 + checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" 2834 + dependencies = [ 2835 + "aws-lc-rs", 2836 + "ring", 2837 + "rustls-pki-types", 2838 + "untrusted", 2839 + ] 2840 + 2841 + [[package]] 2842 + name = "rustversion" 2843 + version = "1.0.22" 2844 + source = "registry+https://github.com/rust-lang/crates.io-index" 2845 + checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" 2846 + 2847 + [[package]] 2848 + name = "ryu" 2849 + version = "1.0.20" 2850 + source = "registry+https://github.com/rust-lang/crates.io-index" 2851 + checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 2852 + 2853 + [[package]] 2854 + name = "same-file" 2855 + version = "1.0.6" 2856 + source = "registry+https://github.com/rust-lang/crates.io-index" 2857 + checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2858 + dependencies = [ 2859 + "winapi-util", 2860 + ] 2861 + 2862 + [[package]] 2863 + name = "schannel" 2864 + version = "0.1.28" 2865 + source = "registry+https://github.com/rust-lang/crates.io-index" 2866 + checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" 2867 + dependencies = [ 2868 + "windows-sys 0.61.2", 2869 + ] 2870 + 2871 + [[package]] 2872 + name = "scopeguard" 2873 + version = "1.2.0" 2874 + source = "registry+https://github.com/rust-lang/crates.io-index" 2875 + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2876 + 2877 + [[package]] 2878 + name = "security-framework" 2879 + version = "2.11.1" 2880 + source = "registry+https://github.com/rust-lang/crates.io-index" 2881 + checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" 2882 + dependencies = [ 2883 + "bitflags", 2884 + "core-foundation 0.9.4", 2885 + "core-foundation-sys", 2886 + "libc", 2887 + "security-framework-sys", 2888 + ] 2889 + 2890 + [[package]] 2891 + name = "security-framework" 2892 + version = "3.5.1" 2893 + source = "registry+https://github.com/rust-lang/crates.io-index" 2894 + checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" 2895 + dependencies = [ 2896 + "bitflags", 2897 + "core-foundation 0.10.1", 2898 + "core-foundation-sys", 2899 + "libc", 2900 + "security-framework-sys", 2901 + ] 2902 + 2903 + [[package]] 2904 + name = "security-framework-sys" 2905 + version = "2.15.0" 2906 + source = "registry+https://github.com/rust-lang/crates.io-index" 2907 + checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" 2908 + dependencies = [ 2909 + "core-foundation-sys", 2910 + "libc", 2911 + ] 2912 + 2913 + [[package]] 2914 + name = "semver" 2915 + version = "1.0.27" 2916 + source = "registry+https://github.com/rust-lang/crates.io-index" 2917 + checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" 2918 + 2919 + [[package]] 2920 + name = "send_wrapper" 2921 + version = "0.6.0" 2922 + source = "registry+https://github.com/rust-lang/crates.io-index" 2923 + checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" 2924 + dependencies = [ 2925 + "futures-core", 2926 + ] 2927 + 2928 + [[package]] 2929 + name = "serde" 2930 + version = "1.0.228" 2931 + source = "registry+https://github.com/rust-lang/crates.io-index" 2932 + checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" 2933 + dependencies = [ 2934 + "serde_core", 2935 + "serde_derive", 2936 + ] 2937 + 2938 + [[package]] 2939 + name = "serde_core" 2940 + version = "1.0.228" 2941 + source = "registry+https://github.com/rust-lang/crates.io-index" 2942 + checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" 2943 + dependencies = [ 2944 + "serde_derive", 2945 + ] 2946 + 2947 + [[package]] 2948 + name = "serde_derive" 2949 + version = "1.0.228" 2950 + source = "registry+https://github.com/rust-lang/crates.io-index" 2951 + checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" 2952 + dependencies = [ 2953 + "proc-macro2", 2954 + "quote", 2955 + "syn", 2956 + ] 2957 + 2958 + [[package]] 2959 + name = "serde_json" 2960 + version = "1.0.145" 2961 + source = "registry+https://github.com/rust-lang/crates.io-index" 2962 + checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" 2963 + dependencies = [ 2964 + "itoa", 2965 + "memchr", 2966 + "ryu", 2967 + "serde", 2968 + "serde_core", 2969 + ] 2970 + 2971 + [[package]] 2972 + name = "serde_path_to_error" 2973 + version = "0.1.20" 2974 + source = "registry+https://github.com/rust-lang/crates.io-index" 2975 + checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" 2976 + dependencies = [ 2977 + "itoa", 2978 + "serde", 2979 + "serde_core", 2980 + ] 2981 + 2982 + [[package]] 2983 + name = "serde_qs" 2984 + version = "0.15.0" 2985 + source = "registry+https://github.com/rust-lang/crates.io-index" 2986 + checksum = "f3faaf9e727533a19351a43cc5a8de957372163c7d35cc48c90b75cdda13c352" 2987 + dependencies = [ 2988 + "percent-encoding", 2989 + "serde", 2990 + "thiserror 2.0.17", 2991 + ] 2992 + 2993 + [[package]] 2994 + name = "serde_spanned" 2995 + version = "1.0.3" 2996 + source = "registry+https://github.com/rust-lang/crates.io-index" 2997 + checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" 2998 + dependencies = [ 2999 + "serde_core", 3000 + ] 3001 + 3002 + [[package]] 3003 + name = "serde_urlencoded" 3004 + version = "0.7.1" 3005 + source = "registry+https://github.com/rust-lang/crates.io-index" 3006 + checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 3007 + dependencies = [ 3008 + "form_urlencoded", 3009 + "itoa", 3010 + "ryu", 3011 + "serde", 3012 + ] 3013 + 3014 + [[package]] 3015 + name = "server_fn" 3016 + version = "0.8.8" 3017 + source = "registry+https://github.com/rust-lang/crates.io-index" 3018 + checksum = "fdc30228718f62d80a376964baf990edbcb5e97688fdc71183a8ef3d44cb6c89" 3019 + dependencies = [ 3020 + "axum", 3021 + "base64", 3022 + "bytes", 3023 + "const-str", 3024 + "const_format", 3025 + "dashmap", 3026 + "futures", 3027 + "gloo-net", 3028 + "http", 3029 + "http-body-util", 3030 + "hyper", 3031 + "inventory", 3032 + "js-sys", 3033 + "pin-project-lite", 3034 + "rustc_version", 3035 + "rustversion", 3036 + "send_wrapper", 3037 + "serde", 3038 + "serde_json", 3039 + "serde_qs", 3040 + "server_fn_macro_default", 3041 + "thiserror 2.0.17", 3042 + "throw_error", 3043 + "tokio", 3044 + "tower", 3045 + "tower-layer", 3046 + "url", 3047 + "wasm-bindgen", 3048 + "wasm-bindgen-futures", 3049 + "wasm-streams", 3050 + "web-sys", 3051 + "xxhash-rust", 3052 + ] 3053 + 3054 + [[package]] 3055 + name = "server_fn_macro" 3056 + version = "0.8.8" 3057 + source = "registry+https://github.com/rust-lang/crates.io-index" 3058 + checksum = "950b8cfc9ff5f39ca879c5a7c5e640de2695a199e18e424c3289d0964cabe642" 3059 + dependencies = [ 3060 + "const_format", 3061 + "convert_case 0.8.0", 3062 + "proc-macro2", 3063 + "quote", 3064 + "rustc_version", 3065 + "syn", 3066 + "xxhash-rust", 3067 + ] 3068 + 3069 + [[package]] 3070 + name = "server_fn_macro_default" 3071 + version = "0.8.5" 3072 + source = "registry+https://github.com/rust-lang/crates.io-index" 3073 + checksum = "63eb08f80db903d3c42f64e60ebb3875e0305be502bdc064ec0a0eab42207f00" 3074 + dependencies = [ 3075 + "server_fn_macro", 3076 + "syn", 3077 + ] 3078 + 3079 + [[package]] 3080 + name = "sha1" 3081 + version = "0.10.6" 3082 + source = "registry+https://github.com/rust-lang/crates.io-index" 3083 + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 3084 + dependencies = [ 3085 + "cfg-if", 3086 + "cpufeatures", 3087 + "digest", 3088 + ] 3089 + 3090 + [[package]] 3091 + name = "sha2" 3092 + version = "0.10.9" 3093 + source = "registry+https://github.com/rust-lang/crates.io-index" 3094 + checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" 3095 + dependencies = [ 3096 + "cfg-if", 3097 + "cpufeatures", 3098 + "digest", 3099 + ] 3100 + 3101 + [[package]] 3102 + name = "shlex" 3103 + version = "1.3.0" 3104 + source = "registry+https://github.com/rust-lang/crates.io-index" 3105 + checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 3106 + 3107 + [[package]] 3108 + name = "signature" 3109 + version = "2.2.0" 3110 + source = "registry+https://github.com/rust-lang/crates.io-index" 3111 + checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" 3112 + dependencies = [ 3113 + "digest", 3114 + "rand_core 0.6.4", 3115 + ] 3116 + 3117 + [[package]] 3118 + name = "simd-adler32" 3119 + version = "0.3.7" 3120 + source = "registry+https://github.com/rust-lang/crates.io-index" 3121 + checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" 3122 + 3123 + [[package]] 3124 + name = "siphasher" 3125 + version = "1.0.1" 3126 + source = "registry+https://github.com/rust-lang/crates.io-index" 3127 + checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" 3128 + 3129 + [[package]] 3130 + name = "slab" 3131 + version = "0.4.11" 3132 + source = "registry+https://github.com/rust-lang/crates.io-index" 3133 + checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" 3134 + 3135 + [[package]] 3136 + name = "slotmap" 3137 + version = "1.0.7" 3138 + source = "registry+https://github.com/rust-lang/crates.io-index" 3139 + checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" 3140 + dependencies = [ 3141 + "version_check", 3142 + ] 3143 + 3144 + [[package]] 3145 + name = "smallvec" 3146 + version = "1.15.1" 3147 + source = "registry+https://github.com/rust-lang/crates.io-index" 3148 + checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 3149 + dependencies = [ 3150 + "serde", 3151 + ] 3152 + 3153 + [[package]] 3154 + name = "socket2" 3155 + version = "0.6.1" 3156 + source = "registry+https://github.com/rust-lang/crates.io-index" 3157 + checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" 3158 + dependencies = [ 3159 + "libc", 3160 + "windows-sys 0.60.2", 3161 + ] 3162 + 3163 + [[package]] 3164 + name = "spin" 3165 + version = "0.9.8" 3166 + source = "registry+https://github.com/rust-lang/crates.io-index" 3167 + checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 3168 + dependencies = [ 3169 + "lock_api", 3170 + ] 3171 + 3172 + [[package]] 3173 + name = "spki" 3174 + version = "0.7.3" 3175 + source = "registry+https://github.com/rust-lang/crates.io-index" 3176 + checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" 3177 + dependencies = [ 3178 + "base64ct", 3179 + "der", 3180 + ] 3181 + 3182 + [[package]] 3183 + name = "sqlx" 3184 + version = "0.8.6" 3185 + source = "registry+https://github.com/rust-lang/crates.io-index" 3186 + checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" 3187 + dependencies = [ 3188 + "sqlx-core", 3189 + "sqlx-macros", 3190 + "sqlx-mysql", 3191 + "sqlx-postgres", 3192 + "sqlx-sqlite", 3193 + ] 3194 + 3195 + [[package]] 3196 + name = "sqlx-core" 3197 + version = "0.8.6" 3198 + source = "registry+https://github.com/rust-lang/crates.io-index" 3199 + checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" 3200 + dependencies = [ 3201 + "base64", 3202 + "bytes", 3203 + "crc", 3204 + "crossbeam-queue", 3205 + "either", 3206 + "event-listener", 3207 + "futures-core", 3208 + "futures-intrusive", 3209 + "futures-io", 3210 + "futures-util", 3211 + "hashbrown 0.15.5", 3212 + "hashlink", 3213 + "indexmap", 3214 + "log", 3215 + "memchr", 3216 + "native-tls", 3217 + "once_cell", 3218 + "percent-encoding", 3219 + "rustls", 3220 + "serde", 3221 + "serde_json", 3222 + "sha2", 3223 + "smallvec", 3224 + "thiserror 2.0.17", 3225 + "tokio", 3226 + "tokio-stream", 3227 + "tracing", 3228 + "url", 3229 + "uuid", 3230 + "webpki-roots 0.26.11", 3231 + ] 3232 + 3233 + [[package]] 3234 + name = "sqlx-macros" 3235 + version = "0.8.6" 3236 + source = "registry+https://github.com/rust-lang/crates.io-index" 3237 + checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" 3238 + dependencies = [ 3239 + "proc-macro2", 3240 + "quote", 3241 + "sqlx-core", 3242 + "sqlx-macros-core", 3243 + "syn", 3244 + ] 3245 + 3246 + [[package]] 3247 + name = "sqlx-macros-core" 3248 + version = "0.8.6" 3249 + source = "registry+https://github.com/rust-lang/crates.io-index" 3250 + checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" 3251 + dependencies = [ 3252 + "dotenvy", 3253 + "either", 3254 + "heck", 3255 + "hex", 3256 + "once_cell", 3257 + "proc-macro2", 3258 + "quote", 3259 + "serde", 3260 + "serde_json", 3261 + "sha2", 3262 + "sqlx-core", 3263 + "sqlx-mysql", 3264 + "sqlx-postgres", 3265 + "sqlx-sqlite", 3266 + "syn", 3267 + "tokio", 3268 + "url", 3269 + ] 3270 + 3271 + [[package]] 3272 + name = "sqlx-mysql" 3273 + version = "0.8.6" 3274 + source = "registry+https://github.com/rust-lang/crates.io-index" 3275 + checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" 3276 + dependencies = [ 3277 + "atoi", 3278 + "base64", 3279 + "bitflags", 3280 + "byteorder", 3281 + "bytes", 3282 + "crc", 3283 + "digest", 3284 + "dotenvy", 3285 + "either", 3286 + "futures-channel", 3287 + "futures-core", 3288 + "futures-io", 3289 + "futures-util", 3290 + "generic-array", 3291 + "hex", 3292 + "hkdf", 3293 + "hmac", 3294 + "itoa", 3295 + "log", 3296 + "md-5", 3297 + "memchr", 3298 + "once_cell", 3299 + "percent-encoding", 3300 + "rand 0.8.5", 3301 + "rsa", 3302 + "serde", 3303 + "sha1", 3304 + "sha2", 3305 + "smallvec", 3306 + "sqlx-core", 3307 + "stringprep", 3308 + "thiserror 2.0.17", 3309 + "tracing", 3310 + "uuid", 3311 + "whoami", 3312 + ] 3313 + 3314 + [[package]] 3315 + name = "sqlx-postgres" 3316 + version = "0.8.6" 3317 + source = "registry+https://github.com/rust-lang/crates.io-index" 3318 + checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" 3319 + dependencies = [ 3320 + "atoi", 3321 + "base64", 3322 + "bitflags", 3323 + "byteorder", 3324 + "crc", 3325 + "dotenvy", 3326 + "etcetera", 3327 + "futures-channel", 3328 + "futures-core", 3329 + "futures-util", 3330 + "hex", 3331 + "hkdf", 3332 + "hmac", 3333 + "home", 3334 + "itoa", 3335 + "log", 3336 + "md-5", 3337 + "memchr", 3338 + "once_cell", 3339 + "rand 0.8.5", 3340 + "serde", 3341 + "serde_json", 3342 + "sha2", 3343 + "smallvec", 3344 + "sqlx-core", 3345 + "stringprep", 3346 + "thiserror 2.0.17", 3347 + "tracing", 3348 + "uuid", 3349 + "whoami", 3350 + ] 3351 + 3352 + [[package]] 3353 + name = "sqlx-sqlite" 3354 + version = "0.8.6" 3355 + source = "registry+https://github.com/rust-lang/crates.io-index" 3356 + checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" 3357 + dependencies = [ 3358 + "atoi", 3359 + "flume", 3360 + "futures-channel", 3361 + "futures-core", 3362 + "futures-executor", 3363 + "futures-intrusive", 3364 + "futures-util", 3365 + "libsqlite3-sys", 3366 + "log", 3367 + "percent-encoding", 3368 + "serde", 3369 + "serde_urlencoded", 3370 + "sqlx-core", 3371 + "thiserror 2.0.17", 3372 + "tracing", 3373 + "url", 3374 + "uuid", 3375 + ] 3376 + 3377 + [[package]] 3378 + name = "stable_deref_trait" 3379 + version = "1.2.1" 3380 + source = "registry+https://github.com/rust-lang/crates.io-index" 3381 + checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" 3382 + 3383 + [[package]] 3384 + name = "stringprep" 3385 + version = "0.1.5" 3386 + source = "registry+https://github.com/rust-lang/crates.io-index" 3387 + checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" 3388 + dependencies = [ 3389 + "unicode-bidi", 3390 + "unicode-normalization", 3391 + "unicode-properties", 3392 + ] 3393 + 3394 + [[package]] 3395 + name = "subtle" 3396 + version = "2.6.1" 3397 + source = "registry+https://github.com/rust-lang/crates.io-index" 3398 + checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 3399 + 3400 + [[package]] 3401 + name = "syn" 3402 + version = "2.0.108" 3403 + source = "registry+https://github.com/rust-lang/crates.io-index" 3404 + checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" 3405 + dependencies = [ 3406 + "proc-macro2", 3407 + "quote", 3408 + "unicode-ident", 3409 + ] 3410 + 3411 + [[package]] 3412 + name = "syn_derive" 3413 + version = "0.2.0" 3414 + source = "registry+https://github.com/rust-lang/crates.io-index" 3415 + checksum = "cdb066a04799e45f5d582e8fc6ec8e6d6896040d00898eb4e6a835196815b219" 3416 + dependencies = [ 3417 + "proc-macro-error2", 3418 + "proc-macro2", 3419 + "quote", 3420 + "syn", 3421 + ] 3422 + 3423 + [[package]] 3424 + name = "sync_wrapper" 3425 + version = "1.0.2" 3426 + source = "registry+https://github.com/rust-lang/crates.io-index" 3427 + checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 3428 + dependencies = [ 3429 + "futures-core", 3430 + ] 3431 + 3432 + [[package]] 3433 + name = "synstructure" 3434 + version = "0.13.2" 3435 + source = "registry+https://github.com/rust-lang/crates.io-index" 3436 + checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 3437 + dependencies = [ 3438 + "proc-macro2", 3439 + "quote", 3440 + "syn", 3441 + ] 3442 + 3443 + [[package]] 3444 + name = "system-configuration" 3445 + version = "0.6.1" 3446 + source = "registry+https://github.com/rust-lang/crates.io-index" 3447 + checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" 3448 + dependencies = [ 3449 + "bitflags", 3450 + "core-foundation 0.9.4", 3451 + "system-configuration-sys", 3452 + ] 3453 + 3454 + [[package]] 3455 + name = "system-configuration-sys" 3456 + version = "0.6.0" 3457 + source = "registry+https://github.com/rust-lang/crates.io-index" 3458 + checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" 3459 + dependencies = [ 3460 + "core-foundation-sys", 3461 + "libc", 3462 + ] 3463 + 3464 + [[package]] 3465 + name = "tachys" 3466 + version = "0.2.10" 3467 + source = "registry+https://github.com/rust-lang/crates.io-index" 3468 + checksum = "f88be37609c1891b748ed1feb9b08b0e772156a80d586b38726253f80859134d" 3469 + dependencies = [ 3470 + "any_spawner", 3471 + "async-trait", 3472 + "const_str_slice_concat", 3473 + "drain_filter_polyfill", 3474 + "either_of", 3475 + "erased", 3476 + "futures", 3477 + "html-escape", 3478 + "indexmap", 3479 + "itertools 0.14.0", 3480 + "js-sys", 3481 + "linear-map", 3482 + "next_tuple", 3483 + "oco_ref", 3484 + "or_poisoned", 3485 + "parking_lot", 3486 + "paste", 3487 + "reactive_graph", 3488 + "reactive_stores", 3489 + "rustc-hash", 3490 + "rustc_version", 3491 + "send_wrapper", 3492 + "slotmap", 3493 + "throw_error", 3494 + "wasm-bindgen", 3495 + "web-sys", 3496 + ] 3497 + 3498 + [[package]] 3499 + name = "tempfile" 3500 + version = "3.23.0" 3501 + source = "registry+https://github.com/rust-lang/crates.io-index" 3502 + checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" 3503 + dependencies = [ 3504 + "fastrand", 3505 + "getrandom 0.3.4", 3506 + "once_cell", 3507 + "rustix", 3508 + "windows-sys 0.61.2", 3509 + ] 3510 + 3511 + [[package]] 3512 + name = "thiserror" 3513 + version = "1.0.69" 3514 + source = "registry+https://github.com/rust-lang/crates.io-index" 3515 + checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 3516 + dependencies = [ 3517 + "thiserror-impl 1.0.69", 3518 + ] 3519 + 3520 + [[package]] 3521 + name = "thiserror" 3522 + version = "2.0.17" 3523 + source = "registry+https://github.com/rust-lang/crates.io-index" 3524 + checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" 3525 + dependencies = [ 3526 + "thiserror-impl 2.0.17", 3527 + ] 3528 + 3529 + [[package]] 3530 + name = "thiserror-impl" 3531 + version = "1.0.69" 3532 + source = "registry+https://github.com/rust-lang/crates.io-index" 3533 + checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 3534 + dependencies = [ 3535 + "proc-macro2", 3536 + "quote", 3537 + "syn", 3538 + ] 3539 + 3540 + [[package]] 3541 + name = "thiserror-impl" 3542 + version = "2.0.17" 3543 + source = "registry+https://github.com/rust-lang/crates.io-index" 3544 + checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" 3545 + dependencies = [ 3546 + "proc-macro2", 3547 + "quote", 3548 + "syn", 3549 + ] 3550 + 3551 + [[package]] 3552 + name = "throw_error" 3553 + version = "0.3.1" 3554 + source = "registry+https://github.com/rust-lang/crates.io-index" 3555 + checksum = "dc0ed6038fcbc0795aca7c92963ddda636573b956679204e044492d2b13c8f64" 3556 + dependencies = [ 3557 + "pin-project-lite", 3558 + ] 3559 + 3560 + [[package]] 3561 + name = "time" 3562 + version = "0.3.44" 3563 + source = "registry+https://github.com/rust-lang/crates.io-index" 3564 + checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" 3565 + dependencies = [ 3566 + "deranged", 3567 + "num-conv", 3568 + "powerfmt", 3569 + "serde", 3570 + "time-core", 3571 + ] 3572 + 3573 + [[package]] 3574 + name = "time-core" 3575 + version = "0.1.6" 3576 + source = "registry+https://github.com/rust-lang/crates.io-index" 3577 + checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" 3578 + 3579 + [[package]] 3580 + name = "tinystr" 3581 + version = "0.8.1" 3582 + source = "registry+https://github.com/rust-lang/crates.io-index" 3583 + checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" 3584 + dependencies = [ 3585 + "displaydoc", 3586 + "zerovec", 3587 + ] 3588 + 3589 + [[package]] 3590 + name = "tinyvec" 3591 + version = "1.10.0" 3592 + source = "registry+https://github.com/rust-lang/crates.io-index" 3593 + checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" 3594 + dependencies = [ 3595 + "tinyvec_macros", 3596 + ] 3597 + 3598 + [[package]] 3599 + name = "tinyvec_macros" 3600 + version = "0.1.1" 3601 + source = "registry+https://github.com/rust-lang/crates.io-index" 3602 + checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 3603 + 3604 + [[package]] 3605 + name = "tokio" 3606 + version = "1.48.0" 3607 + source = "registry+https://github.com/rust-lang/crates.io-index" 3608 + checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" 3609 + dependencies = [ 3610 + "bytes", 3611 + "libc", 3612 + "mio", 3613 + "pin-project-lite", 3614 + "socket2", 3615 + "tokio-macros", 3616 + "windows-sys 0.61.2", 3617 + ] 3618 + 3619 + [[package]] 3620 + name = "tokio-macros" 3621 + version = "2.6.0" 3622 + source = "registry+https://github.com/rust-lang/crates.io-index" 3623 + checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" 3624 + dependencies = [ 3625 + "proc-macro2", 3626 + "quote", 3627 + "syn", 3628 + ] 3629 + 3630 + [[package]] 3631 + name = "tokio-native-tls" 3632 + version = "0.3.1" 3633 + source = "registry+https://github.com/rust-lang/crates.io-index" 3634 + checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" 3635 + dependencies = [ 3636 + "native-tls", 3637 + "tokio", 3638 + ] 3639 + 3640 + [[package]] 3641 + name = "tokio-rustls" 3642 + version = "0.26.4" 3643 + source = "registry+https://github.com/rust-lang/crates.io-index" 3644 + checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" 3645 + dependencies = [ 3646 + "rustls", 3647 + "tokio", 3648 + ] 3649 + 3650 + [[package]] 3651 + name = "tokio-stream" 3652 + version = "0.1.17" 3653 + source = "registry+https://github.com/rust-lang/crates.io-index" 3654 + checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" 3655 + dependencies = [ 3656 + "futures-core", 3657 + "pin-project-lite", 3658 + "tokio", 3659 + ] 3660 + 3661 + [[package]] 3662 + name = "tokio-tungstenite" 3663 + version = "0.28.0" 3664 + source = "registry+https://github.com/rust-lang/crates.io-index" 3665 + checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" 3666 + dependencies = [ 3667 + "futures-util", 3668 + "log", 3669 + "tokio", 3670 + "tungstenite", 3671 + ] 3672 + 3673 + [[package]] 3674 + name = "tokio-util" 3675 + version = "0.7.16" 3676 + source = "registry+https://github.com/rust-lang/crates.io-index" 3677 + checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" 3678 + dependencies = [ 3679 + "bytes", 3680 + "futures-core", 3681 + "futures-sink", 3682 + "pin-project-lite", 3683 + "tokio", 3684 + ] 3685 + 3686 + [[package]] 3687 + name = "toml" 3688 + version = "0.9.8" 3689 + source = "registry+https://github.com/rust-lang/crates.io-index" 3690 + checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" 3691 + dependencies = [ 3692 + "serde_core", 3693 + "serde_spanned", 3694 + "toml_datetime", 3695 + "toml_parser", 3696 + "winnow", 3697 + ] 3698 + 3699 + [[package]] 3700 + name = "toml_datetime" 3701 + version = "0.7.3" 3702 + source = "registry+https://github.com/rust-lang/crates.io-index" 3703 + checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" 3704 + dependencies = [ 3705 + "serde_core", 3706 + ] 3707 + 3708 + [[package]] 3709 + name = "toml_parser" 3710 + version = "1.0.4" 3711 + source = "registry+https://github.com/rust-lang/crates.io-index" 3712 + checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" 3713 + dependencies = [ 3714 + "winnow", 3715 + ] 3716 + 3717 + [[package]] 3718 + name = "tower" 3719 + version = "0.5.2" 3720 + source = "registry+https://github.com/rust-lang/crates.io-index" 3721 + checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" 3722 + dependencies = [ 3723 + "futures-core", 3724 + "futures-util", 3725 + "pin-project-lite", 3726 + "sync_wrapper", 3727 + "tokio", 3728 + "tower-layer", 3729 + "tower-service", 3730 + "tracing", 3731 + ] 3732 + 3733 + [[package]] 3734 + name = "tower-http" 3735 + version = "0.6.6" 3736 + source = "registry+https://github.com/rust-lang/crates.io-index" 3737 + checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" 3738 + dependencies = [ 3739 + "bitflags", 3740 + "bytes", 3741 + "futures-core", 3742 + "futures-util", 3743 + "http", 3744 + "http-body", 3745 + "http-body-util", 3746 + "http-range-header", 3747 + "httpdate", 3748 + "iri-string", 3749 + "mime", 3750 + "mime_guess", 3751 + "percent-encoding", 3752 + "pin-project-lite", 3753 + "tokio", 3754 + "tokio-util", 3755 + "tower", 3756 + "tower-layer", 3757 + "tower-service", 3758 + "tracing", 3759 + ] 3760 + 3761 + [[package]] 3762 + name = "tower-layer" 3763 + version = "0.3.3" 3764 + source = "registry+https://github.com/rust-lang/crates.io-index" 3765 + checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" 3766 + 3767 + [[package]] 3768 + name = "tower-service" 3769 + version = "0.3.3" 3770 + source = "registry+https://github.com/rust-lang/crates.io-index" 3771 + checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 3772 + 3773 + [[package]] 3774 + name = "tracing" 3775 + version = "0.1.41" 3776 + source = "registry+https://github.com/rust-lang/crates.io-index" 3777 + checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 3778 + dependencies = [ 3779 + "log", 3780 + "pin-project-lite", 3781 + "tracing-attributes", 3782 + "tracing-core", 3783 + ] 3784 + 3785 + [[package]] 3786 + name = "tracing-attributes" 3787 + version = "0.1.30" 3788 + source = "registry+https://github.com/rust-lang/crates.io-index" 3789 + checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" 3790 + dependencies = [ 3791 + "proc-macro2", 3792 + "quote", 3793 + "syn", 3794 + ] 3795 + 3796 + [[package]] 3797 + name = "tracing-core" 3798 + version = "0.1.34" 3799 + source = "registry+https://github.com/rust-lang/crates.io-index" 3800 + checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" 3801 + dependencies = [ 3802 + "once_cell", 3803 + ] 3804 + 3805 + [[package]] 3806 + name = "try-lock" 3807 + version = "0.2.5" 3808 + source = "registry+https://github.com/rust-lang/crates.io-index" 3809 + checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 3810 + 3811 + [[package]] 3812 + name = "tungstenite" 3813 + version = "0.28.0" 3814 + source = "registry+https://github.com/rust-lang/crates.io-index" 3815 + checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" 3816 + dependencies = [ 3817 + "bytes", 3818 + "data-encoding", 3819 + "http", 3820 + "httparse", 3821 + "log", 3822 + "rand 0.9.2", 3823 + "sha1", 3824 + "thiserror 2.0.17", 3825 + "utf-8", 3826 + ] 3827 + 3828 + [[package]] 3829 + name = "typed-builder" 3830 + version = "0.21.2" 3831 + source = "registry+https://github.com/rust-lang/crates.io-index" 3832 + checksum = "fef81aec2ca29576f9f6ae8755108640d0a86dd3161b2e8bca6cfa554e98f77d" 3833 + dependencies = [ 3834 + "typed-builder-macro", 3835 + ] 3836 + 3837 + [[package]] 3838 + name = "typed-builder-macro" 3839 + version = "0.21.2" 3840 + source = "registry+https://github.com/rust-lang/crates.io-index" 3841 + checksum = "1ecb9ecf7799210407c14a8cfdfe0173365780968dc57973ed082211958e0b18" 3842 + dependencies = [ 3843 + "proc-macro2", 3844 + "quote", 3845 + "syn", 3846 + ] 3847 + 3848 + [[package]] 3849 + name = "typenum" 3850 + version = "1.19.0" 3851 + source = "registry+https://github.com/rust-lang/crates.io-index" 3852 + checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" 3853 + 3854 + [[package]] 3855 + name = "unicase" 3856 + version = "2.8.1" 3857 + source = "registry+https://github.com/rust-lang/crates.io-index" 3858 + checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" 3859 + 3860 + [[package]] 3861 + name = "unicode-bidi" 3862 + version = "0.3.18" 3863 + source = "registry+https://github.com/rust-lang/crates.io-index" 3864 + checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" 3865 + 3866 + [[package]] 3867 + name = "unicode-ident" 3868 + version = "1.0.20" 3869 + source = "registry+https://github.com/rust-lang/crates.io-index" 3870 + checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" 3871 + 3872 + [[package]] 3873 + name = "unicode-normalization" 3874 + version = "0.1.24" 3875 + source = "registry+https://github.com/rust-lang/crates.io-index" 3876 + checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" 3877 + dependencies = [ 3878 + "tinyvec", 3879 + ] 3880 + 3881 + [[package]] 3882 + name = "unicode-properties" 3883 + version = "0.1.3" 3884 + source = "registry+https://github.com/rust-lang/crates.io-index" 3885 + checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" 3886 + 3887 + [[package]] 3888 + name = "unicode-segmentation" 3889 + version = "1.12.0" 3890 + source = "registry+https://github.com/rust-lang/crates.io-index" 3891 + checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" 3892 + 3893 + [[package]] 3894 + name = "unicode-xid" 3895 + version = "0.2.6" 3896 + source = "registry+https://github.com/rust-lang/crates.io-index" 3897 + checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 3898 + 3899 + [[package]] 3900 + name = "untrusted" 3901 + version = "0.9.0" 3902 + source = "registry+https://github.com/rust-lang/crates.io-index" 3903 + checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 3904 + 3905 + [[package]] 3906 + name = "url" 3907 + version = "2.5.7" 3908 + source = "registry+https://github.com/rust-lang/crates.io-index" 3909 + checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" 3910 + dependencies = [ 3911 + "form_urlencoded", 3912 + "idna", 3913 + "percent-encoding", 3914 + "serde", 3915 + ] 3916 + 3917 + [[package]] 3918 + name = "utf-8" 3919 + version = "0.7.6" 3920 + source = "registry+https://github.com/rust-lang/crates.io-index" 3921 + checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 3922 + 3923 + [[package]] 3924 + name = "utf8-width" 3925 + version = "0.1.7" 3926 + source = "registry+https://github.com/rust-lang/crates.io-index" 3927 + checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" 3928 + 3929 + [[package]] 3930 + name = "utf8_iter" 3931 + version = "1.0.4" 3932 + source = "registry+https://github.com/rust-lang/crates.io-index" 3933 + checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 3934 + 3935 + [[package]] 3936 + name = "uuid" 3937 + version = "1.18.1" 3938 + source = "registry+https://github.com/rust-lang/crates.io-index" 3939 + checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" 3940 + dependencies = [ 3941 + "getrandom 0.3.4", 3942 + "js-sys", 3943 + "serde", 3944 + "wasm-bindgen", 3945 + ] 3946 + 3947 + [[package]] 3948 + name = "vcpkg" 3949 + version = "0.2.15" 3950 + source = "registry+https://github.com/rust-lang/crates.io-index" 3951 + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 3952 + 3953 + [[package]] 3954 + name = "version_check" 3955 + version = "0.9.5" 3956 + source = "registry+https://github.com/rust-lang/crates.io-index" 3957 + checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 3958 + 3959 + [[package]] 3960 + name = "walkdir" 3961 + version = "2.5.0" 3962 + source = "registry+https://github.com/rust-lang/crates.io-index" 3963 + checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 3964 + dependencies = [ 3965 + "same-file", 3966 + "winapi-util", 3967 + ] 3968 + 3969 + [[package]] 3970 + name = "want" 3971 + version = "0.3.1" 3972 + source = "registry+https://github.com/rust-lang/crates.io-index" 3973 + checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 3974 + dependencies = [ 3975 + "try-lock", 3976 + ] 3977 + 3978 + [[package]] 3979 + name = "wasi" 3980 + version = "0.11.1+wasi-snapshot-preview1" 3981 + source = "registry+https://github.com/rust-lang/crates.io-index" 3982 + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 3983 + 3984 + [[package]] 3985 + name = "wasip2" 3986 + version = "1.0.1+wasi-0.2.4" 3987 + source = "registry+https://github.com/rust-lang/crates.io-index" 3988 + checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" 3989 + dependencies = [ 3990 + "wit-bindgen", 3991 + ] 3992 + 3993 + [[package]] 3994 + name = "wasite" 3995 + version = "0.1.0" 3996 + source = "registry+https://github.com/rust-lang/crates.io-index" 3997 + checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" 3998 + 3999 + [[package]] 4000 + name = "wasm-bindgen" 4001 + version = "0.2.100" 4002 + source = "registry+https://github.com/rust-lang/crates.io-index" 4003 + checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 4004 + dependencies = [ 4005 + "cfg-if", 4006 + "once_cell", 4007 + "rustversion", 4008 + "wasm-bindgen-macro", 4009 + ] 4010 + 4011 + [[package]] 4012 + name = "wasm-bindgen-backend" 4013 + version = "0.2.100" 4014 + source = "registry+https://github.com/rust-lang/crates.io-index" 4015 + checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" 4016 + dependencies = [ 4017 + "bumpalo", 4018 + "log", 4019 + "proc-macro2", 4020 + "quote", 4021 + "syn", 4022 + "wasm-bindgen-shared", 4023 + ] 4024 + 4025 + [[package]] 4026 + name = "wasm-bindgen-futures" 4027 + version = "0.4.50" 4028 + source = "registry+https://github.com/rust-lang/crates.io-index" 4029 + checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" 4030 + dependencies = [ 4031 + "cfg-if", 4032 + "js-sys", 4033 + "once_cell", 4034 + "wasm-bindgen", 4035 + "web-sys", 4036 + ] 4037 + 4038 + [[package]] 4039 + name = "wasm-bindgen-macro" 4040 + version = "0.2.100" 4041 + source = "registry+https://github.com/rust-lang/crates.io-index" 4042 + checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" 4043 + dependencies = [ 4044 + "quote", 4045 + "wasm-bindgen-macro-support", 4046 + ] 4047 + 4048 + [[package]] 4049 + name = "wasm-bindgen-macro-support" 4050 + version = "0.2.100" 4051 + source = "registry+https://github.com/rust-lang/crates.io-index" 4052 + checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" 4053 + dependencies = [ 4054 + "proc-macro2", 4055 + "quote", 4056 + "syn", 4057 + "wasm-bindgen-backend", 4058 + "wasm-bindgen-shared", 4059 + ] 4060 + 4061 + [[package]] 4062 + name = "wasm-bindgen-shared" 4063 + version = "0.2.100" 4064 + source = "registry+https://github.com/rust-lang/crates.io-index" 4065 + checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" 4066 + dependencies = [ 4067 + "unicode-ident", 4068 + ] 4069 + 4070 + [[package]] 4071 + name = "wasm-streams" 4072 + version = "0.4.2" 4073 + source = "registry+https://github.com/rust-lang/crates.io-index" 4074 + checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" 4075 + dependencies = [ 4076 + "futures-util", 4077 + "js-sys", 4078 + "wasm-bindgen", 4079 + "wasm-bindgen-futures", 4080 + "web-sys", 4081 + ] 4082 + 4083 + [[package]] 4084 + name = "wasm_split_helpers" 4085 + version = "0.1.2" 4086 + source = "registry+https://github.com/rust-lang/crates.io-index" 4087 + checksum = "c50e0e45d0d871605a21fc4ee93a5380b7bdc41b5eda22e42f0777a4ce79b65c" 4088 + dependencies = [ 4089 + "async-once-cell", 4090 + "or_poisoned", 4091 + "wasm_split_macros", 4092 + ] 4093 + 4094 + [[package]] 4095 + name = "wasm_split_macros" 4096 + version = "0.1.3" 4097 + source = "registry+https://github.com/rust-lang/crates.io-index" 4098 + checksum = "aecbaea69b61abedb9b8199720e65a529a2dd2294d27113bfa1b7c1db598f672" 4099 + dependencies = [ 4100 + "base16", 4101 + "digest", 4102 + "quote", 4103 + "sha2", 4104 + "syn", 4105 + "wasm-bindgen", 4106 + ] 4107 + 4108 + [[package]] 4109 + name = "web-sys" 4110 + version = "0.3.77" 4111 + source = "registry+https://github.com/rust-lang/crates.io-index" 4112 + checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" 4113 + dependencies = [ 4114 + "js-sys", 4115 + "wasm-bindgen", 4116 + ] 4117 + 4118 + [[package]] 4119 + name = "web-time" 4120 + version = "1.1.0" 4121 + source = "registry+https://github.com/rust-lang/crates.io-index" 4122 + checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 4123 + dependencies = [ 4124 + "js-sys", 4125 + "wasm-bindgen", 4126 + ] 4127 + 4128 + [[package]] 4129 + name = "webpki-roots" 4130 + version = "0.26.11" 4131 + source = "registry+https://github.com/rust-lang/crates.io-index" 4132 + checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" 4133 + dependencies = [ 4134 + "webpki-roots 1.0.3", 4135 + ] 4136 + 4137 + [[package]] 4138 + name = "webpki-roots" 4139 + version = "1.0.3" 4140 + source = "registry+https://github.com/rust-lang/crates.io-index" 4141 + checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" 4142 + dependencies = [ 4143 + "rustls-pki-types", 4144 + ] 4145 + 4146 + [[package]] 4147 + name = "whoami" 4148 + version = "1.6.1" 4149 + source = "registry+https://github.com/rust-lang/crates.io-index" 4150 + checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" 4151 + dependencies = [ 4152 + "libredox", 4153 + "wasite", 4154 + ] 4155 + 4156 + [[package]] 4157 + name = "winapi-util" 4158 + version = "0.1.11" 4159 + source = "registry+https://github.com/rust-lang/crates.io-index" 4160 + checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" 4161 + dependencies = [ 4162 + "windows-sys 0.61.2", 4163 + ] 4164 + 4165 + [[package]] 4166 + name = "windows-core" 4167 + version = "0.62.2" 4168 + source = "registry+https://github.com/rust-lang/crates.io-index" 4169 + checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" 4170 + dependencies = [ 4171 + "windows-implement", 4172 + "windows-interface", 4173 + "windows-link 0.2.1", 4174 + "windows-result 0.4.1", 4175 + "windows-strings 0.5.1", 4176 + ] 4177 + 4178 + [[package]] 4179 + name = "windows-implement" 4180 + version = "0.60.2" 4181 + source = "registry+https://github.com/rust-lang/crates.io-index" 4182 + checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" 4183 + dependencies = [ 4184 + "proc-macro2", 4185 + "quote", 4186 + "syn", 4187 + ] 4188 + 4189 + [[package]] 4190 + name = "windows-interface" 4191 + version = "0.59.3" 4192 + source = "registry+https://github.com/rust-lang/crates.io-index" 4193 + checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" 4194 + dependencies = [ 4195 + "proc-macro2", 4196 + "quote", 4197 + "syn", 4198 + ] 4199 + 4200 + [[package]] 4201 + name = "windows-link" 4202 + version = "0.1.3" 4203 + source = "registry+https://github.com/rust-lang/crates.io-index" 4204 + checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" 4205 + 4206 + [[package]] 4207 + name = "windows-link" 4208 + version = "0.2.1" 4209 + source = "registry+https://github.com/rust-lang/crates.io-index" 4210 + checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" 4211 + 4212 + [[package]] 4213 + name = "windows-registry" 4214 + version = "0.5.3" 4215 + source = "registry+https://github.com/rust-lang/crates.io-index" 4216 + checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" 4217 + dependencies = [ 4218 + "windows-link 0.1.3", 4219 + "windows-result 0.3.4", 4220 + "windows-strings 0.4.2", 4221 + ] 4222 + 4223 + [[package]] 4224 + name = "windows-result" 4225 + version = "0.3.4" 4226 + source = "registry+https://github.com/rust-lang/crates.io-index" 4227 + checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" 4228 + dependencies = [ 4229 + "windows-link 0.1.3", 4230 + ] 4231 + 4232 + [[package]] 4233 + name = "windows-result" 4234 + version = "0.4.1" 4235 + source = "registry+https://github.com/rust-lang/crates.io-index" 4236 + checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" 4237 + dependencies = [ 4238 + "windows-link 0.2.1", 4239 + ] 4240 + 4241 + [[package]] 4242 + name = "windows-strings" 4243 + version = "0.4.2" 4244 + source = "registry+https://github.com/rust-lang/crates.io-index" 4245 + checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" 4246 + dependencies = [ 4247 + "windows-link 0.1.3", 4248 + ] 4249 + 4250 + [[package]] 4251 + name = "windows-strings" 4252 + version = "0.5.1" 4253 + source = "registry+https://github.com/rust-lang/crates.io-index" 4254 + checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" 4255 + dependencies = [ 4256 + "windows-link 0.2.1", 4257 + ] 4258 + 4259 + [[package]] 4260 + name = "windows-sys" 4261 + version = "0.48.0" 4262 + source = "registry+https://github.com/rust-lang/crates.io-index" 4263 + checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 4264 + dependencies = [ 4265 + "windows-targets 0.48.5", 4266 + ] 4267 + 4268 + [[package]] 4269 + name = "windows-sys" 4270 + version = "0.52.0" 4271 + source = "registry+https://github.com/rust-lang/crates.io-index" 4272 + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 4273 + dependencies = [ 4274 + "windows-targets 0.52.6", 4275 + ] 4276 + 4277 + [[package]] 4278 + name = "windows-sys" 4279 + version = "0.60.2" 4280 + source = "registry+https://github.com/rust-lang/crates.io-index" 4281 + checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" 4282 + dependencies = [ 4283 + "windows-targets 0.53.5", 4284 + ] 4285 + 4286 + [[package]] 4287 + name = "windows-sys" 4288 + version = "0.61.2" 4289 + source = "registry+https://github.com/rust-lang/crates.io-index" 4290 + checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" 4291 + dependencies = [ 4292 + "windows-link 0.2.1", 4293 + ] 4294 + 4295 + [[package]] 4296 + name = "windows-targets" 4297 + version = "0.48.5" 4298 + source = "registry+https://github.com/rust-lang/crates.io-index" 4299 + checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 4300 + dependencies = [ 4301 + "windows_aarch64_gnullvm 0.48.5", 4302 + "windows_aarch64_msvc 0.48.5", 4303 + "windows_i686_gnu 0.48.5", 4304 + "windows_i686_msvc 0.48.5", 4305 + "windows_x86_64_gnu 0.48.5", 4306 + "windows_x86_64_gnullvm 0.48.5", 4307 + "windows_x86_64_msvc 0.48.5", 4308 + ] 4309 + 4310 + [[package]] 4311 + name = "windows-targets" 4312 + version = "0.52.6" 4313 + source = "registry+https://github.com/rust-lang/crates.io-index" 4314 + checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 4315 + dependencies = [ 4316 + "windows_aarch64_gnullvm 0.52.6", 4317 + "windows_aarch64_msvc 0.52.6", 4318 + "windows_i686_gnu 0.52.6", 4319 + "windows_i686_gnullvm 0.52.6", 4320 + "windows_i686_msvc 0.52.6", 4321 + "windows_x86_64_gnu 0.52.6", 4322 + "windows_x86_64_gnullvm 0.52.6", 4323 + "windows_x86_64_msvc 0.52.6", 4324 + ] 4325 + 4326 + [[package]] 4327 + name = "windows-targets" 4328 + version = "0.53.5" 4329 + source = "registry+https://github.com/rust-lang/crates.io-index" 4330 + checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" 4331 + dependencies = [ 4332 + "windows-link 0.2.1", 4333 + "windows_aarch64_gnullvm 0.53.1", 4334 + "windows_aarch64_msvc 0.53.1", 4335 + "windows_i686_gnu 0.53.1", 4336 + "windows_i686_gnullvm 0.53.1", 4337 + "windows_i686_msvc 0.53.1", 4338 + "windows_x86_64_gnu 0.53.1", 4339 + "windows_x86_64_gnullvm 0.53.1", 4340 + "windows_x86_64_msvc 0.53.1", 4341 + ] 4342 + 4343 + [[package]] 4344 + name = "windows_aarch64_gnullvm" 4345 + version = "0.48.5" 4346 + source = "registry+https://github.com/rust-lang/crates.io-index" 4347 + checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 4348 + 4349 + [[package]] 4350 + name = "windows_aarch64_gnullvm" 4351 + version = "0.52.6" 4352 + source = "registry+https://github.com/rust-lang/crates.io-index" 4353 + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 4354 + 4355 + [[package]] 4356 + name = "windows_aarch64_gnullvm" 4357 + version = "0.53.1" 4358 + source = "registry+https://github.com/rust-lang/crates.io-index" 4359 + checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" 4360 + 4361 + [[package]] 4362 + name = "windows_aarch64_msvc" 4363 + version = "0.48.5" 4364 + source = "registry+https://github.com/rust-lang/crates.io-index" 4365 + checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 4366 + 4367 + [[package]] 4368 + name = "windows_aarch64_msvc" 4369 + version = "0.52.6" 4370 + source = "registry+https://github.com/rust-lang/crates.io-index" 4371 + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 4372 + 4373 + [[package]] 4374 + name = "windows_aarch64_msvc" 4375 + version = "0.53.1" 4376 + source = "registry+https://github.com/rust-lang/crates.io-index" 4377 + checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" 4378 + 4379 + [[package]] 4380 + name = "windows_i686_gnu" 4381 + version = "0.48.5" 4382 + source = "registry+https://github.com/rust-lang/crates.io-index" 4383 + checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 4384 + 4385 + [[package]] 4386 + name = "windows_i686_gnu" 4387 + version = "0.52.6" 4388 + source = "registry+https://github.com/rust-lang/crates.io-index" 4389 + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 4390 + 4391 + [[package]] 4392 + name = "windows_i686_gnu" 4393 + version = "0.53.1" 4394 + source = "registry+https://github.com/rust-lang/crates.io-index" 4395 + checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" 4396 + 4397 + [[package]] 4398 + name = "windows_i686_gnullvm" 4399 + version = "0.52.6" 4400 + source = "registry+https://github.com/rust-lang/crates.io-index" 4401 + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 4402 + 4403 + [[package]] 4404 + name = "windows_i686_gnullvm" 4405 + version = "0.53.1" 4406 + source = "registry+https://github.com/rust-lang/crates.io-index" 4407 + checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" 4408 + 4409 + [[package]] 4410 + name = "windows_i686_msvc" 4411 + version = "0.48.5" 4412 + source = "registry+https://github.com/rust-lang/crates.io-index" 4413 + checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 4414 + 4415 + [[package]] 4416 + name = "windows_i686_msvc" 4417 + version = "0.52.6" 4418 + source = "registry+https://github.com/rust-lang/crates.io-index" 4419 + checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 4420 + 4421 + [[package]] 4422 + name = "windows_i686_msvc" 4423 + version = "0.53.1" 4424 + source = "registry+https://github.com/rust-lang/crates.io-index" 4425 + checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" 4426 + 4427 + [[package]] 4428 + name = "windows_x86_64_gnu" 4429 + version = "0.48.5" 4430 + source = "registry+https://github.com/rust-lang/crates.io-index" 4431 + checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 4432 + 4433 + [[package]] 4434 + name = "windows_x86_64_gnu" 4435 + version = "0.52.6" 4436 + source = "registry+https://github.com/rust-lang/crates.io-index" 4437 + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 4438 + 4439 + [[package]] 4440 + name = "windows_x86_64_gnu" 4441 + version = "0.53.1" 4442 + source = "registry+https://github.com/rust-lang/crates.io-index" 4443 + checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" 4444 + 4445 + [[package]] 4446 + name = "windows_x86_64_gnullvm" 4447 + version = "0.48.5" 4448 + source = "registry+https://github.com/rust-lang/crates.io-index" 4449 + checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 4450 + 4451 + [[package]] 4452 + name = "windows_x86_64_gnullvm" 4453 + version = "0.52.6" 4454 + source = "registry+https://github.com/rust-lang/crates.io-index" 4455 + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 4456 + 4457 + [[package]] 4458 + name = "windows_x86_64_gnullvm" 4459 + version = "0.53.1" 4460 + source = "registry+https://github.com/rust-lang/crates.io-index" 4461 + checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" 4462 + 4463 + [[package]] 4464 + name = "windows_x86_64_msvc" 4465 + version = "0.48.5" 4466 + source = "registry+https://github.com/rust-lang/crates.io-index" 4467 + checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 4468 + 4469 + [[package]] 4470 + name = "windows_x86_64_msvc" 4471 + version = "0.52.6" 4472 + source = "registry+https://github.com/rust-lang/crates.io-index" 4473 + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 4474 + 4475 + [[package]] 4476 + name = "windows_x86_64_msvc" 4477 + version = "0.53.1" 4478 + source = "registry+https://github.com/rust-lang/crates.io-index" 4479 + checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" 4480 + 4481 + [[package]] 4482 + name = "winnow" 4483 + version = "0.7.13" 4484 + source = "registry+https://github.com/rust-lang/crates.io-index" 4485 + checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" 4486 + dependencies = [ 4487 + "memchr", 4488 + ] 4489 + 4490 + [[package]] 4491 + name = "wit-bindgen" 4492 + version = "0.46.0" 4493 + source = "registry+https://github.com/rust-lang/crates.io-index" 4494 + checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" 4495 + 4496 + [[package]] 4497 + name = "writeable" 4498 + version = "0.6.1" 4499 + source = "registry+https://github.com/rust-lang/crates.io-index" 4500 + checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" 4501 + 4502 + [[package]] 4503 + name = "xxhash-rust" 4504 + version = "0.8.15" 4505 + source = "registry+https://github.com/rust-lang/crates.io-index" 4506 + checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" 4507 + 4508 + [[package]] 4509 + name = "yansi" 4510 + version = "1.0.1" 4511 + source = "registry+https://github.com/rust-lang/crates.io-index" 4512 + checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" 4513 + 4514 + [[package]] 4515 + name = "yoke" 4516 + version = "0.8.0" 4517 + source = "registry+https://github.com/rust-lang/crates.io-index" 4518 + checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" 4519 + dependencies = [ 4520 + "serde", 4521 + "stable_deref_trait", 4522 + "yoke-derive", 4523 + "zerofrom", 4524 + ] 4525 + 4526 + [[package]] 4527 + name = "yoke-derive" 4528 + version = "0.8.0" 4529 + source = "registry+https://github.com/rust-lang/crates.io-index" 4530 + checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" 4531 + dependencies = [ 4532 + "proc-macro2", 4533 + "quote", 4534 + "syn", 4535 + "synstructure", 4536 + ] 4537 + 4538 + [[package]] 4539 + name = "zerocopy" 4540 + version = "0.8.27" 4541 + source = "registry+https://github.com/rust-lang/crates.io-index" 4542 + checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" 4543 + dependencies = [ 4544 + "zerocopy-derive", 4545 + ] 4546 + 4547 + [[package]] 4548 + name = "zerocopy-derive" 4549 + version = "0.8.27" 4550 + source = "registry+https://github.com/rust-lang/crates.io-index" 4551 + checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" 4552 + dependencies = [ 4553 + "proc-macro2", 4554 + "quote", 4555 + "syn", 4556 + ] 4557 + 4558 + [[package]] 4559 + name = "zerofrom" 4560 + version = "0.1.6" 4561 + source = "registry+https://github.com/rust-lang/crates.io-index" 4562 + checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 4563 + dependencies = [ 4564 + "zerofrom-derive", 4565 + ] 4566 + 4567 + [[package]] 4568 + name = "zerofrom-derive" 4569 + version = "0.1.6" 4570 + source = "registry+https://github.com/rust-lang/crates.io-index" 4571 + checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 4572 + dependencies = [ 4573 + "proc-macro2", 4574 + "quote", 4575 + "syn", 4576 + "synstructure", 4577 + ] 4578 + 4579 + [[package]] 4580 + name = "zeroize" 4581 + version = "1.8.2" 4582 + source = "registry+https://github.com/rust-lang/crates.io-index" 4583 + checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" 4584 + 4585 + [[package]] 4586 + name = "zerotrie" 4587 + version = "0.2.2" 4588 + source = "registry+https://github.com/rust-lang/crates.io-index" 4589 + checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" 4590 + dependencies = [ 4591 + "displaydoc", 4592 + "yoke", 4593 + "zerofrom", 4594 + ] 4595 + 4596 + [[package]] 4597 + name = "zerovec" 4598 + version = "0.11.4" 4599 + source = "registry+https://github.com/rust-lang/crates.io-index" 4600 + checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" 4601 + dependencies = [ 4602 + "yoke", 4603 + "zerofrom", 4604 + "zerovec-derive", 4605 + ] 4606 + 4607 + [[package]] 4608 + name = "zerovec-derive" 4609 + version = "0.11.1" 4610 + source = "registry+https://github.com/rust-lang/crates.io-index" 4611 + checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" 4612 + dependencies = [ 4613 + "proc-macro2", 4614 + "quote", 4615 + "syn", 4616 + ] 4617 + 4618 + [[package]] 4619 + name = "zstd" 4620 + version = "0.13.3" 4621 + source = "registry+https://github.com/rust-lang/crates.io-index" 4622 + checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" 4623 + dependencies = [ 4624 + "zstd-safe", 4625 + ] 4626 + 4627 + [[package]] 4628 + name = "zstd-safe" 4629 + version = "7.2.4" 4630 + source = "registry+https://github.com/rust-lang/crates.io-index" 4631 + checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" 4632 + dependencies = [ 4633 + "zstd-sys", 4634 + ] 4635 + 4636 + [[package]] 4637 + name = "zstd-sys" 4638 + version = "2.0.16+zstd.1.5.7" 4639 + source = "registry+https://github.com/rust-lang/crates.io-index" 4640 + checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" 4641 + dependencies = [ 4642 + "cc", 4643 + "pkg-config", 4644 + ]
+115
Cargo.toml
··· 1 + [package] 2 + name = "calpoll" 3 + version = "0.1.0" 4 + edition = "2024" 5 + 6 + [lib] 7 + crate-type = ["cdylib", "rlib"] 8 + 9 + [dependencies] 10 + leptos = { version = "0.8.0" } 11 + leptos_router = { version = "0.8.0" } 12 + axum = { version = "0.8.0", optional = true } 13 + console_error_panic_hook = { version = "0.1", optional = true } 14 + leptos_axum = { version = "0.8.0", optional = true } 15 + leptos_meta = { version = "0.8.0" } 16 + tokio = { version = "1", features = ["rt-multi-thread"], optional = true } 17 + wasm-bindgen = { version = "=0.2.100", optional = true } 18 + sqlx = { version = "0.8.6", features = ["runtime-tokio", "tls-native-tls", "postgres", "uuid", "macros", "tls-rustls-ring-webpki"], optional = true } 19 + uuid = { version = "1.18.1", features = ["js", "serde", "v4"], optional = true } 20 + anyhow = "1.0.100" 21 + reqwest = { version = "0.12.24", features = ["rustls-tls-webpki-roots", "charset", "http2"], optional = true } 22 + icalendar = { version = "0.17.5", features = ["parser", "serde", "chrono-tz", "time",], optional = true } 23 + fast-dav-rs = { version = "0.1.0", optional = true } 24 + rustls = { version = "0.23.34", features = ["ring"], optional = true } 25 + 26 + [features] 27 + hydrate = [ 28 + "leptos/hydrate", 29 + "dep:console_error_panic_hook", 30 + "dep:wasm-bindgen", 31 + ] 32 + ssr = [ 33 + "dep:axum", 34 + "dep:fast-dav-rs", 35 + "dep:icalendar", 36 + "dep:leptos_axum", 37 + "dep:reqwest", 38 + "dep:rustls", 39 + "dep:sqlx", 40 + "dep:tokio", 41 + "dep:uuid", 42 + "leptos/ssr", 43 + "leptos_meta/ssr", 44 + "leptos_router/ssr", 45 + ] 46 + 47 + # Defines a size-optimized profile for the WASM bundle in release mode 48 + [profile.wasm-release] 49 + inherits = "release" 50 + opt-level = 'z' 51 + lto = true 52 + codegen-units = 1 53 + panic = "abort" 54 + 55 + [package.metadata.leptos] 56 + # The name used by wasm-bindgen/cargo-leptos for the JS/WASM bundle. Defaults to the crate name 57 + output-name = "calpoll" 58 + 59 + # The site root folder is where cargo-leptos generate all output. WARNING: all content of this folder will be erased on a rebuild. Use it in your server setup. 60 + site-root = "target/site" 61 + 62 + # The site-root relative folder where all compiled output (JS, WASM and CSS) is written 63 + # Defaults to pkg 64 + site-pkg-dir = "pkg" 65 + 66 + # [Optional] The source CSS file. If it ends with .sass or .scss then it will be compiled by dart-sass into CSS. The CSS is optimized by Lightning CSS before being written to <site-root>/<site-pkg>/app.css 67 + style-file = "style/main.scss" 68 + # Assets source dir. All files found here will be copied and synchronized to site-root. 69 + # The assets-dir cannot have a sub directory with the same name/path as site-pkg-dir. 70 + # 71 + # Optional. Env: LEPTOS_ASSETS_DIR. 72 + assets-dir = "public" 73 + 74 + # The IP and port (ex: 127.0.0.1:3000) where the server serves the content. Use it in your server setup. 75 + site-addr = "127.0.0.1:3000" 76 + 77 + # The port to use for automatic reload monitoring 78 + reload-port = 3001 79 + 80 + # [Optional] Command to use when running end2end tests. It will run in the end2end dir. 81 + # [Windows] for non-WSL use "npx.cmd playwright test" 82 + # This binary name can be checked in Powershell with Get-Command npx 83 + end2end-cmd = "npx playwright test" 84 + end2end-dir = "end2end" 85 + 86 + # The browserlist query used for optimizing the CSS. 87 + browserquery = "defaults" 88 + 89 + # The environment Leptos will run in, usually either "DEV" or "PROD" 90 + env = "DEV" 91 + 92 + # The features to use when compiling the bin target 93 + # 94 + # Optional. Can be over-ridden with the command line parameter --bin-features 95 + bin-features = ["ssr"] 96 + 97 + # If the --no-default-features flag should be used when compiling the bin target 98 + # 99 + # Optional. Defaults to false. 100 + bin-default-features = false 101 + 102 + # The features to use when compiling the lib target 103 + # 104 + # Optional. Can be over-ridden with the command line parameter --lib-features 105 + lib-features = ["hydrate"] 106 + 107 + # If the --no-default-features flag should be used when compiling the lib target 108 + # 109 + # Optional. Defaults to false. 110 + lib-default-features = false 111 + 112 + # The profile to use for the lib target when compiling for release 113 + # 114 + # Optional. Defaults to "release". 115 + lib-profile-release = "wasm-release"
+5
build.rs
··· 1 + // generated by `sqlx migrate build-script` 2 + fn main() { 3 + // trigger recompilation when a new migration is added 4 + println!("cargo:rerun-if-changed=migrations"); 5 + }
+103
devenv.lock
··· 1 + { 2 + "nodes": { 3 + "devenv": { 4 + "locked": { 5 + "dir": "src/modules", 6 + "lastModified": 1761427990, 7 + "owner": "cachix", 8 + "repo": "devenv", 9 + "rev": "7419c04fc798d5d5918413d4cb6c8629f9d4e8a3", 10 + "type": "github" 11 + }, 12 + "original": { 13 + "dir": "src/modules", 14 + "owner": "cachix", 15 + "repo": "devenv", 16 + "type": "github" 17 + } 18 + }, 19 + "flake-compat": { 20 + "flake": false, 21 + "locked": { 22 + "lastModified": 1747046372, 23 + "owner": "edolstra", 24 + "repo": "flake-compat", 25 + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", 26 + "type": "github" 27 + }, 28 + "original": { 29 + "owner": "edolstra", 30 + "repo": "flake-compat", 31 + "type": "github" 32 + } 33 + }, 34 + "git-hooks": { 35 + "inputs": { 36 + "flake-compat": "flake-compat", 37 + "gitignore": "gitignore", 38 + "nixpkgs": [ 39 + "nixpkgs" 40 + ] 41 + }, 42 + "locked": { 43 + "lastModified": 1760663237, 44 + "owner": "cachix", 45 + "repo": "git-hooks.nix", 46 + "rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37", 47 + "type": "github" 48 + }, 49 + "original": { 50 + "owner": "cachix", 51 + "repo": "git-hooks.nix", 52 + "type": "github" 53 + } 54 + }, 55 + "gitignore": { 56 + "inputs": { 57 + "nixpkgs": [ 58 + "git-hooks", 59 + "nixpkgs" 60 + ] 61 + }, 62 + "locked": { 63 + "lastModified": 1709087332, 64 + "owner": "hercules-ci", 65 + "repo": "gitignore.nix", 66 + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", 67 + "type": "github" 68 + }, 69 + "original": { 70 + "owner": "hercules-ci", 71 + "repo": "gitignore.nix", 72 + "type": "github" 73 + } 74 + }, 75 + "nixpkgs": { 76 + "locked": { 77 + "lastModified": 1761313199, 78 + "owner": "cachix", 79 + "repo": "devenv-nixpkgs", 80 + "rev": "d1c30452ebecfc55185ae6d1c983c09da0c274ff", 81 + "type": "github" 82 + }, 83 + "original": { 84 + "owner": "cachix", 85 + "ref": "rolling", 86 + "repo": "devenv-nixpkgs", 87 + "type": "github" 88 + } 89 + }, 90 + "root": { 91 + "inputs": { 92 + "devenv": "devenv", 93 + "git-hooks": "git-hooks", 94 + "nixpkgs": "nixpkgs", 95 + "pre-commit-hooks": [ 96 + "git-hooks" 97 + ] 98 + } 99 + } 100 + }, 101 + "root": "root", 102 + "version": 7 103 + }
+9
devenv.nix
··· 1 + { pkgs, ... }: 2 + { 3 + services.postgres = { 4 + enable = true; 5 + initialDatabases = [ 6 + { name = "calpoll"; } 7 + ]; 8 + }; 9 + }
+3
end2end/.gitignore
··· 1 + node_modules 2 + playwright-report 3 + test-results
+167
end2end/package-lock.json
··· 1 + { 2 + "name": "end2end", 3 + "version": "1.0.0", 4 + "lockfileVersion": 2, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "end2end", 9 + "version": "1.0.0", 10 + "license": "ISC", 11 + "devDependencies": { 12 + "@playwright/test": "^1.44.1", 13 + "@types/node": "^20.12.12", 14 + "typescript": "^5.4.5" 15 + } 16 + }, 17 + "node_modules/@playwright/test": { 18 + "version": "1.44.1", 19 + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.44.1.tgz", 20 + "integrity": "sha512-1hZ4TNvD5z9VuhNJ/walIjvMVvYkZKf71axoF/uiAqpntQJXpG64dlXhoDXE3OczPuTuvjf/M5KWFg5VAVUS3Q==", 21 + "dev": true, 22 + "license": "Apache-2.0", 23 + "dependencies": { 24 + "playwright": "1.44.1" 25 + }, 26 + "bin": { 27 + "playwright": "cli.js" 28 + }, 29 + "engines": { 30 + "node": ">=16" 31 + } 32 + }, 33 + "node_modules/@types/node": { 34 + "version": "20.12.12", 35 + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", 36 + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", 37 + "dev": true, 38 + "license": "MIT", 39 + "dependencies": { 40 + "undici-types": "~5.26.4" 41 + } 42 + }, 43 + "node_modules/fsevents": { 44 + "version": "2.3.2", 45 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 46 + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 47 + "dev": true, 48 + "hasInstallScript": true, 49 + "license": "MIT", 50 + "optional": true, 51 + "os": [ 52 + "darwin" 53 + ], 54 + "engines": { 55 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 56 + } 57 + }, 58 + "node_modules/playwright": { 59 + "version": "1.44.1", 60 + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.44.1.tgz", 61 + "integrity": "sha512-qr/0UJ5CFAtloI3avF95Y0L1xQo6r3LQArLIg/z/PoGJ6xa+EwzrwO5lpNr/09STxdHuUoP2mvuELJS+hLdtgg==", 62 + "dev": true, 63 + "license": "Apache-2.0", 64 + "dependencies": { 65 + "playwright-core": "1.44.1" 66 + }, 67 + "bin": { 68 + "playwright": "cli.js" 69 + }, 70 + "engines": { 71 + "node": ">=16" 72 + }, 73 + "optionalDependencies": { 74 + "fsevents": "2.3.2" 75 + } 76 + }, 77 + "node_modules/playwright-core": { 78 + "version": "1.44.1", 79 + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.44.1.tgz", 80 + "integrity": "sha512-wh0JWtYTrhv1+OSsLPgFzGzt67Y7BE/ZS3jEqgGBlp2ppp1ZDj8c+9IARNW4dwf1poq5MgHreEM2KV/GuR4cFA==", 81 + "dev": true, 82 + "license": "Apache-2.0", 83 + "bin": { 84 + "playwright-core": "cli.js" 85 + }, 86 + "engines": { 87 + "node": ">=16" 88 + } 89 + }, 90 + "node_modules/typescript": { 91 + "version": "5.4.5", 92 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", 93 + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", 94 + "dev": true, 95 + "license": "Apache-2.0", 96 + "bin": { 97 + "tsc": "bin/tsc", 98 + "tsserver": "bin/tsserver" 99 + }, 100 + "engines": { 101 + "node": ">=14.17" 102 + } 103 + }, 104 + "node_modules/undici-types": { 105 + "version": "5.26.5", 106 + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 107 + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 108 + "dev": true, 109 + "license": "MIT" 110 + } 111 + }, 112 + "dependencies": { 113 + "@playwright/test": { 114 + "version": "1.44.1", 115 + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.44.1.tgz", 116 + "integrity": "sha512-1hZ4TNvD5z9VuhNJ/walIjvMVvYkZKf71axoF/uiAqpntQJXpG64dlXhoDXE3OczPuTuvjf/M5KWFg5VAVUS3Q==", 117 + "dev": true, 118 + "requires": { 119 + "playwright": "1.44.1" 120 + } 121 + }, 122 + "@types/node": { 123 + "version": "20.12.12", 124 + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", 125 + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", 126 + "dev": true, 127 + "requires": { 128 + "undici-types": "~5.26.4" 129 + } 130 + }, 131 + "fsevents": { 132 + "version": "2.3.2", 133 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 134 + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 135 + "dev": true, 136 + "optional": true 137 + }, 138 + "playwright": { 139 + "version": "1.44.1", 140 + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.44.1.tgz", 141 + "integrity": "sha512-qr/0UJ5CFAtloI3avF95Y0L1xQo6r3LQArLIg/z/PoGJ6xa+EwzrwO5lpNr/09STxdHuUoP2mvuELJS+hLdtgg==", 142 + "dev": true, 143 + "requires": { 144 + "fsevents": "2.3.2", 145 + "playwright-core": "1.44.1" 146 + } 147 + }, 148 + "playwright-core": { 149 + "version": "1.44.1", 150 + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.44.1.tgz", 151 + "integrity": "sha512-wh0JWtYTrhv1+OSsLPgFzGzt67Y7BE/ZS3jEqgGBlp2ppp1ZDj8c+9IARNW4dwf1poq5MgHreEM2KV/GuR4cFA==", 152 + "dev": true 153 + }, 154 + "typescript": { 155 + "version": "5.4.5", 156 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", 157 + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", 158 + "dev": true 159 + }, 160 + "undici-types": { 161 + "version": "5.26.5", 162 + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 163 + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 164 + "dev": true 165 + } 166 + } 167 + }
+15
end2end/package.json
··· 1 + { 2 + "name": "end2end", 3 + "version": "1.0.0", 4 + "description": "", 5 + "main": "index.js", 6 + "scripts": {}, 7 + "keywords": [], 8 + "author": "", 9 + "license": "ISC", 10 + "devDependencies": { 11 + "@playwright/test": "^1.44.1", 12 + "@types/node": "^20.12.12", 13 + "typescript": "^5.4.5" 14 + } 15 + }
+105
end2end/playwright.config.ts
··· 1 + import type { PlaywrightTestConfig } from "@playwright/test"; 2 + import { devices, defineConfig } from "@playwright/test"; 3 + 4 + /** 5 + * Read environment variables from file. 6 + * https://github.com/motdotla/dotenv 7 + */ 8 + // require('dotenv').config(); 9 + 10 + /** 11 + * See https://playwright.dev/docs/test-configuration. 12 + */ 13 + export default defineConfig({ 14 + testDir: "./tests", 15 + /* Maximum time one test can run for. */ 16 + timeout: 30 * 1000, 17 + expect: { 18 + /** 19 + * Maximum time expect() should wait for the condition to be met. 20 + * For example in `await expect(locator).toHaveText();` 21 + */ 22 + timeout: 5000, 23 + }, 24 + /* Run tests in files in parallel */ 25 + fullyParallel: true, 26 + /* Fail the build on CI if you accidentally left test.only in the source code. */ 27 + forbidOnly: !!process.env.CI, 28 + /* Retry on CI only */ 29 + retries: process.env.CI ? 2 : 0, 30 + /* Opt out of parallel tests on CI. */ 31 + workers: process.env.CI ? 1 : undefined, 32 + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ 33 + reporter: "html", 34 + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ 35 + use: { 36 + /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ 37 + actionTimeout: 0, 38 + /* Base URL to use in actions like `await page.goto('/')`. */ 39 + // baseURL: 'http://localhost:3000', 40 + 41 + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ 42 + trace: "on-first-retry", 43 + }, 44 + 45 + /* Configure projects for major browsers */ 46 + projects: [ 47 + { 48 + name: "chromium", 49 + use: { 50 + ...devices["Desktop Chrome"], 51 + }, 52 + }, 53 + 54 + { 55 + name: "firefox", 56 + use: { 57 + ...devices["Desktop Firefox"], 58 + }, 59 + }, 60 + 61 + { 62 + name: "webkit", 63 + use: { 64 + ...devices["Desktop Safari"], 65 + }, 66 + }, 67 + 68 + /* Test against mobile viewports. */ 69 + // { 70 + // name: 'Mobile Chrome', 71 + // use: { 72 + // ...devices['Pixel 5'], 73 + // }, 74 + // }, 75 + // { 76 + // name: 'Mobile Safari', 77 + // use: { 78 + // ...devices['iPhone 12'], 79 + // }, 80 + // }, 81 + 82 + /* Test against branded browsers. */ 83 + // { 84 + // name: 'Microsoft Edge', 85 + // use: { 86 + // channel: 'msedge', 87 + // }, 88 + // }, 89 + // { 90 + // name: 'Google Chrome', 91 + // use: { 92 + // channel: 'chrome', 93 + // }, 94 + // }, 95 + ], 96 + 97 + /* Folder for test artifacts such as screenshots, videos, traces, etc. */ 98 + // outputDir: 'test-results/', 99 + 100 + /* Run your local dev server before starting the tests */ 101 + // webServer: { 102 + // command: 'npm run start', 103 + // port: 3000, 104 + // }, 105 + });
+9
end2end/tests/example.spec.ts
··· 1 + import { test, expect } from "@playwright/test"; 2 + 3 + test("homepage has title and heading text", async ({ page }) => { 4 + await page.goto("http://localhost:3000/"); 5 + 6 + await expect(page).toHaveTitle("Welcome to Leptos"); 7 + 8 + await expect(page.locator("h1")).toHaveText("Welcome to Leptos!"); 9 + });
+109
end2end/tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + /* Visit https://aka.ms/tsconfig to read more about this file */ 4 + 5 + /* Projects */ 6 + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ 7 + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ 9 + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ 10 + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 + 13 + /* Language and Environment */ 14 + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ 15 + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 + // "jsx": "preserve", /* Specify what JSX code is generated. */ 17 + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ 18 + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ 20 + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ 22 + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ 23 + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ 26 + 27 + /* Modules */ 28 + "module": "commonjs", /* Specify what module code is generated. */ 29 + // "rootDir": "./", /* Specify the root folder within your source files. */ 30 + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ 31 + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 32 + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 33 + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 34 + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ 35 + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 36 + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 37 + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ 38 + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ 39 + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ 40 + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ 41 + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ 42 + // "resolveJsonModule": true, /* Enable importing .json files. */ 43 + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ 44 + // "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */ 45 + 46 + /* JavaScript Support */ 47 + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ 48 + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 49 + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ 50 + 51 + /* Emit */ 52 + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 53 + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 54 + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 55 + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 56 + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 57 + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ 58 + // "outDir": "./", /* Specify an output folder for all emitted files. */ 59 + // "removeComments": true, /* Disable emitting comments. */ 60 + // "noEmit": true, /* Disable emitting files from a compilation. */ 61 + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 62 + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ 63 + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 64 + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 65 + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 66 + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 67 + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 68 + // "newLine": "crlf", /* Set the newline character for emitting files. */ 69 + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ 70 + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ 71 + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 72 + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ 73 + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 74 + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 75 + 76 + /* Interop Constraints */ 77 + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 78 + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ 79 + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 80 + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ 81 + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 82 + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ 83 + 84 + /* Type Checking */ 85 + "strict": true, /* Enable all strict type-checking options. */ 86 + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ 87 + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ 88 + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 89 + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ 90 + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 91 + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ 92 + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ 93 + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 94 + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ 95 + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ 96 + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 97 + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 98 + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 99 + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ 100 + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 101 + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ 102 + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 103 + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 104 + 105 + /* Completeness */ 106 + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 107 + "skipLibCheck": true /* Skip type checking all .d.ts files. */ 108 + } 109 + }
+1
migrations/20251026144437_empty.sql
··· 1 + -- Add migration script here
+26
migrations/20251026145212_add-calendars.sql
··· 1 + CREATE TABLE "subscriptions" ( 2 + "id" uuid PRIMARY KEY, 3 + "url" varchar NOT NULL 4 + ); 5 + 6 + CREATE TABLE "calendars" ( 7 + "id" uuid PRIMARY KEY, 8 + "user" uuid NOT NULL 9 + ); 10 + 11 + CREATE TABLE "users" ( 12 + "id" uuid PRIMARY KEY 13 + ); 14 + 15 + CREATE TABLE "calendars_subscriptions" ( 16 + "calendars_id" uuid, 17 + "subscriptions_id" uuid, 18 + PRIMARY KEY ("calendars_id", "subscriptions_id") 19 + ); 20 + 21 + ALTER TABLE "calendars_subscriptions" ADD FOREIGN KEY ("calendars_id") REFERENCES "calendars" ("id"); 22 + 23 + ALTER TABLE "calendars_subscriptions" ADD FOREIGN KEY ("subscriptions_id") REFERENCES "subscriptions" ("id"); 24 + 25 + 26 + ALTER TABLE "calendars" ADD CONSTRAINT "user_calendars" FOREIGN KEY ("user") REFERENCES "users" ("id");
+11
migrations/20251027071639_add-caldav.sql
··· 1 + ALTER TABLE "subscriptions" RENAME COLUMN "url" TO "reference"; 2 + ALTER TABLE "subscriptions" ADD COLUMN "dav_connection" uuid; 3 + 4 + CREATE TABLE "dav_connections" ( 5 + "id" uuid PRIMARY KEY, 6 + "url" varchar NOT NULL, 7 + "username" varchar, 8 + "password" varchar 9 + ); 10 + 11 + ALTER TABLE "subscriptions" ADD CONSTRAINT "subscription_dav_connection" FOREIGN KEY ("dav_connection") REFERENCES "dav_connections" ("id");
+24
nilla.nix
··· 22 22 23 23 shell = 24 24 { 25 + bacon, 26 + cargo, 27 + cargo-leptos, 28 + devenv, 29 + llvmPackages, 25 30 mkShell, 26 31 pkgs, 27 32 reuse, 33 + rust-analyzer, 34 + rustc, 35 + rustPlatform, 36 + sass, 37 + sqlx-cli, 28 38 system, 29 39 ... 30 40 }: 31 41 mkShell { 32 42 packages = [ 33 43 (config.inputs.npins.result { inherit pkgs system; }) 44 + bacon 45 + cargo 46 + cargo-leptos 47 + devenv 48 + llvmPackages.bintools 34 49 reuse 50 + rust-analyzer 51 + rustc 52 + rustPlatform.bindgenHook 53 + sass 54 + sqlx-cli 35 55 ]; 56 + 57 + shellHook = '' 58 + export DATABASE_URL="postgresql:///calpoll?host=$(pwd)/.devenv/run/postgres" 59 + ''; 36 60 }; 37 61 }; 38 62 };
public/favicon.ico

This is a binary file and will not be displayed.

+61
src/app.rs
··· 1 + use leptos::prelude::*; 2 + use leptos_meta::{provide_meta_context, MetaTags, Stylesheet, Title}; 3 + use leptos_router::{ 4 + components::{Route, Router, Routes}, 5 + StaticSegment, 6 + }; 7 + 8 + pub fn shell(options: LeptosOptions) -> impl IntoView { 9 + view! { 10 + <!DOCTYPE html> 11 + <html lang="en"> 12 + <head> 13 + <meta charset="utf-8"/> 14 + <meta name="viewport" content="width=device-width, initial-scale=1"/> 15 + <AutoReload options=options.clone() /> 16 + <HydrationScripts options/> 17 + <MetaTags/> 18 + </head> 19 + <body> 20 + <App/> 21 + </body> 22 + </html> 23 + } 24 + } 25 + 26 + #[component] 27 + pub fn App() -> impl IntoView { 28 + // Provides context that manages stylesheets, titles, meta tags, etc. 29 + provide_meta_context(); 30 + 31 + view! { 32 + // injects a stylesheet into the document <head> 33 + // id=leptos means cargo-leptos will hot-reload this stylesheet 34 + <Stylesheet id="leptos" href="/pkg/calpoll.css"/> 35 + 36 + // sets the document title 37 + <Title text="Welcome to Leptos"/> 38 + 39 + // content for this welcome page 40 + <Router> 41 + <main> 42 + <Routes fallback=|| "Page not found.".into_view()> 43 + <Route path=StaticSegment("") view=HomePage/> 44 + </Routes> 45 + </main> 46 + </Router> 47 + } 48 + } 49 + 50 + /// Renders the home page of your application. 51 + #[component] 52 + fn HomePage() -> impl IntoView { 53 + // Creates a reactive value to update the button 54 + let count = RwSignal::new(0); 55 + let on_click = move |_| *count.write() += 1; 56 + 57 + view! { 58 + <h1>"Welcome to Leptos!"</h1> 59 + <button on:click=on_click>"Click Me: " {count}</button> 60 + } 61 + }
+153
src/calendar.rs
··· 1 + use std::ops::DerefMut; 2 + use axum::extract::Path; 3 + use fast_dav_rs::CalDavClient; 4 + use icalendar::Component; 5 + use leptos::prelude::ServerFnError; 6 + use leptos::server; 7 + use tokio::task::JoinSet; 8 + use uuid::Uuid; 9 + 10 + use crate::STATE; 11 + 12 + pub(crate) async fn route( 13 + Path(id): Path<Uuid> 14 + ) -> String { 15 + events_by_calendar(id).await.unwrap() 16 + } 17 + 18 + #[server] 19 + async fn events_by_calendar(id: Uuid) -> anyhow::Result<String, ServerFnError> { 20 + let state = STATE.get().expect("Failed to get STATE - is it set yet?"); 21 + 22 + let subscriptions = sqlx::query!( 23 + r#"SELECT subscriptions.reference, dav_connections.url as "dav_connection_url?", dav_connections.username, dav_connections.password FROM subscriptions 24 + JOIN calendars_subscriptions on subscriptions.id = calendars_subscriptions.subscriptions_id 25 + JOIN calendars on calendars.id = calendars_subscriptions.calendars_id 26 + LEFT JOIN dav_connections on subscriptions.dav_connection = dav_connections.id 27 + WHERE calendars.id = $1"#, 28 + id 29 + ).fetch_all(state.sqlx_connection.lock().await.deref_mut()).await?; 30 + 31 + let mut requests = JoinSet::new(); 32 + 33 + for subscription in subscriptions { 34 + requests.spawn((async || { 35 + if let (Some(dav_connection_url), username, password) = (subscription.dav_connection_url, subscription.username, subscription.password) { 36 + // fast_dav_rs client doesn't follow redirects, so we must use reqwest to check first so, e.g., stalwart .well-known/caldav URLs work 37 + let base_url = state.reqwest_client.head(&dav_connection_url).send().await 38 + .and_then(|response| Ok(response.url().to_string())) 39 + .unwrap_or_else(|_| dav_connection_url); 40 + 41 + let Ok(client) = CalDavClient::new(&base_url, username.as_deref(), password.as_deref()) else { 42 + return None 43 + }; 44 + 45 + return get_dav_calendar(client, &subscription.reference).await 46 + } 47 + let result = state.reqwest_client.get(subscription.reference).send().await; 48 + 49 + let Ok(response) = result else { 50 + return None 51 + }; 52 + 53 + let Ok(text) = response.text().await else { 54 + return None 55 + }; 56 + 57 + text.parse::<icalendar::Calendar>().ok() 58 + })()); 59 + } 60 + 61 + let calendars = requests.join_all().await; 62 + 63 + let mut merged = icalendar::Calendar::new(); 64 + 65 + for maybe_calendar in calendars { 66 + if let Some(calendar) = maybe_calendar { 67 + merged.extend(calendar.components); 68 + } 69 + } 70 + 71 + Ok(merged.to_string()) 72 + } 73 + 74 + #[cfg(feature = "ssr")] 75 + async fn list_dav_calendars(client: &CalDavClient) -> anyhow::Result<Vec<fast_dav_rs::CalendarInfo>, anyhow::Error> { 76 + let Some(principal) = client.discover_current_user_principal().await? else { 77 + return Err(anyhow::anyhow!("Incompatible: CalDav server does not indicate principal")) 78 + }; 79 + 80 + let home_sets = client.discover_calendar_home_set(&principal).await?; 81 + 82 + let mut calendars = vec![]; 83 + 84 + for home_set in home_sets { 85 + calendars.extend(client.list_calendars(&home_set).await?); 86 + } 87 + 88 + Ok(calendars) 89 + } 90 + 91 + fn get_colored_components(color: Option<&str>, calendar: icalendar::Calendar) -> Vec<icalendar::CalendarComponent> { 92 + let Some(color) = calendar.property_value("COLOR").or_else(|| color) else { 93 + return calendar.components 94 + }; 95 + 96 + return calendar.components.iter().map(ToOwned::to_owned).map(|component| { 97 + match component { 98 + icalendar::CalendarComponent::Event(mut event) => { 99 + if event.property_value("COLOR").is_none() { 100 + event.add_property("COLOR", color); 101 + } 102 + 103 + icalendar::CalendarComponent::Event(event) 104 + }, 105 + icalendar::CalendarComponent::Todo(mut todo) => { 106 + if todo.property_value("COLOR").is_none() { 107 + todo.add_property("COLOR", color); 108 + } 109 + 110 + icalendar::CalendarComponent::Todo(todo) 111 + }, 112 + icalendar::CalendarComponent::Venue(mut venue) => { 113 + if venue.property_value("COLOR").is_none() { 114 + venue.add_property("COLOR", color); 115 + } 116 + 117 + icalendar::CalendarComponent::Venue(venue) 118 + }, 119 + other => other 120 + } 121 + }).collect() 122 + } 123 + 124 + #[cfg(feature = "ssr")] 125 + async fn get_dav_calendar(client: fast_dav_rs::CalDavClient, reference: &str) -> Option<icalendar::Calendar> { 126 + let all_calendars = list_dav_calendars(&client).await.unwrap_or_else(|_| vec![]); 127 + 128 + let color = all_calendars 129 + .iter() 130 + .filter(|calendar| calendar.href == reference && calendar.color.is_some()) 131 + .next() 132 + .and_then(|calendar| calendar.color.clone()); 133 + 134 + let Ok(result) = client.calendar_query_timerange(reference, "VEVENT", None, None, true).await else { 135 + return None 136 + }; 137 + 138 + let mut calendar = icalendar::Calendar::new(); 139 + 140 + for calendar_object in result { 141 + let Some(calendar_data) = calendar_object.calendar_data else { 142 + continue 143 + }; 144 + 145 + let Ok(parsed) = calendar_data.parse::<icalendar::Calendar>() else { 146 + continue 147 + }; 148 + 149 + calendar.extend(get_colored_components(color.as_deref(), parsed)) 150 + } 151 + 152 + Some(calendar) 153 + }
+9
src/lib.rs
··· 1 + pub mod app; 2 + 3 + #[cfg(feature = "hydrate")] 4 + #[wasm_bindgen::prelude::wasm_bindgen] 5 + pub fn hydrate() { 6 + use crate::app::*; 7 + console_error_panic_hook::set_once(); 8 + leptos::mount::hydrate_body(App); 9 + }
+64
src/main.rs
··· 1 + use std::sync::OnceLock; 2 + use sqlx::PgConnection; 3 + use tokio::sync::Mutex; 4 + 5 + mod calendar; 6 + 7 + #[cfg(feature = "ssr")] 8 + #[derive(Debug)] 9 + pub struct State { 10 + sqlx_connection: Mutex<PgConnection>, 11 + reqwest_client: reqwest::Client, 12 + } 13 + 14 + #[cfg(feature = "ssr")] 15 + static STATE: OnceLock<State> = OnceLock::new(); 16 + 17 + #[cfg(feature = "ssr")] 18 + #[tokio::main] 19 + async fn main() { 20 + use std::env; 21 + 22 + use axum::{routing::get, Router}; 23 + use leptos::logging::log; 24 + use leptos::prelude::*; 25 + use leptos_axum::{generate_route_list, LeptosRoutes}; 26 + use calpoll::app::*; 27 + use sqlx::Connection; 28 + 29 + rustls::crypto::ring::default_provider().install_default().expect("Failed to set default crypto provider for rustls..."); // Needed for fast-dav-rs since as it doesn't properly enable features... 30 + 31 + let connection = 32 + PgConnection::connect( 33 + env::var("DATABASE_URL") 34 + .expect("Please ensure you set your database URL in the $DATABASE_URL environment variable") 35 + .as_str()).await.expect("Failed to connect to database defined in $DATABASE_URL"); 36 + 37 + STATE.set(State { 38 + sqlx_connection: Mutex::new(connection), 39 + reqwest_client: reqwest::Client::new(), 40 + }).expect("Consistency issue: failed to set STATE - was it already set?"); 41 + 42 + let conf = get_configuration(None).unwrap(); 43 + let addr = conf.leptos_options.site_addr; 44 + let leptos_options = conf.leptos_options; 45 + // Generate the list of routes in your Leptos App 46 + let routes = generate_route_list(App); 47 + 48 + let app = Router::new() 49 + .route("/calendar/{id}", get(calendar::route)) 50 + .leptos_routes(&leptos_options, routes, { 51 + let leptos_options = leptos_options.clone(); 52 + move || shell(leptos_options.clone()) 53 + }) 54 + .fallback(leptos_axum::file_and_error_handler(shell)) 55 + .with_state(leptos_options); 56 + 57 + // run our app with hyper 58 + // `axum::Server` is a re-export of `hyper::Server` 59 + log!("listening on http://{}", &addr); 60 + let listener = tokio::net::TcpListener::bind(&addr).await.unwrap(); 61 + axum::serve(listener, app.into_make_service()) 62 + .await 63 + .expect("Failed to start axum server"); 64 + }
+4
style/main.scss
··· 1 + body { 2 + font-family: sans-serif; 3 + text-align: center; 4 + }
+9
test-data/merge-holidays-moon-phases.sql
··· 1 + INSERT INTO users ("id") VALUES ('11cd80d6-cf3d-4d93-9d47-4a383eaf1a10'); 2 + 3 + INSERT INTO calendars ("id", "user") VALUES ('32da8949-b21c-469d-a2bc-f5763af186c6', '11cd80d6-cf3d-4d93-9d47-4a383eaf1a10'); 4 + 5 + INSERT INTO subscriptions ("id", "reference") VALUES ('797de795-0ae5-443c-91d1-1d68f9d44889', 'https://calendar.google.com/calendar/ical/en.uk%23holiday%40group.v.calendar.google.com/public/basic.ics'); 6 + INSERT INTO subscriptions ("id", "reference") VALUES ('53d15eed-9db4-40ac-a5b1-b6df114847b2', 'https://calendar.google.com/calendar/ical/ht3jlfaac5lfd6263ulfh4tql8%40group.calendar.google.com/public/basic.ics'); 7 + 8 + INSERT INTO calendars_subscriptions ("calendars_id", "subscriptions_id") VALUES ('32da8949-b21c-469d-a2bc-f5763af186c6', '797de795-0ae5-443c-91d1-1d68f9d44889'); 9 + INSERT INTO calendars_subscriptions ("calendars_id", "subscriptions_id") VALUES ('32da8949-b21c-469d-a2bc-f5763af186c6', '53d15eed-9db4-40ac-a5b1-b6df114847b2');