Live location tracking and playback for the game "manhunt"

Almost all command

bwc9876.dev 2532b7b8 5dac1fd5

verified
+1984 -179
+1707 -91
backend/Cargo.lock
··· 3 3 version = 4 4 4 5 5 [[package]] 6 + name = "Inflector" 7 + version = "0.11.4" 8 + source = "registry+https://github.com/rust-lang/crates.io-index" 9 + checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" 10 + 11 + [[package]] 6 12 name = "addr2line" 7 13 version = "0.24.2" 8 14 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 18 24 checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" 19 25 20 26 [[package]] 27 + name = "aead" 28 + version = "0.5.2" 29 + source = "registry+https://github.com/rust-lang/crates.io-index" 30 + checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" 31 + dependencies = [ 32 + "crypto-common", 33 + "generic-array", 34 + ] 35 + 36 + [[package]] 37 + name = "aes" 38 + version = "0.8.4" 39 + source = "registry+https://github.com/rust-lang/crates.io-index" 40 + checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" 41 + dependencies = [ 42 + "cfg-if", 43 + "cipher", 44 + "cpufeatures", 45 + ] 46 + 47 + [[package]] 48 + name = "aes-gcm" 49 + version = "0.10.3" 50 + source = "registry+https://github.com/rust-lang/crates.io-index" 51 + checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" 52 + dependencies = [ 53 + "aead", 54 + "aes", 55 + "cipher", 56 + "ctr", 57 + "ghash", 58 + "subtle", 59 + ] 60 + 61 + [[package]] 21 62 name = "aho-corasick" 22 63 version = "1.1.3" 23 64 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 63 104 checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" 64 105 65 106 [[package]] 107 + name = "arc-swap" 108 + version = "1.7.1" 109 + source = "registry+https://github.com/rust-lang/crates.io-index" 110 + checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" 111 + 112 + [[package]] 113 + name = "asn1-rs" 114 + version = "0.6.2" 115 + source = "registry+https://github.com/rust-lang/crates.io-index" 116 + checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" 117 + dependencies = [ 118 + "asn1-rs-derive", 119 + "asn1-rs-impl", 120 + "displaydoc", 121 + "nom", 122 + "num-traits", 123 + "rusticata-macros", 124 + "thiserror 1.0.69", 125 + "time", 126 + ] 127 + 128 + [[package]] 129 + name = "asn1-rs-derive" 130 + version = "0.5.1" 131 + source = "registry+https://github.com/rust-lang/crates.io-index" 132 + checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" 133 + dependencies = [ 134 + "proc-macro2", 135 + "quote", 136 + "syn 2.0.103", 137 + "synstructure", 138 + ] 139 + 140 + [[package]] 141 + name = "asn1-rs-impl" 142 + version = "0.2.0" 143 + source = "registry+https://github.com/rust-lang/crates.io-index" 144 + checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" 145 + dependencies = [ 146 + "proc-macro2", 147 + "quote", 148 + "syn 2.0.103", 149 + ] 150 + 151 + [[package]] 66 152 name = "async-broadcast" 67 153 version = "0.7.2" 68 154 source = "registry+https://github.com/rust-lang/crates.io-index" 69 155 checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" 70 156 dependencies = [ 71 - "event-listener", 157 + "event-listener 5.4.0", 72 158 "event-listener-strategy", 73 159 "futures-core", 74 160 "pin-project-lite", 161 + ] 162 + 163 + [[package]] 164 + name = "async-channel" 165 + version = "1.9.0" 166 + source = "registry+https://github.com/rust-lang/crates.io-index" 167 + checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" 168 + dependencies = [ 169 + "concurrent-queue", 170 + "event-listener 2.5.3", 171 + "futures-core", 75 172 ] 76 173 77 174 [[package]] ··· 87 184 ] 88 185 89 186 [[package]] 187 + name = "async-compat" 188 + version = "0.2.4" 189 + source = "registry+https://github.com/rust-lang/crates.io-index" 190 + checksum = "7bab94bde396a3f7b4962e396fdad640e241ed797d4d8d77fc8c237d14c58fc0" 191 + dependencies = [ 192 + "futures-core", 193 + "futures-io", 194 + "once_cell", 195 + "pin-project-lite", 196 + "tokio", 197 + ] 198 + 199 + [[package]] 90 200 name = "async-executor" 91 201 version = "1.13.2" 92 202 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 101 211 ] 102 212 103 213 [[package]] 214 + name = "async-global-executor" 215 + version = "2.4.1" 216 + source = "registry+https://github.com/rust-lang/crates.io-index" 217 + checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" 218 + dependencies = [ 219 + "async-channel 2.3.1", 220 + "async-executor", 221 + "async-io", 222 + "async-lock", 223 + "blocking", 224 + "futures-lite", 225 + "once_cell", 226 + ] 227 + 228 + [[package]] 104 229 name = "async-io" 105 230 version = "2.4.1" 106 231 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 125 250 source = "registry+https://github.com/rust-lang/crates.io-index" 126 251 checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" 127 252 dependencies = [ 128 - "event-listener", 253 + "event-listener 5.4.0", 129 254 "event-listener-strategy", 130 255 "pin-project-lite", 131 256 ] ··· 136 261 source = "registry+https://github.com/rust-lang/crates.io-index" 137 262 checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" 138 263 dependencies = [ 139 - "async-channel", 264 + "async-channel 2.3.1", 140 265 "async-io", 141 266 "async-lock", 142 267 "async-signal", 143 268 "async-task", 144 269 "blocking", 145 270 "cfg-if", 146 - "event-listener", 271 + "event-listener 5.4.0", 147 272 "futures-lite", 148 273 "rustix", 149 274 "tracing", ··· 157 282 dependencies = [ 158 283 "proc-macro2", 159 284 "quote", 160 - "syn 2.0.102", 285 + "syn 2.0.103", 161 286 ] 162 287 163 288 [[package]] ··· 179 304 ] 180 305 181 306 [[package]] 307 + name = "async-std" 308 + version = "1.13.1" 309 + source = "registry+https://github.com/rust-lang/crates.io-index" 310 + checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" 311 + dependencies = [ 312 + "async-channel 1.9.0", 313 + "async-global-executor", 314 + "async-io", 315 + "async-lock", 316 + "crossbeam-utils", 317 + "futures-channel", 318 + "futures-core", 319 + "futures-io", 320 + "futures-lite", 321 + "gloo-timers 0.3.0", 322 + "kv-log-macro", 323 + "log", 324 + "memchr", 325 + "once_cell", 326 + "pin-project-lite", 327 + "pin-utils", 328 + "slab", 329 + "wasm-bindgen-futures", 330 + ] 331 + 332 + [[package]] 182 333 name = "async-task" 183 334 version = "4.7.1" 184 335 source = "registry+https://github.com/rust-lang/crates.io-index" 185 336 checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" 186 337 187 338 [[package]] 339 + name = "async-tls" 340 + version = "0.13.0" 341 + source = "registry+https://github.com/rust-lang/crates.io-index" 342 + checksum = "b2ae3c9eba89d472a0e4fe1dea433df78fbbe63d2b764addaf2ba3a6bde89a5e" 343 + dependencies = [ 344 + "futures-core", 345 + "futures-io", 346 + "rustls 0.21.12", 347 + "rustls-pemfile", 348 + "webpki-roots", 349 + ] 350 + 351 + [[package]] 188 352 name = "async-trait" 189 353 version = "0.1.88" 190 354 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 192 356 dependencies = [ 193 357 "proc-macro2", 194 358 "quote", 195 - "syn 2.0.102", 359 + "syn 2.0.103", 360 + ] 361 + 362 + [[package]] 363 + name = "async-tungstenite" 364 + version = "0.29.1" 365 + source = "registry+https://github.com/rust-lang/crates.io-index" 366 + checksum = "ef0f7efedeac57d9b26170f72965ecfd31473ca52ca7a64e925b0b6f5f079886" 367 + dependencies = [ 368 + "async-std", 369 + "async-tls", 370 + "atomic-waker", 371 + "futures-core", 372 + "futures-io", 373 + "futures-task", 374 + "log", 375 + "pin-project-lite", 376 + "tungstenite", 377 + ] 378 + 379 + [[package]] 380 + name = "async_io_stream" 381 + version = "0.3.3" 382 + source = "registry+https://github.com/rust-lang/crates.io-index" 383 + checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" 384 + dependencies = [ 385 + "futures", 386 + "pharos", 387 + "rustc_version", 196 388 ] 197 389 198 390 [[package]] ··· 246 438 ] 247 439 248 440 [[package]] 441 + name = "base16ct" 442 + version = "0.2.0" 443 + source = "registry+https://github.com/rust-lang/crates.io-index" 444 + checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" 445 + 446 + [[package]] 249 447 name = "base64" 250 448 version = "0.21.7" 251 449 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 256 454 version = "0.22.1" 257 455 source = "registry+https://github.com/rust-lang/crates.io-index" 258 456 checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 457 + 458 + [[package]] 459 + name = "base64ct" 460 + version = "1.8.0" 461 + source = "registry+https://github.com/rust-lang/crates.io-index" 462 + checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" 463 + 464 + [[package]] 465 + name = "bincode" 466 + version = "1.3.3" 467 + source = "registry+https://github.com/rust-lang/crates.io-index" 468 + checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" 469 + dependencies = [ 470 + "serde", 471 + ] 259 472 260 473 [[package]] 261 474 name = "bitflags" ··· 282 495 ] 283 496 284 497 [[package]] 498 + name = "block-padding" 499 + version = "0.3.3" 500 + source = "registry+https://github.com/rust-lang/crates.io-index" 501 + checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" 502 + dependencies = [ 503 + "generic-array", 504 + ] 505 + 506 + [[package]] 285 507 name = "block2" 286 508 version = "0.5.1" 287 509 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 305 527 source = "registry+https://github.com/rust-lang/crates.io-index" 306 528 checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" 307 529 dependencies = [ 308 - "async-channel", 530 + "async-channel 2.3.1", 309 531 "async-task", 310 532 "futures-io", 311 533 "futures-lite", ··· 428 650 ] 429 651 430 652 [[package]] 653 + name = "cbc" 654 + version = "0.1.2" 655 + source = "registry+https://github.com/rust-lang/crates.io-index" 656 + checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" 657 + dependencies = [ 658 + "cipher", 659 + ] 660 + 661 + [[package]] 431 662 name = "cc" 432 - version = "1.2.26" 663 + version = "1.2.27" 433 664 source = "registry+https://github.com/rust-lang/crates.io-index" 434 - checksum = "956a5e21988b87f372569b66183b78babf23ebc2e744b733e4350a752c4dafac" 665 + checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" 435 666 dependencies = [ 436 667 "shlex", 437 668 ] 438 669 439 670 [[package]] 671 + name = "ccm" 672 + version = "0.5.0" 673 + source = "registry+https://github.com/rust-lang/crates.io-index" 674 + checksum = "9ae3c82e4355234767756212c570e29833699ab63e6ffd161887314cc5b43847" 675 + dependencies = [ 676 + "aead", 677 + "cipher", 678 + "ctr", 679 + "subtle", 680 + ] 681 + 682 + [[package]] 440 683 name = "cesu8" 441 684 version = "1.1.0" 442 685 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 491 734 ] 492 735 493 736 [[package]] 737 + name = "cipher" 738 + version = "0.4.4" 739 + source = "registry+https://github.com/rust-lang/crates.io-index" 740 + checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" 741 + dependencies = [ 742 + "crypto-common", 743 + "inout", 744 + ] 745 + 746 + [[package]] 494 747 name = "combine" 495 748 version = "4.6.7" 496 749 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 508 761 dependencies = [ 509 762 "crossbeam-utils", 510 763 ] 764 + 765 + [[package]] 766 + name = "const-oid" 767 + version = "0.9.6" 768 + source = "registry+https://github.com/rust-lang/crates.io-index" 769 + checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 511 770 512 771 [[package]] 513 772 name = "convert_case" ··· 575 834 ] 576 835 577 836 [[package]] 837 + name = "crc" 838 + version = "3.3.0" 839 + source = "registry+https://github.com/rust-lang/crates.io-index" 840 + checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" 841 + dependencies = [ 842 + "crc-catalog", 843 + ] 844 + 845 + [[package]] 846 + name = "crc-catalog" 847 + version = "2.4.0" 848 + source = "registry+https://github.com/rust-lang/crates.io-index" 849 + checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" 850 + 851 + [[package]] 578 852 name = "crc32fast" 579 853 version = "1.4.2" 580 854 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 599 873 checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 600 874 601 875 [[package]] 876 + name = "crypto-bigint" 877 + version = "0.5.5" 878 + source = "registry+https://github.com/rust-lang/crates.io-index" 879 + checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" 880 + dependencies = [ 881 + "generic-array", 882 + "rand_core 0.6.4", 883 + "subtle", 884 + "zeroize", 885 + ] 886 + 887 + [[package]] 602 888 name = "crypto-common" 603 889 version = "0.1.6" 604 890 source = "registry+https://github.com/rust-lang/crates.io-index" 605 891 checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 606 892 dependencies = [ 607 893 "generic-array", 894 + "rand_core 0.6.4", 608 895 "typenum", 609 896 ] 610 897 ··· 632 919 checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" 633 920 dependencies = [ 634 921 "quote", 635 - "syn 2.0.102", 922 + "syn 2.0.103", 636 923 ] 637 924 638 925 [[package]] ··· 642 929 checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" 643 930 dependencies = [ 644 931 "quote", 645 - "syn 2.0.102", 932 + "syn 2.0.103", 933 + ] 934 + 935 + [[package]] 936 + name = "ctr" 937 + version = "0.9.2" 938 + source = "registry+https://github.com/rust-lang/crates.io-index" 939 + checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" 940 + dependencies = [ 941 + "cipher", 942 + ] 943 + 944 + [[package]] 945 + name = "curve25519-dalek" 946 + version = "4.1.3" 947 + source = "registry+https://github.com/rust-lang/crates.io-index" 948 + checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" 949 + dependencies = [ 950 + "cfg-if", 951 + "cpufeatures", 952 + "curve25519-dalek-derive", 953 + "fiat-crypto", 954 + "rustc_version", 955 + "subtle", 956 + "zeroize", 957 + ] 958 + 959 + [[package]] 960 + name = "curve25519-dalek-derive" 961 + version = "0.1.1" 962 + source = "registry+https://github.com/rust-lang/crates.io-index" 963 + checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" 964 + dependencies = [ 965 + "proc-macro2", 966 + "quote", 967 + "syn 2.0.103", 646 968 ] 647 969 648 970 [[package]] ··· 666 988 "proc-macro2", 667 989 "quote", 668 990 "strsim", 669 - "syn 2.0.102", 991 + "syn 2.0.103", 670 992 ] 671 993 672 994 [[package]] ··· 677 999 dependencies = [ 678 1000 "darling_core", 679 1001 "quote", 680 - "syn 2.0.102", 1002 + "syn 2.0.103", 1003 + ] 1004 + 1005 + [[package]] 1006 + name = "data-encoding" 1007 + version = "2.9.0" 1008 + source = "registry+https://github.com/rust-lang/crates.io-index" 1009 + checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" 1010 + 1011 + [[package]] 1012 + name = "der" 1013 + version = "0.7.10" 1014 + source = "registry+https://github.com/rust-lang/crates.io-index" 1015 + checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" 1016 + dependencies = [ 1017 + "const-oid", 1018 + "pem-rfc7468", 1019 + "zeroize", 1020 + ] 1021 + 1022 + [[package]] 1023 + name = "der-parser" 1024 + version = "9.0.0" 1025 + source = "registry+https://github.com/rust-lang/crates.io-index" 1026 + checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" 1027 + dependencies = [ 1028 + "asn1-rs", 1029 + "displaydoc", 1030 + "nom", 1031 + "num-bigint", 1032 + "num-traits", 1033 + "rusticata-macros", 681 1034 ] 682 1035 683 1036 [[package]] ··· 700 1053 "proc-macro2", 701 1054 "quote", 702 1055 "rustc_version", 703 - "syn 2.0.102", 1056 + "syn 2.0.103", 1057 + ] 1058 + 1059 + [[package]] 1060 + name = "derive_more" 1061 + version = "2.0.1" 1062 + source = "registry+https://github.com/rust-lang/crates.io-index" 1063 + checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" 1064 + dependencies = [ 1065 + "derive_more-impl", 1066 + ] 1067 + 1068 + [[package]] 1069 + name = "derive_more-impl" 1070 + version = "2.0.1" 1071 + source = "registry+https://github.com/rust-lang/crates.io-index" 1072 + checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" 1073 + dependencies = [ 1074 + "proc-macro2", 1075 + "quote", 1076 + "syn 2.0.103", 1077 + "unicode-xid", 704 1078 ] 705 1079 706 1080 [[package]] ··· 710 1084 checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 711 1085 dependencies = [ 712 1086 "block-buffer", 1087 + "const-oid", 713 1088 "crypto-common", 1089 + "subtle", 714 1090 ] 715 1091 716 1092 [[package]] ··· 731 1107 "libc", 732 1108 "option-ext", 733 1109 "redox_users", 734 - "windows-sys 0.59.0", 1110 + "windows-sys 0.60.2", 735 1111 ] 736 1112 737 1113 [[package]] ··· 758 1134 dependencies = [ 759 1135 "proc-macro2", 760 1136 "quote", 761 - "syn 2.0.102", 1137 + "syn 2.0.103", 762 1138 ] 763 1139 764 1140 [[package]] ··· 781 1157 dependencies = [ 782 1158 "proc-macro2", 783 1159 "quote", 784 - "syn 2.0.102", 1160 + "syn 2.0.103", 785 1161 ] 786 1162 787 1163 [[package]] ··· 821 1197 checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" 822 1198 823 1199 [[package]] 1200 + name = "ecdsa" 1201 + version = "0.16.9" 1202 + source = "registry+https://github.com/rust-lang/crates.io-index" 1203 + checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" 1204 + dependencies = [ 1205 + "der", 1206 + "digest", 1207 + "elliptic-curve", 1208 + "rfc6979", 1209 + "signature", 1210 + "spki", 1211 + ] 1212 + 1213 + [[package]] 1214 + name = "elliptic-curve" 1215 + version = "0.13.8" 1216 + source = "registry+https://github.com/rust-lang/crates.io-index" 1217 + checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" 1218 + dependencies = [ 1219 + "base16ct", 1220 + "crypto-bigint", 1221 + "digest", 1222 + "ff", 1223 + "generic-array", 1224 + "group", 1225 + "hkdf", 1226 + "pem-rfc7468", 1227 + "pkcs8", 1228 + "rand_core 0.6.4", 1229 + "sec1", 1230 + "subtle", 1231 + "zeroize", 1232 + ] 1233 + 1234 + [[package]] 824 1235 name = "embed-resource" 825 1236 version = "3.0.3" 826 1237 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 864 1275 dependencies = [ 865 1276 "proc-macro2", 866 1277 "quote", 867 - "syn 2.0.102", 1278 + "syn 2.0.103", 868 1279 ] 869 1280 870 1281 [[package]] ··· 895 1306 896 1307 [[package]] 897 1308 name = "event-listener" 1309 + version = "2.5.3" 1310 + source = "registry+https://github.com/rust-lang/crates.io-index" 1311 + checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 1312 + 1313 + [[package]] 1314 + name = "event-listener" 898 1315 version = "5.4.0" 899 1316 source = "registry+https://github.com/rust-lang/crates.io-index" 900 1317 checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" ··· 910 1327 source = "registry+https://github.com/rust-lang/crates.io-index" 911 1328 checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" 912 1329 dependencies = [ 913 - "event-listener", 1330 + "event-listener 5.4.0", 914 1331 "pin-project-lite", 915 1332 ] 916 1333 ··· 930 1347 ] 931 1348 932 1349 [[package]] 1350 + name = "ff" 1351 + version = "0.13.1" 1352 + source = "registry+https://github.com/rust-lang/crates.io-index" 1353 + checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" 1354 + dependencies = [ 1355 + "rand_core 0.6.4", 1356 + "subtle", 1357 + ] 1358 + 1359 + [[package]] 1360 + name = "fiat-crypto" 1361 + version = "0.2.9" 1362 + source = "registry+https://github.com/rust-lang/crates.io-index" 1363 + checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" 1364 + 1365 + [[package]] 933 1366 name = "field-offset" 934 1367 version = "0.3.6" 935 1368 source = "registry+https://github.com/rust-lang/crates.io-index" 936 1369 checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" 937 1370 dependencies = [ 938 - "memoffset", 1371 + "memoffset 0.9.1", 939 1372 "rustc_version", 940 1373 ] 941 1374 ··· 973 1406 dependencies = [ 974 1407 "proc-macro2", 975 1408 "quote", 976 - "syn 2.0.102", 1409 + "syn 2.0.103", 977 1410 ] 978 1411 979 1412 [[package]] ··· 1070 1503 dependencies = [ 1071 1504 "proc-macro2", 1072 1505 "quote", 1073 - "syn 2.0.102", 1506 + "syn 2.0.103", 1074 1507 ] 1075 1508 1076 1509 [[package]] ··· 1086 1519 checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 1087 1520 1088 1521 [[package]] 1522 + name = "futures-timer" 1523 + version = "3.0.3" 1524 + source = "registry+https://github.com/rust-lang/crates.io-index" 1525 + checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" 1526 + dependencies = [ 1527 + "gloo-timers 0.2.6", 1528 + "send_wrapper 0.4.0", 1529 + ] 1530 + 1531 + [[package]] 1089 1532 name = "futures-util" 1090 1533 version = "0.3.31" 1091 1534 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1219 1662 dependencies = [ 1220 1663 "typenum", 1221 1664 "version_check", 1665 + "zeroize", 1222 1666 ] 1223 1667 1224 1668 [[package]] ··· 1240 1684 dependencies = [ 1241 1685 "cfg-if", 1242 1686 "libc", 1243 - "wasi 0.11.0+wasi-snapshot-preview1", 1687 + "wasi 0.11.1+wasi-snapshot-preview1", 1244 1688 ] 1245 1689 1246 1690 [[package]] ··· 1256 1700 ] 1257 1701 1258 1702 [[package]] 1703 + name = "ghash" 1704 + version = "0.5.1" 1705 + source = "registry+https://github.com/rust-lang/crates.io-index" 1706 + checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" 1707 + dependencies = [ 1708 + "opaque-debug", 1709 + "polyval", 1710 + ] 1711 + 1712 + [[package]] 1259 1713 name = "gimli" 1260 1714 version = "0.31.1" 1261 1715 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1327 1781 "proc-macro-error", 1328 1782 "proc-macro2", 1329 1783 "quote", 1330 - "syn 2.0.102", 1784 + "syn 2.0.103", 1331 1785 ] 1332 1786 1333 1787 [[package]] ··· 1347 1801 checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" 1348 1802 1349 1803 [[package]] 1804 + name = "gloo-timers" 1805 + version = "0.2.6" 1806 + source = "registry+https://github.com/rust-lang/crates.io-index" 1807 + checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" 1808 + dependencies = [ 1809 + "futures-channel", 1810 + "futures-core", 1811 + "js-sys", 1812 + "wasm-bindgen", 1813 + ] 1814 + 1815 + [[package]] 1816 + name = "gloo-timers" 1817 + version = "0.3.0" 1818 + source = "registry+https://github.com/rust-lang/crates.io-index" 1819 + checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" 1820 + dependencies = [ 1821 + "futures-channel", 1822 + "futures-core", 1823 + "js-sys", 1824 + "wasm-bindgen", 1825 + ] 1826 + 1827 + [[package]] 1350 1828 name = "gobject-sys" 1351 1829 version = "0.18.0" 1352 1830 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1358 1836 ] 1359 1837 1360 1838 [[package]] 1839 + name = "group" 1840 + version = "0.13.0" 1841 + source = "registry+https://github.com/rust-lang/crates.io-index" 1842 + checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" 1843 + dependencies = [ 1844 + "ff", 1845 + "rand_core 0.6.4", 1846 + "subtle", 1847 + ] 1848 + 1849 + [[package]] 1361 1850 name = "gtk" 1362 1851 version = "0.18.2" 1363 1852 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1406 1895 "proc-macro-error", 1407 1896 "proc-macro2", 1408 1897 "quote", 1409 - "syn 2.0.102", 1898 + "syn 2.0.103", 1410 1899 ] 1411 1900 1412 1901 [[package]] ··· 1435 1924 1436 1925 [[package]] 1437 1926 name = "hermit-abi" 1438 - version = "0.5.1" 1927 + version = "0.5.2" 1439 1928 source = "registry+https://github.com/rust-lang/crates.io-index" 1440 - checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08" 1929 + checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" 1441 1930 1442 1931 [[package]] 1443 1932 name = "hex" 1444 1933 version = "0.4.3" 1445 1934 source = "registry+https://github.com/rust-lang/crates.io-index" 1446 1935 checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1936 + 1937 + [[package]] 1938 + name = "hkdf" 1939 + version = "0.12.4" 1940 + source = "registry+https://github.com/rust-lang/crates.io-index" 1941 + checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" 1942 + dependencies = [ 1943 + "hmac", 1944 + ] 1945 + 1946 + [[package]] 1947 + name = "hmac" 1948 + version = "0.12.1" 1949 + source = "registry+https://github.com/rust-lang/crates.io-index" 1950 + checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1951 + dependencies = [ 1952 + "digest", 1953 + ] 1447 1954 1448 1955 [[package]] 1449 1956 name = "html5ever" ··· 1721 2228 ] 1722 2229 1723 2230 [[package]] 2231 + name = "inout" 2232 + version = "0.1.4" 2233 + source = "registry+https://github.com/rust-lang/crates.io-index" 2234 + checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" 2235 + dependencies = [ 2236 + "block-padding", 2237 + "generic-array", 2238 + ] 2239 + 2240 + [[package]] 2241 + name = "interceptor" 2242 + version = "0.14.0" 2243 + source = "registry+https://github.com/rust-lang/crates.io-index" 2244 + checksum = "1ac0781c825d602095113772e389ef0607afcb869ae0e68a590d8e0799cdcef8" 2245 + dependencies = [ 2246 + "async-trait", 2247 + "bytes", 2248 + "log", 2249 + "portable-atomic", 2250 + "rand 0.8.5", 2251 + "rtcp", 2252 + "rtp", 2253 + "thiserror 1.0.69", 2254 + "tokio", 2255 + "waitgroup", 2256 + "webrtc-srtp", 2257 + "webrtc-util", 2258 + ] 2259 + 2260 + [[package]] 1724 2261 name = "ipnet" 1725 2262 version = "2.11.0" 1726 2263 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1869 2406 ] 1870 2407 1871 2408 [[package]] 2409 + name = "kv-log-macro" 2410 + version = "1.0.7" 2411 + source = "registry+https://github.com/rust-lang/crates.io-index" 2412 + checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" 2413 + dependencies = [ 2414 + "log", 2415 + ] 2416 + 2417 + [[package]] 1872 2418 name = "lazy_static" 1873 2419 version = "1.5.0" 1874 2420 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1900 2446 1901 2447 [[package]] 1902 2448 name = "libc" 1903 - version = "0.2.172" 2449 + version = "0.2.173" 1904 2450 source = "registry+https://github.com/rust-lang/crates.io-index" 1905 - checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" 2451 + checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" 1906 2452 1907 2453 [[package]] 1908 2454 name = "libloading" ··· 1951 2497 version = "0.4.27" 1952 2498 source = "registry+https://github.com/rust-lang/crates.io-index" 1953 2499 checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" 2500 + dependencies = [ 2501 + "value-bag", 2502 + ] 1954 2503 1955 2504 [[package]] 1956 2505 name = "mac" ··· 1964 2513 dependencies = [ 1965 2514 "chrono", 1966 2515 "futures", 2516 + "matchbox_socket", 1967 2517 "rand 0.9.1", 1968 2518 "rand_chacha 0.9.0", 2519 + "rmp-serde", 1969 2520 "serde", 1970 2521 "serde_json", 2522 + "specta", 2523 + "specta-typescript", 1971 2524 "tauri", 1972 2525 "tauri-build", 1973 2526 "tauri-plugin-geolocation", 1974 2527 "tauri-plugin-opener", 2528 + "tauri-plugin-store", 2529 + "tauri-specta", 1975 2530 "tokio", 2531 + "uuid", 1976 2532 ] 1977 2533 1978 2534 [[package]] ··· 1990 2546 ] 1991 2547 1992 2548 [[package]] 2549 + name = "matchbox_protocol" 2550 + version = "0.12.0" 2551 + source = "registry+https://github.com/rust-lang/crates.io-index" 2552 + checksum = "f0cfe43dd6af96da1ea044838f59b8d7438971f85376be464ead11bbd7a01c27" 2553 + dependencies = [ 2554 + "cfg-if", 2555 + "derive_more 2.0.1", 2556 + "serde", 2557 + "uuid", 2558 + ] 2559 + 2560 + [[package]] 2561 + name = "matchbox_socket" 2562 + version = "0.12.0" 2563 + source = "registry+https://github.com/rust-lang/crates.io-index" 2564 + checksum = "9c2bc39cd3e655243143ddb40faa4c30c0c415347f6a0985e378806a24593e9e" 2565 + dependencies = [ 2566 + "async-compat", 2567 + "async-trait", 2568 + "async-tungstenite", 2569 + "bytes", 2570 + "cfg-if", 2571 + "derive_more 2.0.1", 2572 + "futures", 2573 + "futures-channel", 2574 + "futures-timer", 2575 + "futures-util", 2576 + "js-sys", 2577 + "log", 2578 + "matchbox_protocol", 2579 + "once_cell", 2580 + "serde", 2581 + "serde-wasm-bindgen", 2582 + "serde_json", 2583 + "thiserror 2.0.12", 2584 + "tokio-util", 2585 + "wasm-bindgen", 2586 + "wasm-bindgen-futures", 2587 + "web-sys", 2588 + "webrtc", 2589 + "ws_stream_wasm", 2590 + ] 2591 + 2592 + [[package]] 1993 2593 name = "matches" 1994 2594 version = "0.1.10" 1995 2595 source = "registry+https://github.com/rust-lang/crates.io-index" 1996 2596 checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" 1997 2597 1998 2598 [[package]] 2599 + name = "md-5" 2600 + version = "0.10.6" 2601 + source = "registry+https://github.com/rust-lang/crates.io-index" 2602 + checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" 2603 + dependencies = [ 2604 + "cfg-if", 2605 + "digest", 2606 + ] 2607 + 2608 + [[package]] 1999 2609 name = "memchr" 2000 - version = "2.7.4" 2610 + version = "2.7.5" 2611 + source = "registry+https://github.com/rust-lang/crates.io-index" 2612 + checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" 2613 + 2614 + [[package]] 2615 + name = "memoffset" 2616 + version = "0.7.1" 2001 2617 source = "registry+https://github.com/rust-lang/crates.io-index" 2002 - checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 2618 + checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" 2619 + dependencies = [ 2620 + "autocfg", 2621 + ] 2003 2622 2004 2623 [[package]] 2005 2624 name = "memoffset" ··· 2017 2636 checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 2018 2637 2019 2638 [[package]] 2639 + name = "minimal-lexical" 2640 + version = "0.2.1" 2641 + source = "registry+https://github.com/rust-lang/crates.io-index" 2642 + checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 2643 + 2644 + [[package]] 2020 2645 name = "miniz_oxide" 2021 2646 version = "0.8.9" 2022 2647 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2033 2658 checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" 2034 2659 dependencies = [ 2035 2660 "libc", 2036 - "wasi 0.11.0+wasi-snapshot-preview1", 2661 + "wasi 0.11.1+wasi-snapshot-preview1", 2037 2662 "windows-sys 0.59.0", 2038 2663 ] 2039 2664 ··· 2096 2721 2097 2722 [[package]] 2098 2723 name = "nix" 2724 + version = "0.26.4" 2725 + source = "registry+https://github.com/rust-lang/crates.io-index" 2726 + checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" 2727 + dependencies = [ 2728 + "bitflags 1.3.2", 2729 + "cfg-if", 2730 + "libc", 2731 + "memoffset 0.7.1", 2732 + "pin-utils", 2733 + ] 2734 + 2735 + [[package]] 2736 + name = "nix" 2099 2737 version = "0.30.1" 2100 2738 source = "registry+https://github.com/rust-lang/crates.io-index" 2101 2739 checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" ··· 2104 2742 "cfg-if", 2105 2743 "cfg_aliases", 2106 2744 "libc", 2107 - "memoffset", 2745 + "memoffset 0.9.1", 2108 2746 ] 2109 2747 2110 2748 [[package]] ··· 2114 2752 checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" 2115 2753 2116 2754 [[package]] 2755 + name = "nom" 2756 + version = "7.1.3" 2757 + source = "registry+https://github.com/rust-lang/crates.io-index" 2758 + checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 2759 + dependencies = [ 2760 + "memchr", 2761 + "minimal-lexical", 2762 + ] 2763 + 2764 + [[package]] 2765 + name = "num-bigint" 2766 + version = "0.4.6" 2767 + source = "registry+https://github.com/rust-lang/crates.io-index" 2768 + checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 2769 + dependencies = [ 2770 + "num-integer", 2771 + "num-traits", 2772 + ] 2773 + 2774 + [[package]] 2117 2775 name = "num-conv" 2118 2776 version = "0.1.0" 2119 2777 source = "registry+https://github.com/rust-lang/crates.io-index" 2120 2778 checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 2121 2779 2122 2780 [[package]] 2781 + name = "num-integer" 2782 + version = "0.1.46" 2783 + source = "registry+https://github.com/rust-lang/crates.io-index" 2784 + checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 2785 + dependencies = [ 2786 + "num-traits", 2787 + ] 2788 + 2789 + [[package]] 2123 2790 name = "num-traits" 2124 2791 version = "0.2.19" 2125 2792 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2146 2813 "proc-macro-crate 3.3.0", 2147 2814 "proc-macro2", 2148 2815 "quote", 2149 - "syn 2.0.102", 2816 + "syn 2.0.103", 2150 2817 ] 2151 2818 2152 2819 [[package]] ··· 2373 3040 ] 2374 3041 2375 3042 [[package]] 3043 + name = "oid-registry" 3044 + version = "0.7.1" 3045 + source = "registry+https://github.com/rust-lang/crates.io-index" 3046 + checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" 3047 + dependencies = [ 3048 + "asn1-rs", 3049 + ] 3050 + 3051 + [[package]] 2376 3052 name = "once_cell" 2377 3053 version = "1.21.3" 2378 3054 source = "registry+https://github.com/rust-lang/crates.io-index" 2379 3055 checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 3056 + 3057 + [[package]] 3058 + name = "opaque-debug" 3059 + version = "0.3.1" 3060 + source = "registry+https://github.com/rust-lang/crates.io-index" 3061 + checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" 2380 3062 2381 3063 [[package]] 2382 3064 name = "open" ··· 2407 3089 ] 2408 3090 2409 3091 [[package]] 3092 + name = "p256" 3093 + version = "0.13.2" 3094 + source = "registry+https://github.com/rust-lang/crates.io-index" 3095 + checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" 3096 + dependencies = [ 3097 + "ecdsa", 3098 + "elliptic-curve", 3099 + "primeorder", 3100 + "sha2", 3101 + ] 3102 + 3103 + [[package]] 3104 + name = "p384" 3105 + version = "0.13.1" 3106 + source = "registry+https://github.com/rust-lang/crates.io-index" 3107 + checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" 3108 + dependencies = [ 3109 + "ecdsa", 3110 + "elliptic-curve", 3111 + "primeorder", 3112 + "sha2", 3113 + ] 3114 + 3115 + [[package]] 2410 3116 name = "pango" 2411 3117 version = "0.18.3" 2412 3118 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2461 3167 ] 2462 3168 2463 3169 [[package]] 3170 + name = "paste" 3171 + version = "1.0.15" 3172 + source = "registry+https://github.com/rust-lang/crates.io-index" 3173 + checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 3174 + 3175 + [[package]] 2464 3176 name = "pathdiff" 2465 3177 version = "0.2.3" 2466 3178 source = "registry+https://github.com/rust-lang/crates.io-index" 2467 3179 checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" 2468 3180 2469 3181 [[package]] 3182 + name = "pem" 3183 + version = "3.0.5" 3184 + source = "registry+https://github.com/rust-lang/crates.io-index" 3185 + checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" 3186 + dependencies = [ 3187 + "base64 0.22.1", 3188 + "serde", 3189 + ] 3190 + 3191 + [[package]] 3192 + name = "pem-rfc7468" 3193 + version = "0.7.0" 3194 + source = "registry+https://github.com/rust-lang/crates.io-index" 3195 + checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" 3196 + dependencies = [ 3197 + "base64ct", 3198 + ] 3199 + 3200 + [[package]] 2470 3201 name = "percent-encoding" 2471 3202 version = "2.3.1" 2472 3203 source = "registry+https://github.com/rust-lang/crates.io-index" 2473 3204 checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 3205 + 3206 + [[package]] 3207 + name = "pharos" 3208 + version = "0.5.3" 3209 + source = "registry+https://github.com/rust-lang/crates.io-index" 3210 + checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" 3211 + dependencies = [ 3212 + "futures", 3213 + "rustc_version", 3214 + ] 2474 3215 2475 3216 [[package]] 2476 3217 name = "phf" ··· 2576 3317 "phf_shared 0.11.3", 2577 3318 "proc-macro2", 2578 3319 "quote", 2579 - "syn 2.0.102", 3320 + "syn 2.0.103", 2580 3321 ] 2581 3322 2582 3323 [[package]] ··· 2630 3371 ] 2631 3372 2632 3373 [[package]] 3374 + name = "pkcs8" 3375 + version = "0.10.2" 3376 + source = "registry+https://github.com/rust-lang/crates.io-index" 3377 + checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" 3378 + dependencies = [ 3379 + "der", 3380 + "spki", 3381 + ] 3382 + 3383 + [[package]] 2633 3384 name = "pkg-config" 2634 3385 version = "0.3.32" 2635 3386 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2637 3388 2638 3389 [[package]] 2639 3390 name = "plist" 2640 - version = "1.7.1" 3391 + version = "1.7.2" 2641 3392 source = "registry+https://github.com/rust-lang/crates.io-index" 2642 - checksum = "eac26e981c03a6e53e0aee43c113e3202f5581d5360dae7bd2c70e800dd0451d" 3393 + checksum = "3d77244ce2d584cd84f6a15f86195b8c9b2a0dfbfd817c09e0464244091a58ed" 2643 3394 dependencies = [ 2644 3395 "base64 0.22.1", 2645 3396 "indexmap 2.9.0", ··· 2675 3426 "tracing", 2676 3427 "windows-sys 0.59.0", 2677 3428 ] 3429 + 3430 + [[package]] 3431 + name = "polyval" 3432 + version = "0.6.2" 3433 + source = "registry+https://github.com/rust-lang/crates.io-index" 3434 + checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" 3435 + dependencies = [ 3436 + "cfg-if", 3437 + "cpufeatures", 3438 + "opaque-debug", 3439 + "universal-hash", 3440 + ] 3441 + 3442 + [[package]] 3443 + name = "portable-atomic" 3444 + version = "1.11.1" 3445 + source = "registry+https://github.com/rust-lang/crates.io-index" 3446 + checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" 2678 3447 2679 3448 [[package]] 2680 3449 name = "potential_utf" ··· 2707 3476 checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 2708 3477 2709 3478 [[package]] 3479 + name = "primeorder" 3480 + version = "0.13.6" 3481 + source = "registry+https://github.com/rust-lang/crates.io-index" 3482 + checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" 3483 + dependencies = [ 3484 + "elliptic-curve", 3485 + ] 3486 + 3487 + [[package]] 2710 3488 name = "proc-macro-crate" 2711 3489 version = "1.3.1" 2712 3490 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2775 3553 2776 3554 [[package]] 2777 3555 name = "quick-xml" 2778 - version = "0.32.0" 3556 + version = "0.37.5" 2779 3557 source = "registry+https://github.com/rust-lang/crates.io-index" 2780 - checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" 3558 + checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" 2781 3559 dependencies = [ 2782 3560 "memchr", 2783 3561 ] ··· 2914 3692 checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" 2915 3693 2916 3694 [[package]] 3695 + name = "rcgen" 3696 + version = "0.13.2" 3697 + source = "registry+https://github.com/rust-lang/crates.io-index" 3698 + checksum = "75e669e5202259b5314d1ea5397316ad400819437857b90861765f24c4cf80a2" 3699 + dependencies = [ 3700 + "pem", 3701 + "ring", 3702 + "rustls-pki-types", 3703 + "time", 3704 + "x509-parser", 3705 + "yasna", 3706 + ] 3707 + 3708 + [[package]] 2917 3709 name = "redox_syscall" 2918 - version = "0.5.12" 3710 + version = "0.5.13" 2919 3711 source = "registry+https://github.com/rust-lang/crates.io-index" 2920 - checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" 3712 + checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" 2921 3713 dependencies = [ 2922 3714 "bitflags 2.9.1", 2923 3715 ] ··· 2964 3756 2965 3757 [[package]] 2966 3758 name = "reqwest" 2967 - version = "0.12.19" 3759 + version = "0.12.20" 2968 3760 source = "registry+https://github.com/rust-lang/crates.io-index" 2969 - checksum = "a2f8e5513d63f2e5b386eb5106dc67eaf3f84e95258e210489136b8b92ad6119" 3761 + checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" 2970 3762 dependencies = [ 2971 3763 "base64 0.22.1", 2972 3764 "bytes", ··· 2977 3769 "http-body-util", 2978 3770 "hyper", 2979 3771 "hyper-util", 2980 - "ipnet", 2981 3772 "js-sys", 2982 3773 "log", 2983 - "mime", 2984 - "once_cell", 2985 3774 "percent-encoding", 2986 3775 "pin-project-lite", 2987 3776 "serde", ··· 3001 3790 ] 3002 3791 3003 3792 [[package]] 3793 + name = "rfc6979" 3794 + version = "0.4.0" 3795 + source = "registry+https://github.com/rust-lang/crates.io-index" 3796 + checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" 3797 + dependencies = [ 3798 + "hmac", 3799 + "subtle", 3800 + ] 3801 + 3802 + [[package]] 3803 + name = "ring" 3804 + version = "0.17.14" 3805 + source = "registry+https://github.com/rust-lang/crates.io-index" 3806 + checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" 3807 + dependencies = [ 3808 + "cc", 3809 + "cfg-if", 3810 + "getrandom 0.2.16", 3811 + "libc", 3812 + "untrusted", 3813 + "windows-sys 0.52.0", 3814 + ] 3815 + 3816 + [[package]] 3817 + name = "rmp" 3818 + version = "0.8.14" 3819 + source = "registry+https://github.com/rust-lang/crates.io-index" 3820 + checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4" 3821 + dependencies = [ 3822 + "byteorder", 3823 + "num-traits", 3824 + "paste", 3825 + ] 3826 + 3827 + [[package]] 3828 + name = "rmp-serde" 3829 + version = "1.3.0" 3830 + source = "registry+https://github.com/rust-lang/crates.io-index" 3831 + checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db" 3832 + dependencies = [ 3833 + "byteorder", 3834 + "rmp", 3835 + "serde", 3836 + ] 3837 + 3838 + [[package]] 3839 + name = "rtcp" 3840 + version = "0.13.0" 3841 + source = "registry+https://github.com/rust-lang/crates.io-index" 3842 + checksum = "e9689528bf3a9eb311fd938d05516dd546412f9ce4fffc8acfc1db27cc3dbf72" 3843 + dependencies = [ 3844 + "bytes", 3845 + "thiserror 1.0.69", 3846 + "webrtc-util", 3847 + ] 3848 + 3849 + [[package]] 3850 + name = "rtp" 3851 + version = "0.13.0" 3852 + source = "registry+https://github.com/rust-lang/crates.io-index" 3853 + checksum = "c54733451a67d76caf9caa07a7a2cec6871ea9dda92a7847f98063d459200f4b" 3854 + dependencies = [ 3855 + "bytes", 3856 + "memchr", 3857 + "portable-atomic", 3858 + "rand 0.8.5", 3859 + "serde", 3860 + "thiserror 1.0.69", 3861 + "webrtc-util", 3862 + ] 3863 + 3864 + [[package]] 3004 3865 name = "rustc-demangle" 3005 3866 version = "0.1.25" 3006 3867 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3016 3877 ] 3017 3878 3018 3879 [[package]] 3880 + name = "rusticata-macros" 3881 + version = "4.1.0" 3882 + source = "registry+https://github.com/rust-lang/crates.io-index" 3883 + checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" 3884 + dependencies = [ 3885 + "nom", 3886 + ] 3887 + 3888 + [[package]] 3019 3889 name = "rustix" 3020 3890 version = "1.0.7" 3021 3891 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3029 3899 ] 3030 3900 3031 3901 [[package]] 3902 + name = "rustls" 3903 + version = "0.21.12" 3904 + source = "registry+https://github.com/rust-lang/crates.io-index" 3905 + checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" 3906 + dependencies = [ 3907 + "log", 3908 + "ring", 3909 + "rustls-webpki 0.101.7", 3910 + "sct", 3911 + ] 3912 + 3913 + [[package]] 3914 + name = "rustls" 3915 + version = "0.23.27" 3916 + source = "registry+https://github.com/rust-lang/crates.io-index" 3917 + checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" 3918 + dependencies = [ 3919 + "once_cell", 3920 + "ring", 3921 + "rustls-pki-types", 3922 + "rustls-webpki 0.103.3", 3923 + "subtle", 3924 + "zeroize", 3925 + ] 3926 + 3927 + [[package]] 3928 + name = "rustls-pemfile" 3929 + version = "1.0.4" 3930 + source = "registry+https://github.com/rust-lang/crates.io-index" 3931 + checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" 3932 + dependencies = [ 3933 + "base64 0.21.7", 3934 + ] 3935 + 3936 + [[package]] 3937 + name = "rustls-pki-types" 3938 + version = "1.12.0" 3939 + source = "registry+https://github.com/rust-lang/crates.io-index" 3940 + checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" 3941 + dependencies = [ 3942 + "zeroize", 3943 + ] 3944 + 3945 + [[package]] 3946 + name = "rustls-webpki" 3947 + version = "0.101.7" 3948 + source = "registry+https://github.com/rust-lang/crates.io-index" 3949 + checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" 3950 + dependencies = [ 3951 + "ring", 3952 + "untrusted", 3953 + ] 3954 + 3955 + [[package]] 3956 + name = "rustls-webpki" 3957 + version = "0.103.3" 3958 + source = "registry+https://github.com/rust-lang/crates.io-index" 3959 + checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" 3960 + dependencies = [ 3961 + "ring", 3962 + "rustls-pki-types", 3963 + "untrusted", 3964 + ] 3965 + 3966 + [[package]] 3032 3967 name = "rustversion" 3033 3968 version = "1.0.21" 3034 3969 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3073 4008 "proc-macro2", 3074 4009 "quote", 3075 4010 "serde_derive_internals", 3076 - "syn 2.0.102", 4011 + "syn 2.0.103", 3077 4012 ] 3078 4013 3079 4014 [[package]] ··· 3083 4018 checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 3084 4019 3085 4020 [[package]] 4021 + name = "sct" 4022 + version = "0.7.1" 4023 + source = "registry+https://github.com/rust-lang/crates.io-index" 4024 + checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" 4025 + dependencies = [ 4026 + "ring", 4027 + "untrusted", 4028 + ] 4029 + 4030 + [[package]] 4031 + name = "sdp" 4032 + version = "0.8.0" 4033 + source = "registry+https://github.com/rust-lang/crates.io-index" 4034 + checksum = "4cd277015eada44a0bb810a4b84d3bf6e810573fa62fb442f457edf6a1087a69" 4035 + dependencies = [ 4036 + "rand 0.8.5", 4037 + "substring", 4038 + "thiserror 1.0.69", 4039 + "url", 4040 + ] 4041 + 4042 + [[package]] 4043 + name = "sec1" 4044 + version = "0.7.3" 4045 + source = "registry+https://github.com/rust-lang/crates.io-index" 4046 + checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" 4047 + dependencies = [ 4048 + "base16ct", 4049 + "der", 4050 + "generic-array", 4051 + "pkcs8", 4052 + "subtle", 4053 + "zeroize", 4054 + ] 4055 + 4056 + [[package]] 3086 4057 name = "selectors" 3087 4058 version = "0.22.0" 3088 4059 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3090 4061 dependencies = [ 3091 4062 "bitflags 1.3.2", 3092 4063 "cssparser", 3093 - "derive_more", 4064 + "derive_more 0.99.20", 3094 4065 "fxhash", 3095 4066 "log", 3096 4067 "matches", ··· 3112 4083 ] 3113 4084 3114 4085 [[package]] 4086 + name = "send_wrapper" 4087 + version = "0.4.0" 4088 + source = "registry+https://github.com/rust-lang/crates.io-index" 4089 + checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" 4090 + 4091 + [[package]] 4092 + name = "send_wrapper" 4093 + version = "0.6.0" 4094 + source = "registry+https://github.com/rust-lang/crates.io-index" 4095 + checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" 4096 + 4097 + [[package]] 3115 4098 name = "serde" 3116 4099 version = "1.0.219" 3117 4100 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3132 4115 ] 3133 4116 3134 4117 [[package]] 4118 + name = "serde-wasm-bindgen" 4119 + version = "0.6.5" 4120 + source = "registry+https://github.com/rust-lang/crates.io-index" 4121 + checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" 4122 + dependencies = [ 4123 + "js-sys", 4124 + "serde", 4125 + "wasm-bindgen", 4126 + ] 4127 + 4128 + [[package]] 3135 4129 name = "serde_derive" 3136 4130 version = "1.0.219" 3137 4131 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3139 4133 dependencies = [ 3140 4134 "proc-macro2", 3141 4135 "quote", 3142 - "syn 2.0.102", 4136 + "syn 2.0.103", 3143 4137 ] 3144 4138 3145 4139 [[package]] ··· 3150 4144 dependencies = [ 3151 4145 "proc-macro2", 3152 4146 "quote", 3153 - "syn 2.0.102", 4147 + "syn 2.0.103", 3154 4148 ] 3155 4149 3156 4150 [[package]] ··· 3173 4167 dependencies = [ 3174 4168 "proc-macro2", 3175 4169 "quote", 3176 - "syn 2.0.102", 4170 + "syn 2.0.103", 3177 4171 ] 3178 4172 3179 4173 [[package]] ··· 3224 4218 "darling", 3225 4219 "proc-macro2", 3226 4220 "quote", 3227 - "syn 2.0.102", 4221 + "syn 2.0.103", 3228 4222 ] 3229 4223 3230 4224 [[package]] ··· 3260 4254 ] 3261 4255 3262 4256 [[package]] 4257 + name = "sha1" 4258 + version = "0.10.6" 4259 + source = "registry+https://github.com/rust-lang/crates.io-index" 4260 + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 4261 + dependencies = [ 4262 + "cfg-if", 4263 + "cpufeatures", 4264 + "digest", 4265 + ] 4266 + 4267 + [[package]] 3263 4268 name = "sha2" 3264 4269 version = "0.10.9" 3265 4270 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3286 4291 ] 3287 4292 3288 4293 [[package]] 4294 + name = "signature" 4295 + version = "2.2.0" 4296 + source = "registry+https://github.com/rust-lang/crates.io-index" 4297 + checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" 4298 + dependencies = [ 4299 + "digest", 4300 + "rand_core 0.6.4", 4301 + ] 4302 + 4303 + [[package]] 3289 4304 name = "simd-adler32" 3290 4305 version = "0.3.7" 3291 4306 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3319 4334 checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 3320 4335 3321 4336 [[package]] 4337 + name = "smol_str" 4338 + version = "0.2.2" 4339 + source = "registry+https://github.com/rust-lang/crates.io-index" 4340 + checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" 4341 + dependencies = [ 4342 + "serde", 4343 + ] 4344 + 4345 + [[package]] 3322 4346 name = "socket2" 3323 4347 version = "0.5.10" 3324 4348 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3377 4401 ] 3378 4402 3379 4403 [[package]] 4404 + name = "specta" 4405 + version = "2.0.0-rc.22" 4406 + source = "registry+https://github.com/rust-lang/crates.io-index" 4407 + checksum = "ab7f01e9310a820edd31c80fde3cae445295adde21a3f9416517d7d65015b971" 4408 + dependencies = [ 4409 + "chrono", 4410 + "paste", 4411 + "specta-macros", 4412 + "thiserror 1.0.69", 4413 + "uuid", 4414 + ] 4415 + 4416 + [[package]] 4417 + name = "specta-macros" 4418 + version = "2.0.0-rc.18" 4419 + source = "registry+https://github.com/rust-lang/crates.io-index" 4420 + checksum = "c0074b9e30ed84c6924eb63ad8d2fe71cdc82628525d84b1fcb1f2fd40676517" 4421 + dependencies = [ 4422 + "Inflector", 4423 + "proc-macro2", 4424 + "quote", 4425 + "syn 2.0.103", 4426 + ] 4427 + 4428 + [[package]] 4429 + name = "specta-serde" 4430 + version = "0.0.9" 4431 + source = "registry+https://github.com/rust-lang/crates.io-index" 4432 + checksum = "77216504061374659e7245eac53d30c7b3e5fe64b88da97c753e7184b0781e63" 4433 + dependencies = [ 4434 + "specta", 4435 + "thiserror 1.0.69", 4436 + ] 4437 + 4438 + [[package]] 4439 + name = "specta-typescript" 4440 + version = "0.0.9" 4441 + source = "registry+https://github.com/rust-lang/crates.io-index" 4442 + checksum = "3220a0c365e51e248ac98eab5a6a32f544ff6f961906f09d3ee10903a4f52b2d" 4443 + dependencies = [ 4444 + "specta", 4445 + "specta-serde", 4446 + "thiserror 1.0.69", 4447 + ] 4448 + 4449 + [[package]] 4450 + name = "spki" 4451 + version = "0.7.3" 4452 + source = "registry+https://github.com/rust-lang/crates.io-index" 4453 + checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" 4454 + dependencies = [ 4455 + "base64ct", 4456 + "der", 4457 + ] 4458 + 4459 + [[package]] 3380 4460 name = "stable_deref_trait" 3381 4461 version = "1.2.0" 3382 4462 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3420 4500 checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 3421 4501 3422 4502 [[package]] 4503 + name = "stun" 4504 + version = "0.8.0" 4505 + source = "registry+https://github.com/rust-lang/crates.io-index" 4506 + checksum = "7dbc2bab375524093c143dc362a03fb6a1fb79e938391cdb21665688f88a088a" 4507 + dependencies = [ 4508 + "base64 0.22.1", 4509 + "crc", 4510 + "lazy_static", 4511 + "md-5", 4512 + "rand 0.8.5", 4513 + "ring", 4514 + "subtle", 4515 + "thiserror 1.0.69", 4516 + "tokio", 4517 + "url", 4518 + "webrtc-util", 4519 + ] 4520 + 4521 + [[package]] 4522 + name = "substring" 4523 + version = "1.4.5" 4524 + source = "registry+https://github.com/rust-lang/crates.io-index" 4525 + checksum = "42ee6433ecef213b2e72f587ef64a2f5943e7cd16fbd82dbe8bc07486c534c86" 4526 + dependencies = [ 4527 + "autocfg", 4528 + ] 4529 + 4530 + [[package]] 4531 + name = "subtle" 4532 + version = "2.6.1" 4533 + source = "registry+https://github.com/rust-lang/crates.io-index" 4534 + checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 4535 + 4536 + [[package]] 3423 4537 name = "swift-rs" 3424 4538 version = "1.0.7" 3425 4539 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3443 4557 3444 4558 [[package]] 3445 4559 name = "syn" 3446 - version = "2.0.102" 4560 + version = "2.0.103" 3447 4561 source = "registry+https://github.com/rust-lang/crates.io-index" 3448 - checksum = "f6397daf94fa90f058bd0fd88429dd9e5738999cca8d701813c80723add80462" 4562 + checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" 3449 4563 dependencies = [ 3450 4564 "proc-macro2", 3451 4565 "quote", ··· 3469 4583 dependencies = [ 3470 4584 "proc-macro2", 3471 4585 "quote", 3472 - "syn 2.0.102", 4586 + "syn 2.0.103", 3473 4587 ] 3474 4588 3475 4589 [[package]] ··· 3532 4646 dependencies = [ 3533 4647 "proc-macro2", 3534 4648 "quote", 3535 - "syn 2.0.102", 4649 + "syn 2.0.103", 3536 4650 ] 3537 4651 3538 4652 [[package]] ··· 3575 4689 "serde_json", 3576 4690 "serde_repr", 3577 4691 "serialize-to-javascript", 4692 + "specta", 3578 4693 "swift-rs", 3579 4694 "tauri-build", 3580 4695 "tauri-macros", ··· 3632 4747 "serde", 3633 4748 "serde_json", 3634 4749 "sha2", 3635 - "syn 2.0.102", 4750 + "syn 2.0.103", 3636 4751 "tauri-utils", 3637 4752 "thiserror 2.0.12", 3638 4753 "time", ··· 3650 4765 "heck 0.5.0", 3651 4766 "proc-macro2", 3652 4767 "quote", 3653 - "syn 2.0.102", 4768 + "syn 2.0.103", 3654 4769 "tauri-codegen", 3655 4770 "tauri-utils", 3656 4771 ] ··· 3709 4824 ] 3710 4825 3711 4826 [[package]] 4827 + name = "tauri-plugin-store" 4828 + version = "2.2.0" 4829 + source = "registry+https://github.com/rust-lang/crates.io-index" 4830 + checksum = "1c0c08fae6995909f5e9a0da6038273b750221319f2c0f3b526d6de1cde21505" 4831 + dependencies = [ 4832 + "dunce", 4833 + "serde", 4834 + "serde_json", 4835 + "tauri", 4836 + "tauri-plugin", 4837 + "thiserror 2.0.12", 4838 + "tokio", 4839 + "tracing", 4840 + ] 4841 + 4842 + [[package]] 3712 4843 name = "tauri-runtime" 3713 4844 version = "2.6.0" 3714 4845 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3758 4889 ] 3759 4890 3760 4891 [[package]] 4892 + name = "tauri-specta" 4893 + version = "2.0.0-rc.21" 4894 + source = "registry+https://github.com/rust-lang/crates.io-index" 4895 + checksum = "b23c0132dd3cf6064e5cd919b82b3f47780e9280e7b5910babfe139829b76655" 4896 + dependencies = [ 4897 + "heck 0.5.0", 4898 + "serde", 4899 + "serde_json", 4900 + "specta", 4901 + "specta-typescript", 4902 + "tauri", 4903 + "tauri-specta-macros", 4904 + "thiserror 2.0.12", 4905 + ] 4906 + 4907 + [[package]] 4908 + name = "tauri-specta-macros" 4909 + version = "2.0.0-rc.16" 4910 + source = "registry+https://github.com/rust-lang/crates.io-index" 4911 + checksum = "7a4aa93823e07859546aa796b8a5d608190cd8037a3a5dce3eb63d491c34bda8" 4912 + dependencies = [ 4913 + "heck 0.5.0", 4914 + "proc-macro2", 4915 + "quote", 4916 + "syn 2.0.103", 4917 + ] 4918 + 4919 + [[package]] 3761 4920 name = "tauri-utils" 3762 4921 version = "2.4.0" 3763 4922 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3862 5021 dependencies = [ 3863 5022 "proc-macro2", 3864 5023 "quote", 3865 - "syn 2.0.102", 5024 + "syn 2.0.103", 3866 5025 ] 3867 5026 3868 5027 [[package]] ··· 3873 5032 dependencies = [ 3874 5033 "proc-macro2", 3875 5034 "quote", 3876 - "syn 2.0.102", 5035 + "syn 2.0.103", 3877 5036 ] 3878 5037 3879 5038 [[package]] ··· 3927 5086 "bytes", 3928 5087 "libc", 3929 5088 "mio", 5089 + "parking_lot", 3930 5090 "pin-project-lite", 5091 + "signal-hook-registry", 3931 5092 "socket2", 3932 5093 "tokio-macros", 3933 5094 "windows-sys 0.52.0", ··· 3941 5102 dependencies = [ 3942 5103 "proc-macro2", 3943 5104 "quote", 3944 - "syn 2.0.102", 5105 + "syn 2.0.103", 3945 5106 ] 3946 5107 3947 5108 [[package]] ··· 3952 5113 dependencies = [ 3953 5114 "bytes", 3954 5115 "futures-core", 5116 + "futures-io", 3955 5117 "futures-sink", 3956 5118 "pin-project-lite", 3957 5119 "tokio", ··· 4011 5173 "serde_spanned", 4012 5174 "toml_datetime", 4013 5175 "toml_write", 4014 - "winnow 0.7.10", 5176 + "winnow 0.7.11", 4015 5177 ] 4016 5178 4017 5179 [[package]] ··· 4084 5246 dependencies = [ 4085 5247 "proc-macro2", 4086 5248 "quote", 4087 - "syn 2.0.102", 5249 + "syn 2.0.103", 4088 5250 ] 4089 5251 4090 5252 [[package]] ··· 4125 5287 checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 4126 5288 4127 5289 [[package]] 5290 + name = "tungstenite" 5291 + version = "0.26.2" 5292 + source = "registry+https://github.com/rust-lang/crates.io-index" 5293 + checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" 5294 + dependencies = [ 5295 + "bytes", 5296 + "data-encoding", 5297 + "http", 5298 + "httparse", 5299 + "log", 5300 + "rand 0.9.1", 5301 + "sha1", 5302 + "thiserror 2.0.12", 5303 + "utf-8", 5304 + ] 5305 + 5306 + [[package]] 5307 + name = "turn" 5308 + version = "0.10.0" 5309 + source = "registry+https://github.com/rust-lang/crates.io-index" 5310 + checksum = "3f5aea1116456e1da71c45586b87c72e3b43164fbf435eb93ff6aa475416a9a4" 5311 + dependencies = [ 5312 + "async-trait", 5313 + "base64 0.22.1", 5314 + "futures", 5315 + "log", 5316 + "md-5", 5317 + "portable-atomic", 5318 + "rand 0.8.5", 5319 + "ring", 5320 + "stun", 5321 + "thiserror 1.0.69", 5322 + "tokio", 5323 + "tokio-util", 5324 + "webrtc-util", 5325 + ] 5326 + 5327 + [[package]] 4128 5328 name = "typeid" 4129 5329 version = "1.0.3" 4130 5330 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4142 5342 source = "registry+https://github.com/rust-lang/crates.io-index" 4143 5343 checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" 4144 5344 dependencies = [ 4145 - "memoffset", 5345 + "memoffset 0.9.1", 4146 5346 "tempfile", 4147 5347 "winapi", 4148 5348 ] ··· 4201 5401 checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" 4202 5402 4203 5403 [[package]] 5404 + name = "unicode-xid" 5405 + version = "0.2.6" 5406 + source = "registry+https://github.com/rust-lang/crates.io-index" 5407 + checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 5408 + 5409 + [[package]] 5410 + name = "universal-hash" 5411 + version = "0.5.1" 5412 + source = "registry+https://github.com/rust-lang/crates.io-index" 5413 + checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" 5414 + dependencies = [ 5415 + "crypto-common", 5416 + "subtle", 5417 + ] 5418 + 5419 + [[package]] 5420 + name = "untrusted" 5421 + version = "0.9.0" 5422 + source = "registry+https://github.com/rust-lang/crates.io-index" 5423 + checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 5424 + 5425 + [[package]] 4204 5426 name = "url" 4205 5427 version = "2.5.4" 4206 5428 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4249 5471 ] 4250 5472 4251 5473 [[package]] 5474 + name = "value-bag" 5475 + version = "1.11.1" 5476 + source = "registry+https://github.com/rust-lang/crates.io-index" 5477 + checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" 5478 + 5479 + [[package]] 4252 5480 name = "version-compare" 4253 5481 version = "0.2.0" 4254 5482 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4281 5509 ] 4282 5510 4283 5511 [[package]] 5512 + name = "waitgroup" 5513 + version = "0.1.2" 5514 + source = "registry+https://github.com/rust-lang/crates.io-index" 5515 + checksum = "d1f50000a783467e6c0200f9d10642f4bc424e39efc1b770203e88b488f79292" 5516 + dependencies = [ 5517 + "atomic-waker", 5518 + ] 5519 + 5520 + [[package]] 4284 5521 name = "walkdir" 4285 5522 version = "2.5.0" 4286 5523 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4307 5544 4308 5545 [[package]] 4309 5546 name = "wasi" 4310 - version = "0.11.0+wasi-snapshot-preview1" 5547 + version = "0.11.1+wasi-snapshot-preview1" 4311 5548 source = "registry+https://github.com/rust-lang/crates.io-index" 4312 - checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 5549 + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 4313 5550 4314 5551 [[package]] 4315 5552 name = "wasi" ··· 4342 5579 "log", 4343 5580 "proc-macro2", 4344 5581 "quote", 4345 - "syn 2.0.102", 5582 + "syn 2.0.103", 4346 5583 "wasm-bindgen-shared", 4347 5584 ] 4348 5585 ··· 4377 5614 dependencies = [ 4378 5615 "proc-macro2", 4379 5616 "quote", 4380 - "syn 2.0.102", 5617 + "syn 2.0.103", 4381 5618 "wasm-bindgen-backend", 4382 5619 "wasm-bindgen-shared", 4383 5620 ] ··· 4459 5696 ] 4460 5697 4461 5698 [[package]] 5699 + name = "webpki" 5700 + version = "0.22.4" 5701 + source = "registry+https://github.com/rust-lang/crates.io-index" 5702 + checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" 5703 + dependencies = [ 5704 + "ring", 5705 + "untrusted", 5706 + ] 5707 + 5708 + [[package]] 5709 + name = "webpki-roots" 5710 + version = "0.22.6" 5711 + source = "registry+https://github.com/rust-lang/crates.io-index" 5712 + checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" 5713 + dependencies = [ 5714 + "webpki", 5715 + ] 5716 + 5717 + [[package]] 5718 + name = "webrtc" 5719 + version = "0.13.0" 5720 + source = "registry+https://github.com/rust-lang/crates.io-index" 5721 + checksum = "24bab7195998d605c862772f90a452ba655b90a2f463c850ac032038890e367a" 5722 + dependencies = [ 5723 + "arc-swap", 5724 + "async-trait", 5725 + "bytes", 5726 + "cfg-if", 5727 + "hex", 5728 + "interceptor", 5729 + "lazy_static", 5730 + "log", 5731 + "portable-atomic", 5732 + "rand 0.8.5", 5733 + "rcgen", 5734 + "regex", 5735 + "ring", 5736 + "rtcp", 5737 + "rtp", 5738 + "rustls 0.23.27", 5739 + "sdp", 5740 + "serde", 5741 + "serde_json", 5742 + "sha2", 5743 + "smol_str", 5744 + "stun", 5745 + "thiserror 1.0.69", 5746 + "time", 5747 + "tokio", 5748 + "turn", 5749 + "url", 5750 + "waitgroup", 5751 + "webrtc-data", 5752 + "webrtc-dtls", 5753 + "webrtc-ice", 5754 + "webrtc-mdns", 5755 + "webrtc-media", 5756 + "webrtc-sctp", 5757 + "webrtc-srtp", 5758 + "webrtc-util", 5759 + ] 5760 + 5761 + [[package]] 5762 + name = "webrtc-data" 5763 + version = "0.11.0" 5764 + source = "registry+https://github.com/rust-lang/crates.io-index" 5765 + checksum = "4e97b932854da633a767eff0cc805425a2222fc6481e96f463e57b015d949d1d" 5766 + dependencies = [ 5767 + "bytes", 5768 + "log", 5769 + "portable-atomic", 5770 + "thiserror 1.0.69", 5771 + "tokio", 5772 + "webrtc-sctp", 5773 + "webrtc-util", 5774 + ] 5775 + 5776 + [[package]] 5777 + name = "webrtc-dtls" 5778 + version = "0.12.0" 5779 + source = "registry+https://github.com/rust-lang/crates.io-index" 5780 + checksum = "5ccbe4d9049390ab52695c3646c1395c877e16c15fb05d3bda8eee0c7351711c" 5781 + dependencies = [ 5782 + "aes", 5783 + "aes-gcm", 5784 + "async-trait", 5785 + "bincode", 5786 + "byteorder", 5787 + "cbc", 5788 + "ccm", 5789 + "der-parser", 5790 + "hkdf", 5791 + "hmac", 5792 + "log", 5793 + "p256", 5794 + "p384", 5795 + "portable-atomic", 5796 + "rand 0.8.5", 5797 + "rand_core 0.6.4", 5798 + "rcgen", 5799 + "ring", 5800 + "rustls 0.23.27", 5801 + "sec1", 5802 + "serde", 5803 + "sha1", 5804 + "sha2", 5805 + "subtle", 5806 + "thiserror 1.0.69", 5807 + "tokio", 5808 + "webrtc-util", 5809 + "x25519-dalek", 5810 + "x509-parser", 5811 + ] 5812 + 5813 + [[package]] 5814 + name = "webrtc-ice" 5815 + version = "0.13.0" 5816 + source = "registry+https://github.com/rust-lang/crates.io-index" 5817 + checksum = "eb51bde0d790f109a15bfe4d04f1b56fb51d567da231643cb3f21bb74d678997" 5818 + dependencies = [ 5819 + "arc-swap", 5820 + "async-trait", 5821 + "crc", 5822 + "log", 5823 + "portable-atomic", 5824 + "rand 0.8.5", 5825 + "serde", 5826 + "serde_json", 5827 + "stun", 5828 + "thiserror 1.0.69", 5829 + "tokio", 5830 + "turn", 5831 + "url", 5832 + "uuid", 5833 + "waitgroup", 5834 + "webrtc-mdns", 5835 + "webrtc-util", 5836 + ] 5837 + 5838 + [[package]] 5839 + name = "webrtc-mdns" 5840 + version = "0.9.0" 5841 + source = "registry+https://github.com/rust-lang/crates.io-index" 5842 + checksum = "979cc85259c53b7b620803509d10d35e2546fa505d228850cbe3f08765ea6ea8" 5843 + dependencies = [ 5844 + "log", 5845 + "socket2", 5846 + "thiserror 1.0.69", 5847 + "tokio", 5848 + "webrtc-util", 5849 + ] 5850 + 5851 + [[package]] 5852 + name = "webrtc-media" 5853 + version = "0.10.0" 5854 + source = "registry+https://github.com/rust-lang/crates.io-index" 5855 + checksum = "80041211deccda758a3e19aa93d6b10bc1d37c9183b519054b40a83691d13810" 5856 + dependencies = [ 5857 + "byteorder", 5858 + "bytes", 5859 + "rand 0.8.5", 5860 + "rtp", 5861 + "thiserror 1.0.69", 5862 + ] 5863 + 5864 + [[package]] 5865 + name = "webrtc-sctp" 5866 + version = "0.12.0" 5867 + source = "registry+https://github.com/rust-lang/crates.io-index" 5868 + checksum = "07439c134425d51d2f10907aaf2f815fdfb587dce19fe94a4ae8b5faf2aae5ae" 5869 + dependencies = [ 5870 + "arc-swap", 5871 + "async-trait", 5872 + "bytes", 5873 + "crc", 5874 + "log", 5875 + "portable-atomic", 5876 + "rand 0.8.5", 5877 + "thiserror 1.0.69", 5878 + "tokio", 5879 + "webrtc-util", 5880 + ] 5881 + 5882 + [[package]] 5883 + name = "webrtc-srtp" 5884 + version = "0.15.0" 5885 + source = "registry+https://github.com/rust-lang/crates.io-index" 5886 + checksum = "01e773f79b09b057ffbda6b03fe7b43403b012a240cf8d05d630674c3723b5bb" 5887 + dependencies = [ 5888 + "aead", 5889 + "aes", 5890 + "aes-gcm", 5891 + "byteorder", 5892 + "bytes", 5893 + "ctr", 5894 + "hmac", 5895 + "log", 5896 + "rtcp", 5897 + "rtp", 5898 + "sha1", 5899 + "subtle", 5900 + "thiserror 1.0.69", 5901 + "tokio", 5902 + "webrtc-util", 5903 + ] 5904 + 5905 + [[package]] 5906 + name = "webrtc-util" 5907 + version = "0.11.0" 5908 + source = "registry+https://github.com/rust-lang/crates.io-index" 5909 + checksum = "64bfb10dbe6d762f80169ae07cf252bafa1f764b9594d140008a0231c0cdce58" 5910 + dependencies = [ 5911 + "async-trait", 5912 + "bitflags 1.3.2", 5913 + "bytes", 5914 + "ipnet", 5915 + "lazy_static", 5916 + "libc", 5917 + "log", 5918 + "nix 0.26.4", 5919 + "portable-atomic", 5920 + "rand 0.8.5", 5921 + "thiserror 1.0.69", 5922 + "tokio", 5923 + "winapi", 5924 + ] 5925 + 5926 + [[package]] 4462 5927 name = "webview2-com" 4463 5928 version = "0.37.0" 4464 5929 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4480 5945 dependencies = [ 4481 5946 "proc-macro2", 4482 5947 "quote", 4483 - "syn 2.0.102", 5948 + "syn 2.0.103", 4484 5949 ] 4485 5950 4486 5951 [[package]] ··· 4542 6007 4543 6008 [[package]] 4544 6009 name = "windows" 4545 - version = "0.61.1" 6010 + version = "0.61.3" 4546 6011 source = "registry+https://github.com/rust-lang/crates.io-index" 4547 - checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" 6012 + checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" 4548 6013 dependencies = [ 4549 6014 "windows-collections", 4550 6015 "windows-core", ··· 4594 6059 dependencies = [ 4595 6060 "proc-macro2", 4596 6061 "quote", 4597 - "syn 2.0.102", 6062 + "syn 2.0.103", 4598 6063 ] 4599 6064 4600 6065 [[package]] ··· 4605 6070 dependencies = [ 4606 6071 "proc-macro2", 4607 6072 "quote", 4608 - "syn 2.0.102", 6073 + "syn 2.0.103", 4609 6074 ] 4610 6075 4611 6076 [[package]] 4612 6077 name = "windows-link" 4613 - version = "0.1.1" 6078 + version = "0.1.3" 4614 6079 source = "registry+https://github.com/rust-lang/crates.io-index" 4615 - checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" 6080 + checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" 4616 6081 4617 6082 [[package]] 4618 6083 name = "windows-numerics" ··· 4670 6135 ] 4671 6136 4672 6137 [[package]] 6138 + name = "windows-sys" 6139 + version = "0.60.2" 6140 + source = "registry+https://github.com/rust-lang/crates.io-index" 6141 + checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" 6142 + dependencies = [ 6143 + "windows-targets 0.53.2", 6144 + ] 6145 + 6146 + [[package]] 4673 6147 name = "windows-targets" 4674 6148 version = "0.42.2" 4675 6149 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4693 6167 "windows_aarch64_gnullvm 0.52.6", 4694 6168 "windows_aarch64_msvc 0.52.6", 4695 6169 "windows_i686_gnu 0.52.6", 4696 - "windows_i686_gnullvm", 6170 + "windows_i686_gnullvm 0.52.6", 4697 6171 "windows_i686_msvc 0.52.6", 4698 6172 "windows_x86_64_gnu 0.52.6", 4699 6173 "windows_x86_64_gnullvm 0.52.6", ··· 4701 6175 ] 4702 6176 4703 6177 [[package]] 6178 + name = "windows-targets" 6179 + version = "0.53.2" 6180 + source = "registry+https://github.com/rust-lang/crates.io-index" 6181 + checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" 6182 + dependencies = [ 6183 + "windows_aarch64_gnullvm 0.53.0", 6184 + "windows_aarch64_msvc 0.53.0", 6185 + "windows_i686_gnu 0.53.0", 6186 + "windows_i686_gnullvm 0.53.0", 6187 + "windows_i686_msvc 0.53.0", 6188 + "windows_x86_64_gnu 0.53.0", 6189 + "windows_x86_64_gnullvm 0.53.0", 6190 + "windows_x86_64_msvc 0.53.0", 6191 + ] 6192 + 6193 + [[package]] 4704 6194 name = "windows-threading" 4705 6195 version = "0.1.0" 4706 6196 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4731 6221 checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 4732 6222 4733 6223 [[package]] 6224 + name = "windows_aarch64_gnullvm" 6225 + version = "0.53.0" 6226 + source = "registry+https://github.com/rust-lang/crates.io-index" 6227 + checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" 6228 + 6229 + [[package]] 4734 6230 name = "windows_aarch64_msvc" 4735 6231 version = "0.42.2" 4736 6232 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4743 6239 checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 4744 6240 4745 6241 [[package]] 6242 + name = "windows_aarch64_msvc" 6243 + version = "0.53.0" 6244 + source = "registry+https://github.com/rust-lang/crates.io-index" 6245 + checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" 6246 + 6247 + [[package]] 4746 6248 name = "windows_i686_gnu" 4747 6249 version = "0.42.2" 4748 6250 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4755 6257 checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 4756 6258 4757 6259 [[package]] 6260 + name = "windows_i686_gnu" 6261 + version = "0.53.0" 6262 + source = "registry+https://github.com/rust-lang/crates.io-index" 6263 + checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" 6264 + 6265 + [[package]] 4758 6266 name = "windows_i686_gnullvm" 4759 6267 version = "0.52.6" 4760 6268 source = "registry+https://github.com/rust-lang/crates.io-index" 4761 6269 checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 4762 6270 4763 6271 [[package]] 6272 + name = "windows_i686_gnullvm" 6273 + version = "0.53.0" 6274 + source = "registry+https://github.com/rust-lang/crates.io-index" 6275 + checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" 6276 + 6277 + [[package]] 4764 6278 name = "windows_i686_msvc" 4765 6279 version = "0.42.2" 4766 6280 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4771 6285 version = "0.52.6" 4772 6286 source = "registry+https://github.com/rust-lang/crates.io-index" 4773 6287 checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 6288 + 6289 + [[package]] 6290 + name = "windows_i686_msvc" 6291 + version = "0.53.0" 6292 + source = "registry+https://github.com/rust-lang/crates.io-index" 6293 + checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" 4774 6294 4775 6295 [[package]] 4776 6296 name = "windows_x86_64_gnu" ··· 4785 6305 checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 4786 6306 4787 6307 [[package]] 6308 + name = "windows_x86_64_gnu" 6309 + version = "0.53.0" 6310 + source = "registry+https://github.com/rust-lang/crates.io-index" 6311 + checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" 6312 + 6313 + [[package]] 4788 6314 name = "windows_x86_64_gnullvm" 4789 6315 version = "0.42.2" 4790 6316 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4797 6323 checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 4798 6324 4799 6325 [[package]] 6326 + name = "windows_x86_64_gnullvm" 6327 + version = "0.53.0" 6328 + source = "registry+https://github.com/rust-lang/crates.io-index" 6329 + checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" 6330 + 6331 + [[package]] 4800 6332 name = "windows_x86_64_msvc" 4801 6333 version = "0.42.2" 4802 6334 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4809 6341 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 4810 6342 4811 6343 [[package]] 6344 + name = "windows_x86_64_msvc" 6345 + version = "0.53.0" 6346 + source = "registry+https://github.com/rust-lang/crates.io-index" 6347 + checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" 6348 + 6349 + [[package]] 4812 6350 name = "winnow" 4813 6351 version = "0.5.40" 4814 6352 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4819 6357 4820 6358 [[package]] 4821 6359 name = "winnow" 4822 - version = "0.7.10" 6360 + version = "0.7.11" 4823 6361 source = "registry+https://github.com/rust-lang/crates.io-index" 4824 - checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" 6362 + checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" 4825 6363 dependencies = [ 4826 6364 "memchr", 4827 6365 ] ··· 4896 6434 ] 4897 6435 4898 6436 [[package]] 6437 + name = "ws_stream_wasm" 6438 + version = "0.7.5" 6439 + source = "registry+https://github.com/rust-lang/crates.io-index" 6440 + checksum = "6c173014acad22e83f16403ee360115b38846fe754e735c5d9d3803fe70c6abc" 6441 + dependencies = [ 6442 + "async_io_stream", 6443 + "futures", 6444 + "js-sys", 6445 + "log", 6446 + "pharos", 6447 + "rustc_version", 6448 + "send_wrapper 0.6.0", 6449 + "thiserror 2.0.12", 6450 + "wasm-bindgen", 6451 + "wasm-bindgen-futures", 6452 + "web-sys", 6453 + ] 6454 + 6455 + [[package]] 4899 6456 name = "x11" 4900 6457 version = "2.21.0" 4901 6458 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4917 6474 ] 4918 6475 4919 6476 [[package]] 6477 + name = "x25519-dalek" 6478 + version = "2.0.1" 6479 + source = "registry+https://github.com/rust-lang/crates.io-index" 6480 + checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" 6481 + dependencies = [ 6482 + "curve25519-dalek", 6483 + "rand_core 0.6.4", 6484 + "serde", 6485 + "zeroize", 6486 + ] 6487 + 6488 + [[package]] 6489 + name = "x509-parser" 6490 + version = "0.16.0" 6491 + source = "registry+https://github.com/rust-lang/crates.io-index" 6492 + checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69" 6493 + dependencies = [ 6494 + "asn1-rs", 6495 + "data-encoding", 6496 + "der-parser", 6497 + "lazy_static", 6498 + "nom", 6499 + "oid-registry", 6500 + "ring", 6501 + "rusticata-macros", 6502 + "thiserror 1.0.69", 6503 + "time", 6504 + ] 6505 + 6506 + [[package]] 6507 + name = "yasna" 6508 + version = "0.5.2" 6509 + source = "registry+https://github.com/rust-lang/crates.io-index" 6510 + checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" 6511 + dependencies = [ 6512 + "time", 6513 + ] 6514 + 6515 + [[package]] 4920 6516 name = "yoke" 4921 6517 version = "0.8.0" 4922 6518 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4936 6532 dependencies = [ 4937 6533 "proc-macro2", 4938 6534 "quote", 4939 - "syn 2.0.102", 6535 + "syn 2.0.103", 4940 6536 "synstructure", 4941 6537 ] 4942 6538 ··· 4956 6552 "async-trait", 4957 6553 "blocking", 4958 6554 "enumflags2", 4959 - "event-listener", 6555 + "event-listener 5.4.0", 4960 6556 "futures-core", 4961 6557 "futures-lite", 4962 6558 "hex", 4963 - "nix", 6559 + "nix 0.30.1", 4964 6560 "ordered-stream", 4965 6561 "serde", 4966 6562 "serde_repr", 4967 6563 "tracing", 4968 6564 "uds_windows", 4969 6565 "windows-sys 0.59.0", 4970 - "winnow 0.7.10", 6566 + "winnow 0.7.11", 4971 6567 "zbus_macros", 4972 6568 "zbus_names", 4973 6569 "zvariant", ··· 4982 6578 "proc-macro-crate 3.3.0", 4983 6579 "proc-macro2", 4984 6580 "quote", 4985 - "syn 2.0.102", 6581 + "syn 2.0.103", 4986 6582 "zbus_names", 4987 6583 "zvariant", 4988 6584 "zvariant_utils", ··· 4996 6592 dependencies = [ 4997 6593 "serde", 4998 6594 "static_assertions", 4999 - "winnow 0.7.10", 6595 + "winnow 0.7.11", 5000 6596 "zvariant", 5001 6597 ] 5002 6598 ··· 5017 6613 dependencies = [ 5018 6614 "proc-macro2", 5019 6615 "quote", 5020 - "syn 2.0.102", 6616 + "syn 2.0.103", 5021 6617 ] 5022 6618 5023 6619 [[package]] ··· 5037 6633 dependencies = [ 5038 6634 "proc-macro2", 5039 6635 "quote", 5040 - "syn 2.0.102", 6636 + "syn 2.0.103", 5041 6637 "synstructure", 5042 6638 ] 5043 6639 5044 6640 [[package]] 6641 + name = "zeroize" 6642 + version = "1.8.1" 6643 + source = "registry+https://github.com/rust-lang/crates.io-index" 6644 + checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" 6645 + dependencies = [ 6646 + "zeroize_derive", 6647 + ] 6648 + 6649 + [[package]] 6650 + name = "zeroize_derive" 6651 + version = "1.4.2" 6652 + source = "registry+https://github.com/rust-lang/crates.io-index" 6653 + checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" 6654 + dependencies = [ 6655 + "proc-macro2", 6656 + "quote", 6657 + "syn 2.0.103", 6658 + ] 6659 + 6660 + [[package]] 5045 6661 name = "zerotrie" 5046 6662 version = "0.2.2" 5047 6663 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5071 6687 dependencies = [ 5072 6688 "proc-macro2", 5073 6689 "quote", 5074 - "syn 2.0.102", 6690 + "syn 2.0.103", 5075 6691 ] 5076 6692 5077 6693 [[package]] ··· 5083 6699 "endi", 5084 6700 "enumflags2", 5085 6701 "serde", 5086 - "winnow 0.7.10", 6702 + "winnow 0.7.11", 5087 6703 "zvariant_derive", 5088 6704 "zvariant_utils", 5089 6705 ] ··· 5097 6713 "proc-macro-crate 3.3.0", 5098 6714 "proc-macro2", 5099 6715 "quote", 5100 - "syn 2.0.102", 6716 + "syn 2.0.103", 5101 6717 "zvariant_utils", 5102 6718 ] 5103 6719 ··· 5111 6727 "quote", 5112 6728 "serde", 5113 6729 "static_assertions", 5114 - "syn 2.0.102", 5115 - "winnow 0.7.10", 6730 + "syn 2.0.103", 6731 + "winnow 0.7.11", 5116 6732 ]
+8 -1
backend/Cargo.toml
··· 18 18 serde = { version = "1", features = ["derive"] } 19 19 serde_json = "1" 20 20 chrono = { version = "0.4", features = ["serde", "now"] } 21 - tokio = { version = "1.45", features = ["sync", "macros", "time"] } 21 + tokio = { version = "1.45", features = ["sync", "macros", "time", "fs"] } 22 22 rand = { version = "0.9", features = ["thread_rng"] } 23 23 tauri-plugin-geolocation = "2.2" 24 24 rand_chacha = "0.9.0" 25 25 futures = "0.3.31" 26 + matchbox_socket = "0.12.0" 27 + uuid = "1.17.0" 28 + rmp-serde = "1.3.0" 29 + tauri-plugin-store = "2.2.0" 30 + specta = { version = "=2.0.0-rc.22", features = ["chrono", "uuid"] } 31 + tauri-specta = { version = "=2.0.0-rc.21", features = ["derive", "typescript"] } 32 + specta-typescript = "0.0.9"
+1 -1
backend/src/game/location.rs
··· 3 3 /// A "part" of a location 4 4 pub type LocationComponent = f64; 5 5 6 - #[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)] 6 + #[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, specta::Type)] 7 7 /// Some location in the world as gotten from a Geolocation API 8 8 pub struct Location { 9 9 /// Latitude
+17 -10
backend/src/game/mod.rs
··· 1 1 use chrono::{DateTime, Utc}; 2 2 pub use events::GameEvent; 3 - use matchbox_socket::PeerId; 4 3 use powerups::PowerUpType; 5 4 pub use settings::GameSettings; 6 - use std::{collections::HashMap, fmt::Debug, hash::Hash, ops::Deref, sync::Arc, time::Duration}; 5 + use std::{ 6 + collections::HashMap, 7 + fmt::{Debug, Display}, 8 + hash::Hash, 9 + sync::Arc, 10 + time::Duration, 11 + }; 7 12 use uuid::Uuid; 8 13 9 14 use tokio::{sync::RwLock, time::MissedTickBehavior}; ··· 16 21 mod transport; 17 22 18 23 pub use location::{Location, LocationService}; 19 - use state::GameState; 24 + pub use state::GameState; 20 25 pub use transport::Transport; 21 26 22 - /// Type used to uniquely identify players in the game 23 27 pub trait PlayerId: 24 - Debug + Hash + Ord + Eq + PartialEq + Send + Sync + Sized + Copy + Clone 28 + Display + Debug + Hash + Ord + Eq + PartialEq + Send + Sync + Sized + Copy + Clone + specta::Type 25 29 { 30 + 26 31 } 27 32 28 33 impl PlayerId for Uuid {} 29 - impl PlayerId for PeerId {} 30 34 31 35 /// Convenence alias for UTC DT 32 36 pub type UtcDT = DateTime<Utc>; ··· 58 62 interval, 59 63 state: RwLock::new(state), 60 64 } 65 + } 66 + 67 + pub async fn clone_state(&self) -> GameState<Id> { 68 + self.state.read().await.clone() 61 69 } 62 70 63 71 pub async fn mark_caught(&self) { ··· 244 252 } 245 253 246 254 async fn send_message(&self, msg: GameEvent<u32>) { 247 - for (id, tx) in self.txs.iter().enumerate() { 255 + for (_id, tx) in self.txs.iter().enumerate() { 248 256 tx.send(msg.clone()).await.expect("Failed to send msg"); 249 257 } 250 258 } ··· 318 326 } 319 327 320 328 pub async fn start(&self) { 321 - for (id, game) in &self.games { 329 + for (_id, game) in &self.games { 322 330 let game = game.clone(); 323 - let id = *id; 324 331 tokio::spawn(async move { 325 332 game.main_loop().await; 326 333 }); ··· 572 579 async fn test_powerup_ping_seekers() { 573 580 let settings = mk_settings(); 574 581 575 - let mut mat = MockMatch::new(settings, 5, 3); 582 + let mat = MockMatch::new(settings, 5, 3); 576 583 577 584 mat.start().await; 578 585
+1 -3
backend/src/game/powerups.rs
··· 1 1 use serde::{Deserialize, Serialize}; 2 2 3 - use super::{location::Location, PlayerId}; 4 - 5 - #[derive(Debug, Clone, Copy, Serialize, Deserialize)] 3 + #[derive(Debug, Clone, Copy, Serialize, Deserialize, specta::Type)] 6 4 /// Type of powerup 7 5 pub enum PowerUpType { 8 6 /// Ping a random seeker instead of a hider
+6 -6
backend/src/game/settings.rs
··· 3 3 4 4 use super::location::Location; 5 5 6 - #[derive(Debug, Clone, Serialize, Deserialize)] 6 + #[derive(Debug, Clone, Serialize, Deserialize, specta::Type)] 7 7 /// The starting condition for global pings to begin 8 8 pub enum PingStartCondition { 9 9 /// Wait For X players to be caught before beginning global pings ··· 14 14 Instant, 15 15 } 16 16 17 - #[derive(Debug, Clone, Serialize, Deserialize)] 17 + #[derive(Debug, Clone, Serialize, Deserialize, specta::Type)] 18 18 /// Settings for the game, host is the only person able to change these 19 19 pub struct GameSettings { 20 20 /// The random seed used for shared rng 21 - pub random_seed: u64, 21 + pub random_seed: u32, 22 22 /// The number of seconds to wait before seekers are allowed to go 23 23 pub hiding_time_seconds: u32, 24 24 /// Condition to wait for global pings to begin 25 25 pub ping_start: PingStartCondition, 26 26 /// Time between pings after the condition is met (first ping is either after the interval or 27 27 /// instantly after the condition is met depending on the condition) 28 - pub ping_minutes_interval: u64, 28 + pub ping_minutes_interval: u32, 29 29 /// Condition for powerups to start spawning 30 30 pub powerup_start: PingStartCondition, 31 31 /// Chance every minute of a powerup spawning, out of 100 32 32 pub powerup_chance: u32, 33 33 /// Hard cooldown between powerups spawning 34 - pub powerup_minutes_cooldown: u64, 34 + pub powerup_minutes_cooldown: u32, 35 35 /// Locations that powerups may spawn at 36 36 pub powerup_locations: Vec<Location>, 37 37 } ··· 45 45 impl Default for GameSettings { 46 46 fn default() -> Self { 47 47 Self { 48 - random_seed: rand::random_range(0..=u64::MAX), 48 + random_seed: rand::random_range(0..=u32::MAX), 49 49 hiding_time_seconds: 60, 50 50 ping_start: PingStartCondition::Players(2), 51 51 ping_minutes_interval: 3,
+12 -10
backend/src/game/state.rs
··· 1 1 use std::collections::HashMap; 2 - use std::sync::Arc; 3 2 4 - use chrono::{DateTime, Utc}; 3 + use chrono::Utc; 5 4 use rand::{ 6 5 distr::{Bernoulli, Distribution}, 7 - rngs::ThreadRng, 8 6 seq::{IndexedRandom, IteratorRandom}, 9 7 Rng, SeedableRng, 10 8 }; ··· 18 16 PlayerId, UtcDT, 19 17 }; 20 18 21 - #[derive(Debug, Clone, Serialize, Deserialize)] 19 + #[derive(Debug, Clone, Serialize, Deserialize, specta::Type)] 22 20 /// An on-map ping of a player 23 21 pub struct PlayerPing<Id: PlayerId> { 24 22 /// Location of the ping ··· 42 40 } 43 41 } 44 42 45 - #[derive(Debug, Clone, Serialize)] 46 - /// Represents the game's state as a whole, seamlessly connects public and player state. 43 + #[derive(Debug, Clone, Serialize, specta::Type)] 47 44 /// This struct handles all logic regarding state updates 48 45 pub struct GameState<Id: PlayerId> { 49 46 /// The id of this player in this game ··· 73 70 /// Powerup on the map that players can grab. Only one at a time 74 71 available_powerup: Option<Location>, 75 72 73 + #[serde(skip)] 76 74 /// The game's current settings 77 75 settings: GameSettings, 78 76 ··· 96 94 97 95 impl<Id: PlayerId> GameState<Id> { 98 96 pub fn new(settings: GameSettings, my_id: Id, initial_caught_state: HashMap<Id, bool>) -> Self { 99 - let mut rand = ChaCha20Rng::seed_from_u64(settings.random_seed); 97 + let mut rand = ChaCha20Rng::seed_from_u64(settings.random_seed as u64); 100 98 let increment = rand.random_range(-100..100); 101 99 102 100 Self { ··· 107 105 caught_state: initial_caught_state, 108 106 available_powerup: None, 109 107 powerup_bernoulli: settings.get_powerup_bernoulli(), 110 - shared_random_state: settings.random_seed, 108 + shared_random_state: settings.random_seed as u64, 111 109 settings, 112 110 last_global_ping: None, 113 111 last_powerup_spawn: None, ··· 169 167 !self.is_seeker() 170 168 && self.last_global_ping.as_ref().is_some_and(|last_ping| { 171 169 let minutes = (*now - *last_ping).num_minutes().unsigned_abs(); 172 - minutes >= self.settings.ping_minutes_interval 170 + minutes >= (self.settings.ping_minutes_interval as u64) 173 171 }) 174 172 } 175 173 ··· 202 200 pub fn should_spawn_powerup(&self, now: &UtcDT) -> bool { 203 201 self.last_powerup_spawn.as_ref().is_some_and(|last_spawn| { 204 202 let minutes = (*now - *last_spawn).num_minutes().unsigned_abs(); 205 - minutes >= self.settings.powerup_minutes_cooldown 203 + minutes >= (self.settings.powerup_minutes_cooldown as u64) 206 204 }) 207 205 } 208 206 207 + #[cfg(test)] 209 208 pub fn powerup_location(&self) -> Option<Location> { 210 209 self.available_powerup 211 210 } ··· 236 235 } 237 236 238 237 /// Get a ping for a player 238 + #[cfg(test)] 239 239 pub fn get_ping(&self, player: Id) -> Option<&PlayerPing<Id>> { 240 240 self.pings.get(&player) 241 241 } ··· 292 292 self.held_powerup = choice; 293 293 } 294 294 295 + #[cfg(test)] 295 296 pub fn force_set_powerup(&mut self, typ: PowerUpType) { 296 297 self.held_powerup = Some(typ); 297 298 } ··· 323 324 } 324 325 325 326 /// Gets if a player was caught or not 327 + #[cfg(test)] 326 328 pub fn get_caught(&self, player: Id) -> Option<bool> { 327 329 self.caught_state.get(&player).copied() 328 330 }
+199 -20
backend/src/lib.rs
··· 6 6 7 7 use std::{sync::Arc, time::Duration}; 8 8 9 - use game::{Game as BaseGame, GameSettings}; 10 - use lobby::{Lobby, StartGameInfo}; 9 + use game::{Game as BaseGame, GameSettings, GameState as BaseGameState}; 10 + use lobby::{Lobby, LobbyState, StartGameInfo}; 11 11 use location::TauriLocation; 12 - use matchbox_socket::PeerId; 13 12 use profile::PlayerProfile; 13 + use serde::{Deserialize, Serialize}; 14 + use specta_typescript::Typescript; 14 15 use tauri::{AppHandle, Manager, State}; 16 + use tauri_specta::collect_commands; 15 17 use tokio::sync::RwLock; 16 18 use transport::MatchboxTransport; 19 + use uuid::Uuid; 17 20 18 - type Game = BaseGame<PeerId, TauriLocation, MatchboxTransport>; 21 + type Game = BaseGame<Uuid, TauriLocation, MatchboxTransport>; 19 22 20 23 enum AppState { 21 24 Setup, ··· 45 48 } 46 49 47 50 impl AppState { 48 - pub fn start_game(&mut self, app: AppHandle, my_id: PeerId, start: StartGameInfo) { 51 + pub fn start_game(&mut self, app: AppHandle, my_id: Uuid, start: StartGameInfo) { 49 52 match self { 50 53 AppState::Lobby(lobby) => { 51 54 let transport = lobby.clone_transport(); ··· 77 80 AppState::Menu(profile) => { 78 81 let host = join_code.is_none(); 79 82 let room_code = join_code.unwrap_or_else(generate_join_code); 80 - let app_after = app.clone(); 81 83 let lobby = Arc::new(Lobby::new( 82 84 server_url(), 83 85 &room_code, 84 - app, 85 86 host, 86 87 profile.clone(), 87 88 settings, ··· 89 90 *self = AppState::Lobby(lobby.clone()); 90 91 tokio::spawn(async move { 91 92 let (my_id, start) = lobby.open().await; 92 - let app_game = app_after.clone(); 93 - let state_handle = app_after.state::<AppStateHandle>(); 93 + let app_game = app.clone(); 94 + let state_handle = app.state::<AppStateHandle>(); 94 95 let mut state = state_handle.write().await; 95 96 state.start_game(app_game, my_id, start); 96 97 }); ··· 100 101 } 101 102 } 102 103 104 + use std::result::Result as StdResult; 105 + 106 + type Result<T = (), E = String> = StdResult<T, E>; 107 + 108 + #[derive(Serialize, Deserialize, specta::Type, Debug, Clone)] 109 + enum AppScreen { 110 + Setup, 111 + Menu, 112 + Lobby, 113 + Game, 114 + } 115 + 116 + // == GENERAL / FLOW COMMANDS == 117 + 103 118 #[tauri::command] 104 - async fn go_to_lobby( 119 + #[specta::specta] 120 + /// Get the screen the app should currently be on, returns [AppScreen] 121 + async fn get_current_screen(state: State<'_, AppStateHandle>) -> Result<AppScreen> { 122 + let state = state.read().await; 123 + Ok(match &*state { 124 + AppState::Setup => AppScreen::Setup, 125 + AppState::Menu(_player_profile) => AppScreen::Menu, 126 + AppState::Lobby(_lobby) => AppScreen::Lobby, 127 + AppState::Game(_game) => AppScreen::Game, 128 + }) 129 + } 130 + 131 + #[tauri::command] 132 + #[specta::specta] 133 + /// Quit a running game or leave a lobby 134 + async fn quit_game_or_lobby(app: AppHandle, state: State<'_, AppStateHandle>) -> Result { 135 + let mut state = state.write().await; 136 + let profile = match &*state { 137 + AppState::Setup => Err("Invalid Screen".to_string()), 138 + AppState::Menu(_) => Err("Already In Menu".to_string()), 139 + AppState::Lobby(_) | AppState::Game(_) => Ok(PlayerProfile::load_from_store(&app)), 140 + }?; 141 + if let Some(profile) = profile { 142 + *state = AppState::Menu(profile); 143 + } else { 144 + *state = AppState::Setup; 145 + } 146 + Ok(()) 147 + } 148 + 149 + // == AppState::Menu COMMANDS == 150 + 151 + #[tauri::command] 152 + #[specta::specta] 153 + /// (Screen: Menu) Update the player's profile and persist it 154 + async fn update_profile( 155 + new_profile: PlayerProfile, 156 + app: AppHandle, 157 + state: State<'_, AppStateHandle>, 158 + ) -> Result { 159 + new_profile.write_to_store(&app); 160 + let mut state = state.write().await; 161 + if let AppState::Menu(profile) = &mut *state { 162 + *profile = new_profile; 163 + Ok(()) 164 + } else { 165 + Err("Profile can only be updated on Menu screen".to_string()) 166 + } 167 + } 168 + 169 + #[tauri::command] 170 + #[specta::specta] 171 + /// (Screen: Menu) Start/Join a new lobby, set `join_code` to `null` to be host, 172 + /// set it to a join code to be a client. This triggers a screen change to [AppScreen::Lobby] 173 + async fn start_lobby( 105 174 app: AppHandle, 106 175 join_code: Option<String>, 107 176 settings: GameSettings, 108 177 state: State<'_, AppStateHandle>, 109 - ) -> Result<(), String> { 178 + ) -> Result { 110 179 let mut state = state.write().await; 111 180 state.start_lobby(join_code, app, settings); 112 181 Ok(()) 113 182 } 114 183 184 + // AppState::Lobby COMMANDS 185 + 115 186 #[tauri::command] 116 - async fn host_start_game(state: State<'_, AppStateHandle>) -> Result<(), String> { 187 + #[specta::specta] 188 + /// (Screen: Lobby) Get the current state of the lobby, call after receiving an update event 189 + async fn get_lobby_state(state: State<'_, AppStateHandle>) -> Result<LobbyState> { 190 + let state = state.read().await; 191 + if let AppState::Lobby(lobby) = &*state { 192 + Ok(lobby.clone_state().await) 193 + } else { 194 + Err("Must be called on Lobby screen".to_string()) 195 + } 196 + } 197 + 198 + #[tauri::command] 199 + #[specta::specta] 200 + /// (Screen: Lobby) Switch teams between seekers and hiders, returns the new [LobbyState] 201 + async fn switch_teams(seeker: bool, state: State<'_, AppStateHandle>) -> Result<LobbyState> { 202 + let state = state.read().await; 203 + if let AppState::Lobby(lobby) = &*state { 204 + lobby.switch_teams(seeker).await; 205 + Ok(lobby.clone_state().await) 206 + } else { 207 + Err("Must be called on Lobby screen".to_string()) 208 + } 209 + } 210 + 211 + #[tauri::command] 212 + #[specta::specta] 213 + /// (Screen: Lobby) HOST ONLY: Push new settings to everyone, does nothing on clients. Returns the 214 + /// new lobby state 215 + async fn host_update_settings( 216 + settings: GameSettings, 217 + state: State<'_, AppStateHandle>, 218 + ) -> Result<LobbyState> { 219 + let state = state.read().await; 220 + if let AppState::Lobby(lobby) = &*state { 221 + lobby.update_settings(settings).await; 222 + Ok(lobby.clone_state().await) 223 + } else { 224 + Err("Must be called on Lobby screen".to_string()) 225 + } 226 + } 227 + 228 + #[tauri::command] 229 + #[specta::specta] 230 + /// (Screen: Lobby) HOST ONLY: Start the game, stops anyone else from joining and switched screen 231 + /// to AppScreen::Game. 232 + async fn host_start_game(state: State<'_, AppStateHandle>) -> Result { 233 + let state = state.read().await; 234 + if let AppState::Lobby(lobby) = &*state { 235 + lobby.start_game().await; 236 + Ok(()) 237 + } else { 238 + Err("Must be called on Lobby screen".to_string()) 239 + } 240 + } 241 + 242 + // AppScreen::Game COMMANDS 243 + 244 + type AppGameState = BaseGameState<Uuid>; 245 + 246 + #[tauri::command] 247 + #[specta::specta] 248 + /// (Screen: Game) Mark this player as caught, this player will become a seeker. Returns the new game state 249 + async fn mark_caught(state: State<'_, AppStateHandle>) -> Result<AppGameState> { 250 + let state = state.read().await; 251 + if let AppState::Game(game) = &*state { 252 + game.mark_caught().await; 253 + Ok(game.clone_state().await) 254 + } else { 255 + Err("Must be called on Game screen".to_string()) 256 + } 257 + } 258 + 259 + #[tauri::command] 260 + #[specta::specta] 261 + /// (Screen: Game) Grab a powerup on the map, this should be called when the user is *in range* of 262 + /// the powerup. Returns the new game state after rolling for the powerup 263 + async fn grab_powerup(state: State<'_, AppStateHandle>) -> Result<AppGameState> { 117 264 let state = state.read().await; 118 - match &*state { 119 - AppState::Lobby(lobby) => { 120 - lobby.start_game().await; 121 - Ok(()) 122 - } 123 - _ => Err("Invalid AppState".to_string()), 265 + if let AppState::Game(game) = &*state { 266 + game.get_powerup().await; 267 + Ok(game.clone_state().await) 268 + } else { 269 + Err("Must be called on Game screen".to_string()) 270 + } 271 + } 272 + 273 + #[tauri::command] 274 + #[specta::specta] 275 + /// (Screen: Game) Use the currently held powerup in the player's held_powerup. Does nothing if the 276 + /// player has none. Returns the updated game state 277 + async fn use_powerup(state: State<'_, AppStateHandle>) -> Result<AppGameState> { 278 + let state = state.read().await; 279 + if let AppState::Game(game) = &*state { 280 + game.use_powerup().await; 281 + Ok(game.clone_state().await) 282 + } else { 283 + Err("Must be called on Game screen".to_string()) 124 284 } 125 285 } 126 286 ··· 128 288 pub fn run() { 129 289 let state = RwLock::new(AppState::Setup); 130 290 291 + let builder = tauri_specta::Builder::<tauri::Wry>::new().commands(collect_commands![ 292 + start_lobby, 293 + quit_game_or_lobby, 294 + get_current_screen, 295 + update_profile, 296 + get_lobby_state, 297 + host_update_settings, 298 + switch_teams, 299 + host_start_game, 300 + mark_caught, 301 + // grab_powerup, 302 + // use_powerup, 303 + ]); 304 + 305 + #[cfg(debug_assertions)] 306 + builder 307 + .export(Typescript::default(), "../frontend/src/bindings.ts") 308 + .expect("Failed to export typescript bindings"); 309 + 131 310 tauri::Builder::default() 132 311 .manage(state) 133 312 .plugin(tauri_plugin_opener::init()) 134 313 .plugin(tauri_plugin_geolocation::init()) 135 314 .plugin(tauri_plugin_store::Builder::default().build()) 315 + .invoke_handler(builder.invoke_handler()) 136 316 .setup(|app| { 137 317 let handle = app.handle().clone(); 138 - tokio::spawn(async move { 318 + tauri::async_runtime::spawn(async move { 139 319 if let Some(profile) = PlayerProfile::load_from_store(&handle) { 140 320 let state_handle = handle.state::<AppStateHandle>(); 141 321 let mut state = state_handle.write().await; ··· 144 324 }); 145 325 Ok(()) 146 326 }) 147 - .invoke_handler(tauri::generate_handler![go_to_lobby]) 148 327 .run(tauri::generate_context!()) 149 328 .expect("error while running tauri application"); 150 329 }
+13 -18
backend/src/lobby.rs
··· 1 - use std::{collections::HashMap, path::PathBuf, sync::Arc}; 1 + use std::{collections::HashMap, sync::Arc}; 2 2 3 - use matchbox_socket::PeerId; 4 3 use serde::{Deserialize, Serialize}; 5 - use tauri::{path::BaseDirectory, AppHandle, Manager}; 6 4 use tokio::sync::Mutex; 5 + use uuid::Uuid; 7 6 8 7 use crate::{ 9 8 game::GameSettings, ··· 14 13 #[derive(Debug, Clone, Serialize, Deserialize)] 15 14 pub struct StartGameInfo { 16 15 pub settings: GameSettings, 17 - pub initial_caught_state: HashMap<PeerId, bool>, 16 + pub initial_caught_state: HashMap<Uuid, bool>, 18 17 } 19 18 20 19 #[derive(Debug, Clone, Serialize, Deserialize)] ··· 29 28 PlayerSwitch(bool), 30 29 } 31 30 32 - #[derive(Serialize, Deserialize)] 33 - struct LobbyState { 34 - profiles: HashMap<PeerId, PlayerProfile>, 31 + #[derive(Clone, Serialize, Deserialize, specta::Type)] 32 + pub struct LobbyState { 33 + profiles: HashMap<Uuid, PlayerProfile>, 35 34 join_code: String, 36 35 /// True represents seeker, false hider 37 - teams: HashMap<PeerId, bool>, 36 + teams: HashMap<Uuid, bool>, 38 37 self_seeker: bool, 39 38 settings: GameSettings, 40 39 } 41 40 42 41 pub struct Lobby { 43 - pfp_dir: PathBuf, 44 42 is_host: bool, 45 - self_profile: PlayerProfile, 43 + pub self_profile: PlayerProfile, 46 44 state: Mutex<LobbyState>, 47 45 transport: Arc<MatchboxTransport>, 48 46 } ··· 51 49 pub fn new( 52 50 ws_url_base: &str, 53 51 join_code: &str, 54 - app: AppHandle, 55 52 host: bool, 56 53 profile: PlayerProfile, 57 54 settings: GameSettings, 58 55 ) -> Self { 59 - let pfp_dir = app 60 - .path() 61 - .resolve("pfp_cache", BaseDirectory::Cache) 62 - .expect("Failed to get Cache Dir"); 63 - 64 56 Self { 65 - pfp_dir, 66 57 transport: Arc::new(MatchboxTransport::new(&format!( 67 58 "{ws_url_base}/{join_code}" 68 59 ))), ··· 80 71 81 72 pub fn clone_transport(&self) -> Arc<MatchboxTransport> { 82 73 self.transport.clone() 74 + } 75 + 76 + pub async fn clone_state(&self) -> LobbyState { 77 + self.state.lock().await.clone() 83 78 } 84 79 85 80 /// Set self as seeker or hider ··· 123 118 } 124 119 } 125 120 126 - pub async fn open(&self) -> (PeerId, StartGameInfo) { 121 + pub async fn open(&self) -> (Uuid, StartGameInfo) { 127 122 let transport_inner = self.transport.clone(); 128 123 tokio::spawn(async move { transport_inner.transport_loop().await }); 129 124
+4 -4
backend/src/profile.rs
··· 2 2 use tauri::AppHandle; 3 3 use tauri_plugin_store::StoreExt; 4 4 5 - #[derive(Clone, Debug, Serialize, Deserialize)] 5 + #[derive(Clone, Debug, Serialize, Deserialize, specta::Type)] 6 6 pub struct PlayerProfile { 7 7 display_name: String, 8 8 pfp_base64: Option<String>, ··· 11 11 const STORE_NAME: &str = "profile.json"; 12 12 13 13 impl PlayerProfile { 14 - pub fn has_pfp(&self) -> bool { 15 - self.pfp_base64.is_some() 16 - } 14 + // pub fn has_pfp(&self) -> bool { 15 + // self.pfp_base64.is_some() 16 + // } 17 17 18 18 pub fn load_from_store(app: &AppHandle) -> Option<Self> { 19 19 let store = app.store(STORE_NAME).expect("Couldn't Create Store");
+16 -15
backend/src/transport.rs
··· 1 1 use std::{collections::HashSet, time::Duration}; 2 2 3 - use futures::{FutureExt, SinkExt}; 3 + use futures::FutureExt; 4 4 use matchbox_socket::{PeerId, PeerState, WebRtcSocket}; 5 5 use serde::{Deserialize, Serialize}; 6 6 use tokio::sync::{Mutex, RwLock}; 7 + use uuid::Uuid; 7 8 8 9 use crate::{ 9 10 game::{GameEvent, Transport}, ··· 13 14 #[derive(Debug, Serialize, Deserialize, Clone)] 14 15 pub enum TransportMessage { 15 16 /// Message related to the actual game 16 - Game(GameEvent<PeerId>), 17 + Game(GameEvent<Uuid>), 17 18 /// Message related to the pre-game lobby 18 19 Lobby(LobbyMessage), 19 20 /// Internal message when peer connects ··· 22 23 PeerDisconnect, 23 24 } 24 25 25 - type OutgoingMsgPair = (Option<PeerId>, TransportMessage); 26 + type OutgoingMsgPair = (Option<Uuid>, TransportMessage); 26 27 type OutgoingQueueSender = tokio::sync::mpsc::Sender<OutgoingMsgPair>; 27 28 type OutgoingQueueReceiver = tokio::sync::mpsc::Receiver<OutgoingMsgPair>; 28 29 29 - type IncomingMsgPair = (PeerId, TransportMessage); 30 + type IncomingMsgPair = (Uuid, TransportMessage); 30 31 type IncomingQueueSender = tokio::sync::mpsc::Sender<IncomingMsgPair>; 31 32 type IncomingQueueReceiver = tokio::sync::mpsc::Receiver<IncomingMsgPair>; 32 33 ··· 34 35 ws_url: String, 35 36 incoming: (IncomingQueueSender, Mutex<IncomingQueueReceiver>), 36 37 outgoing: (OutgoingQueueSender, Mutex<OutgoingQueueReceiver>), 37 - my_id: RwLock<Option<PeerId>>, 38 + my_id: RwLock<Option<Uuid>>, 38 39 } 39 40 40 41 impl MatchboxTransport { ··· 50 51 } 51 52 } 52 53 53 - pub async fn send_transport_message(&self, peer: Option<PeerId>, msg: TransportMessage) { 54 + pub async fn send_transport_message(&self, peer: Option<Uuid>, msg: TransportMessage) { 54 55 self.outgoing 55 56 .0 56 57 .send((peer, msg)) ··· 63 64 incoming_rx.recv().await 64 65 } 65 66 66 - pub async fn get_my_id(&self) -> Option<PeerId> { 67 + pub async fn get_my_id(&self) -> Option<Uuid> { 67 68 *self.my_id.read().await 68 69 } 69 70 ··· 92 93 }; 93 94 self.incoming 94 95 .0 95 - .send((peer, msg)) 96 + .send((peer.0, msg)) 96 97 .await 97 98 .expect("Failed to push to incoming queue"); 98 99 } ··· 101 102 if let Ok(msg) = rmp_serde::from_slice(&data) { 102 103 self.incoming 103 104 .0 104 - .send((peer, msg)) 105 + .send((peer.0, msg)) 105 106 .await 106 107 .expect("Failed to push to incoming queue"); 107 108 } ··· 109 110 110 111 if my_id.is_none() { 111 112 if let Some(new_id) = socket.id() { 112 - my_id = Some(new_id); 113 - *self.my_id.write().await = Some(new_id); 113 + my_id = Some(new_id.0); 114 + *self.my_id.write().await = Some(new_id.0); 114 115 } 115 116 } 116 117 ··· 128 129 if let Some(peer) = peer { 129 130 let channel = socket.channel_mut(0); 130 131 let data = encoded.into_boxed_slice(); 131 - channel.send(data, peer); 132 + channel.send(data, PeerId(peer)); 132 133 } else { 133 134 // Send to self as well 134 135 if let Some(myself) = my_id { ··· 153 154 } 154 155 } 155 156 156 - impl Transport<PeerId> for MatchboxTransport { 157 - async fn receive_message(&self) -> Option<GameEvent<PeerId>> { 157 + impl Transport<Uuid> for MatchboxTransport { 158 + async fn receive_message(&self) -> Option<GameEvent<Uuid>> { 158 159 self.recv_transport_message() 159 160 .await 160 161 .and_then(|(_, msg)| match msg { ··· 163 164 }) 164 165 } 165 166 166 - async fn send_message(&self, msg: GameEvent<PeerId>) { 167 + async fn send_message(&self, msg: GameEvent<Uuid>) { 167 168 let msg = TransportMessage::Game(msg); 168 169 self.send_transport_message(None, msg).await; 169 170 }
frontend/src/bindings.ts

This is a binary file and will not be displayed.