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 version = 4 4 5 [[package]] 6 name = "addr2line" 7 version = "0.24.2" 8 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 18 checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" 19 20 [[package]] 21 name = "aho-corasick" 22 version = "1.1.3" 23 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 63 checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" 64 65 [[package]] 66 name = "async-broadcast" 67 version = "0.7.2" 68 source = "registry+https://github.com/rust-lang/crates.io-index" 69 checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" 70 dependencies = [ 71 - "event-listener", 72 "event-listener-strategy", 73 "futures-core", 74 "pin-project-lite", 75 ] 76 77 [[package]] ··· 87 ] 88 89 [[package]] 90 name = "async-executor" 91 version = "1.13.2" 92 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 101 ] 102 103 [[package]] 104 name = "async-io" 105 version = "2.4.1" 106 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 125 source = "registry+https://github.com/rust-lang/crates.io-index" 126 checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" 127 dependencies = [ 128 - "event-listener", 129 "event-listener-strategy", 130 "pin-project-lite", 131 ] ··· 136 source = "registry+https://github.com/rust-lang/crates.io-index" 137 checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" 138 dependencies = [ 139 - "async-channel", 140 "async-io", 141 "async-lock", 142 "async-signal", 143 "async-task", 144 "blocking", 145 "cfg-if", 146 - "event-listener", 147 "futures-lite", 148 "rustix", 149 "tracing", ··· 157 dependencies = [ 158 "proc-macro2", 159 "quote", 160 - "syn 2.0.102", 161 ] 162 163 [[package]] ··· 179 ] 180 181 [[package]] 182 name = "async-task" 183 version = "4.7.1" 184 source = "registry+https://github.com/rust-lang/crates.io-index" 185 checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" 186 187 [[package]] 188 name = "async-trait" 189 version = "0.1.88" 190 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 192 dependencies = [ 193 "proc-macro2", 194 "quote", 195 - "syn 2.0.102", 196 ] 197 198 [[package]] ··· 246 ] 247 248 [[package]] 249 name = "base64" 250 version = "0.21.7" 251 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 256 version = "0.22.1" 257 source = "registry+https://github.com/rust-lang/crates.io-index" 258 checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 259 260 [[package]] 261 name = "bitflags" ··· 282 ] 283 284 [[package]] 285 name = "block2" 286 version = "0.5.1" 287 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 305 source = "registry+https://github.com/rust-lang/crates.io-index" 306 checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" 307 dependencies = [ 308 - "async-channel", 309 "async-task", 310 "futures-io", 311 "futures-lite", ··· 428 ] 429 430 [[package]] 431 name = "cc" 432 - version = "1.2.26" 433 source = "registry+https://github.com/rust-lang/crates.io-index" 434 - checksum = "956a5e21988b87f372569b66183b78babf23ebc2e744b733e4350a752c4dafac" 435 dependencies = [ 436 "shlex", 437 ] 438 439 [[package]] 440 name = "cesu8" 441 version = "1.1.0" 442 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 491 ] 492 493 [[package]] 494 name = "combine" 495 version = "4.6.7" 496 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 508 dependencies = [ 509 "crossbeam-utils", 510 ] 511 512 [[package]] 513 name = "convert_case" ··· 575 ] 576 577 [[package]] 578 name = "crc32fast" 579 version = "1.4.2" 580 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 599 checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 600 601 [[package]] 602 name = "crypto-common" 603 version = "0.1.6" 604 source = "registry+https://github.com/rust-lang/crates.io-index" 605 checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 606 dependencies = [ 607 "generic-array", 608 "typenum", 609 ] 610 ··· 632 checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" 633 dependencies = [ 634 "quote", 635 - "syn 2.0.102", 636 ] 637 638 [[package]] ··· 642 checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" 643 dependencies = [ 644 "quote", 645 - "syn 2.0.102", 646 ] 647 648 [[package]] ··· 666 "proc-macro2", 667 "quote", 668 "strsim", 669 - "syn 2.0.102", 670 ] 671 672 [[package]] ··· 677 dependencies = [ 678 "darling_core", 679 "quote", 680 - "syn 2.0.102", 681 ] 682 683 [[package]] ··· 700 "proc-macro2", 701 "quote", 702 "rustc_version", 703 - "syn 2.0.102", 704 ] 705 706 [[package]] ··· 710 checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 711 dependencies = [ 712 "block-buffer", 713 "crypto-common", 714 ] 715 716 [[package]] ··· 731 "libc", 732 "option-ext", 733 "redox_users", 734 - "windows-sys 0.59.0", 735 ] 736 737 [[package]] ··· 758 dependencies = [ 759 "proc-macro2", 760 "quote", 761 - "syn 2.0.102", 762 ] 763 764 [[package]] ··· 781 dependencies = [ 782 "proc-macro2", 783 "quote", 784 - "syn 2.0.102", 785 ] 786 787 [[package]] ··· 821 checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" 822 823 [[package]] 824 name = "embed-resource" 825 version = "3.0.3" 826 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 864 dependencies = [ 865 "proc-macro2", 866 "quote", 867 - "syn 2.0.102", 868 ] 869 870 [[package]] ··· 895 896 [[package]] 897 name = "event-listener" 898 version = "5.4.0" 899 source = "registry+https://github.com/rust-lang/crates.io-index" 900 checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" ··· 910 source = "registry+https://github.com/rust-lang/crates.io-index" 911 checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" 912 dependencies = [ 913 - "event-listener", 914 "pin-project-lite", 915 ] 916 ··· 930 ] 931 932 [[package]] 933 name = "field-offset" 934 version = "0.3.6" 935 source = "registry+https://github.com/rust-lang/crates.io-index" 936 checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" 937 dependencies = [ 938 - "memoffset", 939 "rustc_version", 940 ] 941 ··· 973 dependencies = [ 974 "proc-macro2", 975 "quote", 976 - "syn 2.0.102", 977 ] 978 979 [[package]] ··· 1070 dependencies = [ 1071 "proc-macro2", 1072 "quote", 1073 - "syn 2.0.102", 1074 ] 1075 1076 [[package]] ··· 1086 checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 1087 1088 [[package]] 1089 name = "futures-util" 1090 version = "0.3.31" 1091 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1219 dependencies = [ 1220 "typenum", 1221 "version_check", 1222 ] 1223 1224 [[package]] ··· 1240 dependencies = [ 1241 "cfg-if", 1242 "libc", 1243 - "wasi 0.11.0+wasi-snapshot-preview1", 1244 ] 1245 1246 [[package]] ··· 1256 ] 1257 1258 [[package]] 1259 name = "gimli" 1260 version = "0.31.1" 1261 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1327 "proc-macro-error", 1328 "proc-macro2", 1329 "quote", 1330 - "syn 2.0.102", 1331 ] 1332 1333 [[package]] ··· 1347 checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" 1348 1349 [[package]] 1350 name = "gobject-sys" 1351 version = "0.18.0" 1352 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1358 ] 1359 1360 [[package]] 1361 name = "gtk" 1362 version = "0.18.2" 1363 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1406 "proc-macro-error", 1407 "proc-macro2", 1408 "quote", 1409 - "syn 2.0.102", 1410 ] 1411 1412 [[package]] ··· 1435 1436 [[package]] 1437 name = "hermit-abi" 1438 - version = "0.5.1" 1439 source = "registry+https://github.com/rust-lang/crates.io-index" 1440 - checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08" 1441 1442 [[package]] 1443 name = "hex" 1444 version = "0.4.3" 1445 source = "registry+https://github.com/rust-lang/crates.io-index" 1446 checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1447 1448 [[package]] 1449 name = "html5ever" ··· 1721 ] 1722 1723 [[package]] 1724 name = "ipnet" 1725 version = "2.11.0" 1726 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1869 ] 1870 1871 [[package]] 1872 name = "lazy_static" 1873 version = "1.5.0" 1874 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1900 1901 [[package]] 1902 name = "libc" 1903 - version = "0.2.172" 1904 source = "registry+https://github.com/rust-lang/crates.io-index" 1905 - checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" 1906 1907 [[package]] 1908 name = "libloading" ··· 1951 version = "0.4.27" 1952 source = "registry+https://github.com/rust-lang/crates.io-index" 1953 checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" 1954 1955 [[package]] 1956 name = "mac" ··· 1964 dependencies = [ 1965 "chrono", 1966 "futures", 1967 "rand 0.9.1", 1968 "rand_chacha 0.9.0", 1969 "serde", 1970 "serde_json", 1971 "tauri", 1972 "tauri-build", 1973 "tauri-plugin-geolocation", 1974 "tauri-plugin-opener", 1975 "tokio", 1976 ] 1977 1978 [[package]] ··· 1990 ] 1991 1992 [[package]] 1993 name = "matches" 1994 version = "0.1.10" 1995 source = "registry+https://github.com/rust-lang/crates.io-index" 1996 checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" 1997 1998 [[package]] 1999 name = "memchr" 2000 - version = "2.7.4" 2001 source = "registry+https://github.com/rust-lang/crates.io-index" 2002 - checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 2003 2004 [[package]] 2005 name = "memoffset" ··· 2017 checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 2018 2019 [[package]] 2020 name = "miniz_oxide" 2021 version = "0.8.9" 2022 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2033 checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" 2034 dependencies = [ 2035 "libc", 2036 - "wasi 0.11.0+wasi-snapshot-preview1", 2037 "windows-sys 0.59.0", 2038 ] 2039 ··· 2096 2097 [[package]] 2098 name = "nix" 2099 version = "0.30.1" 2100 source = "registry+https://github.com/rust-lang/crates.io-index" 2101 checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" ··· 2104 "cfg-if", 2105 "cfg_aliases", 2106 "libc", 2107 - "memoffset", 2108 ] 2109 2110 [[package]] ··· 2114 checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" 2115 2116 [[package]] 2117 name = "num-conv" 2118 version = "0.1.0" 2119 source = "registry+https://github.com/rust-lang/crates.io-index" 2120 checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 2121 2122 [[package]] 2123 name = "num-traits" 2124 version = "0.2.19" 2125 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2146 "proc-macro-crate 3.3.0", 2147 "proc-macro2", 2148 "quote", 2149 - "syn 2.0.102", 2150 ] 2151 2152 [[package]] ··· 2373 ] 2374 2375 [[package]] 2376 name = "once_cell" 2377 version = "1.21.3" 2378 source = "registry+https://github.com/rust-lang/crates.io-index" 2379 checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 2380 2381 [[package]] 2382 name = "open" ··· 2407 ] 2408 2409 [[package]] 2410 name = "pango" 2411 version = "0.18.3" 2412 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2461 ] 2462 2463 [[package]] 2464 name = "pathdiff" 2465 version = "0.2.3" 2466 source = "registry+https://github.com/rust-lang/crates.io-index" 2467 checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" 2468 2469 [[package]] 2470 name = "percent-encoding" 2471 version = "2.3.1" 2472 source = "registry+https://github.com/rust-lang/crates.io-index" 2473 checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 2474 2475 [[package]] 2476 name = "phf" ··· 2576 "phf_shared 0.11.3", 2577 "proc-macro2", 2578 "quote", 2579 - "syn 2.0.102", 2580 ] 2581 2582 [[package]] ··· 2630 ] 2631 2632 [[package]] 2633 name = "pkg-config" 2634 version = "0.3.32" 2635 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2637 2638 [[package]] 2639 name = "plist" 2640 - version = "1.7.1" 2641 source = "registry+https://github.com/rust-lang/crates.io-index" 2642 - checksum = "eac26e981c03a6e53e0aee43c113e3202f5581d5360dae7bd2c70e800dd0451d" 2643 dependencies = [ 2644 "base64 0.22.1", 2645 "indexmap 2.9.0", ··· 2675 "tracing", 2676 "windows-sys 0.59.0", 2677 ] 2678 2679 [[package]] 2680 name = "potential_utf" ··· 2707 checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 2708 2709 [[package]] 2710 name = "proc-macro-crate" 2711 version = "1.3.1" 2712 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2775 2776 [[package]] 2777 name = "quick-xml" 2778 - version = "0.32.0" 2779 source = "registry+https://github.com/rust-lang/crates.io-index" 2780 - checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" 2781 dependencies = [ 2782 "memchr", 2783 ] ··· 2914 checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" 2915 2916 [[package]] 2917 name = "redox_syscall" 2918 - version = "0.5.12" 2919 source = "registry+https://github.com/rust-lang/crates.io-index" 2920 - checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" 2921 dependencies = [ 2922 "bitflags 2.9.1", 2923 ] ··· 2964 2965 [[package]] 2966 name = "reqwest" 2967 - version = "0.12.19" 2968 source = "registry+https://github.com/rust-lang/crates.io-index" 2969 - checksum = "a2f8e5513d63f2e5b386eb5106dc67eaf3f84e95258e210489136b8b92ad6119" 2970 dependencies = [ 2971 "base64 0.22.1", 2972 "bytes", ··· 2977 "http-body-util", 2978 "hyper", 2979 "hyper-util", 2980 - "ipnet", 2981 "js-sys", 2982 "log", 2983 - "mime", 2984 - "once_cell", 2985 "percent-encoding", 2986 "pin-project-lite", 2987 "serde", ··· 3001 ] 3002 3003 [[package]] 3004 name = "rustc-demangle" 3005 version = "0.1.25" 3006 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3016 ] 3017 3018 [[package]] 3019 name = "rustix" 3020 version = "1.0.7" 3021 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3029 ] 3030 3031 [[package]] 3032 name = "rustversion" 3033 version = "1.0.21" 3034 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3073 "proc-macro2", 3074 "quote", 3075 "serde_derive_internals", 3076 - "syn 2.0.102", 3077 ] 3078 3079 [[package]] ··· 3083 checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 3084 3085 [[package]] 3086 name = "selectors" 3087 version = "0.22.0" 3088 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3090 dependencies = [ 3091 "bitflags 1.3.2", 3092 "cssparser", 3093 - "derive_more", 3094 "fxhash", 3095 "log", 3096 "matches", ··· 3112 ] 3113 3114 [[package]] 3115 name = "serde" 3116 version = "1.0.219" 3117 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3132 ] 3133 3134 [[package]] 3135 name = "serde_derive" 3136 version = "1.0.219" 3137 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3139 dependencies = [ 3140 "proc-macro2", 3141 "quote", 3142 - "syn 2.0.102", 3143 ] 3144 3145 [[package]] ··· 3150 dependencies = [ 3151 "proc-macro2", 3152 "quote", 3153 - "syn 2.0.102", 3154 ] 3155 3156 [[package]] ··· 3173 dependencies = [ 3174 "proc-macro2", 3175 "quote", 3176 - "syn 2.0.102", 3177 ] 3178 3179 [[package]] ··· 3224 "darling", 3225 "proc-macro2", 3226 "quote", 3227 - "syn 2.0.102", 3228 ] 3229 3230 [[package]] ··· 3260 ] 3261 3262 [[package]] 3263 name = "sha2" 3264 version = "0.10.9" 3265 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3286 ] 3287 3288 [[package]] 3289 name = "simd-adler32" 3290 version = "0.3.7" 3291 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3319 checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 3320 3321 [[package]] 3322 name = "socket2" 3323 version = "0.5.10" 3324 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3377 ] 3378 3379 [[package]] 3380 name = "stable_deref_trait" 3381 version = "1.2.0" 3382 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3420 checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 3421 3422 [[package]] 3423 name = "swift-rs" 3424 version = "1.0.7" 3425 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3443 3444 [[package]] 3445 name = "syn" 3446 - version = "2.0.102" 3447 source = "registry+https://github.com/rust-lang/crates.io-index" 3448 - checksum = "f6397daf94fa90f058bd0fd88429dd9e5738999cca8d701813c80723add80462" 3449 dependencies = [ 3450 "proc-macro2", 3451 "quote", ··· 3469 dependencies = [ 3470 "proc-macro2", 3471 "quote", 3472 - "syn 2.0.102", 3473 ] 3474 3475 [[package]] ··· 3532 dependencies = [ 3533 "proc-macro2", 3534 "quote", 3535 - "syn 2.0.102", 3536 ] 3537 3538 [[package]] ··· 3575 "serde_json", 3576 "serde_repr", 3577 "serialize-to-javascript", 3578 "swift-rs", 3579 "tauri-build", 3580 "tauri-macros", ··· 3632 "serde", 3633 "serde_json", 3634 "sha2", 3635 - "syn 2.0.102", 3636 "tauri-utils", 3637 "thiserror 2.0.12", 3638 "time", ··· 3650 "heck 0.5.0", 3651 "proc-macro2", 3652 "quote", 3653 - "syn 2.0.102", 3654 "tauri-codegen", 3655 "tauri-utils", 3656 ] ··· 3709 ] 3710 3711 [[package]] 3712 name = "tauri-runtime" 3713 version = "2.6.0" 3714 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3758 ] 3759 3760 [[package]] 3761 name = "tauri-utils" 3762 version = "2.4.0" 3763 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3862 dependencies = [ 3863 "proc-macro2", 3864 "quote", 3865 - "syn 2.0.102", 3866 ] 3867 3868 [[package]] ··· 3873 dependencies = [ 3874 "proc-macro2", 3875 "quote", 3876 - "syn 2.0.102", 3877 ] 3878 3879 [[package]] ··· 3927 "bytes", 3928 "libc", 3929 "mio", 3930 "pin-project-lite", 3931 "socket2", 3932 "tokio-macros", 3933 "windows-sys 0.52.0", ··· 3941 dependencies = [ 3942 "proc-macro2", 3943 "quote", 3944 - "syn 2.0.102", 3945 ] 3946 3947 [[package]] ··· 3952 dependencies = [ 3953 "bytes", 3954 "futures-core", 3955 "futures-sink", 3956 "pin-project-lite", 3957 "tokio", ··· 4011 "serde_spanned", 4012 "toml_datetime", 4013 "toml_write", 4014 - "winnow 0.7.10", 4015 ] 4016 4017 [[package]] ··· 4084 dependencies = [ 4085 "proc-macro2", 4086 "quote", 4087 - "syn 2.0.102", 4088 ] 4089 4090 [[package]] ··· 4125 checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 4126 4127 [[package]] 4128 name = "typeid" 4129 version = "1.0.3" 4130 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4142 source = "registry+https://github.com/rust-lang/crates.io-index" 4143 checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" 4144 dependencies = [ 4145 - "memoffset", 4146 "tempfile", 4147 "winapi", 4148 ] ··· 4201 checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" 4202 4203 [[package]] 4204 name = "url" 4205 version = "2.5.4" 4206 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4249 ] 4250 4251 [[package]] 4252 name = "version-compare" 4253 version = "0.2.0" 4254 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4281 ] 4282 4283 [[package]] 4284 name = "walkdir" 4285 version = "2.5.0" 4286 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4307 4308 [[package]] 4309 name = "wasi" 4310 - version = "0.11.0+wasi-snapshot-preview1" 4311 source = "registry+https://github.com/rust-lang/crates.io-index" 4312 - checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 4313 4314 [[package]] 4315 name = "wasi" ··· 4342 "log", 4343 "proc-macro2", 4344 "quote", 4345 - "syn 2.0.102", 4346 "wasm-bindgen-shared", 4347 ] 4348 ··· 4377 dependencies = [ 4378 "proc-macro2", 4379 "quote", 4380 - "syn 2.0.102", 4381 "wasm-bindgen-backend", 4382 "wasm-bindgen-shared", 4383 ] ··· 4459 ] 4460 4461 [[package]] 4462 name = "webview2-com" 4463 version = "0.37.0" 4464 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4480 dependencies = [ 4481 "proc-macro2", 4482 "quote", 4483 - "syn 2.0.102", 4484 ] 4485 4486 [[package]] ··· 4542 4543 [[package]] 4544 name = "windows" 4545 - version = "0.61.1" 4546 source = "registry+https://github.com/rust-lang/crates.io-index" 4547 - checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" 4548 dependencies = [ 4549 "windows-collections", 4550 "windows-core", ··· 4594 dependencies = [ 4595 "proc-macro2", 4596 "quote", 4597 - "syn 2.0.102", 4598 ] 4599 4600 [[package]] ··· 4605 dependencies = [ 4606 "proc-macro2", 4607 "quote", 4608 - "syn 2.0.102", 4609 ] 4610 4611 [[package]] 4612 name = "windows-link" 4613 - version = "0.1.1" 4614 source = "registry+https://github.com/rust-lang/crates.io-index" 4615 - checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" 4616 4617 [[package]] 4618 name = "windows-numerics" ··· 4670 ] 4671 4672 [[package]] 4673 name = "windows-targets" 4674 version = "0.42.2" 4675 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4693 "windows_aarch64_gnullvm 0.52.6", 4694 "windows_aarch64_msvc 0.52.6", 4695 "windows_i686_gnu 0.52.6", 4696 - "windows_i686_gnullvm", 4697 "windows_i686_msvc 0.52.6", 4698 "windows_x86_64_gnu 0.52.6", 4699 "windows_x86_64_gnullvm 0.52.6", ··· 4701 ] 4702 4703 [[package]] 4704 name = "windows-threading" 4705 version = "0.1.0" 4706 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4731 checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 4732 4733 [[package]] 4734 name = "windows_aarch64_msvc" 4735 version = "0.42.2" 4736 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4743 checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 4744 4745 [[package]] 4746 name = "windows_i686_gnu" 4747 version = "0.42.2" 4748 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4755 checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 4756 4757 [[package]] 4758 name = "windows_i686_gnullvm" 4759 version = "0.52.6" 4760 source = "registry+https://github.com/rust-lang/crates.io-index" 4761 checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 4762 4763 [[package]] 4764 name = "windows_i686_msvc" 4765 version = "0.42.2" 4766 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4771 version = "0.52.6" 4772 source = "registry+https://github.com/rust-lang/crates.io-index" 4773 checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 4774 4775 [[package]] 4776 name = "windows_x86_64_gnu" ··· 4785 checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 4786 4787 [[package]] 4788 name = "windows_x86_64_gnullvm" 4789 version = "0.42.2" 4790 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4797 checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 4798 4799 [[package]] 4800 name = "windows_x86_64_msvc" 4801 version = "0.42.2" 4802 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4809 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 4810 4811 [[package]] 4812 name = "winnow" 4813 version = "0.5.40" 4814 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4819 4820 [[package]] 4821 name = "winnow" 4822 - version = "0.7.10" 4823 source = "registry+https://github.com/rust-lang/crates.io-index" 4824 - checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" 4825 dependencies = [ 4826 "memchr", 4827 ] ··· 4896 ] 4897 4898 [[package]] 4899 name = "x11" 4900 version = "2.21.0" 4901 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4917 ] 4918 4919 [[package]] 4920 name = "yoke" 4921 version = "0.8.0" 4922 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4936 dependencies = [ 4937 "proc-macro2", 4938 "quote", 4939 - "syn 2.0.102", 4940 "synstructure", 4941 ] 4942 ··· 4956 "async-trait", 4957 "blocking", 4958 "enumflags2", 4959 - "event-listener", 4960 "futures-core", 4961 "futures-lite", 4962 "hex", 4963 - "nix", 4964 "ordered-stream", 4965 "serde", 4966 "serde_repr", 4967 "tracing", 4968 "uds_windows", 4969 "windows-sys 0.59.0", 4970 - "winnow 0.7.10", 4971 "zbus_macros", 4972 "zbus_names", 4973 "zvariant", ··· 4982 "proc-macro-crate 3.3.0", 4983 "proc-macro2", 4984 "quote", 4985 - "syn 2.0.102", 4986 "zbus_names", 4987 "zvariant", 4988 "zvariant_utils", ··· 4996 dependencies = [ 4997 "serde", 4998 "static_assertions", 4999 - "winnow 0.7.10", 5000 "zvariant", 5001 ] 5002 ··· 5017 dependencies = [ 5018 "proc-macro2", 5019 "quote", 5020 - "syn 2.0.102", 5021 ] 5022 5023 [[package]] ··· 5037 dependencies = [ 5038 "proc-macro2", 5039 "quote", 5040 - "syn 2.0.102", 5041 "synstructure", 5042 ] 5043 5044 [[package]] 5045 name = "zerotrie" 5046 version = "0.2.2" 5047 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5071 dependencies = [ 5072 "proc-macro2", 5073 "quote", 5074 - "syn 2.0.102", 5075 ] 5076 5077 [[package]] ··· 5083 "endi", 5084 "enumflags2", 5085 "serde", 5086 - "winnow 0.7.10", 5087 "zvariant_derive", 5088 "zvariant_utils", 5089 ] ··· 5097 "proc-macro-crate 3.3.0", 5098 "proc-macro2", 5099 "quote", 5100 - "syn 2.0.102", 5101 "zvariant_utils", 5102 ] 5103 ··· 5111 "quote", 5112 "serde", 5113 "static_assertions", 5114 - "syn 2.0.102", 5115 - "winnow 0.7.10", 5116 ]
··· 3 version = 4 4 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]] 12 name = "addr2line" 13 version = "0.24.2" 14 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 24 checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" 25 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]] 62 name = "aho-corasick" 63 version = "1.1.3" 64 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 104 checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" 105 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]] 152 name = "async-broadcast" 153 version = "0.7.2" 154 source = "registry+https://github.com/rust-lang/crates.io-index" 155 checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" 156 dependencies = [ 157 + "event-listener 5.4.0", 158 "event-listener-strategy", 159 "futures-core", 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", 172 ] 173 174 [[package]] ··· 184 ] 185 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]] 200 name = "async-executor" 201 version = "1.13.2" 202 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 211 ] 212 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]] 229 name = "async-io" 230 version = "2.4.1" 231 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 250 source = "registry+https://github.com/rust-lang/crates.io-index" 251 checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" 252 dependencies = [ 253 + "event-listener 5.4.0", 254 "event-listener-strategy", 255 "pin-project-lite", 256 ] ··· 261 source = "registry+https://github.com/rust-lang/crates.io-index" 262 checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" 263 dependencies = [ 264 + "async-channel 2.3.1", 265 "async-io", 266 "async-lock", 267 "async-signal", 268 "async-task", 269 "blocking", 270 "cfg-if", 271 + "event-listener 5.4.0", 272 "futures-lite", 273 "rustix", 274 "tracing", ··· 282 dependencies = [ 283 "proc-macro2", 284 "quote", 285 + "syn 2.0.103", 286 ] 287 288 [[package]] ··· 304 ] 305 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]] 333 name = "async-task" 334 version = "4.7.1" 335 source = "registry+https://github.com/rust-lang/crates.io-index" 336 checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" 337 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]] 352 name = "async-trait" 353 version = "0.1.88" 354 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 356 dependencies = [ 357 "proc-macro2", 358 "quote", 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", 388 ] 389 390 [[package]] ··· 438 ] 439 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]] 447 name = "base64" 448 version = "0.21.7" 449 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 454 version = "0.22.1" 455 source = "registry+https://github.com/rust-lang/crates.io-index" 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 + ] 472 473 [[package]] 474 name = "bitflags" ··· 495 ] 496 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]] 507 name = "block2" 508 version = "0.5.1" 509 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 527 source = "registry+https://github.com/rust-lang/crates.io-index" 528 checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" 529 dependencies = [ 530 + "async-channel 2.3.1", 531 "async-task", 532 "futures-io", 533 "futures-lite", ··· 650 ] 651 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]] 662 name = "cc" 663 + version = "1.2.27" 664 source = "registry+https://github.com/rust-lang/crates.io-index" 665 + checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" 666 dependencies = [ 667 "shlex", 668 ] 669 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]] 683 name = "cesu8" 684 version = "1.1.0" 685 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 734 ] 735 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]] 747 name = "combine" 748 version = "4.6.7" 749 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 761 dependencies = [ 762 "crossbeam-utils", 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" 770 771 [[package]] 772 name = "convert_case" ··· 834 ] 835 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]] 852 name = "crc32fast" 853 version = "1.4.2" 854 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 873 checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 874 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]] 888 name = "crypto-common" 889 version = "0.1.6" 890 source = "registry+https://github.com/rust-lang/crates.io-index" 891 checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 892 dependencies = [ 893 "generic-array", 894 + "rand_core 0.6.4", 895 "typenum", 896 ] 897 ··· 919 checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" 920 dependencies = [ 921 "quote", 922 + "syn 2.0.103", 923 ] 924 925 [[package]] ··· 929 checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" 930 dependencies = [ 931 "quote", 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", 968 ] 969 970 [[package]] ··· 988 "proc-macro2", 989 "quote", 990 "strsim", 991 + "syn 2.0.103", 992 ] 993 994 [[package]] ··· 999 dependencies = [ 1000 "darling_core", 1001 "quote", 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", 1034 ] 1035 1036 [[package]] ··· 1053 "proc-macro2", 1054 "quote", 1055 "rustc_version", 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", 1078 ] 1079 1080 [[package]] ··· 1084 checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 1085 dependencies = [ 1086 "block-buffer", 1087 + "const-oid", 1088 "crypto-common", 1089 + "subtle", 1090 ] 1091 1092 [[package]] ··· 1107 "libc", 1108 "option-ext", 1109 "redox_users", 1110 + "windows-sys 0.60.2", 1111 ] 1112 1113 [[package]] ··· 1134 dependencies = [ 1135 "proc-macro2", 1136 "quote", 1137 + "syn 2.0.103", 1138 ] 1139 1140 [[package]] ··· 1157 dependencies = [ 1158 "proc-macro2", 1159 "quote", 1160 + "syn 2.0.103", 1161 ] 1162 1163 [[package]] ··· 1197 checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" 1198 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]] 1235 name = "embed-resource" 1236 version = "3.0.3" 1237 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1275 dependencies = [ 1276 "proc-macro2", 1277 "quote", 1278 + "syn 2.0.103", 1279 ] 1280 1281 [[package]] ··· 1306 1307 [[package]] 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" 1315 version = "5.4.0" 1316 source = "registry+https://github.com/rust-lang/crates.io-index" 1317 checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" ··· 1327 source = "registry+https://github.com/rust-lang/crates.io-index" 1328 checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" 1329 dependencies = [ 1330 + "event-listener 5.4.0", 1331 "pin-project-lite", 1332 ] 1333 ··· 1347 ] 1348 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]] 1366 name = "field-offset" 1367 version = "0.3.6" 1368 source = "registry+https://github.com/rust-lang/crates.io-index" 1369 checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" 1370 dependencies = [ 1371 + "memoffset 0.9.1", 1372 "rustc_version", 1373 ] 1374 ··· 1406 dependencies = [ 1407 "proc-macro2", 1408 "quote", 1409 + "syn 2.0.103", 1410 ] 1411 1412 [[package]] ··· 1503 dependencies = [ 1504 "proc-macro2", 1505 "quote", 1506 + "syn 2.0.103", 1507 ] 1508 1509 [[package]] ··· 1519 checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 1520 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]] 1532 name = "futures-util" 1533 version = "0.3.31" 1534 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1662 dependencies = [ 1663 "typenum", 1664 "version_check", 1665 + "zeroize", 1666 ] 1667 1668 [[package]] ··· 1684 dependencies = [ 1685 "cfg-if", 1686 "libc", 1687 + "wasi 0.11.1+wasi-snapshot-preview1", 1688 ] 1689 1690 [[package]] ··· 1700 ] 1701 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]] 1713 name = "gimli" 1714 version = "0.31.1" 1715 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1781 "proc-macro-error", 1782 "proc-macro2", 1783 "quote", 1784 + "syn 2.0.103", 1785 ] 1786 1787 [[package]] ··· 1801 checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" 1802 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]] 1828 name = "gobject-sys" 1829 version = "0.18.0" 1830 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1836 ] 1837 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]] 1850 name = "gtk" 1851 version = "0.18.2" 1852 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1895 "proc-macro-error", 1896 "proc-macro2", 1897 "quote", 1898 + "syn 2.0.103", 1899 ] 1900 1901 [[package]] ··· 1924 1925 [[package]] 1926 name = "hermit-abi" 1927 + version = "0.5.2" 1928 source = "registry+https://github.com/rust-lang/crates.io-index" 1929 + checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" 1930 1931 [[package]] 1932 name = "hex" 1933 version = "0.4.3" 1934 source = "registry+https://github.com/rust-lang/crates.io-index" 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 + ] 1954 1955 [[package]] 1956 name = "html5ever" ··· 2228 ] 2229 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]] 2261 name = "ipnet" 2262 version = "2.11.0" 2263 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2406 ] 2407 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]] 2418 name = "lazy_static" 2419 version = "1.5.0" 2420 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2446 2447 [[package]] 2448 name = "libc" 2449 + version = "0.2.173" 2450 source = "registry+https://github.com/rust-lang/crates.io-index" 2451 + checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" 2452 2453 [[package]] 2454 name = "libloading" ··· 2497 version = "0.4.27" 2498 source = "registry+https://github.com/rust-lang/crates.io-index" 2499 checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" 2500 + dependencies = [ 2501 + "value-bag", 2502 + ] 2503 2504 [[package]] 2505 name = "mac" ··· 2513 dependencies = [ 2514 "chrono", 2515 "futures", 2516 + "matchbox_socket", 2517 "rand 0.9.1", 2518 "rand_chacha 0.9.0", 2519 + "rmp-serde", 2520 "serde", 2521 "serde_json", 2522 + "specta", 2523 + "specta-typescript", 2524 "tauri", 2525 "tauri-build", 2526 "tauri-plugin-geolocation", 2527 "tauri-plugin-opener", 2528 + "tauri-plugin-store", 2529 + "tauri-specta", 2530 "tokio", 2531 + "uuid", 2532 ] 2533 2534 [[package]] ··· 2546 ] 2547 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]] 2593 name = "matches" 2594 version = "0.1.10" 2595 source = "registry+https://github.com/rust-lang/crates.io-index" 2596 checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" 2597 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]] 2609 name = "memchr" 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" 2617 source = "registry+https://github.com/rust-lang/crates.io-index" 2618 + checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" 2619 + dependencies = [ 2620 + "autocfg", 2621 + ] 2622 2623 [[package]] 2624 name = "memoffset" ··· 2636 checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 2637 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]] 2645 name = "miniz_oxide" 2646 version = "0.8.9" 2647 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2658 checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" 2659 dependencies = [ 2660 "libc", 2661 + "wasi 0.11.1+wasi-snapshot-preview1", 2662 "windows-sys 0.59.0", 2663 ] 2664 ··· 2721 2722 [[package]] 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" 2737 version = "0.30.1" 2738 source = "registry+https://github.com/rust-lang/crates.io-index" 2739 checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" ··· 2742 "cfg-if", 2743 "cfg_aliases", 2744 "libc", 2745 + "memoffset 0.9.1", 2746 ] 2747 2748 [[package]] ··· 2752 checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" 2753 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]] 2775 name = "num-conv" 2776 version = "0.1.0" 2777 source = "registry+https://github.com/rust-lang/crates.io-index" 2778 checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 2779 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]] 2790 name = "num-traits" 2791 version = "0.2.19" 2792 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2813 "proc-macro-crate 3.3.0", 2814 "proc-macro2", 2815 "quote", 2816 + "syn 2.0.103", 2817 ] 2818 2819 [[package]] ··· 3040 ] 3041 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]] 3052 name = "once_cell" 3053 version = "1.21.3" 3054 source = "registry+https://github.com/rust-lang/crates.io-index" 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" 3062 3063 [[package]] 3064 name = "open" ··· 3089 ] 3090 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]] 3116 name = "pango" 3117 version = "0.18.3" 3118 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3167 ] 3168 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]] 3176 name = "pathdiff" 3177 version = "0.2.3" 3178 source = "registry+https://github.com/rust-lang/crates.io-index" 3179 checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" 3180 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]] 3201 name = "percent-encoding" 3202 version = "2.3.1" 3203 source = "registry+https://github.com/rust-lang/crates.io-index" 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 + ] 3215 3216 [[package]] 3217 name = "phf" ··· 3317 "phf_shared 0.11.3", 3318 "proc-macro2", 3319 "quote", 3320 + "syn 2.0.103", 3321 ] 3322 3323 [[package]] ··· 3371 ] 3372 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]] 3384 name = "pkg-config" 3385 version = "0.3.32" 3386 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3388 3389 [[package]] 3390 name = "plist" 3391 + version = "1.7.2" 3392 source = "registry+https://github.com/rust-lang/crates.io-index" 3393 + checksum = "3d77244ce2d584cd84f6a15f86195b8c9b2a0dfbfd817c09e0464244091a58ed" 3394 dependencies = [ 3395 "base64 0.22.1", 3396 "indexmap 2.9.0", ··· 3426 "tracing", 3427 "windows-sys 0.59.0", 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" 3447 3448 [[package]] 3449 name = "potential_utf" ··· 3476 checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 3477 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]] 3488 name = "proc-macro-crate" 3489 version = "1.3.1" 3490 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3553 3554 [[package]] 3555 name = "quick-xml" 3556 + version = "0.37.5" 3557 source = "registry+https://github.com/rust-lang/crates.io-index" 3558 + checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" 3559 dependencies = [ 3560 "memchr", 3561 ] ··· 3692 checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" 3693 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]] 3709 name = "redox_syscall" 3710 + version = "0.5.13" 3711 source = "registry+https://github.com/rust-lang/crates.io-index" 3712 + checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" 3713 dependencies = [ 3714 "bitflags 2.9.1", 3715 ] ··· 3756 3757 [[package]] 3758 name = "reqwest" 3759 + version = "0.12.20" 3760 source = "registry+https://github.com/rust-lang/crates.io-index" 3761 + checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" 3762 dependencies = [ 3763 "base64 0.22.1", 3764 "bytes", ··· 3769 "http-body-util", 3770 "hyper", 3771 "hyper-util", 3772 "js-sys", 3773 "log", 3774 "percent-encoding", 3775 "pin-project-lite", 3776 "serde", ··· 3790 ] 3791 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]] 3865 name = "rustc-demangle" 3866 version = "0.1.25" 3867 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3877 ] 3878 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]] 3889 name = "rustix" 3890 version = "1.0.7" 3891 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3899 ] 3900 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]] 3967 name = "rustversion" 3968 version = "1.0.21" 3969 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4008 "proc-macro2", 4009 "quote", 4010 "serde_derive_internals", 4011 + "syn 2.0.103", 4012 ] 4013 4014 [[package]] ··· 4018 checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 4019 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]] 4057 name = "selectors" 4058 version = "0.22.0" 4059 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4061 dependencies = [ 4062 "bitflags 1.3.2", 4063 "cssparser", 4064 + "derive_more 0.99.20", 4065 "fxhash", 4066 "log", 4067 "matches", ··· 4083 ] 4084 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]] 4098 name = "serde" 4099 version = "1.0.219" 4100 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4115 ] 4116 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]] 4129 name = "serde_derive" 4130 version = "1.0.219" 4131 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4133 dependencies = [ 4134 "proc-macro2", 4135 "quote", 4136 + "syn 2.0.103", 4137 ] 4138 4139 [[package]] ··· 4144 dependencies = [ 4145 "proc-macro2", 4146 "quote", 4147 + "syn 2.0.103", 4148 ] 4149 4150 [[package]] ··· 4167 dependencies = [ 4168 "proc-macro2", 4169 "quote", 4170 + "syn 2.0.103", 4171 ] 4172 4173 [[package]] ··· 4218 "darling", 4219 "proc-macro2", 4220 "quote", 4221 + "syn 2.0.103", 4222 ] 4223 4224 [[package]] ··· 4254 ] 4255 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]] 4268 name = "sha2" 4269 version = "0.10.9" 4270 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4291 ] 4292 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]] 4304 name = "simd-adler32" 4305 version = "0.3.7" 4306 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4334 checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 4335 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]] 4346 name = "socket2" 4347 version = "0.5.10" 4348 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4401 ] 4402 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]] 4460 name = "stable_deref_trait" 4461 version = "1.2.0" 4462 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4500 checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 4501 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]] 4537 name = "swift-rs" 4538 version = "1.0.7" 4539 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4557 4558 [[package]] 4559 name = "syn" 4560 + version = "2.0.103" 4561 source = "registry+https://github.com/rust-lang/crates.io-index" 4562 + checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" 4563 dependencies = [ 4564 "proc-macro2", 4565 "quote", ··· 4583 dependencies = [ 4584 "proc-macro2", 4585 "quote", 4586 + "syn 2.0.103", 4587 ] 4588 4589 [[package]] ··· 4646 dependencies = [ 4647 "proc-macro2", 4648 "quote", 4649 + "syn 2.0.103", 4650 ] 4651 4652 [[package]] ··· 4689 "serde_json", 4690 "serde_repr", 4691 "serialize-to-javascript", 4692 + "specta", 4693 "swift-rs", 4694 "tauri-build", 4695 "tauri-macros", ··· 4747 "serde", 4748 "serde_json", 4749 "sha2", 4750 + "syn 2.0.103", 4751 "tauri-utils", 4752 "thiserror 2.0.12", 4753 "time", ··· 4765 "heck 0.5.0", 4766 "proc-macro2", 4767 "quote", 4768 + "syn 2.0.103", 4769 "tauri-codegen", 4770 "tauri-utils", 4771 ] ··· 4824 ] 4825 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]] 4843 name = "tauri-runtime" 4844 version = "2.6.0" 4845 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4889 ] 4890 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]] 4920 name = "tauri-utils" 4921 version = "2.4.0" 4922 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5021 dependencies = [ 5022 "proc-macro2", 5023 "quote", 5024 + "syn 2.0.103", 5025 ] 5026 5027 [[package]] ··· 5032 dependencies = [ 5033 "proc-macro2", 5034 "quote", 5035 + "syn 2.0.103", 5036 ] 5037 5038 [[package]] ··· 5086 "bytes", 5087 "libc", 5088 "mio", 5089 + "parking_lot", 5090 "pin-project-lite", 5091 + "signal-hook-registry", 5092 "socket2", 5093 "tokio-macros", 5094 "windows-sys 0.52.0", ··· 5102 dependencies = [ 5103 "proc-macro2", 5104 "quote", 5105 + "syn 2.0.103", 5106 ] 5107 5108 [[package]] ··· 5113 dependencies = [ 5114 "bytes", 5115 "futures-core", 5116 + "futures-io", 5117 "futures-sink", 5118 "pin-project-lite", 5119 "tokio", ··· 5173 "serde_spanned", 5174 "toml_datetime", 5175 "toml_write", 5176 + "winnow 0.7.11", 5177 ] 5178 5179 [[package]] ··· 5246 dependencies = [ 5247 "proc-macro2", 5248 "quote", 5249 + "syn 2.0.103", 5250 ] 5251 5252 [[package]] ··· 5287 checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 5288 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]] 5328 name = "typeid" 5329 version = "1.0.3" 5330 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5342 source = "registry+https://github.com/rust-lang/crates.io-index" 5343 checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" 5344 dependencies = [ 5345 + "memoffset 0.9.1", 5346 "tempfile", 5347 "winapi", 5348 ] ··· 5401 checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" 5402 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]] 5426 name = "url" 5427 version = "2.5.4" 5428 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5471 ] 5472 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]] 5480 name = "version-compare" 5481 version = "0.2.0" 5482 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5509 ] 5510 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]] 5521 name = "walkdir" 5522 version = "2.5.0" 5523 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5544 5545 [[package]] 5546 name = "wasi" 5547 + version = "0.11.1+wasi-snapshot-preview1" 5548 source = "registry+https://github.com/rust-lang/crates.io-index" 5549 + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 5550 5551 [[package]] 5552 name = "wasi" ··· 5579 "log", 5580 "proc-macro2", 5581 "quote", 5582 + "syn 2.0.103", 5583 "wasm-bindgen-shared", 5584 ] 5585 ··· 5614 dependencies = [ 5615 "proc-macro2", 5616 "quote", 5617 + "syn 2.0.103", 5618 "wasm-bindgen-backend", 5619 "wasm-bindgen-shared", 5620 ] ··· 5696 ] 5697 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]] 5927 name = "webview2-com" 5928 version = "0.37.0" 5929 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5945 dependencies = [ 5946 "proc-macro2", 5947 "quote", 5948 + "syn 2.0.103", 5949 ] 5950 5951 [[package]] ··· 6007 6008 [[package]] 6009 name = "windows" 6010 + version = "0.61.3" 6011 source = "registry+https://github.com/rust-lang/crates.io-index" 6012 + checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" 6013 dependencies = [ 6014 "windows-collections", 6015 "windows-core", ··· 6059 dependencies = [ 6060 "proc-macro2", 6061 "quote", 6062 + "syn 2.0.103", 6063 ] 6064 6065 [[package]] ··· 6070 dependencies = [ 6071 "proc-macro2", 6072 "quote", 6073 + "syn 2.0.103", 6074 ] 6075 6076 [[package]] 6077 name = "windows-link" 6078 + version = "0.1.3" 6079 source = "registry+https://github.com/rust-lang/crates.io-index" 6080 + checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" 6081 6082 [[package]] 6083 name = "windows-numerics" ··· 6135 ] 6136 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]] 6147 name = "windows-targets" 6148 version = "0.42.2" 6149 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6167 "windows_aarch64_gnullvm 0.52.6", 6168 "windows_aarch64_msvc 0.52.6", 6169 "windows_i686_gnu 0.52.6", 6170 + "windows_i686_gnullvm 0.52.6", 6171 "windows_i686_msvc 0.52.6", 6172 "windows_x86_64_gnu 0.52.6", 6173 "windows_x86_64_gnullvm 0.52.6", ··· 6175 ] 6176 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]] 6194 name = "windows-threading" 6195 version = "0.1.0" 6196 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6221 checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 6222 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]] 6230 name = "windows_aarch64_msvc" 6231 version = "0.42.2" 6232 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6239 checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 6240 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]] 6248 name = "windows_i686_gnu" 6249 version = "0.42.2" 6250 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6257 checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 6258 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]] 6266 name = "windows_i686_gnullvm" 6267 version = "0.52.6" 6268 source = "registry+https://github.com/rust-lang/crates.io-index" 6269 checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 6270 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]] 6278 name = "windows_i686_msvc" 6279 version = "0.42.2" 6280 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6285 version = "0.52.6" 6286 source = "registry+https://github.com/rust-lang/crates.io-index" 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" 6294 6295 [[package]] 6296 name = "windows_x86_64_gnu" ··· 6305 checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 6306 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]] 6314 name = "windows_x86_64_gnullvm" 6315 version = "0.42.2" 6316 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6323 checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 6324 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]] 6332 name = "windows_x86_64_msvc" 6333 version = "0.42.2" 6334 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6341 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 6342 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]] 6350 name = "winnow" 6351 version = "0.5.40" 6352 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6357 6358 [[package]] 6359 name = "winnow" 6360 + version = "0.7.11" 6361 source = "registry+https://github.com/rust-lang/crates.io-index" 6362 + checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" 6363 dependencies = [ 6364 "memchr", 6365 ] ··· 6434 ] 6435 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]] 6456 name = "x11" 6457 version = "2.21.0" 6458 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6474 ] 6475 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]] 6516 name = "yoke" 6517 version = "0.8.0" 6518 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6532 dependencies = [ 6533 "proc-macro2", 6534 "quote", 6535 + "syn 2.0.103", 6536 "synstructure", 6537 ] 6538 ··· 6552 "async-trait", 6553 "blocking", 6554 "enumflags2", 6555 + "event-listener 5.4.0", 6556 "futures-core", 6557 "futures-lite", 6558 "hex", 6559 + "nix 0.30.1", 6560 "ordered-stream", 6561 "serde", 6562 "serde_repr", 6563 "tracing", 6564 "uds_windows", 6565 "windows-sys 0.59.0", 6566 + "winnow 0.7.11", 6567 "zbus_macros", 6568 "zbus_names", 6569 "zvariant", ··· 6578 "proc-macro-crate 3.3.0", 6579 "proc-macro2", 6580 "quote", 6581 + "syn 2.0.103", 6582 "zbus_names", 6583 "zvariant", 6584 "zvariant_utils", ··· 6592 dependencies = [ 6593 "serde", 6594 "static_assertions", 6595 + "winnow 0.7.11", 6596 "zvariant", 6597 ] 6598 ··· 6613 dependencies = [ 6614 "proc-macro2", 6615 "quote", 6616 + "syn 2.0.103", 6617 ] 6618 6619 [[package]] ··· 6633 dependencies = [ 6634 "proc-macro2", 6635 "quote", 6636 + "syn 2.0.103", 6637 "synstructure", 6638 ] 6639 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]] 6661 name = "zerotrie" 6662 version = "0.2.2" 6663 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6687 dependencies = [ 6688 "proc-macro2", 6689 "quote", 6690 + "syn 2.0.103", 6691 ] 6692 6693 [[package]] ··· 6699 "endi", 6700 "enumflags2", 6701 "serde", 6702 + "winnow 0.7.11", 6703 "zvariant_derive", 6704 "zvariant_utils", 6705 ] ··· 6713 "proc-macro-crate 3.3.0", 6714 "proc-macro2", 6715 "quote", 6716 + "syn 2.0.103", 6717 "zvariant_utils", 6718 ] 6719 ··· 6727 "quote", 6728 "serde", 6729 "static_assertions", 6730 + "syn 2.0.103", 6731 + "winnow 0.7.11", 6732 ]
+8 -1
backend/Cargo.toml
··· 18 serde = { version = "1", features = ["derive"] } 19 serde_json = "1" 20 chrono = { version = "0.4", features = ["serde", "now"] } 21 - tokio = { version = "1.45", features = ["sync", "macros", "time"] } 22 rand = { version = "0.9", features = ["thread_rng"] } 23 tauri-plugin-geolocation = "2.2" 24 rand_chacha = "0.9.0" 25 futures = "0.3.31"
··· 18 serde = { version = "1", features = ["derive"] } 19 serde_json = "1" 20 chrono = { version = "0.4", features = ["serde", "now"] } 21 + tokio = { version = "1.45", features = ["sync", "macros", "time", "fs"] } 22 rand = { version = "0.9", features = ["thread_rng"] } 23 tauri-plugin-geolocation = "2.2" 24 rand_chacha = "0.9.0" 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 /// A "part" of a location 4 pub type LocationComponent = f64; 5 6 - #[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)] 7 /// Some location in the world as gotten from a Geolocation API 8 pub struct Location { 9 /// Latitude
··· 3 /// A "part" of a location 4 pub type LocationComponent = f64; 5 6 + #[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, specta::Type)] 7 /// Some location in the world as gotten from a Geolocation API 8 pub struct Location { 9 /// Latitude
+17 -10
backend/src/game/mod.rs
··· 1 use chrono::{DateTime, Utc}; 2 pub use events::GameEvent; 3 - use matchbox_socket::PeerId; 4 use powerups::PowerUpType; 5 pub use settings::GameSettings; 6 - use std::{collections::HashMap, fmt::Debug, hash::Hash, ops::Deref, sync::Arc, time::Duration}; 7 use uuid::Uuid; 8 9 use tokio::{sync::RwLock, time::MissedTickBehavior}; ··· 16 mod transport; 17 18 pub use location::{Location, LocationService}; 19 - use state::GameState; 20 pub use transport::Transport; 21 22 - /// Type used to uniquely identify players in the game 23 pub trait PlayerId: 24 - Debug + Hash + Ord + Eq + PartialEq + Send + Sync + Sized + Copy + Clone 25 { 26 } 27 28 impl PlayerId for Uuid {} 29 - impl PlayerId for PeerId {} 30 31 /// Convenence alias for UTC DT 32 pub type UtcDT = DateTime<Utc>; ··· 58 interval, 59 state: RwLock::new(state), 60 } 61 } 62 63 pub async fn mark_caught(&self) { ··· 244 } 245 246 async fn send_message(&self, msg: GameEvent<u32>) { 247 - for (id, tx) in self.txs.iter().enumerate() { 248 tx.send(msg.clone()).await.expect("Failed to send msg"); 249 } 250 } ··· 318 } 319 320 pub async fn start(&self) { 321 - for (id, game) in &self.games { 322 let game = game.clone(); 323 - let id = *id; 324 tokio::spawn(async move { 325 game.main_loop().await; 326 }); ··· 572 async fn test_powerup_ping_seekers() { 573 let settings = mk_settings(); 574 575 - let mut mat = MockMatch::new(settings, 5, 3); 576 577 mat.start().await; 578
··· 1 use chrono::{DateTime, Utc}; 2 pub use events::GameEvent; 3 use powerups::PowerUpType; 4 pub use settings::GameSettings; 5 + use std::{ 6 + collections::HashMap, 7 + fmt::{Debug, Display}, 8 + hash::Hash, 9 + sync::Arc, 10 + time::Duration, 11 + }; 12 use uuid::Uuid; 13 14 use tokio::{sync::RwLock, time::MissedTickBehavior}; ··· 21 mod transport; 22 23 pub use location::{Location, LocationService}; 24 + pub use state::GameState; 25 pub use transport::Transport; 26 27 pub trait PlayerId: 28 + Display + Debug + Hash + Ord + Eq + PartialEq + Send + Sync + Sized + Copy + Clone + specta::Type 29 { 30 + 31 } 32 33 impl PlayerId for Uuid {} 34 35 /// Convenence alias for UTC DT 36 pub type UtcDT = DateTime<Utc>; ··· 62 interval, 63 state: RwLock::new(state), 64 } 65 + } 66 + 67 + pub async fn clone_state(&self) -> GameState<Id> { 68 + self.state.read().await.clone() 69 } 70 71 pub async fn mark_caught(&self) { ··· 252 } 253 254 async fn send_message(&self, msg: GameEvent<u32>) { 255 + for (_id, tx) in self.txs.iter().enumerate() { 256 tx.send(msg.clone()).await.expect("Failed to send msg"); 257 } 258 } ··· 326 } 327 328 pub async fn start(&self) { 329 + for (_id, game) in &self.games { 330 let game = game.clone(); 331 tokio::spawn(async move { 332 game.main_loop().await; 333 }); ··· 579 async fn test_powerup_ping_seekers() { 580 let settings = mk_settings(); 581 582 + let mat = MockMatch::new(settings, 5, 3); 583 584 mat.start().await; 585
+1 -3
backend/src/game/powerups.rs
··· 1 use serde::{Deserialize, Serialize}; 2 3 - use super::{location::Location, PlayerId}; 4 - 5 - #[derive(Debug, Clone, Copy, Serialize, Deserialize)] 6 /// Type of powerup 7 pub enum PowerUpType { 8 /// Ping a random seeker instead of a hider
··· 1 use serde::{Deserialize, Serialize}; 2 3 + #[derive(Debug, Clone, Copy, Serialize, Deserialize, specta::Type)] 4 /// Type of powerup 5 pub enum PowerUpType { 6 /// Ping a random seeker instead of a hider
+6 -6
backend/src/game/settings.rs
··· 3 4 use super::location::Location; 5 6 - #[derive(Debug, Clone, Serialize, Deserialize)] 7 /// The starting condition for global pings to begin 8 pub enum PingStartCondition { 9 /// Wait For X players to be caught before beginning global pings ··· 14 Instant, 15 } 16 17 - #[derive(Debug, Clone, Serialize, Deserialize)] 18 /// Settings for the game, host is the only person able to change these 19 pub struct GameSettings { 20 /// The random seed used for shared rng 21 - pub random_seed: u64, 22 /// The number of seconds to wait before seekers are allowed to go 23 pub hiding_time_seconds: u32, 24 /// Condition to wait for global pings to begin 25 pub ping_start: PingStartCondition, 26 /// Time between pings after the condition is met (first ping is either after the interval or 27 /// instantly after the condition is met depending on the condition) 28 - pub ping_minutes_interval: u64, 29 /// Condition for powerups to start spawning 30 pub powerup_start: PingStartCondition, 31 /// Chance every minute of a powerup spawning, out of 100 32 pub powerup_chance: u32, 33 /// Hard cooldown between powerups spawning 34 - pub powerup_minutes_cooldown: u64, 35 /// Locations that powerups may spawn at 36 pub powerup_locations: Vec<Location>, 37 } ··· 45 impl Default for GameSettings { 46 fn default() -> Self { 47 Self { 48 - random_seed: rand::random_range(0..=u64::MAX), 49 hiding_time_seconds: 60, 50 ping_start: PingStartCondition::Players(2), 51 ping_minutes_interval: 3,
··· 3 4 use super::location::Location; 5 6 + #[derive(Debug, Clone, Serialize, Deserialize, specta::Type)] 7 /// The starting condition for global pings to begin 8 pub enum PingStartCondition { 9 /// Wait For X players to be caught before beginning global pings ··· 14 Instant, 15 } 16 17 + #[derive(Debug, Clone, Serialize, Deserialize, specta::Type)] 18 /// Settings for the game, host is the only person able to change these 19 pub struct GameSettings { 20 /// The random seed used for shared rng 21 + pub random_seed: u32, 22 /// The number of seconds to wait before seekers are allowed to go 23 pub hiding_time_seconds: u32, 24 /// Condition to wait for global pings to begin 25 pub ping_start: PingStartCondition, 26 /// Time between pings after the condition is met (first ping is either after the interval or 27 /// instantly after the condition is met depending on the condition) 28 + pub ping_minutes_interval: u32, 29 /// Condition for powerups to start spawning 30 pub powerup_start: PingStartCondition, 31 /// Chance every minute of a powerup spawning, out of 100 32 pub powerup_chance: u32, 33 /// Hard cooldown between powerups spawning 34 + pub powerup_minutes_cooldown: u32, 35 /// Locations that powerups may spawn at 36 pub powerup_locations: Vec<Location>, 37 } ··· 45 impl Default for GameSettings { 46 fn default() -> Self { 47 Self { 48 + random_seed: rand::random_range(0..=u32::MAX), 49 hiding_time_seconds: 60, 50 ping_start: PingStartCondition::Players(2), 51 ping_minutes_interval: 3,
+12 -10
backend/src/game/state.rs
··· 1 use std::collections::HashMap; 2 - use std::sync::Arc; 3 4 - use chrono::{DateTime, Utc}; 5 use rand::{ 6 distr::{Bernoulli, Distribution}, 7 - rngs::ThreadRng, 8 seq::{IndexedRandom, IteratorRandom}, 9 Rng, SeedableRng, 10 }; ··· 18 PlayerId, UtcDT, 19 }; 20 21 - #[derive(Debug, Clone, Serialize, Deserialize)] 22 /// An on-map ping of a player 23 pub struct PlayerPing<Id: PlayerId> { 24 /// Location of the ping ··· 42 } 43 } 44 45 - #[derive(Debug, Clone, Serialize)] 46 - /// Represents the game's state as a whole, seamlessly connects public and player state. 47 /// This struct handles all logic regarding state updates 48 pub struct GameState<Id: PlayerId> { 49 /// The id of this player in this game ··· 73 /// Powerup on the map that players can grab. Only one at a time 74 available_powerup: Option<Location>, 75 76 /// The game's current settings 77 settings: GameSettings, 78 ··· 96 97 impl<Id: PlayerId> GameState<Id> { 98 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); 100 let increment = rand.random_range(-100..100); 101 102 Self { ··· 107 caught_state: initial_caught_state, 108 available_powerup: None, 109 powerup_bernoulli: settings.get_powerup_bernoulli(), 110 - shared_random_state: settings.random_seed, 111 settings, 112 last_global_ping: None, 113 last_powerup_spawn: None, ··· 169 !self.is_seeker() 170 && self.last_global_ping.as_ref().is_some_and(|last_ping| { 171 let minutes = (*now - *last_ping).num_minutes().unsigned_abs(); 172 - minutes >= self.settings.ping_minutes_interval 173 }) 174 } 175 ··· 202 pub fn should_spawn_powerup(&self, now: &UtcDT) -> bool { 203 self.last_powerup_spawn.as_ref().is_some_and(|last_spawn| { 204 let minutes = (*now - *last_spawn).num_minutes().unsigned_abs(); 205 - minutes >= self.settings.powerup_minutes_cooldown 206 }) 207 } 208 209 pub fn powerup_location(&self) -> Option<Location> { 210 self.available_powerup 211 } ··· 236 } 237 238 /// Get a ping for a player 239 pub fn get_ping(&self, player: Id) -> Option<&PlayerPing<Id>> { 240 self.pings.get(&player) 241 } ··· 292 self.held_powerup = choice; 293 } 294 295 pub fn force_set_powerup(&mut self, typ: PowerUpType) { 296 self.held_powerup = Some(typ); 297 } ··· 323 } 324 325 /// Gets if a player was caught or not 326 pub fn get_caught(&self, player: Id) -> Option<bool> { 327 self.caught_state.get(&player).copied() 328 }
··· 1 use std::collections::HashMap; 2 3 + use chrono::Utc; 4 use rand::{ 5 distr::{Bernoulli, Distribution}, 6 seq::{IndexedRandom, IteratorRandom}, 7 Rng, SeedableRng, 8 }; ··· 16 PlayerId, UtcDT, 17 }; 18 19 + #[derive(Debug, Clone, Serialize, Deserialize, specta::Type)] 20 /// An on-map ping of a player 21 pub struct PlayerPing<Id: PlayerId> { 22 /// Location of the ping ··· 40 } 41 } 42 43 + #[derive(Debug, Clone, Serialize, specta::Type)] 44 /// This struct handles all logic regarding state updates 45 pub struct GameState<Id: PlayerId> { 46 /// The id of this player in this game ··· 70 /// Powerup on the map that players can grab. Only one at a time 71 available_powerup: Option<Location>, 72 73 + #[serde(skip)] 74 /// The game's current settings 75 settings: GameSettings, 76 ··· 94 95 impl<Id: PlayerId> GameState<Id> { 96 pub fn new(settings: GameSettings, my_id: Id, initial_caught_state: HashMap<Id, bool>) -> Self { 97 + let mut rand = ChaCha20Rng::seed_from_u64(settings.random_seed as u64); 98 let increment = rand.random_range(-100..100); 99 100 Self { ··· 105 caught_state: initial_caught_state, 106 available_powerup: None, 107 powerup_bernoulli: settings.get_powerup_bernoulli(), 108 + shared_random_state: settings.random_seed as u64, 109 settings, 110 last_global_ping: None, 111 last_powerup_spawn: None, ··· 167 !self.is_seeker() 168 && self.last_global_ping.as_ref().is_some_and(|last_ping| { 169 let minutes = (*now - *last_ping).num_minutes().unsigned_abs(); 170 + minutes >= (self.settings.ping_minutes_interval as u64) 171 }) 172 } 173 ··· 200 pub fn should_spawn_powerup(&self, now: &UtcDT) -> bool { 201 self.last_powerup_spawn.as_ref().is_some_and(|last_spawn| { 202 let minutes = (*now - *last_spawn).num_minutes().unsigned_abs(); 203 + minutes >= (self.settings.powerup_minutes_cooldown as u64) 204 }) 205 } 206 207 + #[cfg(test)] 208 pub fn powerup_location(&self) -> Option<Location> { 209 self.available_powerup 210 } ··· 235 } 236 237 /// Get a ping for a player 238 + #[cfg(test)] 239 pub fn get_ping(&self, player: Id) -> Option<&PlayerPing<Id>> { 240 self.pings.get(&player) 241 } ··· 292 self.held_powerup = choice; 293 } 294 295 + #[cfg(test)] 296 pub fn force_set_powerup(&mut self, typ: PowerUpType) { 297 self.held_powerup = Some(typ); 298 } ··· 324 } 325 326 /// Gets if a player was caught or not 327 + #[cfg(test)] 328 pub fn get_caught(&self, player: Id) -> Option<bool> { 329 self.caught_state.get(&player).copied() 330 }
+199 -20
backend/src/lib.rs
··· 6 7 use std::{sync::Arc, time::Duration}; 8 9 - use game::{Game as BaseGame, GameSettings}; 10 - use lobby::{Lobby, StartGameInfo}; 11 use location::TauriLocation; 12 - use matchbox_socket::PeerId; 13 use profile::PlayerProfile; 14 use tauri::{AppHandle, Manager, State}; 15 use tokio::sync::RwLock; 16 use transport::MatchboxTransport; 17 18 - type Game = BaseGame<PeerId, TauriLocation, MatchboxTransport>; 19 20 enum AppState { 21 Setup, ··· 45 } 46 47 impl AppState { 48 - pub fn start_game(&mut self, app: AppHandle, my_id: PeerId, start: StartGameInfo) { 49 match self { 50 AppState::Lobby(lobby) => { 51 let transport = lobby.clone_transport(); ··· 77 AppState::Menu(profile) => { 78 let host = join_code.is_none(); 79 let room_code = join_code.unwrap_or_else(generate_join_code); 80 - let app_after = app.clone(); 81 let lobby = Arc::new(Lobby::new( 82 server_url(), 83 &room_code, 84 - app, 85 host, 86 profile.clone(), 87 settings, ··· 89 *self = AppState::Lobby(lobby.clone()); 90 tokio::spawn(async move { 91 let (my_id, start) = lobby.open().await; 92 - let app_game = app_after.clone(); 93 - let state_handle = app_after.state::<AppStateHandle>(); 94 let mut state = state_handle.write().await; 95 state.start_game(app_game, my_id, start); 96 }); ··· 100 } 101 } 102 103 #[tauri::command] 104 - async fn go_to_lobby( 105 app: AppHandle, 106 join_code: Option<String>, 107 settings: GameSettings, 108 state: State<'_, AppStateHandle>, 109 - ) -> Result<(), String> { 110 let mut state = state.write().await; 111 state.start_lobby(join_code, app, settings); 112 Ok(()) 113 } 114 115 #[tauri::command] 116 - async fn host_start_game(state: State<'_, AppStateHandle>) -> Result<(), String> { 117 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()), 124 } 125 } 126 ··· 128 pub fn run() { 129 let state = RwLock::new(AppState::Setup); 130 131 tauri::Builder::default() 132 .manage(state) 133 .plugin(tauri_plugin_opener::init()) 134 .plugin(tauri_plugin_geolocation::init()) 135 .plugin(tauri_plugin_store::Builder::default().build()) 136 .setup(|app| { 137 let handle = app.handle().clone(); 138 - tokio::spawn(async move { 139 if let Some(profile) = PlayerProfile::load_from_store(&handle) { 140 let state_handle = handle.state::<AppStateHandle>(); 141 let mut state = state_handle.write().await; ··· 144 }); 145 Ok(()) 146 }) 147 - .invoke_handler(tauri::generate_handler![go_to_lobby]) 148 .run(tauri::generate_context!()) 149 .expect("error while running tauri application"); 150 }
··· 6 7 use std::{sync::Arc, time::Duration}; 8 9 + use game::{Game as BaseGame, GameSettings, GameState as BaseGameState}; 10 + use lobby::{Lobby, LobbyState, StartGameInfo}; 11 use location::TauriLocation; 12 use profile::PlayerProfile; 13 + use serde::{Deserialize, Serialize}; 14 + use specta_typescript::Typescript; 15 use tauri::{AppHandle, Manager, State}; 16 + use tauri_specta::collect_commands; 17 use tokio::sync::RwLock; 18 use transport::MatchboxTransport; 19 + use uuid::Uuid; 20 21 + type Game = BaseGame<Uuid, TauriLocation, MatchboxTransport>; 22 23 enum AppState { 24 Setup, ··· 48 } 49 50 impl AppState { 51 + pub fn start_game(&mut self, app: AppHandle, my_id: Uuid, start: StartGameInfo) { 52 match self { 53 AppState::Lobby(lobby) => { 54 let transport = lobby.clone_transport(); ··· 80 AppState::Menu(profile) => { 81 let host = join_code.is_none(); 82 let room_code = join_code.unwrap_or_else(generate_join_code); 83 let lobby = Arc::new(Lobby::new( 84 server_url(), 85 &room_code, 86 host, 87 profile.clone(), 88 settings, ··· 90 *self = AppState::Lobby(lobby.clone()); 91 tokio::spawn(async move { 92 let (my_id, start) = lobby.open().await; 93 + let app_game = app.clone(); 94 + let state_handle = app.state::<AppStateHandle>(); 95 let mut state = state_handle.write().await; 96 state.start_game(app_game, my_id, start); 97 }); ··· 101 } 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 + 118 #[tauri::command] 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( 174 app: AppHandle, 175 join_code: Option<String>, 176 settings: GameSettings, 177 state: State<'_, AppStateHandle>, 178 + ) -> Result { 179 let mut state = state.write().await; 180 state.start_lobby(join_code, app, settings); 181 Ok(()) 182 } 183 184 + // AppState::Lobby COMMANDS 185 + 186 #[tauri::command] 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> { 264 let state = state.read().await; 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()) 284 } 285 } 286 ··· 288 pub fn run() { 289 let state = RwLock::new(AppState::Setup); 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 + 310 tauri::Builder::default() 311 .manage(state) 312 .plugin(tauri_plugin_opener::init()) 313 .plugin(tauri_plugin_geolocation::init()) 314 .plugin(tauri_plugin_store::Builder::default().build()) 315 + .invoke_handler(builder.invoke_handler()) 316 .setup(|app| { 317 let handle = app.handle().clone(); 318 + tauri::async_runtime::spawn(async move { 319 if let Some(profile) = PlayerProfile::load_from_store(&handle) { 320 let state_handle = handle.state::<AppStateHandle>(); 321 let mut state = state_handle.write().await; ··· 324 }); 325 Ok(()) 326 }) 327 .run(tauri::generate_context!()) 328 .expect("error while running tauri application"); 329 }
+13 -18
backend/src/lobby.rs
··· 1 - use std::{collections::HashMap, path::PathBuf, sync::Arc}; 2 3 - use matchbox_socket::PeerId; 4 use serde::{Deserialize, Serialize}; 5 - use tauri::{path::BaseDirectory, AppHandle, Manager}; 6 use tokio::sync::Mutex; 7 8 use crate::{ 9 game::GameSettings, ··· 14 #[derive(Debug, Clone, Serialize, Deserialize)] 15 pub struct StartGameInfo { 16 pub settings: GameSettings, 17 - pub initial_caught_state: HashMap<PeerId, bool>, 18 } 19 20 #[derive(Debug, Clone, Serialize, Deserialize)] ··· 29 PlayerSwitch(bool), 30 } 31 32 - #[derive(Serialize, Deserialize)] 33 - struct LobbyState { 34 - profiles: HashMap<PeerId, PlayerProfile>, 35 join_code: String, 36 /// True represents seeker, false hider 37 - teams: HashMap<PeerId, bool>, 38 self_seeker: bool, 39 settings: GameSettings, 40 } 41 42 pub struct Lobby { 43 - pfp_dir: PathBuf, 44 is_host: bool, 45 - self_profile: PlayerProfile, 46 state: Mutex<LobbyState>, 47 transport: Arc<MatchboxTransport>, 48 } ··· 51 pub fn new( 52 ws_url_base: &str, 53 join_code: &str, 54 - app: AppHandle, 55 host: bool, 56 profile: PlayerProfile, 57 settings: GameSettings, 58 ) -> Self { 59 - let pfp_dir = app 60 - .path() 61 - .resolve("pfp_cache", BaseDirectory::Cache) 62 - .expect("Failed to get Cache Dir"); 63 - 64 Self { 65 - pfp_dir, 66 transport: Arc::new(MatchboxTransport::new(&format!( 67 "{ws_url_base}/{join_code}" 68 ))), ··· 80 81 pub fn clone_transport(&self) -> Arc<MatchboxTransport> { 82 self.transport.clone() 83 } 84 85 /// Set self as seeker or hider ··· 123 } 124 } 125 126 - pub async fn open(&self) -> (PeerId, StartGameInfo) { 127 let transport_inner = self.transport.clone(); 128 tokio::spawn(async move { transport_inner.transport_loop().await }); 129
··· 1 + use std::{collections::HashMap, sync::Arc}; 2 3 use serde::{Deserialize, Serialize}; 4 use tokio::sync::Mutex; 5 + use uuid::Uuid; 6 7 use crate::{ 8 game::GameSettings, ··· 13 #[derive(Debug, Clone, Serialize, Deserialize)] 14 pub struct StartGameInfo { 15 pub settings: GameSettings, 16 + pub initial_caught_state: HashMap<Uuid, bool>, 17 } 18 19 #[derive(Debug, Clone, Serialize, Deserialize)] ··· 28 PlayerSwitch(bool), 29 } 30 31 + #[derive(Clone, Serialize, Deserialize, specta::Type)] 32 + pub struct LobbyState { 33 + profiles: HashMap<Uuid, PlayerProfile>, 34 join_code: String, 35 /// True represents seeker, false hider 36 + teams: HashMap<Uuid, bool>, 37 self_seeker: bool, 38 settings: GameSettings, 39 } 40 41 pub struct Lobby { 42 is_host: bool, 43 + pub self_profile: PlayerProfile, 44 state: Mutex<LobbyState>, 45 transport: Arc<MatchboxTransport>, 46 } ··· 49 pub fn new( 50 ws_url_base: &str, 51 join_code: &str, 52 host: bool, 53 profile: PlayerProfile, 54 settings: GameSettings, 55 ) -> Self { 56 Self { 57 transport: Arc::new(MatchboxTransport::new(&format!( 58 "{ws_url_base}/{join_code}" 59 ))), ··· 71 72 pub fn clone_transport(&self) -> Arc<MatchboxTransport> { 73 self.transport.clone() 74 + } 75 + 76 + pub async fn clone_state(&self) -> LobbyState { 77 + self.state.lock().await.clone() 78 } 79 80 /// Set self as seeker or hider ··· 118 } 119 } 120 121 + pub async fn open(&self) -> (Uuid, StartGameInfo) { 122 let transport_inner = self.transport.clone(); 123 tokio::spawn(async move { transport_inner.transport_loop().await }); 124
+4 -4
backend/src/profile.rs
··· 2 use tauri::AppHandle; 3 use tauri_plugin_store::StoreExt; 4 5 - #[derive(Clone, Debug, Serialize, Deserialize)] 6 pub struct PlayerProfile { 7 display_name: String, 8 pfp_base64: Option<String>, ··· 11 const STORE_NAME: &str = "profile.json"; 12 13 impl PlayerProfile { 14 - pub fn has_pfp(&self) -> bool { 15 - self.pfp_base64.is_some() 16 - } 17 18 pub fn load_from_store(app: &AppHandle) -> Option<Self> { 19 let store = app.store(STORE_NAME).expect("Couldn't Create Store");
··· 2 use tauri::AppHandle; 3 use tauri_plugin_store::StoreExt; 4 5 + #[derive(Clone, Debug, Serialize, Deserialize, specta::Type)] 6 pub struct PlayerProfile { 7 display_name: String, 8 pfp_base64: Option<String>, ··· 11 const STORE_NAME: &str = "profile.json"; 12 13 impl PlayerProfile { 14 + // pub fn has_pfp(&self) -> bool { 15 + // self.pfp_base64.is_some() 16 + // } 17 18 pub fn load_from_store(app: &AppHandle) -> Option<Self> { 19 let store = app.store(STORE_NAME).expect("Couldn't Create Store");
+16 -15
backend/src/transport.rs
··· 1 use std::{collections::HashSet, time::Duration}; 2 3 - use futures::{FutureExt, SinkExt}; 4 use matchbox_socket::{PeerId, PeerState, WebRtcSocket}; 5 use serde::{Deserialize, Serialize}; 6 use tokio::sync::{Mutex, RwLock}; 7 8 use crate::{ 9 game::{GameEvent, Transport}, ··· 13 #[derive(Debug, Serialize, Deserialize, Clone)] 14 pub enum TransportMessage { 15 /// Message related to the actual game 16 - Game(GameEvent<PeerId>), 17 /// Message related to the pre-game lobby 18 Lobby(LobbyMessage), 19 /// Internal message when peer connects ··· 22 PeerDisconnect, 23 } 24 25 - type OutgoingMsgPair = (Option<PeerId>, TransportMessage); 26 type OutgoingQueueSender = tokio::sync::mpsc::Sender<OutgoingMsgPair>; 27 type OutgoingQueueReceiver = tokio::sync::mpsc::Receiver<OutgoingMsgPair>; 28 29 - type IncomingMsgPair = (PeerId, TransportMessage); 30 type IncomingQueueSender = tokio::sync::mpsc::Sender<IncomingMsgPair>; 31 type IncomingQueueReceiver = tokio::sync::mpsc::Receiver<IncomingMsgPair>; 32 ··· 34 ws_url: String, 35 incoming: (IncomingQueueSender, Mutex<IncomingQueueReceiver>), 36 outgoing: (OutgoingQueueSender, Mutex<OutgoingQueueReceiver>), 37 - my_id: RwLock<Option<PeerId>>, 38 } 39 40 impl MatchboxTransport { ··· 50 } 51 } 52 53 - pub async fn send_transport_message(&self, peer: Option<PeerId>, msg: TransportMessage) { 54 self.outgoing 55 .0 56 .send((peer, msg)) ··· 63 incoming_rx.recv().await 64 } 65 66 - pub async fn get_my_id(&self) -> Option<PeerId> { 67 *self.my_id.read().await 68 } 69 ··· 92 }; 93 self.incoming 94 .0 95 - .send((peer, msg)) 96 .await 97 .expect("Failed to push to incoming queue"); 98 } ··· 101 if let Ok(msg) = rmp_serde::from_slice(&data) { 102 self.incoming 103 .0 104 - .send((peer, msg)) 105 .await 106 .expect("Failed to push to incoming queue"); 107 } ··· 109 110 if my_id.is_none() { 111 if let Some(new_id) = socket.id() { 112 - my_id = Some(new_id); 113 - *self.my_id.write().await = Some(new_id); 114 } 115 } 116 ··· 128 if let Some(peer) = peer { 129 let channel = socket.channel_mut(0); 130 let data = encoded.into_boxed_slice(); 131 - channel.send(data, peer); 132 } else { 133 // Send to self as well 134 if let Some(myself) = my_id { ··· 153 } 154 } 155 156 - impl Transport<PeerId> for MatchboxTransport { 157 - async fn receive_message(&self) -> Option<GameEvent<PeerId>> { 158 self.recv_transport_message() 159 .await 160 .and_then(|(_, msg)| match msg { ··· 163 }) 164 } 165 166 - async fn send_message(&self, msg: GameEvent<PeerId>) { 167 let msg = TransportMessage::Game(msg); 168 self.send_transport_message(None, msg).await; 169 }
··· 1 use std::{collections::HashSet, time::Duration}; 2 3 + use futures::FutureExt; 4 use matchbox_socket::{PeerId, PeerState, WebRtcSocket}; 5 use serde::{Deserialize, Serialize}; 6 use tokio::sync::{Mutex, RwLock}; 7 + use uuid::Uuid; 8 9 use crate::{ 10 game::{GameEvent, Transport}, ··· 14 #[derive(Debug, Serialize, Deserialize, Clone)] 15 pub enum TransportMessage { 16 /// Message related to the actual game 17 + Game(GameEvent<Uuid>), 18 /// Message related to the pre-game lobby 19 Lobby(LobbyMessage), 20 /// Internal message when peer connects ··· 23 PeerDisconnect, 24 } 25 26 + type OutgoingMsgPair = (Option<Uuid>, TransportMessage); 27 type OutgoingQueueSender = tokio::sync::mpsc::Sender<OutgoingMsgPair>; 28 type OutgoingQueueReceiver = tokio::sync::mpsc::Receiver<OutgoingMsgPair>; 29 30 + type IncomingMsgPair = (Uuid, TransportMessage); 31 type IncomingQueueSender = tokio::sync::mpsc::Sender<IncomingMsgPair>; 32 type IncomingQueueReceiver = tokio::sync::mpsc::Receiver<IncomingMsgPair>; 33 ··· 35 ws_url: String, 36 incoming: (IncomingQueueSender, Mutex<IncomingQueueReceiver>), 37 outgoing: (OutgoingQueueSender, Mutex<OutgoingQueueReceiver>), 38 + my_id: RwLock<Option<Uuid>>, 39 } 40 41 impl MatchboxTransport { ··· 51 } 52 } 53 54 + pub async fn send_transport_message(&self, peer: Option<Uuid>, msg: TransportMessage) { 55 self.outgoing 56 .0 57 .send((peer, msg)) ··· 64 incoming_rx.recv().await 65 } 66 67 + pub async fn get_my_id(&self) -> Option<Uuid> { 68 *self.my_id.read().await 69 } 70 ··· 93 }; 94 self.incoming 95 .0 96 + .send((peer.0, msg)) 97 .await 98 .expect("Failed to push to incoming queue"); 99 } ··· 102 if let Ok(msg) = rmp_serde::from_slice(&data) { 103 self.incoming 104 .0 105 + .send((peer.0, msg)) 106 .await 107 .expect("Failed to push to incoming queue"); 108 } ··· 110 111 if my_id.is_none() { 112 if let Some(new_id) = socket.id() { 113 + my_id = Some(new_id.0); 114 + *self.my_id.write().await = Some(new_id.0); 115 } 116 } 117 ··· 129 if let Some(peer) = peer { 130 let channel = socket.channel_mut(0); 131 let data = encoded.into_boxed_slice(); 132 + channel.send(data, PeerId(peer)); 133 } else { 134 // Send to self as well 135 if let Some(myself) = my_id { ··· 154 } 155 } 156 157 + impl Transport<Uuid> for MatchboxTransport { 158 + async fn receive_message(&self) -> Option<GameEvent<Uuid>> { 159 self.recv_transport_message() 160 .await 161 .and_then(|(_, msg)| match msg { ··· 164 }) 165 } 166 167 + async fn send_message(&self, msg: GameEvent<Uuid>) { 168 let msg = TransportMessage::Game(msg); 169 self.send_transport_message(None, msg).await; 170 }
frontend/src/bindings.ts

This is a binary file and will not be displayed.