this repo has no description
3
fork

Configure Feed

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

⚡Use a websocket instead of an http api

+423 -791
+280 -602
Cargo.lock
··· 155 155 dependencies = [ 156 156 "hermit-abi 0.1.19", 157 157 "libc", 158 - "winapi", 158 + "winapi 0.3.9", 159 159 ] 160 160 161 161 [[package]] ··· 172 172 dependencies = [ 173 173 "addr2line", 174 174 "cc", 175 - "cfg-if", 175 + "cfg-if 1.0.0", 176 176 "libc", 177 177 "miniz_oxide 0.7.2", 178 178 "object", ··· 180 180 ] 181 181 182 182 [[package]] 183 - name = "base-x" 184 - version = "0.2.11" 185 - source = "registry+https://github.com/rust-lang/crates.io-index" 186 - checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" 187 - 188 - [[package]] 189 183 name = "base64" 190 184 version = "0.22.1" 191 185 source = "registry+https://github.com/rust-lang/crates.io-index" 192 186 checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 193 187 194 188 [[package]] 195 - name = "bincode" 196 - version = "1.3.3" 197 - source = "registry+https://github.com/rust-lang/crates.io-index" 198 - checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" 199 - dependencies = [ 200 - "serde", 201 - ] 202 - 203 - [[package]] 204 189 name = "bindgen" 205 190 version = "0.70.1" 206 191 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 232 217 233 218 [[package]] 234 219 name = "block-buffer" 220 + version = "0.7.3" 221 + source = "registry+https://github.com/rust-lang/crates.io-index" 222 + checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" 223 + dependencies = [ 224 + "block-padding", 225 + "byte-tools", 226 + "byteorder", 227 + "generic-array 0.12.4", 228 + ] 229 + 230 + [[package]] 231 + name = "block-buffer" 235 232 version = "0.10.4" 236 233 source = "registry+https://github.com/rust-lang/crates.io-index" 237 234 checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 238 235 dependencies = [ 239 - "generic-array", 236 + "generic-array 0.14.7", 240 237 ] 241 238 242 239 [[package]] 243 - name = "borrow-bag" 244 - version = "1.1.1" 240 + name = "block-padding" 241 + version = "0.1.5" 245 242 source = "registry+https://github.com/rust-lang/crates.io-index" 246 - checksum = "b654fee34da149f35fa96ba970ca2d342490f7461fbaa99b6588b63595c7fccf" 243 + checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" 244 + dependencies = [ 245 + "byte-tools", 246 + ] 247 247 248 248 [[package]] 249 249 name = "bumpalo" ··· 252 252 checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" 253 253 254 254 [[package]] 255 + name = "byte-tools" 256 + version = "0.3.1" 257 + source = "registry+https://github.com/rust-lang/crates.io-index" 258 + checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" 259 + 260 + [[package]] 255 261 name = "bytemuck" 256 262 version = "1.21.0" 257 263 source = "registry+https://github.com/rust-lang/crates.io-index" 258 264 checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" 259 265 260 266 [[package]] 267 + name = "byteorder" 268 + version = "1.5.0" 269 + source = "registry+https://github.com/rust-lang/crates.io-index" 270 + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 271 + 272 + [[package]] 261 273 name = "byteorder-lite" 262 274 version = "0.1.0" 263 275 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 265 277 266 278 [[package]] 267 279 name = "bytes" 268 - version = "1.10.0" 280 + version = "0.4.12" 269 281 source = "registry+https://github.com/rust-lang/crates.io-index" 270 - checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" 282 + checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" 283 + dependencies = [ 284 + "byteorder", 285 + "iovec", 286 + ] 271 287 272 288 [[package]] 273 289 name = "camino" ··· 295 311 dependencies = [ 296 312 "camino", 297 313 "cargo-platform", 298 - "semver 1.0.25", 314 + "semver", 299 315 "serde", 300 316 "serde_json", 301 317 "thiserror", ··· 318 334 dependencies = [ 319 335 "nom", 320 336 ] 337 + 338 + [[package]] 339 + name = "cfg-if" 340 + version = "0.1.10" 341 + source = "registry+https://github.com/rust-lang/crates.io-index" 342 + checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 321 343 322 344 [[package]] 323 345 name = "cfg-if" ··· 396 418 ] 397 419 398 420 [[package]] 399 - name = "const_fn" 400 - version = "0.4.11" 401 - source = "registry+https://github.com/rust-lang/crates.io-index" 402 - checksum = "2f8a2ca5ac02d09563609681103aada9e1777d54fc57a5acd7a41404f9c93b6e" 403 - 404 - [[package]] 405 - name = "cookie" 406 - version = "0.15.2" 407 - source = "registry+https://github.com/rust-lang/crates.io-index" 408 - checksum = "fc6e25dfc584d06a3dbf775d207ff00d7de98d824c952dd2233dfbb261889a42" 409 - dependencies = [ 410 - "time 0.2.27", 411 - "version_check", 412 - ] 413 - 414 - [[package]] 415 421 name = "core-foundation" 416 422 version = "0.9.4" 417 423 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 451 457 source = "registry+https://github.com/rust-lang/crates.io-index" 452 458 checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" 453 459 dependencies = [ 454 - "cfg-if", 460 + "cfg-if 1.0.0", 455 461 ] 456 462 457 463 [[package]] ··· 516 522 source = "registry+https://github.com/rust-lang/crates.io-index" 517 523 checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 518 524 dependencies = [ 519 - "generic-array", 525 + "generic-array 0.14.7", 520 526 "typenum", 521 527 ] 522 528 ··· 543 549 544 550 [[package]] 545 551 name = "digest" 552 + version = "0.8.1" 553 + source = "registry+https://github.com/rust-lang/crates.io-index" 554 + checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" 555 + dependencies = [ 556 + "generic-array 0.12.4", 557 + ] 558 + 559 + [[package]] 560 + name = "digest" 546 561 version = "0.10.7" 547 562 source = "registry+https://github.com/rust-lang/crates.io-index" 548 563 checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 549 564 dependencies = [ 550 - "block-buffer", 565 + "block-buffer 0.10.4", 551 566 "crypto-common", 552 567 ] 553 - 554 - [[package]] 555 - name = "discard" 556 - version = "1.0.4" 557 - source = "registry+https://github.com/rust-lang/crates.io-index" 558 - checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" 559 568 560 569 [[package]] 561 570 name = "displaydoc" ··· 622 631 checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 623 632 624 633 [[package]] 634 + name = "fake-simd" 635 + version = "0.1.2" 636 + source = "registry+https://github.com/rust-lang/crates.io-index" 637 + checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" 638 + 639 + [[package]] 625 640 name = "fdeflate" 626 641 version = "0.3.7" 627 642 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 672 687 checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" 673 688 674 689 [[package]] 675 - name = "fnv" 676 - version = "1.0.7" 677 - source = "registry+https://github.com/rust-lang/crates.io-index" 678 - checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 679 - 680 - [[package]] 681 690 name = "fontconfig-parser" 682 691 version = "0.5.7" 683 692 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 710 719 ] 711 720 712 721 [[package]] 713 - name = "futures-channel" 714 - version = "0.3.31" 722 + name = "fuchsia-zircon" 723 + version = "0.3.3" 715 724 source = "registry+https://github.com/rust-lang/crates.io-index" 716 - checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 725 + checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 717 726 dependencies = [ 718 - "futures-core", 727 + "bitflags 1.3.2", 728 + "fuchsia-zircon-sys", 719 729 ] 730 + 731 + [[package]] 732 + name = "fuchsia-zircon-sys" 733 + version = "0.3.3" 734 + source = "registry+https://github.com/rust-lang/crates.io-index" 735 + checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 720 736 721 737 [[package]] 722 738 name = "futures-core" ··· 736 752 ] 737 753 738 754 [[package]] 739 - name = "futures-sink" 740 - version = "0.3.31" 741 - source = "registry+https://github.com/rust-lang/crates.io-index" 742 - checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 743 - 744 - [[package]] 745 755 name = "futures-task" 746 756 version = "0.3.31" 747 757 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 763 773 764 774 [[package]] 765 775 name = "generic-array" 776 + version = "0.12.4" 777 + source = "registry+https://github.com/rust-lang/crates.io-index" 778 + checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" 779 + dependencies = [ 780 + "typenum", 781 + ] 782 + 783 + [[package]] 784 + name = "generic-array" 766 785 version = "0.14.7" 767 786 source = "registry+https://github.com/rust-lang/crates.io-index" 768 787 checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" ··· 773 792 774 793 [[package]] 775 794 name = "getrandom" 776 - version = "0.2.14" 795 + version = "0.1.16" 777 796 source = "registry+https://github.com/rust-lang/crates.io-index" 778 - checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" 797 + checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 779 798 dependencies = [ 780 - "cfg-if", 781 - "js-sys", 799 + "cfg-if 1.0.0", 782 800 "libc", 783 - "wasi 0.11.0+wasi-snapshot-preview1", 784 - "wasm-bindgen", 801 + "wasi 0.9.0+wasi-snapshot-preview1", 785 802 ] 786 803 787 804 [[package]] 788 805 name = "getrandom" 789 - version = "0.3.1" 806 + version = "0.2.14" 790 807 source = "registry+https://github.com/rust-lang/crates.io-index" 791 - checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" 808 + checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" 792 809 dependencies = [ 793 - "cfg-if", 810 + "cfg-if 1.0.0", 811 + "js-sys", 794 812 "libc", 795 - "wasi 0.13.3+wasi-0.2.2", 796 - "windows-targets 0.52.5", 813 + "wasi 0.11.0+wasi-snapshot-preview1", 814 + "wasm-bindgen", 797 815 ] 798 816 799 817 [[package]] ··· 830 848 ] 831 849 832 850 [[package]] 833 - name = "gotham" 834 - version = "0.7.4" 835 - source = "registry+https://github.com/rust-lang/crates.io-index" 836 - checksum = "9c0e1892f0ec4bb9a4f5441c1d56af1d13d9bbb2a8f44ac58a670862eff3f8a6" 837 - dependencies = [ 838 - "anyhow", 839 - "base64", 840 - "bincode", 841 - "borrow-bag", 842 - "bytes", 843 - "cookie", 844 - "futures-util", 845 - "gotham_derive", 846 - "httpdate", 847 - "hyper", 848 - "linked-hash-map", 849 - "log", 850 - "mime", 851 - "mime_guess", 852 - "num_cpus", 853 - "percent-encoding", 854 - "pin-project", 855 - "rand", 856 - "rand_chacha", 857 - "regex", 858 - "serde", 859 - "thiserror", 860 - "time 0.3.37", 861 - "tokio", 862 - "uuid", 863 - ] 864 - 865 - [[package]] 866 - name = "gotham_derive" 867 - version = "0.7.1" 868 - source = "registry+https://github.com/rust-lang/crates.io-index" 869 - checksum = "b39260b1324f4cf40bf4d86e4aa3a7574fabf6b25fe1b07345b776698d2a0459" 870 - dependencies = [ 871 - "quote", 872 - "syn 2.0.98", 873 - ] 874 - 875 - [[package]] 876 - name = "h2" 877 - version = "0.3.26" 878 - source = "registry+https://github.com/rust-lang/crates.io-index" 879 - checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" 880 - dependencies = [ 881 - "bytes", 882 - "fnv", 883 - "futures-core", 884 - "futures-sink", 885 - "futures-util", 886 - "http 0.2.12", 887 - "indexmap", 888 - "slab", 889 - "tokio", 890 - "tokio-util", 891 - "tracing", 892 - ] 893 - 894 - [[package]] 895 851 name = "half" 896 852 version = "1.8.3" 897 853 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 945 901 checksum = "62adaabb884c94955b19907d60019f4e145d091c75345379e70d1ee696f7854f" 946 902 947 903 [[package]] 948 - name = "http" 949 - version = "0.2.12" 950 - source = "registry+https://github.com/rust-lang/crates.io-index" 951 - checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" 952 - dependencies = [ 953 - "bytes", 954 - "fnv", 955 - "itoa", 956 - ] 957 - 958 - [[package]] 959 - name = "http" 960 - version = "1.2.0" 961 - source = "registry+https://github.com/rust-lang/crates.io-index" 962 - checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" 963 - dependencies = [ 964 - "bytes", 965 - "fnv", 966 - "itoa", 967 - ] 968 - 969 - [[package]] 970 - name = "http-body" 971 - version = "0.4.6" 972 - source = "registry+https://github.com/rust-lang/crates.io-index" 973 - checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" 974 - dependencies = [ 975 - "bytes", 976 - "http 0.2.12", 977 - "pin-project-lite", 978 - ] 979 - 980 - [[package]] 981 904 name = "httparse" 982 905 version = "1.10.0" 983 906 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 996 919 checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 997 920 998 921 [[package]] 999 - name = "hyper" 1000 - version = "0.14.32" 1001 - source = "registry+https://github.com/rust-lang/crates.io-index" 1002 - checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" 1003 - dependencies = [ 1004 - "bytes", 1005 - "futures-channel", 1006 - "futures-core", 1007 - "futures-util", 1008 - "h2", 1009 - "http 0.2.12", 1010 - "http-body", 1011 - "httparse", 1012 - "httpdate", 1013 - "itoa", 1014 - "pin-project-lite", 1015 - "socket2", 1016 - "tokio", 1017 - "tower-service", 1018 - "tracing", 1019 - "want", 1020 - ] 1021 - 1022 - [[package]] 1023 922 name = "iana-time-zone" 1024 923 version = "0.1.60" 1025 924 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1226 1125 source = "registry+https://github.com/rust-lang/crates.io-index" 1227 1126 checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 1228 1127 dependencies = [ 1229 - "cfg-if", 1128 + "cfg-if 1.0.0", 1129 + ] 1130 + 1131 + [[package]] 1132 + name = "iovec" 1133 + version = "0.1.4" 1134 + source = "registry+https://github.com/rust-lang/crates.io-index" 1135 + checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" 1136 + dependencies = [ 1137 + "libc", 1230 1138 ] 1231 1139 1232 1140 [[package]] ··· 1257 1165 checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" 1258 1166 dependencies = [ 1259 1167 "wasm-bindgen", 1168 + ] 1169 + 1170 + [[package]] 1171 + name = "kernel32-sys" 1172 + version = "0.2.2" 1173 + source = "registry+https://github.com/rust-lang/crates.io-index" 1174 + checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 1175 + dependencies = [ 1176 + "winapi 0.2.8", 1177 + "winapi-build", 1260 1178 ] 1261 1179 1262 1180 [[package]] ··· 1276 1194 checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1277 1195 1278 1196 [[package]] 1197 + name = "lazycell" 1198 + version = "1.3.0" 1199 + source = "registry+https://github.com/rust-lang/crates.io-index" 1200 + checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" 1201 + 1202 + [[package]] 1279 1203 name = "libc" 1280 1204 version = "0.2.169" 1281 1205 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1287 1211 source = "registry+https://github.com/rust-lang/crates.io-index" 1288 1212 checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" 1289 1213 dependencies = [ 1290 - "cfg-if", 1214 + "cfg-if 1.0.0", 1291 1215 "windows-targets 0.52.5", 1292 1216 ] 1293 1217 ··· 1296 1220 version = "0.2.11" 1297 1221 source = "registry+https://github.com/rust-lang/crates.io-index" 1298 1222 checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" 1299 - 1300 - [[package]] 1301 - name = "linked-hash-map" 1302 - version = "0.5.6" 1303 - source = "registry+https://github.com/rust-lang/crates.io-index" 1304 - checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" 1305 1223 1306 1224 [[package]] 1307 1225 name = "litemap" ··· 1384 1302 ] 1385 1303 1386 1304 [[package]] 1387 - name = "mime" 1388 - version = "0.3.17" 1389 - source = "registry+https://github.com/rust-lang/crates.io-index" 1390 - checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 1391 - 1392 - [[package]] 1393 - name = "mime_guess" 1394 - version = "2.0.5" 1395 - source = "registry+https://github.com/rust-lang/crates.io-index" 1396 - checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" 1397 - dependencies = [ 1398 - "mime", 1399 - "unicase", 1400 - ] 1401 - 1402 - [[package]] 1403 1305 name = "minimal-lexical" 1404 1306 version = "0.2.1" 1405 1307 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1426 1328 1427 1329 [[package]] 1428 1330 name = "mio" 1429 - version = "1.0.3" 1331 + version = "0.6.23" 1430 1332 source = "registry+https://github.com/rust-lang/crates.io-index" 1431 - checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" 1333 + checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" 1432 1334 dependencies = [ 1335 + "cfg-if 0.1.10", 1336 + "fuchsia-zircon", 1337 + "fuchsia-zircon-sys", 1338 + "iovec", 1339 + "kernel32-sys", 1433 1340 "libc", 1434 - "wasi 0.11.0+wasi-snapshot-preview1", 1435 - "windows-sys", 1341 + "log", 1342 + "miow", 1343 + "net2", 1344 + "slab", 1345 + "winapi 0.2.8", 1346 + ] 1347 + 1348 + [[package]] 1349 + name = "mio-extras" 1350 + version = "2.0.6" 1351 + source = "registry+https://github.com/rust-lang/crates.io-index" 1352 + checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" 1353 + dependencies = [ 1354 + "lazycell", 1355 + "log", 1356 + "mio", 1357 + "slab", 1358 + ] 1359 + 1360 + [[package]] 1361 + name = "miow" 1362 + version = "0.2.2" 1363 + source = "registry+https://github.com/rust-lang/crates.io-index" 1364 + checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" 1365 + dependencies = [ 1366 + "kernel32-sys", 1367 + "net2", 1368 + "winapi 0.2.8", 1369 + "ws2_32-sys", 1436 1370 ] 1437 1371 1438 1372 [[package]] ··· 1441 1375 source = "registry+https://github.com/rust-lang/crates.io-index" 1442 1376 checksum = "3ffa00dec017b5b1a8b7cf5e2c008bfda1aa7e0697ac1508b491fdf2622fb4d8" 1443 1377 dependencies = [ 1444 - "rand", 1378 + "rand 0.8.5", 1445 1379 ] 1446 1380 1447 1381 [[package]] ··· 1460 1394 ] 1461 1395 1462 1396 [[package]] 1397 + name = "net2" 1398 + version = "0.2.39" 1399 + source = "registry+https://github.com/rust-lang/crates.io-index" 1400 + checksum = "b13b648036a2339d06de780866fbdfda0dde886de7b3af2ddeba8b14f4ee34ac" 1401 + dependencies = [ 1402 + "cfg-if 0.1.10", 1403 + "libc", 1404 + "winapi 0.3.9", 1405 + ] 1406 + 1407 + [[package]] 1463 1408 name = "nih_log" 1464 1409 version = "0.3.1" 1465 1410 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1469 1414 "log", 1470 1415 "once_cell", 1471 1416 "termcolor", 1472 - "time 0.3.37", 1417 + "time", 1473 1418 "windows", 1474 1419 ] 1475 1420 ··· 1485 1430 "atomic_refcell", 1486 1431 "backtrace", 1487 1432 "bitflags 1.3.2", 1488 - "cfg-if", 1433 + "cfg-if 1.0.0", 1489 1434 "clap-sys", 1490 1435 "core-foundation", 1491 1436 "crossbeam", ··· 1620 1565 checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 1621 1566 1622 1567 [[package]] 1568 + name = "opaque-debug" 1569 + version = "0.2.3" 1570 + source = "registry+https://github.com/rust-lang/crates.io-index" 1571 + checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" 1572 + 1573 + [[package]] 1623 1574 name = "parking_lot" 1624 1575 version = "0.12.3" 1625 1576 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1635 1586 source = "registry+https://github.com/rust-lang/crates.io-index" 1636 1587 checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 1637 1588 dependencies = [ 1638 - "cfg-if", 1589 + "cfg-if 1.0.0", 1639 1590 "libc", 1640 1591 "redox_syscall", 1641 1592 "smallvec", ··· 1700 1651 checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" 1701 1652 1702 1653 [[package]] 1703 - name = "pin-project" 1704 - version = "1.1.9" 1705 - source = "registry+https://github.com/rust-lang/crates.io-index" 1706 - checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" 1707 - dependencies = [ 1708 - "pin-project-internal", 1709 - ] 1710 - 1711 - [[package]] 1712 - name = "pin-project-internal" 1713 - version = "1.1.9" 1714 - source = "registry+https://github.com/rust-lang/crates.io-index" 1715 - checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" 1716 - dependencies = [ 1717 - "proc-macro2", 1718 - "quote", 1719 - "syn 2.0.98", 1720 - ] 1721 - 1722 - [[package]] 1723 1654 name = "pin-project-lite" 1724 1655 version = "0.2.16" 1725 1656 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1784 1715 checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 1785 1716 1786 1717 [[package]] 1787 - name = "proc-macro-hack" 1788 - version = "0.5.20+deprecated" 1789 - source = "registry+https://github.com/rust-lang/crates.io-index" 1790 - checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" 1791 - 1792 - [[package]] 1793 1718 name = "proc-macro2" 1794 1719 version = "1.0.93" 1795 1720 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1815 1740 1816 1741 [[package]] 1817 1742 name = "rand" 1743 + version = "0.7.3" 1744 + source = "registry+https://github.com/rust-lang/crates.io-index" 1745 + checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 1746 + dependencies = [ 1747 + "getrandom 0.1.16", 1748 + "libc", 1749 + "rand_chacha 0.2.2", 1750 + "rand_core 0.5.1", 1751 + "rand_hc", 1752 + ] 1753 + 1754 + [[package]] 1755 + name = "rand" 1818 1756 version = "0.8.5" 1819 1757 source = "registry+https://github.com/rust-lang/crates.io-index" 1820 1758 checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1821 1759 dependencies = [ 1822 1760 "libc", 1823 - "rand_chacha", 1824 - "rand_core", 1761 + "rand_chacha 0.3.1", 1762 + "rand_core 0.6.4", 1763 + ] 1764 + 1765 + [[package]] 1766 + name = "rand_chacha" 1767 + version = "0.2.2" 1768 + source = "registry+https://github.com/rust-lang/crates.io-index" 1769 + checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 1770 + dependencies = [ 1771 + "ppv-lite86", 1772 + "rand_core 0.5.1", 1825 1773 ] 1826 1774 1827 1775 [[package]] ··· 1831 1779 checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1832 1780 dependencies = [ 1833 1781 "ppv-lite86", 1834 - "rand_core", 1782 + "rand_core 0.6.4", 1783 + ] 1784 + 1785 + [[package]] 1786 + name = "rand_core" 1787 + version = "0.5.1" 1788 + source = "registry+https://github.com/rust-lang/crates.io-index" 1789 + checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 1790 + dependencies = [ 1791 + "getrandom 0.1.16", 1835 1792 ] 1836 1793 1837 1794 [[package]] ··· 1844 1801 ] 1845 1802 1846 1803 [[package]] 1804 + name = "rand_hc" 1805 + version = "0.2.0" 1806 + source = "registry+https://github.com/rust-lang/crates.io-index" 1807 + checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 1808 + dependencies = [ 1809 + "rand_core 0.5.1", 1810 + ] 1811 + 1812 + [[package]] 1847 1813 name = "raw-window-handle" 1848 1814 version = "0.5.2" 1849 1815 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1890 1856 source = "git+https://github.com/nicokoch/reflink.git?rev=e8d93b465f5d9ad340cd052b64bbc77b8ee107e2#e8d93b465f5d9ad340cd052b64bbc77b8ee107e2" 1891 1857 dependencies = [ 1892 1858 "libc", 1893 - "winapi", 1859 + "winapi 0.3.9", 1894 1860 ] 1895 1861 1896 1862 [[package]] ··· 1955 1921 checksum = "4cf3ad431593a2bb204ed1c609814aa9f95b169f8cef6b811b03261097f2453b" 1956 1922 1957 1923 [[package]] 1958 - name = "ring" 1959 - version = "0.17.9" 1960 - source = "registry+https://github.com/rust-lang/crates.io-index" 1961 - checksum = "e75ec5e92c4d8aede845126adc388046234541629e76029599ed35a003c7ed24" 1962 - dependencies = [ 1963 - "cc", 1964 - "cfg-if", 1965 - "getrandom 0.2.14", 1966 - "libc", 1967 - "untrusted", 1968 - "windows-sys", 1969 - ] 1970 - 1971 - [[package]] 1972 1924 name = "roxmltree" 1973 1925 version = "0.19.0" 1974 1926 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1999 1951 checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 2000 1952 2001 1953 [[package]] 2002 - name = "rustc_version" 2003 - version = "0.2.3" 2004 - source = "registry+https://github.com/rust-lang/crates.io-index" 2005 - checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 2006 - dependencies = [ 2007 - "semver 0.9.0", 2008 - ] 2009 - 2010 - [[package]] 2011 - name = "rustls" 2012 - version = "0.23.23" 2013 - source = "registry+https://github.com/rust-lang/crates.io-index" 2014 - checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" 2015 - dependencies = [ 2016 - "log", 2017 - "once_cell", 2018 - "ring", 2019 - "rustls-pki-types", 2020 - "rustls-webpki", 2021 - "subtle", 2022 - "zeroize", 2023 - ] 2024 - 2025 - [[package]] 2026 - name = "rustls-pemfile" 2027 - version = "2.2.0" 2028 - source = "registry+https://github.com/rust-lang/crates.io-index" 2029 - checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" 2030 - dependencies = [ 2031 - "rustls-pki-types", 2032 - ] 2033 - 2034 - [[package]] 2035 - name = "rustls-pki-types" 2036 - version = "1.11.0" 2037 - source = "registry+https://github.com/rust-lang/crates.io-index" 2038 - checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" 2039 - 2040 - [[package]] 2041 - name = "rustls-webpki" 2042 - version = "0.102.8" 2043 - source = "registry+https://github.com/rust-lang/crates.io-index" 2044 - checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" 2045 - dependencies = [ 2046 - "ring", 2047 - "rustls-pki-types", 2048 - "untrusted", 2049 - ] 2050 - 2051 - [[package]] 2052 1954 name = "rustversion" 2053 1955 version = "1.0.15" 2054 1956 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2106 2008 2107 2009 [[package]] 2108 2010 name = "semver" 2109 - version = "0.9.0" 2110 - source = "registry+https://github.com/rust-lang/crates.io-index" 2111 - checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 2112 - dependencies = [ 2113 - "semver-parser", 2114 - ] 2115 - 2116 - [[package]] 2117 - name = "semver" 2118 2011 version = "1.0.25" 2119 2012 source = "registry+https://github.com/rust-lang/crates.io-index" 2120 2013 checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" 2121 2014 dependencies = [ 2122 2015 "serde", 2123 2016 ] 2124 - 2125 - [[package]] 2126 - name = "semver-parser" 2127 - version = "0.7.0" 2128 - source = "registry+https://github.com/rust-lang/crates.io-index" 2129 - checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 2130 2017 2131 2018 [[package]] 2132 2019 name = "serde" ··· 2179 2066 ] 2180 2067 2181 2068 [[package]] 2182 - name = "sha1" 2183 - version = "0.6.1" 2069 + name = "sha-1" 2070 + version = "0.8.2" 2184 2071 source = "registry+https://github.com/rust-lang/crates.io-index" 2185 - checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" 2072 + checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" 2186 2073 dependencies = [ 2187 - "sha1_smol", 2074 + "block-buffer 0.7.3", 2075 + "digest 0.8.1", 2076 + "fake-simd", 2077 + "opaque-debug", 2188 2078 ] 2189 2079 2190 2080 [[package]] 2191 - name = "sha1_smol" 2192 - version = "1.0.1" 2193 - source = "registry+https://github.com/rust-lang/crates.io-index" 2194 - checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" 2195 - 2196 - [[package]] 2197 2081 name = "sha2" 2198 2082 version = "0.10.8" 2199 2083 source = "registry+https://github.com/rust-lang/crates.io-index" 2200 2084 checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 2201 2085 dependencies = [ 2202 - "cfg-if", 2086 + "cfg-if 1.0.0", 2203 2087 "cpufeatures", 2204 - "digest", 2088 + "digest 0.10.7", 2205 2089 ] 2206 2090 2207 2091 [[package]] ··· 2218 2102 "ffmpeg-next", 2219 2103 "futures-util", 2220 2104 "getrandom 0.2.14", 2221 - "gotham", 2222 2105 "handlebars", 2223 2106 "hound", 2224 2107 "indicatif", ··· 2231 2114 "nih_plug", 2232 2115 "num_cpus", 2233 2116 "once_cell", 2234 - "rand", 2117 + "rand 0.8.5", 2235 2118 "rayon", 2236 2119 "resvg", 2237 2120 "rgb2yuv420", ··· 2246 2129 "svg", 2247 2130 "tiny-skia", 2248 2131 "tiny_http", 2249 - "ureq", 2250 2132 "video-rs", 2251 2133 "wasm-bindgen", 2252 2134 "web-sys", 2135 + "ws", 2253 2136 ] 2254 2137 2255 2138 [[package]] ··· 2314 2197 checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" 2315 2198 2316 2199 [[package]] 2317 - name = "socket2" 2318 - version = "0.5.8" 2319 - source = "registry+https://github.com/rust-lang/crates.io-index" 2320 - checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" 2321 - dependencies = [ 2322 - "libc", 2323 - "windows-sys", 2324 - ] 2325 - 2326 - [[package]] 2327 2200 name = "stable_deref_trait" 2328 2201 version = "1.2.0" 2329 2202 source = "registry+https://github.com/rust-lang/crates.io-index" 2330 2203 checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 2331 2204 2332 2205 [[package]] 2333 - name = "standback" 2334 - version = "0.2.17" 2335 - source = "registry+https://github.com/rust-lang/crates.io-index" 2336 - checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" 2337 - dependencies = [ 2338 - "version_check", 2339 - ] 2340 - 2341 - [[package]] 2342 - name = "stdweb" 2343 - version = "0.4.20" 2344 - source = "registry+https://github.com/rust-lang/crates.io-index" 2345 - checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" 2346 - dependencies = [ 2347 - "discard", 2348 - "rustc_version", 2349 - "stdweb-derive", 2350 - "stdweb-internal-macros", 2351 - "stdweb-internal-runtime", 2352 - "wasm-bindgen", 2353 - ] 2354 - 2355 - [[package]] 2356 - name = "stdweb-derive" 2357 - version = "0.5.3" 2358 - source = "registry+https://github.com/rust-lang/crates.io-index" 2359 - checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" 2360 - dependencies = [ 2361 - "proc-macro2", 2362 - "quote", 2363 - "serde", 2364 - "serde_derive", 2365 - "syn 1.0.109", 2366 - ] 2367 - 2368 - [[package]] 2369 - name = "stdweb-internal-macros" 2370 - version = "0.2.9" 2371 - source = "registry+https://github.com/rust-lang/crates.io-index" 2372 - checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" 2373 - dependencies = [ 2374 - "base-x", 2375 - "proc-macro2", 2376 - "quote", 2377 - "serde", 2378 - "serde_derive", 2379 - "serde_json", 2380 - "sha1", 2381 - "syn 1.0.109", 2382 - ] 2383 - 2384 - [[package]] 2385 - name = "stdweb-internal-runtime" 2386 - version = "0.1.5" 2387 - source = "registry+https://github.com/rust-lang/crates.io-index" 2388 - checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" 2389 - 2390 - [[package]] 2391 2206 name = "strict-num" 2392 2207 version = "0.1.1" 2393 2208 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2423 2238 "rustversion", 2424 2239 "syn 2.0.98", 2425 2240 ] 2426 - 2427 - [[package]] 2428 - name = "subtle" 2429 - version = "2.6.1" 2430 - source = "registry+https://github.com/rust-lang/crates.io-index" 2431 - checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 2432 2241 2433 2242 [[package]] 2434 2243 name = "svg" ··· 2510 2319 2511 2320 [[package]] 2512 2321 name = "time" 2513 - version = "0.2.27" 2514 - source = "registry+https://github.com/rust-lang/crates.io-index" 2515 - checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" 2516 - dependencies = [ 2517 - "const_fn", 2518 - "libc", 2519 - "standback", 2520 - "stdweb", 2521 - "time-macros 0.1.1", 2522 - "version_check", 2523 - "winapi", 2524 - ] 2525 - 2526 - [[package]] 2527 - name = "time" 2528 2322 version = "0.3.37" 2529 2323 source = "registry+https://github.com/rust-lang/crates.io-index" 2530 2324 checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" ··· 2537 2331 "powerfmt", 2538 2332 "serde", 2539 2333 "time-core", 2540 - "time-macros 0.2.19", 2334 + "time-macros", 2541 2335 ] 2542 2336 2543 2337 [[package]] ··· 2548 2342 2549 2343 [[package]] 2550 2344 name = "time-macros" 2551 - version = "0.1.1" 2552 - source = "registry+https://github.com/rust-lang/crates.io-index" 2553 - checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" 2554 - dependencies = [ 2555 - "proc-macro-hack", 2556 - "time-macros-impl", 2557 - ] 2558 - 2559 - [[package]] 2560 - name = "time-macros" 2561 2345 version = "0.2.19" 2562 2346 source = "registry+https://github.com/rust-lang/crates.io-index" 2563 2347 checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" ··· 2567 2351 ] 2568 2352 2569 2353 [[package]] 2570 - name = "time-macros-impl" 2571 - version = "0.1.2" 2572 - source = "registry+https://github.com/rust-lang/crates.io-index" 2573 - checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" 2574 - dependencies = [ 2575 - "proc-macro-hack", 2576 - "proc-macro2", 2577 - "quote", 2578 - "standback", 2579 - "syn 1.0.109", 2580 - ] 2581 - 2582 - [[package]] 2583 2354 name = "tiny-skia" 2584 2355 version = "0.11.4" 2585 2356 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2588 2359 "arrayref", 2589 2360 "arrayvec", 2590 2361 "bytemuck", 2591 - "cfg-if", 2362 + "cfg-if 1.0.0", 2592 2363 "log", 2593 2364 "png", 2594 2365 "tiny-skia-path", ··· 2643 2414 checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 2644 2415 2645 2416 [[package]] 2646 - name = "tokio" 2647 - version = "1.43.0" 2648 - source = "registry+https://github.com/rust-lang/crates.io-index" 2649 - checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" 2650 - dependencies = [ 2651 - "backtrace", 2652 - "bytes", 2653 - "libc", 2654 - "mio", 2655 - "pin-project-lite", 2656 - "socket2", 2657 - "windows-sys", 2658 - ] 2659 - 2660 - [[package]] 2661 - name = "tokio-util" 2662 - version = "0.7.13" 2663 - source = "registry+https://github.com/rust-lang/crates.io-index" 2664 - checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" 2665 - dependencies = [ 2666 - "bytes", 2667 - "futures-core", 2668 - "futures-sink", 2669 - "pin-project-lite", 2670 - "tokio", 2671 - ] 2672 - 2673 - [[package]] 2674 2417 name = "toml" 2675 2418 version = "0.7.8" 2676 2419 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2705 2448 ] 2706 2449 2707 2450 [[package]] 2708 - name = "tower-service" 2709 - version = "0.3.3" 2710 - source = "registry+https://github.com/rust-lang/crates.io-index" 2711 - checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 2712 - 2713 - [[package]] 2714 2451 name = "tracing" 2715 2452 version = "0.1.41" 2716 2453 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2742 2479 ] 2743 2480 2744 2481 [[package]] 2745 - name = "try-lock" 2746 - version = "0.2.5" 2747 - source = "registry+https://github.com/rust-lang/crates.io-index" 2748 - checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 2749 - 2750 - [[package]] 2751 2482 name = "ttf-parser" 2752 2483 version = "0.24.1" 2753 2484 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2769 2500 checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" 2770 2501 2771 2502 [[package]] 2772 - name = "unicase" 2773 - version = "2.8.1" 2774 - source = "registry+https://github.com/rust-lang/crates.io-index" 2775 - checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" 2776 - 2777 - [[package]] 2778 2503 name = "unicode-bidi" 2779 2504 version = "0.3.18" 2780 2505 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2823 2548 checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" 2824 2549 2825 2550 [[package]] 2826 - name = "untrusted" 2827 - version = "0.9.0" 2828 - source = "registry+https://github.com/rust-lang/crates.io-index" 2829 - checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 2830 - 2831 - [[package]] 2832 - name = "ureq" 2833 - version = "3.0.6" 2834 - source = "registry+https://github.com/rust-lang/crates.io-index" 2835 - checksum = "ca2e2dbdf4e95780e5d41804fab88b928a24585721018409eb429b1d29356bde" 2836 - dependencies = [ 2837 - "base64", 2838 - "flate2", 2839 - "log", 2840 - "percent-encoding", 2841 - "rustls", 2842 - "rustls-pemfile", 2843 - "rustls-pki-types", 2844 - "ureq-proto", 2845 - "utf-8", 2846 - "webpki-roots", 2847 - ] 2848 - 2849 - [[package]] 2850 - name = "ureq-proto" 2851 - version = "0.3.0" 2852 - source = "registry+https://github.com/rust-lang/crates.io-index" 2853 - checksum = "2c51fe73e1d8c4e06bb2698286f7e7453c6fc90528d6d2e7fc36bb4e87fe09b1" 2854 - dependencies = [ 2855 - "base64", 2856 - "http 1.2.0", 2857 - "httparse", 2858 - "log", 2859 - ] 2860 - 2861 - [[package]] 2862 2551 name = "url" 2863 2552 version = "2.5.4" 2864 2553 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2897 2586 ] 2898 2587 2899 2588 [[package]] 2900 - name = "utf-8" 2901 - version = "0.7.6" 2902 - source = "registry+https://github.com/rust-lang/crates.io-index" 2903 - checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 2904 - 2905 - [[package]] 2906 2589 name = "utf16_iter" 2907 2590 version = "1.0.5" 2908 2591 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2919 2602 version = "0.2.2" 2920 2603 source = "registry+https://github.com/rust-lang/crates.io-index" 2921 2604 checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" 2922 - 2923 - [[package]] 2924 - name = "uuid" 2925 - version = "1.15.1" 2926 - source = "registry+https://github.com/rust-lang/crates.io-index" 2927 - checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" 2928 - dependencies = [ 2929 - "getrandom 0.3.1", 2930 - ] 2931 2605 2932 2606 [[package]] 2933 2607 name = "vcpkg" ··· 2991 2665 ] 2992 2666 2993 2667 [[package]] 2994 - name = "want" 2995 - version = "0.3.1" 2668 + name = "wasi" 2669 + version = "0.9.0+wasi-snapshot-preview1" 2996 2670 source = "registry+https://github.com/rust-lang/crates.io-index" 2997 - checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 2998 - dependencies = [ 2999 - "try-lock", 3000 - ] 2671 + checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 3001 2672 3002 2673 [[package]] 3003 2674 name = "wasi" ··· 3006 2677 checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 3007 2678 3008 2679 [[package]] 3009 - name = "wasi" 3010 - version = "0.13.3+wasi-0.2.2" 3011 - source = "registry+https://github.com/rust-lang/crates.io-index" 3012 - checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" 3013 - dependencies = [ 3014 - "wit-bindgen-rt", 3015 - ] 3016 - 3017 - [[package]] 3018 2680 name = "wasm-bindgen" 3019 2681 version = "0.2.92" 3020 2682 source = "registry+https://github.com/rust-lang/crates.io-index" 3021 2683 checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" 3022 2684 dependencies = [ 3023 - "cfg-if", 2685 + "cfg-if 1.0.0", 3024 2686 "wasm-bindgen-macro", 3025 2687 ] 3026 2688 ··· 3076 2738 dependencies = [ 3077 2739 "js-sys", 3078 2740 "wasm-bindgen", 3079 - ] 3080 - 3081 - [[package]] 3082 - name = "webpki-roots" 3083 - version = "0.26.8" 3084 - source = "registry+https://github.com/rust-lang/crates.io-index" 3085 - checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" 3086 - dependencies = [ 3087 - "rustls-pki-types", 3088 2741 ] 3089 2742 3090 2743 [[package]] ··· 3101 2754 3102 2755 [[package]] 3103 2756 name = "winapi" 2757 + version = "0.2.8" 2758 + source = "registry+https://github.com/rust-lang/crates.io-index" 2759 + checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 2760 + 2761 + [[package]] 2762 + name = "winapi" 3104 2763 version = "0.3.9" 3105 2764 source = "registry+https://github.com/rust-lang/crates.io-index" 3106 2765 checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" ··· 3108 2767 "winapi-i686-pc-windows-gnu", 3109 2768 "winapi-x86_64-pc-windows-gnu", 3110 2769 ] 2770 + 2771 + [[package]] 2772 + name = "winapi-build" 2773 + version = "0.1.1" 2774 + source = "registry+https://github.com/rust-lang/crates.io-index" 2775 + checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 3111 2776 3112 2777 [[package]] 3113 2778 name = "winapi-i686-pc-windows-gnu" ··· 3288 2953 ] 3289 2954 3290 2955 [[package]] 3291 - name = "wit-bindgen-rt" 3292 - version = "0.33.0" 3293 - source = "registry+https://github.com/rust-lang/crates.io-index" 3294 - checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" 3295 - dependencies = [ 3296 - "bitflags 2.8.0", 3297 - ] 3298 - 3299 - [[package]] 3300 2956 name = "write16" 3301 2957 version = "1.0.0" 3302 2958 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3307 2963 version = "0.5.5" 3308 2964 source = "registry+https://github.com/rust-lang/crates.io-index" 3309 2965 checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" 2966 + 2967 + [[package]] 2968 + name = "ws" 2969 + version = "0.9.2" 2970 + source = "registry+https://github.com/rust-lang/crates.io-index" 2971 + checksum = "25fe90c75f236a0a00247d5900226aea4f2d7b05ccc34da9e7a8880ff59b5848" 2972 + dependencies = [ 2973 + "byteorder", 2974 + "bytes", 2975 + "httparse", 2976 + "log", 2977 + "mio", 2978 + "mio-extras", 2979 + "rand 0.7.3", 2980 + "sha-1", 2981 + "slab", 2982 + "url", 2983 + ] 2984 + 2985 + [[package]] 2986 + name = "ws2_32-sys" 2987 + version = "0.2.1" 2988 + source = "registry+https://github.com/rust-lang/crates.io-index" 2989 + checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 2990 + dependencies = [ 2991 + "winapi 0.2.8", 2992 + "winapi-build", 2993 + ] 3310 2994 3311 2995 [[package]] 3312 2996 name = "xmlwriter" ··· 3365 3049 "syn 2.0.98", 3366 3050 "synstructure", 3367 3051 ] 3368 - 3369 - [[package]] 3370 - name = "zeroize" 3371 - version = "1.8.1" 3372 - source = "registry+https://github.com/rust-lang/crates.io-index" 3373 - checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" 3374 3052 3375 3053 [[package]] 3376 3054 name = "zerovec"
+2 -3
Cargo.toml
··· 22 22 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 23 23 24 24 [features] 25 - vst = ["dep:env_logger", "dep:nih_plug", "dep:ureq", "dep:gotham"] 25 + vst = ["dep:env_logger", "dep:nih_plug", "dep:ws"] 26 26 web = ["dep:wasm-bindgen", "dep:web-sys"] 27 27 mp4 = ["dep:env_logger", "dep:ffmpeg-next", "dep:video-rs"] 28 28 ··· 62 62 roxmltree = "0.19.0" 63 63 strum = { version = "0.26.2", features = ["strum_macros"] } 64 64 strum_macros = "0.26.2" 65 - ureq = { version = "3.0.6", optional = true } 66 65 tiny-skia = "0.11.4" 67 66 resvg = "0.44.0" 68 67 measure_time = "0.9.0" ··· 74 73 ffmpeg-next = { version = "7.1.0", optional = true } 75 74 rayon = "1.10.0" 76 75 num_cpus = "1.16.0" 77 - gotham = { version = "0.7.4", optional = true } 78 76 futures-util = "0.3.31" 77 + ws = {version = "0.9.2", optional = true} 79 78 80 79 81 80 [dev-dependencies]
+1 -1
src/main.rs
··· 61 61 62 62 #[cfg(feature = "vst")] 63 63 fn run_beacon_start(_args: cli::Args, _canvas: Canvas) -> Result<()> { 64 - pub use vst::beacon::server::Beacon; 64 + pub use vst::beacon::Beacon; 65 65 Beacon::start() 66 66 } 67 67
+90 -181
src/vst/beacon.rs
··· 1 - use std::fmt::Display; 2 - 3 - use serde::{Deserialize, Serialize}; 4 - use ureq::http::Uri; 5 - 6 - #[derive(Serialize, Deserialize, Clone)] 7 - pub struct Probe { 8 - pub id: u32, 9 - pub added_at: String, 10 - pub automation_name: String, 11 - pub midi_name: String, 12 - pub audio_name: String, 13 - } 14 - 15 - impl Probe { 16 - /// Returns a new probe with the `added_at` field set to the current time. 17 - pub fn with_added_at_now(&self) -> Self { 18 - return Self { 19 - added_at: chrono::Utc::now().to_rfc3339(), 20 - ..self.clone() 21 - }; 22 - } 23 - } 1 + extern crate env_logger; 2 + extern crate ws; 24 3 25 - impl Display for Probe { 26 - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 27 - write!(f, "probe {} [", self.id)?; 28 - if !self.automation_name.is_empty() { 29 - write!(f, "automation \"{}\"", self.automation_name)?; 30 - if !self.midi_name.is_empty() || !self.audio_name.is_empty() { 31 - write!(f, " ")?; 32 - } 33 - } 34 - if !self.midi_name.is_empty() { 35 - write!(f, "midi \"{}\"", self.midi_name)?; 36 - if !self.audio_name.is_empty() { 37 - write!(f, " ")?; 38 - } 39 - } 40 - if !self.audio_name.is_empty() { 41 - write!(f, "audio \"{}\"", self.audio_name)?; 42 - } 43 - write!(f, "]")?; 44 - return Ok(()); 45 - } 46 - } 4 + use super::Probe; 5 + use anyhow::Result; 6 + use once_cell::sync::Lazy; 7 + use std::sync::{Mutex, MutexGuard}; 47 8 48 9 const BEACON_PORT: u16 = 8080; 49 10 50 11 #[inline] 51 - pub fn beacon_url() -> Uri { 52 - return format!("http://localhost:{BEACON_PORT}") 53 - .parse() 54 - .expect("Invalid default beacon URL"); 12 + pub fn beacon_url() -> String { 13 + return format!("ws://localhost:{BEACON_PORT}"); 55 14 } 56 15 57 - pub mod requests { 58 - use anyhow::Result; 59 - use ureq::{http::Response, Body}; 16 + pub fn connect_to_beacon<T: FnMut(&ws::Sender) -> ()>(mut action: T) -> Result<()> { 17 + ws::connect(beacon_url(), |out| { 18 + action(&out); 60 19 61 - use super::{beacon_url, Probe}; 62 - 63 - pub fn register_probe(probe: Probe) -> Result<Response<Body>> { 64 - return Ok( 65 - ureq::put(format!("{}/probes/{}", beacon_url(), probe.id).as_str()) 66 - .content_type("application/json") 67 - .send( 68 - serde_json::to_string(&probe) 69 - .expect("Failed to serialize probe") 70 - .as_bytes(), 71 - )?, 72 - ); 73 - } 20 + move |_msg| out.close(ws::CloseCode::Normal) 21 + })?; 22 + Ok(()) 23 + } 74 24 75 - pub fn unregister_probe(id: u32) -> Result<Response<Body>> { 76 - return Ok(ureq::delete(format!("{}/probes/{}", beacon_url(), id).as_str()).call()?); 77 - } 25 + pub fn register_probe(probe: Probe) -> Result<()> { 26 + connect_to_beacon(|beacon| { 27 + beacon 28 + .send(format!( 29 + "+ probe {}", 30 + serde_json::to_string(&probe).expect("Failed to serialize probe") 31 + )) 32 + .expect("Failed to send register probe message"); 33 + })?; 34 + Ok(()) 78 35 } 79 36 80 - pub mod server { 81 - use std::{ 82 - str::FromStr, 83 - sync::{Mutex, MutexGuard}, 84 - }; 37 + pub fn unregister_probe(id: u32) -> Result<()> { 38 + connect_to_beacon(|beacon| { 39 + beacon 40 + .send(format!("- probe {}", id)) 41 + .expect("Failed to send unregister probe message"); 42 + })?; 43 + Ok(()) 44 + } 85 45 86 - use super::{Probe, BEACON_PORT}; 87 - use anyhow::Result; 88 - use futures_util::{future, FutureExt}; 89 - use gotham::{ 90 - self, 91 - helpers::http::response::{create_empty_response, create_response}, 92 - hyper::{body, Body, StatusCode}, 93 - mime::Mime, 94 - prelude::{DefineSingleRoute, DrawRoutes, StaticResponseExtender}, 95 - router::build_simple_router, 96 - state::{FromState, State, StateData}, 97 - }; 98 - use once_cell::sync::Lazy; 99 - use serde::Deserialize; 46 + #[derive(Default)] 47 + pub struct Beacon { 48 + pub probes: Vec<Probe>, 49 + } 100 50 101 - #[derive(Default)] 102 - pub struct Beacon { 103 - pub probes: Vec<Probe>, 104 - } 51 + static BEACON: Lazy<Mutex<Beacon>> = Lazy::new(|| Mutex::new(Beacon::new())); 105 52 106 - static BEACON: Lazy<Mutex<Beacon>> = Lazy::new(|| Mutex::new(Beacon::default())); 53 + pub fn get_beacon() -> MutexGuard<'static, Beacon> { 54 + return BEACON.lock().unwrap(); 55 + } 107 56 108 - pub fn get_beacon() -> MutexGuard<'static, Beacon> { 109 - return BEACON.lock().unwrap(); 57 + impl Beacon { 58 + pub fn new() -> Self { 59 + return Self::default(); 110 60 } 111 61 112 - #[derive(Debug, Deserialize, StateData, StaticResponseExtender)] 113 - struct PathExtractorId { 114 - id: u32, 115 - } 116 - 117 - impl Beacon { 118 - pub fn new() -> Self { 119 - return Self::default(); 120 - } 121 - 122 - pub fn start() -> Result<()> { 123 - let router = build_simple_router(|route| { 124 - route.get("/probes").to(|state| { 125 - let beacon = get_beacon(); 126 - let body = 127 - serde_json::to_string(&beacon.probes).expect("Failed to serialize probes"); 128 - let response = create_response( 129 - &state, 130 - StatusCode::OK, 131 - Mime::from_str("application/json").unwrap(), 132 - body, 133 - ); 134 - (state, response) 135 - }); 136 - route 137 - .delete("/probes/:id") 138 - .with_path_extractor::<PathExtractorId>() 139 - .to(|state: State| { 140 - let id = state.borrow::<PathExtractorId>().id; 62 + pub fn start() -> Result<()> { 63 + ws::listen(format!("127.0.0.1:{BEACON_PORT}"), |out| { 64 + println!("Opening beacon connection with a probe..."); 65 + move |msg| match msg { 66 + ws::Message::Text(text) => match split3(&text) { 67 + ("+", "probe", probe_json) => match serde_json::from_str::<Probe>(probe_json) { 68 + Ok(probe) => { 69 + let mut beacon = get_beacon(); 70 + beacon.probes.push(probe); 71 + out.send("^ probe added") 72 + } 73 + Err(_) => out.send("! probe invalid JSON"), 74 + }, 75 + ("-", "probe", id_str) => { 76 + let id = id_str.parse::<u32>().unwrap(); 141 77 let mut beacon = get_beacon(); 142 - println!("Beacon: removing probe {id}"); 143 78 let probe_index = beacon.probes.iter().position(|probe| probe.id == id); 144 79 match probe_index { 145 80 Some(probe_index) => { 146 81 let removed_probe = beacon.probes.remove(probe_index); 147 - println!("Beacon: removed {removed_probe}"); 148 - let response = 149 - create_empty_response(&state, StatusCode::NO_CONTENT); 150 - (state, response) 82 + out.send(format!("^ probe {} removed", removed_probe.id)) 151 83 } 152 - None => { 153 - println!("Beacon: probe {id} not found"); 154 - let response = create_empty_response(&state, StatusCode::NOT_FOUND); 155 - (state, response) 156 - } 84 + None => out.send(format!("! probe {id} not found")), 85 + } 86 + } 87 + ("=", "probe", "*") => { 88 + let beacon = get_beacon(); 89 + let body = serde_json::to_string(&beacon.probes).unwrap(); 90 + out.send(body) 91 + } 92 + ("=", "probe", id_str) => { 93 + let id = id_str.parse::<u32>().unwrap(); 94 + let beacon = get_beacon(); 95 + let probe = beacon.probes.iter().find(|probe| probe.id == id); 96 + match probe { 97 + Some(probe) => out.send(serde_json::to_string(probe).unwrap()), 98 + None => out.send(format!("! probe {id} not found")), 157 99 } 158 - }); 159 - route 160 - .put("/probes/:id") 161 - .with_path_extractor::<PathExtractorId>() 162 - .to(|mut state: State| { 163 - let id = state.borrow::<PathExtractorId>().id; 164 - let f = 165 - body::to_bytes(Body::take_from(&mut state)).then(move |full_body| { 166 - match full_body { 167 - Ok(valid_body) => { 168 - let content = String::from_utf8(valid_body.to_vec()) 169 - .expect("Failed to parse body"); 170 - match serde_json::from_str::<Probe>(&content) { 171 - Ok(new_probe) => { 172 - if new_probe.id != id { 173 - return future::err(( 174 - state, 175 - anyhow::anyhow!( 176 - "Probe ID does not match URL ID" 177 - ) 178 - .into(), 179 - )); 180 - } 100 + } 101 + _ => out.send("! invalid command"), 102 + }, 103 + ws::Message::Binary(_) => todo!(), 104 + } 105 + })?; 106 + Ok(()) 107 + } 108 + } 181 109 182 - println!("Beacon: registering {new_probe}"); 183 - let mut beacon = get_beacon(); 184 - beacon.probes.push(new_probe); 185 - let response = create_empty_response( 186 - &state, 187 - StatusCode::CREATED, 188 - ); 189 - future::ok((state, response)) 190 - } 191 - Err(_) => future::err(( 192 - state, 193 - anyhow::anyhow!("Failed to parse probe").into(), 194 - )), 195 - } 196 - } 197 - Err(e) => future::err((state, e.into())), 198 - } 199 - }); 200 - f.boxed() 201 - }); 202 - }); 203 - println!("Starting beacon server on port {}", BEACON_PORT); 204 - gotham::start(format!("127.0.0.1:{BEACON_PORT}"), router).map_err(|e| e.into()) 205 - } 206 - } 110 + fn split3(subject: &str) -> (&str, &str, &str) { 111 + let mut parts = subject.splitn(3, ' '); 112 + let first = parts.next().unwrap_or_default(); 113 + let second = parts.next().unwrap_or_default(); 114 + let third = parts.next().unwrap_or_default(); 115 + return (first, second, third); 207 116 }
+2
src/vst/mod.rs
··· 1 1 pub mod beacon; 2 2 pub mod vst; 3 + pub mod probe; 3 4 4 5 use nih_plug::{nih_export_clap, nih_export_vst3}; 6 + pub use probe::Probe; 5 7 pub use vst::*; 6 8 7 9 nih_export_clap!(ShapemakerVST);
+44
src/vst/probe.rs
··· 1 + use std::fmt::Display; 2 + use serde::{Deserialize, Serialize}; 3 + 4 + #[derive(Serialize, Deserialize, Clone)] 5 + pub struct Probe { 6 + pub id: u32, 7 + pub added_at: String, 8 + pub automation_name: String, 9 + pub midi_name: String, 10 + pub audio_name: String, 11 + } 12 + 13 + impl Probe { 14 + /// Returns a new probe with the `added_at` field set to the current time. 15 + pub fn with_added_at_now(&self) -> Self { 16 + return Self { 17 + added_at: chrono::Utc::now().to_rfc3339(), 18 + ..self.clone() 19 + }; 20 + } 21 + } 22 + 23 + impl Display for Probe { 24 + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 25 + write!(f, "probe {} [", self.id)?; 26 + if !self.automation_name.is_empty() { 27 + write!(f, "automation \"{}\"", self.automation_name)?; 28 + if !self.midi_name.is_empty() || !self.audio_name.is_empty() { 29 + write!(f, " ")?; 30 + } 31 + } 32 + if !self.midi_name.is_empty() { 33 + write!(f, "midi \"{}\"", self.midi_name)?; 34 + if !self.audio_name.is_empty() { 35 + write!(f, " ")?; 36 + } 37 + } 38 + if !self.audio_name.is_empty() { 39 + write!(f, "audio \"{}\"", self.audio_name)?; 40 + } 41 + write!(f, "]")?; 42 + return Ok(()); 43 + } 44 + }
+4 -4
src/vst/vst.rs
··· 1 1 use nih_plug::prelude::*; 2 2 use rand::Rng; 3 3 use std::sync::Arc; 4 - 5 - use super::beacon::{self, Probe}; 4 + use super::beacon; 5 + use super::probe::Probe; 6 6 7 7 pub struct ShapemakerVST { 8 8 params: Arc<ShapemakerVSTParams>, ··· 105 105 _buffer_config: &BufferConfig, 106 106 _context: &mut impl InitContext<Self>, 107 107 ) -> bool { 108 - let _ = beacon::requests::register_probe(self.probe.with_added_at_now()); 108 + let _ = beacon::register_probe(self.probe.with_added_at_now()); 109 109 true 110 110 } 111 111 ··· 115 115 } 116 116 117 117 fn deactivate(&mut self) { 118 - let _ = beacon::requests::unregister_probe(self.probe.id); 118 + let _ = beacon::unregister_probe(self.probe.id); 119 119 } 120 120 121 121 fn process(