This repository has no description
0

Configure Feed

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

feat: add atproto-oauth-dioxus crate

Dioxus fullstack integration for AT Protocol OAuth authentication
with turnkey PKCE + DPoP flow. Provides:
- AtprotoOAuthProvider context component (session state + localStorage)
- AtprotoOAuthCallback component for the OAuth redirect
- do_atproto_login / do_atproto_logout hooks
- #[server] init_atproto_oauth / complete_atproto_oauth
- #[get] /oauth/client-metadata.json endpoint
- get_active_session() for downstream DPoP-authenticated PDS calls
- Feature-gated server deps (server, hickory-dns)

Sam Zanca (Jul 7, 2026, 2:34 AM EDT) 49be057f c8b0a0e2

+3296 -583
+2107 -583
Cargo.lock
··· 105 105 106 106 [[package]] 107 107 name = "anyhow" 108 - version = "1.0.102" 108 + version = "1.0.103" 109 109 source = "registry+https://github.com/rust-lang/crates.io-index" 110 - checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" 110 + checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" 111 111 112 112 [[package]] 113 113 name = "arc-swap" 114 - version = "1.9.1" 114 + version = "1.9.2" 115 115 source = "registry+https://github.com/rust-lang/crates.io-index" 116 - checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207" 116 + checksum = "c049c0be4daef0b145cb3555416b3b8ef5b7888a38aea1a3a155801fe7b0810b" 117 117 dependencies = [ 118 118 "rustversion", 119 119 ] ··· 138 138 139 139 [[package]] 140 140 name = "arrayvec" 141 - version = "0.7.6" 141 + version = "0.7.8" 142 + source = "registry+https://github.com/rust-lang/crates.io-index" 143 + checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" 144 + 145 + [[package]] 146 + name = "askama_escape" 147 + version = "0.13.0" 142 148 source = "registry+https://github.com/rust-lang/crates.io-index" 143 - checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 149 + checksum = "3df27b8d5ddb458c5fb1bbc1ce172d4a38c614a97d550b0ac89003897fb01de4" 150 + 151 + [[package]] 152 + name = "async-stream" 153 + version = "0.3.6" 154 + source = "registry+https://github.com/rust-lang/crates.io-index" 155 + checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" 156 + dependencies = [ 157 + "async-stream-impl", 158 + "futures-core", 159 + "pin-project-lite", 160 + ] 161 + 162 + [[package]] 163 + name = "async-stream-impl" 164 + version = "0.3.6" 165 + source = "registry+https://github.com/rust-lang/crates.io-index" 166 + checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" 167 + dependencies = [ 168 + "proc-macro2", 169 + "quote", 170 + "syn", 171 + ] 144 172 145 173 [[package]] 146 174 name = "async-trait" ··· 154 182 ] 155 183 156 184 [[package]] 185 + name = "async-tungstenite" 186 + version = "0.31.0" 187 + source = "registry+https://github.com/rust-lang/crates.io-index" 188 + checksum = "ee88b4c88ac8c9ea446ad43498955750a4bbe64c4392f21ccfe5d952865e318f" 189 + dependencies = [ 190 + "atomic-waker", 191 + "futures-core", 192 + "futures-io", 193 + "futures-task", 194 + "futures-util", 195 + "log", 196 + "pin-project-lite", 197 + "tungstenite 0.27.0", 198 + ] 199 + 200 + [[package]] 157 201 name = "atoi" 158 202 version = "2.0.0" 159 203 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 255 299 "clap", 256 300 "criterion", 257 301 "hex", 258 - "http 1.4.0", 302 + "http 1.4.2", 259 303 "multihash", 260 304 "proptest", 261 305 "reqwest", ··· 302 346 "hickory-resolver", 303 347 "idna", 304 348 "k256", 305 - "lru 0.16.3", 349 + "lru 0.16.4", 306 350 "multibase", 307 351 "p256", 308 352 "p384", ··· 326 370 "atproto-identity", 327 371 "clap", 328 372 "futures", 329 - "http 1.4.0", 373 + "http 1.4.2", 330 374 "serde", 331 375 "serde_json", 332 376 "thiserror 2.0.18", ··· 378 422 "ecdsa", 379 423 "elliptic-curve", 380 424 "k256", 381 - "lru 0.16.3", 425 + "lru 0.16.4", 382 426 "multibase", 383 427 "p256", 384 428 "p384", 385 - "rand 0.10.0", 429 + "rand 0.10.2", 386 430 "reqwest", 387 431 "reqwest-chain", 388 432 "reqwest-middleware", ··· 424 468 "clap", 425 469 "elliptic-curve", 426 470 "hickory-resolver", 427 - "http 1.4.0", 428 - "rand 0.10.0", 471 + "http 1.4.2", 472 + "rand 0.10.2", 429 473 "reqwest", 430 474 "reqwest-chain", 431 475 "reqwest-middleware", ··· 440 484 ] 441 485 442 486 [[package]] 487 + name = "atproto-oauth-dioxus" 488 + version = "0.15.0-alpha.2" 489 + dependencies = [ 490 + "atproto-identity", 491 + "atproto-oauth", 492 + "chrono", 493 + "dioxus", 494 + "form_urlencoded", 495 + "hex", 496 + "p256", 497 + "rand 0.10.2", 498 + "reqwest", 499 + "serde", 500 + "serde_json", 501 + "thiserror 2.0.18", 502 + "tokio", 503 + "url", 504 + "web-sys", 505 + ] 506 + 507 + [[package]] 443 508 name = "atproto-pds" 444 509 version = "0.15.0-alpha.2" 445 510 dependencies = [ ··· 475 540 "p256", 476 541 "p384", 477 542 "prometheus-client", 478 - "rand 0.10.0", 543 + "rand 0.10.2", 479 544 "redis", 480 545 "reqwest", 481 546 "serde", ··· 506 571 "cid", 507 572 "clap", 508 573 "multihash", 509 - "rand 0.10.0", 574 + "rand 0.10.2", 510 575 "serde", 511 576 "serde_json", 512 577 "sha2 0.11.0", ··· 549 614 "hkdf 0.13.0", 550 615 "hmac 0.13.0", 551 616 "proptest", 552 - "rand 0.10.0", 617 + "rand 0.10.2", 553 618 "serde", 554 619 "serde_bytes", 555 620 "serde_json", ··· 569 634 "clap", 570 635 "compact_str", 571 636 "futures", 572 - "http 1.4.0", 637 + "http 1.4.2", 573 638 "itoa", 574 639 "reqwest", 575 640 "serde", ··· 595 660 "chrono", 596 661 "elliptic-curve", 597 662 "hickory-resolver", 598 - "http 1.4.0", 599 - "rand 0.10.0", 663 + "http 1.4.2", 664 + "rand 0.10.2", 600 665 "reqwest", 601 666 "reqwest-chain", 602 667 "reqwest-middleware", ··· 621 686 "clap", 622 687 "elliptic-curve", 623 688 "hickory-resolver", 624 - "http 1.4.0", 625 - "rand 0.10.0", 689 + "http 1.4.2", 690 + "rand 0.10.2", 626 691 "reqwest", 627 692 "reqwest-chain", 628 693 "reqwest-middleware", ··· 654 719 655 720 [[package]] 656 721 name = "autocfg" 657 - version = "1.5.0" 722 + version = "1.5.1" 658 723 source = "registry+https://github.com/rust-lang/crates.io-index" 659 - checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 724 + checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" 660 725 661 726 [[package]] 662 727 name = "aws-config" ··· 676 741 "aws-types", 677 742 "bytes", 678 743 "fastrand", 679 - "http 1.4.0", 744 + "http 1.4.2", 680 745 "time", 681 746 "tokio", 682 747 "tracing", ··· 697 762 698 763 [[package]] 699 764 name = "aws-lc-rs" 700 - version = "1.16.3" 765 + version = "1.17.1" 701 766 source = "registry+https://github.com/rust-lang/crates.io-index" 702 - checksum = "0ec6fb3fe69024a75fa7e1bfb48aa6cf59706a101658ea01bfd33b2b248a038f" 767 + checksum = "4342d8937fc7e5dd9b1c60292261c0670c882a2cd1719cfc11b1af41731e32ad" 703 768 dependencies = [ 704 769 "aws-lc-sys", 705 770 "zeroize", ··· 707 772 708 773 [[package]] 709 774 name = "aws-lc-sys" 710 - version = "0.40.0" 775 + version = "0.42.0" 711 776 source = "registry+https://github.com/rust-lang/crates.io-index" 712 - checksum = "f50037ee5e1e41e7b8f9d161680a725bd1626cb6f8c7e901f91f942850852fe7" 777 + checksum = "6d9ceb1da931507a12f4fccea479dccd00da1943e1b4ae72d8e502d707361444" 713 778 dependencies = [ 714 779 "cc", 715 780 "cmake", 716 781 "dunce", 717 782 "fs_extra", 783 + "pkg-config", 718 784 ] 719 785 720 786 [[package]] ··· 735 801 "bytes", 736 802 "fastrand", 737 803 "http 0.2.12", 738 - "http 1.4.0", 804 + "http 1.4.2", 739 805 "http-body 0.4.6", 740 806 "http-body 1.0.1", 741 807 "percent-encoding", ··· 768 834 "hex", 769 835 "hmac 0.12.1", 770 836 "http 0.2.12", 771 - "http 1.4.0", 837 + "http 1.4.2", 772 838 "http-body 0.4.6", 773 839 "lru 0.12.5", 774 840 "percent-encoding", ··· 798 864 "aws-types", 799 865 "fastrand", 800 866 "http 0.2.12", 801 - "http 1.4.0", 867 + "http 1.4.2", 802 868 "regex-lite", 803 869 "tracing", 804 870 ] ··· 819 885 "hex", 820 886 "hmac 0.12.1", 821 887 "http 0.2.12", 822 - "http 1.4.0", 888 + "http 1.4.2", 823 889 "percent-encoding", 824 890 "sha2 0.10.9", 825 891 "time", ··· 882 948 "futures-core", 883 949 "futures-util", 884 950 "http 0.2.12", 885 - "http 1.4.0", 951 + "http 1.4.2", 886 952 "http-body 0.4.6", 887 953 "percent-encoding", 888 954 "pin-project-lite", ··· 902 968 "bytes-utils", 903 969 "futures-core", 904 970 "futures-util", 905 - "http 1.4.0", 971 + "http 1.4.2", 906 972 "http-body 1.0.1", 907 973 "http-body-util", 908 974 "percent-encoding", ··· 921 987 "aws-smithy-runtime-api", 922 988 "aws-smithy-types", 923 989 "h2 0.3.27", 924 - "h2 0.4.13", 990 + "h2 0.4.15", 925 991 "http 0.2.12", 926 - "http 1.4.0", 992 + "http 1.4.2", 927 993 "http-body 0.4.6", 928 994 "hyper 0.14.32", 929 - "hyper 1.9.0", 995 + "hyper 1.10.1", 930 996 "hyper-rustls 0.24.2", 931 - "hyper-rustls 0.27.7", 997 + "hyper-rustls 0.27.9", 932 998 "hyper-util", 933 999 "pin-project-lite", 934 1000 "rustls 0.21.12", 935 - "rustls 0.23.37", 936 - "rustls-native-certs 0.8.3", 1001 + "rustls 0.23.41", 1002 + "rustls-native-certs 0.8.4", 937 1003 "rustls-pki-types", 938 1004 "tokio", 939 1005 "tokio-rustls 0.26.4", ··· 993 1059 "bytes", 994 1060 "fastrand", 995 1061 "http 0.2.12", 996 - "http 1.4.0", 1062 + "http 1.4.2", 997 1063 "http-body 0.4.6", 998 1064 "http-body 1.0.1", 999 1065 "http-body-util", ··· 1013 1079 "aws-smithy-types", 1014 1080 "bytes", 1015 1081 "http 0.2.12", 1016 - "http 1.4.0", 1082 + "http 1.4.2", 1017 1083 "pin-project-lite", 1018 1084 "tokio", 1019 1085 "tracing", ··· 1031 1097 "bytes-utils", 1032 1098 "futures-core", 1033 1099 "http 0.2.12", 1034 - "http 1.4.0", 1100 + "http 1.4.2", 1035 1101 "http-body 0.4.6", 1036 1102 "http-body 1.0.1", 1037 1103 "http-body-util", ··· 1071 1137 1072 1138 [[package]] 1073 1139 name = "axum" 1074 - version = "0.8.8" 1140 + version = "0.8.9" 1075 1141 source = "registry+https://github.com/rust-lang/crates.io-index" 1076 - checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" 1142 + checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" 1077 1143 dependencies = [ 1078 1144 "axum-core", 1079 1145 "axum-macros", ··· 1081 1147 "bytes", 1082 1148 "form_urlencoded", 1083 1149 "futures-util", 1084 - "http 1.4.0", 1150 + "http 1.4.2", 1085 1151 "http-body 1.0.1", 1086 1152 "http-body-util", 1087 - "hyper 1.9.0", 1153 + "hyper 1.10.1", 1088 1154 "hyper-util", 1089 1155 "itoa", 1090 1156 "matchit", 1091 1157 "memchr", 1092 1158 "mime", 1159 + "multer", 1093 1160 "percent-encoding", 1094 1161 "pin-project-lite", 1095 1162 "serde_core", ··· 1099 1166 "sha1", 1100 1167 "sync_wrapper", 1101 1168 "tokio", 1102 - "tokio-tungstenite", 1169 + "tokio-tungstenite 0.29.0", 1103 1170 "tower", 1104 1171 "tower-layer", 1105 1172 "tower-service", ··· 1114 1181 dependencies = [ 1115 1182 "bytes", 1116 1183 "futures-core", 1117 - "http 1.4.0", 1184 + "http 1.4.2", 1118 1185 "http-body 1.0.1", 1119 1186 "http-body-util", 1120 1187 "mime", ··· 1126 1193 ] 1127 1194 1128 1195 [[package]] 1196 + name = "axum-extra" 1197 + version = "0.10.3" 1198 + source = "registry+https://github.com/rust-lang/crates.io-index" 1199 + checksum = "9963ff19f40c6102c76756ef0a46004c0d58957d87259fc9208ff8441c12ab96" 1200 + dependencies = [ 1201 + "axum", 1202 + "axum-core", 1203 + "bytes", 1204 + "futures-util", 1205 + "headers", 1206 + "http 1.4.2", 1207 + "http-body 1.0.1", 1208 + "http-body-util", 1209 + "mime", 1210 + "pin-project-lite", 1211 + "rustversion", 1212 + "serde_core", 1213 + "tower-layer", 1214 + "tower-service", 1215 + "tracing", 1216 + ] 1217 + 1218 + [[package]] 1129 1219 name = "axum-macros" 1130 - version = "0.5.0" 1220 + version = "0.5.1" 1131 1221 source = "registry+https://github.com/rust-lang/crates.io-index" 1132 - checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" 1222 + checksum = "7aa268c23bfbbd2c4363b9cd302a4f504fb2a9dfe7e3451d66f35dd392e20aca" 1133 1223 dependencies = [ 1134 1224 "proc-macro2", 1135 1225 "quote", ··· 1152 1242 checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" 1153 1243 1154 1244 [[package]] 1245 + name = "base16" 1246 + version = "0.2.1" 1247 + source = "registry+https://github.com/rust-lang/crates.io-index" 1248 + checksum = "d27c3610c36aee21ce8ac510e6224498de4228ad772a171ed65643a24693a5a8" 1249 + 1250 + [[package]] 1155 1251 name = "base16ct" 1156 1252 version = "0.2.0" 1157 1253 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1163 1259 source = "registry+https://github.com/rust-lang/crates.io-index" 1164 1260 checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c" 1165 1261 dependencies = [ 1166 - "const-str", 1262 + "const-str 0.4.3", 1167 1263 "match-lookup", 1168 1264 ] 1169 1265 1170 1266 [[package]] 1267 + name = "base45" 1268 + version = "3.2.0" 1269 + source = "registry+https://github.com/rust-lang/crates.io-index" 1270 + checksum = "240e56f4d3c453c36faacb695c535a4d5f8c7d23dac175014f32eb0a71012a03" 1271 + 1272 + [[package]] 1171 1273 name = "base64" 1172 1274 version = "0.22.1" 1173 1275 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1206 1308 1207 1309 [[package]] 1208 1310 name = "bitflags" 1209 - version = "2.11.0" 1311 + version = "2.13.0" 1210 1312 source = "registry+https://github.com/rust-lang/crates.io-index" 1211 - checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" 1313 + checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" 1212 1314 dependencies = [ 1213 1315 "serde_core", 1214 1316 ] ··· 1224 1326 1225 1327 [[package]] 1226 1328 name = "blake3" 1227 - version = "1.8.4" 1329 + version = "1.8.5" 1228 1330 source = "registry+https://github.com/rust-lang/crates.io-index" 1229 - checksum = "4d2d5991425dfd0785aed03aedcf0b321d61975c9b5b3689c774a2610ae0b51e" 1331 + checksum = "0aa83c34e62843d924f905e0f5c866eb1dd6545fc4d719e803d9ba6030371fce" 1230 1332 dependencies = [ 1231 1333 "arrayref", 1232 1334 "arrayvec", ··· 1247 1349 1248 1350 [[package]] 1249 1351 name = "block-buffer" 1250 - version = "0.12.0" 1352 + version = "0.12.1" 1251 1353 source = "registry+https://github.com/rust-lang/crates.io-index" 1252 - checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" 1354 + checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" 1253 1355 dependencies = [ 1254 1356 "hybrid-array", 1255 1357 ] 1256 1358 1257 1359 [[package]] 1258 1360 name = "bumpalo" 1259 - version = "3.20.2" 1361 + version = "3.20.3" 1260 1362 source = "registry+https://github.com/rust-lang/crates.io-index" 1261 - checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" 1363 + checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" 1262 1364 1263 1365 [[package]] 1264 1366 name = "byteorder" ··· 1274 1376 1275 1377 [[package]] 1276 1378 name = "bytes" 1277 - version = "1.11.1" 1379 + version = "1.12.0" 1278 1380 source = "registry+https://github.com/rust-lang/crates.io-index" 1279 - checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" 1381 + checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" 1382 + dependencies = [ 1383 + "serde", 1384 + ] 1280 1385 1281 1386 [[package]] 1282 1387 name = "bytes-utils" ··· 1311 1416 1312 1417 [[package]] 1313 1418 name = "cc" 1314 - version = "1.2.58" 1419 + version = "1.2.66" 1315 1420 source = "registry+https://github.com/rust-lang/crates.io-index" 1316 - checksum = "e1e928d4b69e3077709075a938a05ffbedfa53a84c8f766efbf8220bb1ff60e1" 1421 + checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" 1317 1422 dependencies = [ 1318 1423 "find-msvc-tools", 1319 1424 "jobserver", ··· 1322 1427 ] 1323 1428 1324 1429 [[package]] 1430 + name = "cesu8" 1431 + version = "1.1.0" 1432 + source = "registry+https://github.com/rust-lang/crates.io-index" 1433 + checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 1434 + 1435 + [[package]] 1436 + name = "cfb" 1437 + version = "0.7.3" 1438 + source = "registry+https://github.com/rust-lang/crates.io-index" 1439 + checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" 1440 + dependencies = [ 1441 + "byteorder", 1442 + "fnv", 1443 + "uuid", 1444 + ] 1445 + 1446 + [[package]] 1325 1447 name = "cfg-if" 1326 1448 version = "1.0.4" 1327 1449 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1335 1457 1336 1458 [[package]] 1337 1459 name = "chacha20" 1338 - version = "0.10.0" 1460 + version = "0.10.1" 1339 1461 source = "registry+https://github.com/rust-lang/crates.io-index" 1340 - checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" 1462 + checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" 1341 1463 dependencies = [ 1342 1464 "cfg-if", 1343 1465 "cpufeatures 0.3.0", 1344 - "rand_core 0.10.0", 1466 + "rand_core 0.10.1", 1467 + ] 1468 + 1469 + [[package]] 1470 + name = "charset" 1471 + version = "0.1.5" 1472 + source = "registry+https://github.com/rust-lang/crates.io-index" 1473 + checksum = "f1f927b07c74ba84c7e5fe4db2baeb3e996ab2688992e39ac68ce3220a677c7e" 1474 + dependencies = [ 1475 + "base64", 1476 + "encoding_rs", 1345 1477 ] 1346 1478 1347 1479 [[package]] 1348 1480 name = "chrono" 1349 - version = "0.4.44" 1481 + version = "0.4.45" 1350 1482 source = "registry+https://github.com/rust-lang/crates.io-index" 1351 - checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" 1483 + checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" 1352 1484 dependencies = [ 1353 1485 "iana-time-zone", 1486 + "js-sys", 1354 1487 "num-traits", 1355 1488 "serde", 1489 + "wasm-bindgen", 1356 1490 "windows-link", 1357 1491 ] 1358 1492 ··· 1385 1519 1386 1520 [[package]] 1387 1521 name = "cid" 1388 - version = "0.11.1" 1522 + version = "0.11.3" 1389 1523 source = "registry+https://github.com/rust-lang/crates.io-index" 1390 - checksum = "3147d8272e8fa0ccd29ce51194dd98f79ddfb8191ba9e3409884e751798acf3a" 1524 + checksum = "21a304f95f84d169a6f31c4d0a30d784643aaa0bbc9c1e449a2c23e963ec4971" 1391 1525 dependencies = [ 1392 - "core2", 1393 1526 "multibase", 1394 1527 "multihash", 1395 1528 "unsigned-varint", ··· 1397 1530 1398 1531 [[package]] 1399 1532 name = "clap" 1400 - version = "4.6.0" 1533 + version = "4.6.1" 1401 1534 source = "registry+https://github.com/rust-lang/crates.io-index" 1402 - checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" 1535 + checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" 1403 1536 dependencies = [ 1404 1537 "clap_builder", 1405 1538 "clap_derive", ··· 1419 1552 1420 1553 [[package]] 1421 1554 name = "clap_derive" 1422 - version = "4.6.0" 1555 + version = "4.6.1" 1423 1556 source = "registry+https://github.com/rust-lang/crates.io-index" 1424 - checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" 1557 + checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" 1425 1558 dependencies = [ 1426 1559 "heck", 1427 1560 "proc-macro2", ··· 1446 1579 1447 1580 [[package]] 1448 1581 name = "cmov" 1449 - version = "0.5.3" 1582 + version = "0.5.4" 1450 1583 source = "registry+https://github.com/rust-lang/crates.io-index" 1451 - checksum = "3f88a43d011fc4a6876cb7344703e297c71dda42494fee094d5f7c76bf13f746" 1584 + checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" 1452 1585 1453 1586 [[package]] 1454 1587 name = "colorchoice" ··· 1472 1605 1473 1606 [[package]] 1474 1607 name = "compact_str" 1475 - version = "0.9.0" 1608 + version = "0.9.1" 1476 1609 source = "registry+https://github.com/rust-lang/crates.io-index" 1477 - checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a" 1610 + checksum = "9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab" 1478 1611 dependencies = [ 1479 1612 "castaway", 1480 1613 "cfg-if", ··· 1511 1644 version = "0.10.2" 1512 1645 source = "registry+https://github.com/rust-lang/crates.io-index" 1513 1646 checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" 1647 + 1648 + [[package]] 1649 + name = "const-serialize" 1650 + version = "0.7.2" 1651 + source = "registry+https://github.com/rust-lang/crates.io-index" 1652 + checksum = "ad7154afa56de2f290e3c82c2c6dc4f5b282b6870903f56ef3509aba95866edc" 1653 + dependencies = [ 1654 + "const-serialize-macro 0.7.2", 1655 + ] 1656 + 1657 + [[package]] 1658 + name = "const-serialize" 1659 + version = "0.8.0-alpha.0" 1660 + source = "registry+https://github.com/rust-lang/crates.io-index" 1661 + checksum = "9e42cd5aabba86f128b3763da1fec1491c0f728ce99245062cd49b6f9e6d235b" 1662 + dependencies = [ 1663 + "const-serialize 0.7.2", 1664 + "const-serialize-macro 0.8.0-alpha.0", 1665 + "serde", 1666 + ] 1667 + 1668 + [[package]] 1669 + name = "const-serialize-macro" 1670 + version = "0.7.2" 1671 + source = "registry+https://github.com/rust-lang/crates.io-index" 1672 + checksum = "4f160aad86b4343e8d4e261fee9965c3005b2fd6bc117d172ab65948779e4acf" 1673 + dependencies = [ 1674 + "proc-macro2", 1675 + "quote", 1676 + "syn", 1677 + ] 1678 + 1679 + [[package]] 1680 + name = "const-serialize-macro" 1681 + version = "0.8.0-alpha.0" 1682 + source = "registry+https://github.com/rust-lang/crates.io-index" 1683 + checksum = "42571ed01eb46d2e1adcf99c8ca576f081e46f2623d13500eba70d1d99a4c439" 1684 + dependencies = [ 1685 + "proc-macro2", 1686 + "quote", 1687 + "syn", 1688 + ] 1514 1689 1515 1690 [[package]] 1516 1691 name = "const-str" ··· 1519 1694 checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" 1520 1695 1521 1696 [[package]] 1697 + name = "const-str" 1698 + version = "0.7.1" 1699 + source = "registry+https://github.com/rust-lang/crates.io-index" 1700 + checksum = "b0664d2867b4a32697dfe655557f5c3b187e9b605b38612a748e5ec99811d160" 1701 + 1702 + [[package]] 1703 + name = "const_format" 1704 + version = "0.2.36" 1705 + source = "registry+https://github.com/rust-lang/crates.io-index" 1706 + checksum = "4481a617ad9a412be3b97c5d403fef8ed023103368908b9c50af598ff467cc1e" 1707 + dependencies = [ 1708 + "const_format_proc_macros", 1709 + "konst", 1710 + ] 1711 + 1712 + [[package]] 1713 + name = "const_format_proc_macros" 1714 + version = "0.2.34" 1715 + source = "registry+https://github.com/rust-lang/crates.io-index" 1716 + checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" 1717 + dependencies = [ 1718 + "proc-macro2", 1719 + "quote", 1720 + "unicode-xid", 1721 + ] 1722 + 1723 + [[package]] 1522 1724 name = "constant_time_eq" 1523 1725 version = "0.4.2" 1524 1726 source = "registry+https://github.com/rust-lang/crates.io-index" 1525 1727 checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" 1526 1728 1527 1729 [[package]] 1730 + name = "content_disposition" 1731 + version = "0.4.0" 1732 + source = "registry+https://github.com/rust-lang/crates.io-index" 1733 + checksum = "ebc14a88e1463ddd193906285abe5c360c7e8564e05ccc5d501755f7fbc9ca9c" 1734 + dependencies = [ 1735 + "charset", 1736 + ] 1737 + 1738 + [[package]] 1739 + name = "convert_case" 1740 + version = "0.8.0" 1741 + source = "registry+https://github.com/rust-lang/crates.io-index" 1742 + checksum = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f" 1743 + dependencies = [ 1744 + "unicode-segmentation", 1745 + ] 1746 + 1747 + [[package]] 1748 + name = "convert_case" 1749 + version = "0.10.0" 1750 + source = "registry+https://github.com/rust-lang/crates.io-index" 1751 + checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" 1752 + dependencies = [ 1753 + "unicode-segmentation", 1754 + ] 1755 + 1756 + [[package]] 1757 + name = "cookie" 1758 + version = "0.18.1" 1759 + source = "registry+https://github.com/rust-lang/crates.io-index" 1760 + checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" 1761 + dependencies = [ 1762 + "percent-encoding", 1763 + "time", 1764 + "version_check", 1765 + ] 1766 + 1767 + [[package]] 1768 + name = "cookie_store" 1769 + version = "0.22.1" 1770 + source = "registry+https://github.com/rust-lang/crates.io-index" 1771 + checksum = "15b2c103cf610ec6cae3da84a766285b42fd16aad564758459e6ecf128c75206" 1772 + dependencies = [ 1773 + "cookie", 1774 + "document-features", 1775 + "idna", 1776 + "log", 1777 + "publicsuffix", 1778 + "serde", 1779 + "serde_derive", 1780 + "serde_json", 1781 + "time", 1782 + "url", 1783 + ] 1784 + 1785 + [[package]] 1528 1786 name = "core-foundation" 1529 1787 version = "0.9.4" 1530 1788 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1551 1809 checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 1552 1810 1553 1811 [[package]] 1554 - name = "core2" 1555 - version = "0.4.0" 1556 - source = "registry+https://github.com/rust-lang/crates.io-index" 1557 - checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" 1558 - dependencies = [ 1559 - "memchr", 1560 - ] 1561 - 1562 - [[package]] 1563 1812 name = "cpufeatures" 1564 1813 version = "0.2.17" 1565 1814 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1600 1849 dependencies = [ 1601 1850 "crc", 1602 1851 "digest 0.10.7", 1603 - "rand 0.9.2", 1852 + "rand 0.9.4", 1604 1853 "regex", 1605 1854 "rustversion", 1606 1855 ] ··· 1626 1875 "ciborium", 1627 1876 "clap", 1628 1877 "criterion-plot", 1629 - "itertools", 1878 + "itertools 0.13.0", 1630 1879 "num-traits", 1631 1880 "oorandom", 1632 1881 "page_size", ··· 1646 1895 checksum = "d8d80a2f4f5b554395e47b5d8305bc3d27813bacb73493eb1001e8f76dae29ea" 1647 1896 dependencies = [ 1648 1897 "cast", 1649 - "itertools", 1898 + "itertools 0.13.0", 1650 1899 ] 1651 1900 1652 1901 [[package]] ··· 1738 1987 1739 1988 [[package]] 1740 1989 name = "crypto-common" 1741 - version = "0.2.1" 1990 + version = "0.2.2" 1742 1991 source = "registry+https://github.com/rust-lang/crates.io-index" 1743 - checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710" 1992 + checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" 1744 1993 dependencies = [ 1745 1994 "hybrid-array", 1746 1995 ] ··· 1782 2031 ] 1783 2032 1784 2033 [[package]] 2034 + name = "darling" 2035 + version = "0.21.3" 2036 + source = "registry+https://github.com/rust-lang/crates.io-index" 2037 + checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" 2038 + dependencies = [ 2039 + "darling_core", 2040 + "darling_macro", 2041 + ] 2042 + 2043 + [[package]] 2044 + name = "darling_core" 2045 + version = "0.21.3" 2046 + source = "registry+https://github.com/rust-lang/crates.io-index" 2047 + checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" 2048 + dependencies = [ 2049 + "fnv", 2050 + "ident_case", 2051 + "proc-macro2", 2052 + "quote", 2053 + "syn", 2054 + ] 2055 + 2056 + [[package]] 2057 + name = "darling_macro" 2058 + version = "0.21.3" 2059 + source = "registry+https://github.com/rust-lang/crates.io-index" 2060 + checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" 2061 + dependencies = [ 2062 + "darling_core", 2063 + "quote", 2064 + "syn", 2065 + ] 2066 + 2067 + [[package]] 1785 2068 name = "dashmap" 1786 - version = "6.1.0" 2069 + version = "6.2.1" 1787 2070 source = "registry+https://github.com/rust-lang/crates.io-index" 1788 - checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" 2071 + checksum = "e6361d5c062261c78a176addb82d4c821ae42bed6089de0e12603cd25de2059c" 1789 2072 dependencies = [ 1790 2073 "cfg-if", 1791 2074 "crossbeam-utils", ··· 1797 2080 1798 2081 [[package]] 1799 2082 name = "data-encoding" 1800 - version = "2.10.0" 2083 + version = "2.11.0" 1801 2084 source = "registry+https://github.com/rust-lang/crates.io-index" 1802 - checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" 2085 + checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" 1803 2086 1804 2087 [[package]] 1805 2088 name = "data-encoding-macro" 1806 - version = "0.1.19" 2089 + version = "0.1.20" 1807 2090 source = "registry+https://github.com/rust-lang/crates.io-index" 1808 - checksum = "8142a83c17aa9461d637e649271eae18bf2edd00e91f2e105df36c3c16355bdb" 2091 + checksum = "3259c913752a86488b501ed8680446a5ed2d5aeac6e596cb23ba3800768ea32c" 1809 2092 dependencies = [ 1810 2093 "data-encoding", 1811 2094 "data-encoding-macro-internal", ··· 1813 2096 1814 2097 [[package]] 1815 2098 name = "data-encoding-macro-internal" 1816 - version = "0.1.17" 2099 + version = "0.1.18" 1817 2100 source = "registry+https://github.com/rust-lang/crates.io-index" 1818 - checksum = "7ab67060fc6b8ef687992d439ca0fa36e7ed17e9a0b16b25b601e8757df720de" 2101 + checksum = "ccc2776f0c61eca1ca32528f85548abd1a4be8fb53d1b21c013e4f18da1e7090" 1819 2102 dependencies = [ 1820 2103 "data-encoding", 1821 2104 "syn", ··· 1837 2120 version = "0.5.8" 1838 2121 source = "registry+https://github.com/rust-lang/crates.io-index" 1839 2122 checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" 2123 + 2124 + [[package]] 2125 + name = "derive_more" 2126 + version = "2.1.1" 2127 + source = "registry+https://github.com/rust-lang/crates.io-index" 2128 + checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" 1840 2129 dependencies = [ 1841 - "powerfmt", 2130 + "derive_more-impl", 2131 + ] 2132 + 2133 + [[package]] 2134 + name = "derive_more-impl" 2135 + version = "2.1.1" 2136 + source = "registry+https://github.com/rust-lang/crates.io-index" 2137 + checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" 2138 + dependencies = [ 2139 + "convert_case 0.10.0", 2140 + "proc-macro2", 2141 + "quote", 2142 + "rustc_version", 2143 + "syn", 2144 + "unicode-xid", 1842 2145 ] 1843 2146 1844 2147 [[package]] ··· 1855 2158 1856 2159 [[package]] 1857 2160 name = "digest" 1858 - version = "0.11.2" 2161 + version = "0.11.3" 1859 2162 source = "registry+https://github.com/rust-lang/crates.io-index" 1860 - checksum = "4850db49bf08e663084f7fb5c87d202ef91a3907271aff24a94eb97ff039153c" 2163 + checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" 1861 2164 dependencies = [ 1862 - "block-buffer 0.12.0", 2165 + "block-buffer 0.12.1", 1863 2166 "const-oid 0.10.2", 1864 - "crypto-common 0.2.1", 2167 + "crypto-common 0.2.2", 1865 2168 "ctutils", 1866 2169 ] 1867 2170 1868 2171 [[package]] 2172 + name = "dioxus" 2173 + version = "0.7.9" 2174 + source = "registry+https://github.com/rust-lang/crates.io-index" 2175 + checksum = "7c01ecf7ddbae18a419ad3d83c486101a85ffc5740ea09cdd0f09a30dc12170d" 2176 + dependencies = [ 2177 + "dioxus-asset-resolver", 2178 + "dioxus-cli-config", 2179 + "dioxus-config-macro", 2180 + "dioxus-config-macros", 2181 + "dioxus-core", 2182 + "dioxus-core-macro", 2183 + "dioxus-devtools", 2184 + "dioxus-document", 2185 + "dioxus-fullstack", 2186 + "dioxus-fullstack-macro", 2187 + "dioxus-history", 2188 + "dioxus-hooks", 2189 + "dioxus-html", 2190 + "dioxus-liveview", 2191 + "dioxus-logger", 2192 + "dioxus-router", 2193 + "dioxus-server", 2194 + "dioxus-signals", 2195 + "dioxus-ssr", 2196 + "dioxus-stores", 2197 + "dioxus-web", 2198 + "manganis", 2199 + "serde", 2200 + "subsecond", 2201 + "warnings", 2202 + ] 2203 + 2204 + [[package]] 2205 + name = "dioxus-asset-resolver" 2206 + version = "0.7.9" 2207 + source = "registry+https://github.com/rust-lang/crates.io-index" 2208 + checksum = "69387edbbc60c7cb93ad96d8cc7a22b49a76e21643380b89b1c49a78d347ff60" 2209 + dependencies = [ 2210 + "dioxus-cli-config", 2211 + "http 1.4.2", 2212 + "infer", 2213 + "jni", 2214 + "ndk", 2215 + "ndk-context", 2216 + "ndk-sys", 2217 + "percent-encoding", 2218 + "thiserror 2.0.18", 2219 + "tokio", 2220 + ] 2221 + 2222 + [[package]] 2223 + name = "dioxus-cli-config" 2224 + version = "0.7.9" 2225 + source = "registry+https://github.com/rust-lang/crates.io-index" 2226 + checksum = "c000f584ddf608e2b272b3074bf11512a474eeeb2eb85a1915f276ce5c4a8615" 2227 + dependencies = [ 2228 + "wasm-bindgen", 2229 + ] 2230 + 2231 + [[package]] 2232 + name = "dioxus-config-macro" 2233 + version = "0.7.9" 2234 + source = "registry+https://github.com/rust-lang/crates.io-index" 2235 + checksum = "7637091592978fbfdb45a16b26bd99fd97fb1bd7e31c6a963530e00c022af321" 2236 + dependencies = [ 2237 + "proc-macro2", 2238 + "quote", 2239 + ] 2240 + 2241 + [[package]] 2242 + name = "dioxus-config-macros" 2243 + version = "0.7.9" 2244 + source = "registry+https://github.com/rust-lang/crates.io-index" 2245 + checksum = "54f9ed8fc1a215ad34bb8dbae42a4ea54efbcd26ca9006bbe5cca78e511bf25f" 2246 + 2247 + [[package]] 2248 + name = "dioxus-core" 2249 + version = "0.7.9" 2250 + source = "registry+https://github.com/rust-lang/crates.io-index" 2251 + checksum = "45887100ff0cf89abeb8b659808294fda48cd53f3b424e36407dedffcfea830b" 2252 + dependencies = [ 2253 + "anyhow", 2254 + "const_format", 2255 + "dioxus-core-types", 2256 + "futures-channel", 2257 + "futures-util", 2258 + "generational-box", 2259 + "longest-increasing-subsequence", 2260 + "rustc-hash 2.1.3", 2261 + "rustversion", 2262 + "serde", 2263 + "slab", 2264 + "slotmap", 2265 + "subsecond", 2266 + "tracing", 2267 + ] 2268 + 2269 + [[package]] 2270 + name = "dioxus-core-macro" 2271 + version = "0.7.9" 2272 + source = "registry+https://github.com/rust-lang/crates.io-index" 2273 + checksum = "370c63663dff0f24df5dfea643ca239283542c6b228a302f69b32e1d36762b7f" 2274 + dependencies = [ 2275 + "convert_case 0.8.0", 2276 + "dioxus-rsx", 2277 + "proc-macro2", 2278 + "quote", 2279 + "syn", 2280 + ] 2281 + 2282 + [[package]] 2283 + name = "dioxus-core-types" 2284 + version = "0.7.9" 2285 + source = "registry+https://github.com/rust-lang/crates.io-index" 2286 + checksum = "36963eab106b169737762f9cd5ee5fd97f585989dcb2d8e30a596e97a6999009" 2287 + 2288 + [[package]] 2289 + name = "dioxus-devtools" 2290 + version = "0.7.9" 2291 + source = "registry+https://github.com/rust-lang/crates.io-index" 2292 + checksum = "2349cedbdf1b429df1f1bea61fdee0ad3dae7b2548eedfbeca82710122a57da0" 2293 + dependencies = [ 2294 + "dioxus-cli-config", 2295 + "dioxus-core", 2296 + "dioxus-devtools-types", 2297 + "dioxus-signals", 2298 + "futures-channel", 2299 + "futures-util", 2300 + "serde", 2301 + "serde_json", 2302 + "subsecond", 2303 + "thiserror 2.0.18", 2304 + "tracing", 2305 + "tungstenite 0.28.0", 2306 + ] 2307 + 2308 + [[package]] 2309 + name = "dioxus-devtools-types" 2310 + version = "0.7.9" 2311 + source = "registry+https://github.com/rust-lang/crates.io-index" 2312 + checksum = "0ab9b0f7565d1916b70915f59b89ea8054ef0a9d67a364a32bbee68ef5f3818d" 2313 + dependencies = [ 2314 + "dioxus-core", 2315 + "serde", 2316 + "subsecond-types", 2317 + ] 2318 + 2319 + [[package]] 2320 + name = "dioxus-document" 2321 + version = "0.7.9" 2322 + source = "registry+https://github.com/rust-lang/crates.io-index" 2323 + checksum = "37e3a5bec7ffc999ff23446a487eb5cd86111d1574a23533dd3f8b3c69a53a22" 2324 + dependencies = [ 2325 + "dioxus-core", 2326 + "dioxus-core-macro", 2327 + "dioxus-core-types", 2328 + "dioxus-html", 2329 + "futures-channel", 2330 + "futures-util", 2331 + "generational-box", 2332 + "lazy-js-bundle", 2333 + "serde", 2334 + "serde_json", 2335 + "tracing", 2336 + ] 2337 + 2338 + [[package]] 2339 + name = "dioxus-fullstack" 2340 + version = "0.7.9" 2341 + source = "registry+https://github.com/rust-lang/crates.io-index" 2342 + checksum = "37f0558edb88af5ad47275ae36a7f06317163ba482db377c26d7d8590b5cd0f6" 2343 + dependencies = [ 2344 + "anyhow", 2345 + "async-stream", 2346 + "async-tungstenite", 2347 + "axum", 2348 + "axum-core", 2349 + "axum-extra", 2350 + "base64", 2351 + "bytes", 2352 + "ciborium", 2353 + "const-str 0.7.1", 2354 + "const_format", 2355 + "content_disposition", 2356 + "derive_more", 2357 + "dioxus-asset-resolver", 2358 + "dioxus-cli-config", 2359 + "dioxus-core", 2360 + "dioxus-fullstack-core", 2361 + "dioxus-fullstack-macro", 2362 + "dioxus-hooks", 2363 + "dioxus-html", 2364 + "dioxus-signals", 2365 + "form_urlencoded", 2366 + "futures", 2367 + "futures-channel", 2368 + "futures-util", 2369 + "gloo-net", 2370 + "headers", 2371 + "http 1.4.2", 2372 + "http-body 1.0.1", 2373 + "http-body-util", 2374 + "inventory", 2375 + "js-sys", 2376 + "mime", 2377 + "pin-project", 2378 + "reqwest", 2379 + "rustversion", 2380 + "send_wrapper", 2381 + "serde", 2382 + "serde_json", 2383 + "serde_qs", 2384 + "serde_urlencoded", 2385 + "thiserror 2.0.18", 2386 + "tokio", 2387 + "tokio-stream", 2388 + "tokio-tungstenite 0.28.0", 2389 + "tokio-util", 2390 + "tower", 2391 + "tower-http", 2392 + "tower-layer", 2393 + "tracing", 2394 + "tungstenite 0.27.0", 2395 + "url", 2396 + "wasm-bindgen", 2397 + "wasm-bindgen-futures", 2398 + "wasm-streams", 2399 + "xxhash-rust", 2400 + ] 2401 + 2402 + [[package]] 2403 + name = "dioxus-fullstack-core" 2404 + version = "0.7.9" 2405 + source = "registry+https://github.com/rust-lang/crates.io-index" 2406 + checksum = "cc634b28b4b1e3eab1e8df4f98510e2d2fa39d686321467f977213155e86ed2b" 2407 + dependencies = [ 2408 + "anyhow", 2409 + "axum-core", 2410 + "base64", 2411 + "ciborium", 2412 + "dioxus-core", 2413 + "dioxus-document", 2414 + "dioxus-history", 2415 + "dioxus-hooks", 2416 + "dioxus-signals", 2417 + "futures-channel", 2418 + "futures-util", 2419 + "generational-box", 2420 + "http 1.4.2", 2421 + "inventory", 2422 + "parking_lot", 2423 + "serde", 2424 + "serde_json", 2425 + "thiserror 2.0.18", 2426 + "tokio", 2427 + "tracing", 2428 + ] 2429 + 2430 + [[package]] 2431 + name = "dioxus-fullstack-macro" 2432 + version = "0.7.9" 2433 + source = "registry+https://github.com/rust-lang/crates.io-index" 2434 + checksum = "85a8fe7da549859fae00c7f4bf11a2aab734ae7ef6f98f280dce9bea1f3326ec" 2435 + dependencies = [ 2436 + "const_format", 2437 + "convert_case 0.8.0", 2438 + "proc-macro2", 2439 + "quote", 2440 + "syn", 2441 + "xxhash-rust", 2442 + ] 2443 + 2444 + [[package]] 2445 + name = "dioxus-history" 2446 + version = "0.7.9" 2447 + source = "registry+https://github.com/rust-lang/crates.io-index" 2448 + checksum = "1a15232302d1933015fcf2d6fe9e286ad36f6e9c205a546089a0f326023bb0d2" 2449 + dependencies = [ 2450 + "dioxus-core", 2451 + "tracing", 2452 + ] 2453 + 2454 + [[package]] 2455 + name = "dioxus-hooks" 2456 + version = "0.7.9" 2457 + source = "registry+https://github.com/rust-lang/crates.io-index" 2458 + checksum = "4534f91cf6305204b948bdec130076ac9ecc7c22faab29475b76870558bf73ea" 2459 + dependencies = [ 2460 + "dioxus-core", 2461 + "dioxus-signals", 2462 + "futures-channel", 2463 + "futures-util", 2464 + "generational-box", 2465 + "rustversion", 2466 + "slab", 2467 + "tracing", 2468 + ] 2469 + 2470 + [[package]] 2471 + name = "dioxus-html" 2472 + version = "0.7.9" 2473 + source = "registry+https://github.com/rust-lang/crates.io-index" 2474 + checksum = "e03d6ad4040b667f2b2eefcb678840e630938c09bf9ec39b04ea4d1d96d90d44" 2475 + dependencies = [ 2476 + "async-trait", 2477 + "bytes", 2478 + "dioxus-core", 2479 + "dioxus-core-macro", 2480 + "dioxus-core-types", 2481 + "dioxus-hooks", 2482 + "dioxus-html-internal-macro", 2483 + "enumset", 2484 + "euclid", 2485 + "futures-channel", 2486 + "futures-util", 2487 + "generational-box", 2488 + "keyboard-types", 2489 + "lazy-js-bundle", 2490 + "rustversion", 2491 + "serde", 2492 + "serde_json", 2493 + "serde_repr", 2494 + "tracing", 2495 + ] 2496 + 2497 + [[package]] 2498 + name = "dioxus-html-internal-macro" 2499 + version = "0.7.9" 2500 + source = "registry+https://github.com/rust-lang/crates.io-index" 2501 + checksum = "584e2772127ab00f0d5e1d4d9795f39fecebc828ece0b7a02349d438bc1b1ce7" 2502 + dependencies = [ 2503 + "convert_case 0.8.0", 2504 + "proc-macro2", 2505 + "quote", 2506 + "syn", 2507 + ] 2508 + 2509 + [[package]] 2510 + name = "dioxus-interpreter-js" 2511 + version = "0.7.9" 2512 + source = "registry+https://github.com/rust-lang/crates.io-index" 2513 + checksum = "11999d6eb5bb179a9512dad30e5de408aab66f2cb65de9098c9fbe02927e2978" 2514 + dependencies = [ 2515 + "dioxus-core", 2516 + "dioxus-core-types", 2517 + "dioxus-html", 2518 + "js-sys", 2519 + "lazy-js-bundle", 2520 + "rustc-hash 2.1.3", 2521 + "sledgehammer_bindgen", 2522 + "sledgehammer_utils", 2523 + "wasm-bindgen", 2524 + "wasm-bindgen-futures", 2525 + "web-sys", 2526 + ] 2527 + 2528 + [[package]] 2529 + name = "dioxus-liveview" 2530 + version = "0.7.9" 2531 + source = "registry+https://github.com/rust-lang/crates.io-index" 2532 + checksum = "7344b8f174967c7d2f6ad0103d680ab57daea83ebe3368f7f011c402fd6aaf77" 2533 + dependencies = [ 2534 + "axum", 2535 + "dioxus-cli-config", 2536 + "dioxus-core", 2537 + "dioxus-devtools", 2538 + "dioxus-document", 2539 + "dioxus-history", 2540 + "dioxus-html", 2541 + "dioxus-interpreter-js", 2542 + "futures-channel", 2543 + "futures-util", 2544 + "generational-box", 2545 + "rustc-hash 2.1.3", 2546 + "serde", 2547 + "serde_json", 2548 + "slab", 2549 + "thiserror 2.0.18", 2550 + "tokio", 2551 + "tokio-stream", 2552 + "tokio-util", 2553 + "tracing", 2554 + ] 2555 + 2556 + [[package]] 2557 + name = "dioxus-logger" 2558 + version = "0.7.9" 2559 + source = "registry+https://github.com/rust-lang/crates.io-index" 2560 + checksum = "a28ccdfe36d2cb830a2784e40f7e6f7199805a2c6da99bd65b1ca308f11aed28" 2561 + dependencies = [ 2562 + "dioxus-cli-config", 2563 + "tracing", 2564 + "tracing-subscriber", 2565 + "tracing-wasm", 2566 + ] 2567 + 2568 + [[package]] 2569 + name = "dioxus-router" 2570 + version = "0.7.9" 2571 + source = "registry+https://github.com/rust-lang/crates.io-index" 2572 + checksum = "38e47f62d680429badfcb99bf5dec17ee92b0cb9623f264e36bc003a1359bfdc" 2573 + dependencies = [ 2574 + "dioxus-cli-config", 2575 + "dioxus-core", 2576 + "dioxus-core-macro", 2577 + "dioxus-fullstack-core", 2578 + "dioxus-history", 2579 + "dioxus-hooks", 2580 + "dioxus-html", 2581 + "dioxus-router-macro", 2582 + "dioxus-signals", 2583 + "percent-encoding", 2584 + "rustversion", 2585 + "tracing", 2586 + "url", 2587 + ] 2588 + 2589 + [[package]] 2590 + name = "dioxus-router-macro" 2591 + version = "0.7.9" 2592 + source = "registry+https://github.com/rust-lang/crates.io-index" 2593 + checksum = "6f83fb667d27e256f8c9eca49963fbace66a8722cb64ee15a10ffc97d092357e" 2594 + dependencies = [ 2595 + "base16", 2596 + "digest 0.10.7", 2597 + "proc-macro2", 2598 + "quote", 2599 + "sha2 0.10.9", 2600 + "slab", 2601 + "syn", 2602 + ] 2603 + 2604 + [[package]] 2605 + name = "dioxus-rsx" 2606 + version = "0.7.9" 2607 + source = "registry+https://github.com/rust-lang/crates.io-index" 2608 + checksum = "2106afda239a4c7c22ffa1ca19117011225fc1c735c139c0a5b765996aa8bb1d" 2609 + dependencies = [ 2610 + "proc-macro2", 2611 + "proc-macro2-diagnostics", 2612 + "quote", 2613 + "rustversion", 2614 + "syn", 2615 + ] 2616 + 2617 + [[package]] 2618 + name = "dioxus-server" 2619 + version = "0.7.9" 2620 + source = "registry+https://github.com/rust-lang/crates.io-index" 2621 + checksum = "b5ba2095c16f847d3f680a94cc9b0637d190aace651ecfad0feda180da13634b" 2622 + dependencies = [ 2623 + "anyhow", 2624 + "async-trait", 2625 + "axum", 2626 + "base64", 2627 + "bytes", 2628 + "chrono", 2629 + "ciborium", 2630 + "dashmap", 2631 + "dioxus-cli-config", 2632 + "dioxus-core", 2633 + "dioxus-core-macro", 2634 + "dioxus-devtools", 2635 + "dioxus-document", 2636 + "dioxus-fullstack-core", 2637 + "dioxus-history", 2638 + "dioxus-hooks", 2639 + "dioxus-html", 2640 + "dioxus-interpreter-js", 2641 + "dioxus-logger", 2642 + "dioxus-router", 2643 + "dioxus-signals", 2644 + "dioxus-ssr", 2645 + "enumset", 2646 + "futures", 2647 + "futures-channel", 2648 + "futures-util", 2649 + "generational-box", 2650 + "http 1.4.2", 2651 + "http-body-util", 2652 + "hyper 1.10.1", 2653 + "hyper-util", 2654 + "inventory", 2655 + "lru 0.16.4", 2656 + "parking_lot", 2657 + "pin-project", 2658 + "rustc-hash 2.1.3", 2659 + "serde", 2660 + "serde_json", 2661 + "serde_qs", 2662 + "subsecond", 2663 + "thiserror 2.0.18", 2664 + "tokio", 2665 + "tokio-tungstenite 0.28.0", 2666 + "tokio-util", 2667 + "tower", 2668 + "tower-http", 2669 + "tracing", 2670 + "tracing-futures", 2671 + "url", 2672 + "walkdir", 2673 + ] 2674 + 2675 + [[package]] 2676 + name = "dioxus-signals" 2677 + version = "0.7.9" 2678 + source = "registry+https://github.com/rust-lang/crates.io-index" 2679 + checksum = "3705754f5e043deec9fc7af0d159f18e5b21c02c47d255c7e477f31368f0b6d2" 2680 + dependencies = [ 2681 + "dioxus-core", 2682 + "futures-channel", 2683 + "futures-util", 2684 + "generational-box", 2685 + "parking_lot", 2686 + "rustc-hash 2.1.3", 2687 + "tracing", 2688 + "warnings", 2689 + ] 2690 + 2691 + [[package]] 2692 + name = "dioxus-ssr" 2693 + version = "0.7.9" 2694 + source = "registry+https://github.com/rust-lang/crates.io-index" 2695 + checksum = "d261c5c9907b84fb1ed52f59f46d68c84a4ae860a65cc5effd0cea740ee428af" 2696 + dependencies = [ 2697 + "askama_escape", 2698 + "dioxus-core", 2699 + "dioxus-core-types", 2700 + "rustc-hash 2.1.3", 2701 + ] 2702 + 2703 + [[package]] 2704 + name = "dioxus-stores" 2705 + version = "0.7.9" 2706 + source = "registry+https://github.com/rust-lang/crates.io-index" 2707 + checksum = "64bec7b21c86b1360ec965a07a53a2c96b7caee3465049e1c299a45024e87614" 2708 + dependencies = [ 2709 + "dioxus-core", 2710 + "dioxus-signals", 2711 + "dioxus-stores-macro", 2712 + "generational-box", 2713 + ] 2714 + 2715 + [[package]] 2716 + name = "dioxus-stores-macro" 2717 + version = "0.7.9" 2718 + source = "registry+https://github.com/rust-lang/crates.io-index" 2719 + checksum = "40a5875e9f890f27b1cc3e5b56c1e23601211470315a1fb8627c4ca4f3b2be9a" 2720 + dependencies = [ 2721 + "convert_case 0.8.0", 2722 + "proc-macro2", 2723 + "quote", 2724 + "syn", 2725 + ] 2726 + 2727 + [[package]] 2728 + name = "dioxus-web" 2729 + version = "0.7.9" 2730 + source = "registry+https://github.com/rust-lang/crates.io-index" 2731 + checksum = "bc0a0be76b404e8242a597db0fb239d05f8dee4e7856bc1fc7144f7e244822fd" 2732 + dependencies = [ 2733 + "dioxus-cli-config", 2734 + "dioxus-core", 2735 + "dioxus-core-types", 2736 + "dioxus-devtools", 2737 + "dioxus-document", 2738 + "dioxus-fullstack-core", 2739 + "dioxus-history", 2740 + "dioxus-html", 2741 + "dioxus-interpreter-js", 2742 + "dioxus-signals", 2743 + "futures-channel", 2744 + "futures-util", 2745 + "generational-box", 2746 + "gloo-timers", 2747 + "js-sys", 2748 + "lazy-js-bundle", 2749 + "rustc-hash 2.1.3", 2750 + "send_wrapper", 2751 + "serde", 2752 + "serde-wasm-bindgen", 2753 + "serde_json", 2754 + "tracing", 2755 + "wasm-bindgen", 2756 + "wasm-bindgen-futures", 2757 + "wasm-streams", 2758 + "web-sys", 2759 + ] 2760 + 2761 + [[package]] 1869 2762 name = "dirs" 1870 2763 version = "6.0.0" 1871 2764 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1888 2781 1889 2782 [[package]] 1890 2783 name = "displaydoc" 1891 - version = "0.2.5" 2784 + version = "0.2.6" 1892 2785 source = "registry+https://github.com/rust-lang/crates.io-index" 1893 - checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 2786 + checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" 1894 2787 dependencies = [ 1895 2788 "proc-macro2", 1896 2789 "quote", 1897 2790 "syn", 2791 + ] 2792 + 2793 + [[package]] 2794 + name = "document-features" 2795 + version = "0.2.12" 2796 + source = "registry+https://github.com/rust-lang/crates.io-index" 2797 + checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" 2798 + dependencies = [ 2799 + "litrs", 1898 2800 ] 1899 2801 1900 2802 [[package]] ··· 1957 2859 1958 2860 [[package]] 1959 2861 name = "either" 1960 - version = "1.15.0" 2862 + version = "1.16.0" 1961 2863 source = "registry+https://github.com/rust-lang/crates.io-index" 1962 - checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 2864 + checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" 1963 2865 dependencies = [ 1964 2866 "serde", 1965 2867 ] ··· 2038 2940 ] 2039 2941 2040 2942 [[package]] 2943 + name = "enumset" 2944 + version = "1.1.13" 2945 + source = "registry+https://github.com/rust-lang/crates.io-index" 2946 + checksum = "839c4174b41e75c8f7306110b2c51996a293b8d1d850edd529011841d9fede7d" 2947 + dependencies = [ 2948 + "enumset_derive", 2949 + ] 2950 + 2951 + [[package]] 2952 + name = "enumset_derive" 2953 + version = "0.15.0" 2954 + source = "registry+https://github.com/rust-lang/crates.io-index" 2955 + checksum = "4bd536557b58c682b217b8fb199afdff47cd3eff260623f19e77074eb073d63a" 2956 + dependencies = [ 2957 + "darling", 2958 + "proc-macro2", 2959 + "quote", 2960 + "syn", 2961 + ] 2962 + 2963 + [[package]] 2041 2964 name = "equivalent" 2042 2965 version = "1.0.2" 2043 2966 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2065 2988 ] 2066 2989 2067 2990 [[package]] 2991 + name = "euclid" 2992 + version = "0.22.14" 2993 + source = "registry+https://github.com/rust-lang/crates.io-index" 2994 + checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06" 2995 + dependencies = [ 2996 + "num-traits", 2997 + "serde", 2998 + ] 2999 + 3000 + [[package]] 2068 3001 name = "event-listener" 2069 3002 version = "5.4.1" 2070 3003 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2077 3010 2078 3011 [[package]] 2079 3012 name = "fastrand" 2080 - version = "2.3.0" 3013 + version = "2.4.1" 2081 3014 source = "registry+https://github.com/rust-lang/crates.io-index" 2082 - checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 3015 + checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" 2083 3016 2084 3017 [[package]] 2085 3018 name = "ff" ··· 2105 3038 2106 3039 [[package]] 2107 3040 name = "fjall" 2108 - version = "3.1.4" 3041 + version = "3.1.6" 2109 3042 source = "registry+https://github.com/rust-lang/crates.io-index" 2110 - checksum = "b62b25b4d815ae178d7d9e4aa32ee59f072efd5431c736abede1e6ee13c8c453" 3043 + checksum = "9fcdc69609906151dff9b534e30eaf8515082055d36f628e382bd0b5d6a1d362" 2111 3044 dependencies = [ 2112 3045 "byteorder-lite", 2113 3046 "byteview", ··· 2282 3215 ] 2283 3216 2284 3217 [[package]] 3218 + name = "generational-box" 3219 + version = "0.7.9" 3220 + source = "registry+https://github.com/rust-lang/crates.io-index" 3221 + checksum = "8cd0d825b8d339701ad330dbcd6399519ced4d143484954daf6e3185dace4f77" 3222 + dependencies = [ 3223 + "parking_lot", 3224 + "tracing", 3225 + ] 3226 + 3227 + [[package]] 2285 3228 name = "generic-array" 2286 3229 version = "0.14.9" 2287 3230 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2321 3264 checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" 2322 3265 dependencies = [ 2323 3266 "cfg-if", 2324 - "js-sys", 2325 3267 "libc", 2326 3268 "r-efi 5.3.0", 2327 3269 "wasip2", 2328 - "wasm-bindgen", 2329 3270 ] 2330 3271 2331 3272 [[package]] 2332 3273 name = "getrandom" 2333 - version = "0.4.2" 3274 + version = "0.4.3" 2334 3275 source = "registry+https://github.com/rust-lang/crates.io-index" 2335 - checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" 3276 + checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" 2336 3277 dependencies = [ 2337 3278 "cfg-if", 3279 + "js-sys", 2338 3280 "libc", 2339 3281 "r-efi 6.0.0", 2340 - "rand_core 0.10.0", 2341 - "wasip2", 2342 - "wasip3", 3282 + "rand_core 0.10.1", 3283 + "wasm-bindgen", 2343 3284 ] 2344 3285 2345 3286 [[package]] ··· 2349 3290 checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" 2350 3291 2351 3292 [[package]] 3293 + name = "gloo-net" 3294 + version = "0.6.0" 3295 + source = "registry+https://github.com/rust-lang/crates.io-index" 3296 + checksum = "c06f627b1a58ca3d42b45d6104bf1e1a03799df472df00988b6ba21accc10580" 3297 + dependencies = [ 3298 + "futures-channel", 3299 + "futures-core", 3300 + "futures-sink", 3301 + "gloo-utils", 3302 + "http 1.4.2", 3303 + "js-sys", 3304 + "pin-project", 3305 + "serde", 3306 + "serde_json", 3307 + "thiserror 1.0.69", 3308 + "wasm-bindgen", 3309 + "wasm-bindgen-futures", 3310 + "web-sys", 3311 + ] 3312 + 3313 + [[package]] 3314 + name = "gloo-timers" 3315 + version = "0.3.0" 3316 + source = "registry+https://github.com/rust-lang/crates.io-index" 3317 + checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" 3318 + dependencies = [ 3319 + "futures-channel", 3320 + "futures-core", 3321 + "js-sys", 3322 + "wasm-bindgen", 3323 + ] 3324 + 3325 + [[package]] 3326 + name = "gloo-utils" 3327 + version = "0.2.0" 3328 + source = "registry+https://github.com/rust-lang/crates.io-index" 3329 + checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" 3330 + dependencies = [ 3331 + "js-sys", 3332 + "serde", 3333 + "serde_json", 3334 + "wasm-bindgen", 3335 + "web-sys", 3336 + ] 3337 + 3338 + [[package]] 2352 3339 name = "group" 2353 3340 version = "0.13.0" 2354 3341 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2380 3367 2381 3368 [[package]] 2382 3369 name = "h2" 2383 - version = "0.4.13" 3370 + version = "0.4.15" 2384 3371 source = "registry+https://github.com/rust-lang/crates.io-index" 2385 - checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" 3372 + checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155" 2386 3373 dependencies = [ 2387 3374 "atomic-waker", 2388 3375 "bytes", 2389 3376 "fnv", 2390 3377 "futures-core", 2391 3378 "futures-sink", 2392 - "http 1.4.0", 3379 + "http 1.4.2", 2393 3380 "indexmap", 2394 3381 "slab", 2395 3382 "tokio", ··· 2451 3438 ] 2452 3439 2453 3440 [[package]] 3441 + name = "hashbrown" 3442 + version = "0.17.1" 3443 + source = "registry+https://github.com/rust-lang/crates.io-index" 3444 + checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" 3445 + 3446 + [[package]] 2454 3447 name = "hashlink" 2455 3448 version = "0.10.0" 2456 3449 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2460 3453 ] 2461 3454 2462 3455 [[package]] 3456 + name = "headers" 3457 + version = "0.4.1" 3458 + source = "registry+https://github.com/rust-lang/crates.io-index" 3459 + checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" 3460 + dependencies = [ 3461 + "base64", 3462 + "bytes", 3463 + "headers-core", 3464 + "http 1.4.2", 3465 + "httpdate", 3466 + "mime", 3467 + "sha1", 3468 + ] 3469 + 3470 + [[package]] 3471 + name = "headers-core" 3472 + version = "0.3.0" 3473 + source = "registry+https://github.com/rust-lang/crates.io-index" 3474 + checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" 3475 + dependencies = [ 3476 + "http 1.4.2", 3477 + ] 3478 + 3479 + [[package]] 2463 3480 name = "heck" 2464 3481 version = "0.5.0" 2465 3482 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2487 3504 "idna", 2488 3505 "ipnet", 2489 3506 "once_cell", 2490 - "rand 0.9.2", 3507 + "rand 0.9.4", 2491 3508 "ring", 2492 3509 "thiserror 2.0.18", 2493 3510 "tinyvec", ··· 2509 3526 "moka", 2510 3527 "once_cell", 2511 3528 "parking_lot", 2512 - "rand 0.9.2", 3529 + "rand 0.9.4", 2513 3530 "resolv-conf", 2514 - "smallvec 1.15.1", 3531 + "smallvec 1.15.2", 2515 3532 "thiserror 2.0.18", 2516 3533 "tokio", 2517 3534 "tracing", ··· 2550 3567 source = "registry+https://github.com/rust-lang/crates.io-index" 2551 3568 checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" 2552 3569 dependencies = [ 2553 - "digest 0.11.2", 3570 + "digest 0.11.3", 2554 3571 ] 2555 3572 2556 3573 [[package]] ··· 2575 3592 2576 3593 [[package]] 2577 3594 name = "http" 2578 - version = "1.4.0" 3595 + version = "1.4.2" 2579 3596 source = "registry+https://github.com/rust-lang/crates.io-index" 2580 - checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" 3597 + checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" 2581 3598 dependencies = [ 2582 3599 "bytes", 2583 3600 "itoa", ··· 2601 3618 checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 2602 3619 dependencies = [ 2603 3620 "bytes", 2604 - "http 1.4.0", 3621 + "http 1.4.2", 2605 3622 ] 2606 3623 2607 3624 [[package]] ··· 2612 3629 dependencies = [ 2613 3630 "bytes", 2614 3631 "futures-core", 2615 - "http 1.4.0", 3632 + "http 1.4.2", 2616 3633 "http-body 1.0.1", 2617 3634 "pin-project-lite", 2618 3635 ] 2619 3636 2620 3637 [[package]] 3638 + name = "http-range-header" 3639 + version = "0.4.2" 3640 + source = "registry+https://github.com/rust-lang/crates.io-index" 3641 + checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" 3642 + 3643 + [[package]] 2621 3644 name = "httparse" 2622 3645 version = "1.10.1" 2623 3646 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2631 3654 2632 3655 [[package]] 2633 3656 name = "hybrid-array" 2634 - version = "0.4.10" 3657 + version = "0.4.13" 2635 3658 source = "registry+https://github.com/rust-lang/crates.io-index" 2636 - checksum = "3944cf8cf766b40e2a1a333ee5e9b563f854d5fa49d6a8ca2764e97c6eddb214" 3659 + checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" 2637 3660 dependencies = [ 2638 3661 "typenum", 2639 3662 ] ··· 2664 3687 2665 3688 [[package]] 2666 3689 name = "hyper" 2667 - version = "1.9.0" 3690 + version = "1.10.1" 2668 3691 source = "registry+https://github.com/rust-lang/crates.io-index" 2669 - checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" 3692 + checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" 2670 3693 dependencies = [ 2671 3694 "atomic-waker", 2672 3695 "bytes", 2673 3696 "futures-channel", 2674 3697 "futures-core", 2675 - "h2 0.4.13", 2676 - "http 1.4.0", 3698 + "h2 0.4.15", 3699 + "http 1.4.2", 2677 3700 "http-body 1.0.1", 2678 3701 "httparse", 2679 3702 "httpdate", 2680 3703 "itoa", 2681 3704 "pin-project-lite", 2682 - "smallvec 1.15.1", 3705 + "smallvec 1.15.2", 2683 3706 "tokio", 2684 3707 "want", 2685 3708 ] ··· 2701 3724 2702 3725 [[package]] 2703 3726 name = "hyper-rustls" 2704 - version = "0.27.7" 3727 + version = "0.27.9" 2705 3728 source = "registry+https://github.com/rust-lang/crates.io-index" 2706 - checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" 3729 + checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" 2707 3730 dependencies = [ 2708 - "http 1.4.0", 2709 - "hyper 1.9.0", 3731 + "http 1.4.2", 3732 + "hyper 1.10.1", 2710 3733 "hyper-util", 2711 - "rustls 0.23.37", 2712 - "rustls-native-certs 0.8.3", 2713 - "rustls-pki-types", 3734 + "rustls 0.23.41", 3735 + "rustls-native-certs 0.8.4", 2714 3736 "tokio", 2715 3737 "tokio-rustls 0.26.4", 2716 3738 "tower-service", 2717 - "webpki-roots 1.0.6", 3739 + "webpki-roots 1.0.8", 2718 3740 ] 2719 3741 2720 3742 [[package]] ··· 2727 3749 "bytes", 2728 3750 "futures-channel", 2729 3751 "futures-util", 2730 - "http 1.4.0", 3752 + "http 1.4.2", 2731 3753 "http-body 1.0.1", 2732 - "hyper 1.9.0", 3754 + "hyper 1.10.1", 2733 3755 "ipnet", 2734 3756 "libc", 2735 3757 "percent-encoding", 2736 3758 "pin-project-lite", 2737 - "socket2 0.6.3", 3759 + "socket2 0.6.4", 2738 3760 "system-configuration", 2739 3761 "tokio", 3762 + "tower-layer", 2740 3763 "tower-service", 2741 3764 "tracing", 2742 3765 "windows-registry", ··· 2803 3826 "icu_normalizer_data", 2804 3827 "icu_properties", 2805 3828 "icu_provider", 2806 - "smallvec 1.15.1", 3829 + "smallvec 1.15.2", 2807 3830 "zerovec", 2808 3831 ] 2809 3832 ··· 2849 3872 ] 2850 3873 2851 3874 [[package]] 2852 - name = "id-arena" 2853 - version = "2.3.0" 3875 + name = "ident_case" 3876 + version = "1.0.1" 2854 3877 source = "registry+https://github.com/rust-lang/crates.io-index" 2855 - checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" 3878 + checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 2856 3879 2857 3880 [[package]] 2858 3881 name = "idna" ··· 2861 3884 checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" 2862 3885 dependencies = [ 2863 3886 "idna_adapter", 2864 - "smallvec 1.15.1", 3887 + "smallvec 1.15.2", 2865 3888 "utf8_iter", 2866 3889 ] 2867 3890 2868 3891 [[package]] 2869 3892 name = "idna_adapter" 2870 - version = "1.2.1" 3893 + version = "1.2.2" 2871 3894 source = "registry+https://github.com/rust-lang/crates.io-index" 2872 - checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 3895 + checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" 2873 3896 dependencies = [ 2874 3897 "icu_normalizer", 2875 3898 "icu_properties", ··· 2877 3900 2878 3901 [[package]] 2879 3902 name = "indexmap" 2880 - version = "2.13.0" 3903 + version = "2.14.0" 2881 3904 source = "registry+https://github.com/rust-lang/crates.io-index" 2882 - checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" 3905 + checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" 2883 3906 dependencies = [ 2884 3907 "equivalent", 2885 - "hashbrown 0.16.1", 3908 + "hashbrown 0.17.1", 2886 3909 "serde", 2887 3910 "serde_core", 2888 3911 ] 2889 3912 2890 3913 [[package]] 3914 + name = "infer" 3915 + version = "0.19.0" 3916 + source = "registry+https://github.com/rust-lang/crates.io-index" 3917 + checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" 3918 + dependencies = [ 3919 + "cfb", 3920 + ] 3921 + 3922 + [[package]] 2891 3923 name = "interval-heap" 2892 3924 version = "0.0.5" 2893 3925 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2897 3929 ] 2898 3930 2899 3931 [[package]] 3932 + name = "inventory" 3933 + version = "0.3.24" 3934 + source = "registry+https://github.com/rust-lang/crates.io-index" 3935 + checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" 3936 + dependencies = [ 3937 + "rustversion", 3938 + ] 3939 + 3940 + [[package]] 2900 3941 name = "ipconfig" 2901 3942 version = "0.3.4" 2902 3943 source = "registry+https://github.com/rust-lang/crates.io-index" 2903 3944 checksum = "4d40460c0ce33d6ce4b0630ad68ff63d6661961c48b6dba35e5a4d81cfb48222" 2904 3945 dependencies = [ 2905 - "socket2 0.6.3", 3946 + "socket2 0.6.4", 2906 3947 "widestring", 2907 3948 "windows-registry", 2908 3949 "windows-result", ··· 2916 3957 checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" 2917 3958 2918 3959 [[package]] 2919 - name = "iri-string" 2920 - version = "0.7.12" 2921 - source = "registry+https://github.com/rust-lang/crates.io-index" 2922 - checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20" 2923 - dependencies = [ 2924 - "memchr", 2925 - "serde", 2926 - ] 2927 - 2928 - [[package]] 2929 3960 name = "is_terminal_polyfill" 2930 3961 version = "1.70.2" 2931 3962 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2941 3972 ] 2942 3973 2943 3974 [[package]] 3975 + name = "itertools" 3976 + version = "0.14.0" 3977 + source = "registry+https://github.com/rust-lang/crates.io-index" 3978 + checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" 3979 + dependencies = [ 3980 + "either", 3981 + ] 3982 + 3983 + [[package]] 2944 3984 name = "itoa" 2945 3985 version = "1.0.18" 2946 3986 source = "registry+https://github.com/rust-lang/crates.io-index" 2947 3987 checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" 2948 3988 2949 3989 [[package]] 3990 + name = "jni" 3991 + version = "0.21.1" 3992 + source = "registry+https://github.com/rust-lang/crates.io-index" 3993 + checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" 3994 + dependencies = [ 3995 + "cesu8", 3996 + "cfg-if", 3997 + "combine", 3998 + "jni-sys 0.3.1", 3999 + "log", 4000 + "thiserror 1.0.69", 4001 + "walkdir", 4002 + "windows-sys 0.45.0", 4003 + ] 4004 + 4005 + [[package]] 4006 + name = "jni-sys" 4007 + version = "0.3.1" 4008 + source = "registry+https://github.com/rust-lang/crates.io-index" 4009 + checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" 4010 + dependencies = [ 4011 + "jni-sys 0.4.1", 4012 + ] 4013 + 4014 + [[package]] 4015 + name = "jni-sys" 4016 + version = "0.4.1" 4017 + source = "registry+https://github.com/rust-lang/crates.io-index" 4018 + checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" 4019 + dependencies = [ 4020 + "jni-sys-macros", 4021 + ] 4022 + 4023 + [[package]] 4024 + name = "jni-sys-macros" 4025 + version = "0.4.1" 4026 + source = "registry+https://github.com/rust-lang/crates.io-index" 4027 + checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" 4028 + dependencies = [ 4029 + "quote", 4030 + "syn", 4031 + ] 4032 + 4033 + [[package]] 2950 4034 name = "jobserver" 2951 - version = "0.1.34" 4035 + version = "0.1.35" 2952 4036 source = "registry+https://github.com/rust-lang/crates.io-index" 2953 - checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" 4037 + checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" 2954 4038 dependencies = [ 2955 - "getrandom 0.3.4", 4039 + "getrandom 0.4.3", 2956 4040 "libc", 2957 4041 ] 2958 4042 2959 4043 [[package]] 2960 4044 name = "js-sys" 2961 - version = "0.3.94" 4045 + version = "0.3.103" 2962 4046 source = "registry+https://github.com/rust-lang/crates.io-index" 2963 - checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9" 4047 + checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" 2964 4048 dependencies = [ 2965 4049 "cfg-if", 2966 4050 "futures-util", 2967 - "once_cell", 2968 4051 "wasm-bindgen", 2969 4052 ] 2970 4053 ··· 2983 4066 ] 2984 4067 2985 4068 [[package]] 4069 + name = "keyboard-types" 4070 + version = "0.7.0" 4071 + source = "registry+https://github.com/rust-lang/crates.io-index" 4072 + checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" 4073 + dependencies = [ 4074 + "bitflags", 4075 + "serde", 4076 + ] 4077 + 4078 + [[package]] 4079 + name = "konst" 4080 + version = "0.2.20" 4081 + source = "registry+https://github.com/rust-lang/crates.io-index" 4082 + checksum = "128133ed7824fcd73d6e7b17957c5eb7bacb885649bd8c69708b2331a10bcefb" 4083 + dependencies = [ 4084 + "konst_macro_rules", 4085 + ] 4086 + 4087 + [[package]] 4088 + name = "konst_macro_rules" 4089 + version = "0.2.19" 4090 + source = "registry+https://github.com/rust-lang/crates.io-index" 4091 + checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" 4092 + 4093 + [[package]] 4094 + name = "lazy-js-bundle" 4095 + version = "0.7.9" 4096 + source = "registry+https://github.com/rust-lang/crates.io-index" 4097 + checksum = "ccafada6c9541db44db758619236f2748f6e1bdaa84d04ded858567cd1e89321" 4098 + 4099 + [[package]] 2986 4100 name = "lazy_static" 2987 4101 version = "1.5.0" 2988 4102 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2990 4104 dependencies = [ 2991 4105 "spin", 2992 4106 ] 2993 - 2994 - [[package]] 2995 - name = "leb128fmt" 2996 - version = "0.1.0" 2997 - source = "registry+https://github.com/rust-lang/crates.io-index" 2998 - checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" 2999 4107 3000 4108 [[package]] 3001 4109 name = "lettre" 3002 - version = "0.11.21" 4110 + version = "0.11.22" 3003 4111 source = "registry+https://github.com/rust-lang/crates.io-index" 3004 - checksum = "dabda5859ee7c06b995b9d1165aa52c39110e079ef609db97178d86aeb051fa7" 4112 + checksum = "0da65617f6cb926332d039cb578aad56178da86e128db6a1b09f4c94fa5b3349" 3005 4113 dependencies = [ 3006 4114 "async-trait", 3007 4115 "base64", ··· 3016 4124 "nom", 3017 4125 "percent-encoding", 3018 4126 "quoted_printable", 3019 - "rustls 0.23.37", 3020 - "socket2 0.6.3", 4127 + "rustls 0.23.41", 4128 + "socket2 0.6.4", 3021 4129 "tokio", 3022 4130 "tokio-rustls 0.26.4", 3023 4131 "tracing", 3024 4132 "url", 3025 - "webpki-roots 1.0.6", 4133 + "webpki-roots 1.0.8", 3026 4134 ] 3027 4135 3028 4136 [[package]] 3029 4137 name = "libc" 3030 - version = "0.2.184" 4138 + version = "0.2.186" 4139 + source = "registry+https://github.com/rust-lang/crates.io-index" 4140 + checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" 4141 + 4142 + [[package]] 4143 + name = "libloading" 4144 + version = "0.8.9" 3031 4145 source = "registry+https://github.com/rust-lang/crates.io-index" 3032 - checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af" 4146 + checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" 4147 + dependencies = [ 4148 + "cfg-if", 4149 + "windows-link", 4150 + ] 3033 4151 3034 4152 [[package]] 3035 4153 name = "libm" ··· 3039 4157 3040 4158 [[package]] 3041 4159 name = "libredox" 3042 - version = "0.1.15" 4160 + version = "0.1.18" 3043 4161 source = "registry+https://github.com/rust-lang/crates.io-index" 3044 - checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08" 4162 + checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" 3045 4163 dependencies = [ 3046 4164 "bitflags", 3047 4165 "libc", 3048 4166 "plain", 3049 - "redox_syscall 0.7.4", 4167 + "redox_syscall 0.9.0", 3050 4168 ] 3051 4169 3052 4170 [[package]] ··· 3073 4191 checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" 3074 4192 3075 4193 [[package]] 4194 + name = "litrs" 4195 + version = "1.0.0" 4196 + source = "registry+https://github.com/rust-lang/crates.io-index" 4197 + checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" 4198 + 4199 + [[package]] 3076 4200 name = "lock_api" 3077 4201 version = "0.4.14" 3078 4202 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3083 4207 3084 4208 [[package]] 3085 4209 name = "log" 3086 - version = "0.4.29" 4210 + version = "0.4.33" 3087 4211 source = "registry+https://github.com/rust-lang/crates.io-index" 3088 - checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" 4212 + checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" 3089 4213 3090 4214 [[package]] 3091 - name = "lru" 3092 - version = "0.16.3" 4215 + name = "longest-increasing-subsequence" 4216 + version = "0.1.0" 3093 4217 source = "registry+https://github.com/rust-lang/crates.io-index" 3094 - checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" 3095 - dependencies = [ 3096 - "hashbrown 0.16.1", 3097 - ] 4218 + checksum = "b3bd0dd2cd90571056fdb71f6275fada10131182f84899f4b2a916e565d81d86" 3098 4219 3099 4220 [[package]] 3100 4221 name = "lru" 3101 - version = "0.16.3" 4222 + version = "0.12.5" 3102 4223 source = "registry+https://github.com/rust-lang/crates.io-index" 3103 - checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" 4224 + checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" 3104 4225 dependencies = [ 3105 - "hashbrown 0.16.1", 4226 + "hashbrown 0.15.5", 3106 4227 ] 3107 4228 3108 4229 [[package]] 3109 4230 name = "lru" 3110 - version = "0.16.3" 4231 + version = "0.16.4" 3111 4232 source = "registry+https://github.com/rust-lang/crates.io-index" 3112 - checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" 4233 + checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39" 3113 4234 dependencies = [ 3114 4235 "hashbrown 0.16.1", 3115 4236 ] ··· 3122 4243 3123 4244 [[package]] 3124 4245 name = "lsm-tree" 3125 - version = "3.1.4" 4246 + version = "3.1.6" 3126 4247 source = "registry+https://github.com/rust-lang/crates.io-index" 3127 - checksum = "e447ac67ff6aef4ec07fc19e507b219336cbba90a697c0dbeb1bf51b91536b67" 4248 + checksum = "39ca67401338b98d58447387dd5230552d2241bc388206e491d137b18dfea9d6" 3128 4249 dependencies = [ 3129 4250 "byteorder-lite", 3130 4251 "byteview", ··· 3134 4255 "log", 3135 4256 "lz4_flex", 3136 4257 "quick_cache", 3137 - "rustc-hash", 4258 + "rustc-hash 2.1.3", 3138 4259 "self_cell", 3139 4260 "sfa", 3140 4261 "tempfile", ··· 3144 4265 3145 4266 [[package]] 3146 4267 name = "lz4_flex" 3147 - version = "0.13.0" 4268 + version = "0.13.1" 3148 4269 source = "registry+https://github.com/rust-lang/crates.io-index" 3149 - checksum = "db9a0d582c2874f68138a16ce1867e0ffde6c0bb0a0df85e1f36d04146db488a" 4270 + checksum = "7ef0d4ed8669f8f8826eb00dc878084aa8f253506c4fd5e8f58f5bce72ddb97e" 3150 4271 dependencies = [ 3151 4272 "twox-hash", 3152 4273 ] 3153 4274 3154 4275 [[package]] 4276 + name = "macro-string" 4277 + version = "0.1.4" 4278 + source = "registry+https://github.com/rust-lang/crates.io-index" 4279 + checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" 4280 + dependencies = [ 4281 + "proc-macro2", 4282 + "quote", 4283 + "syn", 4284 + ] 4285 + 4286 + [[package]] 4287 + name = "manganis" 4288 + version = "0.7.9" 4289 + source = "registry+https://github.com/rust-lang/crates.io-index" 4290 + checksum = "8bfcf56309de35b48b8780ea097ace5c3b773a617b52edc49dfc9a63a7d9dc43" 4291 + dependencies = [ 4292 + "const-serialize 0.7.2", 4293 + "const-serialize 0.8.0-alpha.0", 4294 + "jni", 4295 + "manganis-core", 4296 + "manganis-macro", 4297 + "ndk-context", 4298 + "objc2", 4299 + "thiserror 2.0.18", 4300 + ] 4301 + 4302 + [[package]] 4303 + name = "manganis-core" 4304 + version = "0.7.9" 4305 + source = "registry+https://github.com/rust-lang/crates.io-index" 4306 + checksum = "a24d6be68f594495aea60850a284029d585d7b7839b26096c1b6d758f8518648" 4307 + dependencies = [ 4308 + "const-serialize 0.7.2", 4309 + "const-serialize 0.8.0-alpha.0", 4310 + "dioxus-cli-config", 4311 + "dioxus-core-types", 4312 + "serde", 4313 + "winnow 0.7.15", 4314 + ] 4315 + 4316 + [[package]] 4317 + name = "manganis-macro" 4318 + version = "0.7.9" 4319 + source = "registry+https://github.com/rust-lang/crates.io-index" 4320 + checksum = "5e782a10318d707c0833e31876ded8acf91287eee0010af8392559af614c7226" 4321 + dependencies = [ 4322 + "dunce", 4323 + "macro-string", 4324 + "manganis-core", 4325 + "proc-macro2", 4326 + "quote", 4327 + "syn", 4328 + ] 4329 + 4330 + [[package]] 3155 4331 name = "match-lookup" 3156 4332 version = "0.1.2" 3157 4333 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3189 4365 3190 4366 [[package]] 3191 4367 name = "memchr" 3192 - version = "2.8.0" 4368 + version = "2.8.2" 3193 4369 source = "registry+https://github.com/rust-lang/crates.io-index" 3194 - checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" 4370 + checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" 4371 + 4372 + [[package]] 4373 + name = "memfd" 4374 + version = "0.6.5" 4375 + source = "registry+https://github.com/rust-lang/crates.io-index" 4376 + checksum = "ad38eb12aea514a0466ea40a80fd8cc83637065948eb4a426e4aa46261175227" 4377 + dependencies = [ 4378 + "rustix", 4379 + ] 4380 + 4381 + [[package]] 4382 + name = "memmap2" 4383 + version = "0.9.11" 4384 + source = "registry+https://github.com/rust-lang/crates.io-index" 4385 + checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" 4386 + dependencies = [ 4387 + "libc", 4388 + ] 3195 4389 3196 4390 [[package]] 3197 4391 name = "mime" ··· 3211 4405 3212 4406 [[package]] 3213 4407 name = "mio" 3214 - version = "1.2.0" 4408 + version = "1.2.1" 3215 4409 source = "registry+https://github.com/rust-lang/crates.io-index" 3216 - checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" 4410 + checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" 3217 4411 dependencies = [ 3218 4412 "libc", 3219 4413 "wasi", ··· 3232 4426 "equivalent", 3233 4427 "parking_lot", 3234 4428 "portable-atomic", 3235 - "smallvec 1.15.1", 4429 + "smallvec 1.15.2", 3236 4430 "tagptr", 3237 4431 "uuid", 3238 4432 ] 3239 4433 3240 4434 [[package]] 4435 + name = "multer" 4436 + version = "3.1.0" 4437 + source = "registry+https://github.com/rust-lang/crates.io-index" 4438 + checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" 4439 + dependencies = [ 4440 + "bytes", 4441 + "encoding_rs", 4442 + "futures-util", 4443 + "http 1.4.2", 4444 + "httparse", 4445 + "memchr", 4446 + "mime", 4447 + "spin", 4448 + "version_check", 4449 + ] 4450 + 4451 + [[package]] 3241 4452 name = "multibase" 3242 - version = "0.9.2" 4453 + version = "0.9.3" 3243 4454 source = "registry+https://github.com/rust-lang/crates.io-index" 3244 - checksum = "8694bb4835f452b0e3bb06dbebb1d6fc5385b6ca1caf2e55fd165c042390ec77" 4455 + checksum = "7e0e4a371cbf1dfd666b658ba137763edb23c45beb43cfe369b5593cd6b437b6" 3245 4456 dependencies = [ 3246 4457 "base-x", 3247 4458 "base256emoji", 4459 + "base45", 3248 4460 "data-encoding", 3249 4461 "data-encoding-macro", 3250 4462 ] 3251 4463 3252 4464 [[package]] 3253 4465 name = "multihash" 3254 - version = "0.19.3" 4466 + version = "0.19.5" 3255 4467 source = "registry+https://github.com/rust-lang/crates.io-index" 3256 - checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d" 4468 + checksum = "577c63b00ad74d57e8c9aa870b5fccebf2fd64a308a5aee9f1bb88e4aea19447" 3257 4469 dependencies = [ 3258 - "core2", 3259 4470 "unsigned-varint", 3260 4471 ] 3261 4472 3262 4473 [[package]] 4474 + name = "ndk" 4475 + version = "0.9.0" 4476 + source = "registry+https://github.com/rust-lang/crates.io-index" 4477 + checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" 4478 + dependencies = [ 4479 + "bitflags", 4480 + "jni-sys 0.3.1", 4481 + "log", 4482 + "ndk-sys", 4483 + "num_enum", 4484 + "raw-window-handle", 4485 + "thiserror 1.0.69", 4486 + ] 4487 + 4488 + [[package]] 4489 + name = "ndk-context" 4490 + version = "0.1.1" 4491 + source = "registry+https://github.com/rust-lang/crates.io-index" 4492 + checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 4493 + 4494 + [[package]] 4495 + name = "ndk-sys" 4496 + version = "0.6.0+11769913" 4497 + source = "registry+https://github.com/rust-lang/crates.io-index" 4498 + checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" 4499 + dependencies = [ 4500 + "jni-sys 0.3.1", 4501 + ] 4502 + 4503 + [[package]] 3263 4504 name = "nom" 3264 4505 version = "8.0.0" 3265 4506 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3279 4520 3280 4521 [[package]] 3281 4522 name = "num-bigint" 3282 - version = "0.4.6" 4523 + version = "0.4.8" 3283 4524 source = "registry+https://github.com/rust-lang/crates.io-index" 3284 - checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 4525 + checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" 3285 4526 dependencies = [ 3286 4527 "num-integer", 3287 4528 "num-traits", ··· 3299 4540 "num-iter", 3300 4541 "num-traits", 3301 4542 "rand 0.8.6", 3302 - "smallvec 1.15.1", 4543 + "smallvec 1.15.2", 3303 4544 "zeroize", 3304 4545 ] 3305 4546 3306 4547 [[package]] 3307 4548 name = "num-conv" 3308 - version = "0.2.1" 4549 + version = "0.2.2" 3309 4550 source = "registry+https://github.com/rust-lang/crates.io-index" 3310 - checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" 4551 + checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" 3311 4552 3312 4553 [[package]] 3313 4554 name = "num-integer" ··· 3340 4581 ] 3341 4582 3342 4583 [[package]] 4584 + name = "num_enum" 4585 + version = "0.7.6" 4586 + source = "registry+https://github.com/rust-lang/crates.io-index" 4587 + checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" 4588 + dependencies = [ 4589 + "num_enum_derive", 4590 + "rustversion", 4591 + ] 4592 + 4593 + [[package]] 4594 + name = "num_enum_derive" 4595 + version = "0.7.6" 4596 + source = "registry+https://github.com/rust-lang/crates.io-index" 4597 + checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" 4598 + dependencies = [ 4599 + "proc-macro-crate", 4600 + "proc-macro2", 4601 + "quote", 4602 + "syn", 4603 + ] 4604 + 4605 + [[package]] 4606 + name = "objc2" 4607 + version = "0.6.4" 4608 + source = "registry+https://github.com/rust-lang/crates.io-index" 4609 + checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" 4610 + dependencies = [ 4611 + "objc2-encode", 4612 + ] 4613 + 4614 + [[package]] 4615 + name = "objc2-encode" 4616 + version = "4.1.0" 4617 + source = "registry+https://github.com/rust-lang/crates.io-index" 4618 + checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" 4619 + 4620 + [[package]] 3343 4621 name = "once_cell" 3344 4622 version = "1.21.4" 3345 4623 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3395 4673 dependencies = [ 3396 4674 "async-trait", 3397 4675 "bytes", 3398 - "http 1.4.0", 4676 + "http 1.4.2", 3399 4677 "opentelemetry", 3400 4678 "reqwest", 3401 4679 ] ··· 3408 4686 dependencies = [ 3409 4687 "async-trait", 3410 4688 "futures-core", 3411 - "http 1.4.0", 4689 + "http 1.4.2", 3412 4690 "opentelemetry", 3413 4691 "opentelemetry-http", 3414 4692 "opentelemetry-proto", ··· 3509 4787 "panproto-lens", 3510 4788 "panproto-mig", 3511 4789 "panproto-schema", 3512 - "rustc-hash", 4790 + "rustc-hash 2.1.3", 3513 4791 "serde", 3514 4792 "serde_json", 3515 4793 "thiserror 2.0.18", ··· 3538 4816 source = "registry+https://github.com/rust-lang/crates.io-index" 3539 4817 checksum = "45ab6944782982798b7871948e3f62a2cfc06b94392a022f68dac1c7aa8b5d05" 3540 4818 dependencies = [ 3541 - "rustc-hash", 4819 + "rustc-hash 2.1.3", 3542 4820 "serde", 3543 4821 "thiserror 2.0.18", 3544 4822 ] ··· 3550 4828 checksum = "664aba7b026ea0a9c141af0799f9cce602bcc98b66cb69a28d31c1c1135de16c" 3551 4829 dependencies = [ 3552 4830 "panproto-expr", 3553 - "rustc-hash", 4831 + "rustc-hash 2.1.3", 3554 4832 "serde", 3555 4833 "thiserror 2.0.18", 3556 4834 ] ··· 3565 4843 "panproto-expr", 3566 4844 "panproto-gat", 3567 4845 "panproto-schema", 3568 - "rustc-hash", 4846 + "rustc-hash 2.1.3", 3569 4847 "serde", 3570 4848 "serde_json", 3571 4849 "smallvec 2.0.0-alpha.12", ··· 3587 4865 "pulldown-cmark", 3588 4866 "quick-xml", 3589 4867 "rmp-serde", 3590 - "rustc-hash", 4868 + "rustc-hash 2.1.3", 3591 4869 "serde", 3592 4870 "serde_json", 3593 4871 "simd-json", ··· 3607 4885 "panproto-inst", 3608 4886 "panproto-mig", 3609 4887 "panproto-schema", 3610 - "rustc-hash", 4888 + "rustc-hash 2.1.3", 3611 4889 "serde", 3612 4890 "serde_json", 3613 4891 "smallvec 2.0.0-alpha.12", ··· 3624 4902 "panproto-gat", 3625 4903 "panproto-inst", 3626 4904 "panproto-schema", 3627 - "rustc-hash", 4905 + "rustc-hash 2.1.3", 3628 4906 "serde", 3629 4907 "thiserror 2.0.18", 3630 4908 ] ··· 3639 4917 "panproto-gat", 3640 4918 "panproto-inst", 3641 4919 "panproto-schema", 3642 - "rustc-hash", 4920 + "rustc-hash 2.1.3", 3643 4921 "serde", 3644 4922 "serde_json", 3645 4923 "thiserror 2.0.18", ··· 3653 4931 dependencies = [ 3654 4932 "panproto-expr", 3655 4933 "panproto-gat", 3656 - "rustc-hash", 4934 + "rustc-hash 2.1.3", 3657 4935 "serde", 3658 4936 "smallvec 2.0.0-alpha.12", 3659 4937 "thiserror 2.0.18", ··· 3674 4952 "panproto-mig", 3675 4953 "panproto-schema", 3676 4954 "rmp-serde", 3677 - "rustc-hash", 4955 + "rustc-hash 2.1.3", 3678 4956 "serde", 3679 4957 "serde_json", 3680 4958 "smallvec 2.0.0-alpha.12", ··· 3706 4984 "cfg-if", 3707 4985 "libc", 3708 4986 "redox_syscall 0.5.18", 3709 - "smallvec 1.15.1", 4987 + "smallvec 1.15.2", 3710 4988 "windows-link", 3711 4989 ] 3712 4990 ··· 3738 5016 3739 5017 [[package]] 3740 5018 name = "pin-project" 3741 - version = "1.1.12" 5019 + version = "1.1.13" 3742 5020 source = "registry+https://github.com/rust-lang/crates.io-index" 3743 - checksum = "cbf0d9e68100b3a7989b4901972f265cd542e560a3a8a724e1e20322f4d06ce9" 5021 + checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" 3744 5022 dependencies = [ 3745 5023 "pin-project-internal", 3746 5024 ] 3747 5025 3748 5026 [[package]] 3749 5027 name = "pin-project-internal" 3750 - version = "1.1.12" 5028 + version = "1.1.13" 3751 5029 source = "registry+https://github.com/rust-lang/crates.io-index" 3752 - checksum = "a990e22f43e84855daf260dded30524ef4a9021cc7541c26540500a50b624389" 5030 + checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" 3753 5031 dependencies = [ 3754 5032 "proc-macro2", 3755 5033 "quote", ··· 3791 5069 3792 5070 [[package]] 3793 5071 name = "pkg-config" 3794 - version = "0.3.32" 5072 + version = "0.3.33" 3795 5073 source = "registry+https://github.com/rust-lang/crates.io-index" 3796 - checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 5074 + checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" 3797 5075 3798 5076 [[package]] 3799 5077 name = "plain" ··· 3860 5138 ] 3861 5139 3862 5140 [[package]] 3863 - name = "prettyplease" 3864 - version = "0.2.37" 3865 - source = "registry+https://github.com/rust-lang/crates.io-index" 3866 - checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" 3867 - dependencies = [ 3868 - "proc-macro2", 3869 - "syn", 3870 - ] 3871 - 3872 - [[package]] 3873 5141 name = "primeorder" 3874 5142 version = "0.13.6" 3875 5143 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3880 5148 ] 3881 5149 3882 5150 [[package]] 5151 + name = "proc-macro-crate" 5152 + version = "3.5.0" 5153 + source = "registry+https://github.com/rust-lang/crates.io-index" 5154 + checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" 5155 + dependencies = [ 5156 + "toml_edit", 5157 + ] 5158 + 5159 + [[package]] 3883 5160 name = "proc-macro2" 3884 5161 version = "1.0.106" 3885 5162 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3889 5166 ] 3890 5167 3891 5168 [[package]] 5169 + name = "proc-macro2-diagnostics" 5170 + version = "0.10.1" 5171 + source = "registry+https://github.com/rust-lang/crates.io-index" 5172 + checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" 5173 + dependencies = [ 5174 + "proc-macro2", 5175 + "quote", 5176 + "syn", 5177 + "version_check", 5178 + ] 5179 + 5180 + [[package]] 3892 5181 name = "prometheus-client" 3893 5182 version = "0.23.1" 3894 5183 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3921 5210 "bit-vec", 3922 5211 "bitflags", 3923 5212 "num-traits", 3924 - "rand 0.9.2", 3925 - "rand_chacha", 5213 + "rand 0.9.4", 5214 + "rand_chacha 0.9.0", 3926 5215 "rand_xorshift", 3927 5216 "regex-syntax", 3928 5217 "rusty-fork", ··· 3947 5236 checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" 3948 5237 dependencies = [ 3949 5238 "anyhow", 3950 - "itertools", 5239 + "itertools 0.14.0", 3951 5240 "proc-macro2", 3952 5241 "quote", 3953 5242 "syn", 3954 5243 ] 3955 5244 3956 5245 [[package]] 5246 + name = "psl-types" 5247 + version = "2.0.11" 5248 + source = "registry+https://github.com/rust-lang/crates.io-index" 5249 + checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" 5250 + 5251 + [[package]] 5252 + name = "publicsuffix" 5253 + version = "2.3.0" 5254 + source = "registry+https://github.com/rust-lang/crates.io-index" 5255 + checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf" 5256 + dependencies = [ 5257 + "idna", 5258 + "psl-types", 5259 + ] 5260 + 5261 + [[package]] 3957 5262 name = "pulldown-cmark" 3958 5263 version = "0.12.2" 3959 5264 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3989 5294 3990 5295 [[package]] 3991 5296 name = "quick_cache" 3992 - version = "0.6.21" 5297 + version = "0.6.24" 3993 5298 source = "registry+https://github.com/rust-lang/crates.io-index" 3994 - checksum = "5a70b1b8b47e31d0498ecbc3c5470bb931399a8bfed1fd79d1717a61ce7f96e3" 5299 + checksum = "b9c6658afe513a3b484e3abfdaa0d03ef3c0bbf017542c178dd55f94eb3051f9" 3995 5300 dependencies = [ 3996 5301 "equivalent", 3997 5302 "hashbrown 0.16.1", ··· 3999 5304 4000 5305 [[package]] 4001 5306 name = "quinn" 4002 - version = "0.11.9" 5307 + version = "0.11.11" 4003 5308 source = "registry+https://github.com/rust-lang/crates.io-index" 4004 - checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" 5309 + checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8" 4005 5310 dependencies = [ 4006 5311 "bytes", 4007 5312 "cfg_aliases", 4008 5313 "pin-project-lite", 4009 5314 "quinn-proto", 4010 5315 "quinn-udp", 4011 - "rustc-hash", 4012 - "rustls 0.23.37", 4013 - "socket2 0.6.3", 5316 + "rustc-hash 2.1.3", 5317 + "rustls 0.23.41", 5318 + "socket2 0.6.4", 4014 5319 "thiserror 2.0.18", 4015 5320 "tokio", 4016 5321 "tracing", ··· 4019 5324 4020 5325 [[package]] 4021 5326 name = "quinn-proto" 4022 - version = "0.11.14" 5327 + version = "0.11.16" 4023 5328 source = "registry+https://github.com/rust-lang/crates.io-index" 4024 - checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" 5329 + checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560" 4025 5330 dependencies = [ 4026 5331 "bytes", 4027 - "getrandom 0.3.4", 5332 + "getrandom 0.4.3", 4028 5333 "lru-slab", 4029 - "rand 0.9.2", 5334 + "rand 0.10.2", 5335 + "rand_pcg", 4030 5336 "ring", 4031 - "rustc-hash", 4032 - "rustls 0.23.37", 5337 + "rustc-hash 2.1.3", 5338 + "rustls 0.23.41", 4033 5339 "rustls-pki-types", 4034 5340 "slab", 4035 5341 "thiserror 2.0.18", ··· 4040 5346 4041 5347 [[package]] 4042 5348 name = "quinn-udp" 4043 - version = "0.5.14" 5349 + version = "0.5.15" 4044 5350 source = "registry+https://github.com/rust-lang/crates.io-index" 4045 - checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" 5351 + checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694" 4046 5352 dependencies = [ 4047 5353 "cfg_aliases", 4048 5354 "libc", 4049 5355 "once_cell", 4050 - "socket2 0.6.3", 5356 + "socket2 0.6.4", 4051 5357 "tracing", 4052 - "windows-sys 0.60.2", 5358 + "windows-sys 0.61.2", 4053 5359 ] 4054 5360 4055 5361 [[package]] 4056 5362 name = "quote" 4057 - version = "1.0.45" 5363 + version = "1.0.46" 4058 5364 source = "registry+https://github.com/rust-lang/crates.io-index" 4059 - checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" 5365 + checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" 4060 5366 dependencies = [ 4061 5367 "proc-macro2", 4062 5368 ] ··· 4092 5398 4093 5399 [[package]] 4094 5400 name = "rand" 4095 - version = "0.9.2" 5401 + version = "0.9.4" 4096 5402 source = "registry+https://github.com/rust-lang/crates.io-index" 4097 - checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" 5403 + checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" 4098 5404 dependencies = [ 4099 - "rand_chacha", 5405 + "rand_chacha 0.9.0", 4100 5406 "rand_core 0.9.5", 4101 5407 ] 4102 5408 4103 5409 [[package]] 4104 5410 name = "rand" 4105 - version = "0.10.0" 5411 + version = "0.10.2" 4106 5412 source = "registry+https://github.com/rust-lang/crates.io-index" 4107 - checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8" 5413 + checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" 4108 5414 dependencies = [ 4109 5415 "chacha20", 4110 - "getrandom 0.4.2", 4111 - "rand_core 0.10.0", 5416 + "getrandom 0.4.3", 5417 + "rand_core 0.10.1", 4112 5418 ] 4113 5419 4114 5420 [[package]] 4115 5421 name = "rand_chacha" 4116 5422 version = "0.3.1" 4117 5423 source = "registry+https://github.com/rust-lang/crates.io-index" 4118 - checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8" 5424 + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 4119 5425 dependencies = [ 4120 - "chacha20", 4121 - "getrandom 0.4.2", 4122 - "rand_core 0.10.0", 5426 + "ppv-lite86", 5427 + "rand_core 0.6.4", 4123 5428 ] 4124 5429 4125 5430 [[package]] ··· 4152 5457 4153 5458 [[package]] 4154 5459 name = "rand_core" 4155 - version = "0.10.0" 5460 + version = "0.10.1" 4156 5461 source = "registry+https://github.com/rust-lang/crates.io-index" 4157 - checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba" 5462 + checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" 5463 + 5464 + [[package]] 5465 + name = "rand_pcg" 5466 + version = "0.10.2" 5467 + source = "registry+https://github.com/rust-lang/crates.io-index" 5468 + checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" 5469 + dependencies = [ 5470 + "rand_core 0.10.1", 5471 + ] 4158 5472 4159 5473 [[package]] 4160 5474 name = "rand_xorshift" ··· 4166 5480 ] 4167 5481 4168 5482 [[package]] 5483 + name = "raw-window-handle" 5484 + version = "0.6.2" 5485 + source = "registry+https://github.com/rust-lang/crates.io-index" 5486 + checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" 5487 + 5488 + [[package]] 4169 5489 name = "rayon" 4170 - version = "1.11.0" 5490 + version = "1.12.0" 4171 5491 source = "registry+https://github.com/rust-lang/crates.io-index" 4172 - checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" 5492 + checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" 4173 5493 dependencies = [ 4174 5494 "either", 4175 5495 "rayon-core", ··· 4198 5518 "combine", 4199 5519 "futures", 4200 5520 "futures-util", 4201 - "itertools", 5521 + "itertools 0.13.0", 4202 5522 "itoa", 4203 5523 "num-bigint", 4204 5524 "percent-encoding", 4205 5525 "pin-project-lite", 4206 - "rustls 0.23.37", 5526 + "rustls 0.23.41", 4207 5527 "rustls-native-certs 0.7.3", 4208 5528 "rustls-pemfile", 4209 5529 "rustls-pki-types", ··· 4225 5545 4226 5546 [[package]] 4227 5547 name = "redox_syscall" 4228 - version = "0.7.4" 5548 + version = "0.9.0" 4229 5549 source = "registry+https://github.com/rust-lang/crates.io-index" 4230 - checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" 5550 + checksum = "c5102a6aaa05aa011a238e178e6bca86d2cb56fc9f586d37cb80f5bca6e07759" 4231 5551 dependencies = [ 4232 5552 "bitflags", 4233 5553 ] ··· 4265 5585 4266 5586 [[package]] 4267 5587 name = "regex" 4268 - version = "1.12.3" 5588 + version = "1.12.4" 4269 5589 source = "registry+https://github.com/rust-lang/crates.io-index" 4270 - checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" 5590 + checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" 4271 5591 dependencies = [ 4272 5592 "aho-corasick", 4273 5593 "memchr", ··· 4294 5614 4295 5615 [[package]] 4296 5616 name = "regex-syntax" 4297 - version = "0.8.10" 5617 + version = "0.8.11" 4298 5618 source = "registry+https://github.com/rust-lang/crates.io-index" 4299 - checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" 5619 + checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" 4300 5620 4301 5621 [[package]] 4302 5622 name = "reqwest" ··· 4306 5626 dependencies = [ 4307 5627 "base64", 4308 5628 "bytes", 5629 + "cookie", 5630 + "cookie_store", 4309 5631 "encoding_rs", 4310 5632 "futures-channel", 4311 5633 "futures-core", 4312 5634 "futures-util", 4313 - "h2 0.4.13", 4314 - "http 1.4.0", 5635 + "h2 0.4.15", 5636 + "http 1.4.2", 4315 5637 "http-body 1.0.1", 4316 5638 "http-body-util", 4317 - "hyper 1.9.0", 4318 - "hyper-rustls 0.27.7", 5639 + "hyper 1.10.1", 5640 + "hyper-rustls 0.27.9", 4319 5641 "hyper-util", 4320 5642 "js-sys", 4321 5643 "log", ··· 4324 5646 "percent-encoding", 4325 5647 "pin-project-lite", 4326 5648 "quinn", 4327 - "rustls 0.23.37", 5649 + "rustls 0.23.41", 4328 5650 "rustls-pki-types", 4329 5651 "serde", 4330 5652 "serde_json", ··· 4332 5654 "sync_wrapper", 4333 5655 "tokio", 4334 5656 "tokio-rustls 0.26.4", 5657 + "tokio-util", 4335 5658 "tower", 4336 5659 "tower-http", 4337 5660 "tower-service", 4338 5661 "url", 4339 5662 "wasm-bindgen", 4340 5663 "wasm-bindgen-futures", 5664 + "wasm-streams", 4341 5665 "web-sys", 4342 - "webpki-roots 1.0.6", 5666 + "webpki-roots 1.0.8", 4343 5667 ] 4344 5668 4345 5669 [[package]] ··· 4350 5674 dependencies = [ 4351 5675 "anyhow", 4352 5676 "async-trait", 4353 - "http 1.4.0", 5677 + "http 1.4.2", 4354 5678 "reqwest-middleware", 4355 5679 ] 4356 5680 ··· 4362 5686 dependencies = [ 4363 5687 "anyhow", 4364 5688 "async-trait", 4365 - "http 1.4.0", 5689 + "http 1.4.2", 4366 5690 "reqwest", 4367 5691 "serde", 4368 5692 "thiserror 1.0.69", ··· 4420 5744 4421 5745 [[package]] 4422 5746 name = "rpassword" 4423 - version = "7.4.0" 5747 + version = "7.5.4" 4424 5748 source = "registry+https://github.com/rust-lang/crates.io-index" 4425 - checksum = "66d4c8b64f049c6721ec8ccec37ddfc3d641c4a7fca57e8f2a89de509c73df39" 5749 + checksum = "2da316a15f47e3d053de9cb2c439650bd8fa4aaeb9365f2e5f27f492ff73c196" 4426 5750 dependencies = [ 4427 5751 "libc", 4428 5752 "rtoolbox", 4429 - "windows-sys 0.59.0", 5753 + "windows-sys 0.61.2", 4430 5754 ] 4431 5755 4432 5756 [[package]] ··· 4451 5775 4452 5776 [[package]] 4453 5777 name = "rtoolbox" 4454 - version = "0.0.3" 5778 + version = "0.0.5" 4455 5779 source = "registry+https://github.com/rust-lang/crates.io-index" 4456 - checksum = "a7cc970b249fbe527d6e02e0a227762c9108b2f49d81094fe357ffc6d14d7f6f" 5780 + checksum = "50a0e551c1e27e1731aba276dbeaeac73f53c7cd34d1bda485d02bd1e0f36844" 4457 5781 dependencies = [ 4458 5782 "libc", 4459 - "windows-sys 0.52.0", 5783 + "windows-sys 0.59.0", 4460 5784 ] 4461 5785 4462 5786 [[package]] 4463 5787 name = "rustc-hash" 4464 - version = "2.1.2" 5788 + version = "1.1.0" 5789 + source = "registry+https://github.com/rust-lang/crates.io-index" 5790 + checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 5791 + 5792 + [[package]] 5793 + name = "rustc-hash" 5794 + version = "2.1.3" 4465 5795 source = "registry+https://github.com/rust-lang/crates.io-index" 4466 - checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" 5796 + checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" 4467 5797 4468 5798 [[package]] 4469 5799 name = "rustc_version" ··· 4501 5831 4502 5832 [[package]] 4503 5833 name = "rustls" 4504 - version = "0.23.37" 5834 + version = "0.23.41" 4505 5835 source = "registry+https://github.com/rust-lang/crates.io-index" 4506 - checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" 5836 + checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" 4507 5837 dependencies = [ 4508 5838 "aws-lc-rs", 4509 5839 "log", 4510 5840 "once_cell", 4511 5841 "ring", 4512 5842 "rustls-pki-types", 4513 - "rustls-webpki 0.103.10", 5843 + "rustls-webpki 0.103.13", 4514 5844 "subtle", 4515 5845 "zeroize", 4516 5846 ] ··· 4530 5860 4531 5861 [[package]] 4532 5862 name = "rustls-native-certs" 4533 - version = "0.8.3" 5863 + version = "0.8.4" 4534 5864 source = "registry+https://github.com/rust-lang/crates.io-index" 4535 - checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" 5865 + checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" 4536 5866 dependencies = [ 4537 5867 "openssl-probe 0.2.1", 4538 5868 "rustls-pki-types", ··· 4551 5881 4552 5882 [[package]] 4553 5883 name = "rustls-pki-types" 4554 - version = "1.14.0" 5884 + version = "1.15.0" 4555 5885 source = "registry+https://github.com/rust-lang/crates.io-index" 4556 - checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" 5886 + checksum = "764899a24af3980067ee14bc143654f297b22eaebfe3c7b6b211920a5a59b046" 4557 5887 dependencies = [ 4558 5888 "web-time", 4559 5889 "zeroize", ··· 4571 5901 4572 5902 [[package]] 4573 5903 name = "rustls-webpki" 4574 - version = "0.103.10" 5904 + version = "0.103.13" 4575 5905 source = "registry+https://github.com/rust-lang/crates.io-index" 4576 - checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef" 5906 + checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" 4577 5907 dependencies = [ 4578 5908 "aws-lc-rs", 4579 5909 "ring", ··· 4708 6038 4709 6039 [[package]] 4710 6040 name = "semver" 4711 - version = "1.0.27" 6041 + version = "1.0.28" 4712 6042 source = "registry+https://github.com/rust-lang/crates.io-index" 4713 - checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" 6043 + checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" 6044 + 6045 + [[package]] 6046 + name = "send_wrapper" 6047 + version = "0.6.0" 6048 + source = "registry+https://github.com/rust-lang/crates.io-index" 6049 + checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" 6050 + dependencies = [ 6051 + "futures-core", 6052 + ] 4714 6053 4715 6054 [[package]] 4716 6055 name = "serde" ··· 4723 6062 ] 4724 6063 4725 6064 [[package]] 6065 + name = "serde-wasm-bindgen" 6066 + version = "0.6.5" 6067 + source = "registry+https://github.com/rust-lang/crates.io-index" 6068 + checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" 6069 + dependencies = [ 6070 + "js-sys", 6071 + "serde", 6072 + "wasm-bindgen", 6073 + ] 6074 + 6075 + [[package]] 4726 6076 name = "serde_bytes" 4727 6077 version = "0.11.19" 4728 6078 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4754 6104 4755 6105 [[package]] 4756 6106 name = "serde_json" 4757 - version = "1.0.149" 6107 + version = "1.0.150" 4758 6108 source = "registry+https://github.com/rust-lang/crates.io-index" 4759 - checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" 6109 + checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" 4760 6110 dependencies = [ 4761 6111 "indexmap", 4762 6112 "itoa", ··· 4778 6128 ] 4779 6129 4780 6130 [[package]] 6131 + name = "serde_qs" 6132 + version = "0.15.0" 6133 + source = "registry+https://github.com/rust-lang/crates.io-index" 6134 + checksum = "f3faaf9e727533a19351a43cc5a8de957372163c7d35cc48c90b75cdda13c352" 6135 + dependencies = [ 6136 + "percent-encoding", 6137 + "serde", 6138 + "thiserror 2.0.18", 6139 + ] 6140 + 6141 + [[package]] 6142 + name = "serde_repr" 6143 + version = "0.1.20" 6144 + source = "registry+https://github.com/rust-lang/crates.io-index" 6145 + checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" 6146 + dependencies = [ 6147 + "proc-macro2", 6148 + "quote", 6149 + "syn", 6150 + ] 6151 + 6152 + [[package]] 4781 6153 name = "serde_urlencoded" 4782 6154 version = "0.7.1" 4783 6155 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4840 6212 dependencies = [ 4841 6213 "cfg-if", 4842 6214 "cpufeatures 0.3.0", 4843 - "digest 0.11.2", 6215 + "digest 0.11.3", 4844 6216 ] 4845 6217 4846 6218 [[package]] ··· 4854 6226 4855 6227 [[package]] 4856 6228 name = "shlex" 4857 - version = "1.3.0" 6229 + version = "2.0.1" 4858 6230 source = "registry+https://github.com/rust-lang/crates.io-index" 4859 - checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 6231 + checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" 4860 6232 4861 6233 [[package]] 4862 6234 name = "signal-hook-registry" ··· 4906 6278 checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" 4907 6279 4908 6280 [[package]] 4909 - name = "smallvec" 4910 - version = "1.15.1" 6281 + name = "sledgehammer_bindgen" 6282 + version = "0.6.0" 4911 6283 source = "registry+https://github.com/rust-lang/crates.io-index" 4912 - checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 6284 + checksum = "49e83e178d176459c92bc129cfd0958afac3ced925471b889b3a75546cfc4133" 6285 + dependencies = [ 6286 + "sledgehammer_bindgen_macro", 6287 + "wasm-bindgen", 6288 + ] 6289 + 6290 + [[package]] 6291 + name = "sledgehammer_bindgen_macro" 6292 + version = "0.6.5" 6293 + source = "registry+https://github.com/rust-lang/crates.io-index" 6294 + checksum = "bb251b407f50028476a600541542b605bb864d35d9ee1de4f6cab45d88475e6d" 6295 + dependencies = [ 6296 + "quote", 6297 + "syn", 6298 + ] 6299 + 6300 + [[package]] 6301 + name = "sledgehammer_utils" 6302 + version = "0.3.1" 6303 + source = "registry+https://github.com/rust-lang/crates.io-index" 6304 + checksum = "debdd4b83524961983cea3c55383b3910fd2f24fd13a188f5b091d2d504a61ae" 6305 + dependencies = [ 6306 + "rustc-hash 1.1.0", 6307 + ] 6308 + 6309 + [[package]] 6310 + name = "slotmap" 6311 + version = "1.1.1" 6312 + source = "registry+https://github.com/rust-lang/crates.io-index" 6313 + checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" 6314 + dependencies = [ 6315 + "serde", 6316 + "version_check", 6317 + ] 6318 + 6319 + [[package]] 6320 + name = "smallvec" 6321 + version = "1.15.2" 6322 + source = "registry+https://github.com/rust-lang/crates.io-index" 6323 + checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" 4913 6324 dependencies = [ 4914 6325 "serde", 4915 6326 ] ··· 4924 6335 ] 4925 6336 4926 6337 [[package]] 4927 - name = "smallvec" 4928 - version = "2.0.0-alpha.12" 4929 - source = "registry+https://github.com/rust-lang/crates.io-index" 4930 - checksum = "ef784004ca8777809dcdad6ac37629f0a97caee4c685fcea805278d81dd8b857" 4931 - dependencies = [ 4932 - "serde_core", 4933 - ] 4934 - 4935 - [[package]] 4936 - name = "smallvec" 4937 - version = "2.0.0-alpha.12" 6338 + name = "socket2" 6339 + version = "0.5.10" 4938 6340 source = "registry+https://github.com/rust-lang/crates.io-index" 4939 - checksum = "ef784004ca8777809dcdad6ac37629f0a97caee4c685fcea805278d81dd8b857" 6341 + checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" 4940 6342 dependencies = [ 4941 - "serde_core", 6343 + "libc", 6344 + "windows-sys 0.52.0", 4942 6345 ] 4943 6346 4944 6347 [[package]] 4945 6348 name = "socket2" 4946 - version = "0.6.3" 6349 + version = "0.6.4" 4947 6350 source = "registry+https://github.com/rust-lang/crates.io-index" 4948 - checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" 6351 + checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" 4949 6352 dependencies = [ 4950 6353 "libc", 4951 6354 "windows-sys 0.61.2", ··· 5007 6410 "memchr", 5008 6411 "once_cell", 5009 6412 "percent-encoding", 5010 - "rustls 0.23.37", 6413 + "rustls 0.23.41", 5011 6414 "serde", 5012 6415 "serde_json", 5013 6416 "sha2 0.10.9", 5014 - "smallvec 1.15.1", 6417 + "smallvec 1.15.2", 5015 6418 "thiserror 2.0.18", 5016 6419 "tokio", 5017 6420 "tokio-stream", ··· 5093 6496 "serde", 5094 6497 "sha1", 5095 6498 "sha2 0.10.9", 5096 - "smallvec 1.15.1", 6499 + "smallvec 1.15.2", 5097 6500 "sqlx-core", 5098 6501 "stringprep", 5099 6502 "thiserror 2.0.18", ··· 5131 6534 "serde", 5132 6535 "serde_json", 5133 6536 "sha2 0.10.9", 5134 - "smallvec 1.15.1", 6537 + "smallvec 1.15.2", 5135 6538 "sqlx-core", 5136 6539 "stringprep", 5137 6540 "thiserror 2.0.18", ··· 5194 6597 checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 5195 6598 5196 6599 [[package]] 6600 + name = "subsecond" 6601 + version = "0.7.9" 6602 + source = "registry+https://github.com/rust-lang/crates.io-index" 6603 + checksum = "9cc79674bd55726e6b123204403389400229a95fe4a3b2c5453dada70b06ca95" 6604 + dependencies = [ 6605 + "js-sys", 6606 + "libc", 6607 + "libloading", 6608 + "memfd", 6609 + "memmap2", 6610 + "serde", 6611 + "subsecond-types", 6612 + "thiserror 2.0.18", 6613 + "wasm-bindgen", 6614 + "wasm-bindgen-futures", 6615 + "web-sys", 6616 + ] 6617 + 6618 + [[package]] 6619 + name = "subsecond-types" 6620 + version = "0.7.9" 6621 + source = "registry+https://github.com/rust-lang/crates.io-index" 6622 + checksum = "e9798bfed58797aed51c672aa99810aac30a50d3120ecfdcf28c13784e9a8f1c" 6623 + dependencies = [ 6624 + "serde", 6625 + ] 6626 + 6627 + [[package]] 5197 6628 name = "subtle" 5198 6629 version = "2.6.1" 5199 6630 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5201 6632 5202 6633 [[package]] 5203 6634 name = "syn" 5204 - version = "2.0.117" 6635 + version = "2.0.118" 5205 6636 source = "registry+https://github.com/rust-lang/crates.io-index" 5206 - checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" 6637 + checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" 5207 6638 dependencies = [ 5208 6639 "proc-macro2", 5209 6640 "quote", ··· 5264 6695 checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" 5265 6696 dependencies = [ 5266 6697 "fastrand", 5267 - "getrandom 0.4.2", 6698 + "getrandom 0.4.3", 5268 6699 "once_cell", 5269 6700 "rustix", 5270 6701 "windows-sys 0.61.2", ··· 5321 6752 5322 6753 [[package]] 5323 6754 name = "time" 5324 - version = "0.3.47" 6755 + version = "0.3.53" 5325 6756 source = "registry+https://github.com/rust-lang/crates.io-index" 5326 - checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" 6757 + checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50" 5327 6758 dependencies = [ 5328 6759 "deranged", 5329 6760 "num-conv", ··· 5335 6766 5336 6767 [[package]] 5337 6768 name = "time-core" 5338 - version = "0.1.8" 6769 + version = "0.1.9" 5339 6770 source = "registry+https://github.com/rust-lang/crates.io-index" 5340 - checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" 6771 + checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" 5341 6772 5342 6773 [[package]] 5343 6774 name = "time-macros" 5344 - version = "0.2.27" 6775 + version = "0.2.31" 5345 6776 source = "registry+https://github.com/rust-lang/crates.io-index" 5346 - checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" 6777 + checksum = "c431b87111666e491a90baa837f914fb45cd5dc3c268591b0220ff5057f2085f" 5347 6778 dependencies = [ 5348 6779 "num-conv", 5349 6780 "time-core", ··· 5392 6823 5393 6824 [[package]] 5394 6825 name = "tokio" 5395 - version = "1.50.0" 6826 + version = "1.52.3" 5396 6827 source = "registry+https://github.com/rust-lang/crates.io-index" 5397 - checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" 6828 + checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" 5398 6829 dependencies = [ 5399 6830 "bytes", 5400 6831 "libc", 5401 6832 "mio", 5402 6833 "pin-project-lite", 5403 6834 "signal-hook-registry", 5404 - "socket2 0.6.3", 6835 + "socket2 0.6.4", 5405 6836 "tokio-macros", 5406 6837 "windows-sys 0.61.2", 5407 6838 ] 5408 6839 5409 6840 [[package]] 5410 6841 name = "tokio-macros" 5411 - version = "2.6.1" 6842 + version = "2.7.0" 5412 6843 source = "registry+https://github.com/rust-lang/crates.io-index" 5413 - checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" 6844 + checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" 5414 6845 dependencies = [ 5415 6846 "proc-macro2", 5416 6847 "quote", ··· 5433 6864 source = "registry+https://github.com/rust-lang/crates.io-index" 5434 6865 checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" 5435 6866 dependencies = [ 5436 - "rustls 0.23.37", 6867 + "rustls 0.23.41", 5437 6868 "tokio", 5438 6869 ] 5439 6870 ··· 5446 6877 "futures-core", 5447 6878 "pin-project-lite", 5448 6879 "tokio", 6880 + "tokio-util", 5449 6881 ] 5450 6882 5451 6883 [[package]] ··· 5457 6889 "futures-util", 5458 6890 "log", 5459 6891 "tokio", 5460 - "tungstenite", 6892 + "tungstenite 0.28.0", 6893 + ] 6894 + 6895 + [[package]] 6896 + name = "tokio-tungstenite" 6897 + version = "0.29.0" 6898 + source = "registry+https://github.com/rust-lang/crates.io-index" 6899 + checksum = "8f72a05e828585856dacd553fba484c242c46e391fb0e58917c942ee9202915c" 6900 + dependencies = [ 6901 + "futures-util", 6902 + "log", 6903 + "tokio", 6904 + "tungstenite 0.29.0", 5461 6905 ] 5462 6906 5463 6907 [[package]] ··· 5468 6912 dependencies = [ 5469 6913 "bytes", 5470 6914 "futures-core", 6915 + "futures-io", 5471 6916 "futures-sink", 5472 6917 "futures-util", 5473 6918 "pin-project-lite", ··· 5476 6921 5477 6922 [[package]] 5478 6923 name = "tokio-websockets" 5479 - version = "0.13.2" 6924 + version = "0.13.3" 5480 6925 source = "registry+https://github.com/rust-lang/crates.io-index" 5481 - checksum = "dad543404f98bfc969aeb71994105c592acfc6c43323fddcd016bb208d1c65cb" 6926 + checksum = "d52efb639344a7c6adb8e62c6f3d2c19c001ff1b79a5041ba1c6ed42e19c6aa5" 5482 6927 dependencies = [ 5483 6928 "base64", 5484 6929 "bytes", 5485 6930 "fastrand", 5486 6931 "futures-core", 5487 6932 "futures-sink", 5488 - "http 1.4.0", 6933 + "http 1.4.2", 5489 6934 "httparse", 5490 6935 "ring", 5491 - "rustls-native-certs 0.8.3", 6936 + "rustls-native-certs 0.8.4", 5492 6937 "rustls-pki-types", 5493 6938 "simdutf8", 5494 6939 "tokio", ··· 5497 6942 ] 5498 6943 5499 6944 [[package]] 6945 + name = "toml_datetime" 6946 + version = "1.1.1+spec-1.1.0" 6947 + source = "registry+https://github.com/rust-lang/crates.io-index" 6948 + checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" 6949 + dependencies = [ 6950 + "serde_core", 6951 + ] 6952 + 6953 + [[package]] 6954 + name = "toml_edit" 6955 + version = "0.25.12+spec-1.1.0" 6956 + source = "registry+https://github.com/rust-lang/crates.io-index" 6957 + checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" 6958 + dependencies = [ 6959 + "indexmap", 6960 + "toml_datetime", 6961 + "toml_parser", 6962 + "winnow 1.0.3", 6963 + ] 6964 + 6965 + [[package]] 6966 + name = "toml_parser" 6967 + version = "1.1.2+spec-1.1.0" 6968 + source = "registry+https://github.com/rust-lang/crates.io-index" 6969 + checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" 6970 + dependencies = [ 6971 + "winnow 1.0.3", 6972 + ] 6973 + 6974 + [[package]] 5500 6975 name = "tonic" 5501 6976 version = "0.12.3" 5502 6977 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5505 6980 "async-trait", 5506 6981 "base64", 5507 6982 "bytes", 5508 - "http 1.4.0", 6983 + "http 1.4.2", 5509 6984 "http-body 1.0.1", 5510 6985 "http-body-util", 5511 6986 "percent-encoding", ··· 5535 7010 5536 7011 [[package]] 5537 7012 name = "tower-http" 5538 - version = "0.6.8" 7013 + version = "0.6.11" 5539 7014 source = "registry+https://github.com/rust-lang/crates.io-index" 5540 - checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" 7015 + checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" 5541 7016 dependencies = [ 5542 7017 "bitflags", 5543 7018 "bytes", 7019 + "futures-core", 5544 7020 "futures-util", 5545 - "http 1.4.0", 7021 + "http 1.4.2", 5546 7022 "http-body 1.0.1", 5547 - "iri-string", 7023 + "http-body-util", 7024 + "http-range-header", 7025 + "httpdate", 7026 + "mime", 7027 + "mime_guess", 7028 + "percent-encoding", 5548 7029 "pin-project-lite", 7030 + "tokio", 7031 + "tokio-util", 5549 7032 "tower", 5550 7033 "tower-layer", 5551 7034 "tower-service", 7035 + "url", 5552 7036 ] 5553 7037 5554 7038 [[package]] ··· 5597 7081 ] 5598 7082 5599 7083 [[package]] 7084 + name = "tracing-futures" 7085 + version = "0.2.5" 7086 + source = "registry+https://github.com/rust-lang/crates.io-index" 7087 + checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" 7088 + dependencies = [ 7089 + "pin-project", 7090 + "tracing", 7091 + ] 7092 + 7093 + [[package]] 5600 7094 name = "tracing-log" 5601 7095 version = "0.2.0" 5602 7096 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5617 7111 "once_cell", 5618 7112 "opentelemetry", 5619 7113 "opentelemetry_sdk", 5620 - "smallvec 1.15.1", 7114 + "smallvec 1.15.2", 5621 7115 "tracing", 5622 7116 "tracing-core", 5623 7117 "tracing-log", ··· 5636 7130 "once_cell", 5637 7131 "regex-automata", 5638 7132 "sharded-slab", 5639 - "smallvec 1.15.1", 7133 + "smallvec 1.15.2", 5640 7134 "thread_local", 5641 7135 "tracing", 5642 7136 "tracing-core", ··· 5644 7138 ] 5645 7139 5646 7140 [[package]] 7141 + name = "tracing-wasm" 7142 + version = "0.2.1" 7143 + source = "registry+https://github.com/rust-lang/crates.io-index" 7144 + checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" 7145 + dependencies = [ 7146 + "tracing", 7147 + "tracing-subscriber", 7148 + "wasm-bindgen", 7149 + ] 7150 + 7151 + [[package]] 5647 7152 name = "try-lock" 5648 7153 version = "0.2.5" 5649 7154 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5651 7156 5652 7157 [[package]] 5653 7158 name = "tungstenite" 7159 + version = "0.27.0" 7160 + source = "registry+https://github.com/rust-lang/crates.io-index" 7161 + checksum = "eadc29d668c91fcc564941132e17b28a7ceb2f3ebf0b9dae3e03fd7a6748eb0d" 7162 + dependencies = [ 7163 + "bytes", 7164 + "data-encoding", 7165 + "http 1.4.2", 7166 + "httparse", 7167 + "log", 7168 + "rand 0.9.4", 7169 + "sha1", 7170 + "thiserror 2.0.18", 7171 + "utf-8", 7172 + ] 7173 + 7174 + [[package]] 7175 + name = "tungstenite" 5654 7176 version = "0.28.0" 5655 7177 source = "registry+https://github.com/rust-lang/crates.io-index" 5656 7178 checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" 5657 7179 dependencies = [ 5658 7180 "bytes", 5659 7181 "data-encoding", 5660 - "http 1.4.0", 7182 + "http 1.4.2", 5661 7183 "httparse", 5662 7184 "log", 5663 - "rand 0.9.2", 7185 + "rand 0.9.4", 5664 7186 "sha1", 5665 7187 "thiserror 2.0.18", 5666 7188 "utf-8", 5667 7189 ] 5668 7190 5669 7191 [[package]] 7192 + name = "tungstenite" 7193 + version = "0.29.0" 7194 + source = "registry+https://github.com/rust-lang/crates.io-index" 7195 + checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8" 7196 + dependencies = [ 7197 + "bytes", 7198 + "data-encoding", 7199 + "http 1.4.2", 7200 + "httparse", 7201 + "log", 7202 + "rand 0.9.4", 7203 + "sha1", 7204 + "thiserror 2.0.18", 7205 + ] 7206 + 7207 + [[package]] 5670 7208 name = "twox-hash" 5671 7209 version = "2.1.2" 5672 7210 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5674 7212 5675 7213 [[package]] 5676 7214 name = "typenum" 5677 - version = "1.19.0" 7215 + version = "1.20.1" 5678 7216 source = "registry+https://github.com/rust-lang/crates.io-index" 5679 - checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" 7217 + checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" 5680 7218 5681 7219 [[package]] 5682 7220 name = "ulid" ··· 5684 7222 source = "registry+https://github.com/rust-lang/crates.io-index" 5685 7223 checksum = "470dbf6591da1b39d43c14523b2b469c86879a53e8b758c8e090a470fe7b1fbe" 5686 7224 dependencies = [ 5687 - "rand 0.9.2", 7225 + "rand 0.9.4", 5688 7226 "web-time", 5689 7227 ] 5690 7228 ··· 5729 7267 5730 7268 [[package]] 5731 7269 name = "unicode-segmentation" 5732 - version = "1.13.2" 7270 + version = "1.13.3" 5733 7271 source = "registry+https://github.com/rust-lang/crates.io-index" 5734 - checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" 7272 + checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" 5735 7273 5736 7274 [[package]] 5737 7275 name = "unicode-width" ··· 5795 7333 5796 7334 [[package]] 5797 7335 name = "uuid" 5798 - version = "1.23.0" 7336 + version = "1.23.4" 5799 7337 source = "registry+https://github.com/rust-lang/crates.io-index" 5800 - checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9" 7338 + checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" 5801 7339 dependencies = [ 5802 - "getrandom 0.4.2", 7340 + "getrandom 0.4.3", 5803 7341 "js-sys", 5804 7342 "wasm-bindgen", 5805 7343 ] ··· 5824 7362 5825 7363 [[package]] 5826 7364 name = "varint-rs" 5827 - version = "2.2.0" 7365 + version = "2.2.1" 5828 7366 source = "registry+https://github.com/rust-lang/crates.io-index" 5829 - checksum = "8f54a172d0620933a27a4360d3db3e2ae0dd6cceae9730751a036bbf182c4b23" 7367 + checksum = "bfa6c38708f6257f1ec2ca7e5a11f9bbf58a27d7060078b6b333624968183d96" 5830 7368 5831 7369 [[package]] 5832 7370 name = "vcpkg" ··· 5875 7413 ] 5876 7414 5877 7415 [[package]] 5878 - name = "wasi" 5879 - version = "0.11.1+wasi-snapshot-preview1" 7416 + name = "warnings" 7417 + version = "0.2.1" 5880 7418 source = "registry+https://github.com/rust-lang/crates.io-index" 5881 - checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 7419 + checksum = "64f68998838dab65727c9b30465595c6f7c953313559371ca8bf31759b3680ad" 7420 + dependencies = [ 7421 + "pin-project", 7422 + "tracing", 7423 + "warnings-macro", 7424 + ] 5882 7425 5883 7426 [[package]] 5884 - name = "wasip2" 5885 - version = "1.0.2+wasi-0.2.9" 7427 + name = "warnings-macro" 7428 + version = "0.2.0" 5886 7429 source = "registry+https://github.com/rust-lang/crates.io-index" 5887 - checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" 7430 + checksum = "59195a1db0e95b920366d949ba5e0d3fc0e70b67c09be15ce5abb790106b0571" 5888 7431 dependencies = [ 5889 - "wit-bindgen", 7432 + "proc-macro2", 7433 + "quote", 7434 + "syn", 5890 7435 ] 5891 7436 5892 7437 [[package]] 5893 - name = "wasip3" 5894 - version = "0.4.0+wasi-0.3.0-rc-2026-01-06" 7438 + name = "wasi" 7439 + version = "0.11.1+wasi-snapshot-preview1" 7440 + source = "registry+https://github.com/rust-lang/crates.io-index" 7441 + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 7442 + 7443 + [[package]] 7444 + name = "wasip2" 7445 + version = "1.0.4+wasi-0.2.12" 5895 7446 source = "registry+https://github.com/rust-lang/crates.io-index" 5896 - checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" 7447 + checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" 5897 7448 dependencies = [ 5898 7449 "wit-bindgen", 5899 7450 ] ··· 5906 7457 5907 7458 [[package]] 5908 7459 name = "wasm-bindgen" 5909 - version = "0.2.117" 7460 + version = "0.2.126" 5910 7461 source = "registry+https://github.com/rust-lang/crates.io-index" 5911 - checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0" 7462 + checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" 5912 7463 dependencies = [ 5913 7464 "cfg-if", 5914 7465 "once_cell", ··· 5919 7470 5920 7471 [[package]] 5921 7472 name = "wasm-bindgen-futures" 5922 - version = "0.4.67" 7473 + version = "0.4.76" 5923 7474 source = "registry+https://github.com/rust-lang/crates.io-index" 5924 - checksum = "03623de6905b7206edd0a75f69f747f134b7f0a2323392d664448bf2d3c5d87e" 7475 + checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" 5925 7476 dependencies = [ 5926 7477 "js-sys", 5927 7478 "wasm-bindgen", ··· 5929 7480 5930 7481 [[package]] 5931 7482 name = "wasm-bindgen-macro" 5932 - version = "0.2.117" 7483 + version = "0.2.126" 5933 7484 source = "registry+https://github.com/rust-lang/crates.io-index" 5934 - checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be" 7485 + checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" 5935 7486 dependencies = [ 5936 7487 "quote", 5937 7488 "wasm-bindgen-macro-support", ··· 5939 7490 5940 7491 [[package]] 5941 7492 name = "wasm-bindgen-macro-support" 5942 - version = "0.2.117" 7493 + version = "0.2.126" 5943 7494 source = "registry+https://github.com/rust-lang/crates.io-index" 5944 - checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2" 7495 + checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" 5945 7496 dependencies = [ 5946 7497 "bumpalo", 5947 7498 "proc-macro2", ··· 5952 7503 5953 7504 [[package]] 5954 7505 name = "wasm-bindgen-shared" 5955 - version = "0.2.117" 7506 + version = "0.2.126" 5956 7507 source = "registry+https://github.com/rust-lang/crates.io-index" 5957 - checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b" 7508 + checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" 5958 7509 dependencies = [ 5959 7510 "unicode-ident", 5960 7511 ] 5961 7512 5962 7513 [[package]] 5963 - name = "wasm-encoder" 5964 - version = "0.244.0" 5965 - source = "registry+https://github.com/rust-lang/crates.io-index" 5966 - checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" 5967 - dependencies = [ 5968 - "leb128fmt", 5969 - "wasmparser", 5970 - ] 5971 - 5972 - [[package]] 5973 - name = "wasm-metadata" 5974 - version = "0.244.0" 5975 - source = "registry+https://github.com/rust-lang/crates.io-index" 5976 - checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" 5977 - dependencies = [ 5978 - "anyhow", 5979 - "indexmap", 5980 - "wasm-encoder", 5981 - "wasmparser", 5982 - ] 5983 - 5984 - [[package]] 5985 - name = "wasmparser" 5986 - version = "0.244.0" 7514 + name = "wasm-streams" 7515 + version = "0.4.2" 5987 7516 source = "registry+https://github.com/rust-lang/crates.io-index" 5988 - checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" 7517 + checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" 5989 7518 dependencies = [ 5990 - "bitflags", 5991 - "hashbrown 0.15.5", 5992 - "indexmap", 5993 - "semver", 7519 + "futures-util", 7520 + "js-sys", 7521 + "wasm-bindgen", 7522 + "wasm-bindgen-futures", 7523 + "web-sys", 5994 7524 ] 5995 7525 5996 7526 [[package]] 5997 7527 name = "web-sys" 5998 - version = "0.3.94" 7528 + version = "0.3.103" 5999 7529 source = "registry+https://github.com/rust-lang/crates.io-index" 6000 - checksum = "cd70027e39b12f0849461e08ffc50b9cd7688d942c1c8e3c7b22273236b4dd0a" 7530 + checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" 6001 7531 dependencies = [ 6002 7532 "js-sys", 6003 7533 "wasm-bindgen", ··· 6019 7549 source = "registry+https://github.com/rust-lang/crates.io-index" 6020 7550 checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" 6021 7551 dependencies = [ 6022 - "webpki-roots 1.0.6", 7552 + "webpki-roots 1.0.8", 6023 7553 ] 6024 7554 6025 7555 [[package]] 6026 7556 name = "webpki-roots" 6027 - version = "1.0.6" 7557 + version = "1.0.8" 6028 7558 source = "registry+https://github.com/rust-lang/crates.io-index" 6029 - checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed" 7559 + checksum = "bf85cb06032201fa7c6f829d7db5a7e5aa45bcc0655327713065f6f0576731bf" 6030 7560 dependencies = [ 6031 7561 "rustls-pki-types", 6032 7562 ] ··· 6150 7680 6151 7681 [[package]] 6152 7682 name = "windows-sys" 7683 + version = "0.45.0" 7684 + source = "registry+https://github.com/rust-lang/crates.io-index" 7685 + checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 7686 + dependencies = [ 7687 + "windows-targets 0.42.2", 7688 + ] 7689 + 7690 + [[package]] 7691 + name = "windows-sys" 7692 + version = "0.48.0" 7693 + source = "registry+https://github.com/rust-lang/crates.io-index" 7694 + checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 7695 + dependencies = [ 7696 + "windows-targets 0.48.5", 7697 + ] 7698 + 7699 + [[package]] 7700 + name = "windows-sys" 6153 7701 version = "0.52.0" 6154 7702 source = "registry+https://github.com/rust-lang/crates.io-index" 6155 7703 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" ··· 6168 7716 6169 7717 [[package]] 6170 7718 name = "windows-sys" 6171 - version = "0.60.2" 7719 + version = "0.61.2" 6172 7720 source = "registry+https://github.com/rust-lang/crates.io-index" 6173 - checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" 7721 + checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" 6174 7722 dependencies = [ 6175 - "windows-targets 0.53.5", 7723 + "windows-link", 6176 7724 ] 6177 7725 6178 7726 [[package]] 6179 - name = "windows-sys" 6180 - version = "0.61.2" 7727 + name = "windows-targets" 7728 + version = "0.42.2" 6181 7729 source = "registry+https://github.com/rust-lang/crates.io-index" 6182 - checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" 7730 + checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 6183 7731 dependencies = [ 6184 - "windows-link", 7732 + "windows_aarch64_gnullvm 0.42.2", 7733 + "windows_aarch64_msvc 0.42.2", 7734 + "windows_i686_gnu 0.42.2", 7735 + "windows_i686_msvc 0.42.2", 7736 + "windows_x86_64_gnu 0.42.2", 7737 + "windows_x86_64_gnullvm 0.42.2", 7738 + "windows_x86_64_msvc 0.42.2", 7739 + ] 7740 + 7741 + [[package]] 7742 + name = "windows-targets" 7743 + version = "0.48.5" 7744 + source = "registry+https://github.com/rust-lang/crates.io-index" 7745 + checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 7746 + dependencies = [ 7747 + "windows_aarch64_gnullvm 0.48.5", 7748 + "windows_aarch64_msvc 0.48.5", 7749 + "windows_i686_gnu 0.48.5", 7750 + "windows_i686_msvc 0.48.5", 7751 + "windows_x86_64_gnu 0.48.5", 7752 + "windows_x86_64_gnullvm 0.48.5", 7753 + "windows_x86_64_msvc 0.48.5", 6185 7754 ] 6186 7755 6187 7756 [[package]] ··· 6193 7762 "windows_aarch64_gnullvm 0.52.6", 6194 7763 "windows_aarch64_msvc 0.52.6", 6195 7764 "windows_i686_gnu 0.52.6", 6196 - "windows_i686_gnullvm 0.52.6", 7765 + "windows_i686_gnullvm", 6197 7766 "windows_i686_msvc 0.52.6", 6198 7767 "windows_x86_64_gnu 0.52.6", 6199 7768 "windows_x86_64_gnullvm 0.52.6", ··· 6201 7770 ] 6202 7771 6203 7772 [[package]] 6204 - name = "windows-targets" 6205 - version = "0.53.5" 7773 + name = "windows_aarch64_gnullvm" 7774 + version = "0.42.2" 7775 + source = "registry+https://github.com/rust-lang/crates.io-index" 7776 + checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 7777 + 7778 + [[package]] 7779 + name = "windows_aarch64_gnullvm" 7780 + version = "0.48.5" 6206 7781 source = "registry+https://github.com/rust-lang/crates.io-index" 6207 - checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" 6208 - dependencies = [ 6209 - "windows-link", 6210 - "windows_aarch64_gnullvm 0.53.1", 6211 - "windows_aarch64_msvc 0.53.1", 6212 - "windows_i686_gnu 0.53.1", 6213 - "windows_i686_gnullvm 0.53.1", 6214 - "windows_i686_msvc 0.53.1", 6215 - "windows_x86_64_gnu 0.53.1", 6216 - "windows_x86_64_gnullvm 0.53.1", 6217 - "windows_x86_64_msvc 0.53.1", 6218 - ] 7782 + checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 6219 7783 6220 7784 [[package]] 6221 7785 name = "windows_aarch64_gnullvm" ··· 6224 7788 checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 6225 7789 6226 7790 [[package]] 6227 - name = "windows_aarch64_gnullvm" 6228 - version = "0.53.1" 7791 + name = "windows_aarch64_msvc" 7792 + version = "0.42.2" 6229 7793 source = "registry+https://github.com/rust-lang/crates.io-index" 6230 - checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" 7794 + checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 7795 + 7796 + [[package]] 7797 + name = "windows_aarch64_msvc" 7798 + version = "0.48.5" 7799 + source = "registry+https://github.com/rust-lang/crates.io-index" 7800 + checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 6231 7801 6232 7802 [[package]] 6233 7803 name = "windows_aarch64_msvc" ··· 6236 7806 checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 6237 7807 6238 7808 [[package]] 6239 - name = "windows_aarch64_msvc" 6240 - version = "0.53.1" 7809 + name = "windows_i686_gnu" 7810 + version = "0.42.2" 6241 7811 source = "registry+https://github.com/rust-lang/crates.io-index" 6242 - checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" 7812 + checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 6243 7813 6244 7814 [[package]] 6245 7815 name = "windows_i686_gnu" 6246 - version = "0.52.6" 7816 + version = "0.48.5" 6247 7817 source = "registry+https://github.com/rust-lang/crates.io-index" 6248 - checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 7818 + checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 6249 7819 6250 7820 [[package]] 6251 7821 name = "windows_i686_gnu" 6252 - version = "0.53.1" 7822 + version = "0.52.6" 6253 7823 source = "registry+https://github.com/rust-lang/crates.io-index" 6254 - checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" 7824 + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 6255 7825 6256 7826 [[package]] 6257 7827 name = "windows_i686_gnullvm" ··· 6260 7830 checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 6261 7831 6262 7832 [[package]] 6263 - name = "windows_i686_gnullvm" 6264 - version = "0.53.1" 7833 + name = "windows_i686_msvc" 7834 + version = "0.42.2" 7835 + source = "registry+https://github.com/rust-lang/crates.io-index" 7836 + checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 7837 + 7838 + [[package]] 7839 + name = "windows_i686_msvc" 7840 + version = "0.48.5" 6265 7841 source = "registry+https://github.com/rust-lang/crates.io-index" 6266 - checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" 7842 + checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 6267 7843 6268 7844 [[package]] 6269 7845 name = "windows_i686_msvc" ··· 6272 7848 checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 6273 7849 6274 7850 [[package]] 6275 - name = "windows_i686_msvc" 6276 - version = "0.53.1" 7851 + name = "windows_x86_64_gnu" 7852 + version = "0.42.2" 6277 7853 source = "registry+https://github.com/rust-lang/crates.io-index" 6278 - checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" 7854 + checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 6279 7855 6280 7856 [[package]] 6281 7857 name = "windows_x86_64_gnu" 6282 - version = "0.52.6" 7858 + version = "0.48.5" 6283 7859 source = "registry+https://github.com/rust-lang/crates.io-index" 6284 - checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 7860 + checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 6285 7861 6286 7862 [[package]] 6287 7863 name = "windows_x86_64_gnu" 6288 - version = "0.53.1" 7864 + version = "0.52.6" 6289 7865 source = "registry+https://github.com/rust-lang/crates.io-index" 6290 - checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" 7866 + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 6291 7867 6292 7868 [[package]] 6293 7869 name = "windows_x86_64_gnullvm" 6294 - version = "0.52.6" 7870 + version = "0.42.2" 6295 7871 source = "registry+https://github.com/rust-lang/crates.io-index" 6296 - checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 7872 + checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 6297 7873 6298 7874 [[package]] 6299 7875 name = "windows_x86_64_gnullvm" 6300 - version = "0.53.1" 7876 + version = "0.48.5" 6301 7877 source = "registry+https://github.com/rust-lang/crates.io-index" 6302 - checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" 7878 + checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 6303 7879 6304 7880 [[package]] 6305 - name = "windows_x86_64_msvc" 7881 + name = "windows_x86_64_gnullvm" 6306 7882 version = "0.52.6" 6307 7883 source = "registry+https://github.com/rust-lang/crates.io-index" 6308 - checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 7884 + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 6309 7885 6310 7886 [[package]] 6311 7887 name = "windows_x86_64_msvc" 6312 - version = "0.53.1" 7888 + version = "0.42.2" 6313 7889 source = "registry+https://github.com/rust-lang/crates.io-index" 6314 - checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" 7890 + checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 6315 7891 6316 7892 [[package]] 6317 - name = "wit-bindgen" 6318 - version = "0.51.0" 7893 + name = "windows_x86_64_msvc" 7894 + version = "0.48.5" 6319 7895 source = "registry+https://github.com/rust-lang/crates.io-index" 6320 - checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" 6321 - dependencies = [ 6322 - "wit-bindgen-rust-macro", 6323 - ] 7896 + checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 6324 7897 6325 7898 [[package]] 6326 - name = "wit-bindgen-core" 6327 - version = "0.51.0" 7899 + name = "windows_x86_64_msvc" 7900 + version = "0.52.6" 6328 7901 source = "registry+https://github.com/rust-lang/crates.io-index" 6329 - checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" 6330 - dependencies = [ 6331 - "anyhow", 6332 - "heck", 6333 - "wit-parser", 6334 - ] 7902 + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 6335 7903 6336 7904 [[package]] 6337 - name = "wit-bindgen-rust" 6338 - version = "0.51.0" 7905 + name = "winnow" 7906 + version = "0.7.15" 6339 7907 source = "registry+https://github.com/rust-lang/crates.io-index" 6340 - checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" 7908 + checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" 6341 7909 dependencies = [ 6342 - "anyhow", 6343 - "heck", 6344 - "indexmap", 6345 - "prettyplease", 6346 - "syn", 6347 - "wasm-metadata", 6348 - "wit-bindgen-core", 6349 - "wit-component", 7910 + "memchr", 6350 7911 ] 6351 7912 6352 7913 [[package]] 6353 - name = "wit-bindgen-rust-macro" 6354 - version = "0.51.0" 7914 + name = "winnow" 7915 + version = "1.0.3" 6355 7916 source = "registry+https://github.com/rust-lang/crates.io-index" 6356 - checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" 7917 + checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" 6357 7918 dependencies = [ 6358 - "anyhow", 6359 - "prettyplease", 6360 - "proc-macro2", 6361 - "quote", 6362 - "syn", 6363 - "wit-bindgen-core", 6364 - "wit-bindgen-rust", 7919 + "memchr", 6365 7920 ] 6366 7921 6367 7922 [[package]] 6368 - name = "wit-component" 6369 - version = "0.244.0" 7923 + name = "wit-bindgen" 7924 + version = "0.57.1" 6370 7925 source = "registry+https://github.com/rust-lang/crates.io-index" 6371 - checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" 6372 - dependencies = [ 6373 - "anyhow", 6374 - "bitflags", 6375 - "indexmap", 6376 - "log", 6377 - "serde", 6378 - "serde_derive", 6379 - "serde_json", 6380 - "wasm-encoder", 6381 - "wasm-metadata", 6382 - "wasmparser", 6383 - "wit-parser", 6384 - ] 6385 - 6386 - [[package]] 6387 - name = "wit-parser" 6388 - version = "0.244.0" 6389 - source = "registry+https://github.com/rust-lang/crates.io-index" 6390 - checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" 6391 - dependencies = [ 6392 - "anyhow", 6393 - "id-arena", 6394 - "indexmap", 6395 - "log", 6396 - "semver", 6397 - "serde", 6398 - "serde_derive", 6399 - "serde_json", 6400 - "unicode-xid", 6401 - "wasmparser", 6402 - ] 7926 + checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" 6403 7927 6404 7928 [[package]] 6405 7929 name = "writeable" 6406 - version = "0.6.2" 7930 + version = "0.6.3" 6407 7931 source = "registry+https://github.com/rust-lang/crates.io-index" 6408 - checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" 7932 + checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" 6409 7933 6410 7934 [[package]] 6411 7935 name = "xmlparser" ··· 6415 7939 6416 7940 [[package]] 6417 7941 name = "xxhash-rust" 6418 - version = "0.8.15" 7942 + version = "0.8.16" 6419 7943 source = "registry+https://github.com/rust-lang/crates.io-index" 6420 - checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" 7944 + checksum = "4d93c89cdc2d3a63c3ec48ffe926931bdc069eafa8e4402fe6d8f790c9d1e576" 6421 7945 6422 7946 [[package]] 6423 7947 name = "yoke" 6424 - version = "0.8.2" 7948 + version = "0.8.3" 6425 7949 source = "registry+https://github.com/rust-lang/crates.io-index" 6426 - checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" 7950 + checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" 6427 7951 dependencies = [ 6428 7952 "stable_deref_trait", 6429 7953 "yoke-derive", ··· 6444 7968 6445 7969 [[package]] 6446 7970 name = "zerocopy" 6447 - version = "0.8.48" 7971 + version = "0.8.52" 6448 7972 source = "registry+https://github.com/rust-lang/crates.io-index" 6449 - checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" 7973 + checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" 6450 7974 dependencies = [ 6451 7975 "zerocopy-derive", 6452 7976 ] 6453 7977 6454 7978 [[package]] 6455 7979 name = "zerocopy-derive" 6456 - version = "0.8.48" 7980 + version = "0.8.52" 6457 7981 source = "registry+https://github.com/rust-lang/crates.io-index" 6458 - checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" 7982 + checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" 6459 7983 dependencies = [ 6460 7984 "proc-macro2", 6461 7985 "quote", ··· 6464 7988 6465 7989 [[package]] 6466 7990 name = "zerofrom" 6467 - version = "0.1.7" 7991 + version = "0.1.8" 6468 7992 source = "registry+https://github.com/rust-lang/crates.io-index" 6469 - checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" 7993 + checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" 6470 7994 dependencies = [ 6471 7995 "zerofrom-derive", 6472 7996 ] ··· 6485 8009 6486 8010 [[package]] 6487 8011 name = "zeroize" 6488 - version = "1.8.2" 8012 + version = "1.9.0" 6489 8013 source = "registry+https://github.com/rust-lang/crates.io-index" 6490 - checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" 8014 + checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" 6491 8015 dependencies = [ 6492 8016 "zeroize_derive", 6493 8017 ] 6494 8018 6495 8019 [[package]] 6496 8020 name = "zeroize_derive" 6497 - version = "1.4.3" 8021 + version = "1.5.0" 6498 8022 source = "registry+https://github.com/rust-lang/crates.io-index" 6499 - checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" 8023 + checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" 6500 8024 dependencies = [ 6501 8025 "proc-macro2", 6502 8026 "quote",
+1
Cargo.toml
··· 9 9 "crates/atproto-oauth-aip", 10 10 "crates/atproto-oauth-axum", 11 11 "crates/atproto-oauth", 12 + "crates/atproto-oauth-dioxus", 12 13 "crates/atproto-pds", 13 14 "crates/atproto-record", 14 15 "crates/atproto-repo",
+57
crates/atproto-oauth-dioxus/Cargo.toml
··· 1 + [package] 2 + name = "atproto-oauth-dioxus" 3 + version = "0.15.0-alpha.2" 4 + description = "Dioxus fullstack integration for AT Protocol OAuth authentication workflows" 5 + readme = "README.md" 6 + homepage = "https://tangled.org/ngerakines.me/atproto-crates" 7 + documentation = "https://docs.rs/atproto-oauth-dioxus" 8 + 9 + edition.workspace = true 10 + rust-version.workspace = true 11 + authors.workspace = true 12 + repository.workspace = true 13 + license.workspace = true 14 + keywords.workspace = true 15 + categories.workspace = true 16 + 17 + [dependencies] 18 + dioxus = { version = "0.7.1", features = ["router", "fullstack"] } 19 + 20 + serde = { workspace = true, features = ["derive"] } 21 + serde_json.workspace = true 22 + thiserror.workspace = true 23 + 24 + url = "2.5" 25 + web-sys = { version = "0.3", features = ["Window", "Location", "Storage"] } 26 + 27 + atproto-identity = { workspace = true, optional = true } 28 + atproto-oauth = { workspace = true, optional = true } 29 + reqwest = { workspace = true, optional = true } 30 + tokio = { workspace = true, optional = true } 31 + chrono = { workspace = true, optional = true } 32 + p256 = { workspace = true, features = ["jwk", "serde"], optional = true } 33 + rand = { workspace = true, optional = true } 34 + hex = { version = "0.4", optional = true } 35 + form_urlencoded = { version = "1.2", optional = true } 36 + 37 + [features] 38 + default = [] 39 + server = [ 40 + "dioxus/server", 41 + "dep:atproto-identity", 42 + "dep:atproto-oauth", 43 + "dep:reqwest", 44 + "dep:tokio", 45 + "dep:chrono", 46 + "dep:p256", 47 + "dep:rand", 48 + "dep:hex", 49 + "dep:form_urlencoded", 50 + ] 51 + hickory-dns = [ 52 + "atproto-identity?/hickory-dns", 53 + "atproto-oauth?/hickory-dns", 54 + ] 55 + 56 + [lints] 57 + workspace = true
+163
crates/atproto-oauth-dioxus/README.md
··· 1 + # atproto-oauth-dioxus 2 + 3 + Dioxus fullstack integration for AT Protocol OAuth authentication. 4 + 5 + This crate wraps the `atproto-oauth` and `atproto-identity` crates into ergonomic Dioxus components, hooks, and server functions, providing a turnkey OAuth PKCE + DPoP flow for Dioxus fullstack apps. 6 + 7 + ## Quick Start 8 + 9 + ### 1. Add the dependency 10 + 11 + ```toml 12 + [dependencies] 13 + atproto-oauth-dioxus = "0.15" 14 + 15 + [features] 16 + server = ["atproto-oauth-dioxus/server"] 17 + ``` 18 + 19 + ### 2. Define the callback route 20 + 21 + ```rust 22 + use dioxus::prelude::*; 23 + use atproto_oauth_dioxus::components::AtprotoOAuthCallback; 24 + 25 + #[derive(Routable, Clone, PartialEq)] 26 + enum Route { 27 + #[route("/oauth/callback")] 28 + AtprotoOAuthCallback {}, 29 + #[route("/")] 30 + Home {}, 31 + } 32 + ``` 33 + 34 + > If you prefer the shorter name `OAuthCallback`, alias the import: 35 + > `use atproto_oauth_dioxus::components::AtprotoOAuthCallback as OAuthCallback;` 36 + 37 + ### 3. Wrap your app with the provider 38 + 39 + ```rust 40 + use atproto_oauth_dioxus::components::AtprotoOAuthProvider; 41 + use atproto_oauth_dioxus::config::AtprotoOAuthConfig; 42 + 43 + #[component] 44 + fn App() -> Element { 45 + rsx! { 46 + AtprotoOAuthProvider { 47 + config: AtprotoOAuthConfig::new("/oauth/callback"), 48 + Router::<Route> {} 49 + } 50 + } 51 + } 52 + ``` 53 + 54 + ### 4. Add login to your page 55 + 56 + ```rust 57 + use dioxus::prelude::*; 58 + use atproto_oauth_dioxus::hooks::do_atproto_login; 59 + 60 + #[component] 61 + fn LoginPage() -> Element { 62 + let mut handle = use_signal(String::new); 63 + let auth_url = use_signal(|| None::<String>); 64 + let error = use_signal(|| None::<String>); 65 + let is_loading = use_signal(|| false); 66 + 67 + rsx! { 68 + input { 69 + placeholder: "you.bsky.social", 70 + oninput: move |e| handle.set(e.value()), 71 + disabled: is_loading(), 72 + } 73 + button { 74 + disabled: is_loading() || handle.read().is_empty(), 75 + onclick: move |_| do_atproto_login(handle(), auth_url, error, is_loading), 76 + if is_loading() { "Connecting..." } else { "Login with AT Protocol" } 77 + } 78 + if let Some(url) = auth_url.read().as_ref() { 79 + a { href: "{url}", "Continue to Authorization" } 80 + } 81 + if let Some(err) = error.read().as_ref() { 82 + p { "{err}" } 83 + } 84 + } 85 + } 86 + ``` 87 + 88 + ### 5. Show session state elsewhere 89 + 90 + ```rust 91 + use dioxus::prelude::*; 92 + use atproto_oauth_dioxus::types::SessionState; 93 + use atproto_oauth_dioxus::hooks::do_atproto_logout; 94 + 95 + #[component] 96 + fn UserMenu() -> Element { 97 + let session = use_context::<Signal<SessionState>>(); 98 + 99 + rsx! { 100 + span { "Logged in as {session.read().handle}" } 101 + button { 102 + onclick: move |_| do_atproto_logout(session), 103 + "Log out" 104 + } 105 + } 106 + } 107 + ``` 108 + 109 + ## Server Configuration 110 + 111 + Set environment variables for production: 112 + 113 + | Variable | Purpose | 114 + |----------|---------| 115 + | `OAUTH_KEY_SEED` | 64 hex chars (32 bytes) seed for the P-256 signing key. Restoring the same seed on restart regenerates the identical key. | 116 + | `HOST_DOMAIN` or `RAILWAY_PUBLIC_DOMAIN` | The public hostname used to construct the OAuth `client_id` and `redirect_uri`. | 117 + 118 + ## Features 119 + 120 + | Feature | Description | 121 + |---------|-------------| 122 + | `server` | Enables server-side OAuth logic (DID resolution, PAR, token exchange, session storage). Required for `#[server]` functions. | 123 + | `hickory-dns` | Enables Hickory DNS resolver for handle-to-DID resolution (passthrough to `atproto-identity`). | 124 + 125 + ## Making Authenticated PDS Calls 126 + 127 + After login, server functions can retrieve the active session (including the DPoP key) to make authenticated calls to the user's PDS: 128 + 129 + ```rust 130 + use atproto_oauth_dioxus::server::get_active_session; 131 + use atproto_oauth::dpop::request_dpop; 132 + use atproto_identity::url::build_url; 133 + 134 + pub async fn call_pds(did: &str) -> Result<(), String> { 135 + let session = get_active_session(did) 136 + .await 137 + .ok_or("No active session")?; 138 + 139 + let url = build_url(&session.pds_endpoint, "/xrpc/com.atproto.repo.describeRepo", [("repo", did)]) 140 + .map_err(|e| e.to_string())? 141 + .to_string(); 142 + 143 + let (dpop_token, _, _) = request_dpop(&session.dpop_key, "GET", &url, &session.access_token) 144 + .map_err(|e| format!("DPoP error: {}", e))?; 145 + 146 + // Make the request with Authorization: DPoP {access_token} and DPoP: {dpop_token} 147 + // ... 148 + } 149 + ``` 150 + 151 + ## How It Works 152 + 153 + 1. User enters their AT Protocol handle (e.g. `you.bsky.social`) 154 + 2. Server resolves the handle to a DID and discovers the user's PDS OAuth endpoints 155 + 3. Server initiates a Pushed Authorization Request (PAR) and returns an authorization URL 156 + 4. Client redirects the user to their PDS to approve the app 157 + 5. PDS redirects back to `/oauth/callback?code=...&state=...` 158 + 6. `AtprotoOAuthCallback` component extracts the code and state, calls the server to exchange for tokens 159 + 7. Session is persisted to `localStorage` and provided via Dioxus context 160 + 161 + ## License 162 + 163 + MIT (same as the atproto-crates workspace).
+159
crates/atproto-oauth-dioxus/src/components.rs
··· 1 + use dioxus::prelude::*; 2 + 3 + use crate::config::AtprotoOAuthConfig; 4 + use crate::types::SessionState; 5 + 6 + #[cfg(target_arch = "wasm32")] 7 + use crate::state; 8 + 9 + /// Root component that provides AT Protocol OAuth session state to all children. 10 + /// 11 + /// Wrap your app's [`Router`] or root element with this component to enable 12 + /// OAuth authentication. It provides a reactive [`SessionState`] via Dioxus 13 + /// context and automatically restores the session from `localStorage` on mount. 14 + /// 15 + /// # Example 16 + /// 17 + /// ```rust,ignore 18 + /// use atproto_oauth_dioxus::components::AtprotoOAuthProvider; 19 + /// use atproto_oauth_dioxus::config::AtprotoOAuthConfig; 20 + /// 21 + /// fn App() -> Element { 22 + /// rsx! { 23 + /// AtprotoOAuthProvider { 24 + /// config: AtprotoOAuthConfig::new("/oauth/callback"), 25 + /// Router::<Route> {} 26 + /// } 27 + /// } 28 + /// } 29 + /// ``` 30 + #[component] 31 + pub fn AtprotoOAuthProvider(config: AtprotoOAuthConfig, children: Element) -> Element { 32 + #[cfg_attr(not(target_arch = "wasm32"), allow(unused_mut, unused_variables))] 33 + let mut session = use_signal(SessionState::default); 34 + use_context_provider(|| session); 35 + 36 + let _ = config; 37 + 38 + use_effect(move || { 39 + #[cfg(target_arch = "wasm32")] 40 + { 41 + if !session.read().is_authenticated { 42 + if let Some(stored) = state::load_session() { 43 + session.set(stored); 44 + } 45 + } 46 + } 47 + }); 48 + 49 + rsx! { {children} } 50 + } 51 + 52 + /// Component that handles the OAuth callback redirect. 53 + /// 54 + /// Mount this at the route matching your configured `redirect_path` 55 + /// (typically `/oauth/callback`). It reads the `code` and `state` 56 + /// query parameters from the URL, calls the `complete_atproto_oauth` 57 + /// server function, updates the session state, and navigates to the 58 + /// home route on success. 59 + /// 60 + /// # Example 61 + /// 62 + /// ```rust,ignore 63 + /// #[derive(Routable)] 64 + /// enum Route { 65 + /// #[route("/oauth/callback")] 66 + /// OAuthCallback {}, // mounts AtprotoOAuthCallback 67 + /// #[route("/")] 68 + /// Home {}, 69 + /// } 70 + /// ``` 71 + #[component] 72 + pub fn AtprotoOAuthCallback() -> Element { 73 + #[cfg_attr(not(target_arch = "wasm32"), allow(unused_mut))] 74 + let mut status = use_signal(|| "Processing login...".to_string()); 75 + #[cfg_attr(not(target_arch = "wasm32"), allow(unused_mut))] 76 + let mut done = use_signal(|| false); 77 + #[cfg_attr(not(target_arch = "wasm32"), allow(unused_mut))] 78 + let mut err = use_signal(String::new); 79 + 80 + #[cfg_attr(not(target_arch = "wasm32"), allow(unused_mut, unused_variables))] 81 + let mut session = use_context::<Signal<SessionState>>(); 82 + 83 + use_effect(move || { 84 + #[cfg(target_arch = "wasm32")] 85 + { 86 + let params = extract_query_params(); 87 + if let (Some(code), Some(state)) = (params.get("code"), params.get("state")) { 88 + let code = code.clone(); 89 + let state = state.clone(); 90 + spawn(async move { 91 + match crate::server_fns::complete_atproto_oauth(code, state).await { 92 + Ok(session_data) => { 93 + session.write().did = session_data.did.clone(); 94 + session.write().handle = session_data.handle.clone(); 95 + session.write().pds_endpoint = session_data.pds_endpoint.clone(); 96 + session.write().access_token = session_data.access_token.clone(); 97 + session.write().is_authenticated = true; 98 + 99 + state::save_session(&session.read().clone()); 100 + 101 + status.set("Login successful! Redirecting...".to_string()); 102 + done.set(true); 103 + 104 + let nav = navigator(); 105 + nav.push("/"); 106 + } 107 + Err(e) => { 108 + err.set(format!("Login failed: {}", e)); 109 + } 110 + } 111 + }); 112 + } else { 113 + err.set("Missing code or state parameter in callback URL".to_string()); 114 + } 115 + } 116 + }); 117 + 118 + if !err.read().is_empty() { 119 + return rsx! { 120 + div { 121 + h1 { "Login Failed" } 122 + p { "{err}" } 123 + a { href: "/", "Try Again" } 124 + } 125 + }; 126 + } 127 + 128 + rsx! { 129 + div { 130 + h1 { 131 + if done() { "Welcome!" } else { "Logging in..." } 132 + } 133 + p { "{status}" } 134 + } 135 + } 136 + } 137 + 138 + /// Extracts query parameters from the current browser URL. 139 + #[allow(dead_code)] 140 + #[cfg(target_arch = "wasm32")] 141 + fn extract_query_params() -> std::collections::HashMap<String, String> { 142 + let window = web_sys::window().expect("no window"); 143 + let location = window.location(); 144 + let search = location.search().unwrap_or_default(); 145 + if search.is_empty() { 146 + return std::collections::HashMap::new(); 147 + } 148 + let query = search.trim_start_matches('?'); 149 + url::form_urlencoded::parse(query.as_bytes()) 150 + .into_owned() 151 + .collect() 152 + } 153 + 154 + /// Stub for non-WASM targets (SSR). 155 + #[cfg(not(target_arch = "wasm32"))] 156 + #[allow(dead_code)] 157 + fn extract_query_params() -> std::collections::HashMap<String, String> { 158 + std::collections::HashMap::new() 159 + }
+43
crates/atproto-oauth-dioxus/src/config.rs
··· 1 + /// Configuration for the AT Protocol OAuth Dioxus integration. 2 + /// 3 + /// Pass an instance to [`AtprotoOAuthProvider`](crate::components::AtprotoOAuthProvider) 4 + /// to configure the OAuth flow. Server-side values (base URL, signing key seed) 5 + /// are read from environment variables. 6 + #[derive(Debug, Clone, PartialEq)] 7 + pub struct AtprotoOAuthConfig { 8 + /// The path for the OAuth callback route on the client. 9 + /// 10 + /// Must match the route where [`AtprotoOAuthCallback`](crate::components::AtprotoOAuthCallback) 11 + /// is mounted. Defaults to `/oauth/callback`. 12 + pub redirect_path: String, 13 + 14 + /// The OAuth scope to request. 15 + /// 16 + /// Defaults to `atproto transition:generic`. 17 + pub scope: String, 18 + } 19 + 20 + impl Default for AtprotoOAuthConfig { 21 + fn default() -> Self { 22 + Self { 23 + redirect_path: "/oauth/callback".to_string(), 24 + scope: "atproto transition:generic".to_string(), 25 + } 26 + } 27 + } 28 + 29 + impl AtprotoOAuthConfig { 30 + /// Creates a new configuration with default scope and the given redirect path. 31 + pub fn new(redirect_path: impl Into<String>) -> Self { 32 + Self { 33 + redirect_path: redirect_path.into(), 34 + scope: "atproto transition:generic".to_string(), 35 + } 36 + } 37 + 38 + /// Sets the OAuth scope. 39 + pub fn with_scope(mut self, scope: impl Into<String>) -> Self { 40 + self.scope = scope.into(); 41 + self 42 + } 43 + }
+55
crates/atproto-oauth-dioxus/src/errors.rs
··· 1 + use thiserror::Error; 2 + 3 + /// Error type for OAuth Dioxus integration operations. 4 + /// 5 + /// Follows the convention `error-atproto-oauth-dioxus-{domain}-{number}`. 6 + #[derive(Debug, Error)] 7 + pub enum DioxusOAuthError { 8 + /// Failed to resolve an AT Protocol handle to a DID. 9 + #[error("error-atproto-oauth-dioxus-resolve-1 Failed to resolve handle: {0}")] 10 + HandleResolutionFailed(String), 11 + 12 + /// Failed to discover PDS OAuth resources. 13 + #[error("error-atproto-oauth-dioxus-resolve-2 Failed to discover PDS OAuth resources: {0}")] 14 + PdsResourceDiscoveryFailed(String), 15 + 16 + /// Failed to resolve DID to a PDS endpoint. 17 + #[error("error-atproto-oauth-dioxus-resolve-3 Failed to resolve DID to PDS: {0}")] 18 + PdsResolutionFailed(String), 19 + 20 + /// The OAuth authorization initiation failed. 21 + #[error("error-atproto-oauth-dioxus-init-1 OAuth authorization initiation failed: {0}")] 22 + OAuthInitFailed(String), 23 + 24 + /// Invalid or expired OAuth state during callback. 25 + #[error("error-atproto-oauth-dioxus-callback-1 Invalid or expired OAuth state")] 26 + InvalidOAuthState, 27 + 28 + /// The token exchange failed. 29 + #[error("error-atproto-oauth-dioxus-callback-2 Token exchange failed: {0}")] 30 + TokenExchangeFailed(String), 31 + 32 + /// The token response is missing the `sub` (DID) field. 33 + #[error("error-atproto-oauth-dioxus-callback-3 Token response missing 'sub' (DID) field")] 34 + MissingSubField, 35 + 36 + /// Failed to generate or load the OAuth signing key. 37 + #[error("error-atproto-oauth-dioxus-key-1 Failed to initialize OAuth signing key: {0}")] 38 + KeyInitializationFailed(String), 39 + 40 + /// The OAUTH_KEY_SEED environment variable has an invalid format. 41 + #[error("error-atproto-oauth-dioxus-key-2 Invalid OAUTH_KEY_SEED: {0}")] 42 + InvalidKeySeed(String), 43 + 44 + /// Failed to derive the public key from the private signing key. 45 + #[error("error-atproto-oauth-dioxus-key-3 Failed to derive public key: {0}")] 46 + PublicKeyDerivationFailed(String), 47 + 48 + /// Failed to generate a JWK from the signing key. 49 + #[error("error-atproto-oauth-dioxus-key-4 Failed to generate JWK: {0}")] 50 + JwkGenerationFailed(String), 51 + 52 + /// Configuration error. 53 + #[error("error-atproto-oauth-dioxus-config-1 Configuration error: {0}")] 54 + ConfigurationError(String), 55 + }
+106
crates/atproto-oauth-dioxus/src/hooks.rs
··· 1 + use dioxus::prelude::*; 2 + 3 + use crate::state; 4 + use crate::types::SessionState; 5 + 6 + /// Reactive handle for the AT Protocol OAuth authentication state. 7 + /// 8 + /// Returned by [`use_atproto_auth`]. All fields are reactive signals 9 + /// that components can read and write. The struct is `Clone + Copy` 10 + /// for ergonomic use in event handlers and async closures. 11 + #[derive(Clone, Copy)] 12 + pub struct AtprotoAuthHandle { 13 + /// The current session state. Provided via Dioxus context. 14 + pub session: Signal<SessionState>, 15 + /// The authorization URL to redirect the user to, if a login is in progress. 16 + pub authorization_url: Signal<Option<String>>, 17 + /// An error message, if the last login attempt failed. 18 + pub error: Signal<Option<String>>, 19 + /// Whether a login request is currently in progress. 20 + pub is_loading: Signal<bool>, 21 + } 22 + 23 + /// Hook that returns the AT Protocol OAuth reactive state. 24 + /// 25 + /// Must be called within a component tree that has an 26 + /// [`AtprotoOAuthProvider`](crate::components::AtprotoOAuthProvider) ancestor. 27 + /// 28 + /// # Panics 29 + /// 30 + /// Panics if no `Signal<SessionState>` is found in the Dioxus context. 31 + pub fn use_atproto_auth() -> AtprotoAuthHandle { 32 + let session = use_context::<Signal<SessionState>>(); 33 + let authorization_url = use_signal(|| None::<String>); 34 + let error = use_signal(|| None::<String>); 35 + let is_loading = use_signal(|| false); 36 + 37 + AtprotoAuthHandle { 38 + session, 39 + authorization_url, 40 + error, 41 + is_loading, 42 + } 43 + } 44 + 45 + /// Initiates a login by calling the `init_atproto_oauth` server function. 46 + /// 47 + /// Updates the provided signals with the authorization URL on success 48 + /// or an error message on failure. 49 + pub fn do_atproto_login( 50 + handle: String, 51 + mut authorization_url: Signal<Option<String>>, 52 + mut error: Signal<Option<String>>, 53 + mut is_loading: Signal<bool>, 54 + ) { 55 + if handle.is_empty() { 56 + return; 57 + } 58 + is_loading.set(true); 59 + error.set(None); 60 + spawn(async move { 61 + match crate::server_fns::init_atproto_oauth(handle).await { 62 + Ok(resp) => { 63 + authorization_url.set(Some(resp.authorization_url)); 64 + is_loading.set(false); 65 + } 66 + Err(e) => { 67 + error.set(Some(format!("Login failed: {}", e))); 68 + is_loading.set(false); 69 + } 70 + } 71 + }); 72 + } 73 + 74 + /// Processes the OAuth callback by calling the `complete_atproto_oauth` 75 + /// server function and updating the session state on success. 76 + pub fn do_atproto_complete_login( 77 + code: String, 78 + state: String, 79 + mut session: Signal<SessionState>, 80 + mut error: Signal<Option<String>>, 81 + ) { 82 + spawn(async move { 83 + match crate::server_fns::complete_atproto_oauth(code, state).await { 84 + Ok(session_data) => { 85 + session.write().did = session_data.did.clone(); 86 + session.write().handle = session_data.handle.clone(); 87 + session.write().pds_endpoint = session_data.pds_endpoint.clone(); 88 + session.write().access_token = session_data.access_token.clone(); 89 + session.write().is_authenticated = true; 90 + 91 + state::save_session(&session.read().clone()); 92 + 93 + error.set(None); 94 + } 95 + Err(e) => { 96 + error.set(Some(format!("Login failed: {}", e))); 97 + } 98 + } 99 + }); 100 + } 101 + 102 + /// Logs the user out by clearing the session state and localStorage. 103 + pub fn do_atproto_logout(mut session: Signal<SessionState>) { 104 + state::clear_session(); 105 + session.set(SessionState::default()); 106 + }
+98
crates/atproto-oauth-dioxus/src/lib.rs
··· 1 + //! Dioxus fullstack integration for AT Protocol OAuth authentication. 2 + //! 3 + //! This crate provides a turnkey OAuth PKCE + DPoP flow for Dioxus fullstack 4 + //! applications, wrapping the [`atproto-oauth`] and [`atproto-identity`] crates 5 + //! into ergonomic Dioxus components, hooks, and server functions. 6 + //! 7 + //! # Quick Start 8 + //! 9 + //! 1. Add the dependency to your `Cargo.toml`: 10 + //! 11 + //! ```toml 12 + //! [dependencies] 13 + //! atproto-oauth-dioxus = "0.15" 14 + //! 15 + //! [features] 16 + //! server = ["atproto-oauth-dioxus/server"] 17 + //! ``` 18 + //! 19 + //! 2. Define the callback route in your app's `Route` enum: 20 + //! 21 + //! ```rust,ignore 22 + //! #[derive(Routable, Clone, PartialEq)] 23 + //! enum Route { 24 + //! #[route("/oauth/callback")] 25 + //! OAuthCallback {}, 26 + //! #[route("/")] 27 + //! Home {}, 28 + //! } 29 + //! ``` 30 + //! 31 + //! 3. Wrap your app with the provider and mount the callback: 32 + //! 33 + //! ```rust,ignore 34 + //! use atproto_oauth_dioxus::components::AtprotoOAuthProvider; 35 + //! use atproto_oauth_dioxus::config::AtprotoOAuthConfig; 36 + //! 37 + //! fn App() -> Element { 38 + //! rsx! { 39 + //! AtprotoOAuthProvider { 40 + //! config: AtprotoOAuthConfig::new("/oauth/callback"), 41 + //! Router::<Route> {} 42 + //! } 43 + //! } 44 + //! } 45 + //! ``` 46 + //! 47 + //! 4. Use the [`use_atproto_auth`] hook in your login page: 48 + //! 49 + //! ```rust,ignore 50 + //! use atproto_oauth_dioxus::hooks::{use_atproto_auth, do_atproto_login}; 51 + //! 52 + //! fn LoginPage() -> Element { 53 + //! let auth = use_atproto_auth(); 54 + //! let mut handle = use_signal(String::new); 55 + //! 56 + //! rsx! { 57 + //! input { oninput: move |e| handle.set(e.value()) } 58 + //! button { 59 + //! onclick: move |_| do_atproto_login( 60 + //! handle(), auth.authorization_url, auth.error, auth.is_loading, 61 + //! ), 62 + //! "Login with AT Protocol" 63 + //! } 64 + //! } 65 + //! } 66 + //! ``` 67 + //! 68 + //! # Server Configuration 69 + //! 70 + //! Set the following environment variables for server deployments: 71 + //! 72 + //! - `OAUTH_KEY_SEED` — 64 hex characters (32 bytes) seed for the P-256 73 + //! signing key. On server restarts, the same seed regenerates the same key. 74 + //! - `HOST_DOMAIN` or `RAILWAY_PUBLIC_DOMAIN` — The public hostname of the 75 + //! deployment. Used to construct the `client_id` and `redirect_uri`. 76 + 77 + #![forbid(unsafe_code)] 78 + #![warn(missing_docs)] 79 + 80 + /// Dioxus components for the AT Protocol OAuth flow. 81 + pub mod components; 82 + /// Configuration for the AT Protocol OAuth Dioxus integration. 83 + pub mod config; 84 + /// Error types for the AT Protocol OAuth Dioxus integration. 85 + pub mod errors; 86 + /// Reactive hooks for AT Protocol OAuth authentication state. 87 + pub mod hooks; 88 + /// Client-side session persistence via localStorage. 89 + pub mod state; 90 + /// Shared data types used across the client and server. 91 + pub mod types; 92 + 93 + /// Server functions for AT Protocol OAuth flows. 94 + pub mod server_fns; 95 + 96 + /// Server-side OAuth orchestration and session management. 97 + #[cfg(feature = "server")] 98 + pub mod server;
+313
crates/atproto-oauth-dioxus/src/server.rs
··· 1 + use std::collections::HashMap; 2 + use std::sync::LazyLock; 3 + 4 + use atproto_identity::key::{KeyData, KeyType, generate_key, to_public}; 5 + use atproto_identity::resolve::{HickoryDnsResolver, resolve_subject}; 6 + use atproto_oauth::resources::{AuthorizationServer, pds_resources}; 7 + use atproto_oauth::workflow::{ 8 + OAuthClient, OAuthRequest, OAuthRequestState, oauth_complete, oauth_init, 9 + }; 10 + use p256::SecretKey; 11 + 12 + use crate::errors::DioxusOAuthError; 13 + use crate::types::SessionData; 14 + 15 + static OAUTH_STATES: LazyLock<tokio::sync::Mutex<HashMap<String, StoredOAuthState>>> = 16 + LazyLock::new(|| tokio::sync::Mutex::new(HashMap::new())); 17 + 18 + pub(crate) static ACTIVE_SESSIONS: LazyLock<tokio::sync::Mutex<HashMap<String, ActiveSession>>> = 19 + LazyLock::new(|| tokio::sync::Mutex::new(HashMap::new())); 20 + 21 + static SIGNING_KEY: LazyLock<KeyData> = LazyLock::new(|| { 22 + get_or_generate_signing_key() 23 + .expect("Failed to initialize OAuth signing key; set a valid OAUTH_KEY_SEED or ensure key generation works") 24 + }); 25 + 26 + #[derive(Clone)] 27 + struct StoredOAuthState { 28 + oauth_request: OAuthRequest, 29 + auth_server: AuthorizationServer, 30 + pds_url: String, 31 + client_id: String, 32 + redirect_uri: String, 33 + signing_key: KeyData, 34 + dpop_key: KeyData, 35 + handle: String, 36 + } 37 + 38 + /// An authenticated AT Protocol OAuth session. 39 + /// 40 + /// Stored server-side after successful token exchange. Other server functions 41 + /// can retrieve this session to make DPoP-authenticated API calls to the 42 + /// user's PDS on their behalf. 43 + #[derive(Clone)] 44 + #[allow(dead_code)] 45 + pub struct ActiveSession { 46 + /// The user's decentralized identifier (DID). 47 + pub did: String, 48 + /// The user's AT Protocol handle. 49 + pub handle: String, 50 + /// The endpoint URL of the user's Personal Data Server. 51 + pub pds_endpoint: String, 52 + /// The OAuth access token for authenticated API calls. 53 + pub access_token: String, 54 + /// The DPoP private key for signing proof-of-possession tokens. 55 + pub dpop_key: KeyData, 56 + } 57 + 58 + /// Retrieves an active session by DID from the session store. 59 + /// 60 + /// Returns `None` if no active session exists for the given DID. 61 + #[allow(dead_code)] 62 + pub async fn get_active_session(did: &str) -> Option<ActiveSession> { 63 + ACTIVE_SESSIONS.lock().await.get(did).cloned() 64 + } 65 + 66 + /// Returns a reference to the static OAuth signing key. 67 + pub fn get_signing_key() -> &'static KeyData { 68 + &SIGNING_KEY 69 + } 70 + 71 + fn get_or_generate_signing_key() -> Result<KeyData, DioxusOAuthError> { 72 + if let Ok(seed_hex) = std::env::var("OAUTH_KEY_SEED") { 73 + let trimmed = seed_hex.trim(); 74 + if !trimmed.is_empty() { 75 + let seed = hex::decode(trimmed) 76 + .map_err(|e| DioxusOAuthError::InvalidKeySeed(format!("Invalid hex: {}", e)))?; 77 + let seed: [u8; 32] = seed.try_into().map_err(|_| { 78 + DioxusOAuthError::InvalidKeySeed( 79 + "OAUTH_KEY_SEED must be exactly 32 bytes (64 hex chars)".to_string(), 80 + ) 81 + })?; 82 + let sk = SecretKey::from_slice(&seed).map_err(|_| { 83 + DioxusOAuthError::InvalidKeySeed( 84 + "OAUTH_KEY_SEED is not a valid P-256 private key".to_string(), 85 + ) 86 + })?; 87 + return Ok(KeyData::new(KeyType::P256Private, sk.to_bytes().to_vec())); 88 + } 89 + } 90 + generate_key(KeyType::P256Private) 91 + .map_err(|e| DioxusOAuthError::KeyInitializationFailed(e.to_string())) 92 + } 93 + 94 + /// Derives the public key JWKS for the signing key. 95 + pub fn signing_key_jwks() -> Result<serde_json::Value, DioxusOAuthError> { 96 + let public_key = to_public(&SIGNING_KEY) 97 + .map_err(|e| DioxusOAuthError::PublicKeyDerivationFailed(e.to_string()))?; 98 + let jwk = atproto_oauth::jwk::generate(&public_key) 99 + .map_err(|e| DioxusOAuthError::JwkGenerationFailed(e.to_string()))?; 100 + let jwks = atproto_oauth::jwk::WrappedJsonWebKeySet { keys: vec![jwk] }; 101 + serde_json::to_value(jwks).map_err(|e| DioxusOAuthError::JwkGenerationFailed(e.to_string())) 102 + } 103 + 104 + fn generate_random_hex(len: usize) -> String { 105 + let bytes: Vec<u8> = (0..len).map(|_| rand::random::<u8>()).collect(); 106 + hex::encode(bytes) 107 + } 108 + 109 + fn urlencode(s: &str) -> String { 110 + form_urlencoded::byte_serialize(s.as_bytes()).collect() 111 + } 112 + 113 + /// Returns the base URL of the deployment. 114 + pub fn base_url() -> String { 115 + let domain = std::env::var("HOST_DOMAIN") 116 + .or_else(|_| std::env::var("RAILWAY_PUBLIC_DOMAIN")) 117 + .unwrap_or_default(); 118 + if domain.is_empty() { 119 + "http://127.0.0.1:8080".to_string() 120 + } else { 121 + format!("https://{}", domain) 122 + } 123 + } 124 + 125 + /// Initiates the AT Protocol OAuth authorization flow. 126 + /// 127 + /// Resolves the user's handle to a DID, discovers their PDS OAuth endpoints, 128 + /// and pushes an authorization request via PAR. Returns the URL the user 129 + /// should be redirected to for authentication. 130 + pub async fn init_oauth(handle: String) -> Result<String, DioxusOAuthError> { 131 + let http_client = reqwest::Client::new(); 132 + let dns_resolver = HickoryDnsResolver::create_resolver(&[]); 133 + 134 + let did = resolve_subject(&http_client, &dns_resolver, &handle) 135 + .await 136 + .map_err(|e| DioxusOAuthError::HandleResolutionFailed(e.to_string()))?; 137 + 138 + let pds_url = resolve_did_to_pds(&did).await?; 139 + 140 + let (_protected, auth_server) = pds_resources(&http_client, &pds_url) 141 + .await 142 + .map_err(|e| DioxusOAuthError::PdsResourceDiscoveryFailed(e.to_string()))?; 143 + 144 + let base = base_url(); 145 + let redirect_uri = format!("{}/oauth/callback", base); 146 + let client_id = if base.starts_with("https://") { 147 + format!("{}/oauth/client-metadata.json", base) 148 + } else { 149 + format!( 150 + "http://localhost?redirect_uri={}&scope={}", 151 + urlencode(&redirect_uri), 152 + urlencode("atproto transition:generic"), 153 + ) 154 + }; 155 + 156 + let (code_verifier, code_challenge) = atproto_oauth::pkce::generate(); 157 + 158 + let state = generate_random_hex(16); 159 + let nonce = generate_random_hex(16); 160 + 161 + let signing_key = get_signing_key().clone(); 162 + let dpop_key = generate_key(KeyType::P256Private) 163 + .map_err(|e| DioxusOAuthError::KeyInitializationFailed(e.to_string()))?; 164 + 165 + let oauth_client = OAuthClient { 166 + redirect_uri: redirect_uri.clone(), 167 + client_id: client_id.clone(), 168 + private_signing_key_data: signing_key.clone(), 169 + }; 170 + 171 + let oauth_request_state = OAuthRequestState { 172 + state: state.clone(), 173 + nonce: nonce.clone(), 174 + code_challenge, 175 + scope: "atproto transition:generic".to_string(), 176 + }; 177 + 178 + let par_response = oauth_init( 179 + &http_client, 180 + &oauth_client, 181 + &dpop_key, 182 + Some(&handle), 183 + &auth_server, 184 + &oauth_request_state, 185 + ) 186 + .await 187 + .map_err(|e| DioxusOAuthError::OAuthInitFailed(e.to_string()))?; 188 + 189 + let oauth_request = OAuthRequest { 190 + oauth_state: state.clone(), 191 + issuer: auth_server.issuer.clone(), 192 + authorization_server: auth_server.pushed_authorization_request_endpoint.clone(), 193 + nonce, 194 + pkce_verifier: code_verifier, 195 + signing_public_key: hex::encode(&signing_key.1), 196 + dpop_private_key: hex::encode(&dpop_key.1), 197 + created_at: chrono::Utc::now(), 198 + expires_at: chrono::Utc::now() + chrono::TimeDelta::seconds(par_response.expires_in as i64), 199 + }; 200 + 201 + OAUTH_STATES.lock().await.insert( 202 + state.clone(), 203 + StoredOAuthState { 204 + oauth_request, 205 + auth_server: auth_server.clone(), 206 + pds_url, 207 + client_id: client_id.clone(), 208 + redirect_uri, 209 + signing_key, 210 + dpop_key, 211 + handle: handle.clone(), 212 + }, 213 + ); 214 + 215 + let authorization_url = format!( 216 + "{}?client_id={}&request_uri={}&state={}", 217 + auth_server.authorization_endpoint, 218 + urlencode(&client_id), 219 + urlencode(&par_response.request_uri), 220 + urlencode(&state), 221 + ); 222 + 223 + Ok(authorization_url) 224 + } 225 + 226 + /// Completes the OAuth flow by exchanging the authorization code for tokens. 227 + /// 228 + /// Verifies the state parameter, performs the token exchange with DPoP, 229 + /// and stores the active session for subsequent authenticated API calls. 230 + pub async fn complete_oauth(code: String, state: String) -> Result<SessionData, DioxusOAuthError> { 231 + let stored = { 232 + let mut states = OAUTH_STATES.lock().await; 233 + states 234 + .remove(&state) 235 + .ok_or(DioxusOAuthError::InvalidOAuthState)? 236 + }; 237 + 238 + let http_client = reqwest::Client::new(); 239 + 240 + let oauth_client = OAuthClient { 241 + redirect_uri: stored.redirect_uri.clone(), 242 + client_id: stored.client_id.clone(), 243 + private_signing_key_data: stored.signing_key.clone(), 244 + }; 245 + 246 + let token_response = oauth_complete( 247 + &http_client, 248 + &oauth_client, 249 + &stored.dpop_key, 250 + &code, 251 + &stored.oauth_request, 252 + &stored.auth_server, 253 + ) 254 + .await 255 + .map_err(|e| DioxusOAuthError::TokenExchangeFailed(e.to_string()))?; 256 + 257 + let did = token_response 258 + .sub 259 + .ok_or(DioxusOAuthError::MissingSubField)?; 260 + 261 + ACTIVE_SESSIONS.lock().await.insert( 262 + did.clone(), 263 + ActiveSession { 264 + did: did.clone(), 265 + handle: stored.handle.clone(), 266 + pds_endpoint: stored.pds_url.clone(), 267 + access_token: token_response.access_token.clone(), 268 + dpop_key: stored.dpop_key.clone(), 269 + }, 270 + ); 271 + 272 + Ok(SessionData { 273 + did, 274 + handle: stored.handle, 275 + pds_endpoint: stored.pds_url, 276 + access_token: token_response.access_token, 277 + }) 278 + } 279 + 280 + async fn resolve_did_to_pds(did: &str) -> Result<String, DioxusOAuthError> { 281 + let http_client = reqwest::Client::new(); 282 + let did_doc_url = format!("https://plc.directory/{}", did); 283 + let resp = http_client 284 + .get(&did_doc_url) 285 + .send() 286 + .await 287 + .map_err(|e| DioxusOAuthError::PdsResolutionFailed(e.to_string()))?; 288 + 289 + let doc: serde_json::Value = resp 290 + .json() 291 + .await 292 + .map_err(|e| DioxusOAuthError::PdsResolutionFailed(e.to_string()))?; 293 + 294 + for svc in doc["service"] 295 + .as_array() 296 + .ok_or(DioxusOAuthError::PdsResolutionFailed( 297 + "No services in DID document".to_string(), 298 + ))? 299 + { 300 + if svc["id"].as_str() == Some("#atproto_pds") { 301 + return svc["serviceEndpoint"] 302 + .as_str() 303 + .map(|s| s.to_string()) 304 + .ok_or(DioxusOAuthError::PdsResolutionFailed( 305 + "No serviceEndpoint for atproto_pds".to_string(), 306 + )); 307 + } 308 + } 309 + 310 + Err(DioxusOAuthError::PdsResolutionFailed( 311 + "No atproto_pds service found".to_string(), 312 + )) 313 + }
+66
crates/atproto-oauth-dioxus/src/server_fns.rs
··· 1 + use dioxus::prelude::*; 2 + 3 + use crate::types::{ClientMetadata, OAuthInitResponse, SessionData}; 4 + 5 + /// Server function: initiates the AT Protocol OAuth authorization flow. 6 + /// 7 + /// Resolves the user's handle, discovers their PDS, and returns 8 + /// an authorization URL for the user to visit. 9 + /// 10 + /// Call this from the client when the user clicks "Log in". 11 + #[server] 12 + pub async fn init_atproto_oauth(handle: String) -> Result<OAuthInitResponse, ServerFnError> { 13 + let authorization_url = crate::server::init_oauth(handle) 14 + .await 15 + .map_err(|e| ServerFnError::new(e.to_string()))?; 16 + Ok(OAuthInitResponse { authorization_url }) 17 + } 18 + 19 + /// Server function: completes the OAuth flow by exchanging the 20 + /// authorization code for tokens. 21 + /// 22 + /// Called automatically by the [`AtprotoOAuthCallback`] component 23 + /// when the user is redirected back from their PDS. 24 + #[server] 25 + pub async fn complete_atproto_oauth( 26 + code: String, 27 + state: String, 28 + ) -> Result<SessionData, ServerFnError> { 29 + crate::server::complete_oauth(code, state) 30 + .await 31 + .map(|s| SessionData { 32 + did: s.did, 33 + handle: s.handle, 34 + pds_endpoint: s.pds_endpoint, 35 + access_token: s.access_token, 36 + }) 37 + .map_err(|e| ServerFnError::new(e.to_string())) 38 + } 39 + 40 + /// Serves the OAuth client metadata at `GET /oauth/client-metadata.json`. 41 + /// 42 + /// This endpoint is used by AT Protocol authorization servers to verify 43 + /// the client's identity and discover supported grant types, redirect URIs, 44 + /// and the client's public signing key (JWKS). 45 + #[get("/oauth/client-metadata.json")] 46 + pub async fn client_metadata() -> Result<ClientMetadata, ServerFnError> { 47 + let base = crate::server::base_url(); 48 + let jwks = crate::server::signing_key_jwks().map_err(|e| ServerFnError::new(e.to_string()))?; 49 + 50 + Ok(ClientMetadata { 51 + client_id: format!("{}/oauth/client-metadata.json", base), 52 + dpop_bound_access_tokens: true, 53 + application_type: "web".to_string(), 54 + redirect_uris: vec![format!("{}/oauth/callback", base)], 55 + grant_types: vec![ 56 + "authorization_code".to_string(), 57 + "refresh_token".to_string(), 58 + ], 59 + response_types: vec!["code".to_string()], 60 + scope: "atproto transition:generic".to_string(), 61 + token_endpoint_auth_method: "private_key_jwt".to_string(), 62 + subject_type: "public".to_string(), 63 + token_endpoint_auth_signing_alg: "ES256".to_string(), 64 + jwks, 65 + }) 66 + }
+53
crates/atproto-oauth-dioxus/src/state.rs
··· 1 + use crate::types::SessionState; 2 + 3 + /// localStorage key for persisting the AT Protocol OAuth session. 4 + #[cfg(target_arch = "wasm32")] 5 + const SESSION_STORAGE_KEY: &str = "atproto-oauth-session"; 6 + 7 + /// Attempts to load a persisted session from localStorage. 8 + /// 9 + /// Returns `None` if no session is stored or if deserialization fails. 10 + #[cfg(target_arch = "wasm32")] 11 + pub fn load_session() -> Option<SessionState> { 12 + let storage = web_sys::window()?.local_storage().ok()??; 13 + let json = storage.get_item(SESSION_STORAGE_KEY).ok()??; 14 + serde_json::from_str(&json).ok() 15 + } 16 + 17 + /// Persists the session state to localStorage. 18 + #[cfg(target_arch = "wasm32")] 19 + pub fn save_session(state: &SessionState) { 20 + if let (Some(storage), Ok(json)) = ( 21 + web_sys::window() 22 + .and_then(|w| w.local_storage().ok()) 23 + .flatten(), 24 + serde_json::to_string(state), 25 + ) { 26 + let _ = storage.set_item(SESSION_STORAGE_KEY, &json); 27 + } 28 + } 29 + 30 + /// Removes the persisted session from localStorage. 31 + #[cfg(target_arch = "wasm32")] 32 + pub fn clear_session() { 33 + if let Some(storage) = web_sys::window() 34 + .and_then(|w| w.local_storage().ok()) 35 + .flatten() 36 + { 37 + let _ = storage.remove_item(SESSION_STORAGE_KEY); 38 + } 39 + } 40 + 41 + /// Stub for non-WASM targets (SSR/server rendering). 42 + #[cfg(not(target_arch = "wasm32"))] 43 + pub fn load_session() -> Option<SessionState> { 44 + None 45 + } 46 + 47 + /// Stub for non-WASM targets. 48 + #[cfg(not(target_arch = "wasm32"))] 49 + pub fn save_session(_state: &SessionState) {} 50 + 51 + /// Stub for non-WASM targets. 52 + #[cfg(not(target_arch = "wasm32"))] 53 + pub fn clear_session() {}
+75
crates/atproto-oauth-dioxus/src/types.rs
··· 1 + use serde::{Deserialize, Serialize}; 2 + 3 + /// Response returned after initiating the OAuth authorization flow. 4 + /// 5 + /// Contains the URL that the user should be redirected to for 6 + /// authenticating with their AT Protocol provider. 7 + #[derive(Debug, Clone, Serialize, Deserialize)] 8 + pub struct OAuthInitResponse { 9 + /// The authorization URL to redirect the user to. 10 + pub authorization_url: String, 11 + } 12 + 13 + /// Session data returned after successful OAuth token exchange. 14 + /// 15 + /// Contains the authenticated user's identity and access credentials 16 + /// needed to make authorized API calls to their PDS. 17 + #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] 18 + pub struct SessionData { 19 + /// The user's decentralized identifier (DID). 20 + pub did: String, 21 + /// The user's AT Protocol handle. 22 + pub handle: String, 23 + /// The endpoint URL of the user's Personal Data Server. 24 + pub pds_endpoint: String, 25 + /// The OAuth access token for authenticated API calls. 26 + pub access_token: String, 27 + } 28 + 29 + /// OAuth client metadata published at `client-metadata.json`. 30 + /// 31 + /// Served as a well-known endpoint for the AT Protocol authorization 32 + /// server to discover client configuration including JWKS and redirect URIs. 33 + #[derive(Debug, Clone, Serialize, Deserialize)] 34 + pub struct ClientMetadata { 35 + /// The OAuth client identifier. 36 + pub client_id: String, 37 + /// Whether DPoP-bound access tokens are supported. 38 + pub dpop_bound_access_tokens: bool, 39 + /// The application type (always `web`). 40 + pub application_type: String, 41 + /// Allowed redirect URIs after authorization. 42 + pub redirect_uris: Vec<String>, 43 + /// Supported OAuth grant types. 44 + pub grant_types: Vec<String>, 45 + /// Supported OAuth response types. 46 + pub response_types: Vec<String>, 47 + /// Requested OAuth scope. 48 + pub scope: String, 49 + /// Authentication method for the token endpoint. 50 + pub token_endpoint_auth_method: String, 51 + /// Subject type for the client. 52 + pub subject_type: String, 53 + /// Signing algorithm for token endpoint authentication. 54 + pub token_endpoint_auth_signing_alg: String, 55 + /// JSON Web Key Set containing the client's public signing key. 56 + pub jwks: serde_json::Value, 57 + } 58 + 59 + /// Reactive session state used on the client side. 60 + /// 61 + /// Stored in Dioxus context and persisted to localStorage so the 62 + /// session survives page reloads. 63 + #[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)] 64 + pub struct SessionState { 65 + /// Whether the user is currently authenticated. 66 + pub is_authenticated: bool, 67 + /// The user's decentralized identifier (DID). 68 + pub did: String, 69 + /// The user's AT Protocol handle. 70 + pub handle: String, 71 + /// The endpoint URL of the user's Personal Data Server. 72 + pub pds_endpoint: String, 73 + /// The OAuth access token. 74 + pub access_token: String, 75 + }