diff --git a/Cargo.lock b/Cargo.lock index 8653b53d91..718a42602e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "aead" version = "0.3.2" @@ -73,9 +79,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -97,62 +103,64 @@ checksum = "d1eb7c4fcde1858a6796c18a729b661346d38e05a207e2d9028bce822fc20283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "anstream" -version = "0.6.11" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.79" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" [[package]] name = "askama" @@ -175,7 +183,7 @@ checksum = "a41603f7cdbf5ac4af60760f17253eb6adf6ec5b6f14a7ed830cf687d375f163" dependencies = [ "askama", "axum-core", - "http 1.2.0", + "http 1.3.1", ] [[package]] @@ -191,7 +199,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -222,12 +230,11 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.1.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener 4.0.3", "event-listener-strategy", "futures-core", "pin-project-lite", @@ -235,9 +242,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.6" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a116f46a969224200a0a97f29cfd4c50e7534e4b4826bd23ea2c3c533039c82c" +checksum = "59a194f9d963d8099596278594b3107448656ba73831c9d8c783e613ce86da64" dependencies = [ "flate2", "futures-core", @@ -248,15 +255,14 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.8.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ - "async-lock 3.3.0", "async-task", "concurrent-queue", - "fastrand 2.0.1", - "futures-lite 2.2.0", + "fastrand 2.3.0", + "futures-lite 2.6.0", "slab", ] @@ -266,52 +272,32 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "async-channel 2.1.1", + "async-channel 2.3.1", "async-executor", - "async-io 2.3.0", - "async-lock 3.3.0", + "async-io", + "async-lock 3.4.0", "blocking", - "futures-lite 2.2.0", + "futures-lite 2.6.0", "once_cell", ] [[package]] name = "async-io" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" -dependencies = [ - "async-lock 2.8.0", - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-lite 1.13.0", - "log", - "parking", - "polling 2.8.0", - "rustix 0.37.27", - "slab", - "socket2 0.4.10", - "waker-fn", -] - -[[package]] -name = "async-io" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb41eb19024a91746eba0773aa5e16036045bbf45733766661099e182ea6a744" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" dependencies = [ - "async-lock 3.3.0", + "async-lock 3.4.0", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.2.0", + "futures-lite 2.6.0", "parking", - "polling 3.3.2", - "rustix 0.38.30", + "polling", + "rustix 0.38.44", "slab", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -325,30 +311,30 @@ dependencies = [ [[package]] name = "async-lock" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 4.0.3", + "event-listener 5.4.0", "event-listener-strategy", "pin-project-lite", ] [[package]] name = "async-std" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" dependencies = [ "async-channel 1.9.0", "async-global-executor", - "async-io 1.13.0", - "async-lock 2.8.0", + "async-io", + "async-lock 3.4.0", "crossbeam-utils", "futures-channel", "futures-core", "futures-io", - "futures-lite 1.13.0", + "futures-lite 2.6.0", "gloo-timers", "kv-log-macro", "log", @@ -362,9 +348,9 @@ dependencies = [ [[package]] name = "async-task" -version = "4.7.0" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-timer" @@ -379,13 +365,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.77" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -396,22 +382,22 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.7.5" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", "axum-core", - "base64 0.21.7", - "bytes 1.9.0", + "base64 0.22.1", + "bytes 1.10.1", "futures-util", - "http 1.2.0", + "http 1.3.1", "http-body", "http-body-util", "hyper", @@ -428,10 +414,10 @@ dependencies = [ "serde_path_to_error", "serde_urlencoded", "sha1 0.10.6", - "sync_wrapper 1.0.0", + "sync_wrapper", "tokio", - "tokio-tungstenite 0.21.0", - "tower 0.4.13", + "tokio-tungstenite 0.24.0", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -439,20 +425,20 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", - "bytes 1.9.0", + "bytes 1.10.1", "futures-util", - "http 1.2.0", + "http 1.3.1", "http-body", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 0.1.2", + "sync_wrapper", "tower-layer", "tower-service", "tracing", @@ -460,15 +446,15 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line", "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.7.4", "object", "rustc-demangle", ] @@ -485,12 +471,6 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -499,24 +479,18 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "basic-toml" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8" +checksum = "ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a" dependencies = [ "serde", ] [[package]] name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.4.2" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" [[package]] name = "block-buffer" @@ -538,25 +512,22 @@ dependencies = [ [[package]] name = "blocking" -version = "1.5.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ - "async-channel 2.1.1", - "async-lock 3.3.0", + "async-channel 2.3.1", "async-task", - "fastrand 2.0.1", "futures-io", - "futures-lite 2.2.0", + "futures-lite 2.6.0", "piper", - "tracing", ] [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byteorder" @@ -572,15 +543,15 @@ checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cc" -version = "1.2.16" +version = "1.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" +checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362" dependencies = [ "shlex", ] @@ -604,7 +575,7 @@ dependencies = [ "serde", "serde_derive", "tokio", - "tokio-tungstenite 0.26.1", + "tokio-tungstenite 0.26.2", "toml", "tracing", "tracing-subscriber", @@ -624,9 +595,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.26" +version = "4.5.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8eb5e908ef3a6efbe1ed62520fb7287959888c88485abe072543190ecc66783" +checksum = "2df961d8c8a0d08aa9945718ccf584145eee3f3aa06cddbeac12933781102e04" dependencies = [ "clap_builder", "clap_derive", @@ -634,9 +605,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.26" +version = "4.5.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b01801b5fc6a0a232407abc821660c9c6d25a1cafc0d4f85f29fb8d9afc121" +checksum = "132dbda40fb6753878316a489d5a1242a8ef2f0d9e47ba01c951ea8aa7d013a5" dependencies = [ "anstream", "anstyle", @@ -646,14 +617,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -691,24 +662,36 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "concurrent-queue" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "windows-sys 0.59.0", +] + [[package]] name = "const_fn" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" +checksum = "2f8a2ca5ac02d09563609681103aada9e1777d54fc57a5acd7a41404f9c93b6e" [[package]] name = "cookie" @@ -739,15 +722,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -760,18 +743,18 @@ checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto-common" @@ -804,24 +787,24 @@ dependencies = [ [[package]] name = "curl" -version = "0.4.44" +version = "0.4.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22" +checksum = "d9fb4d13a1be2b58f14d60adba57c9834b78c62fd86c3e76a148f732686e9265" dependencies = [ "curl-sys", "libc", "openssl-probe", "openssl-sys", "schannel", - "socket2 0.4.10", - "winapi", + "socket2", + "windows-sys 0.52.0", ] [[package]] name = "curl-sys" -version = "0.4.70+curl-8.5.0" +version = "0.4.80+curl-8.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0333d8849afe78a4c8102a429a446bfdd055832af071945520e835ae2d841e" +checksum = "55f7df2eac63200c3ab25bde3b2268ef2ee56af3d238e76d61f01c3c49bff734" dependencies = [ "cc", "libc", @@ -830,20 +813,20 @@ dependencies = [ "openssl-sys", "pkg-config", "vcpkg", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "data-encoding" -version = "2.5.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", ] @@ -882,7 +865,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -891,29 +874,35 @@ version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -924,9 +913,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "4.0.3" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" dependencies = [ "concurrent-queue", "parking", @@ -935,11 +924,11 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.4.0" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 4.0.3", + "event-listener 5.4.0", "pin-project-lite", ] @@ -965,7 +954,7 @@ dependencies = [ "tokio", "tokio-tungstenite 0.24.0", "tower 0.5.2", - "tower-http 0.6.0", + "tower-http 0.6.2", "tracing", "tracing-error", "tracing-log", @@ -1019,18 +1008,18 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "flate2" -version = "1.0.28" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.8", ] [[package]] @@ -1139,11 +1128,11 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.2.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" dependencies = [ - "fastrand 2.0.1", + "fastrand 2.3.0", "futures-core", "futures-io", "parking", @@ -1158,7 +1147,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -1214,15 +1203,27 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "getrandom" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + [[package]] name = "ghash" version = "0.3.1" @@ -1241,9 +1242,9 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "gloo-timers" -version = "0.2.6" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" dependencies = [ "futures-channel", "futures-core", @@ -1253,16 +1254,16 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.4" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069" +checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" dependencies = [ - "bytes 1.9.0", + "atomic-waker", + "bytes 1.10.1", "fnv", "futures-core", "futures-sink", - "futures-util", - "http 1.2.0", + "http 1.3.1", "indexmap", "slab", "tokio", @@ -1272,9 +1273,9 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" [[package]] name = "hashbrown" @@ -1290,9 +1291,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "hkdf" @@ -1325,45 +1326,45 @@ dependencies = [ [[package]] name = "http" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ - "bytes 1.9.0", + "bytes 1.10.1", "fnv", "itoa", ] [[package]] name = "http" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ - "bytes 1.9.0", + "bytes 1.10.1", "fnv", "itoa", ] [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ - "bytes 1.9.0", - "http 1.2.0", + "bytes 1.10.1", + "http 1.3.1", ] [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ - "bytes 1.9.0", + "bytes 1.10.1", "futures-core", - "http 1.2.0", + "http 1.3.1", "http-body", "pin-project-lite", ] @@ -1384,9 +1385,9 @@ dependencies = [ [[package]] name = "http-range-header" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ce4ef31cda248bbdb6e6820603b82dfcd9e833db65a43e997a0ccec777d11fe" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" [[package]] name = "http-types" @@ -1400,7 +1401,7 @@ dependencies = [ "base64 0.13.1", "cookie", "futures-lite 1.13.0", - "http 0.2.11", + "http 0.2.12", "infer", "pin-project-lite", "rand 0.7.3", @@ -1413,9 +1414,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -1434,15 +1435,15 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ - "bytes 1.9.0", + "bytes 1.10.1", "futures-channel", "futures-util", "h2", - "http 1.2.0", + "http 1.3.1", "http-body", "httparse", "httpdate", @@ -1455,12 +1456,12 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", - "http 1.2.0", + "http 1.3.1", "hyper", "hyper-util", "rustls", @@ -1476,7 +1477,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ - "bytes 1.9.0", + "bytes 1.10.1", "http-body-util", "hyper", "hyper-util", @@ -1488,18 +1489,19 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" dependencies = [ - "bytes 1.9.0", + "bytes 1.10.1", "futures-channel", "futures-util", - "http 1.2.0", + "http 1.3.1", "http-body", "hyper", + "libc", "pin-project-lite", - "socket2 0.5.5", + "socket2", "tokio", "tower-service", "tracing", @@ -1546,9 +1548,9 @@ dependencies = [ [[package]] name = "icu_locid_transform_data" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" +checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" [[package]] name = "icu_normalizer" @@ -1570,9 +1572,9 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" [[package]] name = "icu_properties" @@ -1591,9 +1593,9 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" [[package]] name = "icu_provider" @@ -1620,7 +1622,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -1652,9 +1654,9 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "2.7.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", "hashbrown", @@ -1667,30 +1669,39 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" [[package]] -name = "instant" -version = "0.1.12" +name = "insta" +version = "1.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "50259abbaa67d11d2bcafc7ba1d094ed7a0c70e3ce893f0d0997f73558cb3084" dependencies = [ - "cfg-if", + "console", + "linked-hash-map", + "once_cell", + "pin-project", + "serde", + "similar", ] [[package]] -name = "io-lifetimes" -version = "1.0.11" +name = "instant" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.48.0", + "cfg-if", ] [[package]] name = "ipnet" -version = "2.9.0" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "isahc" @@ -1704,7 +1715,7 @@ dependencies = [ "curl-sys", "flume", "futures-lite 1.13.0", - "http 0.2.11", + "http 0.2.12", "log", "once_cell", "slab", @@ -1717,16 +1728,17 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.67" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -1741,27 +1753,27 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.169" +version = "0.2.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libnghttp2-sys" -version = "0.1.9+1.58.0" +version = "0.1.11+1.64.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b57e858af2798e167e709b9d969325b6d8e9d50232fcbc494d7d54f976854a64" +checksum = "1b6c24e48a7167cffa7119da39d577fa482e66c688a4aac016bee862e1a713c4" dependencies = [ "cc", "libc", @@ -1769,9 +1781,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.15" +version = "1.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037731f5d3aaa87a5675e895b63ddff1a87624bc29f77004ea829809654e48f6" +checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" dependencies = [ "cc", "libc", @@ -1779,29 +1791,35 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + [[package]] name = "linux-raw-sys" -version = "0.3.8" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -1809,9 +1827,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" dependencies = [ "value-bag", ] @@ -1833,9 +1851,9 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "mime" @@ -1845,9 +1863,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ "mime", "unicase", @@ -1861,20 +1879,28 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +dependencies = [ + "adler2", +] + [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi", "libc", "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", @@ -1882,11 +1908,10 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ - "lazy_static", "libc", "log", "openssl", @@ -1926,9 +1951,9 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -1944,15 +1969,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "opaque-debug" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" @@ -1960,7 +1985,7 @@ version = "0.10.72" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" dependencies = [ - "bitflags 2.4.2", + "bitflags", "cfg-if", "foreign-types", "libc", @@ -1977,14 +2002,14 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" @@ -2012,9 +2037,9 @@ checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "percent-encoding" @@ -2024,29 +2049,29 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.4" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.4" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -2056,49 +2081,34 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.0.1", + "fastrand 2.3.0", "futures-io", ] [[package]] name = "pkg-config" -version = "0.3.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" - -[[package]] -name = "polling" -version = "2.8.0" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys 0.48.0", -] +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "polling" -version = "3.3.2" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545c980a3880efd47b2e262f6a4bb6daad6555cf3367aa9c4e52895f69537a41" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ "cfg-if", "concurrent-queue", + "hermit-abi", "pin-project-lite", - "rustix 0.38.30", + "rustix 0.38.44", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2120,9 +2130,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro-hack" @@ -2132,22 +2145,28 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.35" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "rand" version = "0.7.3" @@ -2172,6 +2191,17 @@ dependencies = [ "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", +] + [[package]] name = "rand_chacha" version = "0.2.2" @@ -2192,6 +2222,16 @@ dependencies = [ "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]] name = "rand_core" version = "0.5.1" @@ -2207,37 +2247,37 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.15", ] [[package]] -name = "rand_hc" -version = "0.2.0" +name = "rand_core" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "rand_core 0.5.1", + "getrandom 0.3.2", ] [[package]] -name = "redox_syscall" -version = "0.4.1" +name = "rand_hc" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" dependencies = [ - "bitflags 1.3.2", + "rand_core 0.5.1", ] [[package]] name = "regex" -version = "1.10.3" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.5", - "regex-syntax 0.8.2", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] @@ -2251,13 +2291,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.5" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.5", ] [[package]] @@ -2268,23 +2308,23 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.12" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" +checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" dependencies = [ "base64 0.22.1", - "bytes 1.9.0", + "bytes 1.10.1", "encoding_rs", "futures-core", "futures-util", "h2", - "http 1.2.0", + "http 1.3.1", "http-body", "http-body-util", "hyper", @@ -2303,7 +2343,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.0", + "sync_wrapper", "system-configuration", "tokio", "tokio-native-tls", @@ -2330,13 +2370,13 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.13" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ac5d832aa16abd7d1def883a8545280c20a60f523a370aa3a9617c2b8550ee" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.12", + "getrandom 0.2.15", "libc", "untrusted", "windows-sys 0.52.0", @@ -2344,9 +2384,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc_version" @@ -2368,36 +2408,35 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.27" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 1.3.2", + "bitflags", "errno", - "io-lifetimes", "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", ] [[package]] name = "rustix" -version = "0.38.30" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" +checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" dependencies = [ - "bitflags 2.4.2", + "bitflags", "errno", "libc", - "linux-raw-sys 0.4.13", - "windows-sys 0.52.0", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", ] [[package]] name = "rustls" -version = "0.23.11" +version = "0.23.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4828ea528154ae444e5a642dbb7d5623354030dc9822b83fd9bb79683c7399d0" +checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0" dependencies = [ "log", "once_cell", @@ -2410,25 +2449,24 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" [[package]] name = "rustls-webpki" -version = "0.102.6" +version = "0.103.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" dependencies = [ "ring", "rustls-pki-types", @@ -2437,23 +2475,23 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2464,11 +2502,11 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "security-framework" -version = "2.9.2" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 1.3.2", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -2477,9 +2515,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -2502,9 +2540,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] @@ -2521,40 +2559,41 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "serde_ignored" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8e319a36d1b52126a0d608f24e93b2d81297091818cd70625fcf50a15d84ddf" +checksum = "566da67d80e92e009728b3731ff0e5360cb181432b8ca73ea30bb1d170700d76" dependencies = [ "serde", ] [[package]] name = "serde_json" -version = "1.0.112" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d1bd37ce2324cf3bf85e5a25f96eb4baf0d5aa6eba43e7ae8958870c4ec48ed" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] [[package]] name = "serde_path_to_error" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd154a240de39fdebcf5775d2675c204d7c13cf39a4c697be6493c8e734337c" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" dependencies = [ "itoa", "serde", @@ -2568,7 +2607,7 @@ checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" dependencies = [ "percent-encoding", "serde", - "thiserror 1.0.56", + "thiserror 1.0.69", ] [[package]] @@ -2614,9 +2653,9 @@ dependencies = [ [[package]] name = "sha1_smol" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" [[package]] name = "sha2" @@ -2657,6 +2696,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "similar" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" + [[package]] name = "slab" version = "0.4.9" @@ -2679,28 +2724,18 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" [[package]] name = "socket2" -version = "0.4.10" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" dependencies = [ "libc", - "winapi", -] - -[[package]] -name = "socket2" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" -dependencies = [ - "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2784,9 +2819,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "surf" @@ -2798,7 +2833,7 @@ dependencies = [ "async-trait", "cfg-if", "futures-util", - "getrandom 0.2.12", + "getrandom 0.2.15", "http-client", "http-types", "log", @@ -2822,9 +2857,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.96" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", @@ -2833,15 +2868,9 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "sync_wrapper" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384595c11a4e2969895cad5a8c4029115f5ab956a9e5ef4de79d11a426e5f20c" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] @@ -2854,7 +2883,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -2863,7 +2892,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.4.2", + "bitflags", "core-foundation", "system-configuration-sys", ] @@ -2880,62 +2909,62 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.9.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ - "cfg-if", - "fastrand 2.0.1", - "redox_syscall", - "rustix 0.38.30", - "windows-sys 0.52.0", + "fastrand 2.3.0", + "getrandom 0.3.2", + "once_cell", + "rustix 1.0.5", + "windows-sys 0.59.0", ] [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.56", + "thiserror-impl 1.0.69", ] [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", @@ -2958,9 +2987,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", @@ -2968,14 +2997,14 @@ dependencies = [ "powerfmt", "serde", "time-core", - "time-macros 0.2.18", + "time-macros 0.2.22", ] [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" @@ -2989,9 +3018,9 @@ dependencies = [ [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", @@ -3033,11 +3062,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" dependencies = [ "backtrace", - "bytes 1.9.0", + "bytes 1.10.1", "libc", "mio", "pin-project-lite", - "socket2 0.5.5", + "socket2", "tokio-macros", "windows-sys 0.52.0", ] @@ -3050,7 +3079,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -3065,25 +3094,12 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ "rustls", - "rustls-pki-types", - "tokio", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" -dependencies = [ - "futures-util", - "log", "tokio", - "tungstenite 0.21.0", ] [[package]] @@ -3102,37 +3118,36 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4bf6fecd69fcdede0ec680aaf474cdab988f9de6bc73d3758f0160e3b7025a" +checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" dependencies = [ "futures-util", "log", "native-tls", "tokio", "tokio-native-tls", - "tungstenite 0.26.1", + "tungstenite 0.26.2", ] [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" dependencies = [ - "bytes 1.9.0", + "bytes 1.10.1", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] name = "toml" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ "serde", "serde_spanned", @@ -3151,9 +3166,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ "indexmap", "serde", @@ -3188,10 +3203,11 @@ dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 1.0.0", + "sync_wrapper", "tokio", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -3201,10 +3217,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "async-compression", - "bitflags 2.4.2", - "bytes 1.9.0", + "bitflags", + "bytes 1.10.1", "futures-core", - "http 1.2.0", + "http 1.3.1", "http-body", "http-body-util", "pin-project-lite", @@ -3217,14 +3233,14 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41515cc9e193536d93fd0dbbea0c73819c08eca76e0b30909a325c3ec90985bb" +checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ - "bitflags 2.4.2", - "bytes 1.9.0", + "bitflags", + "bytes 1.10.1", "futures-util", - "http 1.2.0", + "http 1.3.1", "http-body", "http-body-util", "http-range-header", @@ -3258,7 +3274,7 @@ version = "0.1.0" dependencies = [ "dotenvy", "futures", - "http 1.2.0", + "http 1.3.1", "http-body-util", "hyper", "hyper-tls", @@ -3292,7 +3308,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -3307,9 +3323,9 @@ dependencies = [ [[package]] name = "tracing-error" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" +checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" dependencies = [ "tracing", "tracing-subscriber", @@ -3360,25 +3376,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "tungstenite" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" -dependencies = [ - "byteorder", - "bytes 1.9.0", - "data-encoding", - "http 1.2.0", - "httparse", - "log", - "rand 0.8.5", - "sha1 0.10.6", - "thiserror 1.0.56", - "url", - "utf-8", -] - [[package]] name = "tungstenite" version = "0.24.0" @@ -3386,35 +3383,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" dependencies = [ "byteorder", - "bytes 1.9.0", + "bytes 1.10.1", "data-encoding", - "http 1.2.0", + "http 1.3.1", "httparse", "log", "native-tls", "rand 0.8.5", "sha1 0.10.6", - "thiserror 1.0.56", + "thiserror 1.0.69", "url", "utf-8", ] [[package]] name = "tungstenite" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413083a99c579593656008130e29255e54dcaae495be556cc26888f211648c24" +checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" dependencies = [ - "byteorder", - "bytes 1.9.0", + "bytes 1.10.1", "data-encoding", - "http 1.2.0", + "http 1.3.1", "httparse", "log", "native-tls", - "rand 0.8.5", + "rand 0.9.0", "sha1 0.10.6", - "thiserror 2.0.11", + "thiserror 2.0.12", "url", "utf-8", ] @@ -3429,10 +3425,11 @@ dependencies = [ "dotenvy", "futures", "hmac 0.12.1", - "http 1.2.0", + "http 1.3.1", "http-body-util", "http-types", "hyper", + "insta", "once_cell", "reqwest", "serde", @@ -3443,7 +3440,7 @@ dependencies = [ "serde_path_to_error", "sha2 0.10.8", "surf", - "thiserror 1.0.56", + "thiserror 1.0.69", "tokio", "tower 0.4.13", "tower-service", @@ -3464,7 +3461,7 @@ dependencies = [ "async-trait", "base64 0.22.1", "displaydoc", - "http 1.2.0", + "http 1.3.1", "http-types", "once_cell", "rand 0.8.5", @@ -3473,7 +3470,7 @@ dependencies = [ "serde_derive", "serde_json", "surf", - "thiserror 1.0.56", + "thiserror 1.0.69", "twitch_types", "url", ] @@ -3494,49 +3491,46 @@ version = "0.4.8" dependencies = [ "serde", "serde_derive", - "time 0.3.36", + "time 0.3.41", ] [[package]] name = "typed-builder" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e14ed59dc8b7b26cacb2a92bad2e8b1f098806063898ab42a3bd121d7d45e75" +checksum = "cd9d30e3a08026c78f246b173243cf07b3696d274debd26680773b6773c2afc7" dependencies = [ "typed-builder-macro", ] [[package]] name = "typed-builder-macro" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560b82d656506509d43abe30e0ba64c56b1953ab3d4fe7ba5902747a7a3cedd5" +checksum = "3c36781cc0e46a83726d9879608e4cf6c2505237e263a8eb8c24502989cfdb28" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "universal-hash" @@ -3556,9 +3550,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.10.1" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" +checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" dependencies = [ "base64 0.22.1", "log", @@ -3601,21 +3595,21 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "value-bag" -version = "1.6.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cdbaf5e132e593e9fc1de6a15bbec912395b11fb9719e061cf64f804524c503" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" [[package]] name = "vcpkg" @@ -3625,15 +3619,15 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "waker-fn" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" [[package]] name = "want" @@ -3656,48 +3650,59 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.90" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", + "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.90" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.40" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.90" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3705,28 +3710,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.90" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.90" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" -version = "0.3.67" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -3734,9 +3742,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.6" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" dependencies = [ "rustls-pki-types", ] @@ -3763,43 +3771,39 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + [[package]] name = "windows-registry" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ "windows-result", "windows-strings", - "windows-targets 0.52.6", + "windows-targets 0.53.0", ] [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" dependencies = [ - "windows-targets 0.52.6", + "windows-link", ] [[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.48.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" dependencies = [ - "windows-targets 0.48.5", + "windows-link", ] [[package]] @@ -3812,18 +3816,12 @@ dependencies = [ ] [[package]] -name = "windows-targets" -version = "0.48.5" +name = "windows-sys" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows-targets 0.52.6", ] [[package]] @@ -3835,7 +3833,7 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", @@ -3843,10 +3841,20 @@ dependencies = [ ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" +name = "windows-targets" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] [[package]] name = "windows_aarch64_gnullvm" @@ -3855,10 +3863,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" +name = "windows_aarch64_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" [[package]] name = "windows_aarch64_msvc" @@ -3867,10 +3875,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] -name = "windows_i686_gnu" -version = "0.48.5" +name = "windows_aarch64_msvc" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" [[package]] name = "windows_i686_gnu" @@ -3878,6 +3886,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" @@ -3885,10 +3899,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] -name = "windows_i686_msvc" -version = "0.48.5" +name = "windows_i686_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" [[package]] name = "windows_i686_msvc" @@ -3897,10 +3911,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" +name = "windows_i686_msvc" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" [[package]] name = "windows_x86_64_gnu" @@ -3909,10 +3923,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" +name = "windows_x86_64_gnu" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" [[package]] name = "windows_x86_64_gnullvm" @@ -3921,10 +3935,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" +name = "windows_x86_64_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" [[package]] name = "windows_x86_64_msvc" @@ -3932,15 +3946,30 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" -version = "0.6.24" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d71a593cc5c42ad7876e2c1fda56f314f3754c084128833e64f1345ff8a03a" +checksum = "63d3fcd9bba44b03821e7d699eeee959f3126dcc4aa8e4ae18ec617c2a5cea10" dependencies = [ "memchr", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + [[package]] name = "write16" version = "1.0.0" @@ -3955,18 +3984,18 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "xshell" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce2107fe03e558353b4c71ad7626d58ed82efaf56c54134228608893c77023ad" +checksum = "9e7290c623014758632efe00737145b6867b66292c42167f2ec381eb566a373d" dependencies = [ "xshell-macros", ] [[package]] name = "xshell-macros" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e2c411759b501fb9501aac2b1b2d287a6e93e5bdcf13c25306b23e1b716dd0e" +checksum = "32ac00cd3f8ec9c1d33fb3e7958a82df6989c42d747bd326c822b1d625283547" [[package]] name = "xtask" @@ -4005,28 +4034,48 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", "synstructure", ] +[[package]] +name = "zerocopy" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", "synstructure", ] @@ -4055,5 +4104,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] diff --git a/Cargo.toml b/Cargo.toml index f24b6f4063..38a0ae9ec3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -167,6 +167,7 @@ serde_cbor = "0.11.2" serde_json = "1.0.107" reqwest = "0.12.2" hyper = "1.4.1" +insta = { version = "1.42.0", features = ["json"] } [build-dependencies] tower = "0.4.13" diff --git a/src/eventsub/automod/message/hold.rs b/src/eventsub/automod/message/hold.rs index d69079c5ff..68708cfab8 100644 --- a/src/eventsub/automod/message/hold.rs +++ b/src/eventsub/automod/message/hold.rs @@ -71,9 +71,8 @@ pub struct AutomodMessageHoldV1Payload { #[cfg(test)] #[test] fn parse_payload_v1() { - use crate::eventsub::{Event, Message}; - - let payload = r##" + crate::eventsub::assert_eventsub_snapshot!( + r##" { "subscription": { "id": "e523fda0-01b6-4b0e-9024-a5a80c5ad680", @@ -115,22 +114,55 @@ fn parse_payload_v1() { "held_at": "2024-10-19T20:11:16.799750627Z" } } - "##; - - let val = Event::parse(payload).unwrap(); - crate::tests::roundtrip(&val); - - let Event::AutomodMessageHoldV1(val) = val else { - panic!("invalid event type"); - }; - let Message::Notification(notif) = val.message else { - panic!("invalid message type"); - }; - - assert_eq!(notif.broadcaster_user_id.as_str(), "129546453"); - assert_eq!(notif.category, AutomodCategory::Sexwords); - assert_eq!(notif.level, 4); - assert_eq!(notif.message.fragments.len(), 1); + "##, + @r#" + AutomodMessageHoldV1( + Payload { + subscription: EventSubscriptionInformation { + id: "e523fda0-01b6-4b0e-9024-a5a80c5ad680", + status: Enabled, + cost: 0, + condition: AutomodMessageHoldV1 { + broadcaster_user_id: "129546453", + moderator_user_id: "129546453", + }, + created_at: "2024-10-19T20:11:13.917500523Z", + transport: Websocket( + WebsocketTransportResponse { + session_id: "AgoQRniKAQ1ITYSESh4ku8anEBIGY2VsbC1j", + connected_at: None, + disconnected_at: None, + }, + ), + type_: AutomodMessageHold, + version: "1", + }, + message: Notification( + AutomodMessageHoldV1Payload { + broadcaster_user_id: "129546453", + broadcaster_user_login: "nerixyz", + broadcaster_user_name: "nerixyz", + user_id: "489584266", + user_login: "uint128", + user_name: "uint128", + message_id: "332e99ac-e19c-4368-a15b-793e8266b51f", + message: AutomodMessage { + text: "boobs", + fragments: [ + Text { + text: "boobs", + }, + ], + }, + category: Sexwords, + level: 4, + held_at: "2024-10-19T20:11:16.799750627Z", + }, + ), + }, + ) + "# + ); } /// [`automod.message.hold`](https://dev.twitch.tv/docs/eventsub/eventsub-subscription-types/#automodmessagehold-v2): a message was caught by automod for review. @@ -200,9 +232,8 @@ pub struct AutomodMessageHoldV2Payload { #[test] fn parse_payload_v2_automod() { - use crate::eventsub::{Event, Message}; - - let payload = r##" + crate::eventsub::assert_eventsub_snapshot!( + r##" { "subscription": { "id": "85c8dcb0-7af4-4581-b684-32087d386384", @@ -260,40 +291,74 @@ fn parse_payload_v2_automod() { "held_at": "2024-11-18T16:59:46.323937273Z" } } - "##; - - let val = Event::parse(payload).unwrap(); - crate::tests::roundtrip(&val); - - let Event::AutomodMessageHoldV2(val) = val else { - panic!("invalid event type"); - }; - let Message::Notification(notif) = val.message else { - panic!("invalid message type"); - }; - - assert_eq!(notif.broadcaster_user_id.as_str(), "129546453"); - assert_eq!(notif.message.fragments.len(), 2); - - let AutomodHeldReason::Automod(automod) = ¬if.reason else { - panic!("invalid held reason"); - }; - assert_eq!(automod.category, AutomodCategory::Swearing); - assert_eq!(automod.level, 4); - assert_eq!( - automod.boundaries, - &[AutomodMessageBoundary { - start_pos: 2, - end_pos: 4 - }] + "##, + @r#" + AutomodMessageHoldV2( + Payload { + subscription: EventSubscriptionInformation { + id: "85c8dcb0-7af4-4581-b684-32087d386384", + status: Enabled, + cost: 0, + condition: AutomodMessageHoldV2 { + broadcaster_user_id: "129546453", + moderator_user_id: "129546453", + }, + created_at: "2024-11-18T16:36:08.691979783Z", + transport: Websocket( + WebsocketTransportResponse { + session_id: "AgoQREw4FYBWQ5quz4J-S4VYkRIGY2VsbC1j", + connected_at: None, + disconnected_at: None, + }, + ), + type_: AutomodMessageHold, + version: "2", + }, + message: Notification( + AutomodMessageHoldV2Payload { + broadcaster_user_id: "129546453", + broadcaster_user_login: "nerixyz", + broadcaster_user_name: "nerixyz", + user_id: "489584266", + user_login: "uint128", + user_name: "uint128", + message_id: "78ccd959-3e7e-4f8d-bd8b-f92c359b0a7d", + message: AutomodMessage { + text: "😂 ass", + fragments: [ + Text { + text: "😂 ", + }, + Text { + text: "ass", + }, + ], + }, + reason: Automod( + AutomodMessageInfo { + category: Swearing, + level: 4, + boundaries: [ + AutomodMessageBoundary { + start_pos: 2, + end_pos: 4, + }, + ], + }, + ), + held_at: "2024-11-18T16:59:46.323937273Z", + }, + ), + }, + ) + "# ); } #[test] fn parse_payload_v2_blocked_term() { - use crate::eventsub::{Event, Message}; - - let payload = r##" + crate::eventsub::assert_eventsub_snapshot!( + r##" { "subscription": { "id": "85c8dcb0-7af4-4581-b684-32087d386384", @@ -398,34 +463,99 @@ fn parse_payload_v2_blocked_term() { "held_at": "2024-11-18T16:58:41.476117057Z" } } - "##; - - let val = Event::parse(payload).unwrap(); - crate::tests::roundtrip(&val); - - let Event::AutomodMessageHoldV2(val) = val else { - panic!("invalid event type"); - }; - let Message::Notification(notif) = val.message else { - panic!("invalid message type"); - }; - - assert_eq!(notif.broadcaster_user_id.as_str(), "129546453"); - assert_eq!(notif.message.fragments.len(), 7); - - let AutomodHeldReason::BlockedTerm(blocked_term) = ¬if.reason else { - panic!("invalid held reason"); - }; - assert_eq!(blocked_term.terms_found.len(), 2); - assert_eq!( - blocked_term.terms_found[0].term_id.as_str(), - "e4d4f1ba-99bf-4b19-9875-cd4eda98ead9" - ); - assert_eq!( - blocked_term.terms_found[0].boundary, - AutomodMessageBoundary { - start_pos: 15, - end_pos: 17 - } + "##, + @r#" + AutomodMessageHoldV2( + Payload { + subscription: EventSubscriptionInformation { + id: "85c8dcb0-7af4-4581-b684-32087d386384", + status: Enabled, + cost: 0, + condition: AutomodMessageHoldV2 { + broadcaster_user_id: "129546453", + moderator_user_id: "129546453", + }, + created_at: "2024-11-18T16:36:08.691979783Z", + transport: Websocket( + WebsocketTransportResponse { + session_id: "AgoQREw4FYBWQ5quz4J-S4VYkRIGY2VsbC1j", + connected_at: None, + disconnected_at: None, + }, + ), + type_: AutomodMessageHold, + version: "2", + }, + message: Notification( + AutomodMessageHoldV2Payload { + broadcaster_user_id: "129546453", + broadcaster_user_login: "nerixyz", + broadcaster_user_name: "nerixyz", + user_id: "489584266", + user_login: "uint128", + user_name: "uint128", + message_id: "dcfc6b48-0fd1-446c-8cf5-d1810bb55b73", + message: AutomodMessage { + text: "boobs Kappa 😂😂 foo private", + fragments: [ + Text { + text: "boobs", + }, + Text { + text: " ", + }, + Emote { + text: "Kappa", + emote: AutomodMessageEmote { + id: "25", + emote_set_id: "0", + }, + }, + Text { + text: " 😂😂 ", + }, + Text { + text: "foo", + }, + Text { + text: " ", + }, + Text { + text: "private", + }, + ], + }, + reason: BlockedTerm( + AutomodBlockedTermInfo { + terms_found: [ + AutomodBlockedTerm { + term_id: "e4d4f1ba-99bf-4b19-9875-cd4eda98ead9", + boundary: AutomodMessageBoundary { + start_pos: 15, + end_pos: 17, + }, + owner_broadcaster_user_id: "129546453", + owner_broadcaster_user_login: "nerixyz", + owner_broadcaster_user_name: "nerixyz", + }, + AutomodBlockedTerm { + term_id: "e60a94ea-e5d9-444e-a114-4cfd2f86c6ad", + boundary: AutomodMessageBoundary { + start_pos: 19, + end_pos: 25, + }, + owner_broadcaster_user_id: "129546453", + owner_broadcaster_user_login: "nerixyz", + owner_broadcaster_user_name: "nerixyz", + }, + ], + }, + ), + held_at: "2024-11-18T16:58:41.476117057Z", + }, + ), + }, + ) + "# ); } diff --git a/src/eventsub/automod/message/update.rs b/src/eventsub/automod/message/update.rs index 1fa22ee928..c5ba413531 100644 --- a/src/eventsub/automod/message/update.rs +++ b/src/eventsub/automod/message/update.rs @@ -82,9 +82,8 @@ pub struct AutomodMessageUpdateV1Payload { #[cfg(test)] #[test] fn parse_payload_v1() { - use crate::eventsub::{Event, Message}; - - let payload = r##" + crate::eventsub::assert_eventsub_snapshot!( + r##" { "subscription": { "id": "79cc58a2-1c34-48e0-97fe-126d5d77bf10", @@ -130,23 +129,59 @@ fn parse_payload_v1() { "held_at": "2024-11-03T11:53:45.331308397Z" } } - "##; - - let val = Event::parse(payload).unwrap(); - crate::tests::roundtrip(&val); - - let Event::AutomodMessageUpdateV1(val) = val else { - panic!("invalid event type"); - }; - let Message::Notification(notif) = val.message else { - panic!("invalid message type"); - }; - - assert_eq!(notif.broadcaster_user_id.as_str(), "129546453"); - assert_eq!(notif.category, AutomodCategory::Sexwords); - assert_eq!(notif.level, 4); - assert_eq!(notif.status, AutomodMessageStatus::Approved); - assert_eq!(notif.message.fragments.len(), 1); + "##, + @r#" + AutomodMessageUpdateV1( + Payload { + subscription: EventSubscriptionInformation { + id: "79cc58a2-1c34-48e0-97fe-126d5d77bf10", + status: Enabled, + cost: 0, + condition: AutomodMessageUpdateV1 { + broadcaster_user_id: "129546453", + moderator_user_id: "129546453", + }, + created_at: "2024-11-03T11:52:04.695680375Z", + transport: Websocket( + WebsocketTransportResponse { + session_id: "AgoQZ12VWLotRG6u3pudLlbhvhIGY2VsbC1j", + connected_at: None, + disconnected_at: None, + }, + ), + type_: AutomodMessageUpdate, + version: "1", + }, + message: Notification( + AutomodMessageUpdateV1Payload { + broadcaster_user_id: "129546453", + broadcaster_user_login: "nerixyz", + broadcaster_user_name: "nerixyz", + user_id: "489584266", + user_login: "uint128", + user_name: "uint128", + moderator_user_id: "129546453", + moderator_user_login: "nerixyz", + moderator_user_name: "nerixyz", + message_id: "8b722958-741f-4013-8a8b-c7793d3aef9f", + message: AutomodMessage { + text: "boobs", + fragments: [ + Text { + text: "boobs", + }, + ], + }, + category: Sexwords, + level: 4, + status: Approved, + held_at: "2024-11-03T11:53:45.331308397Z", + }, + ), + }, + ) + "# + ); } /// [`automod.message.update`](dev.twitch.tv/docs/eventsub/eventsub-subscription-types/#automodmessageupdate-v2): a message in the automod queue had its status changed. @@ -227,9 +262,8 @@ pub struct AutomodMessageUpdateV2Payload { #[test] fn parse_payload_v2_automod() { - use crate::eventsub::{Event, Message}; - - let payload = r##" + crate::eventsub::assert_eventsub_snapshot!( + r##" { "subscription": { "id": "5d64b907-001e-4cf1-9227-37871c7ce1b0", @@ -300,41 +334,85 @@ fn parse_payload_v2_automod() { "held_at": "2024-11-18T19:26:37.707305502Z" } } - "##; - - let val = Event::parse(payload).unwrap(); - crate::tests::roundtrip(&val); - - let Event::AutomodMessageUpdateV2(val) = val else { - panic!("invalid event type"); - }; - let Message::Notification(notif) = val.message else { - panic!("invalid message type"); - }; - - assert_eq!(notif.broadcaster_user_id.as_str(), "129546453"); - assert_eq!(notif.message.fragments.len(), 3); - assert_eq!(notif.status, AutomodMessageStatus::Denied); - - let AutomodHeldReason::Automod(automod) = ¬if.reason else { - panic!("invalid held reason"); - }; - assert_eq!(automod.category, AutomodCategory::Swearing); - assert_eq!(automod.level, 4); - assert_eq!( - automod.boundaries, - &[AutomodMessageBoundary { - start_pos: 6, - end_pos: 8 - }] + "##, + @r#" + AutomodMessageUpdateV2( + Payload { + subscription: EventSubscriptionInformation { + id: "5d64b907-001e-4cf1-9227-37871c7ce1b0", + status: Enabled, + cost: 0, + condition: AutomodMessageUpdateV2 { + broadcaster_user_id: "129546453", + moderator_user_id: "129546453", + }, + created_at: "2024-11-18T19:25:05.666970955Z", + transport: Websocket( + WebsocketTransportResponse { + session_id: "AgoQSrkrRHHrQsS-i4xbndeC0hIGY2VsbC1j", + connected_at: None, + disconnected_at: None, + }, + ), + type_: AutomodMessageUpdate, + version: "2", + }, + message: Notification( + AutomodMessageUpdateV2Payload { + broadcaster_user_id: "129546453", + broadcaster_user_login: "nerixyz", + broadcaster_user_name: "nerixyz", + user_id: "489584266", + user_login: "uint128", + user_name: "uint128", + moderator_user_id: "129546453", + moderator_user_login: "nerixyz", + moderator_user_name: "nerixyz", + message_id: "2a867e45-a4d3-4e7e-a5cc-a9a00ee98bf7", + message: AutomodMessage { + text: "Kappa ass", + fragments: [ + Emote { + text: "Kappa", + emote: AutomodMessageEmote { + id: "25", + emote_set_id: "0", + }, + }, + Text { + text: " ", + }, + Text { + text: "ass", + }, + ], + }, + status: Denied, + held_at: "2024-11-18T19:26:37.707305502Z", + reason: Automod( + AutomodMessageInfo { + category: Swearing, + level: 4, + boundaries: [ + AutomodMessageBoundary { + start_pos: 6, + end_pos: 8, + }, + ], + }, + ), + }, + ), + }, + ) + "# ); } #[test] fn parse_payload_v2_blocked_term() { - use crate::eventsub::{Event, Message}; - - let payload = r##" + crate::eventsub::assert_eventsub_snapshot!( + r##" { "subscription": { "id": "5d64b907-001e-4cf1-9227-37871c7ce1b0", @@ -394,35 +472,71 @@ fn parse_payload_v2_blocked_term() { "held_at": "2024-11-18T19:25:52.991756968Z" } } - "##; - - let val = Event::parse(payload).unwrap(); - crate::tests::roundtrip(&val); - - let Event::AutomodMessageUpdateV2(val) = val else { - panic!("invalid event type"); - }; - let Message::Notification(notif) = val.message else { - panic!("invalid message type"); - }; - - assert_eq!(notif.broadcaster_user_id.as_str(), "129546453"); - assert_eq!(notif.message.fragments.len(), 1); - assert_eq!(notif.status, AutomodMessageStatus::Approved); - - let AutomodHeldReason::BlockedTerm(blocked_term) = ¬if.reason else { - panic!("invalid held reason"); - }; - assert_eq!(blocked_term.terms_found.len(), 1); - assert_eq!( - blocked_term.terms_found[0].term_id.as_str(), - "e4d4f1ba-99bf-4b19-9875-cd4eda98ead9" - ); - assert_eq!( - blocked_term.terms_found[0].boundary, - AutomodMessageBoundary { - start_pos: 0, - end_pos: 2 - } + "##, + @r#" + AutomodMessageUpdateV2( + Payload { + subscription: EventSubscriptionInformation { + id: "5d64b907-001e-4cf1-9227-37871c7ce1b0", + status: Enabled, + cost: 0, + condition: AutomodMessageUpdateV2 { + broadcaster_user_id: "129546453", + moderator_user_id: "129546453", + }, + created_at: "2024-11-18T19:25:05.666970955Z", + transport: Websocket( + WebsocketTransportResponse { + session_id: "AgoQSrkrRHHrQsS-i4xbndeC0hIGY2VsbC1j", + connected_at: None, + disconnected_at: None, + }, + ), + type_: AutomodMessageUpdate, + version: "2", + }, + message: Notification( + AutomodMessageUpdateV2Payload { + broadcaster_user_id: "129546453", + broadcaster_user_login: "nerixyz", + broadcaster_user_name: "nerixyz", + user_id: "489584266", + user_login: "uint128", + user_name: "uint128", + moderator_user_id: "129546453", + moderator_user_login: "nerixyz", + moderator_user_name: "nerixyz", + message_id: "8c2b43ed-88a0-4b3e-8c02-266c323e1d95", + message: AutomodMessage { + text: "foo", + fragments: [ + Text { + text: "foo", + }, + ], + }, + status: Approved, + held_at: "2024-11-18T19:25:52.991756968Z", + reason: BlockedTerm( + AutomodBlockedTermInfo { + terms_found: [ + AutomodBlockedTerm { + term_id: "e4d4f1ba-99bf-4b19-9875-cd4eda98ead9", + boundary: AutomodMessageBoundary { + start_pos: 0, + end_pos: 2, + }, + owner_broadcaster_user_id: "129546453", + owner_broadcaster_user_login: "nerixyz", + owner_broadcaster_user_name: "nerixyz", + }, + ], + }, + ), + }, + ), + }, + ) + "# ); } diff --git a/src/eventsub/mod.rs b/src/eventsub/mod.rs index 675cca1612..6830d8cdef 100644 --- a/src/eventsub/mod.rs +++ b/src/eventsub/mod.rs @@ -1179,6 +1179,18 @@ mod enum_field_as_inner_prefixed { } } +#[cfg(test)] +macro_rules! assert_eventsub_snapshot { + ($payload:literal, @$inline:literal) => {{ + let parsed = $crate::eventsub::Event::parse($payload).unwrap(); + $crate::tests::roundtrip(&parsed); + ::insta::assert_debug_snapshot!(parsed, @$inline); + }}; +} + +#[cfg(test)] +pub(crate) use assert_eventsub_snapshot; + #[cfg(test)] mod test { diff --git a/src/helix/endpoints/eventsub/create_conduit.rs b/src/helix/endpoints/eventsub/create_conduit.rs index 913ca6f3b6..37892d209d 100644 --- a/src/helix/endpoints/eventsub/create_conduit.rs +++ b/src/helix/endpoints/eventsub/create_conduit.rs @@ -75,47 +75,39 @@ impl RequestPost for CreateConduitRequest { #[cfg(test)] #[test] -fn test_uri() { - use helix::*; - let req: CreateConduitRequest = CreateConduitRequest::default(); - - let uri = req.get_uri().unwrap(); - assert_eq!( - uri.to_string(), - "https://api.twitch.tv/helix/eventsub/conduits?" - ); -} - -#[cfg(test)] -#[test] -fn test_successful_response() { - use helix::*; - let req: CreateConduitRequest = CreateConduitRequest::default(); - - let data = br#"{ - "data": [ - { - "id": "bfcfc993-26b1-b876-44d9-afe75a379dac", - "shard_count": 5 - } - ] - } - "# - .to_vec(); - let http_response = http::Response::builder().status(200).body(data).unwrap(); - - let uri = req.get_uri().unwrap(); - let response = CreateConduitRequest::parse_response(Some(req), &uri, http_response).unwrap(); - - assert_eq!( - response.data, - crate::eventsub::Conduit { - id: "bfcfc993-26b1-b876-44d9-afe75a379dac".into(), +fn test_response() { + helix::assert_helix_snapshot!( + CreateConduitRequest: + req = CreateConduitRequest::default(), + res = br#"{ + "data": [ + { + "id": "bfcfc993-26b1-b876-44d9-afe75a379dac", + "shard_count": 5 + } + ] + }"#, + @r#" + uri + ---- + https://api.twitch.tv/helix/eventsub/conduits? + + response + ---- + Response { + data: Conduit { + id: "bfcfc993-26b1-b876-44d9-afe75a379dac", shard_count: 5, }, + pagination: None, + request: Some( + CreateConduitRequest, + ), + total: None, + other: None, + } + "#, ); - - dbg!("{:#?}", response); } #[cfg(test)] diff --git a/src/helix/endpoints/eventsub/create_eventsub_subscription.rs b/src/helix/endpoints/eventsub/create_eventsub_subscription.rs index 7e0f3df2df..cb64bbcc18 100644 --- a/src/helix/endpoints/eventsub/create_eventsub_subscription.rs +++ b/src/helix/endpoints/eventsub/create_eventsub_subscription.rs @@ -192,59 +192,77 @@ impl helix::RequestPost for CreateEventSubSubscriptionRequ #[test] fn test_request() { use crate::eventsub::{self, user::UserUpdateV1}; - use helix::*; - let req: CreateEventSubSubscriptionRequest = - CreateEventSubSubscriptionRequest::default(); let sub = UserUpdateV1::new("1234"); let transport = eventsub::Transport::webhook("https://this-is-a-callback.com", "s3cre7".to_string()); - let body = CreateEventSubSubscriptionBody::new(sub, transport); + helix::assert_helix_snapshot!(CreateEventSubSubscriptionRequest::: + req = CreateEventSubSubscriptionRequest::::default(), + body = CreateEventSubSubscriptionBody::new(sub, transport), + res = br#"{ + "data": [ + { + "id": "26b1c993-bfcf-44d9-b876-379dacafe75a", + "status": "webhook_callback_verification_pending", + "type": "user.update", + "version": "1", + "condition": { + "user_id": "1234" + }, + "created_at": "2020-11-10T14:32:18.730260295Z", + "transport": { + "method": "webhook", + "callback": "https://this-is-a-callback.com" + }, + "cost": 1 + } + ], + "total": 1, + "total_cost": 1, + "max_total_cost": 10000 + }"#, + status = 202, + @r#" + uri + ---- + https://api.twitch.tv/helix/eventsub/subscriptions? - assert_eq!( - std::str::from_utf8(&body.try_to_body().unwrap()).unwrap(), - r#"{"type":"user.update","version":"1","condition":{"user_id":"1234"},"transport":{"method":"webhook","callback":"https://this-is-a-callback.com","secret":"s3cre7"}}"# - ); + body + ---- + {"type":"user.update","version":"1","condition":{"user_id":"1234"},"transport":{"method":"webhook","callback":"https://this-is-a-callback.com","secret":"s3cre7"}} - dbg!(req.create_request(body, "token", "clientid").unwrap()); - - // From twitch docs, FIXME: docs say `users.update` in example for Create EventSub Subscription, they also use kebab-case for status - // "{"type":"users.update","version":"1","condition":{"user_id":"1234"},"transport":{"method":"webhook","callback":"https://this-is-a-callback.com","secret":"s3cre7"}}" - let data = br#"{ - "data": [ - { - "id": "26b1c993-bfcf-44d9-b876-379dacafe75a", - "status": "webhook_callback_verification_pending", - "type": "user.update", - "version": "1", - "condition": { - "user_id": "1234" + response + ---- + Response { + data: CreateEventSubSubscription { + id: "26b1c993-bfcf-44d9-b876-379dacafe75a", + status: WebhookCallbackVerificationPending, + type_: UserUpdate, + version: "1", + condition: UserUpdateV1 { + user_id: "1234", }, - "created_at": "2020-11-10T14:32:18.730260295Z", - "transport": { - "method": "webhook", - "callback": "https://this-is-a-callback.com" + created_at: "2020-11-10T14:32:18.730260295Z", + transport: Webhook( + WebhookTransportResponse { + callback: "https://this-is-a-callback.com", + }, + ), + total: 1, + total_cost: 1, + max_total_cost: 10000, + cost: 1, + }, + pagination: None, + request: Some( + CreateEventSubSubscriptionRequest { + phantom: PhantomData, }, - "cost": 1 - } - ], - "total": 1, - "total_cost": 1, - "max_total_cost": 10000 -} - "# - .to_vec(); - let http_response = http::Response::builder().status(202).body(data).unwrap(); - - let uri = req.get_uri().unwrap(); - assert_eq!( - uri.to_string(), - "https://api.twitch.tv/helix/eventsub/subscriptions?" - ); - - dbg!( - "{:#?}", - CreateEventSubSubscriptionRequest::parse_response(Some(req), &uri, http_response).unwrap() + ), + total: None, + other: None, + } + "#, ); } diff --git a/src/helix/endpoints/eventsub/delete_conduit.rs b/src/helix/endpoints/eventsub/delete_conduit.rs index 3488eaf9ab..d04c39dab1 100644 --- a/src/helix/endpoints/eventsub/delete_conduit.rs +++ b/src/helix/endpoints/eventsub/delete_conduit.rs @@ -72,27 +72,28 @@ impl RequestDelete for DeleteConduitRequest<'_> { #[cfg(test)] #[test] -fn test_uri() { - use helix::*; - let req = DeleteConduitRequest::new("bfcfc993-26b1-b876-44d9-afe75a379dac"); +fn test_response() { + helix::assert_helix_snapshot!( + DeleteConduitRequest: + req = DeleteConduitRequest::new("bfcfc993-26b1-b876-44d9-afe75a379dac"), + @r#" + uri + ---- + https://api.twitch.tv/helix/eventsub/conduits?id=bfcfc993-26b1-b876-44d9-afe75a379dac - let uri = req.get_uri().unwrap(); - assert_eq!( - uri.to_string(), - "https://api.twitch.tv/helix/eventsub/conduits?id=bfcfc993-26b1-b876-44d9-afe75a379dac" + response + ---- + Response { + data: Success, + pagination: None, + request: Some( + DeleteConduitRequest { + id: "bfcfc993-26b1-b876-44d9-afe75a379dac", + }, + ), + total: None, + other: None, + } + "#, ); } - -#[cfg(test)] -#[test] -fn test_successful_response() { - use helix::*; - let req = DeleteConduitRequest::new("bfcfc993-26b1-b876-44d9-afe75a379dac"); - - let http_response = http::Response::builder().status(204).body(vec![]).unwrap(); - - let uri = req.get_uri().unwrap(); - let response = DeleteConduitRequest::parse_response(Some(req), &uri, http_response).unwrap(); - - assert_eq!(response.data, DeleteConduitResponse::Success); -} diff --git a/src/helix/endpoints/eventsub/delete_eventsub_subscription.rs b/src/helix/endpoints/eventsub/delete_eventsub_subscription.rs index 3fedba52f1..6427a9efce 100644 --- a/src/helix/endpoints/eventsub/delete_eventsub_subscription.rs +++ b/src/helix/endpoints/eventsub/delete_eventsub_subscription.rs @@ -70,20 +70,27 @@ impl RequestDelete for DeleteEventSubSubscriptionRequest<'_> { #[cfg(test)] #[test] fn test_request() { - use helix::*; - let req: DeleteEventSubSubscriptionRequest = DeleteEventSubSubscriptionRequest::id("deadbeef"); + helix::assert_helix_snapshot!( + DeleteEventSubSubscriptionRequest: + req = DeleteEventSubSubscriptionRequest::id("deadbeef"), + @r#" + uri + ---- + https://api.twitch.tv/helix/eventsub/subscriptions?id=deadbeef - let data = vec![]; - let http_response = http::Response::builder().status(204).body(data).unwrap(); - - let uri = req.get_uri().unwrap(); - assert_eq!( - uri.to_string(), - "https://api.twitch.tv/helix/eventsub/subscriptions?id=deadbeef" - ); - - dbg!( - "{:#?}", - DeleteEventSubSubscriptionRequest::parse_response(Some(req), &uri, http_response).unwrap() + response + ---- + Response { + data: Success, + pagination: None, + request: Some( + DeleteEventSubSubscriptionRequest { + id: "deadbeef", + }, + ), + total: None, + other: None, + } + "#, ); } diff --git a/src/helix/endpoints/eventsub/get_conduit_shards.rs b/src/helix/endpoints/eventsub/get_conduit_shards.rs index 5223a2d032..3f1f0c5613 100644 --- a/src/helix/endpoints/eventsub/get_conduit_shards.rs +++ b/src/helix/endpoints/eventsub/get_conduit_shards.rs @@ -78,131 +78,143 @@ impl helix::Paginated for GetConduitShardsRequest<'_> { } } -#[cfg(test)] -#[test] -fn test_uri() { - use helix::*; - let req = GetConduitShardsRequest::new("12345"); - - let uri = req.get_uri().unwrap(); - assert_eq!( - uri.to_string(), - "https://api.twitch.tv/helix/eventsub/conduits/shards?conduit_id=12345" - ); -} - #[cfg(test)] #[test] fn test_request() { - use helix::*; - use types::Timestamp; - - use crate::eventsub::{ - ShardStatus, TransportResponse, WebhookTransportResponse, WebsocketTransportResponse, - }; - let req = GetConduitShardsRequest::new("12345"); - - let data = br#"{ - "data": [ - { - "id": "0", - "status": "enabled", - "transport": { - "method": "webhook", - "callback": "https://this-is-a-callback.com" - } - }, - { - "id": "1", - "status": "webhook_callback_verification_pending", - "transport": { - "method": "webhook", - "callback": "https://this-is-a-callback-2.com" - } - }, - { - "id": "2", - "status": "enabled", - "transport": { - "method": "websocket", - "session_id": "9fd5164a-a958-4c60-b7f4-6a7202506ca0", - "connected_at": "2020-11-10T14:32:18.730260295Z" - } - }, - { - "id": "3", - "status": "enabled", - "transport": { - "method": "websocket", - "session_id": "238b4b08-13f1-4b8f-8d31-56665a7a9d9f", - "connected_at": "2020-11-10T14:32:18.730260295Z" - } - }, - { - "id": "4", - "status": "websocket_disconnected", - "transport": { - "method": "websocket", - "session_id": "ad1c9fc3-0d99-4eb7-8a04-8608e8ff9ec9", - "connected_at": "2020-11-10T14:32:18.730260295Z", - "disconnected_at": "2020-11-11T14:32:18.730260295Z" - } - } - ], - "pagination": {} -}"# - .to_vec(); - let http_response = http::Response::builder().status(200).body(data).unwrap(); - - let uri = req.get_uri().unwrap(); - let response = GetConduitShardsRequest::parse_response(Some(req), &uri, http_response).unwrap(); - - assert_eq!( - response.data, - vec![ - crate::eventsub::ShardResponse { - id: "0".into(), - status: ShardStatus::Enabled, - transport: TransportResponse::Webhook(WebhookTransportResponse { - callback: "https://this-is-a-callback.com".to_string(), - }), + helix::assert_helix_snapshot!( + GetConduitShardsRequest: + req = GetConduitShardsRequest::new("12345"), + res = br#"{ + "data": [ + { + "id": "0", + "status": "enabled", + "transport": { + "method": "webhook", + "callback": "https://this-is-a-callback.com" + } + }, + { + "id": "1", + "status": "webhook_callback_verification_pending", + "transport": { + "method": "webhook", + "callback": "https://this-is-a-callback-2.com" + } + }, + { + "id": "2", + "status": "enabled", + "transport": { + "method": "websocket", + "session_id": "9fd5164a-a958-4c60-b7f4-6a7202506ca0", + "connected_at": "2020-11-10T14:32:18.730260295Z" + } + }, + { + "id": "3", + "status": "enabled", + "transport": { + "method": "websocket", + "session_id": "238b4b08-13f1-4b8f-8d31-56665a7a9d9f", + "connected_at": "2020-11-10T14:32:18.730260295Z" + } }, - crate::eventsub::ShardResponse { - id: "1".into(), - status: ShardStatus::WebhookCallbackVerificationPending, - transport: TransportResponse::Webhook(WebhookTransportResponse { - callback: "https://this-is-a-callback-2.com".to_string(), - }), + { + "id": "4", + "status": "websocket_disconnected", + "transport": { + "method": "websocket", + "session_id": "ad1c9fc3-0d99-4eb7-8a04-8608e8ff9ec9", + "connected_at": "2020-11-10T14:32:18.730260295Z", + "disconnected_at": "2020-11-11T14:32:18.730260295Z" + } + } + ], + "pagination": {} + }"#, + @r#" + uri + ---- + https://api.twitch.tv/helix/eventsub/conduits/shards?conduit_id=12345 + + response + ---- + Response { + data: [ + ShardResponse { + id: "0", + status: Enabled, + transport: Webhook( + WebhookTransportResponse { + callback: "https://this-is-a-callback.com", + }, + ), }, - crate::eventsub::ShardResponse { - id: "2".into(), - status: ShardStatus::Enabled, - transport: TransportResponse::Websocket(WebsocketTransportResponse { - session_id: "9fd5164a-a958-4c60-b7f4-6a7202506ca0".to_string(), - connected_at: Some(Timestamp::from_static("2020-11-10T14:32:18.730260295Z")), - disconnected_at: None, - }), + ShardResponse { + id: "1", + status: WebhookCallbackVerificationPending, + transport: Webhook( + WebhookTransportResponse { + callback: "https://this-is-a-callback-2.com", + }, + ), }, - crate::eventsub::ShardResponse { - id: "3".into(), - status: ShardStatus::Enabled, - transport: TransportResponse::Websocket(WebsocketTransportResponse { - session_id: "238b4b08-13f1-4b8f-8d31-56665a7a9d9f".to_string(), - connected_at: Some(Timestamp::from_static("2020-11-10T14:32:18.730260295Z")), - disconnected_at: None, - }), + ShardResponse { + id: "2", + status: Enabled, + transport: Websocket( + WebsocketTransportResponse { + session_id: "9fd5164a-a958-4c60-b7f4-6a7202506ca0", + connected_at: Some( + "2020-11-10T14:32:18.730260295Z", + ), + disconnected_at: None, + }, + ), }, - crate::eventsub::ShardResponse { - id: "4".into(), - status: ShardStatus::WebsocketDisconnected, - transport: TransportResponse::Websocket(WebsocketTransportResponse { - session_id: "ad1c9fc3-0d99-4eb7-8a04-8608e8ff9ec9".to_string(), - connected_at: Some(Timestamp::from_static("2020-11-10T14:32:18.730260295Z")), - disconnected_at: Some(Timestamp::from_static("2020-11-11T14:32:18.730260295Z")), - }), + ShardResponse { + id: "3", + status: Enabled, + transport: Websocket( + WebsocketTransportResponse { + session_id: "238b4b08-13f1-4b8f-8d31-56665a7a9d9f", + connected_at: Some( + "2020-11-10T14:32:18.730260295Z", + ), + disconnected_at: None, + }, + ), }, - ] + ShardResponse { + id: "4", + status: WebsocketDisconnected, + transport: Websocket( + WebsocketTransportResponse { + session_id: "ad1c9fc3-0d99-4eb7-8a04-8608e8ff9ec9", + connected_at: Some( + "2020-11-10T14:32:18.730260295Z", + ), + disconnected_at: Some( + "2020-11-11T14:32:18.730260295Z", + ), + }, + ), + }, + ], + pagination: None, + request: Some( + GetConduitShardsRequest { + conduit_id: "12345", + status: None, + after: None, + }, + ), + total: None, + other: Some( + {}, + ), + } + "#, ); - - dbg!("{:#?}", response); } diff --git a/src/helix/endpoints/eventsub/get_conduits.rs b/src/helix/endpoints/eventsub/get_conduits.rs index 803a79de87..d40230add9 100644 --- a/src/helix/endpoints/eventsub/get_conduits.rs +++ b/src/helix/endpoints/eventsub/get_conduits.rs @@ -24,57 +24,51 @@ impl Request for GetConduitsRequest { impl RequestGet for GetConduitsRequest {} -#[cfg(test)] -#[test] -fn test_uri() { - use helix::*; - let req: GetConduitsRequest = GetConduitsRequest::default(); - - let uri = req.get_uri().unwrap(); - assert_eq!( - uri.to_string(), - "https://api.twitch.tv/helix/eventsub/conduits?" - ); -} - #[cfg(test)] #[test] fn test_request() { - use helix::*; - let req: GetConduitsRequest = GetConduitsRequest::default(); - - let data = br#"{ - "data": [ - { - "id": "26b1c993-bfcf-44d9-b876-379dacafe75a", - "shard_count": 15 - }, - { - "id": "bfcfc993-26b1-b876-44d9-afe75a379dac", - "shard_count": 5 - } - ] - } - "# - .to_vec(); - let http_response = http::Response::builder().status(200).body(data).unwrap(); - - let uri = req.get_uri().unwrap(); - let response = GetConduitsRequest::parse_response(Some(req), &uri, http_response).unwrap(); + helix::assert_helix_snapshot!( + GetConduitsRequest: + req = GetConduitsRequest::default(), + res = br#"{ + "data": [ + { + "id": "26b1c993-bfcf-44d9-b876-379dacafe75a", + "shard_count": 15 + }, + { + "id": "bfcfc993-26b1-b876-44d9-afe75a379dac", + "shard_count": 5 + } + ] + }"#, + @r#" + uri + ---- + https://api.twitch.tv/helix/eventsub/conduits? - assert_eq!( - response.data, - vec![ - crate::eventsub::Conduit { - id: "26b1c993-bfcf-44d9-b876-379dacafe75a".into(), + response + ---- + Response { + data: [ + Conduit { + id: "26b1c993-bfcf-44d9-b876-379dacafe75a", shard_count: 15, }, - crate::eventsub::Conduit { - id: "bfcfc993-26b1-b876-44d9-afe75a379dac".into(), + Conduit { + id: "bfcfc993-26b1-b876-44d9-afe75a379dac", shard_count: 5, }, - ] + ], + pagination: None, + request: Some( + GetConduitsRequest, + ), + total: None, + other: Some( + {}, + ), + } + "#, ); - - dbg!("{:#?}", response); } diff --git a/src/helix/endpoints/eventsub/get_eventsub_subscriptions.rs b/src/helix/endpoints/eventsub/get_eventsub_subscriptions.rs index 2375f61ac1..c27b9e2183 100644 --- a/src/helix/endpoints/eventsub/get_eventsub_subscriptions.rs +++ b/src/helix/endpoints/eventsub/get_eventsub_subscriptions.rs @@ -134,61 +134,111 @@ impl helix::Paginated for GetEventSubSubscriptionsRequest<'_> { #[cfg(test)] #[test] fn test_request() { - use helix::*; - let req: GetEventSubSubscriptionsRequest = GetEventSubSubscriptionsRequest::default(); - // From twitch docs. // FIXME: Twitch says in example that status is kebab-case, it's actually snake_case. also, users vs user and stream vs streams - let data = br#"{ - "total": 2, - "data": [ - { - "id": "26b1c993-bfcf-44d9-b876-379dacafe75a", - "status": "enabled", - "type": "stream.online", - "version": "1", - "condition": { - "broadcaster_user_id": "1234" - }, - "created_at": "2020-11-10T20:08:33.12345678Z", - "transport": { - "method": "webhook", - "callback": "https://this-is-a-callback.com" + helix::assert_helix_snapshot!( + GetEventSubSubscriptionsRequest: + req = GetEventSubSubscriptionsRequest::default(), + res = br#"{ + "total": 2, + "data": [ + { + "id": "26b1c993-bfcf-44d9-b876-379dacafe75a", + "status": "enabled", + "type": "stream.online", + "version": "1", + "condition": { + "broadcaster_user_id": "1234" + }, + "created_at": "2020-11-10T20:08:33.12345678Z", + "transport": { + "method": "webhook", + "callback": "https://this-is-a-callback.com" + }, + "cost": 1 }, - "cost": 1 - }, - { - "id": "35016908-41ff-33ce-7879-61b8dfc2ee16", - "status": "webhook_callback_verification_pending", - "type": "user.update", - "version": "1", - "condition": { - "user_id": "1234" + { + "id": "35016908-41ff-33ce-7879-61b8dfc2ee16", + "status": "webhook_callback_verification_pending", + "type": "user.update", + "version": "1", + "condition": { + "user_id": "1234" + }, + "created_at": "2020-11-10T14:32:18.730260295Z", + "transport": { + "method": "webhook", + "callback": "https://this-is-a-callback.com" + }, + "cost": 0 + } + ], + "total_cost": 1, + "max_total_cost": 10000, + "pagination": {} + }"#, + @r#" + uri + ---- + https://api.twitch.tv/helix/eventsub/subscriptions? + + response + ---- + Response { + data: EventSubSubscriptions { + total: 2, + total_cost: 1, + max_total_cost: 10000, + subscriptions: [ + EventSubSubscription { + cost: 1, + condition: Object { + "broadcaster_user_id": String("1234"), + }, + created_at: "2020-11-10T20:08:33.12345678Z", + id: "26b1c993-bfcf-44d9-b876-379dacafe75a", + status: Enabled, + transport: Webhook( + WebhookTransportResponse { + callback: "https://this-is-a-callback.com", + }, + ), + type_: StreamOnline, + version: "1", }, - "created_at": "2020-11-10T14:32:18.730260295Z", - "transport": { - "method": "webhook", - "callback": "https://this-is-a-callback.com" + EventSubSubscription { + cost: 0, + condition: Object { + "user_id": String("1234"), + }, + created_at: "2020-11-10T14:32:18.730260295Z", + id: "35016908-41ff-33ce-7879-61b8dfc2ee16", + status: WebhookCallbackVerificationPending, + transport: Webhook( + WebhookTransportResponse { + callback: "https://this-is-a-callback.com", + }, + ), + type_: UserUpdate, + version: "1", }, - "cost": 0 - } - ], - "total_cost": 1, - "max_total_cost": 10000, - "pagination": {} + ], + }, + pagination: None, + request: Some( + GetEventSubSubscriptionsRequest { + status: None, + type_: None, + user_id: None, + after: None, + first: None, + }, + ), + total: Some( + 2, + ), + other: None, } - "# - .to_vec(); - let http_response = http::Response::builder().status(200).body(data).unwrap(); - - let uri = req.get_uri().unwrap(); - assert_eq!( - uri.to_string(), - "https://api.twitch.tv/helix/eventsub/subscriptions?" - ); - - dbg!( - "{:#?}", - GetEventSubSubscriptionsRequest::parse_response(Some(req), &uri, http_response).unwrap() + "#, ); } diff --git a/src/helix/endpoints/eventsub/update_conduit.rs b/src/helix/endpoints/eventsub/update_conduit.rs index 2fba0eb97f..01daae7457 100644 --- a/src/helix/endpoints/eventsub/update_conduit.rs +++ b/src/helix/endpoints/eventsub/update_conduit.rs @@ -72,55 +72,48 @@ impl<'a> RequestPatch for UpdateConduitRequest<'a> { } } -#[cfg(test)] -#[test] -fn test_uri() { - use helix::*; - let req = UpdateConduitRequest::default(); - - let uri = req.get_uri().unwrap(); - assert_eq!( - uri.to_string(), - "https://api.twitch.tv/helix/eventsub/conduits?" - ); -} - #[cfg(test)] #[test] fn test_successful_response() { - use helix::*; - let req = UpdateConduitRequest::default(); - - let body = UpdateConduitBody::new("bfcfc993-26b1-b876-44d9-afe75a379dac", 5); - assert_eq!( - std::str::from_utf8(&body.try_to_body().unwrap()).unwrap(), - r#"{"id":"bfcfc993-26b1-b876-44d9-afe75a379dac","shard_count":5}"# - ); - - let data = br#"{ - "data": [ - { - "id": "bfcfc993-26b1-b876-44d9-afe75a379dac", - "shard_count": 5 - } - ] - } - "# - .to_vec(); - let http_response = http::Response::builder().status(200).body(data).unwrap(); - - let uri = req.get_uri().unwrap(); - let response = UpdateConduitRequest::parse_response(Some(req), &uri, http_response).unwrap(); - - assert_eq!( - response.data, - crate::eventsub::Conduit { - id: "bfcfc993-26b1-b876-44d9-afe75a379dac".into(), + helix::assert_helix_snapshot!( + UpdateConduitRequest: + req = UpdateConduitRequest::default(), + body = UpdateConduitBody::new("bfcfc993-26b1-b876-44d9-afe75a379dac", 5), + res = br#"{ + "data": [ + { + "id": "bfcfc993-26b1-b876-44d9-afe75a379dac", + "shard_count": 5 + } + ] + }"#, + @r#" + uri + ---- + https://api.twitch.tv/helix/eventsub/conduits? + + body + ---- + {"id":"bfcfc993-26b1-b876-44d9-afe75a379dac","shard_count":5} + + response + ---- + Response { + data: Conduit { + id: "bfcfc993-26b1-b876-44d9-afe75a379dac", shard_count: 5, }, + pagination: None, + request: Some( + UpdateConduitRequest { + _phantom: PhantomData<&()>, + }, + ), + total: None, + other: None, + } + "#, ); - - dbg!("{:#?}", response); } #[cfg(test)] diff --git a/src/helix/mod.rs b/src/helix/mod.rs index 8d5acafa37..52b8ad7ff1 100644 --- a/src/helix/mod.rs +++ b/src/helix/mod.rs @@ -590,3 +590,69 @@ where T: serde::Serialize + private::SealedSerialize pub(crate) mod private { pub trait SealedSerialize {} } + +#[cfg(test)] +struct SnapshotWrap<'a, R> { + response: R, + uri: http::Uri, + body: Option<&'a str>, +} + +#[cfg(test)] +impl<'a, R> std::fmt::Display for SnapshotWrap<'a, R> +where R: std::fmt::Debug +{ + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "uri\n----\n{}\n", self.uri)?; + if let Some(body) = self.body { + write!(f, "\nbody\n----\n{}\n", body)?; + } + write!(f, "\nresponse\n----\n{:#?}", self.response) + } +} + +#[cfg(test)] +macro_rules! assert_helix_snapshot { + ($req_ty:ty: req = $req:expr, @$snap:literal $(,)?) => { + $crate::helix::assert_helix_snapshot!($req_ty: req = $req, res = b"", status = 204, @$snap); + }; + ($req_ty:ty: req = $req:expr, res = $res:literal, @$snap:literal $(,)?) => { + $crate::helix::assert_helix_snapshot!($req_ty: req = $req, res = $res, status = 200, @$snap); + }; + ($req_ty:ty: req = $req:expr, body = $body:expr, @$snap:literal $(,)?) => { + $crate::helix::assert_helix_snapshot!($req_ty: req = $req, body = $body, res = b"", status = 200, @$snap); + }; + ($req_ty:ty: req = $req:expr, body = $body:expr, res = $res:literal, @$snap:literal $(,)?) => { + $crate::helix::assert_helix_snapshot!($req_ty: req = $req, body = $body, res = $res, status = 200, @$snap); + }; + ($req_ty:ty: req = $req:expr, body = $body:expr, res = $res:literal, status = $status:literal, @$snap:literal $(,)?) => { + use $crate::helix::*; + let body = $body; + let body = body.try_to_body().unwrap(); + let body_str = { + std::str::from_utf8(&body).unwrap() + }; + $crate::helix::assert_helix_snapshot!($req_ty: req = $req, res = $res, status = $status, body_str, @$snap); + }; + ($req_ty:ty: req = $req:expr, res = $res:literal, status = $status:literal, $($body:expr,)? @$snap:literal $(,)?) => {{ + use $crate::helix::*; + + let req = $req; + let res = $res.to_vec(); + let http_response = http::Response::builder().status($status).body(res).unwrap(); + + let uri = req.get_uri().unwrap(); + let response = <$req_ty>::parse_response(Some(req), &uri, http_response).unwrap(); + let wrap = SnapshotWrap { + response, + uri: uri, + body: None, + }; + $(let mut wrap = wrap; wrap.body = Some($body);)? + + ::insta::assert_display_snapshot!(wrap, @$snap); + }}; +} + +#[cfg(test)] +pub(crate) use assert_helix_snapshot;