tracks lexicons and how many times they appeared on the jetstream

refactor(server): drop atproto-jetstream, use tokio-websockets directly, improve ctrl_c and jetstream connection retries

ptr.pet 0e76b961 fddc6d5e

verified
+435 -1763
+143 -1667
server/Cargo.lock
··· 18 18 checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" 19 19 20 20 [[package]] 21 - name = "aho-corasick" 22 - version = "1.1.3" 23 - source = "registry+https://github.com/rust-lang/crates.io-index" 24 - checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 25 - dependencies = [ 26 - "memchr", 27 - ] 28 - 29 - [[package]] 30 - name = "allocator-api2" 31 - version = "0.2.21" 32 - source = "registry+https://github.com/rust-lang/crates.io-index" 33 - checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" 34 - 35 - [[package]] 36 21 name = "anyhow" 37 22 version = "1.0.98" 38 23 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 50 35 ] 51 36 52 37 [[package]] 53 - name = "atomic-waker" 54 - version = "1.1.2" 55 - source = "registry+https://github.com/rust-lang/crates.io-index" 56 - checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 57 - 58 - [[package]] 59 - name = "atproto-identity" 60 - version = "0.9.7" 61 - source = "registry+https://github.com/rust-lang/crates.io-index" 62 - checksum = "85d7eea5300f8d380d7bf8e016644499cf3203cf7e22a1d414c2c8e8340aa5d8" 63 - dependencies = [ 64 - "anyhow", 65 - "async-trait", 66 - "axum", 67 - "ecdsa", 68 - "elliptic-curve", 69 - "hickory-resolver", 70 - "http", 71 - "k256", 72 - "lru", 73 - "multibase", 74 - "p256", 75 - "p384", 76 - "rand 0.8.5", 77 - "reqwest", 78 - "serde", 79 - "serde_ipld_dagcbor", 80 - "serde_json", 81 - "thiserror 2.0.12", 82 - "tokio", 83 - "tracing", 84 - ] 85 - 86 - [[package]] 87 - name = "atproto-jetstream" 88 - version = "0.9.7" 89 - source = "registry+https://github.com/rust-lang/crates.io-index" 90 - checksum = "975a29eae86db5aa3acc768079c158437207df18bc1352f6aa848a9821895b10" 91 - dependencies = [ 92 - "anyhow", 93 - "async-trait", 94 - "atproto-identity", 95 - "futures", 96 - "http", 97 - "serde", 98 - "serde_json", 99 - "thiserror 2.0.12", 100 - "tokio", 101 - "tokio-util", 102 - "tokio-websockets", 103 - "tracing", 104 - "tracing-subscriber", 105 - "urlencoding", 106 - "zstd", 107 - ] 108 - 109 - [[package]] 110 38 name = "autocfg" 111 39 version = "1.5.0" 112 40 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 119 47 checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" 120 48 dependencies = [ 121 49 "axum-core", 122 - "axum-macros", 123 - "base64", 124 50 "bytes", 125 - "form_urlencoded", 126 51 "futures-util", 127 52 "http", 128 53 "http-body", ··· 139 64 "serde", 140 65 "serde_json", 141 66 "serde_path_to_error", 142 - "serde_urlencoded", 143 - "sha1", 144 67 "sync_wrapper", 145 68 "tokio", 146 - "tokio-tungstenite", 147 69 "tower", 148 70 "tower-layer", 149 71 "tower-service", ··· 171 93 ] 172 94 173 95 [[package]] 174 - name = "axum-macros" 96 + name = "axum-tws" 175 97 version = "0.5.0" 176 - source = "registry+https://github.com/rust-lang/crates.io-index" 177 - checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" 98 + source = "git+https://github.com/90-008/axum-tws.git#34b89132c5331d6faae9b10912977f9dae5d53ff" 178 99 dependencies = [ 179 - "proc-macro2", 180 - "quote", 181 - "syn", 100 + "axum-core", 101 + "base64", 102 + "bytes", 103 + "futures-util", 104 + "http", 105 + "hyper", 106 + "hyper-util", 107 + "sha1", 108 + "tokio", 109 + "tokio-websockets", 182 110 ] 183 111 184 112 [[package]] ··· 197 125 ] 198 126 199 127 [[package]] 200 - name = "base-x" 201 - version = "0.2.11" 202 - source = "registry+https://github.com/rust-lang/crates.io-index" 203 - checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" 204 - 205 - [[package]] 206 - name = "base16ct" 207 - version = "0.2.0" 208 - source = "registry+https://github.com/rust-lang/crates.io-index" 209 - checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" 210 - 211 - [[package]] 212 128 name = "base64" 213 129 version = "0.22.1" 214 130 source = "registry+https://github.com/rust-lang/crates.io-index" 215 131 checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 216 - 217 - [[package]] 218 - name = "base64ct" 219 - version = "1.8.0" 220 - source = "registry+https://github.com/rust-lang/crates.io-index" 221 - checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" 222 132 223 133 [[package]] 224 134 name = "bitflags" ··· 292 202 checksum = "6236364b88b9b6d0bc181ba374cf1ab55ba3ef97a1cb6f8cddad48a273767fb5" 293 203 294 204 [[package]] 295 - name = "cbor4ii" 296 - version = "0.2.14" 297 - source = "registry+https://github.com/rust-lang/crates.io-index" 298 - checksum = "b544cf8c89359205f4f990d0e6f3828db42df85b5dac95d09157a250eb0749c4" 299 - dependencies = [ 300 - "serde", 301 - ] 302 - 303 - [[package]] 304 205 name = "cc" 305 206 version = "1.2.30" 306 207 source = "registry+https://github.com/rust-lang/crates.io-index" 307 208 checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7" 308 209 dependencies = [ 309 - "jobserver", 310 - "libc", 311 210 "shlex", 312 211 ] 313 212 314 213 [[package]] 214 + name = "cesu8" 215 + version = "1.1.0" 216 + source = "registry+https://github.com/rust-lang/crates.io-index" 217 + checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 218 + 219 + [[package]] 315 220 name = "cfg-if" 316 221 version = "1.0.1" 317 222 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 324 229 checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 325 230 326 231 [[package]] 327 - name = "cid" 328 - version = "0.11.1" 232 + name = "combine" 233 + version = "4.6.7" 329 234 source = "registry+https://github.com/rust-lang/crates.io-index" 330 - checksum = "3147d8272e8fa0ccd29ce51194dd98f79ddfb8191ba9e3409884e751798acf3a" 235 + checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" 331 236 dependencies = [ 332 - "core2", 333 - "multibase", 334 - "multihash", 335 - "serde", 336 - "serde_bytes", 337 - "unsigned-varint", 237 + "bytes", 238 + "memchr", 338 239 ] 339 240 340 241 [[package]] ··· 344 245 checksum = "ea0095f6103c2a8b44acd6fd15960c801dafebf02e21940360833e0673f48ba7" 345 246 346 247 [[package]] 347 - name = "const-oid" 348 - version = "0.9.6" 349 - source = "registry+https://github.com/rust-lang/crates.io-index" 350 - checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 351 - 352 - [[package]] 353 - name = "core-foundation" 354 - version = "0.9.4" 355 - source = "registry+https://github.com/rust-lang/crates.io-index" 356 - checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 357 - dependencies = [ 358 - "core-foundation-sys", 359 - "libc", 360 - ] 361 - 362 - [[package]] 363 248 name = "core-foundation" 364 249 version = "0.10.1" 365 250 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 376 261 checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 377 262 378 263 [[package]] 379 - name = "core2" 380 - version = "0.4.0" 381 - source = "registry+https://github.com/rust-lang/crates.io-index" 382 - checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" 383 - dependencies = [ 384 - "memchr", 385 - ] 386 - 387 - [[package]] 388 264 name = "cpufeatures" 389 265 version = "0.2.17" 390 266 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 394 270 ] 395 271 396 272 [[package]] 397 - name = "critical-section" 398 - version = "1.2.0" 399 - source = "registry+https://github.com/rust-lang/crates.io-index" 400 - checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" 401 - 402 - [[package]] 403 - name = "crossbeam-channel" 404 - version = "0.5.15" 405 - source = "registry+https://github.com/rust-lang/crates.io-index" 406 - checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" 407 - dependencies = [ 408 - "crossbeam-utils", 409 - ] 410 - 411 - [[package]] 412 273 name = "crossbeam-epoch" 413 274 version = "0.9.18" 414 275 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 434 295 checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 435 296 436 297 [[package]] 437 - name = "crypto-bigint" 438 - version = "0.5.5" 439 - source = "registry+https://github.com/rust-lang/crates.io-index" 440 - checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" 441 - dependencies = [ 442 - "generic-array", 443 - "rand_core 0.6.4", 444 - "subtle", 445 - "zeroize", 446 - ] 447 - 448 - [[package]] 449 298 name = "crypto-common" 450 299 version = "0.1.6" 451 300 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 470 319 ] 471 320 472 321 [[package]] 473 - name = "data-encoding" 474 - version = "2.9.0" 475 - source = "registry+https://github.com/rust-lang/crates.io-index" 476 - checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" 477 - 478 - [[package]] 479 - name = "data-encoding-macro" 480 - version = "0.1.18" 481 - source = "registry+https://github.com/rust-lang/crates.io-index" 482 - checksum = "47ce6c96ea0102f01122a185683611bd5ac8d99e62bc59dd12e6bda344ee673d" 483 - dependencies = [ 484 - "data-encoding", 485 - "data-encoding-macro-internal", 486 - ] 487 - 488 - [[package]] 489 - name = "data-encoding-macro-internal" 490 - version = "0.1.16" 491 - source = "registry+https://github.com/rust-lang/crates.io-index" 492 - checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" 493 - dependencies = [ 494 - "data-encoding", 495 - "syn", 496 - ] 497 - 498 - [[package]] 499 - name = "der" 500 - version = "0.7.10" 501 - source = "registry+https://github.com/rust-lang/crates.io-index" 502 - checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" 503 - dependencies = [ 504 - "const-oid", 505 - "pem-rfc7468", 506 - "zeroize", 507 - ] 508 - 509 - [[package]] 510 322 name = "digest" 511 323 version = "0.10.7" 512 324 source = "registry+https://github.com/rust-lang/crates.io-index" 513 325 checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 514 326 dependencies = [ 515 327 "block-buffer", 516 - "const-oid", 517 328 "crypto-common", 518 - "subtle", 519 - ] 520 - 521 - [[package]] 522 - name = "displaydoc" 523 - version = "0.2.5" 524 - source = "registry+https://github.com/rust-lang/crates.io-index" 525 - checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 526 - dependencies = [ 527 - "proc-macro2", 528 - "quote", 529 - "syn", 530 329 ] 531 330 532 331 [[package]] ··· 536 335 checksum = "c0d05e1c0dbad51b52c38bda7adceef61b9efc2baf04acfe8726a8c4630a6f57" 537 336 538 337 [[package]] 539 - name = "ecdsa" 540 - version = "0.16.9" 541 - source = "registry+https://github.com/rust-lang/crates.io-index" 542 - checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" 543 - dependencies = [ 544 - "der", 545 - "digest", 546 - "elliptic-curve", 547 - "rfc6979", 548 - "signature", 549 - "spki", 550 - ] 551 - 552 - [[package]] 553 - name = "elliptic-curve" 554 - version = "0.13.8" 555 - source = "registry+https://github.com/rust-lang/crates.io-index" 556 - checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" 557 - dependencies = [ 558 - "base16ct", 559 - "base64ct", 560 - "crypto-bigint", 561 - "digest", 562 - "ff", 563 - "generic-array", 564 - "group", 565 - "hkdf", 566 - "pem-rfc7468", 567 - "pkcs8", 568 - "rand_core 0.6.4", 569 - "sec1", 570 - "serde_json", 571 - "serdect", 572 - "subtle", 573 - "zeroize", 574 - ] 575 - 576 - [[package]] 577 - name = "encoding_rs" 578 - version = "0.8.35" 579 - source = "registry+https://github.com/rust-lang/crates.io-index" 580 - checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 581 - dependencies = [ 582 - "cfg-if", 583 - ] 584 - 585 - [[package]] 586 - name = "enum-as-inner" 587 - version = "0.6.1" 588 - source = "registry+https://github.com/rust-lang/crates.io-index" 589 - checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" 590 - dependencies = [ 591 - "heck", 592 - "proc-macro2", 593 - "quote", 594 - "syn", 595 - ] 596 - 597 - [[package]] 598 338 name = "enum_dispatch" 599 339 version = "0.3.13" 600 340 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 629 369 checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 630 370 631 371 [[package]] 632 - name = "ff" 633 - version = "0.13.1" 634 - source = "registry+https://github.com/rust-lang/crates.io-index" 635 - checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" 636 - dependencies = [ 637 - "rand_core 0.6.4", 638 - "subtle", 639 - ] 640 - 641 - [[package]] 642 372 name = "fjall" 643 - version = "2.11.1" 373 + version = "2.11.2" 644 374 source = "registry+https://github.com/rust-lang/crates.io-index" 645 - checksum = "f5cb653019268f6dc8de3b254b633a2d233a775054349b804b9cfbf18bbe3426" 375 + checksum = "0b25ad44cd4360a0448a9b5a0a6f1c7a621101cca4578706d43c9a821418aebc" 646 376 dependencies = [ 647 377 "byteorder", 648 378 "byteview", ··· 662 392 checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 663 393 664 394 [[package]] 665 - name = "foldhash" 666 - version = "0.1.5" 667 - source = "registry+https://github.com/rust-lang/crates.io-index" 668 - checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" 669 - 670 - [[package]] 671 - name = "form_urlencoded" 672 - version = "1.2.1" 673 - source = "registry+https://github.com/rust-lang/crates.io-index" 674 - checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 675 - dependencies = [ 676 - "percent-encoding", 677 - ] 678 - 679 - [[package]] 680 - name = "futures" 681 - version = "0.3.31" 682 - source = "registry+https://github.com/rust-lang/crates.io-index" 683 - checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" 684 - dependencies = [ 685 - "futures-channel", 686 - "futures-core", 687 - "futures-executor", 688 - "futures-io", 689 - "futures-sink", 690 - "futures-task", 691 - "futures-util", 692 - ] 693 - 694 - [[package]] 695 395 name = "futures-channel" 696 396 version = "0.3.31" 697 397 source = "registry+https://github.com/rust-lang/crates.io-index" 698 398 checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 699 399 dependencies = [ 700 400 "futures-core", 701 - "futures-sink", 702 401 ] 703 402 704 403 [[package]] ··· 708 407 checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 709 408 710 409 [[package]] 711 - name = "futures-executor" 712 - version = "0.3.31" 713 - source = "registry+https://github.com/rust-lang/crates.io-index" 714 - checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" 715 - dependencies = [ 716 - "futures-core", 717 - "futures-task", 718 - "futures-util", 719 - ] 720 - 721 - [[package]] 722 - name = "futures-io" 723 - version = "0.3.31" 724 - source = "registry+https://github.com/rust-lang/crates.io-index" 725 - checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 726 - 727 - [[package]] 728 410 name = "futures-macro" 729 411 version = "0.3.31" 730 412 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 753 435 source = "registry+https://github.com/rust-lang/crates.io-index" 754 436 checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 755 437 dependencies = [ 756 - "futures-channel", 757 438 "futures-core", 758 - "futures-io", 759 439 "futures-macro", 760 440 "futures-sink", 761 441 "futures-task", 762 - "memchr", 763 442 "pin-project-lite", 764 443 "pin-utils", 765 444 "slab", 766 445 ] 767 446 768 447 [[package]] 769 - name = "generator" 770 - version = "0.8.5" 771 - source = "registry+https://github.com/rust-lang/crates.io-index" 772 - checksum = "d18470a76cb7f8ff746cf1f7470914f900252ec36bbc40b569d74b1258446827" 773 - dependencies = [ 774 - "cc", 775 - "cfg-if", 776 - "libc", 777 - "log", 778 - "rustversion", 779 - "windows", 780 - ] 781 - 782 - [[package]] 783 448 name = "generic-array" 784 449 version = "0.14.7" 785 450 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 787 452 dependencies = [ 788 453 "typenum", 789 454 "version_check", 790 - "zeroize", 791 455 ] 792 456 793 457 [[package]] ··· 797 461 checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" 798 462 dependencies = [ 799 463 "cfg-if", 800 - "js-sys", 801 464 "libc", 802 465 "wasi 0.11.1+wasi-snapshot-preview1", 803 - "wasm-bindgen", 804 466 ] 805 467 806 468 [[package]] ··· 810 472 checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" 811 473 dependencies = [ 812 474 "cfg-if", 813 - "js-sys", 814 475 "libc", 815 476 "r-efi", 816 477 "wasi 0.14.2+wasi-0.2.4", 817 - "wasm-bindgen", 818 478 ] 819 479 820 480 [[package]] ··· 824 484 checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" 825 485 826 486 [[package]] 827 - name = "group" 828 - version = "0.13.0" 829 - source = "registry+https://github.com/rust-lang/crates.io-index" 830 - checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" 831 - dependencies = [ 832 - "ff", 833 - "rand_core 0.6.4", 834 - "subtle", 835 - ] 836 - 837 - [[package]] 838 487 name = "guardian" 839 488 version = "1.3.0" 840 489 source = "registry+https://github.com/rust-lang/crates.io-index" 841 490 checksum = "17e2ac29387b1aa07a1e448f7bb4f35b500787971e965b02842b900afa5c8f6f" 842 491 843 492 [[package]] 844 - name = "h2" 845 - version = "0.4.11" 846 - source = "registry+https://github.com/rust-lang/crates.io-index" 847 - checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" 848 - dependencies = [ 849 - "atomic-waker", 850 - "bytes", 851 - "fnv", 852 - "futures-core", 853 - "futures-sink", 854 - "http", 855 - "indexmap", 856 - "slab", 857 - "tokio", 858 - "tokio-util", 859 - "tracing", 860 - ] 861 - 862 - [[package]] 863 493 name = "hashbrown" 864 494 version = "0.14.5" 865 495 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 870 500 version = "0.15.4" 871 501 source = "registry+https://github.com/rust-lang/crates.io-index" 872 502 checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" 873 - dependencies = [ 874 - "allocator-api2", 875 - "equivalent", 876 - "foldhash", 877 - ] 878 - 879 - [[package]] 880 - name = "heck" 881 - version = "0.5.0" 882 - source = "registry+https://github.com/rust-lang/crates.io-index" 883 - checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 884 - 885 - [[package]] 886 - name = "hickory-proto" 887 - version = "0.25.2" 888 - source = "registry+https://github.com/rust-lang/crates.io-index" 889 - checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" 890 - dependencies = [ 891 - "async-trait", 892 - "cfg-if", 893 - "data-encoding", 894 - "enum-as-inner", 895 - "futures-channel", 896 - "futures-io", 897 - "futures-util", 898 - "idna", 899 - "ipnet", 900 - "once_cell", 901 - "rand 0.9.1", 902 - "ring", 903 - "thiserror 2.0.12", 904 - "tinyvec", 905 - "tokio", 906 - "tracing", 907 - "url", 908 - ] 909 - 910 - [[package]] 911 - name = "hickory-resolver" 912 - version = "0.25.2" 913 - source = "registry+https://github.com/rust-lang/crates.io-index" 914 - checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" 915 - dependencies = [ 916 - "cfg-if", 917 - "futures-util", 918 - "hickory-proto", 919 - "ipconfig", 920 - "moka", 921 - "once_cell", 922 - "parking_lot", 923 - "rand 0.9.1", 924 - "resolv-conf", 925 - "smallvec", 926 - "thiserror 2.0.12", 927 - "tokio", 928 - "tracing", 929 - ] 930 - 931 - [[package]] 932 - name = "hkdf" 933 - version = "0.12.4" 934 - source = "registry+https://github.com/rust-lang/crates.io-index" 935 - checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" 936 - dependencies = [ 937 - "hmac", 938 - ] 939 - 940 - [[package]] 941 - name = "hmac" 942 - version = "0.12.1" 943 - source = "registry+https://github.com/rust-lang/crates.io-index" 944 - checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 945 - dependencies = [ 946 - "digest", 947 - ] 948 503 949 504 [[package]] 950 505 name = "http" ··· 1001 556 "bytes", 1002 557 "futures-channel", 1003 558 "futures-util", 1004 - "h2", 1005 559 "http", 1006 560 "http-body", 1007 561 "httparse", ··· 1010 564 "pin-project-lite", 1011 565 "smallvec", 1012 566 "tokio", 1013 - "want", 1014 - ] 1015 - 1016 - [[package]] 1017 - name = "hyper-rustls" 1018 - version = "0.27.7" 1019 - source = "registry+https://github.com/rust-lang/crates.io-index" 1020 - checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" 1021 - dependencies = [ 1022 - "http", 1023 - "hyper", 1024 - "hyper-util", 1025 - "rustls", 1026 - "rustls-pki-types", 1027 - "tokio", 1028 - "tokio-rustls", 1029 - "tower-service", 1030 - "webpki-roots", 1031 567 ] 1032 568 1033 569 [[package]] 1034 570 name = "hyper-util" 1035 - version = "0.1.15" 571 + version = "0.1.16" 1036 572 source = "registry+https://github.com/rust-lang/crates.io-index" 1037 - checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df" 573 + checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" 1038 574 dependencies = [ 1039 - "base64", 1040 575 "bytes", 1041 - "futures-channel", 1042 576 "futures-core", 1043 - "futures-util", 1044 577 "http", 1045 578 "http-body", 1046 579 "hyper", 1047 - "ipnet", 1048 - "libc", 1049 - "percent-encoding", 1050 580 "pin-project-lite", 1051 - "socket2", 1052 - "system-configuration", 1053 581 "tokio", 1054 582 "tower-service", 1055 - "tracing", 1056 - "windows-registry", 1057 - ] 1058 - 1059 - [[package]] 1060 - name = "icu_collections" 1061 - version = "2.0.0" 1062 - source = "registry+https://github.com/rust-lang/crates.io-index" 1063 - checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" 1064 - dependencies = [ 1065 - "displaydoc", 1066 - "potential_utf", 1067 - "yoke", 1068 - "zerofrom", 1069 - "zerovec", 1070 - ] 1071 - 1072 - [[package]] 1073 - name = "icu_locale_core" 1074 - version = "2.0.0" 1075 - source = "registry+https://github.com/rust-lang/crates.io-index" 1076 - checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" 1077 - dependencies = [ 1078 - "displaydoc", 1079 - "litemap", 1080 - "tinystr", 1081 - "writeable", 1082 - "zerovec", 1083 - ] 1084 - 1085 - [[package]] 1086 - name = "icu_normalizer" 1087 - version = "2.0.0" 1088 - source = "registry+https://github.com/rust-lang/crates.io-index" 1089 - checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" 1090 - dependencies = [ 1091 - "displaydoc", 1092 - "icu_collections", 1093 - "icu_normalizer_data", 1094 - "icu_properties", 1095 - "icu_provider", 1096 - "smallvec", 1097 - "zerovec", 1098 - ] 1099 - 1100 - [[package]] 1101 - name = "icu_normalizer_data" 1102 - version = "2.0.0" 1103 - source = "registry+https://github.com/rust-lang/crates.io-index" 1104 - checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" 1105 - 1106 - [[package]] 1107 - name = "icu_properties" 1108 - version = "2.0.1" 1109 - source = "registry+https://github.com/rust-lang/crates.io-index" 1110 - checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" 1111 - dependencies = [ 1112 - "displaydoc", 1113 - "icu_collections", 1114 - "icu_locale_core", 1115 - "icu_properties_data", 1116 - "icu_provider", 1117 - "potential_utf", 1118 - "zerotrie", 1119 - "zerovec", 1120 - ] 1121 - 1122 - [[package]] 1123 - name = "icu_properties_data" 1124 - version = "2.0.1" 1125 - source = "registry+https://github.com/rust-lang/crates.io-index" 1126 - checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" 1127 - 1128 - [[package]] 1129 - name = "icu_provider" 1130 - version = "2.0.0" 1131 - source = "registry+https://github.com/rust-lang/crates.io-index" 1132 - checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" 1133 - dependencies = [ 1134 - "displaydoc", 1135 - "icu_locale_core", 1136 - "stable_deref_trait", 1137 - "tinystr", 1138 - "writeable", 1139 - "yoke", 1140 - "zerofrom", 1141 - "zerotrie", 1142 - "zerovec", 1143 - ] 1144 - 1145 - [[package]] 1146 - name = "idna" 1147 - version = "1.0.3" 1148 - source = "registry+https://github.com/rust-lang/crates.io-index" 1149 - checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" 1150 - dependencies = [ 1151 - "idna_adapter", 1152 - "smallvec", 1153 - "utf8_iter", 1154 - ] 1155 - 1156 - [[package]] 1157 - name = "idna_adapter" 1158 - version = "1.2.1" 1159 - source = "registry+https://github.com/rust-lang/crates.io-index" 1160 - checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 1161 - dependencies = [ 1162 - "icu_normalizer", 1163 - "icu_properties", 1164 583 ] 1165 584 1166 585 [[package]] ··· 1184 603 1185 604 [[package]] 1186 605 name = "io-uring" 1187 - version = "0.7.8" 606 + version = "0.7.9" 1188 607 source = "registry+https://github.com/rust-lang/crates.io-index" 1189 - checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" 608 + checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" 1190 609 dependencies = [ 1191 610 "bitflags", 1192 611 "cfg-if", ··· 1194 613 ] 1195 614 1196 615 [[package]] 1197 - name = "ipconfig" 1198 - version = "0.3.2" 1199 - source = "registry+https://github.com/rust-lang/crates.io-index" 1200 - checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" 1201 - dependencies = [ 1202 - "socket2", 1203 - "widestring", 1204 - "windows-sys 0.48.0", 1205 - "winreg", 1206 - ] 1207 - 1208 - [[package]] 1209 - name = "ipld-core" 1210 - version = "0.4.2" 1211 - source = "registry+https://github.com/rust-lang/crates.io-index" 1212 - checksum = "104718b1cc124d92a6d01ca9c9258a7df311405debb3408c445a36452f9bf8db" 1213 - dependencies = [ 1214 - "cid", 1215 - "serde", 1216 - "serde_bytes", 1217 - ] 1218 - 1219 - [[package]] 1220 - name = "ipnet" 1221 - version = "2.11.0" 1222 - source = "registry+https://github.com/rust-lang/crates.io-index" 1223 - checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" 1224 - 1225 - [[package]] 1226 - name = "iri-string" 1227 - version = "0.7.8" 1228 - source = "registry+https://github.com/rust-lang/crates.io-index" 1229 - checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" 1230 - dependencies = [ 1231 - "memchr", 1232 - "serde", 1233 - ] 1234 - 1235 - [[package]] 1236 616 name = "itoa" 1237 617 version = "1.0.15" 1238 618 source = "registry+https://github.com/rust-lang/crates.io-index" 1239 619 checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 1240 620 1241 621 [[package]] 1242 - name = "jobserver" 1243 - version = "0.1.33" 622 + name = "jni" 623 + version = "0.21.1" 1244 624 source = "registry+https://github.com/rust-lang/crates.io-index" 1245 - checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" 625 + checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" 1246 626 dependencies = [ 1247 - "getrandom 0.3.3", 1248 - "libc", 627 + "cesu8", 628 + "cfg-if", 629 + "combine", 630 + "jni-sys", 631 + "log", 632 + "thiserror", 633 + "walkdir", 634 + "windows-sys 0.45.0", 1249 635 ] 1250 636 1251 637 [[package]] 638 + name = "jni-sys" 639 + version = "0.3.0" 640 + source = "registry+https://github.com/rust-lang/crates.io-index" 641 + checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 642 + 643 + [[package]] 1252 644 name = "js-sys" 1253 645 version = "0.3.77" 1254 646 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1259 651 ] 1260 652 1261 653 [[package]] 1262 - name = "k256" 1263 - version = "0.13.4" 1264 - source = "registry+https://github.com/rust-lang/crates.io-index" 1265 - checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" 1266 - dependencies = [ 1267 - "cfg-if", 1268 - "ecdsa", 1269 - "elliptic-curve", 1270 - "once_cell", 1271 - "sha2", 1272 - "signature", 1273 - ] 1274 - 1275 - [[package]] 1276 654 name = "lazy_static" 1277 655 version = "1.5.0" 1278 656 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1291 669 checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" 1292 670 1293 671 [[package]] 1294 - name = "litemap" 1295 - version = "0.8.0" 1296 - source = "registry+https://github.com/rust-lang/crates.io-index" 1297 - checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" 1298 - 1299 - [[package]] 1300 672 name = "lock_api" 1301 673 version = "0.4.13" 1302 674 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1313 685 checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" 1314 686 1315 687 [[package]] 1316 - name = "loom" 1317 - version = "0.7.2" 1318 - source = "registry+https://github.com/rust-lang/crates.io-index" 1319 - checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" 1320 - dependencies = [ 1321 - "cfg-if", 1322 - "generator", 1323 - "scoped-tls", 1324 - "tracing", 1325 - "tracing-subscriber", 1326 - ] 1327 - 1328 - [[package]] 1329 - name = "lru" 1330 - version = "0.12.5" 1331 - source = "registry+https://github.com/rust-lang/crates.io-index" 1332 - checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" 1333 - dependencies = [ 1334 - "hashbrown 0.15.4", 1335 - ] 1336 - 1337 - [[package]] 1338 - name = "lru-slab" 1339 - version = "0.1.2" 1340 - source = "registry+https://github.com/rust-lang/crates.io-index" 1341 - checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" 1342 - 1343 - [[package]] 1344 688 name = "lsm-tree" 1345 - version = "2.10.1" 689 + version = "2.10.2" 1346 690 source = "registry+https://github.com/rust-lang/crates.io-index" 1347 - checksum = "1d2bd4cdc451a8dcf11329190afb9b78eb8988bed07a3da29b8d73d2e0c731ff" 691 + checksum = "55b6d7475a8dd22e749186968daacf8e2a77932b061b1bd263157987bbfc0c6c" 1348 692 dependencies = [ 1349 693 "byteorder", 1350 694 "crossbeam-skiplist", ··· 1370 714 version = "0.11.3" 1371 715 source = "registry+https://github.com/rust-lang/crates.io-index" 1372 716 checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5" 1373 - 1374 - [[package]] 1375 - name = "matchers" 1376 - version = "0.1.0" 1377 - source = "registry+https://github.com/rust-lang/crates.io-index" 1378 - checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 1379 - dependencies = [ 1380 - "regex-automata 0.1.10", 1381 - ] 1382 717 1383 718 [[package]] 1384 719 name = "matchit" ··· 1419 754 ] 1420 755 1421 756 [[package]] 1422 - name = "moka" 1423 - version = "0.12.10" 1424 - source = "registry+https://github.com/rust-lang/crates.io-index" 1425 - checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" 1426 - dependencies = [ 1427 - "crossbeam-channel", 1428 - "crossbeam-epoch", 1429 - "crossbeam-utils", 1430 - "loom", 1431 - "parking_lot", 1432 - "portable-atomic", 1433 - "rustc_version", 1434 - "smallvec", 1435 - "tagptr", 1436 - "thiserror 1.0.69", 1437 - "uuid", 1438 - ] 1439 - 1440 - [[package]] 1441 - name = "multibase" 1442 - version = "0.9.1" 1443 - source = "registry+https://github.com/rust-lang/crates.io-index" 1444 - checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404" 1445 - dependencies = [ 1446 - "base-x", 1447 - "data-encoding", 1448 - "data-encoding-macro", 1449 - ] 1450 - 1451 - [[package]] 1452 - name = "multihash" 1453 - version = "0.19.3" 1454 - source = "registry+https://github.com/rust-lang/crates.io-index" 1455 - checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d" 1456 - dependencies = [ 1457 - "core2", 1458 - "serde", 1459 - "unsigned-varint", 1460 - ] 1461 - 1462 - [[package]] 1463 757 name = "munge" 1464 758 version = "0.4.5" 1465 759 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1503 797 version = "1.21.3" 1504 798 source = "registry+https://github.com/rust-lang/crates.io-index" 1505 799 checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 1506 - dependencies = [ 1507 - "critical-section", 1508 - "portable-atomic", 1509 - ] 1510 800 1511 801 [[package]] 1512 802 name = "openssl-probe" ··· 1521 811 checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 1522 812 1523 813 [[package]] 1524 - name = "p256" 1525 - version = "0.13.2" 1526 - source = "registry+https://github.com/rust-lang/crates.io-index" 1527 - checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" 1528 - dependencies = [ 1529 - "ecdsa", 1530 - "elliptic-curve", 1531 - "primeorder", 1532 - "sha2", 1533 - ] 1534 - 1535 - [[package]] 1536 - name = "p384" 1537 - version = "0.13.1" 1538 - source = "registry+https://github.com/rust-lang/crates.io-index" 1539 - checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" 1540 - dependencies = [ 1541 - "ecdsa", 1542 - "elliptic-curve", 1543 - "primeorder", 1544 - "sha2", 1545 - ] 1546 - 1547 - [[package]] 1548 814 name = "papaya" 1549 815 version = "0.2.3" 1550 816 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1596 862 ] 1597 863 1598 864 [[package]] 1599 - name = "pem-rfc7468" 1600 - version = "0.7.0" 1601 - source = "registry+https://github.com/rust-lang/crates.io-index" 1602 - checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" 1603 - dependencies = [ 1604 - "base64ct", 1605 - ] 1606 - 1607 - [[package]] 1608 865 name = "percent-encoding" 1609 866 version = "2.3.1" 1610 867 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1623 880 checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1624 881 1625 882 [[package]] 1626 - name = "pkcs8" 1627 - version = "0.10.2" 1628 - source = "registry+https://github.com/rust-lang/crates.io-index" 1629 - checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" 1630 - dependencies = [ 1631 - "der", 1632 - "spki", 1633 - ] 1634 - 1635 - [[package]] 1636 - name = "pkg-config" 1637 - version = "0.3.32" 1638 - source = "registry+https://github.com/rust-lang/crates.io-index" 1639 - checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 1640 - 1641 - [[package]] 1642 - name = "portable-atomic" 1643 - version = "1.11.1" 1644 - source = "registry+https://github.com/rust-lang/crates.io-index" 1645 - checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" 1646 - 1647 - [[package]] 1648 - name = "potential_utf" 1649 - version = "0.1.2" 1650 - source = "registry+https://github.com/rust-lang/crates.io-index" 1651 - checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" 1652 - dependencies = [ 1653 - "zerovec", 1654 - ] 1655 - 1656 - [[package]] 1657 - name = "ppv-lite86" 1658 - version = "0.2.21" 1659 - source = "registry+https://github.com/rust-lang/crates.io-index" 1660 - checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 1661 - dependencies = [ 1662 - "zerocopy", 1663 - ] 1664 - 1665 - [[package]] 1666 - name = "primeorder" 1667 - version = "0.13.6" 1668 - source = "registry+https://github.com/rust-lang/crates.io-index" 1669 - checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" 1670 - dependencies = [ 1671 - "elliptic-curve", 1672 - ] 1673 - 1674 - [[package]] 1675 883 name = "proc-macro2" 1676 884 version = "1.0.95" 1677 885 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1702 910 1703 911 [[package]] 1704 912 name = "quick_cache" 1705 - version = "0.6.14" 913 + version = "0.6.15" 1706 914 source = "registry+https://github.com/rust-lang/crates.io-index" 1707 - checksum = "6b450dad8382b1b95061d5ca1eb792081fb082adf48c678791fe917509596d5f" 915 + checksum = "8565e62e02af316570d4b492f17af1481d6c07cea60f4e7edd71700da5052ba9" 1708 916 dependencies = [ 1709 917 "equivalent", 1710 918 "hashbrown 0.15.4", 1711 919 ] 1712 920 1713 921 [[package]] 1714 - name = "quinn" 1715 - version = "0.11.8" 1716 - source = "registry+https://github.com/rust-lang/crates.io-index" 1717 - checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" 1718 - dependencies = [ 1719 - "bytes", 1720 - "cfg_aliases", 1721 - "pin-project-lite", 1722 - "quinn-proto", 1723 - "quinn-udp", 1724 - "rustc-hash", 1725 - "rustls", 1726 - "socket2", 1727 - "thiserror 2.0.12", 1728 - "tokio", 1729 - "tracing", 1730 - "web-time", 1731 - ] 1732 - 1733 - [[package]] 1734 - name = "quinn-proto" 1735 - version = "0.11.12" 1736 - source = "registry+https://github.com/rust-lang/crates.io-index" 1737 - checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" 1738 - dependencies = [ 1739 - "bytes", 1740 - "getrandom 0.3.3", 1741 - "lru-slab", 1742 - "rand 0.9.1", 1743 - "ring", 1744 - "rustc-hash", 1745 - "rustls", 1746 - "rustls-pki-types", 1747 - "slab", 1748 - "thiserror 2.0.12", 1749 - "tinyvec", 1750 - "tracing", 1751 - "web-time", 1752 - ] 1753 - 1754 - [[package]] 1755 - name = "quinn-udp" 1756 - version = "0.5.13" 1757 - source = "registry+https://github.com/rust-lang/crates.io-index" 1758 - checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" 1759 - dependencies = [ 1760 - "cfg_aliases", 1761 - "libc", 1762 - "once_cell", 1763 - "socket2", 1764 - "tracing", 1765 - "windows-sys 0.59.0", 1766 - ] 1767 - 1768 - [[package]] 1769 922 name = "quote" 1770 923 version = "1.0.40" 1771 924 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1790 943 ] 1791 944 1792 945 [[package]] 1793 - name = "rand" 1794 - version = "0.8.5" 1795 - source = "registry+https://github.com/rust-lang/crates.io-index" 1796 - checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1797 - dependencies = [ 1798 - "libc", 1799 - "rand_chacha 0.3.1", 1800 - "rand_core 0.6.4", 1801 - ] 1802 - 1803 - [[package]] 1804 - name = "rand" 1805 - version = "0.9.1" 1806 - source = "registry+https://github.com/rust-lang/crates.io-index" 1807 - checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" 1808 - dependencies = [ 1809 - "rand_chacha 0.9.0", 1810 - "rand_core 0.9.3", 1811 - ] 1812 - 1813 - [[package]] 1814 - name = "rand_chacha" 1815 - version = "0.3.1" 1816 - source = "registry+https://github.com/rust-lang/crates.io-index" 1817 - checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1818 - dependencies = [ 1819 - "ppv-lite86", 1820 - "rand_core 0.6.4", 1821 - ] 1822 - 1823 - [[package]] 1824 - name = "rand_chacha" 1825 - version = "0.9.0" 1826 - source = "registry+https://github.com/rust-lang/crates.io-index" 1827 - checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 1828 - dependencies = [ 1829 - "ppv-lite86", 1830 - "rand_core 0.9.3", 1831 - ] 1832 - 1833 - [[package]] 1834 - name = "rand_core" 1835 - version = "0.6.4" 1836 - source = "registry+https://github.com/rust-lang/crates.io-index" 1837 - checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1838 - dependencies = [ 1839 - "getrandom 0.2.16", 1840 - ] 1841 - 1842 - [[package]] 1843 - name = "rand_core" 1844 - version = "0.9.3" 1845 - source = "registry+https://github.com/rust-lang/crates.io-index" 1846 - checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" 1847 - dependencies = [ 1848 - "getrandom 0.3.3", 1849 - ] 1850 - 1851 - [[package]] 1852 946 name = "redox_syscall" 1853 - version = "0.5.13" 947 + version = "0.5.15" 1854 948 source = "registry+https://github.com/rust-lang/crates.io-index" 1855 - checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" 949 + checksum = "7e8af0dde094006011e6a740d4879319439489813bd0bcdc7d821beaeeff48ec" 1856 950 dependencies = [ 1857 951 "bitflags", 1858 952 ] 1859 953 1860 954 [[package]] 1861 - name = "regex" 1862 - version = "1.11.1" 1863 - source = "registry+https://github.com/rust-lang/crates.io-index" 1864 - checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" 1865 - dependencies = [ 1866 - "aho-corasick", 1867 - "memchr", 1868 - "regex-automata 0.4.9", 1869 - "regex-syntax 0.8.5", 1870 - ] 1871 - 1872 - [[package]] 1873 - name = "regex-automata" 1874 - version = "0.1.10" 1875 - source = "registry+https://github.com/rust-lang/crates.io-index" 1876 - checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 1877 - dependencies = [ 1878 - "regex-syntax 0.6.29", 1879 - ] 1880 - 1881 - [[package]] 1882 - name = "regex-automata" 1883 - version = "0.4.9" 1884 - source = "registry+https://github.com/rust-lang/crates.io-index" 1885 - checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" 1886 - dependencies = [ 1887 - "aho-corasick", 1888 - "memchr", 1889 - "regex-syntax 0.8.5", 1890 - ] 1891 - 1892 - [[package]] 1893 - name = "regex-syntax" 1894 - version = "0.6.29" 1895 - source = "registry+https://github.com/rust-lang/crates.io-index" 1896 - checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 1897 - 1898 - [[package]] 1899 - name = "regex-syntax" 1900 - version = "0.8.5" 1901 - source = "registry+https://github.com/rust-lang/crates.io-index" 1902 - checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" 1903 - 1904 - [[package]] 1905 955 name = "rend" 1906 956 version = "0.5.2" 1907 957 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1911 961 ] 1912 962 1913 963 [[package]] 1914 - name = "reqwest" 1915 - version = "0.12.22" 1916 - source = "registry+https://github.com/rust-lang/crates.io-index" 1917 - checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" 1918 - dependencies = [ 1919 - "base64", 1920 - "bytes", 1921 - "encoding_rs", 1922 - "futures-core", 1923 - "h2", 1924 - "http", 1925 - "http-body", 1926 - "http-body-util", 1927 - "hyper", 1928 - "hyper-rustls", 1929 - "hyper-util", 1930 - "js-sys", 1931 - "log", 1932 - "mime", 1933 - "percent-encoding", 1934 - "pin-project-lite", 1935 - "quinn", 1936 - "rustls", 1937 - "rustls-pki-types", 1938 - "serde", 1939 - "serde_json", 1940 - "serde_urlencoded", 1941 - "sync_wrapper", 1942 - "tokio", 1943 - "tokio-rustls", 1944 - "tower", 1945 - "tower-http", 1946 - "tower-service", 1947 - "url", 1948 - "wasm-bindgen", 1949 - "wasm-bindgen-futures", 1950 - "web-sys", 1951 - "webpki-roots", 1952 - ] 1953 - 1954 - [[package]] 1955 - name = "resolv-conf" 1956 - version = "0.7.4" 1957 - source = "registry+https://github.com/rust-lang/crates.io-index" 1958 - checksum = "95325155c684b1c89f7765e30bc1c42e4a6da51ca513615660cb8a62ef9a88e3" 1959 - 1960 - [[package]] 1961 - name = "rfc6979" 1962 - version = "0.4.0" 1963 - source = "registry+https://github.com/rust-lang/crates.io-index" 1964 - checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" 1965 - dependencies = [ 1966 - "hmac", 1967 - "subtle", 1968 - ] 1969 - 1970 - [[package]] 1971 964 name = "ring" 1972 965 version = "0.17.14" 1973 966 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2024 1017 checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" 2025 1018 2026 1019 [[package]] 2027 - name = "rustc_version" 2028 - version = "0.4.1" 2029 - source = "registry+https://github.com/rust-lang/crates.io-index" 2030 - checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" 2031 - dependencies = [ 2032 - "semver", 2033 - ] 2034 - 2035 - [[package]] 2036 1020 name = "rustix" 2037 1021 version = "1.0.8" 2038 1022 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2051 1035 source = "registry+https://github.com/rust-lang/crates.io-index" 2052 1036 checksum = "2491382039b29b9b11ff08b76ff6c97cf287671dbb74f0be44bda389fffe9bd1" 2053 1037 dependencies = [ 1038 + "log", 2054 1039 "once_cell", 2055 1040 "ring", 2056 1041 "rustls-pki-types", ··· 2077 1062 source = "registry+https://github.com/rust-lang/crates.io-index" 2078 1063 checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" 2079 1064 dependencies = [ 2080 - "web-time", 2081 1065 "zeroize", 2082 1066 ] 2083 1067 2084 1068 [[package]] 1069 + name = "rustls-platform-verifier" 1070 + version = "0.6.0" 1071 + source = "registry+https://github.com/rust-lang/crates.io-index" 1072 + checksum = "eda84358ed17f1f354cf4b1909ad346e6c7bc2513e8c40eb08e0157aa13a9070" 1073 + dependencies = [ 1074 + "core-foundation", 1075 + "core-foundation-sys", 1076 + "jni", 1077 + "log", 1078 + "once_cell", 1079 + "rustls", 1080 + "rustls-native-certs", 1081 + "rustls-platform-verifier-android", 1082 + "rustls-webpki", 1083 + "security-framework", 1084 + "security-framework-sys", 1085 + "webpki-root-certs", 1086 + "windows-sys 0.52.0", 1087 + ] 1088 + 1089 + [[package]] 1090 + name = "rustls-platform-verifier-android" 1091 + version = "0.1.1" 1092 + source = "registry+https://github.com/rust-lang/crates.io-index" 1093 + checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" 1094 + 1095 + [[package]] 2085 1096 name = "rustls-webpki" 2086 1097 version = "0.103.4" 2087 1098 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2105 1116 checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 2106 1117 2107 1118 [[package]] 1119 + name = "same-file" 1120 + version = "1.0.6" 1121 + source = "registry+https://github.com/rust-lang/crates.io-index" 1122 + checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 1123 + dependencies = [ 1124 + "winapi-util", 1125 + ] 1126 + 1127 + [[package]] 2108 1128 name = "schannel" 2109 1129 version = "0.1.27" 2110 1130 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2114 1134 ] 2115 1135 2116 1136 [[package]] 2117 - name = "scoped-tls" 2118 - version = "1.0.1" 2119 - source = "registry+https://github.com/rust-lang/crates.io-index" 2120 - checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 2121 - 2122 - [[package]] 2123 1137 name = "scopeguard" 2124 1138 version = "1.2.0" 2125 1139 source = "registry+https://github.com/rust-lang/crates.io-index" 2126 1140 checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2127 1141 2128 1142 [[package]] 2129 - name = "sec1" 2130 - version = "0.7.3" 2131 - source = "registry+https://github.com/rust-lang/crates.io-index" 2132 - checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" 2133 - dependencies = [ 2134 - "base16ct", 2135 - "der", 2136 - "generic-array", 2137 - "pkcs8", 2138 - "serdect", 2139 - "subtle", 2140 - "zeroize", 2141 - ] 2142 - 2143 - [[package]] 2144 1143 name = "security-framework" 2145 1144 version = "3.2.0" 2146 1145 source = "registry+https://github.com/rust-lang/crates.io-index" 2147 1146 checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" 2148 1147 dependencies = [ 2149 1148 "bitflags", 2150 - "core-foundation 0.10.1", 1149 + "core-foundation", 2151 1150 "core-foundation-sys", 2152 1151 "libc", 2153 1152 "security-framework-sys", ··· 2180 1179 checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" 2181 1180 2182 1181 [[package]] 2183 - name = "semver" 2184 - version = "1.0.26" 2185 - source = "registry+https://github.com/rust-lang/crates.io-index" 2186 - checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" 2187 - 2188 - [[package]] 2189 1182 name = "serde" 2190 1183 version = "1.0.219" 2191 1184 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2195 1188 ] 2196 1189 2197 1190 [[package]] 2198 - name = "serde_bytes" 2199 - version = "0.11.17" 2200 - source = "registry+https://github.com/rust-lang/crates.io-index" 2201 - checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" 2202 - dependencies = [ 2203 - "serde", 2204 - ] 2205 - 2206 - [[package]] 2207 1191 name = "serde_derive" 2208 1192 version = "1.0.219" 2209 1193 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2215 1199 ] 2216 1200 2217 1201 [[package]] 2218 - name = "serde_ipld_dagcbor" 2219 - version = "0.6.3" 2220 - source = "registry+https://github.com/rust-lang/crates.io-index" 2221 - checksum = "99600723cf53fb000a66175555098db7e75217c415bdd9a16a65d52a19dcc4fc" 2222 - dependencies = [ 2223 - "cbor4ii", 2224 - "ipld-core", 2225 - "scopeguard", 2226 - "serde", 2227 - ] 2228 - 2229 - [[package]] 2230 1202 name = "serde_json" 2231 1203 version = "1.0.141" 2232 1204 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2249 1221 ] 2250 1222 2251 1223 [[package]] 2252 - name = "serde_urlencoded" 2253 - version = "0.7.1" 2254 - source = "registry+https://github.com/rust-lang/crates.io-index" 2255 - checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 2256 - dependencies = [ 2257 - "form_urlencoded", 2258 - "itoa", 2259 - "ryu", 2260 - "serde", 2261 - ] 2262 - 2263 - [[package]] 2264 - name = "serdect" 2265 - version = "0.2.0" 2266 - source = "registry+https://github.com/rust-lang/crates.io-index" 2267 - checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" 2268 - dependencies = [ 2269 - "base16ct", 2270 - "serde", 2271 - ] 2272 - 2273 - [[package]] 2274 1224 name = "server" 2275 1225 version = "0.1.0" 2276 1226 dependencies = [ 2277 1227 "anyhow", 2278 1228 "async-trait", 2279 - "atproto-jetstream", 2280 1229 "axum", 1230 + "axum-tws", 2281 1231 "fjall", 1232 + "futures-util", 2282 1233 "papaya", 2283 1234 "rkyv", 1235 + "rustls", 2284 1236 "serde", 2285 1237 "serde_json", 2286 1238 "smol_str", 2287 1239 "tikv-jemallocator", 2288 1240 "tokio", 1241 + "tokio-util", 1242 + "tokio-websockets", 2289 1243 "tower-http", 2290 1244 "tracing", 2291 1245 "tracing-subscriber", ··· 2303 1257 ] 2304 1258 2305 1259 [[package]] 2306 - name = "sha2" 2307 - version = "0.10.9" 2308 - source = "registry+https://github.com/rust-lang/crates.io-index" 2309 - checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" 2310 - dependencies = [ 2311 - "cfg-if", 2312 - "cpufeatures", 2313 - "digest", 2314 - ] 2315 - 2316 - [[package]] 2317 1260 name = "sharded-slab" 2318 1261 version = "0.1.7" 2319 1262 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2335 1278 checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" 2336 1279 dependencies = [ 2337 1280 "libc", 2338 - ] 2339 - 2340 - [[package]] 2341 - name = "signature" 2342 - version = "2.2.0" 2343 - source = "registry+https://github.com/rust-lang/crates.io-index" 2344 - checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" 2345 - dependencies = [ 2346 - "digest", 2347 - "rand_core 0.6.4", 2348 1281 ] 2349 1282 2350 1283 [[package]] ··· 2386 1319 ] 2387 1320 2388 1321 [[package]] 2389 - name = "spki" 2390 - version = "0.7.3" 2391 - source = "registry+https://github.com/rust-lang/crates.io-index" 2392 - checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" 2393 - dependencies = [ 2394 - "base64ct", 2395 - "der", 2396 - ] 2397 - 2398 - [[package]] 2399 - name = "stable_deref_trait" 2400 - version = "1.2.0" 2401 - source = "registry+https://github.com/rust-lang/crates.io-index" 2402 - checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 2403 - 2404 - [[package]] 2405 1322 name = "std-semaphore" 2406 1323 version = "0.1.0" 2407 1324 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2429 1346 version = "1.0.2" 2430 1347 source = "registry+https://github.com/rust-lang/crates.io-index" 2431 1348 checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 2432 - dependencies = [ 2433 - "futures-core", 2434 - ] 2435 - 2436 - [[package]] 2437 - name = "synstructure" 2438 - version = "0.13.2" 2439 - source = "registry+https://github.com/rust-lang/crates.io-index" 2440 - checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 2441 - dependencies = [ 2442 - "proc-macro2", 2443 - "quote", 2444 - "syn", 2445 - ] 2446 - 2447 - [[package]] 2448 - name = "system-configuration" 2449 - version = "0.6.1" 2450 - source = "registry+https://github.com/rust-lang/crates.io-index" 2451 - checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" 2452 - dependencies = [ 2453 - "bitflags", 2454 - "core-foundation 0.9.4", 2455 - "system-configuration-sys", 2456 - ] 2457 - 2458 - [[package]] 2459 - name = "system-configuration-sys" 2460 - version = "0.6.0" 2461 - source = "registry+https://github.com/rust-lang/crates.io-index" 2462 - checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" 2463 - dependencies = [ 2464 - "core-foundation-sys", 2465 - "libc", 2466 - ] 2467 - 2468 - [[package]] 2469 - name = "tagptr" 2470 - version = "0.2.0" 2471 - source = "registry+https://github.com/rust-lang/crates.io-index" 2472 - checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" 2473 1349 2474 1350 [[package]] 2475 1351 name = "tempfile" ··· 2490 1366 source = "registry+https://github.com/rust-lang/crates.io-index" 2491 1367 checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 2492 1368 dependencies = [ 2493 - "thiserror-impl 1.0.69", 2494 - ] 2495 - 2496 - [[package]] 2497 - name = "thiserror" 2498 - version = "2.0.12" 2499 - source = "registry+https://github.com/rust-lang/crates.io-index" 2500 - checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" 2501 - dependencies = [ 2502 - "thiserror-impl 2.0.12", 1369 + "thiserror-impl", 2503 1370 ] 2504 1371 2505 1372 [[package]] ··· 2514 1381 ] 2515 1382 2516 1383 [[package]] 2517 - name = "thiserror-impl" 2518 - version = "2.0.12" 2519 - source = "registry+https://github.com/rust-lang/crates.io-index" 2520 - checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" 2521 - dependencies = [ 2522 - "proc-macro2", 2523 - "quote", 2524 - "syn", 2525 - ] 2526 - 2527 - [[package]] 2528 1384 name = "thread_local" 2529 1385 version = "1.1.9" 2530 1386 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2551 1407 dependencies = [ 2552 1408 "libc", 2553 1409 "tikv-jemalloc-sys", 2554 - ] 2555 - 2556 - [[package]] 2557 - name = "tinystr" 2558 - version = "0.8.1" 2559 - source = "registry+https://github.com/rust-lang/crates.io-index" 2560 - checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" 2561 - dependencies = [ 2562 - "displaydoc", 2563 - "zerovec", 2564 1410 ] 2565 1411 2566 1412 [[package]] ··· 2617 1463 dependencies = [ 2618 1464 "rustls", 2619 1465 "tokio", 2620 - ] 2621 - 2622 - [[package]] 2623 - name = "tokio-tungstenite" 2624 - version = "0.26.2" 2625 - source = "registry+https://github.com/rust-lang/crates.io-index" 2626 - checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" 2627 - dependencies = [ 2628 - "futures-util", 2629 - "log", 2630 - "tokio", 2631 - "tungstenite", 2632 1466 ] 2633 1467 2634 1468 [[package]] ··· 2642 1476 "futures-sink", 2643 1477 "pin-project-lite", 2644 1478 "tokio", 1479 + "tracing", 2645 1480 ] 2646 1481 2647 1482 [[package]] 2648 1483 name = "tokio-websockets" 2649 - version = "0.11.4" 1484 + version = "0.12.0" 2650 1485 source = "registry+https://github.com/rust-lang/crates.io-index" 2651 - checksum = "9fcaf159b4e7a376b05b5bfd77bfd38f3324f5fce751b4213bfc7eaa47affb4e" 1486 + checksum = "3f29ba084eb43becc9864ba514b4a64f5f65b82f9a6ffbafa5436c1c80605f03" 2652 1487 dependencies = [ 2653 1488 "base64", 2654 1489 "bytes", 2655 1490 "futures-core", 2656 1491 "futures-sink", 1492 + "getrandom 0.3.3", 2657 1493 "http", 2658 1494 "httparse", 2659 - "rand 0.9.1", 2660 1495 "ring", 2661 - "rustls-native-certs", 2662 1496 "rustls-pki-types", 1497 + "rustls-platform-verifier", 2663 1498 "simdutf8", 2664 1499 "tokio", 2665 1500 "tokio-rustls", ··· 2679 1514 "tokio", 2680 1515 "tower-layer", 2681 1516 "tower-service", 2682 - "tracing", 2683 1517 ] 2684 1518 2685 1519 [[package]] ··· 2690 1524 dependencies = [ 2691 1525 "bitflags", 2692 1526 "bytes", 2693 - "futures-util", 2694 1527 "http", 2695 1528 "http-body", 2696 - "iri-string", 2697 1529 "pin-project-lite", 2698 - "tower", 2699 1530 "tower-layer", 2700 1531 "tower-service", 1532 + "tracing", 2701 1533 "uuid", 2702 1534 ] 2703 1535 ··· 2719 1551 source = "registry+https://github.com/rust-lang/crates.io-index" 2720 1552 checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 2721 1553 dependencies = [ 2722 - "log", 2723 1554 "pin-project-lite", 2724 1555 "tracing-attributes", 2725 1556 "tracing-core", ··· 2763 1594 source = "registry+https://github.com/rust-lang/crates.io-index" 2764 1595 checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" 2765 1596 dependencies = [ 2766 - "matchers", 2767 1597 "nu-ansi-term", 2768 - "once_cell", 2769 - "regex", 2770 1598 "sharded-slab", 2771 1599 "smallvec", 2772 1600 "thread_local", 2773 - "tracing", 2774 1601 "tracing-core", 2775 1602 "tracing-log", 2776 1603 ] 2777 1604 2778 1605 [[package]] 2779 - name = "try-lock" 2780 - version = "0.2.5" 2781 - source = "registry+https://github.com/rust-lang/crates.io-index" 2782 - checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 2783 - 2784 - [[package]] 2785 - name = "tungstenite" 2786 - version = "0.26.2" 2787 - source = "registry+https://github.com/rust-lang/crates.io-index" 2788 - checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" 2789 - dependencies = [ 2790 - "bytes", 2791 - "data-encoding", 2792 - "http", 2793 - "httparse", 2794 - "log", 2795 - "rand 0.9.1", 2796 - "sha1", 2797 - "thiserror 2.0.12", 2798 - "utf-8", 2799 - ] 2800 - 2801 - [[package]] 2802 1606 name = "typenum" 2803 1607 version = "1.18.0" 2804 1608 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2811 1615 checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 2812 1616 2813 1617 [[package]] 2814 - name = "unsigned-varint" 2815 - version = "0.8.0" 2816 - source = "registry+https://github.com/rust-lang/crates.io-index" 2817 - checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" 2818 - 2819 - [[package]] 2820 1618 name = "untrusted" 2821 1619 version = "0.9.0" 2822 1620 source = "registry+https://github.com/rust-lang/crates.io-index" 2823 1621 checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 2824 1622 2825 1623 [[package]] 2826 - name = "url" 2827 - version = "2.5.4" 2828 - source = "registry+https://github.com/rust-lang/crates.io-index" 2829 - checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" 2830 - dependencies = [ 2831 - "form_urlencoded", 2832 - "idna", 2833 - "percent-encoding", 2834 - ] 2835 - 2836 - [[package]] 2837 - name = "urlencoding" 2838 - version = "2.1.3" 2839 - source = "registry+https://github.com/rust-lang/crates.io-index" 2840 - checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" 2841 - 2842 - [[package]] 2843 - name = "utf-8" 2844 - version = "0.7.6" 2845 - source = "registry+https://github.com/rust-lang/crates.io-index" 2846 - checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 2847 - 2848 - [[package]] 2849 - name = "utf8_iter" 2850 - version = "1.0.4" 2851 - source = "registry+https://github.com/rust-lang/crates.io-index" 2852 - checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 2853 - 2854 - [[package]] 2855 1624 name = "uuid" 2856 1625 version = "1.17.0" 2857 1626 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2898 1667 checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 2899 1668 2900 1669 [[package]] 2901 - name = "want" 2902 - version = "0.3.1" 1670 + name = "walkdir" 1671 + version = "2.5.0" 2903 1672 source = "registry+https://github.com/rust-lang/crates.io-index" 2904 - checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 1673 + checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 2905 1674 dependencies = [ 2906 - "try-lock", 1675 + "same-file", 1676 + "winapi-util", 2907 1677 ] 2908 1678 2909 1679 [[package]] ··· 2945 1715 "quote", 2946 1716 "syn", 2947 1717 "wasm-bindgen-shared", 2948 - ] 2949 - 2950 - [[package]] 2951 - name = "wasm-bindgen-futures" 2952 - version = "0.4.50" 2953 - source = "registry+https://github.com/rust-lang/crates.io-index" 2954 - checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" 2955 - dependencies = [ 2956 - "cfg-if", 2957 - "js-sys", 2958 - "once_cell", 2959 - "wasm-bindgen", 2960 - "web-sys", 2961 1718 ] 2962 1719 2963 1720 [[package]] ··· 2993 1750 ] 2994 1751 2995 1752 [[package]] 2996 - name = "web-sys" 2997 - version = "0.3.77" 2998 - source = "registry+https://github.com/rust-lang/crates.io-index" 2999 - checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" 3000 - dependencies = [ 3001 - "js-sys", 3002 - "wasm-bindgen", 3003 - ] 3004 - 3005 - [[package]] 3006 - name = "web-time" 3007 - version = "1.1.0" 3008 - source = "registry+https://github.com/rust-lang/crates.io-index" 3009 - checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 3010 - dependencies = [ 3011 - "js-sys", 3012 - "wasm-bindgen", 3013 - ] 3014 - 3015 - [[package]] 3016 - name = "webpki-roots" 3017 - version = "1.0.2" 1753 + name = "webpki-root-certs" 1754 + version = "1.0.1" 3018 1755 source = "registry+https://github.com/rust-lang/crates.io-index" 3019 - checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" 1756 + checksum = "86138b15b2b7d561bc4469e77027b8dd005a43dc502e9031d1f5afc8ce1f280e" 3020 1757 dependencies = [ 3021 1758 "rustls-pki-types", 3022 1759 ] 3023 1760 3024 1761 [[package]] 3025 - name = "widestring" 3026 - version = "1.2.0" 3027 - source = "registry+https://github.com/rust-lang/crates.io-index" 3028 - checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" 3029 - 3030 - [[package]] 3031 1762 name = "winapi" 3032 1763 version = "0.3.9" 3033 1764 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3044 1775 checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 3045 1776 3046 1777 [[package]] 3047 - name = "winapi-x86_64-pc-windows-gnu" 3048 - version = "0.4.0" 3049 - source = "registry+https://github.com/rust-lang/crates.io-index" 3050 - checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3051 - 3052 - [[package]] 3053 - name = "windows" 3054 - version = "0.61.3" 3055 - source = "registry+https://github.com/rust-lang/crates.io-index" 3056 - checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" 3057 - dependencies = [ 3058 - "windows-collections", 3059 - "windows-core", 3060 - "windows-future", 3061 - "windows-link", 3062 - "windows-numerics", 3063 - ] 3064 - 3065 - [[package]] 3066 - name = "windows-collections" 3067 - version = "0.2.0" 3068 - source = "registry+https://github.com/rust-lang/crates.io-index" 3069 - checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" 3070 - dependencies = [ 3071 - "windows-core", 3072 - ] 3073 - 3074 - [[package]] 3075 - name = "windows-core" 3076 - version = "0.61.2" 3077 - source = "registry+https://github.com/rust-lang/crates.io-index" 3078 - checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" 3079 - dependencies = [ 3080 - "windows-implement", 3081 - "windows-interface", 3082 - "windows-link", 3083 - "windows-result", 3084 - "windows-strings", 3085 - ] 3086 - 3087 - [[package]] 3088 - name = "windows-future" 3089 - version = "0.2.1" 3090 - source = "registry+https://github.com/rust-lang/crates.io-index" 3091 - checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" 3092 - dependencies = [ 3093 - "windows-core", 3094 - "windows-link", 3095 - "windows-threading", 3096 - ] 3097 - 3098 - [[package]] 3099 - name = "windows-implement" 3100 - version = "0.60.0" 3101 - source = "registry+https://github.com/rust-lang/crates.io-index" 3102 - checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" 3103 - dependencies = [ 3104 - "proc-macro2", 3105 - "quote", 3106 - "syn", 3107 - ] 3108 - 3109 - [[package]] 3110 - name = "windows-interface" 3111 - version = "0.59.1" 3112 - source = "registry+https://github.com/rust-lang/crates.io-index" 3113 - checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" 3114 - dependencies = [ 3115 - "proc-macro2", 3116 - "quote", 3117 - "syn", 3118 - ] 3119 - 3120 - [[package]] 3121 - name = "windows-link" 3122 - version = "0.1.3" 3123 - source = "registry+https://github.com/rust-lang/crates.io-index" 3124 - checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" 3125 - 3126 - [[package]] 3127 - name = "windows-numerics" 3128 - version = "0.2.0" 3129 - source = "registry+https://github.com/rust-lang/crates.io-index" 3130 - checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" 3131 - dependencies = [ 3132 - "windows-core", 3133 - "windows-link", 3134 - ] 3135 - 3136 - [[package]] 3137 - name = "windows-registry" 3138 - version = "0.5.3" 3139 - source = "registry+https://github.com/rust-lang/crates.io-index" 3140 - checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" 3141 - dependencies = [ 3142 - "windows-link", 3143 - "windows-result", 3144 - "windows-strings", 3145 - ] 3146 - 3147 - [[package]] 3148 - name = "windows-result" 3149 - version = "0.3.4" 1778 + name = "winapi-util" 1779 + version = "0.1.9" 3150 1780 source = "registry+https://github.com/rust-lang/crates.io-index" 3151 - checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" 1781 + checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" 3152 1782 dependencies = [ 3153 - "windows-link", 1783 + "windows-sys 0.59.0", 3154 1784 ] 3155 1785 3156 1786 [[package]] 3157 - name = "windows-strings" 3158 - version = "0.4.2" 1787 + name = "winapi-x86_64-pc-windows-gnu" 1788 + version = "0.4.0" 3159 1789 source = "registry+https://github.com/rust-lang/crates.io-index" 3160 - checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" 3161 - dependencies = [ 3162 - "windows-link", 3163 - ] 1790 + checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3164 1791 3165 1792 [[package]] 3166 1793 name = "windows-sys" 3167 - version = "0.48.0" 1794 + version = "0.45.0" 3168 1795 source = "registry+https://github.com/rust-lang/crates.io-index" 3169 - checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 1796 + checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 3170 1797 dependencies = [ 3171 - "windows-targets 0.48.5", 1798 + "windows-targets 0.42.2", 3172 1799 ] 3173 1800 3174 1801 [[package]] ··· 3200 1827 3201 1828 [[package]] 3202 1829 name = "windows-targets" 3203 - version = "0.48.5" 1830 + version = "0.42.2" 3204 1831 source = "registry+https://github.com/rust-lang/crates.io-index" 3205 - checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 1832 + checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 3206 1833 dependencies = [ 3207 - "windows_aarch64_gnullvm 0.48.5", 3208 - "windows_aarch64_msvc 0.48.5", 3209 - "windows_i686_gnu 0.48.5", 3210 - "windows_i686_msvc 0.48.5", 3211 - "windows_x86_64_gnu 0.48.5", 3212 - "windows_x86_64_gnullvm 0.48.5", 3213 - "windows_x86_64_msvc 0.48.5", 1834 + "windows_aarch64_gnullvm 0.42.2", 1835 + "windows_aarch64_msvc 0.42.2", 1836 + "windows_i686_gnu 0.42.2", 1837 + "windows_i686_msvc 0.42.2", 1838 + "windows_x86_64_gnu 0.42.2", 1839 + "windows_x86_64_gnullvm 0.42.2", 1840 + "windows_x86_64_msvc 0.42.2", 3214 1841 ] 3215 1842 3216 1843 [[package]] ··· 3246 1873 ] 3247 1874 3248 1875 [[package]] 3249 - name = "windows-threading" 3250 - version = "0.1.0" 3251 - source = "registry+https://github.com/rust-lang/crates.io-index" 3252 - checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" 3253 - dependencies = [ 3254 - "windows-link", 3255 - ] 3256 - 3257 - [[package]] 3258 1876 name = "windows_aarch64_gnullvm" 3259 - version = "0.48.5" 1877 + version = "0.42.2" 3260 1878 source = "registry+https://github.com/rust-lang/crates.io-index" 3261 - checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 1879 + checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 3262 1880 3263 1881 [[package]] 3264 1882 name = "windows_aarch64_gnullvm" ··· 3274 1892 3275 1893 [[package]] 3276 1894 name = "windows_aarch64_msvc" 3277 - version = "0.48.5" 1895 + version = "0.42.2" 3278 1896 source = "registry+https://github.com/rust-lang/crates.io-index" 3279 - checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 1897 + checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 3280 1898 3281 1899 [[package]] 3282 1900 name = "windows_aarch64_msvc" ··· 3292 1910 3293 1911 [[package]] 3294 1912 name = "windows_i686_gnu" 3295 - version = "0.48.5" 1913 + version = "0.42.2" 3296 1914 source = "registry+https://github.com/rust-lang/crates.io-index" 3297 - checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 1915 + checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 3298 1916 3299 1917 [[package]] 3300 1918 name = "windows_i686_gnu" ··· 3322 1940 3323 1941 [[package]] 3324 1942 name = "windows_i686_msvc" 3325 - version = "0.48.5" 1943 + version = "0.42.2" 3326 1944 source = "registry+https://github.com/rust-lang/crates.io-index" 3327 - checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 1945 + checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 3328 1946 3329 1947 [[package]] 3330 1948 name = "windows_i686_msvc" ··· 3340 1958 3341 1959 [[package]] 3342 1960 name = "windows_x86_64_gnu" 3343 - version = "0.48.5" 1961 + version = "0.42.2" 3344 1962 source = "registry+https://github.com/rust-lang/crates.io-index" 3345 - checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 1963 + checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 3346 1964 3347 1965 [[package]] 3348 1966 name = "windows_x86_64_gnu" ··· 3358 1976 3359 1977 [[package]] 3360 1978 name = "windows_x86_64_gnullvm" 3361 - version = "0.48.5" 1979 + version = "0.42.2" 3362 1980 source = "registry+https://github.com/rust-lang/crates.io-index" 3363 - checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 1981 + checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 3364 1982 3365 1983 [[package]] 3366 1984 name = "windows_x86_64_gnullvm" ··· 3376 1994 3377 1995 [[package]] 3378 1996 name = "windows_x86_64_msvc" 3379 - version = "0.48.5" 1997 + version = "0.42.2" 3380 1998 source = "registry+https://github.com/rust-lang/crates.io-index" 3381 - checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 1999 + checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 3382 2000 3383 2001 [[package]] 3384 2002 name = "windows_x86_64_msvc" ··· 3393 2011 checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" 3394 2012 3395 2013 [[package]] 3396 - name = "winreg" 3397 - version = "0.50.0" 3398 - source = "registry+https://github.com/rust-lang/crates.io-index" 3399 - checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" 3400 - dependencies = [ 3401 - "cfg-if", 3402 - "windows-sys 0.48.0", 3403 - ] 3404 - 3405 - [[package]] 3406 2014 name = "wit-bindgen-rt" 3407 2015 version = "0.39.0" 3408 2016 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3412 2020 ] 3413 2021 3414 2022 [[package]] 3415 - name = "writeable" 3416 - version = "0.6.1" 3417 - source = "registry+https://github.com/rust-lang/crates.io-index" 3418 - checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" 3419 - 3420 - [[package]] 3421 2023 name = "xxhash-rust" 3422 2024 version = "0.8.15" 3423 2025 source = "registry+https://github.com/rust-lang/crates.io-index" 3424 2026 checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" 3425 2027 3426 2028 [[package]] 3427 - name = "yoke" 3428 - version = "0.8.0" 3429 - source = "registry+https://github.com/rust-lang/crates.io-index" 3430 - checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" 3431 - dependencies = [ 3432 - "serde", 3433 - "stable_deref_trait", 3434 - "yoke-derive", 3435 - "zerofrom", 3436 - ] 3437 - 3438 - [[package]] 3439 - name = "yoke-derive" 3440 - version = "0.8.0" 3441 - source = "registry+https://github.com/rust-lang/crates.io-index" 3442 - checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" 3443 - dependencies = [ 3444 - "proc-macro2", 3445 - "quote", 3446 - "syn", 3447 - "synstructure", 3448 - ] 3449 - 3450 - [[package]] 3451 - name = "zerocopy" 3452 - version = "0.8.26" 3453 - source = "registry+https://github.com/rust-lang/crates.io-index" 3454 - checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" 3455 - dependencies = [ 3456 - "zerocopy-derive", 3457 - ] 3458 - 3459 - [[package]] 3460 - name = "zerocopy-derive" 3461 - version = "0.8.26" 3462 - source = "registry+https://github.com/rust-lang/crates.io-index" 3463 - checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" 3464 - dependencies = [ 3465 - "proc-macro2", 3466 - "quote", 3467 - "syn", 3468 - ] 3469 - 3470 - [[package]] 3471 - name = "zerofrom" 3472 - version = "0.1.6" 3473 - source = "registry+https://github.com/rust-lang/crates.io-index" 3474 - checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 3475 - dependencies = [ 3476 - "zerofrom-derive", 3477 - ] 3478 - 3479 - [[package]] 3480 - name = "zerofrom-derive" 3481 - version = "0.1.6" 3482 - source = "registry+https://github.com/rust-lang/crates.io-index" 3483 - checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 3484 - dependencies = [ 3485 - "proc-macro2", 3486 - "quote", 3487 - "syn", 3488 - "synstructure", 3489 - ] 3490 - 3491 - [[package]] 3492 2029 name = "zeroize" 3493 2030 version = "1.8.1" 3494 2031 source = "registry+https://github.com/rust-lang/crates.io-index" 3495 2032 checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" 3496 - 3497 - [[package]] 3498 - name = "zerotrie" 3499 - version = "0.2.2" 3500 - source = "registry+https://github.com/rust-lang/crates.io-index" 3501 - checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" 3502 - dependencies = [ 3503 - "displaydoc", 3504 - "yoke", 3505 - "zerofrom", 3506 - ] 3507 - 3508 - [[package]] 3509 - name = "zerovec" 3510 - version = "0.11.2" 3511 - source = "registry+https://github.com/rust-lang/crates.io-index" 3512 - checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" 3513 - dependencies = [ 3514 - "yoke", 3515 - "zerofrom", 3516 - "zerovec-derive", 3517 - ] 3518 - 3519 - [[package]] 3520 - name = "zerovec-derive" 3521 - version = "0.11.1" 3522 - source = "registry+https://github.com/rust-lang/crates.io-index" 3523 - checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" 3524 - dependencies = [ 3525 - "proc-macro2", 3526 - "quote", 3527 - "syn", 3528 - ] 3529 - 3530 - [[package]] 3531 - name = "zstd" 3532 - version = "0.13.3" 3533 - source = "registry+https://github.com/rust-lang/crates.io-index" 3534 - checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" 3535 - dependencies = [ 3536 - "zstd-safe", 3537 - ] 3538 - 3539 - [[package]] 3540 - name = "zstd-safe" 3541 - version = "7.2.4" 3542 - source = "registry+https://github.com/rust-lang/crates.io-index" 3543 - checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" 3544 - dependencies = [ 3545 - "zstd-sys", 3546 - ] 3547 - 3548 - [[package]] 3549 - name = "zstd-sys" 3550 - version = "2.0.15+zstd.1.5.7" 3551 - source = "registry+https://github.com/rust-lang/crates.io-index" 3552 - checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" 3553 - dependencies = [ 3554 - "cc", 3555 - "pkg-config", 3556 - ]
+8 -4
server/Cargo.toml
··· 9 9 tracing-subscriber = "0.3" 10 10 tracing = "0.1" 11 11 tokio = { version = "1", features = ["full"] } 12 - axum = { version = "0.8", features = ["json", "ws"] } 13 - tower-http = {version = "0.6", features = ["request-id"]} 14 - atproto-jetstream = "0.9" 12 + tokio-util = { version = "0.7", features = ["tracing"] } 13 + rustls = { version = "0.23", default-features = false, features = ["log", "ring", "std"] } 14 + tokio-websockets = { version = "0.12", features = ["client", "rustls-platform-verifier", "getrandom", "ring"] } 15 + futures-util = "0.3" 16 + axum = { version = "0.8", default-features = false, features = ["http1", "tokio", "tracing", "json"] } 17 + axum-tws = { git = "https://github.com/90-008/axum-tws.git" } 18 + tower-http = {version = "0.6", features = ["request-id", "trace"]} 15 19 fjall = { version = "2", default-features = false, features = ["miniz", "lz4"] } 16 20 rkyv = {version = "0.8", features = ["unaligned"]} 17 21 smol_str = { version = "0.3", features = ["serde"] } 18 22 papaya = "0.2" 19 - serde = "1" 23 + serde = { version = "1", features = ["derive"] } 20 24 serde_json = "1.0.141" 21 25 22 26 [target.'cfg(not(target_env = "msvc"))'.dependencies]
+24 -27
server/src/api.rs
··· 1 1 use std::{net::SocketAddr, sync::Arc}; 2 2 3 - use axum::{ 4 - Json, Router, 5 - extract::{Request, State, WebSocketUpgrade, ws::Message}, 6 - middleware::Next, 7 - response::Response, 8 - routing::get, 9 - }; 3 + use anyhow::anyhow; 4 + use axum::{Json, Router, extract::State, response::Response, routing::get}; 5 + use axum_tws::{Message, WebSocketUpgrade}; 10 6 use serde::Serialize; 11 7 use smol_str::SmolStr; 8 + use tokio_util::sync::CancellationToken; 9 + use tower_http::{ 10 + request_id::{MakeRequestUuid, PropagateRequestIdLayer, SetRequestIdLayer}, 11 + trace::TraceLayer, 12 + }; 12 13 13 - use crate::{db::Db, error::AppResult}; 14 + use crate::{ 15 + db::Db, 16 + error::{AppError, AppResult}, 17 + }; 14 18 15 - pub async fn serve(db: Arc<Db>) { 19 + pub async fn serve(db: Arc<Db>, cancel_token: CancellationToken) -> AppResult<()> { 16 20 let app = Router::new() 17 21 .route("/events", get(events)) 18 22 .route("/stream_events", get(stream_events)) 19 - .route_layer(axum::middleware::from_fn(log)) 23 + .route_layer(SetRequestIdLayer::x_request_id(MakeRequestUuid)) 24 + .route_layer(TraceLayer::new_for_http()) 25 + .route_layer(PropagateRequestIdLayer::x_request_id()) 20 26 .with_state(db); 21 27 22 28 let addr = SocketAddr::from(( ··· 26 32 .and_then(|s| s.parse::<u16>().ok()) 27 33 .unwrap_or(3713), 28 34 )); 29 - let listener = tokio::net::TcpListener::bind(addr).await.unwrap(); 30 - tracing::info!("starting serve on {addr}"); 31 - axum::serve(listener, app).await.unwrap(); 32 - } 35 + let listener = tokio::net::TcpListener::bind(addr).await?; 33 36 34 - async fn log(req: Request, next: Next) -> Response { 35 - let method = req.method().clone(); 36 - let uri = req.uri().clone(); 37 - let resp = next.run(req).await; 38 - if resp.status().is_server_error() { 39 - tracing::error!("{method} {uri} ({})", resp.status()); 40 - } else { 41 - tracing::info!("{method} {uri} ({})", resp.status()); 37 + tracing::info!("starting serve on {addr}"); 38 + tokio::select! { 39 + res = axum::serve(listener, app) => res.map_err(AppError::from), 40 + _ = cancel_token.cancelled() => Err(anyhow!("cancelled").into()), 42 41 } 43 - resp 44 42 } 45 43 46 44 #[derive(Serialize)] ··· 74 72 let mut listener = db.new_listener(); 75 73 while let Ok((nsid, counts)) = listener.recv().await { 76 74 let res = socket 77 - .send(Message::Binary( 78 - serde_json::to_vec(&NsidCount { 75 + .send(Message::text( 76 + serde_json::to_string(&NsidCount { 79 77 nsid, 80 78 count: counts.count, 81 79 deleted_count: counts.deleted_count, 82 80 last_seen: counts.last_seen, 83 81 }) 84 - .unwrap() 85 - .into(), 82 + .unwrap(), 86 83 )) 87 84 .await; 88 85 if let Err(err) = res {
server/src/bsky_zstd_dictionary

This is a binary file and will not be displayed.

+4 -2
server/src/db.rs
··· 1 1 use std::{ops::Deref, path::Path}; 2 2 3 - use atproto_jetstream::JetstreamEvent; 4 3 use fjall::{Config, Keyspace, Partition, PartitionCreateOptions}; 5 4 use rkyv::{Archive, Deserialize, Serialize, rancor::Error}; 6 5 use smol_str::SmolStr; 7 6 use tokio::sync::broadcast; 8 7 9 - use crate::error::{AppError, AppResult}; 8 + use crate::{ 9 + error::{AppError, AppResult}, 10 + jetstream::JetstreamEvent, 11 + }; 10 12 11 13 #[derive(Clone, Debug, Default, Archive, Deserialize, Serialize, PartialEq)] 12 14 #[rkyv(compare(PartialEq), derive(Debug))]
+8 -7
server/src/error.rs
··· 1 - use std::{error::Error, fmt::Display}; 1 + use std::fmt::Display; 2 2 3 3 use axum::{Json, http::StatusCode, response::IntoResponse}; 4 4 use serde::Serialize; 5 5 6 6 #[derive(Debug)] 7 7 pub struct AppError { 8 - inner: Box<dyn Error + Send + 'static>, 8 + inner: anyhow::Error, 9 9 } 10 10 11 11 impl Display for AppError { ··· 14 14 } 15 15 } 16 16 17 - impl<E: Error + Send + 'static> From<E> for AppError { 18 - fn from(value: E) -> Self { 19 - Self { 20 - inner: Box::new(value), 21 - } 17 + impl<E> From<E> for AppError 18 + where 19 + E: Into<anyhow::Error>, 20 + { 21 + fn from(err: E) -> Self { 22 + Self { inner: err.into() } 22 23 } 23 24 } 24 25
+187
server/src/jetstream.rs
··· 1 + use std::time::Duration; 2 + 3 + use anyhow::anyhow; 4 + use futures_util::{SinkExt, StreamExt}; 5 + use serde::{Deserialize, Serialize}; 6 + use smol_str::SmolStr; 7 + use tokio::net::TcpStream; 8 + use tokio_util::sync::CancellationToken; 9 + use tokio_websockets::{ClientBuilder, MaybeTlsStream, Message as WsMessage, WebSocketStream}; 10 + 11 + use crate::error::AppResult; 12 + 13 + pub struct JetstreamClient { 14 + stream: Option<WebSocketStream<MaybeTlsStream<TcpStream>>>, 15 + tls_connector: tokio_websockets::Connector, 16 + url: SmolStr, 17 + } 18 + 19 + impl JetstreamClient { 20 + pub fn new(url: &str) -> AppResult<Self> { 21 + Ok(Self { 22 + stream: None, 23 + tls_connector: tokio_websockets::Connector::new()?, 24 + url: SmolStr::new(url), 25 + }) 26 + } 27 + 28 + pub async fn connect(&mut self) -> AppResult<()> { 29 + let (stream, _) = ClientBuilder::new() 30 + .connector(&self.tls_connector) 31 + .uri(&self.url)? 32 + .connect() 33 + .await?; 34 + self.stream = Some(stream); 35 + tracing::info!("connected to jetstream ({})", self.url); 36 + Ok(()) 37 + } 38 + 39 + // automatically retries connection, only returning error if it fails many times 40 + pub async fn read(&mut self, cancel_token: CancellationToken) -> AppResult<JetstreamEvent> { 41 + let mut retry = false; 42 + loop { 43 + { 44 + let Some(stream) = self.stream.as_mut() else { 45 + return Err(anyhow!("not connected, call .connect() first").into()); 46 + }; 47 + tokio::select! { 48 + res = stream.next() => match res { 49 + Some(Ok(msg)) => { 50 + if let Some(event) = msg 51 + .as_text() 52 + .and_then(|v| serde_json::from_str::<JetstreamEvent>(v).ok()) 53 + { 54 + return Ok(event); 55 + } else if msg.is_ping() { 56 + let _ = stream.send(WsMessage::pong(msg.into_payload())).await; 57 + } else { 58 + return Err(anyhow!("unsupported message type").into()); 59 + } 60 + } 61 + Some(Err(err)) => { 62 + tracing::error!("jetstream connection errored: {err}"); 63 + retry = true; 64 + } 65 + None => retry = true, 66 + }, 67 + _ = cancel_token.cancelled() => { 68 + return Err(anyhow!("cancelled").into()); 69 + } 70 + } 71 + } 72 + // retry until connected 73 + let mut backoff = Duration::from_secs(1); 74 + while retry { 75 + if backoff.as_secs() > 64 { 76 + return Err(anyhow!("jetstream connection timed out").into()); 77 + } 78 + tokio::select! { 79 + res = self.connect() => if let Err(err) = res { 80 + tracing::error!( 81 + { retry_in = %backoff.as_secs() }, 82 + "couldn't retry jetstream connection: {err}", 83 + ); 84 + tokio::time::sleep(backoff).await; 85 + backoff *= 2; 86 + continue; 87 + }, 88 + _ = cancel_token.cancelled() => { 89 + return Err(anyhow!("cancelled").into()); 90 + } 91 + } 92 + 93 + retry = false; 94 + } 95 + } 96 + } 97 + } 98 + 99 + #[derive(Debug, Clone, Serialize, Deserialize)] 100 + #[serde(untagged)] 101 + pub enum JetstreamEvent { 102 + /// Repository commit event (create/update operations) 103 + Commit { 104 + /// DID of the repository that was updated 105 + did: String, 106 + /// Event timestamp in microseconds since Unix epoch 107 + time_us: u64, 108 + /// Event type identifier 109 + kind: String, 110 + 111 + #[serde(rename = "commit")] 112 + /// Commit operation details 113 + commit: JetstreamEventCommit, 114 + }, 115 + 116 + /// Repository delete event 117 + Delete { 118 + /// DID of the repository that was updated 119 + did: String, 120 + /// Event timestamp in microseconds since Unix epoch 121 + time_us: u64, 122 + /// Event type identifier 123 + kind: String, 124 + 125 + #[serde(rename = "commit")] 126 + /// Delete operation details 127 + commit: JetstreamEventDelete, 128 + }, 129 + 130 + /// Identity document update event 131 + Identity { 132 + /// DID whose identity was updated 133 + did: String, 134 + /// Event timestamp in microseconds since Unix epoch 135 + time_us: u64, 136 + /// Event type identifier 137 + kind: String, 138 + 139 + #[serde(rename = "identity")] 140 + /// Identity document data 141 + identity: serde_json::Value, 142 + }, 143 + 144 + /// Account-related event 145 + Account { 146 + /// DID of the account 147 + did: String, 148 + /// Event timestamp in microseconds since Unix epoch 149 + time_us: u64, 150 + /// Event type identifier 151 + kind: String, 152 + 153 + #[serde(rename = "account")] 154 + /// Account data 155 + identity: serde_json::Value, 156 + }, 157 + } 158 + 159 + /// Repository commit operation details 160 + #[derive(Debug, Clone, Serialize, Deserialize)] 161 + pub struct JetstreamEventCommit { 162 + /// Repository revision identifier 163 + pub rev: String, 164 + /// Operation type (create, update) 165 + pub operation: String, 166 + /// AT Protocol collection name 167 + pub collection: String, 168 + /// Record key within the collection 169 + pub rkey: String, 170 + /// Content identifier (CID) of the record 171 + pub cid: String, 172 + /// Record data as JSON 173 + pub record: serde_json::Value, 174 + } 175 + 176 + /// Repository delete operation details 177 + #[derive(Debug, Clone, Serialize, Deserialize)] 178 + pub struct JetstreamEventDelete { 179 + /// Repository revision identifier 180 + pub rev: String, 181 + /// Operation type (delete) 182 + pub operation: String, 183 + /// AT Protocol collection name 184 + pub collection: String, 185 + /// Record key that was deleted 186 + pub rkey: String, 187 + }
+61 -56
server/src/main.rs
··· 1 1 use std::{ops::Deref, sync::Arc}; 2 2 3 - use atproto_jetstream::{CancellationToken, Consumer, EventHandler, JetstreamEvent}; 4 3 use smol_str::ToSmolStr; 5 4 #[cfg(not(target_env = "msvc"))] 6 5 use tikv_jemallocator::Jemalloc; 7 - use tokio::sync::mpsc::{Receiver, Sender}; 6 + use tokio_util::sync::CancellationToken; 8 7 9 8 use crate::{ 10 9 api::serve, 11 10 db::{Db, EventRecord}, 11 + error::AppError, 12 + jetstream::JetstreamClient, 12 13 }; 13 14 14 15 mod api; 15 16 mod db; 16 17 mod error; 18 + mod jetstream; 17 19 18 20 #[cfg(not(target_env = "msvc"))] 19 21 #[global_allocator] 20 22 static GLOBAL: Jemalloc = Jemalloc; 21 23 22 - const BSKY_ZSTD_DICT: &[u8] = include_bytes!("./bsky_zstd_dictionary"); 23 - 24 - struct JetstreamHandler { 25 - tx: Sender<EventRecord>, 26 - } 27 - 28 - impl JetstreamHandler { 29 - fn new() -> (Self, Receiver<EventRecord>) { 30 - let (tx, rx) = tokio::sync::mpsc::channel(1000); 31 - (Self { tx }, rx) 32 - } 33 - } 34 - 35 - #[async_trait::async_trait] 36 - impl EventHandler for JetstreamHandler { 37 - async fn handle_event(&self, event: JetstreamEvent) -> anyhow::Result<()> { 38 - if let Some(e) = EventRecord::from_jetstream(event) { 39 - self.tx.send(e).await?; 40 - } 41 - Ok(()) 42 - } 43 - 44 - fn handler_id(&self) -> String { 45 - "handler".to_string() 46 - } 47 - } 48 - 49 24 #[tokio::main] 50 25 async fn main() { 51 26 tracing_subscriber::fmt::fmt().compact().init(); ··· 60 35 61 36 let db = Arc::new(Db::new(".fjall_data").expect("couldnt create db")); 62 37 63 - tokio::fs::write("./bsky_zstd_dictionary", BSKY_ZSTD_DICT) 64 - .await 65 - .expect("could not write bsky zstd dict"); 38 + rustls::crypto::ring::default_provider() 39 + .install_default() 40 + .expect("cant install rustls crypto provider"); 66 41 67 - let jetstream = Consumer::new(atproto_jetstream::ConsumerTaskConfig { 68 - compression: true, 69 - jetstream_hostname: "jetstream2.us-west.bsky.network".into(), 70 - collections: Vec::new(), 71 - dids: Vec::new(), 72 - max_message_size_bytes: None, 73 - cursor: None, 74 - require_hello: true, 75 - zstd_dictionary_location: "./bsky_zstd_dictionary".into(), 76 - user_agent: "nsid-tracker/0.0.1".into(), 77 - }); 42 + let mut jetstream = 43 + match JetstreamClient::new("wss://jetstream2.us-west.bsky.network/subscribe") { 44 + Ok(client) => client, 45 + Err(err) => { 46 + tracing::error!("can't create jetstream client: {err}"); 47 + return; 48 + } 49 + }; 78 50 79 - let (event_handler, mut event_rx) = JetstreamHandler::new(); 51 + let cancel_token = CancellationToken::new(); 52 + let (event_tx, mut event_rx) = tokio::sync::mpsc::channel(1000); 80 53 81 - let cancel_token = CancellationToken::new(); 82 - tokio::spawn(async move { 83 - jetstream 84 - .register_handler(Arc::new(event_handler)) 85 - .await 86 - .expect("cant register handler"); 87 - jetstream 88 - .run_background(cancel_token.clone()) 89 - .await 90 - .expect("cant run jetstream"); 54 + let consume_events = tokio::spawn({ 55 + let consume_cancel = cancel_token.child_token(); 56 + async move { 57 + jetstream.connect().await?; 58 + loop { 59 + tokio::select! { 60 + maybe_event = jetstream.read(consume_cancel.child_token()) => match maybe_event { 61 + Ok(event) => { 62 + let Some(record) = EventRecord::from_jetstream(event) else { 63 + continue; 64 + }; 65 + let _ = event_tx.send(record).await; 66 + } 67 + Err(err) => return Err(err), 68 + }, 69 + _ = consume_cancel.cancelled() => break Ok(()), 70 + } 71 + } 72 + } 91 73 }); 92 74 93 - std::thread::spawn({ 75 + let ingest_events = std::thread::spawn({ 94 76 let db = db.clone(); 95 77 move || { 96 78 tracing::info!("starting ingest events thread..."); ··· 102 84 } 103 85 }); 104 86 105 - serve(db).await; 87 + tokio::select! { 88 + res = serve(db, cancel_token.child_token()) => { 89 + if let Err(e) = res { 90 + tracing::error!("serve failed: {}", e); 91 + } 92 + } 93 + res = consume_events => { 94 + let err = 95 + res 96 + .map_err(AppError::from) 97 + .and_then(std::convert::identity) 98 + .expect_err("consume events cant return ok"); 99 + tracing::error!("consume events failed: {}", err); 100 + }, 101 + _ = tokio::signal::ctrl_c() => { 102 + tracing::info!("received ctrl+c!"); 103 + cancel_token.cancel(); 104 + } 105 + } 106 + 107 + tracing::info!("shutting down..."); 108 + ingest_events 109 + .join() 110 + .expect("failed to join ingest events thread"); 106 111 } 107 112 108 113 fn migrate_to_miniz() {