From b1d6069d817640c97e227c3eb45836f6ec521b08 Mon Sep 17 00:00:00 2001 From: Johannes Heuel Date: Wed, 5 Mar 2025 03:27:03 +0100 Subject: [PATCH] update twilight, songbird and reqwest --- Cargo.lock | 1019 +++++++++++++++++++++++++++--------- Cargo.toml | 16 +- src/commands/delete.rs | 2 +- src/commands/loop_queue.rs | 10 +- src/commands/play.rs | 14 +- src/commands/queue.rs | 23 +- src/handler.rs | 1 + src/main.rs | 98 ++-- src/metadata.rs | 9 +- src/signal.rs | 40 +- 10 files changed, 887 insertions(+), 345 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 934ec31..e1cf03d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -62,7 +62,7 @@ dependencies = [ "getrandom 0.2.15", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -154,6 +154,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "audiopus" version = "0.3.0-rc.0" @@ -195,12 +201,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - [[package]] name = "base64" version = "0.21.7" @@ -243,22 +243,11 @@ dependencies = [ "generic-array", ] -[[package]] -name = "brotli" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - [[package]] name = "brotli-decompressor" -version = "2.5.1" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" +checksum = "74fa05ad7d803d413eb8380983b092cbbaf9a85f151b871360e7b00cd7060b37" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -297,12 +286,24 @@ dependencies = [ "shlex", ] +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chacha20" version = "0.9.1" @@ -361,6 +362,16 @@ dependencies = [ "cc", ] +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + [[package]] name = "const-oid" version = "0.9.6" @@ -383,6 +394,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -453,25 +474,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "typenum", ] -[[package]] -name = "crypto_secretbox" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d6cf87adf719ddf43a805e92c6870a531aedda35ff640442cbaf8674e141e1" -dependencies = [ - "aead", - "cipher", - "generic-array", - "poly1305", - "salsa20", - "subtle", - "zeroize", -] - [[package]] name = "ctr" version = "0.9.2" @@ -529,6 +535,20 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "data-encoding" version = "2.8.0" @@ -733,7 +753,7 @@ dependencies = [ "futures-core", "futures-sink", "nanorand", - "spin 0.9.8", + "spin", ] [[package]] @@ -896,7 +916,6 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", - "zeroize", ] [[package]] @@ -959,6 +978,25 @@ dependencies = [ "tracing", ] +[[package]] +name = "h2" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.2.0", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "hashbrown" version = "0.14.5" @@ -1046,7 +1084,7 @@ dependencies = [ "shorthand", "stable-vec", "strum", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1100,6 +1138,29 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.2.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http 1.2.0", + "http-body 1.0.1", + "pin-project-lite", +] + [[package]] name = "httparse" version = "1.10.1" @@ -1122,9 +1183,9 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", - "http-body", + "http-body 0.4.6", "httparse", "httpdate", "itoa", @@ -1137,17 +1198,23 @@ dependencies = [ ] [[package]] -name = "hyper-rustls" -version = "0.23.2" +name = "hyper" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ - "http 0.2.12", - "hyper", - "rustls 0.20.9", - "rustls-native-certs", + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.8", + "http 1.2.0", + "http-body 1.0.1", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", "tokio", - "tokio-rustls 0.23.4", + "want", ] [[package]] @@ -1158,23 +1225,64 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper", + "hyper 0.14.32", "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", ] [[package]] -name = "hyper-tls" -version = "0.5.0" +name = "hyper-rustls" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +dependencies = [ + "futures-util", + "http 1.2.0", + "hyper 1.6.0", + "hyper-util", + "rustls 0.23.23", + "rustls-pki-types", + "rustls-platform-verifier", + "tokio", + "tokio-rustls 0.26.2", + "tower-service", + "webpki-roots 0.26.8", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", - "hyper", + "http-body-util", + "hyper 1.6.0", + "hyper-util", "native-tls", "tokio", "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.2.0", + "http-body 1.0.1", + "hyper 1.6.0", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", ] [[package]] @@ -1376,6 +1484,28 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + [[package]] name = "js-sys" version = "0.3.77" @@ -1392,7 +1522,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.9.8", + "spin", ] [[package]] @@ -1569,7 +1699,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "security-framework", + "security-framework 2.11.1", "security-framework-sys", "tempfile", ] @@ -1624,7 +1754,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand", + "rand 0.8.5", "smallvec", "zeroize", ] @@ -1700,11 +1830,11 @@ dependencies = [ "anyhow", "async-trait", "chrono", - "dashmap", + "dashmap 5.5.3", "dotenv", "futures", "regex", - "reqwest", + "reqwest 0.12.12", "serde", "serde_json", "songbird", @@ -1977,7 +2107,7 @@ version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -1998,6 +2128,58 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "quinn" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls 0.23.23", + "socket2", + "thiserror 2.0.12", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +dependencies = [ + "bytes", + "getrandom 0.2.15", + "rand 0.8.5", + "ring", + "rustc-hash", + "rustls 0.23.23", + "rustls-pki-types", + "slab", + "thiserror 2.0.12", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e46f3055866785f6b92bc6164b76be02ca8f2eb4b002c0354b28cf4c119e5944" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + [[package]] name = "quote" version = "1.0.39" @@ -2014,8 +2196,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "zerocopy 0.8.21", ] [[package]] @@ -2025,7 +2218,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -2037,6 +2240,15 @@ dependencies = [ "getrandom 0.2.15", ] +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.1", +] + [[package]] name = "realfft" version = "3.4.0" @@ -2110,30 +2322,27 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", - "http-body", - "hyper", + "http-body 0.4.6", + "hyper 0.14.32", "hyper-rustls 0.24.2", - "hyper-tls", "ipnet", "js-sys", "log", "mime", "mime_guess", - "native-tls", "once_cell", "percent-encoding", "pin-project-lite", "rustls 0.21.12", - "rustls-pemfile", + "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", - "system-configuration", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", "tokio", - "tokio-native-tls", "tokio-rustls 0.24.1", "tokio-util", "tower-service", @@ -2147,18 +2356,54 @@ dependencies = [ ] [[package]] -name = "ring" -version = "0.16.20" +name = "reqwest" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ - "cc", - "libc", + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.4.8", + "http 1.2.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-rustls 0.27.5", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", "once_cell", - "spin 0.5.2", - "untrusted 0.7.1", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.23", + "rustls-pemfile 2.2.0", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "system-configuration 0.6.1", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.26.2", + "tokio-util", + "tower", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", "web-sys", - "winapi", + "webpki-roots 0.26.8", + "windows-registry", ] [[package]] @@ -2171,7 +2416,7 @@ dependencies = [ "cfg-if", "getrandom 0.2.15", "libc", - "untrusted 0.9.0", + "untrusted", "windows-sys 0.52.0", ] @@ -2198,7 +2443,7 @@ dependencies = [ "num-traits", "pkcs1", "pkcs8", - "rand_core", + "rand_core 0.6.4", "signature", "spki", "subtle", @@ -2207,9 +2452,9 @@ dependencies = [ [[package]] name = "rubato" -version = "0.15.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5d18b486e7d29a408ef3f825bc1327d8f87af091c987ca2f5b734625940e234" +checksum = "cdd96992d7e24b3d7f35fdfe02af037a356ac90d41b466945cf3333525a86eea" dependencies = [ "num-complex", "num-integer", @@ -2223,6 +2468,12 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + [[package]] name = "rustc_version" version = "0.4.1" @@ -2260,18 +2511,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "rustls" -version = "0.20.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" -dependencies = [ - "log", - "ring 0.16.20", - "sct", - "webpki", -] - [[package]] name = "rustls" version = "0.21.12" @@ -2279,7 +2518,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.11", + "ring", "rustls-webpki 0.101.7", "sct", ] @@ -2291,7 +2530,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" dependencies = [ "log", - "ring 0.17.11", + "ring", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls" +version = "0.23.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" +dependencies = [ + "once_cell", + "ring", "rustls-pki-types", "rustls-webpki 0.102.8", "subtle", @@ -2300,14 +2553,14 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.6.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" dependencies = [ "openssl-probe", - "rustls-pemfile", + "rustls-pki-types", "schannel", - "security-framework", + "security-framework 3.2.0", ] [[package]] @@ -2319,11 +2572,50 @@ dependencies = [ "base64 0.21.7", ] +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "rustls-pki-types" version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +dependencies = [ + "web-time", +] + +[[package]] +name = "rustls-platform-verifier" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e012c45844a1790332c9386ed4ca3a06def221092eda277e6f079728f8ea99da" +dependencies = [ + "core-foundation 0.10.0", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls 0.23.23", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki 0.102.8", + "security-framework 3.2.0", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" @@ -2331,8 +2623,8 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.11", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] @@ -2341,9 +2633,9 @@ version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ - "ring 0.17.11", + "ring", "rustls-pki-types", - "untrusted 0.9.0", + "untrusted", ] [[package]] @@ -2372,12 +2664,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] -name = "salsa20" -version = "0.10.2" +name = "same-file" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ - "cipher", + "winapi-util", ] [[package]] @@ -2407,8 +2699,8 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.11", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] @@ -2428,7 +2720,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.9.0", - "core-foundation", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +dependencies = [ + "bitflags 2.9.0", + "core-foundation 0.10.0", "core-foundation-sys", "libc", "security-framework-sys", @@ -2551,7 +2856,7 @@ dependencies = [ "futures", "mime_guess", "percent-encoding", - "reqwest", + "reqwest 0.11.27", "secrecy", "serde", "serde_cow", @@ -2588,6 +2893,12 @@ dependencies = [ "digest", ] +[[package]] +name = "sha1_smol" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" + [[package]] name = "sha2" version = "0.10.8" @@ -2642,9 +2953,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest", - "rand_core", + "rand_core 0.6.4", ] +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "slab" version = "0.4.9" @@ -2672,9 +2989,9 @@ dependencies = [ [[package]] name = "songbird" -version = "0.4.6" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c6bde67a7ba20c8d9abefa35dfbb4f7abb570b344af73c201626033fb64703" +checksum = "dc0f2c269821881c25c6daa6863a611a10c9b40ed9f56e2955793bf06fb0fdfd" dependencies = [ "aead", "aes-gcm", @@ -2683,18 +3000,18 @@ dependencies = [ "byteorder", "bytes", "chacha20poly1305", - "crypto_secretbox", - "dashmap", + "crypto-common", + "dashmap 6.1.0", "derivative", "discortp", + "either", "flume", "futures", "nohash-hasher", - "once_cell", "parking_lot", "pin-project", - "rand", - "reqwest", + "rand 0.9.0", + "reqwest 0.12.12", "ringbuf", "rubato", "rusty_pool", @@ -2709,24 +3026,18 @@ dependencies = [ "symphonia", "symphonia-core", "tokio", - "tokio-tungstenite 0.21.0", + "tokio-tungstenite 0.26.2", "tokio-util", + "tokio-websockets", "tracing", "tracing-futures", "twilight-gateway", "twilight-model", - "typemap_rev", "typenum", "url", "uuid", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "spin" version = "0.9.8" @@ -2802,7 +3113,7 @@ dependencies = [ "sha2", "smallvec", "sqlformat", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", "tracing", @@ -2878,7 +3189,7 @@ dependencies = [ "memchr", "once_cell", "percent-encoding", - "rand", + "rand 0.8.5", "rsa", "serde", "sha1", @@ -2886,7 +3197,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror", + "thiserror 1.0.69", "tracing", "whoami", ] @@ -2918,14 +3229,14 @@ dependencies = [ "md-5", "memchr", "once_cell", - "rand", + "rand 0.8.5", "serde", "serde_json", "sha2", "smallvec", "sqlx-core", "stringprep", - "thiserror", + "thiserror 1.0.69", "tracing", "whoami", ] @@ -2971,16 +3282,16 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "stream_lib" -version = "0.4.2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa3f10eb5a7054e17abf61d310e4e29108187a847591c63c4c79b6a74898a5a7" +checksum = "e106dd009a0dfd2cf57777c39cad08f852debd366df6e841b250d956cec3277e" dependencies = [ "bytes", "futures-core", "futures-util", "hls_m3u8", "patricia_tree", - "reqwest", + "reqwest 0.12.12", "tokio", "tracing", "url", @@ -3271,6 +3582,15 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + [[package]] name = "synstructure" version = "0.13.1" @@ -3289,8 +3609,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", + "core-foundation 0.9.4", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.9.0", + "core-foundation 0.9.4", + "system-configuration-sys 0.6.0", ] [[package]] @@ -3303,6 +3634,16 @@ dependencies = [ "libc", ] +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tempfile" version = "3.17.1" @@ -3323,7 +3664,16 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", ] [[package]] @@ -3337,6 +3687,17 @@ dependencies = [ "syn 2.0.99", ] +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.99", +] + [[package]] name = "thread_local" version = "1.1.8" @@ -3441,17 +3802,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-rustls" -version = "0.23.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" -dependencies = [ - "rustls 0.20.9", - "tokio", - "webpki", -] - [[package]] name = "tokio-rustls" version = "0.24.1" @@ -3473,6 +3823,16 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls 0.23.23", + "tokio", +] + [[package]] name = "tokio-stream" version = "0.1.17" @@ -3484,22 +3844,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-tungstenite" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54319c93411147bced34cb5609a80e0a8e44c5999c93903a81cd866630ec0bfd" -dependencies = [ - "futures-util", - "log", - "rustls 0.20.9", - "rustls-native-certs", - "tokio", - "tokio-rustls 0.23.4", - "tungstenite 0.18.0", - "webpki", -] - [[package]] name = "tokio-tungstenite" version = "0.21.0" @@ -3516,6 +3860,22 @@ dependencies = [ "webpki-roots 0.26.8", ] +[[package]] +name = "tokio-tungstenite" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" +dependencies = [ + "futures-util", + "log", + "rustls 0.23.23", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.2", + "tungstenite 0.26.2", + "webpki-roots 0.26.8", +] + [[package]] name = "tokio-util" version = "0.7.13" @@ -3529,6 +3889,51 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-websockets" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc46f9dc832c663a5db08513162001a29ac820913275d58943f942c2bc1c435" +dependencies = [ + "base64 0.22.1", + "bytes", + "fastrand", + "futures-core", + "futures-sink", + "http 1.2.0", + "httparse", + "ring", + "rustls-native-certs", + "rustls-pki-types", + "rustls-platform-verifier", + "sha1_smol", + "simdutf8", + "tokio", + "tokio-rustls 0.26.2", + "tokio-util", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + [[package]] name = "tower-service" version = "0.3.3" @@ -3666,27 +4071,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "tungstenite" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ee6ab729cd4cf0fd55218530c4522ed30b7b6081752839b68fcec8d0960788" -dependencies = [ - "base64 0.13.1", - "byteorder", - "bytes", - "http 0.2.12", - "httparse", - "log", - "rand", - "rustls 0.20.9", - "sha1", - "thiserror", - "url", - "utf-8", - "webpki", -] - [[package]] name = "tungstenite" version = "0.21.0" @@ -3699,43 +4083,62 @@ dependencies = [ "http 1.2.0", "httparse", "log", - "rand", + "rand 0.8.5", "rustls 0.22.4", "rustls-pki-types", "sha1", - "thiserror", + "thiserror 1.0.69", + "url", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" +dependencies = [ + "bytes", + "data-encoding", + "http 1.2.0", + "httparse", + "log", + "rand 0.9.0", + "rustls 0.23.23", + "rustls-pki-types", + "sha1", + "thiserror 2.0.12", "url", "utf-8", ] [[package]] name = "twilight-cache-inmemory" -version = "0.15.4" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f5a9338cc26a6ffa77932c6386b227714e1a9b75f5cf644739d0c3605e19a95" +checksum = "bc9de5f02fa89a48d3fa989811d67a3f3cc3179a46ce71089afa5412ff21fb41" dependencies = [ - "bitflags 1.3.2", - "dashmap", + "bitflags 2.9.0", + "dashmap 6.1.0", "serde", "twilight-model", ] [[package]] name = "twilight-gateway" -version = "0.15.4" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30be5c7e2b13b4a59e0f93344c070c23404279a318a324eece1f4384ead47d86" +checksum = "863ef55467bcf6a2958162766fd0b72f33112e36971b37f9ec09b86d4fd0f7d1" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.9.0", + "fastrand", "flate2", - "futures-util", - "rand", - "rustls 0.20.9", - "rustls-native-certs", + "futures-core", + "futures-sink", "serde", "serde_json", "tokio", - "tokio-tungstenite 0.18.0", + "tokio-websockets", "tracing", "twilight-gateway-queue", "twilight-http", @@ -3744,9 +4147,9 @@ dependencies = [ [[package]] name = "twilight-gateway-queue" -version = "0.15.4" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3073747da8e1d09bc5383eed750451c9534021c8206a20092405b9855b3cb35a" +checksum = "27c962bd4693da0a215abe6b431fd73eb87111f49c431b87951780f9f7985002" dependencies = [ "tokio", "tracing", @@ -3754,15 +4157,19 @@ dependencies = [ [[package]] name = "twilight-http" -version = "0.15.4" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c78b55d912a58814dbfc4dc3cfb9496c7e83eb6ec738b1cc4c359ba0d2ff2dd8" +checksum = "af9a2176638fd8bfeb867e7a2f644fee0db905eba6f7decfdcd75c8171109b74" dependencies = [ - "brotli", - "hyper", - "hyper-rustls 0.23.2", + "brotli-decompressor", + "fastrand", + "http 1.2.0", + "http-body-util", + "hyper 1.6.0", + "hyper-rustls 0.27.5", + "hyper-util", "percent-encoding", - "rand", + "rustls 0.23.23", "serde", "serde_json", "tokio", @@ -3774,23 +4181,21 @@ dependencies = [ [[package]] name = "twilight-http-ratelimiting" -version = "0.15.3" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4a03343ff60a8d5b5b722ce4b0b7e266ace6cc3e9143544a840d3cc127f02b" +checksum = "a36945d949920d6bb6aef30547e06ea645eefaa5575a14f56da608bf09d07ec8" dependencies = [ - "futures-util", - "http 0.2.12", "tokio", "tracing", ] [[package]] name = "twilight-model" -version = "0.15.4" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276bd50f4817b3b421395afac89f5d7b61fdfd0f00a28b2a7db983e4878b4a1a" +checksum = "191e2efa051dfbd9bed4c9f6bd3f5e007bda909c687a1db2760371a3d566617d" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.9.0", "serde", "serde-value", "serde_repr", @@ -3799,12 +4204,12 @@ dependencies = [ [[package]] name = "twilight-standby" -version = "0.15.4" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20f10f0a07962ab9a0651ce6e4d449abf896b0dd1d883d9051cbc5c0e2b092da" +checksum = "375267fde44a8d52a8bf01c60d0769d9d2a289d056f278da4e99186ae04c5903" dependencies = [ - "dashmap", - "futures-util", + "dashmap 6.1.0", + "futures-core", "tokio", "tracing", "twilight-model", @@ -3812,9 +4217,9 @@ dependencies = [ [[package]] name = "twilight-util" -version = "0.15.4" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe3149347d8222e042a55deba80cd32f93f14770bbb845b8e4cfbd70a5062c56" +checksum = "e5777d71286611c1639021f5f6e6b40300eb8da278449ac1cf6da01c94053425" dependencies = [ "twilight-model", "twilight-validate", @@ -3822,9 +4227,9 @@ dependencies = [ [[package]] name = "twilight-validate" -version = "0.15.3" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3595d5ad595d8d3a97096a01899b53d3a8117ab16deda27526b315a1db815da4" +checksum = "49f8d106028ede53708526364b03318bbf846babe146e3ff9e39821a0ca25ff4" dependencies = [ "twilight-model", ] @@ -3896,12 +4301,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "untrusted" version = "0.9.0" @@ -3971,6 +4370,16 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "want" version = "0.3.1" @@ -4096,13 +4505,22 @@ dependencies = [ ] [[package]] -name = "webpki" -version = "0.22.4" +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ - "ring 0.17.11", - "untrusted 0.9.0", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-root-certs" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09aed61f5e8d2c18344b3faa33a4c837855fe56642757754775548fee21386c4" +dependencies = [ + "rustls-pki-types", ] [[package]] @@ -4146,6 +4564,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -4176,6 +4603,45 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -4203,6 +4669,21 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -4234,6 +4715,12 @@ dependencies = [ "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -4246,6 +4733,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -4258,6 +4751,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -4276,6 +4775,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -4288,6 +4793,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -4300,6 +4811,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -4312,6 +4829,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -4386,7 +4909,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf01143b2dd5d134f11f545cf9f1431b13b749695cb33bcce051e7568f99478" +dependencies = [ + "zerocopy-derive 0.8.21", ] [[package]] @@ -4400,6 +4932,17 @@ dependencies = [ "syn 2.0.99", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712c8386f4f4299382c9abee219bee7084f78fb939d88b6840fcc1320d5f6da2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.99", +] + [[package]] name = "zerofrom" version = "0.1.6" diff --git a/Cargo.toml b/Cargo.toml index e86df78..76a71d9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,20 +7,20 @@ license = "MIT" [dependencies] symphonia = { version = "0.5.2", features=["all", "opt-simd"] } -songbird = { version = "0.4.0", features = ["driver", "gateway", "twilight", "rustls", "builtin-queue"] } +songbird = { version = "0.5.0", features = ["driver", "gateway", "twilight", "rustls", "builtin-queue"] } tokio = { features = ["macros", "rt-multi-thread", "signal", "sync"], version = "1" } sqlx = { version = "0.7", features = [ "runtime-tokio", "sqlite", "chrono", "migrate"] } regex = { version = "1", features = ["unicode-case"] } futures = "0.3" -reqwest = "0.11" +reqwest = "0.12" tracing = "0.1" tracing-subscriber = "0.2" -twilight-gateway = "0.15" -twilight-http = "0.15" -twilight-model = "0.15" -twilight-standby = "0.15" -twilight-cache-inmemory = "0.15" -twilight-util = { version = "0.15", features=["builder"] } +twilight-gateway = "0.16" +twilight-http = "0.16" +twilight-model = "0.16" +twilight-standby = "0.16" +twilight-cache-inmemory = "0.16" +twilight-util = { version = "0.16", features=["builder"] } dotenv = "0.15.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/src/commands/delete.rs b/src/commands/delete.rs index 6d51f29..cec03d3 100644 --- a/src/commands/delete.rs +++ b/src/commands/delete.rs @@ -26,7 +26,7 @@ pub(crate) async fn delete( .http .channel_messages(msg.channel_id) .before(msg.id) - .limit(n)? + .limit(n) .await? .model() .await?; diff --git a/src/commands/loop_queue.rs b/src/commands/loop_queue.rs index f79d079..c1ed8b6 100644 --- a/src/commands/loop_queue.rs +++ b/src/commands/loop_queue.rs @@ -1,4 +1,4 @@ -use crate::metadata::MetadataMap; +use crate::metadata::Metadata; use crate::state::{State, StateRef}; use async_trait::async_trait; use songbird::{Event, EventContext, EventHandler, TrackEvent}; @@ -99,9 +99,7 @@ impl EventHandler for TrackEndNotifier { let mut call = call_lock.lock().await; // get metadata from finished track - let old_typemap_lock = track_handle.typemap().read().await; - let old_metadata = old_typemap_lock.get::().unwrap(); - + let old_metadata = track_handle.data::(); // enqueue track let handle = call.enqueue_with_preload( old_metadata.src.clone().into(), @@ -115,8 +113,8 @@ impl EventHandler for TrackEndNotifier { ); // insert metadata into new track - let mut new_typemap = handle.typemap().write().await; - new_typemap.insert::(old_metadata.clone()); + let mut _new_metadata = handle.data::(); + _new_metadata = old_metadata.clone(); } None } diff --git a/src/commands/play.rs b/src/commands/play.rs index 1faf871..9e10528 100644 --- a/src/commands/play.rs +++ b/src/commands/play.rs @@ -1,5 +1,5 @@ use crate::commands::join::join_channel; -use crate::metadata::{Metadata, MetadataMap}; +use crate::metadata::Metadata; use crate::state::State; use crate::{colors, db}; @@ -266,7 +266,7 @@ pub(crate) async fn play( .http .interaction(interaction.application_id) .update_response(&interaction.token) - .embeds(Some(&embeds))? + .embeds(Some(&embeds)) .await?; Ok(()) } @@ -348,7 +348,7 @@ pub(crate) async fn play_inner( .http .interaction(interaction.application_id) .update_response(&interaction.token) - .embeds(Some(&embeds))? + .embeds(Some(&embeds)) .await .context("Could not send playlist loading message")?; } @@ -401,8 +401,8 @@ pub(crate) async fn play_inner( } }), ); - let mut x = handle.typemap().write().await; - x.insert::(Metadata { + let mut _x = handle.data::(); + _x = Arc::new(Metadata { title: metadata.title, duration: metadata.duration, url, @@ -427,7 +427,7 @@ pub(crate) async fn play_inner( .http .interaction(interaction.application_id) .update_response(&interaction.token) - .embeds(Some(&embeds))? + .embeds(Some(&embeds)) .await?; return Ok(()); } @@ -440,7 +440,7 @@ pub(crate) async fn play_inner( .http .interaction(interaction.application_id) .update_response(&interaction.token) - .embeds(Some(&embeds))? + .embeds(Some(&embeds)) .await .context("Could not send final play message")?; diff --git a/src/commands/queue.rs b/src/commands/queue.rs index 98098e5..4fb502b 100644 --- a/src/commands/queue.rs +++ b/src/commands/queue.rs @@ -1,6 +1,6 @@ use songbird::tracks::TrackHandle; use twilight_model::channel::message::component::{ActionRow, Button, ButtonStyle}; -use twilight_model::channel::message::{Component, Embed, MessageFlags, ReactionType}; +use twilight_model::channel::message::{Component, Embed, EmojiReactionType, MessageFlags}; use twilight_model::gateway::payload::incoming::InteractionCreate; use twilight_model::http::interaction::InteractionResponse; use twilight_model::http::interaction::InteractionResponseType; @@ -8,7 +8,8 @@ use twilight_util::builder::embed::EmbedBuilder; use twilight_util::builder::InteractionResponseDataBuilder; use crate::colors; -use crate::{metadata::MetadataMap, state::State}; +use crate::metadata::Metadata; +use crate::state::State; use std::error::Error; pub(crate) const TRACKS_PER_PAGE: usize = 5; @@ -38,10 +39,7 @@ pub(crate) async fn build_queue_embeds(queue: &[TrackHandle], page: usize) -> Ve .skip(TRACKS_PER_PAGE * page) .take(TRACKS_PER_PAGE) { - let map = track.typemap().read().await; - let metadata = map - .get::() - .expect("Could not get metadata map"); + let metadata = track.data::(); message.push_str( format!( "* [{}]({})", @@ -76,31 +74,34 @@ pub(crate) fn build_action_row(page: usize, n_pages: usize) -> Vec { custom_id: Some(format!("page:{}", page as i32 - 1)), style: ButtonStyle::Primary, label: Some("Previous page".to_string()), - emoji: Some(ReactionType::Unicode { + emoji: Some(EmojiReactionType::Unicode { name: "⬅️".to_string(), }), url: None, disabled: page == 0, + sku_id: None, }), Component::Button(Button { custom_id: Some(format!("page:{}", page)), style: ButtonStyle::Primary, label: Some("Refresh".to_string()), - emoji: Some(ReactionType::Unicode { + emoji: Some(EmojiReactionType::Unicode { name: "🔄".to_string(), }), url: None, disabled: false, + sku_id: None, }), Component::Button(Button { custom_id: Some(format!("page:{}", page + 1)), style: ButtonStyle::Primary, label: Some("Next page".to_string()), - emoji: Some(ReactionType::Unicode { + emoji: Some(EmojiReactionType::Unicode { name: "➡️".to_string(), }), url: None, disabled: page >= n_pages - 1, + sku_id: None, }), ], })] @@ -153,8 +154,8 @@ pub(crate) async fn queue( .http .interaction(interaction.application_id) .update_response(&interaction.token) - .embeds(Some(&embeds))? - .components(Some(&action_row))? + .embeds(Some(&embeds)) + .components(Some(&action_row)) .await?; Ok(()) diff --git a/src/handler.rs b/src/handler.rs index dcb87f4..fb03897 100644 --- a/src/handler.rs +++ b/src/handler.rs @@ -14,6 +14,7 @@ use twilight_model::gateway::payload::incoming::InteractionCreate; use twilight_model::http::interaction::{InteractionResponse, InteractionResponseType}; use twilight_util::builder::InteractionResponseDataBuilder; +#[derive(Debug, Clone)] pub(crate) struct Handler { state: State, } diff --git a/src/main.rs b/src/main.rs index e00a23f..8cd1b76 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,18 +12,12 @@ mod utils; use crate::commands::get_chat_commands; use dotenv::dotenv; -use futures::StreamExt; -use signal::signal_handler; use songbird::{shards::TwilightMap, Songbird}; use state::StateRef; use std::{env, error::Error, str::FromStr, sync::Arc, time::Duration}; -use tokio::select; use tracing::{debug, info}; use twilight_cache_inmemory::InMemoryCache; -use twilight_gateway::{ - stream::{self, ShardEventStream}, - Intents, Shard, -}; +use twilight_gateway::{Event, EventTypeFlags, Intents, Shard, StreamExt as _}; use twilight_http::Client as HttpClient; use twilight_model::id::Id; use twilight_standby::Standby; @@ -38,7 +32,7 @@ async fn main() -> Result<(), Box> { info!("Starting up..."); - let (mut shards, state) = { + let (shards, state) = { let db = env::var("DATABASE_URL").map_err(|_| "DATABASE_URL is not set")?; let options = SqliteConnectOptions::from_str(&db) .expect("could not create options") @@ -71,7 +65,7 @@ async fn main() -> Result<(), Box> { | Intents::MESSAGE_CONTENT; let config = twilight_gateway::Config::new(token.clone(), intents); let shards: Vec = - stream::create_recommended(&http, config, |_, builder| builder.build()) + twilight_gateway::create_recommended(&http, config, |_, builder| builder.build()) .await? .collect(); let senders = TwilightMap::new( @@ -105,45 +99,55 @@ async fn main() -> Result<(), Box> { info!("Ready to receive events"); let handler = Handler::new(Arc::clone(&state)); - let mut stop_rx = signal_handler(); - let mut stream = ShardEventStream::new(shards.iter_mut()); - loop { - select! { - biased; - _ = stop_rx.changed() => { - for guild in state.cache.iter().guilds() { - if let Some(user) = state.cache.current_user() { - if state.cache.voice_state(user.id, guild.id()).is_some() { - debug!("Leaving guild {:?}", guild.id()); - state.songbird.leave(guild.id()).await?; - } - } - } - // need to grab next event to properly leave voice channels - stream.next().await; - break; - }, - next = stream.next() => { - let event = match next { - Some((_, Ok(event))) => event, - Some((_, Err(source))) => { - tracing::warn!(?source, "error receiving event"); - if source.is_fatal() { - break; - } - continue; - } - None => break, - }; - debug!("Event: {:?}", &event); + // let mut stop_rx = signal_handler(); + let mut set = tokio::task::JoinSet::new(); - state.cache.update(&event); - state.standby.process(&event); - state.songbird.process(&event).await; - - handler.act(event).await?; - } - } + for shard in shards { + set.spawn(tokio::spawn(runner(shard, handler.clone(), state.clone()))); } + set.join_next().await; + + Ok(()) +} + +async fn runner(mut shard: Shard, handler: Handler, state: Arc) { + while let Some(item) = shard.next_event(EventTypeFlags::all()).await { + let event = match item { + Ok(event) => event, + Err(source) => { + tracing::warn!(?source, "error receiving event"); + + continue; + } + }; + + tokio::spawn({ + let state = state.clone(); + let handler = handler.clone(); + async move { + handle_event(event, handler, state) + .await + .unwrap_or_else(|source| { + tracing::warn!(?source, "error handling event"); + }); + } + }); + } +} + +async fn handle_event( + event: Event, + handler: Handler, + state: Arc, +) -> Result<(), Box> { + state.standby.process(&event); + state.songbird.process(&event).await; + debug!("Event: {:?}", &event); + + state.cache.update(&event); + state.standby.process(&event); + state.songbird.process(&event).await; + + handler.act(event).await?; Ok(()) } diff --git a/src/metadata.rs b/src/metadata.rs index c7f0306..0097c5d 100644 --- a/src/metadata.rs +++ b/src/metadata.rs @@ -1,4 +1,4 @@ -use songbird::{input::YoutubeDl, typemap::TypeMapKey}; +use songbird::input::YoutubeDl; use std::time::Duration; #[derive(Clone)] @@ -6,10 +6,5 @@ pub(crate) struct Metadata { pub(crate) title: Option, pub(crate) duration: Option, pub(crate) url: String, - pub(crate) src: YoutubeDl, -} - -pub(crate) struct MetadataMap; -impl TypeMapKey for MetadataMap { - type Value = Metadata; + pub(crate) src: YoutubeDl<'static>, } diff --git a/src/signal.rs b/src/signal.rs index 35eb57d..fe59e71 100644 --- a/src/signal.rs +++ b/src/signal.rs @@ -1,21 +1,21 @@ -use tokio::{ - select, - signal::unix::{signal, SignalKind}, - sync::watch, -}; +// use tokio::{ +// select, +// signal::unix::{signal, SignalKind}, +// sync::watch, +// }; -pub(crate) fn signal_handler() -> watch::Receiver<()> { - let (stop_tx, stop_rx) = watch::channel(()); - tokio::spawn(async move { - let mut sigterm = signal(SignalKind::terminate()).unwrap(); - let mut sigint = signal(SignalKind::interrupt()).unwrap(); - loop { - select! { - _ = sigterm.recv() => println!("Receive SIGTERM"), - _ = sigint.recv() => println!("Receive SIGTERM"), - }; - stop_tx.send(()).unwrap(); - } - }); - stop_rx -} +// pub(crate) fn signal_handler() -> watch::Receiver<()> { +// let (stop_tx, stop_rx) = watch::channel(()); +// tokio::spawn(async move { +// let mut sigterm = signal(SignalKind::terminate()).unwrap(); +// let mut sigint = signal(SignalKind::interrupt()).unwrap(); +// loop { +// select! { +// _ = sigterm.recv() => println!("Receive SIGTERM"), +// _ = sigint.recv() => println!("Receive SIGTERM"), +// }; +// stop_tx.send(()).unwrap(); +// } +// }); +// stop_rx +// }