From 0f5da6486b4137187ac9e2cfa7c709fe9cb71d6e Mon Sep 17 00:00:00 2001 From: Pavel Cizinsky Date: Thu, 13 Nov 2025 15:15:52 +0100 Subject: [PATCH] changes --- Cargo.lock | 4506 +++++++++-------- Cargo.toml | 12 +- lib/codecs/Cargo.toml | 3 +- lib/codecs/src/encoding/format/mod.rs | 2 + lib/codecs/src/encoding/format/parquet.rs | 1317 +++++ lib/codecs/src/encoding/mod.rs | 5 +- lib/codecs/src/encoding/serializer.rs | 66 +- scripts/environment/bootstrap-ubuntu-24.04.sh | 11 +- scripts/environment/prepare.sh | 21 + scripts/integration/azure/compose.yaml | 2 +- src/azure/mod.rs | 235 + src/codecs/encoding/config.rs | 16 +- src/components/validation/resources/mod.rs | 2 +- src/gcp.rs | 176 +- src/internal_events/azure_queue.rs | 196 + src/internal_events/mod.rs | 4 + src/lib.rs | 1 + src/sinks/aws_s3/config.rs | 14 +- src/sinks/aws_s3/sink.rs | 14 +- src/sinks/azure_blob/config.rs | 11 +- src/sinks/azure_blob/integration_tests.rs | 43 +- src/sinks/azure_common/config.rs | 36 - src/sinks/gcp/stackdriver/metrics/tests.rs | 3 + src/sinks/util/encoding.rs | 46 +- src/sources/azure_blob/integration_tests.rs | 215 + src/sources/azure_blob/mod.rs | 392 ++ src/sources/azure_blob/queue.rs | 363 ++ src/sources/azure_blob/test.rs | 95 + src/sources/mod.rs | 2 + 29 files changed, 5592 insertions(+), 2217 deletions(-) create mode 100644 lib/codecs/src/encoding/format/parquet.rs create mode 100644 src/azure/mod.rs create mode 100644 src/internal_events/azure_queue.rs create mode 100644 src/sources/azure_blob/integration_tests.rs create mode 100644 src/sources/azure_blob/mod.rs create mode 100644 src/sources/azure_blob/queue.rs create mode 100644 src/sources/azure_blob/test.rs diff --git a/Cargo.lock b/Cargo.lock index 717c027460233..97f5a18f61c1d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,20 +18,11 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b5ace29ee3216de37c0546865ad08edef58b0f9e76838ed8959a84a990e58c5" -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "adler32" @@ -51,9 +42,9 @@ dependencies = [ [[package]] name = "aes" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", @@ -78,34 +69,35 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "once_cell", "version_check", ] [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.2.15", + "const-random", + "getrandom 0.3.4", "once_cell", "serde", "version_check", - "zerocopy 0.7.31", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -133,9 +125,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "amq-protocol" -version = "7.2.1" +version = "7.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0234884b3641db74d22ccc20fc2594db5f23d7d41ade5c93d7ee33d200960c" +checksum = "587d313f3a8b4a40f866cc84b6059fe83133bf172165ac3b583129dd211d8e1c" dependencies = [ "amq-protocol-tcp", "amq-protocol-types", @@ -147,9 +139,9 @@ dependencies = [ [[package]] name = "amq-protocol-tcp" -version = "7.2.1" +version = "7.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "265dca43d9dbb3d5bbb0b3ef1b0cd9044ce3aa5d697d5b66cde974d1f6063f09" +checksum = "dc707ab9aa964a85d9fc25908a3fdc486d2e619406883b3105b48bf304a8d606" dependencies = [ "amq-protocol-uri", "tcp-stream", @@ -158,9 +150,9 @@ dependencies = [ [[package]] name = "amq-protocol-types" -version = "7.2.1" +version = "7.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7412353b58923fa012feb9a64ccc0c811747babee2e5a2fd63eb102dc8054c3" +checksum = "bf99351d92a161c61ec6ecb213bc7057f5b837dd4e64ba6cb6491358efd770c4" dependencies = [ "cookie-factory", "nom 7.1.3", @@ -170,21 +162,15 @@ dependencies = [ [[package]] name = "amq-protocol-uri" -version = "7.2.1" +version = "7.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2be91352c805d5704784e079117d5291fd5bf2569add53c914ebce6d1a795d33" +checksum = "f89f8273826a676282208e5af38461a07fe939def57396af6ad5997fcf56577d" dependencies = [ "amq-protocol-types", "percent-encoding", "url", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -211,57 +197,59 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.13" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" -version = "0.2.2" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.60.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.1" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "once_cell_polyfill", + "windows-sys 0.60.2", ] [[package]] name = "anyhow" -version = "1.0.99" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "apache-avro" @@ -281,7 +269,7 @@ dependencies = [ "serde_json", "strum 0.25.0", "strum_macros 0.25.3", - "thiserror 1.0.68", + "thiserror 1.0.69", "typed-builder 0.16.2", "uuid", ] @@ -321,9 +309,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" dependencies = [ "derive_arbitrary", ] @@ -352,21 +340,102 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c6368f9ae5c6ec403ca910327ae0c9437b0a85255b6950c90d497e6177f6e5e" dependencies = [ "proc-macro-hack", - "quote 1.0.40", + "quote 1.0.42", "syn 1.0.109", ] [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] -name = "ascii" -version = "0.9.3" +name = "arrow-array" +version = "39.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a27466d897d99654357a6d95dc0a26931d9e4306e60c14fc31a894edb86579" +dependencies = [ + "ahash 0.8.12", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "chrono", + "half", + "hashbrown 0.13.2", + "num", +] + +[[package]] +name = "arrow-buffer" +version = "39.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9405b78106a9d767c7b97c78a70ee1b23ee51a74f5188a821a716d9a85d1af2b" +dependencies = [ + "half", + "num", +] + +[[package]] +name = "arrow-cast" +version = "39.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be0ec5a79a87783dc828b7ff8f89f62880b3f553bc5f5b932a82f4a1035024b4" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", + "chrono", + "lexical-core", + "num", +] + +[[package]] +name = "arrow-data" +version = "39.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f710d98964d2c069b8baf566130045e79e11baa105623f038a6c942f805681" +dependencies = [ + "arrow-buffer", + "arrow-schema", + "half", + "num", +] + +[[package]] +name = "arrow-ipc" +version = "39.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c99787cb8fabc187285da9e7182d22f2b80ecfac61ca0a42c4299e9eecdf903" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-data", + "arrow-schema", + "flatbuffers", +] + +[[package]] +name = "arrow-schema" +version = "39.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18c41d058b2895a12f46dfafc306ee3529ad9660406be0ab8a7967d5e27c417e" + +[[package]] +name = "arrow-select" +version = "39.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" +checksum = "9fcbdda2772b7e712e77444f3a71f4ee517095aceb993b35de71de41c70d9b4f" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "num", +] [[package]] name = "ascii-canvas" @@ -374,7 +443,7 @@ version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" dependencies = [ - "term 1.0.1", + "term 1.2.0", ] [[package]] @@ -389,13 +458,12 @@ dependencies = [ [[package]] name = "assert_cmd" -version = "2.0.17" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bd389a4b2970a01282ee455294913c0a43724daedcd1a24c3eb0ec1c1320b66" +checksum = "bcbb6924530aa9e0432442af08bbcafdad182db80d2e560da42a6d442535bf85" dependencies = [ "anstyle", - "bstr 1.12.0", - "doc-comment", + "bstr", "libc", "predicates", "predicates-core", @@ -405,11 +473,11 @@ dependencies = [ [[package]] name = "async-broadcast" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" dependencies = [ - "event-listener 5.3.1", + "event-listener 5.4.1", "event-listener-strategy", "futures-core", "pin-project-lite", @@ -428,9 +496,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ "concurrent-queue", "event-listener-strategy", @@ -440,9 +508,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.30" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "977eb15ea9efd848bb8a4a1a2500347ed7f0bf794edf0dc3ddcf439f43d36b23" +checksum = "93c1f86859c1af3d514fa19e8323147ff10ea98684e6c7b307912509f50e67b2" dependencies = [ "compression-codecs", "compression-core", @@ -453,15 +521,15 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.6.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0c4a4f319e45986f347ee47fef8bf5e81c9abc3f6f58dc2391439f30df65f0" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" dependencies = [ - "async-lock 2.8.0", "async-task", "concurrent-queue", "fastrand 2.3.0", - "futures-lite 1.13.0", + "futures-lite 2.6.1", + "pin-project-lite", "slab", ] @@ -479,24 +547,23 @@ dependencies = [ [[package]] name = "async-global-executor" -version = "2.3.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" +checksum = "13f937e26114b93193065fd44f507aa2e9169ad0cdabbb996920b1fe1ddea7ba" dependencies = [ - "async-channel 1.9.0", + "async-channel 2.5.0", "async-executor", - "async-io 1.13.0", - "async-lock 2.8.0", + "async-io 2.6.0", + "async-lock 3.4.1", "blocking", - "futures-lite 1.13.0", - "once_cell", + "futures-lite 2.6.1", ] [[package]] name = "async-global-executor-trait" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33dd14c5a15affd2abcff50d84efd4009ada28a860f01c14f9d654f3e81b3f75" +checksum = "9af57045d58eeb1f7060e7025a1631cbc6399e0a1d10ad6735b3d0ea7f8346ce" dependencies = [ "async-global-executor", "async-trait", @@ -521,7 +588,7 @@ dependencies = [ "futures-timer", "futures-util", "http 1.3.1", - "indexmap 2.11.0", + "indexmap 2.12.0", "mime", "multer", "num-traits", @@ -531,7 +598,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "static_assertions_next", - "thiserror 1.0.68", + "thiserror 1.0.69", ] [[package]] @@ -543,12 +610,12 @@ dependencies = [ "Inflector", "async-graphql-parser", "darling 0.20.11", - "proc-macro-crate 3.2.0", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro-crate", + "proc-macro2 1.0.103", + "quote 1.0.42", "strum 0.26.3", - "syn 2.0.106", - "thiserror 1.0.68", + "syn 2.0.110", + "thiserror 1.0.69", ] [[package]] @@ -570,7 +637,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34ecdaff7c9cffa3614a9f9999bf9ee4c3078fe3ce4d6a6e161736b56febf2de" dependencies = [ "bytes 1.10.1", - "indexmap 2.11.0", + "indexmap 2.12.0", "serde", "serde_json", ] @@ -601,7 +668,7 @@ dependencies = [ "log", "parking", "polling 2.8.0", - "rustix 0.37.27", + "rustix 0.37.28", "slab", "socket2 0.4.10", "waker-fn", @@ -609,21 +676,20 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" dependencies = [ - "async-lock 3.4.0", + "autocfg", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.6.0", + "futures-lite 2.6.1", "parking", - "polling 3.7.4", - "rustix 0.38.40", + "polling 3.11.0", + "rustix 1.1.2", "slab", - "tracing 0.1.41", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -637,11 +703,11 @@ dependencies = [ [[package]] name = "async-lock" -version = "3.4.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" dependencies = [ - "event-listener 5.3.1", + "event-listener 5.4.1", "event-listener-strategy", "pin-project-lite", ] @@ -664,17 +730,17 @@ dependencies = [ "rand 0.8.5", "regex", "ring", - "rustls-native-certs 0.7.0", - "rustls-pemfile 2.1.0", + "rustls-native-certs 0.7.3", + "rustls-pemfile 2.2.0", "rustls-webpki 0.102.8", "serde", "serde_json", "serde_nanos", "serde_repr", - "thiserror 1.0.68", + "thiserror 1.0.69", "time", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tokio-util", "tokio-websockets", "tracing 0.1.41", @@ -704,9 +770,9 @@ dependencies = [ "async-signal", "blocking", "cfg-if", - "event-listener 3.0.1", + "event-listener 3.1.0", "futures-lite 1.13.0", - "rustix 0.38.40", + "rustix 0.38.44", "windows-sys 0.48.0", ] @@ -728,27 +794,27 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "async-signal" -version = "0.2.5" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" dependencies = [ - "async-io 2.4.0", - "async-lock 2.8.0", + "async-io 2.6.0", + "async-lock 3.4.1", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.40", + "rustix 1.1.2", "signal-hook-registry", "slab", - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] @@ -768,9 +834,9 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -785,9 +851,9 @@ version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -807,15 +873,15 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-config" -version = "1.6.1" +version = "1.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c39646d1a6b51240a1a23bb57ea4eebede7e16fbc237fdc876980233dcecb4f" +checksum = "1856b1b48b65f71a4dd940b1c0931f9a7b646d4a924b9828ffefc1454714668a" dependencies = [ "aws-credential-types", "aws-runtime", @@ -843,9 +909,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.6" +version = "1.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d025db5d9f52cbc413b167136afb3d8aeea708c0d8884783cf6253be5e22f6f2" +checksum = "86590e57ea40121d47d3f2e131bfd873dea15d78dc2f4604f4734537ad9e56c4" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -855,9 +921,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.5.10" +version = "1.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c034a1bc1d70e16e7f4e4caf7e9f7693e4c9c24cd91cf17c2a0b21abaebc7c8b" +checksum = "8fe0fd441565b0b318c76e7206c8d1d0b0166b3e986cf30e890b61feb6192045" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -870,8 +936,8 @@ dependencies = [ "aws-types", "bytes 1.10.1", "fastrand 2.3.0", - "http 0.2.9", - "http-body 0.4.5", + "http 0.2.12", + "http-body 0.4.6", "percent-encoding", "pin-project-lite", "tracing 0.1.41", @@ -880,9 +946,9 @@ dependencies = [ [[package]] name = "aws-sdk-cloudwatch" -version = "1.70.0" +version = "1.97.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84865623b1276624879f5283029fa13d7e6bfd5d58eb7df4dabd485a2f291b9b" +checksum = "7e87388c13664e4e17a924d7971f3cfd98bcf2cdec22069c04d48e150878b71b" dependencies = [ "aws-credential-types", "aws-runtime", @@ -898,18 +964,17 @@ dependencies = [ "aws-types", "fastrand 2.3.0", "flate2", - "http 0.2.9", - "http-body 0.4.5", - "once_cell", + "http 0.2.12", + "http-body 0.4.6", "regex-lite", "tracing 0.1.41", ] [[package]] name = "aws-sdk-cloudwatchlogs" -version = "1.76.0" +version = "1.107.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b7a8df7f19f2ff90191c905fefb8cf0ff512ad7c2cc92c422240ff5b114750c" +checksum = "7d14ef7fb77b47ad53774ebbddb7ec08a7b74e983ab2c808829b3ee99061842c" dependencies = [ "aws-credential-types", "aws-runtime", @@ -923,17 +988,16 @@ dependencies = [ "aws-types", "bytes 1.10.1", "fastrand 2.3.0", - "http 0.2.9", - "once_cell", + "http 0.2.12", "regex-lite", "tracing 0.1.41", ] [[package]] name = "aws-sdk-elasticsearch" -version = "1.67.0" +version = "1.92.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cd27ce0dea72b9e62417a63e79674c2364579e496dc0d379688077057d3da67" +checksum = "b96ddd5883bec643c42ab555b65253904615458ca13271bd163243bdad67ef52" dependencies = [ "aws-credential-types", "aws-runtime", @@ -946,17 +1010,16 @@ dependencies = [ "aws-types", "bytes 1.10.1", "fastrand 2.3.0", - "http 0.2.9", - "once_cell", + "http 0.2.12", "regex-lite", "tracing 0.1.41", ] [[package]] name = "aws-sdk-firehose" -version = "1.71.0" +version = "1.97.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ab6082dce5671305954d84698eafe55624010d48eb5711da6c8482c5f119bb" +checksum = "79de05aab93c97ecaf3b00fb4075e689b534eaf9754a6d7630dbbffe6bc0c907" dependencies = [ "aws-credential-types", "aws-runtime", @@ -969,17 +1032,16 @@ dependencies = [ "aws-types", "bytes 1.10.1", "fastrand 2.3.0", - "http 0.2.9", - "once_cell", + "http 0.2.12", "regex-lite", "tracing 0.1.41", ] [[package]] name = "aws-sdk-kinesis" -version = "1.66.0" +version = "1.95.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e43e5fb05c78cdad4fef5be4503465e4b42292f472fc991823ea4c50078208e4" +checksum = "9c3b2ce941308de56f5c2f69490497610e1a815ce968c9ac0796ab165f25205d" dependencies = [ "aws-credential-types", "aws-runtime", @@ -993,17 +1055,16 @@ dependencies = [ "aws-types", "bytes 1.10.1", "fastrand 2.3.0", - "http 0.2.9", - "once_cell", + "http 0.2.12", "regex-lite", "tracing 0.1.41", ] [[package]] name = "aws-sdk-kms" -version = "1.75.0" +version = "1.94.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb89d6ae47f03ca664f604571d0f29165112543ba1a39878347815b8028c235b" +checksum = "95f85c05f9aecaf9a3ae222f2b11656abfea45a6a93835bfb98553e01819520e" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1016,16 +1077,16 @@ dependencies = [ "aws-types", "bytes 1.10.1", "fastrand 2.3.0", - "http 0.2.9", + "http 0.2.12", "regex-lite", "tracing 0.1.41", ] [[package]] name = "aws-sdk-s3" -version = "1.82.0" +version = "1.112.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6eab2900764411ab01c8e91a76fd11a63b4e12bc3da97d9e14a0ce1343d86d3" +checksum = "eee73a27721035c46da0572b390a69fbdb333d0177c24f3d8f7ff952eeb96690" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1044,11 +1105,10 @@ dependencies = [ "fastrand 2.3.0", "hex", "hmac", - "http 0.2.9", + "http 0.2.12", "http 1.3.1", - "http-body 0.4.5", + "http-body 0.4.6", "lru 0.12.5", - "once_cell", "percent-encoding", "regex-lite", "sha2", @@ -1058,9 +1118,9 @@ dependencies = [ [[package]] name = "aws-sdk-secretsmanager" -version = "1.76.0" +version = "1.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb99bf4d3be2b4598ad26eed5da8d0c930b8d47d76b279a03e47d160151eb0fb" +checksum = "c5d227407d3553030bb0e479e638ce6e1c358f3f9bdd02b242a70019ec736b96" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1073,16 +1133,16 @@ dependencies = [ "aws-types", "bytes 1.10.1", "fastrand 2.3.0", - "http 0.2.9", + "http 0.2.12", "regex-lite", "tracing 0.1.41", ] [[package]] name = "aws-sdk-sns" -version = "1.73.0" +version = "1.90.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e936a9af3eccbd24452a57bb8206d2f8e1e483d38c52b1a2901fcb892d98866" +checksum = "c5fa8a40a94dce648e8a705223c4875bd83bc814012cc274032ed8a14fab343f" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1096,16 +1156,16 @@ dependencies = [ "aws-smithy-xml", "aws-types", "fastrand 2.3.0", - "http 0.2.9", + "http 0.2.12", "regex-lite", "tracing 0.1.41", ] [[package]] name = "aws-sdk-sqs" -version = "1.64.0" +version = "1.89.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514d007ac4d5b156b408d8dd623a57b37ae77425810e0fedcffab57b0dabaded" +checksum = "d20475f442a6b4ebf4dc3c8383fcb6c98346fbdac815b643790e1b765054dcfb" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1118,17 +1178,16 @@ dependencies = [ "aws-types", "bytes 1.10.1", "fastrand 2.3.0", - "http 0.2.9", - "once_cell", + "http 0.2.12", "regex-lite", "tracing 0.1.41", ] [[package]] name = "aws-sdk-sso" -version = "1.64.0" +version = "1.89.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d4bdb0e5f80f0689e61c77ab678b2b9304af329616af38aef5b6b967b8e736" +checksum = "a9c1b1af02288f729e95b72bd17988c009aa72e26dcb59b3200f86d7aea726c9" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1141,17 +1200,16 @@ dependencies = [ "aws-types", "bytes 1.10.1", "fastrand 2.3.0", - "http 0.2.9", - "once_cell", + "http 0.2.12", "regex-lite", "tracing 0.1.41", ] [[package]] name = "aws-sdk-ssooidc" -version = "1.65.0" +version = "1.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbbb3ce8da257aedbccdcb1aadafbbb6a5fe9adf445db0e1ea897bdc7e22d08" +checksum = "4e8122301558dc7c6c68e878af918880b82ff41897a60c8c4e18e4dc4d93e9f1" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1164,17 +1222,16 @@ dependencies = [ "aws-types", "bytes 1.10.1", "fastrand 2.3.0", - "http 0.2.9", - "once_cell", + "http 0.2.12", "regex-lite", "tracing 0.1.41", ] [[package]] name = "aws-sdk-sts" -version = "1.73.0" +version = "1.92.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1e9c3c24e36183e2f698235ed38dcfbbdff1d09b9232dc866c4be3011e0b47e" +checksum = "a0c7808adcff8333eaa76a849e6de926c6ac1a1268b9fd6afe32de9c29ef29d2" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1188,16 +1245,16 @@ dependencies = [ "aws-smithy-xml", "aws-types", "fastrand 2.3.0", - "http 0.2.9", + "http 0.2.12", "regex-lite", "tracing 0.1.41", ] [[package]] name = "aws-sigv4" -version = "1.3.4" +version = "1.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084c34162187d39e3740cb635acd73c4e3a551a36146ad6fe8883c929c9f876c" +checksum = "c35452ec3f001e1f2f6db107b6373f1f48f05ec63ba2c5c9fa91f07dad32af11" dependencies = [ "aws-credential-types", "aws-smithy-eventstream", @@ -1208,7 +1265,7 @@ dependencies = [ "form_urlencoded", "hex", "hmac", - "http 0.2.9", + "http 0.2.12", "http 1.3.1", "percent-encoding", "sha2", @@ -1218,9 +1275,9 @@ dependencies = [ [[package]] name = "aws-smithy-async" -version = "1.2.5" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e190749ea56f8c42bf15dd76c65e14f8f765233e6df9b0506d9d934ebef867c" +checksum = "127fcfad33b7dfc531141fda7e1c402ac65f88aca5511a4d31e2e3d2cd01ce9c" dependencies = [ "futures-util", "pin-project-lite", @@ -1229,19 +1286,17 @@ dependencies = [ [[package]] name = "aws-smithy-checksums" -version = "0.63.1" +version = "0.63.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65d21e1ba6f2cdec92044f904356a19f5ad86961acf015741106cdfafd747c0" +checksum = "95bd108f7b3563598e4dc7b62e1388c9982324a2abd622442167012690184591" dependencies = [ "aws-smithy-http", "aws-smithy-types", "bytes 1.10.1", - "crc32c", - "crc32fast", - "crc64fast-nvme", + "crc-fast", "hex", - "http 0.2.9", - "http-body 0.4.5", + "http 0.2.12", + "http-body 0.4.6", "md-5", "pin-project-lite", "sha1", @@ -1251,26 +1306,26 @@ dependencies = [ [[package]] name = "aws-smithy-compression" -version = "0.0.3" +version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c41172a5393f54e26d6b1bfbfce5d0abaa5c46870a1641c1c1899b527f8b6388" +checksum = "f29ef43748637ea19e0d264ad38da275af1aa28a14aa5f7e9ed29c790473768f" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", "bytes 1.10.1", "flate2", "futures-util", - "http 0.2.9", - "http-body 0.4.5", + "http 0.2.12", + "http-body 0.4.6", "pin-project-lite", "tracing 0.1.41", ] [[package]] name = "aws-smithy-eventstream" -version = "0.60.10" +version = "0.60.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604c7aec361252b8f1c871a7641d5e0ba3a7f5a586e51b66bc9510a5519594d9" +checksum = "e29a304f8319781a39808847efb39561351b1bb76e933da7aa90232673638658" dependencies = [ "aws-smithy-types", "bytes 1.10.1", @@ -1279,9 +1334,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.62.3" +version = "0.62.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c4dacf2d38996cf729f55e7a762b30918229917eca115de45dfa8dfb97796c9" +checksum = "445d5d720c99eed0b4aa674ed00d835d9b1427dd73e04adaf2f94c6b2d6f9fca" dependencies = [ "aws-smithy-eventstream", "aws-smithy-runtime-api", @@ -1289,9 +1344,10 @@ dependencies = [ "bytes 1.10.1", "bytes-utils", "futures-core", - "http 0.2.9", + "futures-util", + "http 0.2.12", "http 1.3.1", - "http-body 0.4.5", + "http-body 0.4.6", "percent-encoding", "pin-project-lite", "pin-utils", @@ -1300,18 +1356,18 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.1.1" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147e8eea63a40315d704b97bf9bc9b8c1402ae94f89d5ad6f7550d963309da1b" +checksum = "623254723e8dfd535f566ee7b2381645f8981da086b5c4aa26c0c41582bb1d2c" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", "aws-smithy-types", - "h2 0.3.26", + "h2 0.3.27", "h2 0.4.12", - "http 0.2.9", - "http-body 0.4.5", - "hyper 0.14.28", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", "hyper-rustls 0.24.2", "pin-project-lite", "rustls 0.21.12", @@ -1321,27 +1377,27 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.61.3" +version = "0.61.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92144e45819cae7dc62af23eac5a038a58aa544432d2102609654376a900bd07" +checksum = "2db31f727935fc63c6eeae8b37b438847639ec330a9161ece694efba257e0c54" dependencies = [ "aws-smithy-types", ] [[package]] name = "aws-smithy-observability" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9364d5989ac4dd918e5cc4c4bdcc61c9be17dcd2586ea7f69e348fc7c6cab393" +checksum = "2d1881b1ea6d313f9890710d65c158bdab6fb08c91ea825f74c1c8c357baf4cc" dependencies = [ "aws-smithy-runtime-api", ] [[package]] name = "aws-smithy-query" -version = "0.60.7" +version = "0.60.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb" +checksum = "d28a63441360c477465f80c7abac3b9c4d075ca638f982e605b7dc2a2c7156c9" dependencies = [ "aws-smithy-types", "urlencoding", @@ -1349,9 +1405,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.9.2" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa63ad37685ceb7762fa4d73d06f1d5493feb88e3f27259b9ed277f4c01b185" +checksum = "0bbe9d018d646b96c7be063dd07987849862b0e6d07c778aad7d93d1be6c1ef0" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1361,10 +1417,10 @@ dependencies = [ "aws-smithy-types", "bytes 1.10.1", "fastrand 2.3.0", - "http 0.2.9", + "http 0.2.12", "http 1.3.1", - "http-body 0.4.5", - "http-body 1.0.0", + "http-body 0.4.6", + "http-body 1.0.1", "pin-project-lite", "pin-utils", "tokio", @@ -1373,14 +1429,14 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.9.0" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07f5e0fc8a6b3f2303f331b94504bbf754d85488f402d6f1dd7a6080f99afe56" +checksum = "ec7204f9fd94749a7c53b26da1b961b4ac36bf070ef1e0b94bb09f79d4f6c193" dependencies = [ "aws-smithy-async", "aws-smithy-types", "bytes 1.10.1", - "http 0.2.9", + "http 0.2.12", "http 1.3.1", "pin-project-lite", "tokio", @@ -1390,18 +1446,18 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.3.2" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d498595448e43de7f4296b7b7a18a8a02c61ec9349128c80a368f7c3b4ab11a8" +checksum = "25f535879a207fce0db74b679cfc3e91a3159c8144d717d55f5832aea9eef46e" dependencies = [ "base64-simd", "bytes 1.10.1", "bytes-utils", "futures-core", - "http 0.2.9", + "http 0.2.12", "http 1.3.1", - "http-body 0.4.5", - "http-body 1.0.0", + "http-body 0.4.6", + "http-body 1.0.1", "http-body-util", "itoa", "num-integer", @@ -1416,18 +1472,18 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.9" +version = "0.60.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc" +checksum = "eab77cdd036b11056d2a30a7af7b775789fb024bf216acc13884c6c97752ae56" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "1.3.8" +version = "1.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b069d19bf01e46298eaedd7c6f283fe565a59263e53eebec945f3e6398f42390" +checksum = "d79fb68e3d7fe5d4833ea34dc87d2e97d26d3086cb3da660bb6b1f76d98680b6" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -1448,9 +1504,9 @@ dependencies = [ "bitflags 1.3.2", "bytes 1.10.1", "futures-util", - "http 0.2.9", - "http-body 0.4.5", - "hyper 0.14.28", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", "itoa", "matchit", "memchr", @@ -1468,16 +1524,16 @@ dependencies = [ [[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 0.4.5", "bytes 1.10.1", "futures-util", "http 1.3.1", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", "itoa", "matchit", @@ -1487,8 +1543,8 @@ dependencies = [ "pin-project-lite", "rustversion", "serde", - "sync_wrapper 1.0.1", - "tower 0.4.13", + "sync_wrapper 1.0.2", + "tower 0.5.2", "tower-layer", "tower-service", ] @@ -1502,8 +1558,8 @@ dependencies = [ "async-trait", "bytes 1.10.1", "futures-util", - "http 0.2.9", - "http-body 0.4.5", + "http 0.2.12", + "http-body 0.4.6", "mime", "rustversion", "tower-layer", @@ -1520,16 +1576,42 @@ dependencies = [ "bytes 1.10.1", "futures-util", "http 1.3.1", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", ] +[[package]] +name = "azure_core" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ccd63c07d1fbfb3d4543d7ea800941bf5a30db1911b9b9e4db3b2c4210a434f" +dependencies = [ + "async-trait", + "base64 0.21.7", + "bytes 1.10.1", + "dyn-clone", + "futures 0.3.31", + "getrandom 0.2.16", + "http-types", + "log", + "paste", + "pin-project", + "quick-xml 0.31.0", + "rand 0.8.5", + "rustc_version 0.4.1", + "serde", + "serde_json", + "time", + "url", + "uuid", +] + [[package]] name = "azure_core" version = "0.21.0" @@ -1541,7 +1623,7 @@ dependencies = [ "bytes 1.10.1", "dyn-clone", "futures 0.3.31", - "getrandom 0.2.15", + "getrandom 0.2.16", "http-types", "once_cell", "openssl", @@ -1549,7 +1631,7 @@ dependencies = [ "pin-project", "quick-xml 0.31.0", "rand 0.8.5", - "reqwest 0.12.9", + "reqwest 0.12.24", "rustc_version 0.4.1", "serde", "serde_json", @@ -1565,7 +1647,7 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82c33c072c9d87777262f35abfe2a64b609437076551d4dac8373e60f0e3fde9" dependencies = [ - "async-lock 3.4.0", + "async-lock 3.4.1", "async-trait", "bytes 1.10.1", "futures 0.3.31", @@ -1585,7 +1667,7 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb64e97087965481c94f1703c57e678df09df73e2cdaee8952558f9c6c7d100" dependencies = [ - "async-lock 3.4.0", + "async-lock 3.4.1", "async-trait", "azure_core 0.25.0", "futures 0.3.31", @@ -1597,6 +1679,28 @@ dependencies = [ "url", ] +[[package]] +name = "azure_storage" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83ca0a07f89fd72a006da4713e93af3d6c44a693e61a1c3c2e7985de39c182e8" +dependencies = [ + "RustyXML", + "async-trait", + "azure_core 0.17.0", + "bytes 1.10.1", + "futures 0.3.31", + "hmac", + "log", + "serde", + "serde_derive", + "serde_json", + "sha2", + "time", + "url", + "uuid", +] + [[package]] name = "azure_storage" version = "0.21.0" @@ -1604,7 +1708,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59f838159f4d29cb400a14d9d757578ba495ae64feb07a7516bf9e4415127126" dependencies = [ "RustyXML", - "async-lock 3.4.0", + "async-lock 3.4.1", "async-trait", "azure_core 0.21.0", "bytes 1.10.1", @@ -1624,7 +1728,7 @@ checksum = "97e83c3636ae86d9a6a7962b2112e3b19eb3903915c50ce06ff54ff0a2e6a7e4" dependencies = [ "RustyXML", "azure_core 0.21.0", - "azure_storage", + "azure_storage 0.21.0", "azure_svc_blobstorage", "bytes 1.10.1", "futures 0.3.31", @@ -1637,6 +1741,24 @@ dependencies = [ "uuid", ] +[[package]] +name = "azure_storage_queues" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "962b4ba3486866eb8f9b9b19a1635f34eeb2ae2c6f61726e1849dc941abb7760" +dependencies = [ + "azure_core 0.17.0", + "azure_storage 0.17.0", + "futures 0.3.31", + "log", + "serde", + "serde_derive", + "serde_json", + "time", + "url", + "uuid", +] + [[package]] name = "azure_svc_blobstorage" version = "0.21.0" @@ -1659,37 +1781,22 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "instant", "rand 0.8.5", ] [[package]] name = "backon" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "592277618714fbcecda9a02ba7a8781f319d26532a88553bbacc77ba5d2b3a8d" +checksum = "cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef" dependencies = [ "fastrand 2.3.0", "gloo-timers", "tokio", ] -[[package]] -name = "backtrace" -version = "0.3.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", -] - [[package]] name = "base16" version = "0.2.1" @@ -1704,12 +1811,9 @@ checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] name = "base62" -version = "2.2.1" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10e52a7bcb1d6beebee21fb5053af9e3cbb7a7ed1a4909e534040e676437ab1f" -dependencies = [ - "rustversion", -] +checksum = "1adf9755786e27479693dedd3271691a92b5e242ab139cacb9fb8e7fb5381111" [[package]] name = "base64" @@ -1741,9 +1845,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bigdecimal" @@ -1759,6 +1863,24 @@ dependencies = [ "serde", ] +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.10.0", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "proc-macro2 1.0.103", + "quote 1.0.42", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.110", +] + [[package]] name = "bit-set" version = "0.8.0" @@ -1782,11 +1904,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -1795,8 +1917,8 @@ version = "2.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6cbbb8f56245b5a479b30a62cdc86d26e2f35c2b9f594bc4671654b03851380" dependencies = [ - "quote 1.0.40", - "syn 2.0.106", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -1831,18 +1953,15 @@ dependencies = [ [[package]] name = "blocking" -version = "1.4.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c36a4d0d48574b3dd360b4b7d95cc651d2b6557b6402848a27d4b228a473e2a" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" dependencies = [ - "async-channel 1.9.0", - "async-lock 2.8.0", + "async-channel 2.5.0", "async-task", - "fastrand 2.3.0", "futures-io", - "futures-lite 1.13.0", + "futures-lite 2.6.1", "piper", - "tracing 0.1.41", ] [[package]] @@ -1856,9 +1975,9 @@ dependencies = [ [[package]] name = "bollard" -version = "0.19.2" +version = "0.19.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8796b390a5b4c86f9f2e8173a68c2791f4fa6b038b84e96dbc01c016d1e6722c" +checksum = "87a52479c9237eb04047ddb94788c41ca0d26eaff8b697ecfbb4c32f7fdc3b1b" dependencies = [ "base64 0.22.1", "bollard-stubs", @@ -1870,16 +1989,16 @@ dependencies = [ "home", "http 1.3.1", "http-body-util", - "hyper 1.7.0", + "hyper 1.8.0", "hyper-named-pipe", - "hyper-rustls 0.27.5", + "hyper-rustls 0.27.7", "hyper-util", "hyperlocal", "log", "pin-project-lite", - "rustls 0.23.23", - "rustls-native-certs 0.8.1", - "rustls-pemfile 2.1.0", + "rustls 0.23.35", + "rustls-native-certs 0.8.2", + "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", "serde_derive", @@ -1896,15 +2015,15 @@ dependencies = [ [[package]] name = "bollard-stubs" -version = "1.49.0-rc.28.3.3" +version = "1.49.1-rc.28.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7814991259013d5a5bee4ae28657dae0747d843cf06c40f7fc0c2894d6fa38" +checksum = "5731fe885755e92beff1950774068e0cae67ea6ec7587381536fca84f1779623" dependencies = [ "chrono", "serde", "serde_json", "serde_repr", - "serde_with 3.14.0", + "serde_with 3.15.1", ] [[package]] @@ -1925,28 +2044,49 @@ checksum = "77e9d642a7e3a318e37c2c9427b5a6a48aa1ad55dcd986f3034ab2239045a645" dependencies = [ "darling 0.21.3", "ident_case", - "prettyplease 0.2.15", - "proc-macro2 1.0.101", - "quote 1.0.40", + "prettyplease 0.2.37", + "proc-macro2 1.0.103", + "quote 1.0.42", "rustversion", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "borrow-or-share" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eeab4423108c5d7c744f4d234de88d18d636100093ae04caf4825134b9c3a32" +checksum = "dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c" [[package]] name = "brotli" -version = "8.0.0" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor 2.5.1", +] + +[[package]] +name = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor 5.0.0", +] + +[[package]] +name = "brotli-decompressor" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf19e729cdbd51af9a397fb9ef8ac8378007b797f8273cfbfdf45dcaa316167b" +checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", - "brotli-decompressor", ] [[package]] @@ -1961,18 +2101,20 @@ dependencies = [ [[package]] name = "bson" -version = "2.8.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61570f4de0cc9c03b481c96057b3ae7c6ff7b5b35da8b0832c44f0131987a718" +checksum = "7969a9ba84b0ff843813e7249eed1678d9b6607ce5a3b8f0a47af3fcf7978e6e" dependencies = [ - "ahash 0.8.11", - "base64 0.13.1", + "ahash 0.8.12", + "base64 0.22.1", "bitvec", + "getrandom 0.2.16", + "getrandom 0.3.4", "hex", - "indexmap 1.9.3", + "indexmap 2.12.0", "js-sys", "once_cell", - "rand 0.8.5", + "rand 0.9.2", "serde", "serde_bytes", "serde_json", @@ -1982,37 +2124,26 @@ dependencies = [ [[package]] name = "bstr" -version = "0.2.17" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" dependencies = [ - "lazy_static", "memchr", - "regex-automata 0.1.10", -] - -[[package]] -name = "bstr" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" -dependencies = [ - "memchr", - "regex-automata 0.4.8", - "serde", + "regex-automata", + "serde", ] [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytecheck" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" dependencies = [ "bytecheck_derive", "ptr_meta", @@ -2021,12 +2152,12 @@ dependencies = [ [[package]] name = "bytecheck_derive" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "syn 1.0.109", ] @@ -2038,9 +2169,9 @@ checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" [[package]] name = "bytemuck" -version = "1.21.0" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" [[package]] name = "byteorder" @@ -2069,9 +2200,9 @@ dependencies = [ [[package]] name = "bytes-utils" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e47d3a8076e283f3acd27400535992edb3ba4b5bb72f8891ad8fbe7932a7d4b9" +checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" dependencies = [ "bytes 1.10.1", "either", @@ -2079,9 +2210,9 @@ dependencies = [ [[package]] name = "bytesize" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5c434ae3cf0089ca203e9019ebe529c47ff45cefe8af7c85ecb734ef541822f" +checksum = "c99fa31e08a43eaa5913ef68d7e01c37a2bdce6ed648168239ad33b7d30a9cd8" [[package]] name = "cargo-lock" @@ -2089,7 +2220,7 @@ version = "10.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06acb4f71407ba205a07cb453211e0e6a67b21904e47f6ba1f9589e38f2e454" dependencies = [ - "semver 1.0.26", + "semver 1.0.27", "serde", "toml 0.8.23", "url", @@ -2109,9 +2240,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "castaway" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" +checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a" dependencies = [ "rustversion", ] @@ -2127,10 +2258,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.15" +version = "1.2.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af" +checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -2142,6 +2274,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom 7.1.3", +] + [[package]] name = "cfb-mode" version = "0.8.2" @@ -2153,9 +2294,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -2189,27 +2330,26 @@ dependencies = [ [[package]] name = "charset" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18e9079d1a12a2cc2bffb5db039c43661836ead4082120d5844f02555aca2d46" +checksum = "f1f927b07c74ba84c7e5fe4db2baeb3e996ab2688992e39ac68ce3220a677c7e" dependencies = [ - "base64 0.13.1", + "base64 0.22.1", "encoding_rs", ] [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -2267,11 +2407,22 @@ dependencies = [ "zeroize", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" -version = "4.5.48" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" +checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" dependencies = [ "clap_builder", "clap_derive", @@ -2289,9 +2440,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.48" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" +checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" dependencies = [ "anstream", "anstyle", @@ -2302,36 +2453,36 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.58" +version = "4.5.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75bf0b32ad2e152de789bb635ea4d3078f6b838ad7974143e99b99f45a04af4a" +checksum = "8e602857739c5a4291dfa33b5a298aeac9006185229a700e5810a3ef7272d971" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.5.47" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck 0.5.0", - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "clipboard-win" -version = "5.0.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c57002a5d9be777c1ef967e33674dac9ebd310d8893e4e3437b14d5f0f6372cc" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" dependencies = [ "error-code", ] @@ -2349,9 +2500,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.50" +version = "0.1.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" dependencies = [ "cc", ] @@ -2373,6 +2524,7 @@ dependencies = [ "memchr", "opentelemetry-proto", "ordered-float 4.6.0", + "parquet", "prost 0.12.6", "prost-reflect", "rand 0.9.2", @@ -2380,7 +2532,7 @@ dependencies = [ "rstest", "serde", "serde_json", - "serde_with 3.14.0", + "serde_with 3.15.1", "similar-asserts", "smallvec", "snafu 0.8.9", @@ -2411,9 +2563,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "colored" @@ -2426,22 +2578,9 @@ dependencies = [ [[package]] name = "combine" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" -dependencies = [ - "ascii", - "byteorder", - "either", - "memchr", - "unreachable", -] - -[[package]] -name = "combine" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ "bytes 1.10.1", "futures-core", @@ -2453,23 +2592,20 @@ dependencies = [ [[package]] name = "community-id" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e701443040497976ce85ba641ef0c4a6b319307b9d93718fc76bb77540bff" +checksum = "48629740a3480b865d4083ff45f826a253bd5ce28db618d89359b0e95dc750c3" dependencies = [ - "anyhow", - "base64 0.21.7", + "base64 0.22.1", "hex", - "lazy_static", - "num_enum 0.6.1", "sha1", ] [[package]] name = "compact_str" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6050c3a16ddab2e412160b31f2c871015704239bca62f72f6e5f0be631d3f644" +checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" dependencies = [ "castaway", "cfg-if", @@ -2481,23 +2617,23 @@ dependencies = [ [[package]] name = "compression-codecs" -version = "0.4.30" +version = "0.4.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "485abf41ac0c8047c07c87c72c8fb3eb5197f6e9d7ded615dfd1a00ae00a0f64" +checksum = "680dc087785c5230f8e8843e2e57ac7c1c90488b6a91b88caa265410568f441b" dependencies = [ - "brotli", + "brotli 8.0.2", "compression-core", "flate2", "memchr", - "zstd 0.13.2", - "zstd-safe 7.2.1", + "zstd 0.13.3", + "zstd-safe 7.2.4", ] [[package]] name = "compression-core" -version = "0.4.29" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e47641d3deaf41fb1538ac1f54735925e275eaf3bf4d55c81b137fba797e5cbb" +checksum = "3a9b614a5787ef0c8802a55766480563cb3a93b435898c422ed2a359cf811582" [[package]] name = "concurrent-queue" @@ -2522,27 +2658,27 @@ dependencies = [ [[package]] name = "console" -version = "0.15.7" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ - "encode_unicode 0.3.6", - "lazy_static", + "encode_unicode", "libc", - "windows-sys 0.45.0", + "once_cell", + "windows-sys 0.59.0", ] [[package]] name = "console" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e09ced7ebbccb63b4c65413d821f2e00ce54c5ca4514ddc6b3c892fdbcbc69d" +checksum = "b430743a6eb14e9764d4260d4c0d8123087d504eeb9c48f2b2a5e810dd369df4" dependencies = [ - "encode_unicode 1.0.0", + "encode_unicode", "libc", "once_cell", "unicode-width 0.2.0", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -2555,7 +2691,7 @@ dependencies = [ "prost 0.13.5", "prost-types 0.13.5", "tonic 0.12.3", - "tracing-core 0.1.33", + "tracing-core 0.1.34", ] [[package]] @@ -2580,15 +2716,35 @@ dependencies = [ "tokio-stream", "tonic 0.12.3", "tracing 0.1.41", - "tracing-core 0.1.33", + "tracing-core 0.1.34", "tracing-subscriber", ] [[package]] name = "const-oid" -version = "0.9.5" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const-random" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.16", + "once_cell", + "tiny-keccak", +] [[package]] name = "convert_case" @@ -2627,9 +2783,9 @@ dependencies = [ [[package]] name = "cookie-factory" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396de984970346b0d9e93d1415082923c679e5ae5c3ee3dcbd104f5610af126b" +checksum = "9885fa71e26b8ab7855e2ec7cae6e9b380edff76cd052e07c683a0319d51b3a2" [[package]] name = "cookie_store" @@ -2639,7 +2795,7 @@ checksum = "2eac901828f88a5241ee0600950ab981148a18f2f756900ffba1b125ca6a3ef9" dependencies = [ "cookie", "document-features", - "idna 1.0.3", + "idna 1.1.0", "log", "publicsuffix", "serde", @@ -2651,9 +2807,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -2686,9 +2842,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -2709,12 +2865,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] -name = "crc32c" -version = "0.6.8" +name = "crc-fast" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a47af21622d091a8f0fb295b88bc886ac74efcc613efc19f5d0b21de5c89e47" +checksum = "6ddc2d09feefeee8bd78101665bd8645637828fa9317f9f292496dbbd8c65ff3" dependencies = [ - "rustc_version 0.4.1", + "crc", + "digest", + "rand 0.9.2", + "regex", + "rustversion", ] [[package]] @@ -2726,15 +2886,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crc64fast-nvme" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4955638f00a809894c947f85a024020a20815b65a5eea633798ea7924edab2b3" -dependencies = [ - "crc", -] - [[package]] name = "criterion" version = "0.7.0" @@ -2777,36 +2928,30 @@ checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset 0.9.0", - "scopeguard", ] [[package]] @@ -2830,11 +2975,11 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "crossterm_winapi", "mio", - "parking_lot 0.12.4", - "rustix 0.38.40", + "parking_lot 0.12.5", + "rustix 0.38.44", "signal-hook", "signal-hook-mio", "winapi", @@ -2846,13 +2991,13 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "crossterm_winapi", "document-features", "futures-core", "mio", - "parking_lot 0.12.4", - "rustix 1.0.1", + "parking_lot 0.12.5", + "rustix 1.1.2", "signal-hook", "signal-hook-mio", "winapi", @@ -2869,9 +3014,9 @@ dependencies = [ [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" @@ -2887,9 +3032,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", "rand_core 0.6.4", @@ -2913,21 +3058,21 @@ dependencies = [ [[package]] name = "csv" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" +checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938" dependencies = [ "csv-core", "itoa", "ryu", - "serde", + "serde_core", ] [[package]] name = "csv-core" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" +checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782" dependencies = [ "memchr", ] @@ -2943,9 +3088,9 @@ dependencies = [ [[package]] name = "curl-sys" -version = "0.4.74+curl-8.9.0" +version = "0.4.84+curl-8.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8af10b986114528fcdc4b63b6f5f021b7057618411046a4de2ba0f0149a097bf" +checksum = "abc4294dc41b882eaff37973c2ec3ae203d0091341ee68fbadd1d06e0c18a73b" dependencies = [ "cc", "libc", @@ -2953,7 +3098,7 @@ dependencies = [ "openssl-sys", "pkg-config", "vcpkg", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2978,9 +3123,9 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -3021,8 +3166,8 @@ checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "strsim 0.10.0", "syn 1.0.109", ] @@ -3035,10 +3180,10 @@ checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "strsim 0.11.1", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3049,10 +3194,10 @@ checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "strsim 0.11.1", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3062,7 +3207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core 0.13.4", - "quote 1.0.40", + "quote 1.0.42", "syn 1.0.109", ] @@ -3073,8 +3218,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", - "quote 1.0.40", - "syn 2.0.106", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -3084,8 +3229,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", - "quote 1.0.40", - "syn 2.0.106", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -3105,7 +3250,7 @@ dependencies = [ "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core 0.9.11", + "parking_lot_core 0.9.12", ] [[package]] @@ -3116,23 +3261,23 @@ checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "data-url" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a" +checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376" [[package]] name = "databend-client" -version = "0.28.2" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d689ffeaa08b1e4be3f035fcdadd4ea69db3dbf529ec5668c6911b8a301fc06" +checksum = "dabc0f13a981ed92df2d0f6d5fa68c36c63720ddb1543b2db639a720650531f0" dependencies = [ "cookie", "log", "once_cell", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "percent-encoding", - "reqwest 0.12.9", - "semver 1.0.26", + "reqwest 0.12.24", + "semver 1.0.27", "serde", "serde_json", "tokio", @@ -3154,29 +3299,30 @@ dependencies = [ [[package]] name = "deadpool" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ed5957ff93768adf7a65ab167a17835c3d2c3c50d084fe305174c112f468e2f" +checksum = "0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b" dependencies = [ "deadpool-runtime", + "lazy_static", "num_cpus", "tokio", ] [[package]] name = "deadpool-runtime" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63dfa964fe2a66f3fde91fc70b267fe193d822c7e603e2a675a49a7f46ad3f49" +checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b" dependencies = [ "tokio", ] [[package]] name = "der" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "pem-rfc7468", @@ -3185,12 +3331,12 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.9" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", - "serde", + "serde_core", ] [[package]] @@ -3199,64 +3345,64 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "syn 1.0.109", ] [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "derive_builder" -version = "0.20.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0350b5cb0331628a5916d6c5c0b72e97393b8b6b03b47a9284f4e7f5a405ffd7" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" dependencies = [ "derive_builder_macro", ] [[package]] name = "derive_builder_core" -version = "0.20.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d48cda787f839151732d396ac69e3473923d54312c070ee21e9effcaa8ca0b1d" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ "darling 0.20.11", - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "derive_builder_macro" -version = "0.20.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "derive_more" -version = "0.99.17" +version = "0.99.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ "convert_case 0.4.0", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "rustc_version 0.4.1", - "syn 1.0.109", + "syn 2.0.110", ] [[package]] @@ -3304,8 +3450,8 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", - "redox_users 0.5.0", - "windows-sys 0.60.2", + "redox_users 0.5.2", + "windows-sys 0.61.2", ] [[package]] @@ -3315,7 +3461,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", - "redox_users 0.4.3", + "redox_users 0.4.6", "winapi", ] @@ -3325,21 +3471,21 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "dns-lookup" -version = "2.0.4" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5766087c2235fec47fafa4cfecc81e494ee679d0fd4a59887ea0919bfb0e4fc" +checksum = "cf5597a4b7fe5275fc9dcf88ce26326bc8e4cb87d0130f33752d4c5f717793cf" dependencies = [ "cfg-if", "libc", - "socket2 0.5.10", - "windows-sys 0.48.0", + "socket2 0.6.1", + "windows-sys 0.60.2", ] [[package]] @@ -3374,9 +3520,9 @@ dependencies = [ [[package]] name = "doc-comment" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +checksum = "780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9" [[package]] name = "docs-renderer" @@ -3393,18 +3539,18 @@ dependencies = [ [[package]] name = "document-features" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" dependencies = [ "litrs", ] [[package]] name = "domain" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a11dd7f04a6a6d2aea0153c6e31f5ea7af8b2efdf52cdaeea7a9a592c7fefef9" +checksum = "7f7ff15f82df7d5086fb15dfc1c1e96598a6ded9829840a9bcfa1fa3ccd8d01d" dependencies = [ "bumpalo", "bytes 1.10.1", @@ -3424,13 +3570,13 @@ dependencies = [ [[package]] name = "domain-macros" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e197fdfd2cdb5fdeb7f8ddcf3aed5d5d04ecde2890d448b14ffb716f7376b70" +checksum = "8d1a6796ad411f6812d691955066ad27450196bfb181bb91b66a643cc3e8f5b7" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -3441,9 +3587,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "duct" -version = "0.13.6" +version = "0.13.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ae3fc31835f74c2a7ceda3aeede378b0ae2e74c8f1c36559fcc9ae2a4e7d3e" +checksum = "e4ab5718d1224b63252cd0c6f74f6480f9ffeb117438a2e0f5cf6d9a4798929c" dependencies = [ "libc", "once_cell", @@ -3489,32 +3635,33 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.0.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", "signature", + "subtle", "zeroize", ] [[package]] name = "either" -version = "1.9.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" dependencies = [ "serde", ] [[package]] name = "elliptic-curve" -version = "0.13.7" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9775b22bc152ad86a0cf23f0f348b884b26add12bf741e7ffc4d4ab2ab4d205" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct", "crypto-bigint", @@ -3542,19 +3689,13 @@ dependencies = [ [[package]] name = "ena" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" dependencies = [ "log", ] -[[package]] -name = "encode_unicode" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" - [[package]] name = "encode_unicode" version = "1.0.0" @@ -3594,21 +3735,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "syn 1.0.109", ] [[package]] name = "enum-as-inner" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" dependencies = [ - "heck 0.4.1", - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "heck 0.5.0", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -3618,9 +3759,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" dependencies = [ "once_cell", - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -3638,9 +3779,9 @@ version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -3651,14 +3792,20 @@ checksum = "62a61b2faff777e62dbccd7f82541d873f96264d050c5dd7e95194f79fc4de29" [[package]] name = "env_filter" -version = "0.1.0" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", "regex", ] +[[package]] +name = "env_home" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe" + [[package]] name = "env_logger" version = "0.8.4" @@ -3671,40 +3818,42 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" dependencies = [ "anstream", "anstyle", "env_filter", - "humantime", + "jiff", "log", ] [[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 = "erased-serde" -version = "0.4.0" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3286168faae03a0e583f6fde17c02c8b8bba2dcc2061d0f7817066e5b0af706" +checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" dependencies = [ "serde", + "serde_core", + "typeid", ] [[package]] name = "errno" -version = "0.3.10" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -3718,9 +3867,9 @@ dependencies = [ [[package]] name = "error-code" -version = "3.0.0" +version = "3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "281e452d3bad4005426416cdba5ccfd4f5c1280e10099e21db27f7c1c28347fc" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" [[package]] name = "etcetera" @@ -3741,9 +3890,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "3.0.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cec0252c2afff729ee6f00e903d479fba81784c8e2bd77447673471fdfaea1" +checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" dependencies = [ "concurrent-queue", "parking", @@ -3752,9 +3901,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "5.3.1" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" dependencies = [ "concurrent-queue", "parking", @@ -3763,11 +3912,11 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.3.1", + "event-listener 5.4.1", "pin-project-lite", ] @@ -3788,16 +3937,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "332b1937705b7ed2fce76837024e9ae6f41cd2ad18a32c052de081f89982561b" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "syn 1.0.109", ] [[package]] name = "executor-trait" -version = "2.1.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a1052dd43212a7777ec6a69b117da52f5e52f07aec47d00c1a2b33b85d06b08" +checksum = "13c39dff9342e4e0e16ce96be751eb21a94e94a87bb2f6e63ad1961c2ce109bf" dependencies = [ "async-trait", ] @@ -3843,18 +3992,18 @@ checksum = "d6215aee357f8c7c989ebb4b8466ca4d7dc93b3957039f2fc3ea2ade8ea5f279" dependencies = [ "bit-set", "derivative", - "regex-automata 0.4.8", + "regex-automata", "regex-syntax", ] [[package]] name = "fancy-regex" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf04c5ec15464ace8355a7b440a33aece288993475556d461154d7a62ad9947c" +checksum = "998b056554fbe42e03ae0e152895cd1a7e1002aec800fdc6635d20270260c46f" dependencies = [ "bit-set", - "regex-automata 0.4.8", + "regex-automata", "regex-syntax", ] @@ -3875,9 +4024,9 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ "rand_core 0.6.4", "subtle", @@ -3885,9 +4034,9 @@ dependencies = [ [[package]] name = "fiat-crypto" -version = "0.2.2" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a481586acf778f1b1455424c343f71124b048ffa5f4fc3f8f6ae9dc432dcb3c7" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "file-source" @@ -3900,7 +4049,7 @@ dependencies = [ "futures 0.3.31", "futures-util", "glob", - "indexmap 2.11.0", + "indexmap 2.12.0", "libc", "quickcheck", "tempfile", @@ -3915,7 +4064,7 @@ name = "file-source-common" version = "0.1.0" dependencies = [ "async-compression", - "bstr 1.12.0", + "bstr", "bytes 1.10.1", "chrono", "crc", @@ -3935,10 +4084,10 @@ dependencies = [ ] [[package]] -name = "finl_unicode" -version = "1.2.0" +name = "find-msvc-tools" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" [[package]] name = "fixedbitset" @@ -3946,11 +4095,27 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + +[[package]] +name = "flatbuffers" +version = "23.5.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dac53e22462d78c16d64a1cd22371b54cc3fe94aa15e7886a2fa6e5d1ab8640" +dependencies = [ + "bitflags 1.3.2", + "rustc_version 0.4.1", +] + [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "libz-rs-sys", @@ -3985,22 +4150,13 @@ dependencies = [ [[package]] name = "flume" -version = "0.10.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" -dependencies = [ - "spin 0.9.8", -] - -[[package]] -name = "flume" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" dependencies = [ "futures-core", "futures-sink", - "spin 0.9.8", + "spin", ] [[package]] @@ -4011,9 +4167,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "foldhash" @@ -4038,18 +4194,18 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] [[package]] name = "fraction" -version = "0.15.1" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b486ab61634f05b11b591c38c71fb25139cb55e22be4fb6ecf649cc3736c074a" +checksum = "0f158e3ff0a1b334408dc9fb811cd99b446986f4d8b741bb08f9df1604085ae7" dependencies = [ "lazy_static", "num", @@ -4136,7 +4292,7 @@ checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.12.4", + "parking_lot 0.12.5", ] [[package]] @@ -4162,11 +4318,14 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ + "fastrand 2.3.0", "futures-core", + "futures-io", + "parking", "pin-project-lite", ] @@ -4176,9 +4335,9 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -4243,44 +4402,38 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.13.3+wasi-0.2.2", + "r-efi", + "wasip2", "wasm-bindgen", - "windows-targets 0.52.6", ] -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - [[package]] name = "git2" version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "libc", "libgit2-sys", "log", @@ -4329,7 +4482,7 @@ dependencies = [ "arc-swap", "futures 0.3.31", "log", - "reqwest 0.12.9", + "reqwest 0.12.24", "serde", "serde_derive", "serde_json", @@ -4350,10 +4503,10 @@ dependencies = [ "futures-sink", "futures-timer", "futures-util", - "getrandom 0.3.1", - "hashbrown 0.15.2", + "getrandom 0.3.4", + "hashbrown 0.15.5", "nonzero_ext", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "portable-atomic", "rand 0.9.2", "smallvec", @@ -4372,12 +4525,12 @@ dependencies = [ [[package]] name = "graphql-parser" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ebc8013b4426d5b81a4364c419a95ed0b404af2b82e2457de52d9348f0e474" +checksum = "7a818c0d883d7c0801df27be910917750932be279c7bc82dc541b8769425f409" dependencies = [ - "combine 3.8.1", - "thiserror 1.0.68", + "combine", + "thiserror 1.0.69", ] [[package]] @@ -4401,8 +4554,8 @@ dependencies = [ "graphql-parser", "heck 0.4.1", "lazy_static", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "serde", "serde_json", "syn 1.0.109", @@ -4415,7 +4568,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83febfa838f898cfa73dfaa7a8eb69ff3409021ac06ee94cfb3d622f6eeb1a97" dependencies = [ "graphql_client_codegen", - "proc-macro2 1.0.101", + "proc-macro2 1.0.103", "syn 1.0.109", ] @@ -4444,7 +4597,7 @@ dependencies = [ "futures 0.3.31", "futures-util", "greptime-proto", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "prost 0.12.6", "rand 0.9.2", "snafu 0.8.9", @@ -4478,17 +4631,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" dependencies = [ "bytes 1.10.1", "fnv", "futures-core", "futures-sink", "futures-util", - "http 0.2.9", - "indexmap 2.11.0", + "http 0.2.12", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -4507,7 +4660,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.11.0", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -4516,12 +4669,14 @@ dependencies = [ [[package]] name = "half" -version = "2.4.1" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", + "num-traits", + "zerocopy", ] [[package]] @@ -4542,28 +4697,34 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.7", + "ahash 0.7.8", ] +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" + [[package]] name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "allocator-api2", ] [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", - "foldhash 0.1.3", + "foldhash 0.1.5", ] [[package]] @@ -4583,7 +4744,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.5", ] [[package]] @@ -4609,7 +4770,7 @@ dependencies = [ "base64 0.21.7", "bytes 1.10.1", "headers-core", - "http 0.2.9", + "http 0.2.12", "httpdate", "mime", "sha1", @@ -4621,7 +4782,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" dependencies = [ - "http 0.2.9", + "http 0.2.12", ] [[package]] @@ -4656,7 +4817,7 @@ version = "0.1.0-rc.1" source = "git+https://github.com/vectordotdev/heim.git?branch=update-nix#f3537d9b32e69a2a8ab19a0d42a1e6f5577a5a45" dependencies = [ "cfg-if", - "core-foundation 0.9.3", + "core-foundation 0.9.4", "futures-core", "futures-util", "lazy_static", @@ -4693,7 +4854,7 @@ source = "git+https://github.com/vectordotdev/heim.git?branch=update-nix#f3537d9 dependencies = [ "bitflags 1.3.2", "cfg-if", - "core-foundation 0.9.3", + "core-foundation 0.9.4", "heim-common", "heim-runtime", "libc", @@ -4768,9 +4929,9 @@ checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hermit-abi" -version = "0.4.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -4785,14 +4946,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" dependencies = [ "async-trait", - "bitflags 2.9.0", + "bitflags 2.10.0", "cfg-if", "data-encoding", - "enum-as-inner 0.6.0", + "enum-as-inner 0.6.1", "futures-channel", "futures-io", "futures-util", - "idna 1.0.3", + "idna 1.1.0", "ipnet", "once_cell", "rand 0.9.2", @@ -4807,9 +4968,9 @@ dependencies = [ [[package]] name = "hkdf" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ "hmac", ] @@ -4825,11 +4986,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.5" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] @@ -4845,20 +5006,20 @@ dependencies = [ [[package]] name = "hostname" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9c7c7c8ac16c798734b8a24560c1362120597c40d5e1459f09498f8f6c8f2ba" +checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65" dependencies = [ "cfg-if", "libc", - "windows 0.52.0", + "windows-link 0.1.3", ] [[package]] name = "http" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes 1.10.1", "fnv", @@ -4878,20 +5039,20 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes 1.10.1", - "http 0.2.9", + "http 0.2.12", "pin-project-lite", ] [[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.10.1", "http 1.3.1", @@ -4899,14 +5060,14 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes 1.10.1", - "futures-util", + "futures-core", "http 1.3.1", - "http-body 1.0.0", + "http-body 1.0.1", "pin-project-lite", ] @@ -4922,7 +5083,7 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f560b665ad9f1572cfcaf034f7fb84338a7ce945216d64a90fd81f046a3caee" dependencies = [ - "http 0.2.9", + "http 0.2.12", "serde", ] @@ -4966,22 +5127,22 @@ checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" [[package]] name = "hyper" -version = "0.14.28" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes 1.10.1", "futures-channel", "futures-core", "futures-util", - "h2 0.3.26", - "http 0.2.9", - "http-body 0.4.5", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.10", + "socket2 0.5.10", "tokio", "tower-service", "tracing 0.1.41", @@ -4990,9 +5151,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +checksum = "1744436df46f0bde35af3eda22aeaba453aada65d8f1c171cd8a5f59030bd69f" dependencies = [ "atomic-waker", "bytes 1.10.1", @@ -5000,7 +5161,7 @@ dependencies = [ "futures-core", "h2 0.4.12", "http 1.3.1", - "http-body 1.0.0", + "http-body 1.0.1", "httparse", "httpdate", "itoa", @@ -5018,7 +5179,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" dependencies = [ "hex", - "hyper 1.7.0", + "hyper 1.8.0", "hyper-util", "pin-project-lite", "tokio", @@ -5032,13 +5193,13 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6ee5d7a8f718585d1c3c61dfde28ef5b0bb14734b4db13f5ada856cdc6c612b" dependencies = [ - "http 0.2.9", - "hyper 0.14.28", + "http 0.2.12", + "hyper 0.14.32", "linked_hash_set", "once_cell", "openssl", "openssl-sys", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "tokio", "tokio-openssl", "tower-layer", @@ -5051,13 +5212,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "527d4d619ca2c2aafa31ec139a3d1d60bf557bf7578a1f20f743637eccd9ca19" dependencies = [ "http 1.3.1", - "hyper 1.7.0", + "hyper 1.8.0", "hyper-util", "linked_hash_set", "once_cell", "openssl", "openssl-sys", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "pin-project", "tower-layer", "tower-service", @@ -5072,8 +5233,8 @@ dependencies = [ "bytes 1.10.1", "futures 0.3.31", "headers", - "http 0.2.9", - "hyper 0.14.28", + "http 0.2.12", + "hyper 0.14.32", "openssl", "tokio", "tokio-openssl", @@ -5087,8 +5248,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", - "http 0.2.9", - "hyper 0.14.28", + "http 0.2.12", + "hyper 0.14.32", "log", "rustls 0.21.12", "rustls-native-certs 0.6.3", @@ -5098,21 +5259,20 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.5" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http 1.3.1", - "hyper 1.7.0", + "hyper 1.8.0", "hyper-util", - "rustls 0.23.23", - "rustls-native-certs 0.8.1", + "rustls 0.23.35", + "rustls-native-certs 0.8.2", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tower-service", - "webpki-roots 0.26.1", + "webpki-roots 1.0.4", ] [[package]] @@ -5121,7 +5281,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.28", + "hyper 0.14.32", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -5129,11 +5289,11 @@ dependencies = [ [[package]] name = "hyper-timeout" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.7.0", + "hyper 1.8.0", "hyper-util", "pin-project-lite", "tokio", @@ -5147,7 +5307,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes 1.10.1", - "hyper 0.14.28", + "hyper 0.14.32", "native-tls", "tokio", "tokio-native-tls", @@ -5161,7 +5321,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes 1.10.1", "http-body-util", - "hyper 1.7.0", + "hyper 1.8.0", "hyper-util", "native-tls", "tokio", @@ -5171,18 +5331,23 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ + "base64 0.22.1", "bytes 1.10.1", "futures-channel", + "futures-core", "futures-util", "http 1.3.1", - "http-body 1.0.0", - "hyper 1.7.0", + "http-body 1.0.1", + "hyper 1.8.0", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", - "socket2 0.5.10", + "socket2 0.6.1", "tokio", "tower-service", "tracing 0.1.41", @@ -5196,7 +5361,7 @@ checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" dependencies = [ "hex", "http-body-util", - "hyper 1.7.0", + "hyper 1.8.0", "hyper-util", "pin-project-lite", "tokio", @@ -5205,16 +5370,17 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", - "windows-core 0.52.0", + "windows-core 0.62.2", ] [[package]] @@ -5228,21 +5394,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -5251,99 +5418,61 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" dependencies = [ - "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", + "icu_locale_core", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", -] - [[package]] name = "ident_case" version = "1.0.1" @@ -5363,9 +5492,9 @@ dependencies = [ [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -5374,9 +5503,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -5395,22 +5524,23 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.16.0", "serde", + "serde_core", ] [[package]] name = "indicatif" -version = "0.18.0" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd" +checksum = "9375e112e4b463ec1b1c6c011953545c65a30164fbab5b581df32b3abf0dcb88" dependencies = [ - "console 0.16.0", + "console 0.16.1", "portable-atomic", "unicode-segmentation", "unicode-width 0.2.0", @@ -5420,9 +5550,12 @@ dependencies = [ [[package]] name = "indoc" -version = "2.0.6" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd" +checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" +dependencies = [ + "rustversion", +] [[package]] name = "infer" @@ -5449,7 +5582,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "inotify-sys", "libc", ] @@ -5465,9 +5598,9 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "block-padding", "generic-array", @@ -5475,19 +5608,22 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.2" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b23a0c8dfe501baac4adf6ebbfa6eddf8f0c07f56b058cc1288017e32397846c" +checksum = "435d80800b936787d62688c927b6490e887c7ef5ff9ce922c6c6050fca75eb9a" dependencies = [ - "quote 1.0.40", - "syn 2.0.106", + "darling 0.20.11", + "indoc", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", "js-sys", @@ -5495,6 +5631,12 @@ dependencies = [ "web-sys", ] +[[package]] +name = "integer-encoding" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" + [[package]] name = "inventory" version = "0.3.21" @@ -5515,17 +5657,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "io-uring" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" -dependencies = [ - "bitflags 2.9.0", - "cfg-if", - "libc", -] - [[package]] name = "iovec" version = "0.1.4" @@ -5542,7 +5673,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ "socket2 0.5.10", - "widestring 1.0.2", + "widestring 1.2.1", "windows-sys 0.48.0", "winreg", ] @@ -5571,15 +5702,25 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf370abdafd54d13e54a620e8c3e1145f28e46cc9d704bc6d94414559df41763" +[[package]] +name = "iri-string" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "is-terminal" -version = "0.4.9" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ - "hermit-abi 0.3.9", - "rustix 0.38.40", - "windows-sys 0.48.0", + "hermit-abi 0.5.2", + "libc", + "windows-sys 0.61.2", ] [[package]] @@ -5589,19 +5730,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" [[package]] -name = "itertools" -version = "0.10.5" +name = "is_terminal_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" -version = "0.11.0" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] @@ -5635,9 +5773,33 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jiff" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", +] + +[[package]] +name = "jiff-static" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" +dependencies = [ + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", +] [[package]] name = "jni" @@ -5647,10 +5809,10 @@ checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", "cfg-if", - "combine 4.6.6", + "combine", "jni-sys", "log", - "thiserror 1.0.68", + "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] @@ -5663,18 +5825,19 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" dependencies = [ "once_cell", "wasm-bindgen", @@ -5689,7 +5852,7 @@ dependencies = [ "jsonptr", "serde", "serde_json", - "thiserror 1.0.68", + "thiserror 1.0.69", ] [[package]] @@ -5704,7 +5867,7 @@ dependencies = [ "pest_derive", "regex", "serde_json", - "thiserror 1.0.68", + "thiserror 1.0.69", ] [[package]] @@ -5724,13 +5887,13 @@ version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24690c68dfcdde5980d676b0f1820981841016b1f29eecb4c42ad48ab4118681" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "base64 0.22.1", "bytecount", "email_address", - "fancy-regex 0.16.1", + "fancy-regex 0.16.2", "fraction", - "idna 1.0.3", + "idna 1.1.0", "itoa", "num-cmp", "num-traits", @@ -5748,14 +5911,14 @@ dependencies = [ name = "k8s-e2e-tests" version = "0.1.0" dependencies = [ - "env_logger 0.11.6", + "env_logger 0.11.8", "futures 0.3.31", "indoc", "k8s-openapi 0.16.0", "k8s-test-framework", "rand 0.9.2", "regex", - "reqwest 0.11.26", + "reqwest 0.11.27", "serde_json", "tokio", "tracing 0.1.41", @@ -5801,9 +5964,9 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ "cpufeatures", ] @@ -5830,9 +5993,9 @@ dependencies = [ [[package]] name = "krb5-src" -version = "0.3.2+1.19.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cd3b7e7735d48bc3793837041294f2eb747bd0f63bbc081e89972abb9e48fb" +checksum = "a04b2f0dfefd7b54af22d22768dc3ab1ed5e55e6d5ff6af3f619069aa17c0ba4" dependencies = [ "duct", ] @@ -5862,11 +6025,11 @@ dependencies = [ "futures 0.3.31", "home", "http 1.3.1", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", - "hyper 1.7.0", + "hyper 1.8.0", "hyper-openssl 0.10.2", - "hyper-timeout 0.5.1", + "hyper-timeout 0.5.2", "hyper-util", "jsonpath-rust", "k8s-openapi 0.22.0", @@ -5877,7 +6040,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "thiserror 1.0.68", + "thiserror 1.0.69", "tokio", "tokio-util", "tower 0.4.13", @@ -5898,7 +6061,7 @@ dependencies = [ "k8s-openapi 0.22.0", "serde", "serde_json", - "thiserror 1.0.68", + "thiserror 1.0.69", ] [[package]] @@ -5907,7 +6070,7 @@ version = "0.93.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b84733c0fed6085c9210b43ffb96248676c1e800d0ba38d15043275a792ffa4" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "async-broadcast", "async-stream", "async-trait", @@ -5919,11 +6082,11 @@ dependencies = [ "jsonptr", "k8s-openapi 0.22.0", "kube-client", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "pin-project", "serde", "serde_json", - "thiserror 1.0.68", + "thiserror 1.0.69", "tokio", "tokio-util", "tracing 0.1.41", @@ -5931,50 +6094,50 @@ dependencies = [ [[package]] name = "lalrpop" -version = "0.22.0" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06093b57658c723a21da679530e061a8c25340fa5a6f98e313b542268c7e2a1f" +checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" dependencies = [ "ascii-canvas", "bit-set", "ena", - "itertools 0.13.0", + "itertools 0.14.0", "lalrpop-util", - "petgraph", + "petgraph 0.7.1", "regex", "regex-syntax", "sha3", "string_cache", - "term 1.0.1", - "unicode-xid 0.2.4", + "term 1.2.0", + "unicode-xid 0.2.6", "walkdir", ] [[package]] name = "lalrpop-util" -version = "0.22.0" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feee752d43abd0f4807a921958ab4131f692a44d4d599733d4419c5d586176ce" +checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" dependencies = [ - "regex-automata 0.4.8", + "regex-automata", "rustversion", ] [[package]] name = "lapin" -version = "2.5.3" +version = "2.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4273975142078ed200dedd77f09c8903dec110d0b02a0c8ad45796b39b691ea9" +checksum = "02d2aa4725b9607915fa1a73e940710a3be6af508ce700e56897cbe8847fbb07" dependencies = [ "amq-protocol", "async-global-executor-trait", "async-reactor-trait", "async-trait", "executor-trait", - "flume 0.11.0", + "flume", "futures-core", "futures-io", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "pinky-swear", "reactor-trait", "serde", @@ -5984,24 +6147,88 @@ 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" dependencies = [ - "spin 0.5.2", + "spin", +] + +[[package]] +name = "lexical-core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" +dependencies = [ + "lexical-parse-float", + "lexical-parse-integer", + "lexical-util", + "lexical-write-float", + "lexical-write-integer", +] + +[[package]] +name = "lexical-parse-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +dependencies = [ + "lexical-parse-integer", + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-util" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "lexical-write-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" +dependencies = [ + "lexical-util", + "lexical-write-integer", + "static_assertions", +] + +[[package]] +name = "lexical-write-integer" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" +dependencies = [ + "lexical-util", + "static_assertions", ] [[package]] name = "libc" -version = "0.2.175" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libflate" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "249fa21ba2b59e8cbd69e722f5b31e1b466db96c937ae3de23e8b99ead0d1383" +checksum = "e3248b8d211bd23a104a42d81b4fa8bb8ac4a3b75e7a43d85d2c9ccb6179cd74" dependencies = [ "adler32", "core2", @@ -6035,20 +6262,31 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link 0.2.1", +] + [[package]] name = "libm" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "libc", + "redox_syscall 0.5.18", ] [[package]] @@ -6077,18 +6315,18 @@ dependencies = [ [[package]] name = "libz-rs-sys" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "172a788537a2221661b480fee8dc5f96c580eb34fa88764d3205dc356c7e4221" +checksum = "840db8cf39d9ec4dd794376f38acc40d0fc65eec2a8f484f7fd375b84602becd" dependencies = [ "zlib-rs", ] [[package]] name = "libz-sys" -version = "1.1.22" +version = "1.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" +checksum = "15d118bbf3771060e7311cc7bb0545b01d08a8b4a7de949198dec1fa0ca1c0f7" dependencies = [ "cc", "libc", @@ -6104,9 +6342,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linked_hash_set" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588" +checksum = "984fb35d06508d1e69fc91050cceba9c0b748f983e6739fa2c7a9237154c52c8" dependencies = [ "linked-hash-map", ] @@ -6119,15 +6357,15 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "listenfd" @@ -6142,31 +6380,30 @@ dependencies = [ [[package]] name = "litemap" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "litrs" -version = "0.4.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "lockfree-object-pool" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a69c0481fc2424cb55795de7da41add33372ea75a94f9b6588ab6a2826dfebc" +checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" [[package]] name = "log" @@ -6190,14 +6427,14 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.5", ] [[package]] name = "lru" -version = "0.16.0" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ea4e65087ff52f3862caff188d489f1fab49a0cb09e01b2e3f1a617b10aaed" +checksum = "96051b46fc183dc9cd4a223960ef37b9af631b55191852a8274bfef064cda20f" [[package]] name = "lru-cache" @@ -6208,6 +6445,12 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "lua-src" version = "547.0.0" @@ -6219,12 +6462,12 @@ dependencies = [ [[package]] name = "luajit-src" -version = "210.5.2+113a168" +version = "210.5.12+a4f56a4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "823ec7bedb1819b11633bd583ae981b0082db08492b0c3396412b85dd329ffee" +checksum = "b3a8e7962a5368d5f264d045a5a255e90f9aa3fc1941ae15a8d2940d42cac671" dependencies = [ "cc", - "which 5.0.0", + "which 7.0.3", ] [[package]] @@ -6252,7 +6495,7 @@ version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a" dependencies = [ - "twox-hash", + "twox-hash 2.1.2", ] [[package]] @@ -6270,15 +6513,6 @@ dependencies = [ "libc", ] -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - [[package]] name = "match_cfg" version = "0.1.0" @@ -6291,7 +6525,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.4.8", + "regex-automata", ] [[package]] @@ -6308,9 +6542,9 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "matrixmultiply" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" dependencies = [ "autocfg", "rawpointer", @@ -6342,15 +6576,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memmap2" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" dependencies = [ "libc", ] @@ -6373,22 +6607,13 @@ dependencies = [ "autocfg", ] -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] - [[package]] name = "metrics" version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25dea7ac8057892855ec285c440160265225438c3c45072613c25a4b26e98ef5" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "portable-atomic", ] @@ -6398,14 +6623,14 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1ada651cd6bdffe01e5f35067df53491f1fe853d2b154008ca2bd30b3d3fcf6" dependencies = [ - "indexmap 2.11.0", + "indexmap 2.12.0", "itoa", "lockfree-object-pool", "metrics", "metrics-util", "once_cell", "tracing 0.1.41", - "tracing-core 0.1.33", + "tracing-core 0.1.34", "tracing-subscriber", ] @@ -6418,8 +6643,8 @@ dependencies = [ "aho-corasick", "crossbeam-epoch", "crossbeam-utils", - "hashbrown 0.15.2", - "indexmap 2.11.0", + "hashbrown 0.15.5", + "indexmap 2.12.0", "metrics", "ordered-float 4.6.0", "quanta", @@ -6435,9 +6660,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", @@ -6456,19 +6681,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] name = "mio" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ - "hermit-abi 0.3.9", "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.61.2", ] [[package]] @@ -6477,12 +6702,12 @@ version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1f5f8fbebc7db5f671671134b9321c4b9aa9adeafccfd9a8c020ae45c6a35d0" dependencies = [ - "bstr 1.12.0", + "bstr", "either", "mlua-sys", "mlua_derive", "num-traits", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "rustc-hash", "rustversion", ] @@ -6509,10 +6734,10 @@ dependencies = [ "itertools 0.13.0", "once_cell", "proc-macro-error2", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "regex", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -6523,25 +6748,22 @@ checksum = "dce6dd36094cac388f119d2e9dc82dc730ef91c32a6222170d630e5414b956e6" [[package]] name = "moka" -version = "0.12.7" +version = "0.12.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e0d88686dc561d743b40de8269b26eaf0dc58781bde087b0984646602021d08" +checksum = "8261cd88c312e0004c1d51baad2980c66528dfdb2bee62003e643a4d8f86b077" dependencies = [ - "async-lock 3.4.0", - "async-trait", + "async-lock 3.4.1", "crossbeam-channel", "crossbeam-epoch", "crossbeam-utils", - "event-listener 5.3.1", + "equivalent", + "event-listener 5.4.1", "futures-util", - "once_cell", - "parking_lot 0.12.4", - "quanta", + "parking_lot 0.12.5", + "portable-atomic", "rustc_version 0.4.1", "smallvec", "tagptr", - "thiserror 1.0.68", - "triomphe", "uuid", ] @@ -6581,7 +6803,7 @@ dependencies = [ "stringprep", "strsim 0.10.0", "take_mut", - "thiserror 1.0.68", + "thiserror 1.0.69", "tokio", "tokio-rustls 0.24.1", "tokio-util", @@ -6589,24 +6811,23 @@ dependencies = [ "trust-dns-resolver", "typed-builder 0.10.0", "uuid", - "webpki-roots 0.25.2", + "webpki-roots 0.25.4", ] [[package]] name = "multer" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15d522be0a9c3e46fd2632e272d178f56387bdb5c9fbb3a36c649062e9b5219" +checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" dependencies = [ "bytes 1.10.1", "encoding_rs", "futures-util", "http 1.3.1", "httparse", - "log", "memchr", "mime", - "spin 0.9.8", + "spin", "version_check", ] @@ -6616,6 +6837,18 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +[[package]] +name = "multimap" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" + +[[package]] +name = "murmur3" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9252111cf132ba0929b6f8e030cac2a24b507f3a4d6db6fb2896f27b354c714b" + [[package]] name = "native-tls" version = "0.2.14" @@ -6628,7 +6861,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "security-framework 2.10.0", + "security-framework 2.11.1", "security-framework-sys", "tempfile", ] @@ -6654,7 +6887,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17ebbe97acce52d06aebed4cd4a87c0941f4b2519b59b82b4feb5bd0ce003dfd" dependencies = [ - "indexmap 2.11.0", + "indexmap 2.12.0", "itertools 0.13.0", "ndarray", "noisy_float", @@ -6704,7 +6937,7 @@ dependencies = [ "anyhow", "byteorder", "paste", - "thiserror 1.0.68", + "thiserror 1.0.69", ] [[package]] @@ -6722,15 +6955,15 @@ dependencies = [ [[package]] name = "new_debug_unreachable" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "newtype-uuid" -version = "1.2.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee3224f0e8be7c2a1ebc77ef9c3eecb90f55c6594399ee825de964526b3c9056" +checksum = "5c012d14ef788ab066a347d19e3dda699916c92293b05b85ba2c76b8c82d2830" dependencies = [ "uuid", ] @@ -6775,7 +7008,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "cfg-if", "cfg_aliases", "libc", @@ -6790,7 +7023,7 @@ dependencies = [ "data-encoding", "ed25519", "ed25519-dalek", - "getrandom 0.2.15", + "getrandom 0.2.16", "log", "rand 0.8.5", "signatory", @@ -6861,7 +7094,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "fsevent-sys", "inotify", "kqueue", @@ -6898,11 +7131,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.50.1" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -6916,9 +7149,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ "num-bigint", "num-complex", @@ -6941,11 +7174,10 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" dependencies = [ - "byteorder", "lazy_static", "libm", "num-integer", @@ -6964,9 +7196,9 @@ checksum = "63335b2e2c34fae2fb0aa2cecfd9f0832a1e24b3b32ecec612c3426d46dc8aaa" [[package]] name = "num-complex" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] @@ -6999,9 +7231,9 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -7042,61 +7274,41 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.5.2", "libc", ] [[package]] name = "num_enum" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" -dependencies = [ - "num_enum_derive 0.6.1", -] - -[[package]] -name = "num_enum" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" -dependencies = [ - "num_enum_derive 0.7.3", -] - -[[package]] -name = "num_enum_derive" -version = "0.6.1" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "num_enum_derive", + "rustversion", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ - "proc-macro-crate 3.2.0", - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro-crate", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "num_threads" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" dependencies = [ "libc", ] @@ -7109,59 +7321,66 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "oauth2" -version = "4.4.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c38841cdd844847e3e7c8d29cef9dcfed8877f8f56f9071f77843ecf3baf937f" +checksum = "51e219e79014df21a225b1860a479e2dcd7cbd9130f4defd4bd0e191ea31d67d" dependencies = [ - "base64 0.13.1", + "base64 0.22.1", "chrono", - "getrandom 0.2.15", - "http 0.2.9", + "getrandom 0.2.16", + "http 1.3.1", "rand 0.8.5", - "reqwest 0.11.26", + "reqwest 0.12.24", "serde", "serde_json", "serde_path_to_error", "sha2", - "thiserror 1.0.68", + "thiserror 1.0.69", "url", ] [[package]] -name = "objc" -version = "0.2.7" +name = "objc2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" dependencies = [ - "malloc_buf", + "objc2-encode", ] [[package]] name = "objc2-core-foundation" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", ] [[package]] -name = "objc2-io-kit" -version = "0.3.1" +name = "objc2-encode" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c1c64d6120e51cd86033f67176b1cb66780c2efe34dec55176f77befd93c0a" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "libc", - "objc2-core-foundation", + "bitflags 2.10.0", + "objc2", ] [[package]] -name = "object" -version = "0.36.7" +name = "objc2-io-kit" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" dependencies = [ - "memchr", + "libc", + "objc2-core-foundation", ] [[package]] @@ -7194,13 +7413,19 @@ dependencies = [ "portable-atomic", ] +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + [[package]] name = "onig" version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "336b9c63443aceef14bea841b899035ae3abe89b7c486aaf4c5bd8aafedac3f0" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "libc", "once_cell", "onig_sys", @@ -7218,21 +7443,21 @@ dependencies = [ [[package]] name = "oorandom" -version = "11.1.3" +version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" [[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 = "opendal" -version = "0.54.0" +version = "0.54.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb9838d0575c6dbaf3fcec7255af8d5771996d4af900bbb6fa9a314dec00a1a" +checksum = "42afda58fa2cf50914402d132cc1caacff116a85d10c72ab2082bb7c50021754" dependencies = [ "anyhow", "backon", @@ -7240,14 +7465,14 @@ dependencies = [ "bytes 1.10.1", "chrono", "futures 0.3.31", - "getrandom 0.2.15", + "getrandom 0.2.16", "http 1.3.1", - "http-body 1.0.0", + "http-body 1.0.1", "log", "md-5", "percent-encoding", - "quick-xml 0.37.4", - "reqwest 0.12.9", + "quick-xml 0.38.4", + "reqwest 0.12.24", "serde", "serde_json", "tokio", @@ -7256,16 +7481,16 @@ dependencies = [ [[package]] name = "openidconnect" -version = "3.5.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f47e80a9cfae4462dd29c41e987edd228971d6565553fbc14b8a11e666d91590" +checksum = "0d8c6709ba2ea764bbed26bce1adf3c10517113ddea6f2d4196e4851757ef2b2" dependencies = [ - "base64 0.13.1", + "base64 0.21.7", "chrono", "dyn-clone", "ed25519-dalek", "hmac", - "http 0.2.9", + "http 1.3.1", "itertools 0.10.5", "log", "oauth2", @@ -7275,24 +7500,23 @@ dependencies = [ "rsa", "serde", "serde-value", - "serde_derive", "serde_json", "serde_path_to_error", "serde_plain", - "serde_with 3.14.0", + "serde_with 3.15.1", "sha2", "subtle", - "thiserror 1.0.68", + "thiserror 1.0.69", "url", ] [[package]] name = "openssl" -version = "0.10.73" +version = "0.10.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "cfg-if", "foreign-types", "libc", @@ -7307,9 +7531,9 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -7320,18 +7544,18 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-src" -version = "300.5.2+3.5.2" +version = "300.5.4+3.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d270b79e2926f5150189d475bc7e9d2c69f9c4697b185fa917d5a32b792d21b4" +checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.109" +version = "0.9.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" dependencies = [ "cc", "libc", @@ -7384,28 +7608,28 @@ dependencies = [ [[package]] name = "os_pipe" -version = "1.1.4" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ae859aa07428ca9a929b936690f8b12dc5f11dd8c6992a18ca93919f28bc177" +checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] name = "outref" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" +checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" [[package]] name = "owo-colors" -version = "4.2.2" +version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e" +checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52" dependencies = [ "supports-color 2.1.0", - "supports-color 3.0.1", + "supports-color 3.0.2", ] [[package]] @@ -7422,9 +7646,9 @@ dependencies = [ [[package]] name = "p384" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" +checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" dependencies = [ "ecdsa", "elliptic-curve", @@ -7432,20 +7656,11 @@ dependencies = [ "sha2", ] -[[package]] -name = "pad" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ad9b889f1b12e0b9ee24db044b5129150d5eada288edc800f789928dc8c0e3" -dependencies = [ - "unicode-width 0.1.13", -] - [[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 = "parking_lot" @@ -7460,12 +7675,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", - "parking_lot_core 0.9.11", + "parking_lot_core 0.9.12", ] [[package]] @@ -7484,15 +7699,46 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.12", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link 0.2.1", +] + +[[package]] +name = "parquet" +version = "39.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0a1e6fa27f09ebddba280f5966ef435f3ac4d74cfc3ffe370fd3fd59c2e004d" +dependencies = [ + "ahash 0.8.12", + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-data", + "arrow-ipc", + "arrow-schema", + "arrow-select", + "base64 0.21.7", + "brotli 3.5.0", + "bytes 1.10.1", + "chrono", + "flate2", + "hashbrown 0.13.2", + "lz4", + "num", + "num-bigint", + "paste", + "seq-macro", + "snap", + "thrift", + "twox-hash 1.6.3", + "zstd 0.12.4", ] [[package]] @@ -7530,12 +7776,12 @@ checksum = "9e9ed2178b0575fff8e1b83b58ba6f75e727aafac2e1b6c795169ad3b17eb518" [[package]] name = "pem" -version = "3.0.5" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" dependencies = [ "base64 0.22.1", - "serde", + "serde_core", ] [[package]] @@ -7555,20 +7801,19 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.7.11" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4" dependencies = [ "memchr", - "thiserror 1.0.68", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.7" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e1288dbd7786462961e69bfd4df7848c1e37e8b74303dbdab82c3a9cdd2809" +checksum = "187da9a3030dbafabbbfb20cb323b976dc7b7ce91fcd84f2f74d6e31d378e2de" dependencies = [ "pest", "pest_generator", @@ -7576,45 +7821,45 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.7" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1381c29a877c6d34b8c176e734f35d7f7f5b3adaefe940cb4d1bb7af94678e2e" +checksum = "49b401d98f5757ebe97a26085998d6c0eecec4995cad6ab7fc30ffdf4b052843" dependencies = [ "pest", "pest_meta", - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "pest_meta" -version = "2.7.7" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0934d6907f148c22a3acbda520c7eed243ad7487a30f51f6ce52b58b7077a8a" +checksum = "72f27a2cfee9f9039c4d86faa5af122a0ac3851441a34865b8a043b46be0065a" dependencies = [ - "once_cell", "pest", "sha2", ] [[package]] name = "petgraph" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ - "fixedbitset", - "indexmap 2.11.0", + "fixedbitset 0.4.2", + "indexmap 2.12.0", ] [[package]] -name = "phf" -version = "0.11.2" +name = "petgraph" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ - "phf_shared 0.11.2", + "fixedbitset 0.5.7", + "indexmap 2.12.0", ] [[package]] @@ -7627,21 +7872,22 @@ dependencies = [ ] [[package]] -name = "phf_shared" -version = "0.10.0" +name = "phf" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" dependencies = [ - "siphasher 0.3.11", + "phf_shared 0.13.1", + "serde", ] [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ - "siphasher 0.3.11", + "siphasher 1.0.1", ] [[package]] @@ -7653,6 +7899,15 @@ dependencies = [ "siphasher 1.0.1", ] +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher 1.0.1", +] + [[package]] name = "pin-project" version = "1.1.10" @@ -7668,16 +7923,16 @@ version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -7687,21 +7942,21 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pinky-swear" -version = "6.1.0" +version = "6.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d894b67aa7a4bf295db5e85349078c604edaa6fa5c8721e8eca3c7729a27f2ac" +checksum = "b1ea6e230dd3a64d61bcb8b79e597d3ab6b4c94ec7a234ce687dd718b4f2e657" dependencies = [ "doc-comment", - "flume 0.10.14", - "parking_lot 0.12.4", + "flume", + "parking_lot 0.12.5", "tracing 0.1.41", ] [[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.3.0", @@ -7731,9 +7986,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "platforms" @@ -7743,9 +7998,9 @@ checksum = "989d43012e2ca1c4a02507c67282691a0a3207f9dc67cec596b43fe925b3d325" [[package]] name = "plotters" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "num-traits", "plotters-backend", @@ -7756,15 +8011,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-svg" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ "plotters-backend", ] @@ -7787,17 +8042,16 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.4" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi 0.4.0", + "hermit-abi 0.5.2", "pin-project-lite", - "rustix 0.38.40", - "tracing 0.1.41", - "windows-sys 0.59.0", + "rustix 1.1.2", + "windows-sys 0.61.2", ] [[package]] @@ -7813,15 +8067,15 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "portable-atomic-util" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcdd8420072e66d54a407b3316991fe946ce3ab1083a7f575b2463866624704d" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" dependencies = [ "portable-atomic", ] @@ -7835,9 +8089,9 @@ dependencies = [ [[package]] name = "postgres-openssl" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb14e4bbc2c0b3d165bf30b79c7a9c10412dff9d98491ffdd64ed810ab891d21" +checksum = "8f86f073ad570f76e9e278ce6f05775fc723eed7daa6b4f9c2aa078080a564a0" dependencies = [ "openssl", "tokio", @@ -7847,9 +8101,9 @@ dependencies = [ [[package]] name = "postgres-protocol" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76ff0abab4a9b844b93ef7b81f1efc0a366062aaef2cd702c76256b5dc075c54" +checksum = "fbef655056b916eb868048276cfd5d6a7dea4f81560dfd047f97c8c6fe3fcfd4" dependencies = [ "base64 0.22.1", "byteorder", @@ -7865,9 +8119,9 @@ dependencies = [ [[package]] name = "postgres-types" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613283563cd90e1dfc3518d548caee47e0e725455ed619881f5cf21f36de4b48" +checksum = "ef4605b7c057056dd35baeb6ac0c0338e4975b1f2bef0f65da953285eb007095" dependencies = [ "bytes 1.10.1", "chrono", @@ -7875,6 +8129,15 @@ dependencies = [ "postgres-protocol", ] +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -7883,9 +8146,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 = "precomputed-hash" @@ -7895,27 +8161,26 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "predicates" -version = "3.0.4" +version = "3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dfc28575c2e3f19cb3c73b93af36460ae898d426eba6fc15b9bd2a5220758a0" +checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" dependencies = [ "anstyle", "difflib", - "itertools 0.11.0", "predicates-core", ] [[package]] name = "predicates-core" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" +checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" [[package]] name = "predicates-tree" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" dependencies = [ "predicates-core", "termtree", @@ -7923,12 +8188,11 @@ dependencies = [ [[package]] name = "prettydiff" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf0668e945d7caa9b3e3a4cb360d7dd1f2613d62233f8846dbfb7ea3c3df0910" +checksum = "b9a475bdea0881b8c65eb81f91fe53187b8522352a701b919c5a2c8a2f262808" dependencies = [ "owo-colors", - "pad", ] [[package]] @@ -7937,18 +8201,18 @@ version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" dependencies = [ - "proc-macro2 1.0.101", + "proc-macro2 1.0.103", "syn 1.0.109", ] [[package]] name = "prettyplease" -version = "0.2.15" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ - "proc-macro2 1.0.101", - "syn 2.0.106", + "proc-macro2 1.0.103", + "syn 2.0.110", ] [[package]] @@ -7957,11 +8221,11 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eea25e07510aa6ab6547308ebe3c036016d162b8da920dbb079e3ba8acf3d95a" dependencies = [ - "encode_unicode 1.0.0", + "encode_unicode", "is-terminal", "lazy_static", "term 0.7.0", - "unicode-width 0.1.13", + "unicode-width 0.1.14", ] [[package]] @@ -7975,21 +8239,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - -[[package]] -name = "proc-macro-crate" -version = "3.2.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.22.27", + "toml_edit 0.23.7", ] [[package]] @@ -7998,8 +8252,8 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", ] [[package]] @@ -8009,9 +8263,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" dependencies = [ "proc-macro-error-attr2", - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -8037,9 +8291,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] @@ -8048,7 +8302,7 @@ dependencies = [ name = "prometheus-parser" version = "0.1.0" dependencies = [ - "indexmap 2.11.0", + "indexmap 2.12.0", "nom 8.0.0", "prost 0.12.6", "prost-build 0.12.6", @@ -8059,14 +8313,13 @@ dependencies = [ [[package]] name = "proptest" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb0be07becd10686a0bb407298fb425360a5c44a663774406340c59a22de4ce" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.9.0", - "lazy_static", + "bitflags 2.10.0", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", @@ -8083,9 +8336,9 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "095a99f75c69734802359b682be8daaf8980296731f6470434ea2c652af1dd30" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -8129,8 +8382,8 @@ dependencies = [ "itertools 0.10.5", "lazy_static", "log", - "multimap", - "petgraph", + "multimap 0.8.3", + "petgraph 0.6.5", "prettyplease 0.1.25", "prost 0.11.9", "prost-types 0.11.9", @@ -8150,14 +8403,14 @@ dependencies = [ "heck 0.5.0", "itertools 0.12.1", "log", - "multimap", + "multimap 0.10.1", "once_cell", - "petgraph", - "prettyplease 0.2.15", + "petgraph 0.6.5", + "prettyplease 0.2.37", "prost 0.12.6", "prost-types 0.12.6", "regex", - "syn 2.0.106", + "syn 2.0.110", "tempfile", ] @@ -8168,16 +8421,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" dependencies = [ "heck 0.5.0", - "itertools 0.10.5", + "itertools 0.14.0", "log", - "multimap", + "multimap 0.10.1", "once_cell", - "petgraph", - "prettyplease 0.2.15", + "petgraph 0.7.1", + "prettyplease 0.2.37", "prost 0.13.5", "prost-types 0.13.5", "regex", - "syn 2.0.106", + "syn 2.0.110", "tempfile", ] @@ -8189,8 +8442,8 @@ checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", "itertools 0.10.5", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "syn 1.0.109", ] @@ -8202,9 +8455,9 @@ checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" dependencies = [ "anyhow", "itertools 0.12.1", - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -8214,10 +8467,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.10.5", - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "itertools 0.14.0", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -8263,9 +8516,9 @@ dependencies = [ [[package]] name = "psl" -version = "2.1.22" +version = "2.1.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc74a6e6a56708be1cf5c4c4d1a0dc21d33b2dcaa24e731b7fa9c287ce4f916f" +checksum = "96f36d5dda1aa6585ce2a74b0ae1a85e530db47b0186cd06b63f09dbd8035fc6" dependencies = [ "psl-types", ] @@ -8291,8 +8544,8 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "syn 1.0.109", ] @@ -8302,17 +8555,17 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf" dependencies = [ - "idna 1.0.3", + "idna 1.1.0", "psl-types", ] [[package]] name = "pulsar" -version = "6.3.1" +version = "6.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cee616af00383c461f9ceb0067d15dee68e7d313ae47dbd7f8543236aed7ee9" +checksum = "1235e80b398545bcc4efdad05079964a7596033de2fd9893cc9baa24b56bfaf9" dependencies = [ - "async-channel 2.3.1", + "async-channel 2.5.0", "async-trait", "bytes 1.10.1", "chrono", @@ -8322,6 +8575,7 @@ dependencies = [ "futures 0.3.31", "log", "lz4", + "murmur3", "native-tls", "nom 7.1.3", "oauth2", @@ -8340,7 +8594,7 @@ dependencies = [ "tokio-util", "url", "uuid", - "zstd 0.13.2", + "zstd 0.13.3", ] [[package]] @@ -8359,7 +8613,7 @@ dependencies = [ "libc", "once_cell", "raw-cpuid", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "web-sys", "winapi", ] @@ -8372,14 +8626,14 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-junit" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed1a693391a16317257103ad06a88c6529ac640846021da7c435a06fffdacd7" +checksum = "6ee9342d671fae8d66b3ae9fd7a9714dfd089c04d2a8b1ec0436ef77aee15e5f" dependencies = [ "chrono", - "indexmap 2.11.0", + "indexmap 2.12.0", "newtype-uuid", - "quick-xml 0.37.4", + "quick-xml 0.38.4", "strip-ansi-escapes", "thiserror 2.0.17", "uuid", @@ -8397,9 +8651,9 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.37.4" +version = "0.38.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4ce8c88de324ff838700f36fb6ab86c96df0e3c4ab6ef3a9b2044465cce1369" +checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" dependencies = [ "memchr", "serde", @@ -8422,41 +8676,44 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f71ee38b42f8459a88d3362be6f9b841ad2d5421844f61eb1c59c11bff3ac14a" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "quinn" -version = "0.11.6" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes 1.10.1", + "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.23", - "socket2 0.5.10", + "rustls 0.23.35", + "socket2 0.6.1", "thiserror 2.0.17", "tokio", "tracing 0.1.41", + "web-time", ] [[package]] name = "quinn-proto" -version = "0.11.9" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes 1.10.1", - "getrandom 0.2.15", - "rand 0.8.5", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.2", "ring", "rustc-hash", - "rustls 0.23.23", + "rustls 0.23.35", "rustls-pki-types", "slab", "thiserror 2.0.17", @@ -8467,16 +8724,16 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.12" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.10", + "socket2 0.6.1", "tracing 0.1.41", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -8490,18 +8747,24 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.40" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ - "proc-macro2 1.0.101", + "proc-macro2 1.0.103", ] [[package]] name = "quoted_printable" -version = "0.5.0" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "640c9bd8497b02465aeef5375144c26062e0dcd5939dfcbb0f5db76cb8c17c73" + +[[package]] +name = "r-efi" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79ec282e887b434b68c18fe5c121d38e72a5cf35119b59e54ec5b992ea9c8eb0" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "radium" @@ -8550,7 +8813,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -8580,7 +8843,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -8598,17 +8861,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", ] [[package]] name = "rand_core" -version = "0.9.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.1", - "zerocopy 0.8.16", + "getrandom 0.3.4", ] [[package]] @@ -8636,7 +8898,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" dependencies = [ - "rand_core 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -8645,7 +8907,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "cassowary", "compact_str", "crossterm 0.28.1", @@ -8662,19 +8924,13 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "11.0.1" +version = "11.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d86a7c4638d42c44551f4791a20e687dbb4c3de1f33c43dd71e355cd429def1" +checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", ] -[[package]] -name = "raw-window-handle" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" - [[package]] name = "rawpointer" version = "0.2.1" @@ -8683,9 +8939,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.8.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -8693,9 +8949,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -8721,15 +8977,15 @@ dependencies = [ [[package]] name = "rdkafka-sys" -version = "4.8.0+2.3.0" +version = "4.9.0+2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced38182dc436b3d9df0c77976f37a67134df26b050df1f0006688e46fc4c8be" +checksum = "5230dca48bc354d718269f3e4353280e188b610f7af7e2fcf54b7a79d5802872" dependencies = [ "cmake", "curl-sys", "libc", "libz-sys", - "num_enum 0.7.3", + "num_enum", "openssl-sys", "pkg-config", "sasl2-sys", @@ -8749,15 +9005,15 @@ dependencies = [ [[package]] name = "redis" -version = "0.32.5" +version = "0.32.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd3650deebc68526b304898b192fa4102a4ef0b9ada24da096559cb60e0eef8" +checksum = "014cc767fefab6a3e798ca45112bccad9c6e0e218fbd49720042716c73cfef44" dependencies = [ "arc-swap", "backon", "bytes 1.10.1", "cfg-if", - "combine 4.6.6", + "combine", "futures-channel", "futures-util", "itoa", @@ -8767,7 +9023,7 @@ dependencies = [ "pin-project-lite", "rand 0.9.2", "ryu", - "socket2 0.6.0", + "socket2 0.6.1", "tokio", "tokio-native-tls", "tokio-util", @@ -8785,62 +9041,53 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.12" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", ] [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.15", - "redox_syscall 0.2.16", - "thiserror 1.0.68", + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", ] [[package]] name = "redox_users" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "libredox", "thiserror 2.0.17", ] [[package]] name = "ref-cast" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -8849,37 +9096,31 @@ version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a3d769362109497b240e66462606bc28af68116436c8669bac17069533b908e" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "fluent-uri 0.3.2", "once_cell", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "percent-encoding", "serde_json", ] [[package]] name = "regex" -version = "1.11.2" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", + "regex-automata", "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" - -[[package]] -name = "regex-automata" -version = "0.4.8" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -8893,7 +9134,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c11639076bf147be211b90e47790db89f4c22b6c8a9ca6e960833869da67166" dependencies = [ "aho-corasick", - "indexmap 2.11.0", + "indexmap 2.12.0", "itertools 0.13.0", "nohash", "regex", @@ -8908,9 +9149,9 @@ checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "relative-path" @@ -8920,29 +9161,28 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "rend" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" dependencies = [ "bytecheck", ] [[package]] name = "reqwest" -version = "0.11.26" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bf93c4af7a8bb7d879d51cebe797356ff10ae8516ace542b5182d9dcac10b2" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "base64 0.21.7", "bytes 1.10.1", "encoding_rs", "futures-core", "futures-util", - "h2 0.3.26", - "http 0.2.9", - "http-body 0.4.5", - "hyper 0.14.28", - "hyper-rustls 0.24.2", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", "hyper-tls 0.5.0", "ipnet", "js-sys", @@ -8952,7 +9192,6 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.12", "rustls-pemfile 1.0.4", "serde", "serde_json", @@ -8961,21 +9200,19 @@ dependencies = [ "system-configuration", "tokio", "tokio-native-tls", - "tokio-rustls 0.24.1", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.25.2", "winreg", ] [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "async-compression", "base64 0.22.1", @@ -8987,42 +9224,39 @@ dependencies = [ "futures-util", "h2 0.4.12", "http 1.3.1", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", - "hyper 1.7.0", - "hyper-rustls 0.27.5", + "hyper 1.8.0", + "hyper-rustls 0.27.7", "hyper-tls 0.6.0", "hyper-util", - "ipnet", "js-sys", "log", - "mime", "mime_guess", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.23", - "rustls-native-certs 0.8.1", - "rustls-pemfile 2.1.0", + "rustls 0.23.35", + "rustls-native-certs 0.8.2", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tokio-util", + "tower 0.5.2", + "tower-http 0.6.6", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 0.26.1", - "windows-registry", + "webpki-roots 1.0.4", ] [[package]] @@ -9034,9 +9268,9 @@ dependencies = [ "anyhow", "async-trait", "http 1.3.1", - "reqwest 0.12.9", + "reqwest 0.12.24", "serde", - "thiserror 1.0.68", + "thiserror 1.0.69", "tower-service", ] @@ -9049,27 +9283,23 @@ dependencies = [ "anyhow", "async-trait", "futures 0.3.31", - "getrandom 0.2.15", + "getrandom 0.2.16", "http 1.3.1", - "hyper 1.7.0", + "hyper 1.8.0", "parking_lot 0.11.2", - "reqwest 0.12.9", + "reqwest 0.12.24", "reqwest-middleware", "retry-policies", - "thiserror 1.0.68", + "thiserror 1.0.69", "tokio", "wasm-timer", ] [[package]] name = "resolv-conf" -version = "0.7.0" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" -dependencies = [ - "hostname 0.3.1", - "quick-error", -] +checksum = "6b3789b30bd25ba102de4beabd95d21ac45b69b1be7d14522bab988c526d6799" [[package]] name = "retry-policies" @@ -9098,7 +9328,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", "untrusted", "windows-sys 0.52.0", @@ -9128,8 +9358,8 @@ version = "0.7.45" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "syn 1.0.109", ] @@ -9191,9 +9421,9 @@ checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" [[package]] name = "rsa" -version = "0.9.3" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ef35bf3e7fe15a53c4ab08a998e42271eab13eb0db224126bc7bc4c4bad96d" +checksum = "40a0376c50d0358279d9d643e4bf7b7be212f1f4ff1da9070a7b54d22ef75c88" dependencies = [ "const-oid", "digest", @@ -9228,13 +9458,13 @@ checksum = "9c845311f0ff7951c5506121a9ad75aec44d083c31583b2ea5a30bcb0b0abba0" dependencies = [ "cfg-if", "glob", - "proc-macro-crate 3.2.0", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro-crate", + "proc-macro2 1.0.103", + "quote 1.0.42", "regex", "relative-path", "rustc_version 0.4.1", - "syn 2.0.106", + "syn 2.0.110", "unicode-ident", ] @@ -9245,38 +9475,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1568e15fab2d546f940ed3a21f48bbbd1c494c90c99c4481339364a497f94a9" dependencies = [ "bytes 1.10.1", - "flume 0.11.0", + "flume", "futures-util", "log", - "rustls-native-certs 0.7.0", - "rustls-pemfile 2.1.0", + "rustls-native-certs 0.7.3", + "rustls-pemfile 2.2.0", "rustls-webpki 0.102.8", - "thiserror 1.0.68", + "thiserror 1.0.69", "tokio", "tokio-rustls 0.25.0", ] [[package]] name = "rust_decimal" -version = "1.33.1" +version = "1.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06676aec5ccb8fc1da723cc8c0f9a46549f21ebb8753d3915c6c41db1e7f1dc4" +checksum = "35affe401787a9bd846712274d97654355d21b2a2c092a3139aabe31e9022282" dependencies = [ "arrayvec", "num-traits", ] -[[package]] -name = "rustc-demangle" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" - [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc_version" @@ -9293,7 +9517,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.26", + "semver 1.0.27", ] [[package]] @@ -9308,9 +9532,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.27" +version = "0.37.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" +checksum = "519165d378b97752ca44bbe15047d5d3409e875f39327546b42ac81d7e18c1b6" dependencies = [ "bitflags 1.3.2", "errno", @@ -9322,28 +9546,28 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.40" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99e4ea3e1cdc4b559b8e5650f9c8e5998e3e5c1343b4eaf034565f32318d63c0" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "errno", "libc", - "linux-raw-sys 0.4.14", - "windows-sys 0.52.0", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", ] [[package]] name = "rustix" -version = "1.0.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dade4812df5c384711475be5fcd8c162555352945401aed22a35bffeab61f657" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "errno", "libc", - "linux-raw-sys 0.9.2", - "windows-sys 0.59.0", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.2", ] [[package]] @@ -9374,14 +9598,14 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.23" +version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.102.8", + "rustls-webpki 0.103.8", "subtle", "zeroize", ] @@ -9395,27 +9619,27 @@ dependencies = [ "openssl-probe", "rustls-pemfile 1.0.4", "schannel", - "security-framework 2.10.0", + "security-framework 2.11.1", ] [[package]] name = "rustls-native-certs" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" +checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ "openssl-probe", - "rustls-pemfile 2.1.0", + "rustls-pemfile 2.2.0", "rustls-pki-types", "schannel", - "security-framework 2.10.0", + "security-framework 2.11.1", ] [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" dependencies = [ "openssl-probe", "rustls-pki-types", @@ -9434,21 +9658,21 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c333bb734fcdedcea57de1602543590f545f127dc8b533324318fd492c5c70b" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.21.7", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.10.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" dependencies = [ "web-time", + "zeroize", ] [[package]] @@ -9472,6 +9696,17 @@ dependencies = [ "untrusted", ] +[[package]] +name = "rustls-webpki" +version = "0.103.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + [[package]] name = "rustversion" version = "1.0.22" @@ -9480,9 +9715,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rusty-fork" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" dependencies = [ "fnv", "quick-error", @@ -9496,7 +9731,7 @@ version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62fd9ca5ebc709e8535e8ef7c658eb51457987e48c98ead2be482172accc408d" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "cfg-if", "clipboard-win", "libc", @@ -9557,11 +9792,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -9578,9 +9813,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1375ba8ef45a6f15d83fa8748f1079428295d403d6ea991d09ab100155fbc06d" +checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" dependencies = [ "dyn-clone", "ref-cast", @@ -9648,12 +9883,12 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.10.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 1.3.2", - "core-foundation 0.9.3", + "bitflags 2.10.0", + "core-foundation 0.9.4", "core-foundation-sys", "libc", "security-framework-sys", @@ -9665,7 +9900,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -9693,11 +9928,12 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -9706,6 +9942,12 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +[[package]] +name = "seq-macro" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" + [[package]] name = "serde" version = "1.0.228" @@ -9722,7 +9964,7 @@ version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc44799282f511a5d403d72a4ff028dc2c87f7fe6830abe3c33bb2fa6dfccec" dependencies = [ - "toml 0.9.5", + "toml 0.9.8", ] [[package]] @@ -9760,9 +10002,9 @@ version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -9771,9 +10013,9 @@ version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -9782,7 +10024,7 @@ version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.11.0", + "indexmap 2.12.0", "itoa", "memchr", "ryu", @@ -9792,21 +10034,22 @@ dependencies = [ [[package]] name = "serde_nanos" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae801b7733ca8d6a2b580debe99f67f36826a0f5b8a36055dc6bc40f8d6bc71" +checksum = "a93142f0367a4cc53ae0fead1bcda39e85beccfad3dcd717656cacab94b12985" dependencies = [ "serde", ] [[package]] name = "serde_path_to_error" -version = "0.1.14" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" dependencies = [ "itoa", "serde", + "serde_core", ] [[package]] @@ -9826,18 +10069,18 @@ checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" dependencies = [ "percent-encoding", "serde", - "thiserror 1.0.68", + "thiserror 1.0.69", ] [[package]] name = "serde_repr" -version = "0.1.17" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -9851,11 +10094,11 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83" +checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -9882,21 +10125,20 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.14.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.0", + "indexmap 2.12.0", "schemars 0.9.0", - "schemars 1.0.3", - "serde", - "serde_derive", + "schemars 1.1.0", + "serde_core", "serde_json", - "serde_with_macros 3.14.0", + "serde_with_macros 3.15.1", "time", ] @@ -9907,21 +10149,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" dependencies = [ "darling 0.13.4", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "syn 1.0.109", ] [[package]] name = "serde_with_macros" -version = "3.14.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955" dependencies = [ - "darling 0.20.11", - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "darling 0.21.3", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -9930,7 +10172,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.11.0", + "indexmap 2.12.0", "itoa", "ryu", "serde", @@ -9946,7 +10188,7 @@ dependencies = [ "futures 0.3.31", "log", "once_cell", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "scc", "serial_test_derive", ] @@ -9957,9 +10199,9 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -10016,12 +10258,13 @@ dependencies = [ [[package]] name = "shared_child" -version = "1.0.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0d94659ad3c2137fef23ae75b03d5241d633f8acded53d672decfa0e6e0caef" +checksum = "1e362d9935bc50f019969e2f9ecd66786612daae13e8f277be7bfb66e8bed3f7" dependencies = [ "libc", - "winapi", + "sigchld", + "windows-sys 0.60.2", ] [[package]] @@ -10030,11 +10273,22 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "sigchld" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47106eded3c154e70176fc83df9737335c94ce22f821c32d17ed1db1f83badb1" +dependencies = [ + "libc", + "os_pipe", + "signal-hook", +] + [[package]] name = "signal-hook" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" dependencies = [ "libc", "signal-hook-registry", @@ -10042,9 +10296,9 @@ dependencies = [ [[package]] name = "signal-hook-mio" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" +checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc" dependencies = [ "libc", "mio", @@ -10053,9 +10307,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" dependencies = [ "libc", ] @@ -10074,14 +10328,20 @@ dependencies = [ [[package]] name = "signature" -version = "2.0.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fe458c98333f9c8152221191a77e2a44e8325d0193484af2e9421a53019e57d" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest", "rand_core 0.6.4", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "simdutf8" version = "0.1.5" @@ -10090,11 +10350,11 @@ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "similar" -version = "2.3.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" dependencies = [ - "bstr 0.2.17", + "bstr", "unicode-segmentation", ] @@ -10104,7 +10364,7 @@ version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5b441962c817e33508847a22bd82f03a30cff43642dc2fae8b050566121eb9a" dependencies = [ - "console 0.15.7", + "console 0.15.11", "similar", ] @@ -10134,12 +10394,9 @@ checksum = "c1e9a774a6c28142ac54bb25d25562e6bcf957493a184f15ad4eebccb23e410a" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" @@ -10211,8 +10468,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "syn 1.0.109", ] @@ -10223,9 +10480,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451" dependencies = [ "heck 0.5.0", - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -10256,20 +10513,14 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "spin" version = "0.9.8" @@ -10290,9 +10541,9 @@ dependencies = [ [[package]] name = "spki" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", "der", @@ -10323,14 +10574,14 @@ dependencies = [ "crc", "crossbeam-queue", "either", - "event-listener 5.3.1", + "event-listener 5.4.1", "futures-core", "futures-intrusive", "futures-io", "futures-util", - "hashbrown 0.15.2", + "hashbrown 0.15.5", "hashlink", - "indexmap 2.11.0", + "indexmap 2.12.0", "log", "memchr", "once_cell", @@ -10352,11 +10603,11 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "sqlx-core", "sqlx-macros-core", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -10370,8 +10621,8 @@ dependencies = [ "heck 0.5.0", "hex", "once_cell", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "serde", "serde_json", "sha2", @@ -10379,7 +10630,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.106", + "syn 2.0.110", "tokio", "url", ] @@ -10392,7 +10643,7 @@ checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.0", + "bitflags 2.10.0", "byteorder", "bytes 1.10.1", "chrono", @@ -10435,7 +10686,7 @@ checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.0", + "bitflags 2.10.0", "byteorder", "chrono", "crc", @@ -10473,7 +10724,7 @@ checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" dependencies = [ "atoi", "chrono", - "flume 0.11.0", + "flume", "futures-channel", "futures-core", "futures-executor", @@ -10492,9 +10743,9 @@ dependencies = [ [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -10521,26 +10772,25 @@ dependencies = [ [[package]] name = "string_cache" -version = "0.8.7" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" dependencies = [ "new_debug_unreachable", - "once_cell", - "parking_lot 0.12.4", - "phf_shared 0.10.0", + "parking_lot 0.12.5", + "phf_shared 0.11.3", "precomputed-hash", ] [[package]] name = "stringprep" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" dependencies = [ - "finl_unicode", "unicode-bidi", "unicode-normalization", + "unicode-properties", ] [[package]] @@ -10592,10 +10842,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "rustversion", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -10605,10 +10855,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ "heck 0.5.0", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "rustversion", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -10618,16 +10868,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" dependencies = [ "heck 0.5.0", - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[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 = "supports-color" @@ -10641,9 +10891,9 @@ dependencies = [ [[package]] name = "supports-color" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8775305acf21c96926c900ad056abeef436701108518cf890020387236ac5a77" +checksum = "c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6" dependencies = [ "is_ci", ] @@ -10665,19 +10915,19 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.106" +version = "2.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "unicode-ident", ] @@ -10689,22 +10939,22 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -10718,7 +10968,7 @@ dependencies = [ "ntapi 0.4.1", "objc2-core-foundation", "objc2-io-kit", - "windows 0.60.0", + "windows", ] [[package]] @@ -10761,7 +11011,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", - "core-foundation 0.9.3", + "core-foundation 0.9.4", "system-configuration-sys", ] @@ -10801,7 +11051,7 @@ checksum = "495b0abdce3dc1f8fd27240651c9e68890c14e9d9c61527b1ce44d8a5a7bd3d5" dependencies = [ "cfg-if", "native-tls", - "rustls-pemfile 2.1.0", + "rustls-pemfile 2.2.0", ] [[package]] @@ -10817,10 +11067,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand 2.3.0", - "getrandom 0.3.1", + "getrandom 0.3.4", "once_cell", - "rustix 1.0.1", - "windows-sys 0.60.2", + "rustix 1.1.2", + "windows-sys 0.61.2", ] [[package]] @@ -10836,38 +11086,37 @@ dependencies = [ [[package]] name = "term" -version = "1.0.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3bb6001afcea98122260987f8b7b5da969ecad46dbf0b5453702f776b491a41" +checksum = "2111ef44dae28680ae9752bb89409e7310ca33a8c621ebe7b106cf5c928b3ac0" dependencies = [ - "home", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "termcolor" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] [[package]] name = "terminal_size" -version = "0.4.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef" +checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0" dependencies = [ - "rustix 0.38.40", - "windows-sys 0.59.0", + "rustix 1.1.2", + "windows-sys 0.60.2", ] [[package]] name = "termtree" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" +checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" [[package]] name = "test-generator" @@ -10883,11 +11132,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.68", + "thiserror-impl 1.0.69", ] [[package]] @@ -10901,13 +11150,13 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -10916,9 +11165,9 @@ version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -10930,11 +11179,22 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "thrift" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e54bc85fc7faa8bc175c4bab5b92ba8d9a3ce893d0e9f42cc455c8ab16a9e09" +dependencies = [ + "byteorder", + "integer-encoding", + "ordered-float 2.10.1", +] + [[package]] name = "tikv-jemalloc-sys" -version = "0.6.0+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +version = "0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3c60906412afa9c2b5b5a48ca6a5abe5736aec9eb48ad05037a677e52e4e2d" +checksum = "cd8aa5b2ab86a2cefa406d889139c162cbb230092f7d1d7cbc1716405d852a3b" dependencies = [ "cc", "libc", @@ -10942,9 +11202,9 @@ dependencies = [ [[package]] name = "tikv-jemallocator" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cec5ff18518d81584f477e9bfdf957f5bb0979b0bac3af4ca30b5b3ae2d2865" +checksum = "0359b4327f954e0567e69fb191cf1436617748813819c94b8cd4a431422d053a" dependencies = [ "libc", "tikv-jemalloc-sys", @@ -10952,9 +11212,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", @@ -10970,25 +11230,34 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -11006,9 +11275,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -11021,23 +11290,20 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.47.1" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes 1.10.1", - "io-uring", "libc", "mio", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2 0.6.0", + "socket2 0.6.1", "tokio-macros", "tracing 0.1.41", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -11053,9 +11319,9 @@ dependencies = [ [[package]] name = "tokio-io-timeout" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +checksum = "0bd86198d9ee903fedd2f9a2e72014287c0d9167e4ae43b5853007205dda1b76" dependencies = [ "pin-project-lite", "tokio", @@ -11063,13 +11329,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -11095,9 +11361,9 @@ dependencies = [ [[package]] name = "tokio-postgres" -version = "0.7.13" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c95d533c83082bb6490e0189acaa0bbeef9084e60471b696ca6988cd0541fb0" +checksum = "2b40d66d9b2cfe04b628173409368e58247e8eddbbd3b0e6c6ba1d09f20f6c9e" dependencies = [ "async-trait", "byteorder", @@ -11106,14 +11372,14 @@ dependencies = [ "futures-channel", "futures-util", "log", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "percent-encoding", - "phf 0.11.2", + "phf 0.13.1", "pin-project-lite", "postgres-protocol", "postgres-types", "rand 0.9.2", - "socket2 0.5.10", + "socket2 0.6.1", "tokio", "tokio-util", "whoami", @@ -11153,11 +11419,11 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.23", + "rustls 0.23.35", "tokio", ] @@ -11213,8 +11479,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.13" -source = "git+https://github.com/vectordotdev/tokio?branch=tokio-util-0.7.13-framed-read-continue-on-error#b4bdfda8fe8aa24eba36de0d60063b14f30c7fe7" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" dependencies = [ "bytes 1.10.1", "futures-core", @@ -11241,9 +11508,9 @@ dependencies = [ "ring", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tokio-util", - "webpki-roots 0.26.1", + "webpki-roots 0.26.11", ] [[package]] @@ -11260,17 +11527,17 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.5" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75129e1dc5000bfbaa9fee9d1b21f974f9fbad9daec557a521ee6e080825f6e8" +checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" dependencies = [ - "indexmap 2.11.0", - "serde", - "serde_spanned 1.0.0", - "toml_datetime 0.7.0", + "indexmap 2.12.0", + "serde_core", + "serde_spanned 1.0.3", + "toml_datetime 0.7.3", "toml_parser", "toml_writer", - "winnow 0.7.10", + "winnow", ] [[package]] @@ -11284,45 +11551,46 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "toml_edit" -version = "0.19.15" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.11.0", + "indexmap 2.12.0", + "serde", + "serde_spanned 0.6.9", "toml_datetime 0.6.11", - "winnow 0.5.18", + "toml_write", + "winnow", ] [[package]] name = "toml_edit" -version = "0.22.27" +version = "0.23.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" dependencies = [ - "indexmap 2.11.0", - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_write", - "winnow 0.7.10", + "indexmap 2.12.0", + "toml_datetime 0.7.3", + "toml_parser", + "winnow", ] [[package]] name = "toml_parser" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b551886f449aa90d4fe2bdaa9f4a2577ad2dde302c61ecf262d80b116db95c10" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" dependencies = [ - "winnow 0.7.10", + "winnow", ] [[package]] @@ -11333,9 +11601,9 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "toml_writer" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc842091f2def52017664b53082ecbbeb5c7731092bad69d2c63050401dfd64" +checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" [[package]] name = "tonic" @@ -11349,16 +11617,16 @@ dependencies = [ "base64 0.21.7", "bytes 1.10.1", "flate2", - "h2 0.3.26", - "http 0.2.9", - "http-body 0.4.5", - "hyper 0.14.28", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", "hyper-timeout 0.4.1", "percent-encoding", "pin-project", "prost 0.12.6", - "rustls-native-certs 0.7.0", - "rustls-pemfile 2.1.0", + "rustls-native-certs 0.7.3", + "rustls-pemfile 2.2.0", "rustls-pki-types", "tokio", "tokio-rustls 0.25.0", @@ -11378,15 +11646,15 @@ checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ "async-stream", "async-trait", - "axum 0.7.5", + "axum 0.7.9", "base64 0.22.1", "bytes 1.10.1", "h2 0.4.12", "http 1.3.1", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", - "hyper 1.7.0", - "hyper-timeout 0.5.1", + "hyper 1.8.0", + "hyper-timeout 0.5.2", "hyper-util", "percent-encoding", "pin-project", @@ -11407,9 +11675,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07" dependencies = [ "prettyplease 0.1.25", - "proc-macro2 1.0.101", + "proc-macro2 1.0.103", "prost-build 0.11.9", - "quote 1.0.40", + "quote 1.0.42", "syn 1.0.109", ] @@ -11419,11 +11687,11 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4ef6dd70a610078cb4e338a0f79d06bc759ff1b22d2120c2ff02ae264ba9c2" dependencies = [ - "prettyplease 0.2.15", - "proc-macro2 1.0.101", + "prettyplease 0.2.37", + "proc-macro2 1.0.103", "prost-build 0.12.6", - "quote 1.0.40", - "syn 2.0.106", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -11454,10 +11722,10 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", - "indexmap 2.11.0", + "indexmap 2.12.0", "pin-project-lite", "slab", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tokio-util", "tower-layer", @@ -11472,12 +11740,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" dependencies = [ "async-compression", - "bitflags 2.9.0", + "bitflags 2.10.0", "bytes 1.10.1", "futures-core", "futures-util", - "http 0.2.9", - "http-body 0.4.5", + "http 0.2.12", + "http-body 0.4.6", "http-range-header", "pin-project-lite", "tokio", @@ -11494,10 +11762,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "base64 0.21.7", - "bitflags 2.9.0", + "bitflags 2.10.0", "bytes 1.10.1", "http 1.3.1", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", @@ -11506,6 +11774,24 @@ dependencies = [ "tracing 0.1.41", ] +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.10.0", + "bytes 1.10.1", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "iri-string", + "pin-project-lite", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.3" @@ -11541,7 +11827,7 @@ dependencies = [ "log", "pin-project-lite", "tracing-attributes", - "tracing-core 0.1.33", + "tracing-core 0.1.34", ] [[package]] @@ -11556,20 +11842,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -11590,7 +11876,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12de1a8c6bcfee614305e836308b596bbac831137a04c61f7e5b0b0bf2cfeaf6" dependencies = [ "tracing 0.1.41", - "tracing-core 0.1.33", + "tracing-core 0.1.34", "tracing-subscriber", ] @@ -11624,7 +11910,7 @@ dependencies = [ "mock_instant", "serial_test", "tracing 0.1.41", - "tracing-core 0.1.33", + "tracing-core 0.1.34", "tracing-subscriber", ] @@ -11636,7 +11922,7 @@ checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ "log", "once_cell", - "tracing-core 0.1.33", + "tracing-core 0.1.34", ] [[package]] @@ -11646,7 +11932,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" dependencies = [ "serde", - "tracing-core 0.1.33", + "tracing-core 0.1.34", ] [[package]] @@ -11658,14 +11944,14 @@ dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex-automata 0.4.8", + "regex-automata", "serde", "serde_json", "sharded-slab", "smallvec", "thread_local", "tracing 0.1.41", - "tracing-core 0.1.33", + "tracing-core 0.1.34", "tracing-log", "tracing-serde", ] @@ -11676,7 +11962,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "557b891436fe0d5e0e363427fc7f217abf9ccd510d5136549847bdcbcd011d68" dependencies = [ - "tracing-core 0.1.33", + "tracing-core 0.1.34", "tracing-subscriber", "tracing-test-macro", ] @@ -11687,8 +11973,8 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ - "quote 1.0.40", - "syn 2.0.106", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] @@ -11702,12 +11988,6 @@ dependencies = [ "tracing-futures 0.3.0", ] -[[package]] -name = "triomphe" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b2cb4fbb9995eeb36ac86fadf24031ccd58f99d6b4b2d7b911db70bddb80d90" - [[package]] name = "trust-dns-proto" version = "0.21.2" @@ -11727,7 +12007,7 @@ dependencies = [ "log", "rand 0.8.5", "smallvec", - "thiserror 1.0.68", + "thiserror 1.0.69", "tinyvec", "tokio", "url", @@ -11745,19 +12025,19 @@ dependencies = [ "lazy_static", "log", "lru-cache", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "resolv-conf", "smallvec", - "thiserror 1.0.68", + "thiserror 1.0.69", "tokio", "trust-dns-proto", ] [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tryhard" @@ -11778,12 +12058,12 @@ dependencies = [ "byteorder", "bytes 1.10.1", "data-encoding", - "http 0.2.9", + "http 0.2.12", "httparse", "log", "rand 0.8.5", "sha1", - "thiserror 1.0.68", + "thiserror 1.0.69", "url", "utf-8", ] @@ -11802,11 +12082,21 @@ dependencies = [ "log", "rand 0.8.5", "sha1", - "thiserror 1.0.68", + "thiserror 1.0.69", "url", "utf-8", ] +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "static_assertions", +] + [[package]] name = "twox-hash" version = "2.1.2" @@ -11819,8 +12109,8 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89851716b67b937e393b3daa8423e67ddfc4bbbf1654bcf05488e95e0828db0c" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "syn 1.0.109", ] @@ -11839,16 +12129,22 @@ version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f03ca4cb38206e2bef0700092660bb74d696f808514dae47fa1467cbfe26e96e" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + [[package]] name = "typenum" -version = "1.17.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "typespec" @@ -11873,10 +12169,10 @@ dependencies = [ "bytes 1.10.1", "dyn-clone", "futures 0.3.31", - "getrandom 0.2.15", + "getrandom 0.2.16", "pin-project", "rand 0.8.5", - "reqwest 0.12.9", + "reqwest 0.12.24", "serde", "serde_json", "time", @@ -11894,17 +12190,17 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6cbccdbe531c8d553812a609bdb70c0d1002ad91333498e18df42c98744b15cc" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "rustc_version 0.4.1", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "typetag" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f22b40dd7bfe8c14230cf9702081366421890435b2d625fa92b4acc4c3de6f" +checksum = "be2212c8a9b9bcfca32024de14998494cf9a5dfa59ea1b829de98bac374b86bf" dependencies = [ "erased-serde", "inventory", @@ -11915,20 +12211,20 @@ dependencies = [ [[package]] name = "typetag-impl" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35f5380909ffc31b4de4f4bdf96b877175a016aa2ca98cee39fcfd8c4d53d952" +checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "ua-parser" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7176a413a0b7e94926d11a2054c6db5ac7fa42bf4ebe7e9571152e3f024ddfd" +checksum = "5c06b979bd5606d182759ff9cd3dda2b034b584a1ed41116407cb92abf3c995a" dependencies = [ "regex", "regex-filtered", @@ -11937,9 +12233,9 @@ dependencies = [ [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "unarray" @@ -11949,34 +12245,37 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[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-bidi" -version = "0.3.13" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-properties" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" + [[package]] name = "unicode-segmentation" version = "1.12.0" @@ -11985,19 +12284,20 @@ checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-truncate" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5fbabedabe362c618c714dbefda9927b5afc8e2a8102f47f081089a9019226" +checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" dependencies = [ - "itertools 0.12.1", - "unicode-width 0.1.13", + "itertools 0.13.0", + "unicode-segmentation", + "unicode-width 0.1.14", ] [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" @@ -12013,9 +12313,9 @@ checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "unit-prefix" @@ -12033,15 +12333,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -dependencies = [ - "void", -] - [[package]] name = "unsafe-libyaml" version = "0.2.11" @@ -12067,12 +12358,12 @@ dependencies = [ [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", - "idna 1.0.3", + "idna 1.1.0", "percent-encoding", "serde", ] @@ -12089,12 +12380,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8-width" version = "0.1.7" @@ -12109,9 +12394,9 @@ 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 = "uuid" @@ -12119,7 +12404,7 @@ version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom 0.3.1", + "getrandom 0.3.4", "js-sys", "rand 0.9.2", "serde", @@ -12139,9 +12424,9 @@ dependencies = [ [[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 = "vcpkg" @@ -12165,7 +12450,7 @@ dependencies = [ "git2", "glob", "hex", - "indexmap 2.11.0", + "indexmap 2.12.0", "indicatif", "indoc", "itertools 0.14.0", @@ -12173,20 +12458,21 @@ dependencies = [ "owo-colors", "paste", "regex", - "reqwest 0.11.26", - "semver 1.0.26", + "reqwest 0.11.27", + "semver 1.0.27", "serde", "serde_json", "serde_yaml", "sha2", "tempfile", - "toml 0.9.5", + "toml 0.9.8", ] [[package]] name = "vector" version = "0.51.0" dependencies = [ + "anyhow", "apache-avro 0.16.0", "approx", "arc-swap", @@ -12223,8 +12509,9 @@ dependencies = [ "azure_core 0.21.0", "azure_core 0.25.0", "azure_identity", - "azure_storage", + "azure_storage 0.21.0", "azure_storage_blobs", + "azure_storage_queues", "base64 0.22.1", "bloomy", "bollard", @@ -12266,16 +12553,16 @@ dependencies = [ "heim", "hex", "hickory-proto", - "hostname 0.4.0", - "http 0.2.9", + "hostname 0.4.1", + "http 0.2.12", "http 1.3.1", - "http-body 0.4.5", + "http-body 0.4.6", "http-serde", "humantime", - "hyper 0.14.28", + "hyper 0.14.32", "hyper-openssl 0.9.2", "hyper-proxy", - "indexmap 2.11.0", + "indexmap 2.12.0", "indoc", "inventory", "ipnet", @@ -12286,7 +12573,7 @@ dependencies = [ "libc", "listenfd", "loki-logproto", - "lru 0.16.0", + "lru 0.16.2", "maxminddb", "md-5", "metrics", @@ -12326,19 +12613,19 @@ dependencies = [ "rdkafka", "redis", "regex", - "reqwest 0.11.26", + "reqwest 0.11.27", "rmp-serde", "rmpv", "roaring", "rstest", "rumqttc", "seahash", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde-toml-merge", "serde_bytes", "serde_json", - "serde_with 3.14.0", + "serde_with 3.15.1", "serde_yaml", "serial_test", "similar-asserts", @@ -12363,14 +12650,14 @@ dependencies = [ "tokio-test", "tokio-tungstenite 0.20.1", "tokio-util", - "toml 0.9.5", + "toml 0.9.8", "tonic 0.11.0", "tonic-build 0.11.0", "tower 0.5.2", "tower-http 0.4.4", "tower-test", "tracing 0.1.41", - "tracing-core 0.1.33", + "tracing-core 0.1.34", "tracing-futures 0.2.5", "tracing-limit", "tracing-subscriber", @@ -12388,7 +12675,7 @@ dependencies = [ "warp", "windows-service", "wiremock", - "zstd 0.13.2", + "zstd 0.13.3", ] [[package]] @@ -12400,7 +12687,7 @@ dependencies = [ "clap", "futures 0.3.31", "graphql_client", - "reqwest 0.11.26", + "reqwest 0.11.27", "serde", "serde_json", "tokio", @@ -12464,7 +12751,7 @@ dependencies = [ "crossbeam-utils", "derivative", "futures 0.3.31", - "indexmap 2.11.0", + "indexmap 2.12.0", "metrics", "paste", "pin-project", @@ -12486,16 +12773,16 @@ dependencies = [ "chrono", "chrono-tz", "encoding_rs", - "http 0.2.9", - "indexmap 2.11.0", + "http 0.2.12", + "indexmap 2.12.0", "inventory", "no-proxy", "num-traits", "serde", "serde_json", - "serde_with 3.14.0", + "serde_with 3.15.1", "snafu 0.8.9", - "toml 0.9.5", + "toml 0.9.8", "tracing 0.1.41", "url", "vector-config-common", @@ -12509,11 +12796,11 @@ version = "0.1.0" dependencies = [ "convert_case 0.8.0", "darling 0.20.11", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "serde", "serde_json", - "syn 2.0.106", + "syn 2.0.110", "tracing 0.1.41", ] @@ -12522,11 +12809,11 @@ name = "vector-config-macros" version = "0.1.0" dependencies = [ "darling 0.20.11", - "proc-macro2 1.0.101", - "quote 1.0.40", + "proc-macro2 1.0.103", + "quote 1.0.42", "serde", "serde_derive_internals", - "syn 2.0.106", + "syn 2.0.110", "vector-config", "vector-config-common", ] @@ -12552,9 +12839,9 @@ dependencies = [ "futures 0.3.31", "futures-util", "headers", - "http 0.2.9", + "http 0.2.12", "hyper-proxy", - "indexmap 2.11.0", + "indexmap 2.12.0", "inventory", "ipnet", "metrics", @@ -12567,7 +12854,7 @@ dependencies = [ "noisy_float", "openssl", "ordered-float 4.6.0", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "pin-project", "proptest", "prost 0.12.6", @@ -12584,7 +12871,7 @@ dependencies = [ "security-framework 3.5.1", "serde", "serde_json", - "serde_with 3.14.0", + "serde_with 3.15.1", "serde_yaml", "similar-asserts", "smallvec", @@ -12595,7 +12882,7 @@ dependencies = [ "tokio-stream", "tokio-test", "tokio-util", - "toml 0.9.5", + "toml 0.9.8", "tonic 0.11.0", "tracing 0.1.41", "tracing-subscriber", @@ -12659,7 +12946,7 @@ dependencies = [ "tokio-util", "tower 0.5.2", "tracing 0.1.41", - "twox-hash", + "twox-hash 2.1.2", "vector-common", "vector-core", ] @@ -12747,7 +13034,7 @@ version = "0.1.0" dependencies = [ "cargo-lock", "enrichment", - "getrandom 0.2.15", + "getrandom 0.2.16", "gloo-utils", "serde", "vector-vrl-functions", @@ -12758,20 +13045,14 @@ dependencies = [ [[package]] name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "void" -version = "1.0.2" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vrl" -version = "0.28.0" -source = "git+https://github.com/vectordotdev/vrl.git?branch=main#d6cae023d596fdc73bf19501498e2db962fe1d54" +version = "0.28.1" +source = "git+https://github.com/vectordotdev/vrl.git?branch=main#bddc7868c707651beef4c875f857b505f5e1a695" dependencies = [ "aes", "aes-siv", @@ -12809,10 +13090,10 @@ dependencies = [ "grok", "hex", "hmac", - "hostname 0.4.0", + "hostname 0.4.1", "iana-time-zone", - "idna 1.0.3", - "indexmap 2.11.0", + "idna 1.1.0", + "indexmap 2.12.0", "indoc", "influxdb-line-protocol", "ipcrypt-rs", @@ -12846,7 +13127,7 @@ dependencies = [ "quoted_printable", "rand 0.8.5", "regex", - "reqwest 0.12.9", + "reqwest 0.12.24", "reqwest-middleware", "reqwest-retry", "roxmltree", @@ -12876,7 +13157,7 @@ dependencies = [ "webbrowser", "woothee", "xxhash-rust", - "zstd 0.13.2", + "zstd 0.13.3", ] [[package]] @@ -12896,24 +13177,24 @@ dependencies = [ [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] [[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 = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -12938,8 +13219,8 @@ dependencies = [ "futures-channel", "futures-util", "headers", - "http 0.2.9", - "hyper 0.14.28", + "http 0.2.12", + "hyper 0.14.32", "log", "mime", "mime_guess", @@ -12964,17 +13245,17 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.13.3+wasi-0.2.2" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] @@ -12985,79 +13266,67 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.38" +version = "0.4.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ - "quote 1.0.40", + "quote 1.0.42", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", - "wasm-bindgen-backend", + "bumpalo", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" dependencies = [ "unicode-ident", ] [[package]] name = "wasm-streams" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -13083,9 +13352,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -13103,32 +13372,40 @@ dependencies = [ [[package]] name = "webbrowser" -version = "1.0.0" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b6f804e41d0852e16d2eaee61c7e4f7d3e8ffdb7b8ed85886aeb0791fe9fcd" +checksum = "00f1243ef785213e3a32fa0396093424a3a6ea566f9948497e5a2309261a4c97" dependencies = [ - "core-foundation 0.9.3", - "home", + "core-foundation 0.10.1", "jni", "log", "ndk-context", - "objc", - "raw-window-handle", + "objc2", + "objc2-foundation", "url", "web-sys", ] [[package]] name = "webpki-roots" -version = "0.25.2" +version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.1" +version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.4", +] + +[[package]] +name = "webpki-roots" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" dependencies = [ "rustls-pki-types", ] @@ -13142,29 +13419,28 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.40", + "rustix 0.38.44", ] [[package]] name = "which" -version = "5.0.0" +version = "7.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bf3ea8596f3a0dd5980b46430f2058dfe2c36a27ccfbb1845d6fbfcd9ba6e14" +checksum = "24d643ce3fd3e5b54854602a080f34fb10ab75e0b813ee32d00ca2b44fa74762" dependencies = [ "either", - "home", - "once_cell", - "rustix 0.38.40", - "windows-sys 0.48.0", + "env_home", + "rustix 1.1.2", + "winsafe", ] [[package]] name = "whoami" -version = "1.5.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fec781d48b41f8163426ed18e8fc2864c12937df9ce54c88ede7bd47270893e" +checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" dependencies = [ - "redox_syscall 0.4.1", + "libredox", "wasite", "web-sys", ] @@ -13177,9 +13453,9 @@ checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" [[package]] name = "widestring" -version = "1.0.2" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" [[package]] name = "winapi" @@ -13199,11 +13475,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "winapi", + "windows-sys 0.61.2", ] [[package]] @@ -13214,133 +13490,123 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" -dependencies = [ - "windows-core 0.52.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows" -version = "0.60.0" +version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddf874e74c7a99773e62b1c671427abf01a425e77c3d3fb9fb1e4883ea934529" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ "windows-collections", - "windows-core 0.60.1", + "windows-core 0.61.2", "windows-future", - "windows-link", + "windows-link 0.1.3", "windows-numerics", ] [[package]] name = "windows-collections" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5467f79cc1ba3f52ebb2ed41dbb459b8e7db636cc3429458d9a852e15bc24dec" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core 0.60.1", + "windows-core 0.61.2", ] [[package]] name = "windows-core" -version = "0.52.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-targets 0.52.6", + "windows-implement", + "windows-interface", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", ] [[package]] name = "windows-core" -version = "0.60.1" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca21a92a9cae9bf4ccae5cf8368dce0837100ddf6e6d57936749e85f152f6247" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", - "windows-link", - "windows-result 0.3.1", - "windows-strings 0.3.1", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", ] [[package]] name = "windows-future" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a787db4595e7eb80239b74ce8babfb1363d8e343ab072f2ffe901400c03349f0" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "windows-core 0.60.1", - "windows-link", + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", ] [[package]] name = "windows-implement" -version = "0.59.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "windows-link" -version = "0.1.0" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] -name = "windows-numerics" -version = "0.1.1" +name = "windows-link" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "005dea54e2f6499f2cee279b8f703b3cf3b5734a2d8d21867c8f44003182eeed" -dependencies = [ - "windows-core 0.60.1", - "windows-link", -] +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] -name = "windows-registry" +name = "windows-numerics" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", + "windows-core 0.61.2", + "windows-link 0.1.3", ] [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-targets 0.52.6", + "windows-link 0.1.3", ] [[package]] name = "windows-result" -version = "0.3.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06374efe858fab7e4f881500e6e86ec8bc28f9462c47e5a9941a0142ad86b189" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -13349,28 +13615,27 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "193cae8e647981c35bc947fdd57ba7928b1fa0d4a79305f6dd2dc55221ac35ac" dependencies = [ - "bitflags 2.9.0", - "widestring 1.0.2", + "bitflags 2.10.0", + "widestring 1.2.1", "windows-sys 0.59.0", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", + "windows-link 0.1.3", ] [[package]] name = "windows-strings" -version = "0.3.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -13415,7 +13680,16 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.2", + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -13466,18 +13740,28 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.2" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" 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", + "windows-link 0.1.3", ] [[package]] @@ -13500,9 +13784,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -13524,9 +13808,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -13548,9 +13832,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -13560,9 +13844,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -13584,9 +13868,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -13608,9 +13892,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -13632,9 +13916,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -13656,24 +13940,15 @@ 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.5.18" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "176b6138793677221d420fd2f0aeeced263f197688b36484660da767bca2fa32" -dependencies = [ - "memchr", -] +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.10" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -13688,6 +13963,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "winsafe" +version = "0.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" + [[package]] name = "wiremock" version = "0.6.5" @@ -13700,7 +13981,7 @@ dependencies = [ "futures 0.3.31", "http 1.3.1", "http-body-util", - "hyper 1.7.0", + "hyper 1.8.0", "hyper-util", "log", "once_cell", @@ -13712,13 +13993,10 @@ dependencies = [ ] [[package]] -name = "wit-bindgen-rt" -version = "0.33.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" -dependencies = [ - "bitflags 2.9.0", -] +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "woothee" @@ -13730,17 +14008,11 @@ dependencies = [ "regex", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "wyz" @@ -13765,11 +14037,10 @@ checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" [[package]] name = "yoke" -version = "0.7.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -13777,88 +14048,79 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", "synstructure", ] [[package]] name = "zerocopy" -version = "0.7.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" -dependencies = [ - "zerocopy-derive 0.7.31", -] - -[[package]] -name = "zerocopy" -version = "0.8.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b8c07a70861ce02bad1607b5753ecb2501f67847b9f9ada7c160fff0ec6300c" -dependencies = [ - "zerocopy-derive 0.8.16", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.31" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.16" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5226bc9a9a9836e7428936cde76bb6b22feea1a8bfdbc0d241136e4d13417e25" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "zerofrom" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -13867,20 +14129,20 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ - "proc-macro2 1.0.101", - "quote 1.0.40", - "syn 2.0.106", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.110", ] [[package]] name = "zlib-rs" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626bd9fa9734751fc50d6060752170984d7053f5a39061f524cda68023d4db8a" +checksum = "2f06ae92f42f5e5c42443fd094f245eb656abf56dd7cce9b8b263236565e00f2" [[package]] name = "zstd" @@ -13893,11 +14155,11 @@ dependencies = [ [[package]] name = "zstd" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" dependencies = [ - "zstd-safe 7.2.1", + "zstd-safe 7.2.4", ] [[package]] @@ -13912,19 +14174,25 @@ dependencies = [ [[package]] name = "zstd-safe" -version = "7.2.1" +version = "7.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" +version = "2.0.16+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" dependencies = [ + "bindgen", "cc", "pkg-config", ] + +[[patch.unused]] +name = "tokio-util" +version = "0.7.13" +source = "git+https://github.com/vectordotdev/tokio?branch=tokio-util-0.7.13-framed-read-continue-on-error#b4bdfda8fe8aa24eba36de0d60063b14f30c7fe7" diff --git a/Cargo.toml b/Cargo.toml index 14e1e219f1297..2a5e8e0db4f06 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -203,6 +203,7 @@ mock_instant = { version = "0.6" } serial_test = { version = "3.2" } [dependencies] +reqwest = { version = "0.11", features = ["json"] } cfg-if.workspace = true clap.workspace = true indoc.workspace = true @@ -291,6 +292,7 @@ azure_storage_blobs = { version = "0.21", default-features = false, optional = t # Needed to bridge with outdated version of azure_core used in azure_storage* azure_core_for_storage = { package = "azure_core", version = "0.21.0", default-features = false, features = ["enable_reqwest", "hmac_openssl"] } +azure_storage_queues = { version = "0.17", default-features = false, optional = true } # OpenDAL @@ -424,6 +426,7 @@ url.workspace = true warp = { version = "0.3.7", default-features = false } zstd = { version = "0.13.0", default-features = false } arr_macro = { version = "0.2.1" } +anyhow = "1.0.82" # depending on fork for bumped nix dependency # https://github.com/heim-rs/heim/pull/360 @@ -460,6 +463,8 @@ azure_core = { version = "0.25", default-features = false, features = ["reqwest" azure_identity = { version = "0.25", default-features = false, features = ["reqwest"] } azure_storage = { version = "0.21", default-features = false, features = ["enable_reqwest", "hmac_openssl"] } azure_storage_blobs = { version = "0.21", default-features = false, features = ["enable_reqwest", "hmac_openssl", "azurite_workaround"] } +azure_storage_queues = { version = "0.17", default-features = false } + base64 = "0.22.1" criterion = { version = "0.7.0", features = ["html_reports", "async_tokio"] } itertools.workspace = true @@ -595,6 +600,7 @@ sources-logs = [ "sources-aws_kinesis_firehose", "sources-aws_s3", "sources-aws_sqs", + "sources-azure_blob", "sources-datadog_agent", "sources-demo_logs", "sources-docker_logs", @@ -648,6 +654,8 @@ sources-aws_kinesis_firehose = ["dep:base64"] sources-aws_s3 = ["aws-core", "dep:aws-sdk-sqs", "dep:aws-sdk-s3", "dep:async-compression", "sources-aws_sqs", "tokio-util/io"] sources-aws_sqs = ["aws-core", "dep:aws-sdk-sqs"] sources-datadog_agent = ["sources-utils-http-encoding", "protobuf-build", "dep:prost"] +sources-azure_blob= ["dep:azure_storage_queues"] + sources-demo_logs = ["dep:fakedata"] sources-dnstap = ["sources-utils-net-tcp", "dep:base64", "dep:hickory-proto", "dep:dnsmsg-parser", "dep:dnstap-parser", "protobuf-build", "dep:prost"] sources-docker_logs = ["docker"] @@ -948,7 +956,8 @@ aws-integration-tests = [ ] azure-integration-tests = [ - "azure-blob-integration-tests" + "azure-blob-integration-tests", + "azure-blob-source-integration-tests" ] aws-cloudwatch-logs-integration-tests = ["sinks-aws_cloudwatch_logs"] @@ -962,6 +971,7 @@ aws-sqs-integration-tests = ["sinks-aws_sqs"] aws-sns-integration-tests = ["sinks-aws_sns"] axiom-integration-tests = ["sinks-axiom"] azure-blob-integration-tests = ["sinks-azure_blob"] +azure-blob-source-integration-tests = ["sources-azure_blob"] chronicle-integration-tests = ["sinks-gcp"] clickhouse-integration-tests = ["sinks-clickhouse"] databend-integration-tests = ["sinks-databend"] diff --git a/lib/codecs/Cargo.toml b/lib/codecs/Cargo.toml index 741c95b84a895..43955adb685bd 100644 --- a/lib/codecs/Cargo.toml +++ b/lib/codecs/Cargo.toml @@ -1,9 +1,9 @@ [package] name = "codecs" -version = "0.1.0" authors = ["Vector Contributors "] edition = "2024" publish = false +version = "0.1.0" [[bin]] name = "generate-avro-fixtures" @@ -22,6 +22,7 @@ lookup = { package = "vector-lookup", path = "../vector-lookup", default-feature memchr = { version = "2", default-features = false } opentelemetry-proto = { path = "../opentelemetry-proto", optional = true } ordered-float.workspace = true +parquet = {version = "39.0.0", default-feature = false} prost.workspace = true prost-reflect.workspace = true rand.workspace = true diff --git a/lib/codecs/src/encoding/format/mod.rs b/lib/codecs/src/encoding/format/mod.rs index 9377cdca5d906..66902f5121cd8 100644 --- a/lib/codecs/src/encoding/format/mod.rs +++ b/lib/codecs/src/encoding/format/mod.rs @@ -15,11 +15,13 @@ mod native_json; #[cfg(feature = "opentelemetry")] mod otlp; mod protobuf; +mod parquet; mod raw_message; mod text; use std::fmt::Debug; +pub use self::parquet::{ParquetSerializer, ParquetSerializerConfig, ParquetSerializerOptions}; pub use avro::{AvroSerializer, AvroSerializerConfig, AvroSerializerOptions}; pub use cef::{CefSerializer, CefSerializerConfig}; use dyn_clone::DynClone; diff --git a/lib/codecs/src/encoding/format/parquet.rs b/lib/codecs/src/encoding/format/parquet.rs new file mode 100644 index 0000000000000..9b5fdf5f2174b --- /dev/null +++ b/lib/codecs/src/encoding/format/parquet.rs @@ -0,0 +1,1317 @@ +use core::panic; +use std::{io, sync::Arc}; + +use bytes::{BufMut, BytesMut}; +use parquet::{ + basic::{LogicalType, Repetition, Type as PhysicalType}, + column::writer::{ColumnWriter::*, ColumnWriterImpl}, + data_type::DataType, + errors::ParquetError, + file::{properties::WriterProperties, writer::SerializedFileWriter}, + schema::{ + parser::parse_message_type, + types::{BasicTypeInfo, ColumnDescriptor, Type, TypePtr}, + }, +}; +use serde::{Deserialize, Serialize}; +use snafu::*; +use tokio_util::codec::Encoder; +use tracing::error; + +use vector_config::configurable_component; +use vector_core::{ + config, + event::{Event, Value}, + schema, +}; + +use crate::encoding::BuildError; + +/// Errors that can occur during Parquet serialization. +#[derive(Debug, Snafu)] +pub enum ParquetSerializerError { + #[snafu(display(r#"Event does not contain required field. field = "{}""#, field))] + MissingField { + field: String, + }, + #[snafu(display( + r#"Event contains a value with an invalid type. field = "{}" type = "{}" expected type = "{}""#, + field, + actual_type, + expected_type + ))] + InvalidValueType { + field: String, + actual_type: String, + expected_type: String, + }, + #[snafu(display("Failed to write. error: {}", error))] + ParquetError { + error: ParquetError, + }, + IoError { + source: io::Error, + }, +} + +impl ParquetSerializerError { + fn invalid_type( + desc: &ColumnDescriptor, + value: &Value, + expected: &str, + ) -> ParquetSerializerError { + ParquetSerializerError::InvalidValueType { + field: desc.name().to_string(), + actual_type: value.kind_str().to_string(), + expected_type: expected.to_string(), + } + } +} + +impl From for ParquetSerializerError { + fn from(error: ParquetError) -> Self { + Self::ParquetError { error } + } +} + +impl From for ParquetSerializerError { + fn from(source: io::Error) -> Self { + Self::IoError { source } + } +} + +/// Config used to build a `ParquetSerializer`. +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct ParquetSerializerConfig { + /// Options for the Parquet serializer. + pub parquet: ParquetSerializerOptions, +} + +impl ParquetSerializerConfig { + /// Creates a new `ParquetSerializerConfig`. + pub const fn new(schema: String) -> Self { + Self { + parquet: ParquetSerializerOptions { schema }, + } + } + + /// Build the `ParquetSerializerConfig` from this configuration. + pub fn build(&self) -> Result { + let schema = parse_message_type(&self.parquet.schema) + .map_err(|error| format!("Failed building Parquet serializer: {}", error))?; + self.validate_logical_schema(&schema) + .map_err(|error| format!("Failed building Parquet serializer: {}", error))?; + Ok(ParquetSerializer { + schema: Arc::new(schema), + }) + } + + /// The data type of events that are accepted by `ParquetSerializer`. + pub fn input_type(&self) -> config::DataType { + config::DataType::Log + } + + /// The schema required by the serializer. + pub fn schema_requirement(&self) -> schema::Requirement { + // TODO: Convert the Parquet schema to a vector schema requirement. + // NOTE: This isn't yet doable. We don't have meanings to + // to specify for requirement. + schema::Requirement::empty() + } + + fn validate_logical_schema(&self, schema: &Type) -> Result<(), String> { + let info = schema.get_basic_info(); + match info.logical_type() { + // Validate LIST types + Some(LogicalType::List) => { + Self::not_repeated(schema, "LIST")?; + let list = Self::single_child(schema, "LIST")?; + + Self::repeated(list, "child of LIST")?; + let element = Self::single_child(list, "list of LIST")?; + + Self::not_repeated(element, "element of LIST")?; + self.validate_logical_schema(element)?; + } + // Validate MAP types + Some(LogicalType::Map) => { + Self::not_repeated(schema, "MAP")?; + let key_value = Self::single_child(schema, "MAP")?; + + Self::repeated(key_value, "child of MAP")?; + match key_value.get_fields().len() { + 1 | 2 => (), + _ => { + return Err(format!( + "Invalid MAP type. key_value of MAP type must have one or two children, found {}.", + key_value.get_fields().len() + )); + } + } + + let mut found_key = false; + for element in key_value.get_fields() { + match element.name() { + "key" => { + found_key = true; + Self::required(element, "key of MAP")?; + if !element.is_primitive() + || element.get_physical_type() != PhysicalType::BYTE_ARRAY + { + return Err( + "Invalid primitive type for key of MAP type. Must be binary." + .to_string(), + ); + } + } + _ => self.validate_logical_schema(element)?, + } + } + if !found_key { + return Err( + "Invalid MAP type. key_value of MAP type must have a child named \"key\"." + .to_string(), + ); + } + } + _ if schema.is_group() => { + for field in schema.get_fields() { + self.validate_logical_schema(field)?; + } + } + _ => (), + } + Ok(()) + } + + fn not_repeated(ty: &Type, kind: &str) -> Result<(), String> { + let info = ty.get_basic_info(); + if info.has_repetition() && info.repetition() == Repetition::REPEATED { + Err(format!( + "Invalid repetition for {kind} type. repetition = {:?}", + info.repetition() + )) + } else { + Ok(()) + } + } + + fn repeated(ty: &Type, kind: &str) -> Result<(), String> { + let info = ty.get_basic_info(); + if !info.has_repetition() || info.repetition() != Repetition::REPEATED { + Err(format!( + "Invalid repetition for {kind} type. repetition = {:?}", + if info.has_repetition() { + info.repetition() + } else { + Repetition::REQUIRED + } + )) + } else { + Ok(()) + } + } + + fn required(ty: &Type, kind: &str) -> Result<(), String> { + let info = ty.get_basic_info(); + if !info.has_repetition() || info.repetition() == Repetition::REQUIRED { + Err(format!( + "Invalid repetition for {kind} type. repetition = {:?}", + info.repetition() + )) + } else { + Ok(()) + } + } + + fn single_child<'a>(ty: &'a Type, kind: &str) -> Result<&'a Type, String> { + let len = ty.get_fields().len(); + if len != 1 { + Err(format!( + "Invalid {kind} type. Expected one child, found {len}.", + )) + } else { + Ok(ty.get_fields().get(0).expect("Should have a child.")) + } + } +} + +/// Options for the Parquet serializer. +#[configurable_component] +#[derive(Clone, Debug)] +pub struct ParquetSerializerOptions { + /// The Parquet schema. + #[configurable(metadata(docs::examples = r#"message test { + required group data { + required binary name; + repeated int64 values; + } + }"#))] + pub schema: String, +} + +/// Serializer that converts `Vec` to bytes using the Apache Parquet format. +#[derive(Debug, Clone)] +pub struct ParquetSerializer { + schema: TypePtr, +} + +impl ParquetSerializer { + /// Creates a new `ParquetSerializer`. + pub const fn new(schema: TypePtr) -> Self { + Self { schema } + } +} + +impl ParquetSerializer { + fn process( + &self, + events: &[Event], + desc: &ColumnDescriptor, + extractor: impl Fn(&Value) -> Result<::T, ParquetSerializerError>, + writer: &mut ColumnWriterImpl, + ) -> Result<(), ParquetSerializerError> { + let mut column = Column::<::T, _>::new(&*self.schema, desc, extractor); + column.extract_column(events)?; + let written_values = writer.write_batch( + &column.values, + column.def_levels.as_ref().map(|vec| vec.as_slice()), + column.rep_levels.as_ref().map(|vec| vec.as_slice()), + )?; + + assert_eq!(written_values, column.values.len()); + Ok(()) + } +} + +impl Encoder> for ParquetSerializer { + type Error = vector_common::Error; + + /// Builds columns from events and writes them to the writer. + /// + /// Expects that all events satisfy the schema, else whole batch can fail. + fn encode(&mut self, events: Vec, buffer: &mut BytesMut) -> Result<(), Self::Error> { + // Encode events + let props = Arc::new(WriterProperties::builder().build()); + let mut parquet_writer = + SerializedFileWriter::new(buffer.writer(), self.schema.clone(), props)?; + + let mut row_group_writer = parquet_writer.next_row_group()?; + while let Some(mut column_writer) = row_group_writer.next_column()? { + match column_writer.untyped() { + BoolColumnWriter(ref mut writer) => { + let desc = writer.get_descriptor().clone(); + self.process( + &events, + &desc, + |value| match value { + Value::Boolean(value) => Ok(*value), + _ => Err(ParquetSerializerError::invalid_type( + &desc, value, "boolean", + )), + }, + writer, + )? + } + Int64ColumnWriter(writer) => { + let desc = writer.get_descriptor().clone(); + self.process( + &events, + &desc, + |value| match value { + Value::Integer(value) => Ok(*value), + _ => Err(ParquetSerializerError::invalid_type( + &desc, value, "integer", + )), + }, + writer, + )? + } + DoubleColumnWriter(writer) => { + let desc = writer.get_descriptor().clone(); + self.process( + &events, + &desc, + |value| match value { + Value::Float(value) => Ok(value.into_inner()), + _ => Err(ParquetSerializerError::invalid_type(&desc, value, "float")), + }, + writer, + )? + } + ByteArrayColumnWriter(writer) => { + let desc = writer.get_descriptor().clone(); + self.process( + &events, + &desc, + |value| match value { + Value::Bytes(value) => Ok(value.clone().into()), + _ => Err(ParquetSerializerError::invalid_type(&desc, value, "string")), + }, + writer, + )? + } + FixedLenByteArrayColumnWriter(_) => { + panic!("Fixed len byte array is not supported."); + } + Int32ColumnWriter(_) => panic!("Int32 is not supported."), + Int96ColumnWriter(_) => panic!("Int96 is not supported."), + FloatColumnWriter(_) => panic!("Float32 is not supported."), + } + column_writer.close()?; + } + + row_group_writer.close()?; + parquet_writer.close()?; + + Ok(()) + } +} + +struct Column<'a, T, F: Fn(&Value) -> Result> { + levels: Vec<&'a Type>, + extract: F, + values: Vec, + // If present encodes definition level. From 0 to column.max_def_level() inclusive. + // With any value bellow max encoding null on that level. + // One thing to keep in mind, if a column is required on some "level" then that level is not counted here. + // This is needed when values are optional. + // In case of null, that value is skipped in values. + def_levels: Option>, + // If present encodes repetition level. + // From 0 to column.max_rep_level() inclusive. With 0 starting a new record and any value bellow max encoding + // starting new list at that level. With max level just adding element to leaf list. + // This is needed when values are repeated. Where that repetition can have multiple nested levels. + rep_levels: Option>, +} + +impl<'a, T, F: Fn(&Value) -> Result> Column<'a, T, F> { + fn new(schema: &'a Type, column: &'a ColumnDescriptor, extract: F) -> Self { + let mut levels = vec![schema]; + for part in column.path().parts() { + match &levels[levels.len() - 1] { + Type::GroupType { fields, .. } => { + let field = fields + .iter() + .find(|field| field.name() == part) + .expect("Field not found in schema."); + levels.push(field); + } + Type::PrimitiveType { .. } => unreachable!(), + } + } + + let def_levels = if levels.iter().any(|ty| ty.is_optional()) { + Some(Vec::new()) + } else { + None + }; + + let rep_levels = if levels.iter().any(|ty| { + let info = ty.get_basic_info(); + info.has_repetition() && info.repetition() == Repetition::REPEATED + }) { + Some(Vec::new()) + } else { + None + }; + + Self { + levels, + extract, + values: Vec::new(), + def_levels, + rep_levels, + } + } + + fn extract_column(&mut self, events: &[Event]) -> Result<(), ParquetSerializerError> { + for event in events { + let res = match event { + Event::Log(log) => { + self.extract_value(log.value(), Level::root()) + } + Event::Trace(trace) => { + self.extract_value(trace.value(), Level::root()) + } + Event::Metric(_) => { + panic!("Metrics are not supported."); + } + }; + res.inspect_err(|error| { + // event to json string + match serde_json::to_string(&event) { + Ok(event) => error!( + error = ?error, + event = event, + ), + Err(e) => error!( + error = ?error, + event = ?event, + serde_error = %e, + ), + } + })?; + } + Ok(()) + } + + /// Will push at least one value, or error. + fn extract_value(&mut self, value: &Value, level: Level) -> Result<(), ParquetSerializerError> { + if let Some(part) = self.levels.get(level.level) { + let sub = match value { + Value::Object(object) => object.get(part.name()), + Value::Null => None, + // Invalid type, error + value => { + return Err(ParquetSerializerError::InvalidValueType { + field: self.path(level), + actual_type: value.kind_str().to_string(), + expected_type: "object".to_string(), + }); + } + }; + + self.process_value(sub, level) + } else if matches!(value, Value::Null) { + self.push_value(None, level.undefine()); + Ok(()) + } else { + let value = (self.extract)(value)?; + self.push_value(Some(value), level); + Ok(()) + } + } + + /// Will push at least one value, or error. + fn process_value( + &mut self, + value: Option<&Value>, + level: Level, + ) -> Result<(), ParquetSerializerError> { + let part = self + .levels + .get(level.level) + .expect("We should have checked this before hand."); + match value { + Some(Value::Null) | None if part.is_optional() => { + self.push_value(None, level); + Ok(()) + } + // Illegal null, error + Some(Value::Null) | None => Err(ParquetSerializerError::MissingField { + field: self.path(level), + }), + Some(value) => { + let info = part.get_basic_info(); + match info.logical_type() { + Some(LogicalType::List) => { + if let Value::Array(array) = value { + let list_level = level.descend(info); + let element_level = list_level.descend_repeated(); + + if array.is_empty() { + self.push_value(None, list_level); + } else { + let mut now = element_level; + for element in array { + self.process_value(Some(element), now)?; + now = now.next(); + } + } + + Ok(()) + } else { + return Err(ParquetSerializerError::InvalidValueType { + field: self.path(level), + actual_type: value.kind_str().to_string(), + expected_type: "array".to_string(), + }); + } + } + Some(LogicalType::Map) => { + if let Value::Object(object) = value { + let key_value = level.descend(info); + let element_level = key_value.descend_repeated(); + + if self + .levels + .get(element_level.level) + .expect("This must be valid MAP") + .name() + == "key" + { + // Key field + if object.is_empty() { + self.push_value(None, key_value); + } else { + let mut now = element_level; + for key in object.keys() { + let value = (self.extract)(&Value::from(key.as_str()))?; + self.push_value(Some(value), now.descend_required()); + now = now.next(); + } + } + } else { + // Value field + if object.is_empty() { + self.push_value(None, key_value); + } else { + let mut now = element_level; + for value in object.values() { + self.process_value(Some(value), now)?; + now = now.next(); + } + } + } + + Ok(()) + } else { + return Err(ParquetSerializerError::InvalidValueType { + field: self.path(level), + actual_type: value.kind_str().to_string(), + expected_type: "object".to_string(), + }); + } + } + _ => self.extract_flat(value, level.descend(info)), + } + } + } + } + + /// Will push at least one value, or error. + fn extract_flat(&mut self, value: &Value, level: Level) -> Result<(), ParquetSerializerError> { + match value { + Value::Array(array) if level.repeated => { + if array.is_empty() { + self.push_value(None, level.undefine()); + } else { + let mut now = level; + for value in array { + self.extract_value(value, now)?; + now = now.next(); + } + } + + Ok(()) + } + _ => self.extract_value(value, level), + } + } + + fn push_value(&mut self, value: Option, level: Level) { + if let Some(rep_levels) = &mut self.rep_levels { + rep_levels.push(level.start_rep_level); + } + if let Some(def_levels) = &mut self.def_levels { + def_levels.push(level.def_level); + } + if let Some(value) = value { + self.values.push(value); + } + } + + fn path(&self, level: Level) -> String { + let mut path = String::new(); + for level in &self.levels[1..level.level] { + path.push_str(level.name()); + path.push('.'); + } + path.push_str(self.levels[level.level].name()); + path + } +} + +#[derive(Debug, Clone, Copy, Eq, PartialEq)] +struct Level { + start_rep_level: i16, + rep_level: i16, + def_level: i16, + level: usize, + // If this level can be null + optional: bool, + // If this level is repeated + repeated: bool, +} + +impl Level { + fn root() -> Self { + Self { + start_rep_level: 0, + rep_level: 0, + def_level: 0, + level: 1, + optional: false, + repeated: false, + } + } + + fn next(self) -> Self { + assert!(self.repeated); + Self { + start_rep_level: self.rep_level, + ..self + } + } + + /// Descend implies that the level is defined. + fn descend(self, info: &BasicTypeInfo) -> Self { + if info.has_repetition() { + match info.repetition() { + Repetition::OPTIONAL => self.descend_optional(), + Repetition::REPEATED => self.descend_repeated(), + Repetition::REQUIRED => self.descend_required(), + } + } else { + self.descend_required() + } + } + + fn descend_required(self) -> Self { + Self { + level: self.level + 1, + repeated: false, + optional: false, + ..self + } + } + + fn descend_optional(self) -> Self { + Self { + def_level: self.def_level + 1, + level: self.level + 1, + repeated: false, + optional: true, + ..self + } + } + + fn descend_repeated(self) -> Self { + Self { + rep_level: self.rep_level + 1, + def_level: self.def_level + 1, + level: self.level + 1, + repeated: true, + optional: true, + ..self + } + } + + /// Undefine by one level + fn undefine(self) -> Self { + Self { + def_level: self.def_level - 1, + ..self + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use bytes::Bytes; + use parquet::{ + column::reader::{ColumnReader, ColumnReaderImpl}, + file::reader::*, + file::serialized_reader::SerializedFileReader, + schema::parser::parse_message_type, + }; + use similar_asserts::assert_eq; + use std::panic; + use std::{collections::HashSet, sync::Arc}; + use vector_core::event::LogEvent; + use vrl::value::btreemap; + + macro_rules! log_event { + ($($key:expr => $value:expr),* $(,)?) => { + #[allow(unused_variables)] + { + let mut event = Event::Log(LogEvent::default()); + let log = event.as_mut_log(); + $( + log.insert($key, $value); + )* + event + } + }; + } + + fn assert_column( + count: usize, + expect_values: &[::T], + expect_rep_levels: Option<&[i16]>, + expect_def_levels: Option<&[i16]>, + mut column_reader: ColumnReaderImpl, + ) where + ::T: Default, + { + let mut values = Vec::new(); + values.resize(count, ::T::default()); + let mut def_levels = Vec::new(); + def_levels.resize(count, 0); + let mut rep_levels = Vec::new(); + rep_levels.resize(count, 0); + let (read, level) = column_reader + .read_batch( + count, + Some(def_levels.as_mut_slice()).filter(|_| expect_def_levels.is_some()), + Some(rep_levels.as_mut_slice()).filter(|_| expect_rep_levels.is_some()), + &mut values, + ) + .unwrap(); + + assert_eq!(level, count); + assert_eq!(&values[..read], expect_values); + if expect_rep_levels.is_some() { + assert_eq!(rep_levels, expect_rep_levels.unwrap()); + } + if expect_def_levels.is_some() { + assert_eq!(def_levels, expect_def_levels.unwrap()); + } + } + + fn validate( + schema: &str, + events: Vec, + num_columns: usize, + validate: impl Fn(usize, &str, &dyn RowGroupReader), + ) { + let schema = Arc::new(parse_message_type(schema).unwrap()); + let mut encoder = ParquetSerializer::new(schema); + + let mut buffer = BytesMut::new(); + encoder.encode(events, &mut buffer).unwrap(); + + let reader = SerializedFileReader::new(buffer.freeze()).unwrap(); + + let parquet_metadata = reader.metadata(); + assert_eq!(parquet_metadata.num_row_groups(), 1); + + let row_group_reader = reader.get_row_group(0).unwrap(); + assert_eq!(row_group_reader.num_columns(), num_columns); + + let metadata = row_group_reader.metadata(); + let mut visited = HashSet::new(); + for (i, column) in metadata.columns().iter().enumerate() { + let path = column.column_path().string(); + assert!(visited.insert(path.clone())); + validate(i, &path, row_group_reader.as_ref()); + } + + assert_eq!(visited.len(), num_columns); + } + + #[test] + fn test_serialize() { + let message_type = r#" + message test { + required group a { + required boolean b; + optional int64 c; + } + optional group d { + optional int64 e; + } + required group f { + repeated int64 g; + } + required binary h; + repeated group i { + required int64 j; + repeated double k; + } + } + "#; + + let events = vec![ + log_event! { + "a.b" => true, + "a.c" => 2, + "d.e" => 3, + "f.g" => vec![4, 5], + "h" => "hello", + "i" => vec![btreemap! { + "j" => 6, + "k" => vec![7.0, 8.0] + }] + }, + log_event! { + "a.b" => false, + "f" => Value::Object(Default::default()), + "h" => "world", + "i" => vec![ + btreemap! { + "j" => 9, + "k" => vec![10.0] + }, btreemap! { + "j" => 11, + }] + }, + ]; + + validate( + message_type, + events, + 7, + |i, path, row_group_reader| match path { + "a.b" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::BoolColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column(2, &[true, false], None, None, reader); + } + "a.c" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::Int64ColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column(2, &[2], None, Some(&[1, 0]), reader); + } + "d.e" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::Int64ColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column(2, &[3], None, Some(&[2, 0]), reader); + } + "f.g" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::Int64ColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column(3, &[4, 5], Some(&[0, 1, 0]), Some(&[1, 1, 0]), reader); + } + "h" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::ByteArrayColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column( + 2, + &[Bytes::from("hello").into(), Bytes::from("world").into()], + None, + None, + reader, + ); + } + "i.j" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::Int64ColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column(3, &[6, 9, 11], Some(&[0, 0, 1]), Some(&[1, 1, 1]), reader); + } + "i.k" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::DoubleColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column( + 4, + &[7.0, 8.0, 10.0], + Some(&[0, 2, 0, 1]), + Some(&[2, 2, 2, 1]), + reader, + ); + } + _ => panic!("Unexpected column"), + }, + ); + } + + #[test] + fn test_value_null() { + let message_type = r#" + message test { + optional group geo{ + optional binary city_name (UTF8); + } + } + "#; + + let events = vec![ + log_event! { + "geo.city_name" => "hello", + }, + log_event! { + "geo.city_name" => Value::Null, + }, + ]; + + validate( + message_type, + events, + 1, + |i, path, row_group_reader| match path { + "geo.city_name" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::ByteArrayColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column( + 2, + &[Bytes::from("hello").into()], + None, + Some(&[2, 1]), + reader, + ); + } + _ => panic!("Unexpected column"), + }, + ); + } + + #[test] + fn test_value_null_stack_optional() { + let message_type = r#" + message test { + optional group a{ + optional group b{ + optional boolean c; + } + } + } + "#; + + let events = vec![ + log_event! {}, + log_event! {"a" => Value::Null}, + log_event! {"a.b" => Value::Null}, + log_event! {"a.b.c" => Value::Null}, + log_event! {"a.b.c" => Value::Boolean(true)}, + ]; + + validate( + message_type, + events, + 1, + |i, path, row_group_reader| match path { + "a.b.c" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::BoolColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column(5, &[true], None, Some(&[0, 0, 1, 2, 3]), reader); + } + _ => panic!("Unexpected column"), + }, + ); + } + + #[test] + fn test_value_null_repeated_optional() { + let message_type = r#" + message test { + repeated group a{ + optional boolean b; + } + } + "#; + + let events = vec![ + log_event! {}, + log_event! {"a" => Value::Null}, + log_event! {"a.b" => Value::Null}, + log_event! {"a.b" => Value::Boolean(false)}, + log_event! {"a" => vec![ + btreemap! { "b" => Value::Null }, + btreemap! { "b" => Value::Boolean(true) } + ]}, + ]; + validate( + message_type, + events, + 1, + |i, path, row_group_reader| match path { + "a.b" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::BoolColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column( + 6, + &[false, true], + Some(&[0, 0, 0, 0, 0, 1]), + Some(&[0, 0, 1, 2, 1, 2]), + reader, + ); + } + _ => panic!("Unexpected column"), + }, + ); + } + + #[test] + fn test_value_null_repeated() { + let message_type = r#" + message test { + repeated boolean a; + } + "#; + + let events = vec![ + log_event! {}, + log_event! {"a" => Value::Null}, + log_event! {"a" => Value::Boolean(false)}, + log_event! {"a" => vec![ + Value::Null, + Value::Boolean(true), + Value::Null, + ]}, + ]; + + validate( + message_type, + events, + 1, + |i, path, row_group_reader| match path { + "a" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::BoolColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column( + 6, + &[false, true], + Some(&[0, 0, 0, 0, 1, 1]), + Some(&[0, 0, 1, 0, 1, 0]), + reader, + ); + } + _ => panic!("Unexpected column"), + }, + ); + } + + #[test] + fn test_value_empty_repeated() { + let message_type = r#" + message test { + repeated boolean a; + } + "#; + + let events = vec![log_event! {"a" => Vec::::new()}]; + + validate( + message_type, + events, + 1, + |i, path, row_group_reader| match path { + "a" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::BoolColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column(1, &[], Some(&[0]), Some(&[0]), reader); + } + _ => panic!("Unexpected column"), + }, + ); + } + + #[test] + fn test_repeated() { + let message_type = r#" + message test { + repeated group answer { + optional binary name (UTF8); + optional INT64 ttl; + } + } + "#; + + let events = vec![log_event! { + "answer" => vec![ + btreemap! { + "name" => "test1", + "ttl" => 0, + }, btreemap! { + "name" => "test2", + "ttl" => 3600, + }] + }]; + + validate( + message_type, + events, + 2, + |i, path, row_group_reader| match path { + "answer.name" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::ByteArrayColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column( + 2, + &[Bytes::from("test1").into(), Bytes::from("test2").into()], + Some(&[0, 1]), + Some(&[2, 2]), + reader, + ); + } + "answer.ttl" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::Int64ColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column(2, &[0, 3600], Some(&[0, 1]), Some(&[2, 2]), reader); + } + _ => panic!("Unexpected column"), + }, + ); + } + + #[test] + fn test_list() { + let message_type = r#" + message test { + optional group answers (LIST){ + repeated group list { + optional boolean element; + } + } + } + "#; + + let events = vec![ + log_event! {}, + log_event! {"answers" => Value::Null}, + log_event! {"answers" => Vec::::new()}, + log_event! {"answers" => vec![ + Value::Null, + Value::Boolean(true), + Value::Null, + ]}, + ]; + + validate( + message_type, + events, + 1, + |i, path, row_group_reader| match path { + "answers.list.element" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::BoolColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column( + 6, + &[true], + Some(&[0, 0, 0, 0, 1, 1]), + Some(&[0, 0, 1, 2, 3, 2]), + reader, + ); + } + _ => panic!("Unexpected column"), + }, + ); + } + + #[test] + fn illegal_list_scheme() { + let config = ParquetSerializerConfig { + parquet: ParquetSerializerOptions { + schema: r#" + message test { + optional group answers (LIST){ + optional group list { + optional boolean element; + } + } + } + "# + .to_string(), + }, + }; + + assert!(config.build().is_err()); + } + + #[test] + fn test_map() { + let message_type = r#" + message test { + optional group answers (MAP){ + repeated group key_value { + required binary key (UTF8); + optional boolean value; + } + } + } + "#; + + let events = vec![ + log_event! {}, + log_event! {"answers" => Value::Null}, + log_event! {"answers" => btreemap!{}}, + log_event! {"answers" => btreemap!{ + "test1" => Value::Null, + "test2" => Value::Boolean(true), + "test3" => Value::Null, + }}, + ]; + + validate( + message_type, + events, + 2, + |i, path, row_group_reader| match path { + "answers.key_value.key" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::ByteArrayColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column( + 6, + &[ + Bytes::from("test1").into(), + Bytes::from("test2").into(), + Bytes::from("test3").into(), + ], + Some(&[0, 0, 0, 0, 1, 1]), + Some(&[0, 0, 1, 2, 2, 2]), + reader, + ); + } + "answers.key_value.value" => { + let reader = match row_group_reader.get_column_reader(i).unwrap() { + ColumnReader::BoolColumnReader(r) => r, + _ => panic!("Wrong column type"), + }; + assert_column( + 6, + &[true], + Some(&[0, 0, 0, 0, 1, 1]), + Some(&[0, 0, 1, 2, 3, 2]), + reader, + ); + } + _ => panic!("Unexpected column"), + }, + ); + } + + #[test] + fn illegal_map_scheme() { + let config = ParquetSerializerConfig { + parquet: ParquetSerializerOptions { + schema: r#" + message test { + optional group answers (MAP){ + repeated group key_value { + required binary str (UTF8); + optional boolean value; + } + } + } + "# + .to_string(), + }, + }; + + assert!(config.build().is_err()); + } +} diff --git a/lib/codecs/src/encoding/mod.rs b/lib/codecs/src/encoding/mod.rs index 8dd2c4ddc79a5..ed1eb2be18f78 100644 --- a/lib/codecs/src/encoding/mod.rs +++ b/lib/codecs/src/encoding/mod.rs @@ -11,7 +11,8 @@ pub use format::{ CefSerializerConfig, CsvSerializer, CsvSerializerConfig, GelfSerializer, GelfSerializerConfig, JsonSerializer, JsonSerializerConfig, JsonSerializerOptions, LogfmtSerializer, LogfmtSerializerConfig, NativeJsonSerializer, NativeJsonSerializerConfig, NativeSerializer, - NativeSerializerConfig, ProtobufSerializer, ProtobufSerializerConfig, + NativeSerializerConfig, ParquetSerializer, + ParquetSerializerConfig, ParquetSerializerOptions, ProtobufSerializer, ProtobufSerializerConfig, ProtobufSerializerOptions, RawMessageSerializer, RawMessageSerializerConfig, TextSerializer, TextSerializerConfig, }; @@ -53,4 +54,4 @@ impl From for Error { fn from(error: std::io::Error) -> Self { Self::FramingError(Box::new(error)) } -} +} \ No newline at end of file diff --git a/lib/codecs/src/encoding/serializer.rs b/lib/codecs/src/encoding/serializer.rs index eef088fca4b72..925bf7a8145b7 100644 --- a/lib/codecs/src/encoding/serializer.rs +++ b/lib/codecs/src/encoding/serializer.rs @@ -115,6 +115,14 @@ pub enum SerializerConfig { /// could lead to the encoding emitting empty strings for the given event. RawMessage, + + /// Encodes events in [Apache Parquet format][parquet]. + /// + /// [parquet]: https://parquet.apache.org/ + Parquet { + /// Apache Parquet-specific encoder options. + parquet: ParquetSerializerOptions, + }, /// Plain text encoding. /// /// This encoding uses the `message` field of a log event. For metrics, it uses an @@ -207,6 +215,7 @@ impl From for SerializerConfig { impl SerializerConfig { /// Build the `Serializer` from this configuration. + /// Fails if serializer is batched. pub fn build(&self) -> Result> { match self { SerializerConfig::Avro { avro } => Ok(Serializer::Avro( @@ -230,6 +239,32 @@ impl SerializerConfig { Ok(Serializer::RawMessage(RawMessageSerializerConfig.build())) } SerializerConfig::Text(config) => Ok(Serializer::Text(config.build())), + SerializerConfig::Parquet { .. } => { + Err("Parquet serializer is not for single event encoding.".into()) + } + } + } + + /// Build the `BatchSerializer` from this configuration. + /// Returns `None` if the serializer is not batched. + pub fn build_batched( + &self, + ) -> Result, Box> { + match self { + SerializerConfig::Parquet { parquet } => Ok(Some(BatchSerializer::Parquet( + ParquetSerializerConfig::new(parquet.schema.clone()).build()?, + ))), + SerializerConfig::Avro { .. } + | SerializerConfig::Csv(..) + | SerializerConfig::Gelf + | SerializerConfig::Json(..) + | SerializerConfig::Logfmt + | SerializerConfig::Native + | SerializerConfig::NativeJson + | SerializerConfig::RawMessage + | SerializerConfig::Text(..) + | SerializerConfig::Cef(..) + | SerializerConfig::Protobuf(..) => Ok(None), } } @@ -264,7 +299,8 @@ impl SerializerConfig { | SerializerConfig::Text(_) => FramingConfig::NewlineDelimited, SerializerConfig::Gelf(_) => { FramingConfig::CharacterDelimited(CharacterDelimitedEncoderConfig::new(0)) - } + }, + SerializerConfig::Parquet { .. } => FramingConfig::Bytes, } } @@ -286,6 +322,9 @@ impl SerializerConfig { SerializerConfig::Protobuf(config) => config.input_type(), SerializerConfig::RawMessage => RawMessageSerializerConfig.input_type(), SerializerConfig::Text(config) => config.input_type(), + SerializerConfig::Parquet { parquet } => { + ParquetSerializerConfig::new(parquet.schema.clone()).input_type() + } } } @@ -307,6 +346,9 @@ impl SerializerConfig { SerializerConfig::Protobuf(config) => config.schema_requirement(), SerializerConfig::RawMessage => RawMessageSerializerConfig.schema_requirement(), SerializerConfig::Text(config) => config.schema_requirement(), + SerializerConfig::Parquet { parquet } => { + ParquetSerializerConfig::new(parquet.schema.clone()).schema_requirement() + } } } } @@ -575,3 +617,25 @@ mod tests { )); } } +/// Serialize structured batches of events as bytes. +#[derive(Debug, Clone)] +pub enum BatchSerializer { + /// Uses a `ParquetSerializer` for serialization. + Parquet(ParquetSerializer), +} + +impl From for BatchSerializer { + fn from(serializer: ParquetSerializer) -> Self { + Self::Parquet(serializer) + } +} + +impl tokio_util::codec::Encoder> for BatchSerializer { + type Error = vector_common::Error; + + fn encode(&mut self, events: Vec, buffer: &mut BytesMut) -> Result<(), Self::Error> { + match self { + BatchSerializer::Parquet(serializer) => serializer.encode(events, buffer), + } + } +} \ No newline at end of file diff --git a/scripts/environment/bootstrap-ubuntu-24.04.sh b/scripts/environment/bootstrap-ubuntu-24.04.sh index 5e59d383dbc1a..f91742839f4b9 100755 --- a/scripts/environment/bootstrap-ubuntu-24.04.sh +++ b/scripts/environment/bootstrap-ubuntu-24.04.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#! /usr/bin/env bash # Refer to https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md # for all runner information such as OS version and installed software. @@ -26,9 +26,12 @@ apt-get update --yes # Install all base dependencies in one go apt-get install --yes \ - software-properties-common \ - apt-utils \ - apt-transport-https \ + software-properties-common \ + apt-utils \ + apt-transport-https + +# Deps +apt-get install --yes --no-install-recommends \ build-essential \ ca-certificates \ cmake \ diff --git a/scripts/environment/prepare.sh b/scripts/environment/prepare.sh index 368e4287f4bce..af5b93cc57bb5 100755 --- a/scripts/environment/prepare.sh +++ b/scripts/environment/prepare.sh @@ -148,6 +148,27 @@ if contains_module cargo-deb; then if [[ "$(cargo-deb --version 2>/dev/null)" != "2.9.3" ]]; then cargo "${install[@]}" cargo-deb --version 2.9.3 --force --locked fi + + + +# git config --global --add safe.directory /git/vectordotdev/vector + +# rustup show # causes installation of version from rust-toolchain.toml +# rustup default "$(rustup show active-toolchain | awk '{print $1;}' | head -n 1)" +# if [[ "$(cargo-deb --version)" != "2.0.2" ]] ; then +# rustup run stable cargo install cargo-deb --version 2.0.0 --force --locked +# fi +# if [[ "$(cross --version | grep cross)" != "cross 0.2.5" ]] ; then +# rustup run stable cargo install cross --version 0.2.5 --force --locked +# fi +# if [[ "$(cargo-nextest --version)" != "cargo-nextest 0.9.72" ]] ; then +# rustup run stable cargo install cargo-nextest --version 0.9.72 --force --locked +# fi +# if [[ "$(cargo-deny --version)" != "cargo-deny 0.16.1" ]] ; then +# rustup run stable cargo install cargo-deny --version 0.16.1 --force --locked +# fi +# if ! dd-rust-license-tool --help >& /dev/null ; then +# rustup run stable cargo install dd-rust-license-tool --version 1.0.2 --force --locked fi if contains_module cross; then diff --git a/scripts/integration/azure/compose.yaml b/scripts/integration/azure/compose.yaml index 933a72d235a24..fec6975508506 100644 --- a/scripts/integration/azure/compose.yaml +++ b/scripts/integration/azure/compose.yaml @@ -3,7 +3,7 @@ version: '3' services: local-azure-blob: image: mcr.microsoft.com/azure-storage/azurite:${CONFIG_VERSION} - command: azurite --blobHost 0.0.0.0 --loose + command: azurite --blobHost 0.0.0.0 --queueHost 0.0.0.0 --loose volumes: - /var/run:/var/run diff --git a/src/azure/mod.rs b/src/azure/mod.rs new file mode 100644 index 0000000000000..ddaf9b436d90c --- /dev/null +++ b/src/azure/mod.rs @@ -0,0 +1,235 @@ +//! Shared functionality for the Azure components. +use std::sync::Arc; + +use azure_core::{auth::TokenCredential, new_http_client, HttpClient, RetryOptions}; +use azure_identity::{ + AutoRefreshingTokenCredential, ClientSecretCredential, DefaultAzureCredential, + TokenCredentialOptions, +}; +use azure_storage::{prelude::*, CloudLocation, ConnectionString}; +use azure_storage_blobs; +use azure_storage_queues; +use serde_with::serde_as; + +use vector_lib::configurable::configurable_component; + +/// Stores credentials used to build Azure Clients. +#[serde_as] +#[configurable_component] +#[derive(Clone, Debug, Derivative)] +#[derivative(Default)] +#[serde(deny_unknown_fields)] +pub struct ClientCredentials { + /// Check how to get Tenant ID in [the docs][docs]. + /// + /// [docs]: https://learn.microsoft.com/en-us/azure/azure-portal/get-subscription-tenant-id + tenant_id: String, + + /// Check how to get Client ID in [the docs][docs]. + /// + /// [docs]: https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#add-credentials + client_id: String, + + /// Check how to get Client Secret in [the docs][docs]. + /// + /// [docs]: https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#add-credentials + client_secret: String, +} + +/// Builds Azure Storage Container Client. +/// +/// To authenticate only **one** of the following should be set: +/// 1. `connection_string` +/// 2. `storage_account` - optionally you can set `client_credentials` to provide credentials, +/// if `client_credentials` is None, [`DefaultAzureCredential`][dac] would be used. +/// +/// [dac]: https://docs.rs/azure_identity/0.17.0/azure_identity/struct.DefaultAzureCredential.html +pub fn build_container_client( + connection_string: Option, + storage_account: Option, + container_name: String, + endpoint: Option, + client_credentials: Option, +) -> crate::Result> { + let client; + match (connection_string, storage_account) { + (Some(connection_string_p), None) => { + let connection_string = ConnectionString::new(&connection_string_p)?; + + client = match connection_string.blob_endpoint { + // When the blob_endpoint is provided, we use the Custom CloudLocation since it is + // required to contain the full URI to the blob storage API endpoint, this means + // that account_name is not required to exist in the connection_string since + // account_name is only used with the default CloudLocation in the Azure SDK to + // generate the storage API endpoint + Some(uri) => azure_storage_blobs::prelude::ClientBuilder::with_location( + CloudLocation::Custom { + uri: uri.to_string(), + }, + connection_string.storage_credentials()?, + ), + // Without a valid blob_endpoint in the connection_string, assume we are in Azure + // Commercial (AzureCloud location) and create a default Blob Storage Client that + // builds the API endpoint location using the account_name as input + None => azure_storage_blobs::prelude::ClientBuilder::new( + connection_string + .account_name + .ok_or("Account name missing in connection string")?, + connection_string.storage_credentials()?, + ), + } + .retry(RetryOptions::none()) + .container_client(container_name); + } + (None, Some(storage_account_p)) => { + let creds: Arc = match client_credentials { + Some(client_credentials_p) => { + let http_client: Arc = new_http_client(); + let options = TokenCredentialOptions::default(); + let creds = std::sync::Arc::new(ClientSecretCredential::new( + http_client.clone(), + client_credentials_p.tenant_id, + client_credentials_p.client_id, + client_credentials_p.client_secret, + options, + )); + creds + } + None => { + let creds = std::sync::Arc::new(DefaultAzureCredential::default()); + creds + } + }; + let auto_creds = std::sync::Arc::new(AutoRefreshingTokenCredential::new(creds)); + let storage_credentials = StorageCredentials::token_credential(auto_creds); + + client = match endpoint { + // If a blob_endpoint is provided in the configuration, use it with a Custom + // CloudLocation, to allow overriding the blob storage API endpoint + Some(endpoint) => azure_storage_blobs::prelude::ClientBuilder::with_location( + CloudLocation::Custom { uri: endpoint }, + storage_credentials, + ), + // Use the storage_account configuration parameter and assume we are in Azure + // Commercial (AzureCloud location) and build the blob storage API endpoint using + // the storage_account as input. + None => azure_storage_blobs::prelude::ClientBuilder::new( + storage_account_p, + storage_credentials, + ), + } + .retry(RetryOptions::none()) + .container_client(container_name); + } + (None, None) => { + return Err("Either `connection_string` or `storage_account` has to be provided".into()) + } + (Some(_), Some(_)) => { + return Err( + "`connection_string` and `storage_account` can't be provided at the same time" + .into(), + ) + } + } + Ok(std::sync::Arc::new(client)) +} + +/// Builds Azure Queue Service Client. +/// +/// To authenticate only **one** of the following should be set: +/// 1. `connection_string` +/// 2. `storage_account` - optionally you can set `client_credentials` to provide credentials, +/// if `client_credentials` is None, [`DefaultAzureCredential`][dac] would be used. +/// +/// [dac]: https://docs.rs/azure_identity/0.17.0/azure_identity/struct.DefaultAzureCredential.html +pub fn build_queue_client( + connection_string: Option, + storage_account: Option, + queue_name: String, + endpoint: Option, + client_credentials: Option, +) -> crate::Result> { + let client; + match (connection_string, storage_account) { + (Some(connection_string_p), None) => { + let connection_string = ConnectionString::new(&connection_string_p)?; + + client = match connection_string.queue_endpoint { + // When the queue_endpoint is provided, we use the Custom CloudLocation since it is + // required to contain the full URI to the storage queue API endpoint, this means + // that account_name is not required to exist in the connection_string since + // account_name is only used with the default CloudLocation in the Azure SDK to + // generate the storage API endpoint + Some(uri) => azure_storage_queues::QueueServiceClientBuilder::with_location( + CloudLocation::Custom { + uri: uri.to_string(), + }, + connection_string.storage_credentials()?, + ), + // Without a valid queue_endpoint in the connection_string, assume we are in Azure + // Commercial (AzureCloud location) and create a default Blob Storage Client that + // builds the API endpoint location using the account_name as input + None => azure_storage_queues::QueueServiceClientBuilder::new( + connection_string + .account_name + .ok_or("Account name missing in connection string")?, + connection_string.storage_credentials()?, + ), + } + .retry(RetryOptions::none()) + .build() + .queue_client(queue_name); + } + (None, Some(storage_account_p)) => { + let creds: Arc = match client_credentials { + Some(client_credentials_p) => { + let http_client: Arc = new_http_client(); + let options = TokenCredentialOptions::default(); + let creds = std::sync::Arc::new(ClientSecretCredential::new( + http_client.clone(), + client_credentials_p.tenant_id, + client_credentials_p.client_id, + client_credentials_p.client_secret, + options, + )); + creds + } + None => { + let creds = std::sync::Arc::new(DefaultAzureCredential::default()); + creds + } + }; + let auto_creds = std::sync::Arc::new(AutoRefreshingTokenCredential::new(creds)); + let storage_credentials = StorageCredentials::token_credential(auto_creds); + + client = match endpoint { + // If a queue_endpoint is provided in the configuration, use it with a Custom + // CloudLocation, to allow overriding the storage queue API endpoint + Some(endpoint) => azure_storage_queues::QueueServiceClientBuilder::with_location( + CloudLocation::Custom { uri: endpoint }, + storage_credentials, + ), + // Use the storage_account configuration parameter and assume we are in Azure + // Commercial (AzureCloud location) and build the blob storage API endpoint using + // the storage_account as input. + None => azure_storage_queues::QueueServiceClientBuilder::new( + storage_account_p, + storage_credentials, + ), + } + .retry(RetryOptions::none()) + .build() + .queue_client(queue_name); + } + (None, None) => { + return Err("Either `connection_string` or `storage_account` has to be provided".into()) + } + (Some(_), Some(_)) => { + return Err( + "`connection_string` and `storage_account` can't be provided at the same time" + .into(), + ) + } + } + Ok(std::sync::Arc::new(client)) +} diff --git a/src/codecs/encoding/config.rs b/src/codecs/encoding/config.rs index a04f44315047a..8ef90e8a50a18 100644 --- a/src/codecs/encoding/config.rs +++ b/src/codecs/encoding/config.rs @@ -1,10 +1,7 @@ use crate::codecs::Transformer; -use vector_lib::{ - codecs::{ - CharacterDelimitedEncoder, LengthDelimitedEncoder, NewlineDelimitedEncoder, - encoding::{Framer, FramingConfig, Serializer, SerializerConfig}, - }, - configurable::configurable_component, +use vector_lib::codecs::{ + encoding::{BatchSerializer, Framer, FramingConfig, Serializer, SerializerConfig}, + CharacterDelimitedEncoder, LengthDelimitedEncoder, NewlineDelimitedEncoder, }; #[cfg(feature = "codecs-opentelemetry")] @@ -138,6 +135,13 @@ impl EncodingConfigWithFraming { Ok((framer, serializer)) } + + /// Build `BatchSerializer` for this config. + /// None if serializer is not batched. + pub fn build_batched(&self) -> crate::Result> { + let serializer = self.encoding.config().build_batched()?; + Ok(serializer) + } } /// The way a sink processes outgoing events. diff --git a/src/components/validation/resources/mod.rs b/src/components/validation/resources/mod.rs index 67c22910e07b0..3b3a74721e23b 100644 --- a/src/components/validation/resources/mod.rs +++ b/src/components/validation/resources/mod.rs @@ -238,7 +238,7 @@ fn serializer_config_to_deserializer( } SerializerConfig::RawMessage | SerializerConfig::Text(_) => DeserializerConfig::Bytes, #[cfg(feature = "codecs-opentelemetry")] - SerializerConfig::Otlp => todo!(), + SerializerConfig::Parquet { .. } => todo!(), }; deserializer_config.build() diff --git a/src/gcp.rs b/src/gcp.rs index 770283e17033b..df8524b937a20 100644 --- a/src/gcp.rs +++ b/src/gcp.rs @@ -4,7 +4,8 @@ use std::{ time::Duration, }; -use base64::prelude::{BASE64_URL_SAFE, Engine as _}; +use base64::prelude::{Engine as _, BASE64_URL_SAFE}; +use chrono::{DateTime, Utc}; pub use goauth::scopes::Scope; use goauth::{ GoErr, @@ -13,10 +14,15 @@ use goauth::{ }; use http::{Uri, uri::PathAndQuery}; use hyper::header::AUTHORIZATION; +use reqwest::{Client, Response}; +use serde_json::{from_value, json}; +use serde_with::serde_derive::Deserialize; use smpl_jwt::Jwt; use snafu::{ResultExt, Snafu}; use tokio::sync::watch; -use vector_lib::{configurable::configurable_component, sensitive_string::SensitiveString}; +use typetag::serde; +use vector_lib::configurable::configurable_component; +use vector_lib::sensitive_string::SensitiveString; use crate::{ config::ProxyConfig, @@ -102,6 +108,10 @@ pub struct GcpAuthConfig { #[serde(default, skip_serializing)] #[configurable(metadata(docs::hidden))] pub skip_authentication: bool, + + /// The service account to impersonate. The impersonated service account must have the + /// `roles/iam.serviceAccountTokenCreator` role on the target service account. + pub impersonated_service_account: Option, } impl GcpAuthConfig { @@ -112,7 +122,7 @@ impl GcpAuthConfig { let gap = std::env::var("GOOGLE_APPLICATION_CREDENTIALS").ok(); let creds_path = self.credentials_path.as_ref().or(gap.as_ref()); match (&creds_path, &self.api_key) { - (Some(path), _) => GcpAuthenticator::from_file(path, scope).await?, + (Some(path), _) => GcpAuthenticator::from_file(path, scope, self.impersonated_service_account.clone()).await?, (None, Some(api_key)) => GcpAuthenticator::from_api_key(api_key.inner())?, (None, None) => GcpAuthenticator::new_implicit().await?, } @@ -127,18 +137,30 @@ pub enum GcpAuthenticator { None, } +type ServiceAccount = String; +#[derive(Debug)] +pub enum Creds { + Regular(Credentials, Scope), + Impersonated(Credentials, Scope, ServiceAccount), +} #[derive(Debug)] pub struct InnerCreds { - creds: Option<(Credentials, Scope)>, + creds: Option, token: RwLock, } impl GcpAuthenticator { - async fn from_file(path: &str, scope: Scope) -> crate::Result { + async fn from_file(path: &str, scope: Scope, service_account: Option) -> crate::Result { let creds = Credentials::from_file(path).context(InvalidCredentialsSnafu)?; - let token = RwLock::new(fetch_token(&creds, &scope).await?); - let creds = Some((creds, scope)); - Ok(Self::Credentials(Arc::new(InnerCreds { creds, token }))) + let token = RwLock::new(fetch_token(&creds, &scope, service_account.as_deref()).await?); + + let creds = Some(match service_account { + Some(service_account) => + Creds::Impersonated(creds, scope, service_account), + None => + Creds::Regular(creds, scope), + }); + Ok(Self::Credentials(Arc::new(InnerCreds { creds, token, }))) } async fn new_implicit() -> crate::Result { @@ -245,8 +267,12 @@ impl GcpAuthenticator { impl InnerCreds { async fn regenerate_token(&self) -> crate::Result<()> { let token = match &self.creds { - Some((creds, scope)) => fetch_token(creds, scope).await?, - None => get_token_implicit().await?, + Some(Creds::Regular(creds, scope)) => + fetch_regular_token(creds, scope).await?, + Some(Creds::Impersonated(creds, scope, service_account)) => + fetch_impersonated_token(creds, scope, service_account).await?, + None => + get_token_implicit().await?, }; *self.token.write().unwrap() = token; Ok(()) @@ -258,14 +284,16 @@ impl InnerCreds { } } -async fn fetch_token(creds: &Credentials, scope: &Scope) -> crate::Result { - let claims = JwtClaims::new( - creds.iss(), - std::slice::from_ref(scope), - creds.token_uri(), - None, - None, - ); +async fn fetch_token(creds: &Credentials, scope: &Scope, impersonated_service_account: Option<&str> +) -> crate::Result { + match impersonated_service_account { + Some(service_account) => fetch_impersonated_token(creds, scope, service_account).await, + None => fetch_regular_token(creds, scope).await, + } +} + +async fn fetch_regular_token(creds: &Credentials, scope: &Scope) -> crate::Result { + let claims = JwtClaims::new(creds.iss(), scope, creds.token_uri(), None, None); let rsa_key = creds.rsa_key().context(InvalidRsaKeySnafu)?; let jwt = Jwt::new(claims, rsa_key, None); @@ -281,6 +309,118 @@ async fn fetch_token(creds: &Credentials, scope: &Scope) -> crate::Result .map_err(Into::into) } +async fn fetch_impersonated_token( + creds: &Credentials, + impersonated_scope: &Scope, + impersonated_service_account: &str, +) -> crate::Result { + // base scope is used only for impersonation from base service account to target service account + let base_scope = Scope::CloudPlatform; + let claims = JwtClaims::new(creds.iss(), &base_scope, creds.token_uri(), None, None); + let rsa_key = creds.rsa_key().context(InvalidRsaKeySnafu)?; + let jwt = Jwt::new(claims, rsa_key, None); + + debug!( + message = "Fetching base service account GCP authentication token.", + project = ?creds.project(), + iss = ?creds.iss(), + token_uri = ?creds.token_uri(), + ); + let token = goauth::get_token(&jwt, creds) + .await + .context(GetTokenSnafu)?; + + debug!( + message = "Fetching impersonated service account GCP authentication token.", + project = ?creds.project(), + impersonated_service_account = impersonated_service_account + ); + let token = do_fetch_impersonated_token(token.access_token(), + impersonated_service_account, + &[&impersonated_scope.url()]) + .await + .map_err(move |e| { + error!( + message = "Failed to generate impersonated token.", + impersonated_service_account = impersonated_service_account, + error = %e, + ); + e + })?; + Ok(token) +} + +async fn do_fetch_impersonated_token( + base_token: &str, + target_service_account: &str, + scopes: &[&str], +) -> crate::Result { + // Define the IAM Credentials API endpoint for generating impersonated tokens + let url = format!( + "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/{target_service_account}:generateAccessToken", + ); + + // Construct the JSON payload with the requested scopes + let body = json!({ + "scope": scopes, + }); + + // Create an HTTP client and make the POST request + let client = Client::new(); + let response = client + .post(&url) + .bearer_auth(base_token) // Use the base token for authorization + .json(&body) + .send() + .await?; + + token_from_json(response).await +} + +async fn token_from_json(resp: Response) -> crate::Result { + let is_success = resp.status().is_success(); + let resp = resp.bytes().await?; + if !is_success { + error!( + message = "No success in response.", + raw_resp = String::from_utf8_lossy(&resp).into_owned(), + ); + let token_err: TokenErr = serde_json::from_slice(&resp)?; + return Err(token_err.into()) + } + + #[derive(Deserialize)] + #[serde(rename_all = "camelCase")] + struct TokenCamelCase { + access_token: String, + expire_time: String, + } + let token: TokenCamelCase = serde_json::from_slice(&resp.clone()).map_err(|e| { + error!( + message = "Failed to parse OAuth token JSON.", + error = %e, + raw_resp = String::from_utf8_lossy(&resp).into_owned(), + ); + e + })?; + + let remapped = json!({ + "access_token": token.access_token, + "token_type": "Bearer", + "expires_in": seconds_from_now_to_timestamp(&token.expire_time)?, + }); + + let token: Token = from_value(remapped)?; + Ok(token) +} + +fn seconds_from_now_to_timestamp(timestamp: &str) -> crate::Result { + let future_time: DateTime = timestamp.parse()?; + let now = Utc::now(); + let duration = future_time.signed_duration_since(now); + Ok(duration.num_seconds() as u32) +} + async fn get_token_implicit() -> Result { debug!("Fetching implicit GCP authentication token."); let req = http::Request::get(SERVICE_ACCOUNT_TOKEN_URL) diff --git a/src/internal_events/azure_queue.rs b/src/internal_events/azure_queue.rs new file mode 100644 index 0000000000000..31f864b1d0d73 --- /dev/null +++ b/src/internal_events/azure_queue.rs @@ -0,0 +1,196 @@ +#[cfg(feature = "sources-azure_blob")] +pub use azure_blob::*; +use metrics::counter; +use vector_lib::internal_event::{error_stage, error_type, InternalEvent}; + +#[cfg(feature = "sources-azure_blob")] +mod azure_blob { + use super::*; + use crate::event::Event; + use crate::sources::azure_blob::queue::ProcessingError; + + #[derive(Debug)] + pub struct QueueMessageProcessingError<'a> { + pub message_id: &'a str, + pub error: &'a ProcessingError, + } + + impl<'a> InternalEvent for QueueMessageProcessingError<'a> { + fn emit(self) { + error!( + message = "Failed to process Queue message.", + message_id = %self.message_id, + error = %self.error, + error_code = "failed_processing_azure_queue_message", + error_type = error_type::PARSER_FAILED, + stage = error_stage::PROCESSING, + internal_log_rate_limit = true, + ); + counter!( + "component_errors_total", + "error_code" => "failed_processing_azure_queue_message", + "error_type" => error_type::PARSER_FAILED, + "stage" => error_stage::PROCESSING, + ).increment(1); + } + } + + #[derive(Debug)] + pub struct InvalidRowEventType<'a> { + pub event: &'a Event, + } + + impl<'a> InternalEvent for InvalidRowEventType<'a> { + fn emit(self) { + error!( + message = "Expected Azure rows as Log Events", + event = ?self.event, + error_code = "invalid_azure_row_event", + error_type = error_type::CONDITION_FAILED, + stage = error_stage::PROCESSING, + ); + counter!( + "component_errors_total", + "error_code" => "invalid_azure_row_event", + "error_type" => error_type::CONDITION_FAILED, + "stage" => error_stage::PROCESSING, + ).increment(1); + } + } +} + +#[derive(Debug)] +pub struct QueueMessageReceiveError<'a, E> { + pub error: &'a E, +} + +impl<'a, E: std::fmt::Display + std::fmt::Debug> InternalEvent for QueueMessageReceiveError<'a, E> { + fn emit(self) { + error!( + message = "Failed reading messages", + event = format!("{:?}", self.error), + error_code = "failed_fetching_azure_queue_events", + error_type = error_type::REQUEST_FAILED, + stage = error_stage::RECEIVING, + ); + counter!( + "component_errors_total", + "error_code" => "failed_fetching_azure_queue_events", + "error_type" => error_type::REQUEST_FAILED, + "stage" => error_stage::RECEIVING, + ).increment(1); + } +} + +#[derive(Debug)] +pub struct QueueMessageDeleteError<'a, E> { + pub error: &'a E, +} + +impl<'a, E: std::fmt::Display> InternalEvent for QueueMessageDeleteError<'a, E> { + fn emit(self) { + error!( + message = "Failed deleting message", + error = %self.error, + error_code = "failed_deleting_azure_queue_event", + error_type = error_type::ACKNOWLEDGMENT_FAILED, + stage = error_stage::PROCESSING, + ); + counter!( + "component_errors_total", + "error_code" => "failed_deleting_azure_queue_event", + "error_type" => error_type::WRITER_FAILED, + "stage" => error_stage::RECEIVING, + ).increment(1); + } +} + +#[derive(Debug)] +pub struct QueueStorageInvalidEventIgnored<'a> { + pub container: &'a str, + pub subject: &'a str, + pub event_type: &'a str, +} + +impl<'a> InternalEvent for QueueStorageInvalidEventIgnored<'a> { + fn emit(self) { + trace!( + message = "Ignoring event because of wrong event type", + container = %self.container, + subject = %self.subject, + event_type = %self.event_type + ); + counter!( + "azure_queue_event_ignored_total", + "ignore_type" => "invalid_event_type" + ).increment(1); + } +} + +#[derive(Debug)] +pub struct QueueStorageMismatchingContainerName<'a> { + pub container: &'a str, + pub configured_container: &'a str, +} + +impl<'a> InternalEvent for QueueStorageMismatchingContainerName<'a> { + fn emit(self) { + warn!( + message = "Ignoring event because of wrong container name", + configured_container = %self.configured_container, + container = %self.container, + ); + counter!( + "azure_queue_event_ignored_total", + "ignore_type" => "mismatching_container_name" + ).increment(1); + } +} + +#[derive(Debug)] +pub struct QueueMessageProcessingSucceeded {} + +impl InternalEvent for QueueMessageProcessingSucceeded { + fn emit(self) { + trace!(message = "Processed azure queue message successfully."); + counter!("azure_queue_message_processing_succeeded_total").increment(1); + } +} + +#[derive(Debug)] +pub struct QueueMessageProcessingErrored {} + +impl InternalEvent for QueueMessageProcessingErrored { + fn emit(self) { + error!(message = "Batch event had a transient error in delivery."); + counter!("azure_queue_message_processing_errored_total").increment(1); + } +} + +#[derive(Debug)] +pub struct QueueMessageProcessingRejected {} + +impl InternalEvent for QueueMessageProcessingRejected { + fn emit(self) { + error!(message = "Batch event had a permanent failure or rejection."); + counter!("azure_queue_message_processing_rejected_total").increment(1); + } +} + +#[derive(Debug)] +pub struct BlobDoesntExist<'a> { + pub nonexistent_blob_name: &'a str, +} + +impl<'a> InternalEvent for BlobDoesntExist<'a> { + fn emit(self) { + warn!( + message = "Ignoring event because blob doesn't exist in storage", + blob_name = self.nonexistent_blob_name + ); + counter!( + "azure_queue_event_ignored_total", + "ignore_type" => "blob_doesnt_exist" + ).increment(1); + } +} diff --git a/src/internal_events/mod.rs b/src/internal_events/mod.rs index 1647e2b8ff0ca..27177a9881c37 100644 --- a/src/internal_events/mod.rs +++ b/src/internal_events/mod.rs @@ -155,6 +155,8 @@ mod windows; pub mod config; #[cfg(any(feature = "transforms-log_to_metric", feature = "sinks-loki"))] mod expansion; +#[cfg(any(feature = "sources-azure_blob", feature = "sources-azure_blob",))] +mod azure_queue; #[cfg(feature = "sources-mongodb_metrics")] pub(crate) use mongodb_metrics::*; @@ -183,6 +185,8 @@ pub(crate) use self::aws_kinesis::*; pub(crate) use self::aws_kinesis_firehose::*; #[cfg(any(feature = "sources-aws_s3", feature = "sources-aws_sqs",))] pub(crate) use self::aws_sqs::*; +#[cfg(any(feature = "sources-azure_blob"))] +pub(crate) use self::azure_queue::*; pub(crate) use self::codecs::*; #[cfg(feature = "sources-datadog_agent")] pub(crate) use self::datadog_agent::*; diff --git a/src/lib.rs b/src/lib.rs index 6ed250658b65f..b3e20ee68d2aa 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -73,6 +73,7 @@ pub mod async_read; #[cfg(feature = "aws-config")] pub mod aws; #[allow(unreachable_pub)] +pub mod azure; pub mod codecs; pub mod common; mod convert_config; diff --git a/src/sinks/aws_s3/config.rs b/src/sinks/aws_s3/config.rs index 08ba92245d65c..b9092ce0c808b 100644 --- a/src/sinks/aws_s3/config.rs +++ b/src/sinks/aws_s3/config.rs @@ -1,3 +1,4 @@ +use std::sync::Arc; use aws_sdk_s3::Client as S3Client; use tower::ServiceBuilder; use vector_lib::{ @@ -15,6 +16,7 @@ use crate::{ aws::{AwsAuthentication, RegionOrEndpoint}, codecs::{Encoder, EncodingConfigWithFraming, SinkType}, config::{AcknowledgementsConfig, GenerateConfig, Input, ProxyConfig, SinkConfig, SinkContext}, + event::Event, sinks::{ Healthcheck, s3_common::{ @@ -246,8 +248,14 @@ impl S3SinkConfig { let partitioner = S3KeyPartitioner::new(key_prefix, ssekms_key_id, None); let transformer = self.encoding.transformer(); - let (framer, serializer) = self.encoding.build(SinkType::MessageBased)?; - let encoder = Encoder::::new(framer, serializer); + let encoder = if let Some(serializer) = self.encoding.build_batched()? { + Arc::new((transformer, serializer)) + as Arc> + Send + Sync> + } else { + let (framer, serializer) = self.encoding.build(SinkType::MessageBased)?; + let encoder = Encoder::::new(framer, serializer); + Arc::new((transformer, encoder)) as _ + }; let request_options = S3RequestOptions { bucket: self.bucket.clone(), @@ -255,7 +263,7 @@ impl S3SinkConfig { filename_extension: self.filename_extension.clone(), filename_time_format: self.filename_time_format.clone(), filename_append_uuid: self.filename_append_uuid, - encoder: (transformer, encoder), + encoder, compression: self.compression, filename_tz_offset: offset, }; diff --git a/src/sinks/aws_s3/sink.rs b/src/sinks/aws_s3/sink.rs index 26d47cdb7039c..c98f5a49af777 100644 --- a/src/sinks/aws_s3/sink.rs +++ b/src/sinks/aws_s3/sink.rs @@ -1,12 +1,12 @@ -use std::io; +use std::{io, sync::Arc}; use bytes::Bytes; use chrono::{FixedOffset, Utc}; use uuid::Uuid; -use vector_lib::{codecs::encoding::Framer, event::Finalizable, request_metadata::RequestMetadata}; +use vector_lib::event::Finalizable; +use vector_lib::request_metadata::RequestMetadata; use crate::{ - codecs::{Encoder, Transformer}, event::Event, sinks::{ s3_common::{ @@ -15,8 +15,8 @@ use crate::{ service::{S3Metadata, S3Request}, }, util::{ - Compression, RequestBuilder, metadata::RequestMetadataBuilder, - request_builder::EncodeResult, + encoding::Encoder, metadata::RequestMetadataBuilder, request_builder::EncodeResult, + Compression, RequestBuilder, }, }, }; @@ -28,7 +28,7 @@ pub struct S3RequestOptions { pub filename_append_uuid: bool, pub filename_extension: Option, pub api_options: S3Options, - pub encoder: (Transformer, Encoder), + pub encoder: Arc> + Send + Sync>, pub compression: Compression, pub filename_tz_offset: Option, } @@ -36,7 +36,7 @@ pub struct S3RequestOptions { impl RequestBuilder<(S3PartitionKey, Vec)> for S3RequestOptions { type Metadata = S3Metadata; type Events = Vec; - type Encoder = (Transformer, Encoder); + type Encoder = Arc> + Send + Sync>; type Payload = Bytes; type Request = S3Request; type Error = io::Error; // TODO: this is ugly. diff --git a/src/sinks/azure_blob/config.rs b/src/sinks/azure_blob/config.rs index 3c2437c554106..fc4d628ada5c5 100644 --- a/src/sinks/azure_blob/config.rs +++ b/src/sinks/azure_blob/config.rs @@ -10,7 +10,7 @@ use vector_lib::{ use super::request_builder::AzureBlobRequestOptions; use crate::{ - Result, + azure, codecs::{Encoder, EncodingConfigWithFraming, SinkType}, config::{AcknowledgementsConfig, DataType, GenerateConfig, Input, SinkConfig, SinkContext}, sinks::{ @@ -166,9 +166,14 @@ impl GenerateConfig for AzureBlobSinkConfig { #[typetag::serde(name = "azure_blob")] impl SinkConfig for AzureBlobSinkConfig { async fn build(&self, _cx: SinkContext) -> Result<(VectorSink, Healthcheck)> { - let client = azure_common::config::build_client( - self.connection_string.clone().into(), + let client = azure::build_container_client( + self.connection_string + .as_ref() + .map(|v| v.inner().to_string()), + self.storage_account.as_ref().map(|v| v.to_string()), self.container_name.clone(), + self.endpoint.clone(), + None, )?; let healthcheck = azure_common::config::build_healthcheck( diff --git a/src/sinks/azure_blob/integration_tests.rs b/src/sinks/azure_blob/integration_tests.rs index a48b330982eb5..e6946ecc8a7c9 100644 --- a/src/sinks/azure_blob/integration_tests.rs +++ b/src/sinks/azure_blob/integration_tests.rs @@ -19,6 +19,7 @@ use vector_lib::{ use super::config::AzureBlobSinkConfig; use crate::{ + azure, event::{Event, EventArray, LogEvent}, sinks::{ VectorSink, azure_common, @@ -33,9 +34,12 @@ use crate::{ #[tokio::test] async fn azure_blob_healthcheck_passed() { let config = AzureBlobSinkConfig::new_emulator().await; - let client = azure_common::config::build_client( - config.connection_string.clone().into(), + let client = azure::build_container_client( + config.connection_string.map(Into::into), + None, config.container_name.clone(), + None, + None, ) .expect("Failed to create client"); @@ -52,9 +56,12 @@ async fn azure_blob_healthcheck_unknown_container() { container_name: String::from("other-container-name"), ..config }; - let client = azure_common::config::build_client( - config.connection_string.clone().into(), + let client = azure::build_container_client( + config.connection_string.map(Into::into), + config.storage_account.map(Into::into), config.container_name.clone(), + config.endpoint.clone(), + None, ) .expect("Failed to create client"); @@ -240,9 +247,12 @@ impl AzureBlobSinkConfig { } fn to_sink(&self) -> VectorSink { - let client = azure_common::config::build_client( - self.connection_string.clone().into(), + let client = azure::build_container_client( + self.connection_string.clone().map(Into::into), + self.storage_account.clone().map(Into::into), self.container_name.clone(), + self.endpoint.clone(), + None, ) .expect("Failed to create client"); @@ -257,9 +267,12 @@ impl AzureBlobSinkConfig { } pub async fn list_blobs(&self, prefix: String) -> Vec { - let client = azure_common::config::build_client( - self.connection_string.clone().into(), + let client = azure::build_container_client( + self.connection_string.clone().map(Into::into), + self.storage_account.clone().map(Into::into), self.container_name.clone(), + self.endpoint.clone(), + None, ) .unwrap(); let response = client @@ -282,9 +295,12 @@ impl AzureBlobSinkConfig { } pub async fn get_blob(&self, blob: String) -> (Blob, Vec) { - let client = azure_common::config::build_client( - self.connection_string.clone().into(), + let client = azure::build_container_client( + self.connection_string.clone().map(Into::into), + self.storage_account.clone().map(Into::into), self.container_name.clone(), + self.endpoint.clone(), + None, ) .unwrap(); let response = client @@ -317,9 +333,12 @@ impl AzureBlobSinkConfig { } async fn ensure_container(&self) { - let client = azure_common::config::build_client( - self.connection_string.clone().into(), + let client = azure::build_container_client( + self.connection_string.clone().map(Into::into), + self.storage_account.clone().map(Into::into), self.container_name.clone(), + self.endpoint.clone(), + None, ) .unwrap(); let request = client diff --git a/src/sinks/azure_common/config.rs b/src/sinks/azure_common/config.rs index fadd0e2c4707c..f5bd9c485cd3d 100644 --- a/src/sinks/azure_common/config.rs +++ b/src/sinks/azure_common/config.rs @@ -1,8 +1,6 @@ use std::sync::Arc; use azure_core::error::HttpError; -use azure_core_for_storage::RetryOptions; -use azure_storage::{CloudLocation, ConnectionString}; use azure_storage_blobs::{blob::operations::PutBlockBlobResponse, prelude::*}; use bytes::Bytes; use futures::FutureExt; @@ -123,37 +121,3 @@ pub fn build_healthcheck( Ok(healthcheck.boxed()) } - -pub fn build_client( - connection_string: String, - container_name: String, -) -> crate::Result> { - let client = { - let connection_string = ConnectionString::new(&connection_string)?; - let account_name = connection_string - .account_name - .ok_or("Account name missing in connection string")?; - - match connection_string.blob_endpoint { - // When the blob_endpoint is provided, we use the Custom CloudLocation since it is - // required to contain the full URI to the blob storage API endpoint, this means - // that account_name is not required to exist in the connection_string since - // account_name is only used with the default CloudLocation in the Azure SDK to - // generate the storage API endpoint - Some(uri) => ClientBuilder::with_location( - CloudLocation::Custom { - uri: uri.to_string(), - account: account_name.to_string(), - }, - connection_string.storage_credentials()?, - ), - // Without a valid blob_endpoint in the connection_string, assume we are in Azure - // Commercial (AzureCloud location) and create a default Blob Storage Client that - // builds the API endpoint location using the account_name as input - None => ClientBuilder::new(account_name, connection_string.storage_credentials()?), - } - .retry(RetryOptions::none()) - .container_client(container_name) - }; - Ok(Arc::new(client)) -} diff --git a/src/sinks/gcp/stackdriver/metrics/tests.rs b/src/sinks/gcp/stackdriver/metrics/tests.rs index a5b3a40649d1f..4f31682cae4fe 100644 --- a/src/sinks/gcp/stackdriver/metrics/tests.rs +++ b/src/sinks/gcp/stackdriver/metrics/tests.rs @@ -56,6 +56,7 @@ async fn sends_metric() { api_key: None, credentials_path: None, skip_authentication: true, + impersonated_service_account: None, }, ..Default::default() }; @@ -116,6 +117,7 @@ async fn sends_multiple_metrics() { api_key: None, credentials_path: None, skip_authentication: true, + impersonated_service_account: None, }, batch, ..Default::default() @@ -203,6 +205,7 @@ async fn does_not_aggregate_metrics() { api_key: None, credentials_path: None, skip_authentication: true, + impersonated_service_account: None, }, batch, ..Default::default() diff --git a/src/sinks/util/encoding.rs b/src/sinks/util/encoding.rs index bb5a938ec017f..f5c7f0b3376be 100644 --- a/src/sinks/util/encoding.rs +++ b/src/sinks/util/encoding.rs @@ -1,4 +1,4 @@ -use std::io; +use std::{io, sync::Arc}; use bytes::BytesMut; use itertools::{Itertools, Position}; @@ -8,7 +8,11 @@ use vector_lib::{ request_metadata::GroupedCountByteSize, }; -use crate::{codecs::Transformer, event::Event, internal_events::EncoderWriteError}; +use crate::{ + codecs::Transformer, + event::Event, + internal_events::{EncoderSerializeError, EncoderWriteError}, +}; pub trait Encoder { /// Encodes the input into the provided writer. @@ -97,6 +101,44 @@ impl Encoder for (Transformer, crate::codecs::Encoder<()>) { } } +impl + ?Sized> Encoder for Arc { + fn encode_input( + &self, + input: T, + writer: &mut dyn io::Write + ) -> io::Result<(usize, GroupedCountByteSize)> { + (**self).encode_input(input, writer) + } +} + +impl Encoder> for (Transformer, vector_lib::codecs::encoding::BatchSerializer) { + fn encode_input( + &self, + mut events: Vec, + writer: &mut dyn io::Write, + ) -> io::Result<(usize, GroupedCountByteSize)> { + let mut encoder = self.1.clone(); + let n_events_pending = events.len(); + + let mut byte_size = telemetry().create_request_count_byte_size(); + for event in &mut events { + self.0.transform(event); + byte_size.add_event(event, event.estimated_json_encoded_size_of()); + } + + let mut bytes = BytesMut::new(); + encoder.encode(events, &mut bytes).map_err(|error| { + let error: crate::Error = error.into(); + emit!(EncoderSerializeError { error: &error }); + io::Error::new(io::ErrorKind::InvalidData, error) + })?; + + write_all(writer, n_events_pending, &bytes)?; + + Ok((bytes.len(), byte_size)) + } +} + /// Write the buffer to the writer. If the operation fails, emit an internal event which complies with the /// instrumentation spec- as this necessitates both an Error and EventsDropped event. /// diff --git a/src/sources/azure_blob/integration_tests.rs b/src/sources/azure_blob/integration_tests.rs new file mode 100644 index 0000000000000..2e453296d8335 --- /dev/null +++ b/src/sources/azure_blob/integration_tests.rs @@ -0,0 +1,215 @@ +use azure_core::error::HttpError; +use azure_storage_blobs::prelude::PublicAccess; +use base64::{prelude::BASE64_STANDARD, Engine}; +use http::StatusCode; + +use super::{ + queue::{make_container_client, make_queue_client, Config}, + time::Duration, + AzureBlobConfig, Strategy, +}; +use crate::{ + event::Event, + serde::default_decoding, + test_util::components::{ + run_and_assert_source_compliance, run_and_assert_source_error, COMPONENT_ERROR_TAGS, + SOURCE_TAGS, + }, +}; + +impl AzureBlobConfig { + pub async fn new_emulator() -> AzureBlobConfig { + let address = std::env::var("AZURE_ADDRESS").unwrap_or_else(|_| "localhost".into()); + let config = AzureBlobConfig { + connection_string: Some(format!("UseDevelopmentStorage=true;DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://{}:10000/devstoreaccount1;QueueEndpoint=http://{}:10001/devstoreaccount1;TableEndpoint=http://{}:10002/devstoreaccount1;", address, address, address).into()), + storage_account: None, + container_name: "logs".to_string(), + strategy: Strategy::StorageQueue, + queue: Some(Config { + queue_name: format!("test-{}", rand::random::()), + poll_secs: 1, + }), + // TODO shouldn't we have blob_endpoint and queue_endpoint? + endpoint: None, + acknowledgements: Default::default(), + // TODO this should be option + exec_interval_secs: 0, + log_namespace: None, + decoding: default_decoding(), + client_credentials: None, + }; + + config.ensure_container().await; + config.ensure_queue().await; + + config + } + + async fn run_assert(&self) -> Vec { + run_and_assert_source_compliance(self.clone(), Duration::from_secs(1), &SOURCE_TAGS).await + } + + async fn run_error(&self) -> Vec { + run_and_assert_source_error(self.clone(), Duration::from_secs(1), &COMPONENT_ERROR_TAGS) + .await + } + + async fn ensure_container(&self) { + let client = make_container_client(self).expect("Failed to create container client"); + let request = client + .create() + .public_access(PublicAccess::None) + .into_future(); + + let response = match request.await { + Ok(_) => Ok(()), + Err(reason) => match reason.downcast_ref::() { + Some(err) => match StatusCode::from_u16(err.status().into()) { + Ok(StatusCode::CONFLICT) => Ok(()), + _ => Err(format!("Unexpected status code {}", err.status())), + }, + _ => Err(format!("Unexpected error {}", reason)), + }, + }; + + response.expect("Failed to create container") + } + + async fn ensure_queue(&self) { + let client = make_queue_client(self).expect("Failed to create queue client"); + let request = client.create().into_future(); + + let response = match request.await { + Ok(_) => Ok(()), + Err(reason) => match reason.downcast_ref::() { + Some(err) => match StatusCode::from_u16(err.status().into()) { + Ok(StatusCode::CONFLICT) => Ok(()), + _ => Err(format!("Unexpected status code {}", err.status())), + }, + _ => Err(format!("Unexpected error {}", reason)), + }, + }; + + response.expect("Failed to create queue") + } + + async fn upload_blob(&self, name: String, content: String) { + let container_client = + make_container_client(self).expect("Failed to create container client"); + let blob_client = container_client.blob_client(name.clone()); + blob_client + .put_block_blob(content) + .await + .expect("Failed putting blob"); + + self.queue_notify_blob_created(&name).await; + } + + async fn queue_notify_blob_created(&self, name: &str) { + let queue_client = make_queue_client(self).expect("Failed to create queue client"); + let message = format!( + r#"{{ + "topic": "/subscriptions/fa5f2180-1451-4461-9b1f-aae7d4b33cf8/resourceGroups/events_poc/providers/Microsoft.Storage/storageAccounts/eventspocaccount", + "subject": "/blobServices/default/containers/logs/blobs/{}", + "eventType": "Microsoft.Storage.BlobCreated", + "id": "be3f21f7-201e-000b-7605-a29195062628", + "data": {{ + "api": "PutBlob", + "clientRequestId": "1fa42c94-6dd3-4172-95c4-fd9cf56b5009", + "requestId": "be3f21f7-201e-000b-7605-a29195000000", + "eTag": "0x8DC701C5D3FFDF6", + "contentType": "application/octet-stream", + "contentLength": 0, + "blobType": "BlockBlob", + "url": "https://eventspocaccount.blob.core.windows.net/logs/{}", + "sequencer": "0000000000000000000000000005C5360000000000276a63", + "storageDiagnostics": {{ + "batchId": "fec5b12c-2006-0034-0005-a25936000000" + }} + }}, + "dataVersion": "", + "metadataVersion": "1", + "eventTime": "2024-05-09T11:37:10.5637878Z" + }}"#, + name, name + ); + queue_client + .put_message(BASE64_STANDARD.encode(message)) + .await + .expect("Failed putting message"); + } +} + +#[tokio::test] +async fn azure_blob_read_single_line_from_blob() { + let config = AzureBlobConfig::new_emulator().await; + let content = "a"; + config + .upload_blob("file.txt".to_string(), content.to_string()) + .await; + + let events = config.run_assert().await; + assert_eq!(events.len(), 1); + assert_eq!(events[0].as_log()["message"], "a".into()); +} + +#[tokio::test] +async fn azure_blob_read_multiple_lines_from_blob() { + let config = AzureBlobConfig::new_emulator().await; + let content = "a\nb\nc"; + config + .upload_blob("file.txt".to_string(), content.to_string()) + .await; + + let events = config.run_assert().await; + assert_eq!(events.len(), 3); + assert_eq!(events[0].as_log()["message"], "a".into()); + assert_eq!(events[1].as_log()["message"], "b".into()); + assert_eq!(events[2].as_log()["message"], "c".into()); +} + +#[tokio::test] +async fn azure_blob_read_single_line_from_multiple_blobs() { + let config = AzureBlobConfig::new_emulator().await; + let contents = vec!["a", "b", "c"]; + for (i, content) in contents.clone().iter().enumerate() { + config + .upload_blob(format!("file{}.txt", i), content.to_string()) + .await; + } + + let events = + run_and_assert_source_compliance(config.clone(), Duration::from_secs(4), &SOURCE_TAGS) + .await; + assert_eq!(events.len(), contents.len()); + for (i, event) in events.iter().enumerate() { + assert_eq!(event.as_log()["message"], contents[i].into()); + } +} + +#[tokio::test] +async fn azure_blob_emit_error_on_message_read() { + let mut config = AzureBlobConfig::new_emulator().await; + let content = "a\nb\nc"; + config + .upload_blob("file.txt".to_string(), content.to_string()) + .await; + config.queue = Some(Config { + queue_name: "nonexistent".to_string(), + poll_secs: 1, + }); + + let events = config.run_error().await; + assert!(events.is_empty()); +} + +#[tokio::test] +async fn azure_blob_ignore_missing_blob() { + let config = AzureBlobConfig::new_emulator().await; + + config.queue_notify_blob_created("non-existent").await; + config.upload_blob("file.txt".to_string(), "some_content".to_string()).await; + + let events = config.run_assert().await; + assert_eq!(events.len(), 1); +} diff --git a/src/sources/azure_blob/mod.rs b/src/sources/azure_blob/mod.rs new file mode 100644 index 0000000000000..e2aa8d4892aeb --- /dev/null +++ b/src/sources/azure_blob/mod.rs @@ -0,0 +1,392 @@ +use std::{future::Future, pin::Pin, time::Duration}; + +use async_stream::stream; +use bytes::Bytes; +use futures::{stream::StreamExt, Stream}; +use tokio::{select, time}; +use tokio_stream::wrappers::IntervalStream; +use vrl::path; + +use vector_lib::internal_event::Registered; +use vector_lib::{ + codecs::{ + decoding::{DeserializerConfig, FramingConfig, NewlineDelimitedDecoderOptions}, + NewlineDelimitedDecoderConfig, + }, + config::LegacyKey, + internal_event::{ByteSize, BytesReceived, CountByteSize, InternalEventHandle as _, Protocol}, + sensitive_string::SensitiveString, +}; + +use crate::{ + azure::ClientCredentials, + codecs::{Decoder, DecodingConfig}, + config::{ + LogNamespace, SourceAcknowledgementsConfig, SourceConfig, SourceContext, SourceOutput, + }, + event::{BatchNotifier, BatchStatus, EstimatedJsonEncodedSizeOf, Event}, + internal_events::{ + EventsReceived, InvalidRowEventType, QueueMessageProcessingErrored, + QueueMessageProcessingRejected, QueueMessageProcessingSucceeded, StreamClosedError, + }, + serde::{bool_or_struct, default_decoding}, + shutdown::ShutdownSignal, + sinks::prelude::configurable_component, + sources::azure_blob::queue::make_azure_row_stream, + SourceSender, +}; + +#[cfg(all(test, feature = "azure-blob-source-integration-tests"))] +mod integration_tests; +pub mod queue; +#[cfg(test)] +mod test; + +/// Strategies for consuming objects from Azure Storage. +#[configurable_component] +#[derive(Clone, Copy, Debug, Derivative)] +#[serde(rename_all = "lowercase")] +#[derivative(Default)] +enum Strategy { + /// Consumes objects by processing events sent to an [Azure Storage Queue][azure_storage_queue]. + /// + /// [azure_storage_queue]: https://learn.microsoft.com/en-us/azure/storage/queues/storage-queues-introduction + StorageQueue, + + /// This is a test strategy used only of development and PoC. Should be removed + /// once development is done. + #[derivative(Default)] + Test, +} + +/// WIP +/// A dummy implementation is used as a starter. +/// The source will send dummy messages at a fixed interval, incrementing a counter every +/// exec_interval_secs seconds. +#[configurable_component(source("azure_blob", "Collect logs from Azure Container."))] +#[derive(Clone, Debug, Derivative)] +#[derivative(Default)] +#[serde(default, deny_unknown_fields)] +pub struct AzureBlobConfig { + /// The namespace to use for logs. This overrides the global setting. + #[configurable(metadata(docs::hidden))] + #[serde(default)] + log_namespace: Option, + + /// The interval, in seconds, between subsequent dummy messages + #[serde(default = "default_exec_interval_secs")] + exec_interval_secs: u64, + + /// The strategy to use to consume objects from Azure Storage. + #[configurable(metadata(docs::hidden))] + strategy: Strategy, + + /// Configuration options for Storage Queue. + queue: Option, + + /// The Azure Blob Storage Account connection string. + /// + /// Authentication with access key is the only supported authentication method. + /// + /// Either `storage_account`, or this field, must be specified. + #[configurable(metadata( + docs::examples = "DefaultEndpointsProtocol=https;AccountName=mylogstorage;AccountKey=storageaccountkeybase64encoded;EndpointSuffix=core.windows.net" + ))] + pub connection_string: Option, + + /// The Azure Blob Storage Account name. + /// + /// Attempts to load credentials for the account in the following ways, in order: + /// + /// - read from environment variables ([more information][env_cred_docs]) + /// - looks for a [Managed Identity][managed_ident_docs] + /// - uses the `az` CLI tool to get an access token ([more information][az_cli_docs]) + /// + /// Either `connection_string`, or this field, must be specified. + /// + /// [env_cred_docs]: https://docs.rs/azure_identity/latest/azure_identity/struct.EnvironmentCredential.html + /// [managed_ident_docs]: https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview + /// [az_cli_docs]: https://docs.microsoft.com/en-us/cli/azure/account?view=azure-cli-latest#az-account-get-access-token + #[configurable(metadata(docs::examples = "mylogstorage"))] + pub storage_account: Option, + + #[configurable(derived)] + pub client_credentials: Option, + + /// The Azure Blob Storage Endpoint URL. + /// + /// This is used to override the default blob storage endpoint URL in cases where you are using + /// credentials read from the environment/managed identities or access tokens without using an + /// explicit connection_string (which already explicitly supports overriding the blob endpoint + /// URL). + /// + /// This may only be used with `storage_account` and is ignored when used with + /// `connection_string`. + #[configurable(metadata(docs::examples = "https://test.blob.core.usgovcloudapi.net/"))] + #[configurable(metadata(docs::examples = "https://test.blob.core.windows.net/"))] + pub endpoint: Option, + + /// The Azure Blob Storage Account container name. + #[configurable(metadata(docs::examples = "my-logs"))] + pub(super) container_name: String, + + #[configurable(derived)] + #[serde(default, deserialize_with = "bool_or_struct")] + pub acknowledgements: SourceAcknowledgementsConfig, + + #[configurable(derived)] + #[serde(default = "default_decoding")] + #[derivative(Default(value = "default_decoding()"))] + pub decoding: DeserializerConfig, +} + +impl_generate_config_from_default!(AzureBlobConfig); + +impl AzureBlobConfig { + /// Self validation + pub fn validate(&self) -> crate::Result<()> { + match self.strategy { + Strategy::StorageQueue => { + if self.queue.is_none() || self.queue.as_ref().unwrap().queue_name.is_empty() { + return Err("Azure event grid queue must be set.".into()); + } + if self.storage_account.clone().unwrap_or_default().is_empty() + && self + .connection_string + .clone() + .unwrap_or_default() + .inner() + .is_empty() + { + return Err("Azure Storage Account or Connection String must be set.".into()); + } + if self.container_name.is_empty() { + return Err("Azure Container must be set.".into()); + } + } + Strategy::Test => { + if self.exec_interval_secs == 0 { + return Err("exec_interval_secs must be greater than 0".into()); + } + } + } + + Ok(()) + } +} + +type BlobStream = Pin> + Send>>; + +pub struct BlobPack { + row_stream: BlobStream, + success_handler: Box Pin + Send>> + Send>, +} + +type BlobPackStream = Pin + Send>>; + +struct AzureBlobStreamer { + shutdown: ShutdownSignal, + out: SourceSender, + log_namespace: LogNamespace, + acknowledge: bool, + decoder: Decoder, + bytes_received: Registered, + events_received: Registered, +} + +impl AzureBlobStreamer { + pub fn new( + shutdown: ShutdownSignal, + out: SourceSender, + log_namespace: LogNamespace, + acknowledge: bool, + decoding: DeserializerConfig, + ) -> crate::Result { + Ok(Self { + shutdown, + out, + log_namespace: log_namespace.clone(), + acknowledge, + decoder: { + let framing = FramingConfig::NewlineDelimited(NewlineDelimitedDecoderConfig { + newline_delimited: NewlineDelimitedDecoderOptions { max_length: None }, + }); + DecodingConfig::new(framing, decoding, log_namespace).build()? + }, + bytes_received: register!(BytesReceived::from(Protocol::HTTP)), + events_received: register!(EventsReceived), + }) + } + + pub async fn run_streaming(mut self, mut blob_stream: BlobPackStream) -> Result<(), ()> { + debug!("Starting Azure streaming."); + + loop { + select! { + blob_pack = blob_stream.next() => { + match blob_pack{ + Some(blob_pack) => { + self.process_blob_pack(blob_pack).await?; + } + None => { + break; // end of stream + } + } + }, + _ = self.shutdown.clone() => { + break; + } + } + } + + Ok(()) + } + + async fn process_blob_pack(&mut self, blob_pack: BlobPack) -> Result<(), ()> { + let (batch, receiver) = BatchNotifier::maybe_new_with_receiver(self.acknowledge); + let mut row_stream = blob_pack.row_stream; + let mut output_stream = { + let bytes_received = self.bytes_received.clone(); + let events_received = self.events_received.clone(); + let log_namespace = self.log_namespace.clone(); + let decoder = self.decoder.clone(); + stream! { + // TODO: consider selecting with a shutdown + while let Some(row) = row_stream.next().await { + bytes_received.emit(ByteSize(row.len())); + let deser_result = decoder.deserializer_parse(Bytes::from(row)); + if deser_result.is_err(){ + continue; + } + // Error handling is done above, so we don't mind doing unwrap. + let (events, _) = deser_result.unwrap(); + for mut event in events.into_iter(){ + event = event.with_batch_notifier_option(&batch); + match event { + Event::Log(ref mut log_event) => { + log_namespace.insert_source_metadata( + AzureBlobConfig::NAME, + log_event, + Some(LegacyKey::Overwrite("ingest_timestamp")), + path!("ingest_timestamp"), + chrono::Utc::now().to_rfc3339(), + ); + events_received.emit(CountByteSize(1, event.estimated_json_encoded_size_of())); + yield event + } + _ => { + emit!(InvalidRowEventType{event: &event}) + } + } + } + } + // Explicitly dropping to showcase that the status of the batch is sent to the channel. + drop(batch); + }.boxed() + }; + + // Return if send was unsuccessful. + if let Err(send_error) = self.out.send_event_stream(&mut output_stream).await { + // TODO: consider dedicated error. + error!("Failed to send event stream: {}.", send_error); + let (count, _) = output_stream.size_hint(); + emit!(StreamClosedError { count }); + return Ok(()); + } + + // dropping like s3 sender + drop(output_stream); // TODO: better explanation + + // Run success handler if there are no errors in send or acknowledgement. + match receiver { + None => (blob_pack.success_handler)().await, + Some(receiver) => { + let result = receiver.await; + match result { + BatchStatus::Delivered => { + (blob_pack.success_handler)().await; + emit!(QueueMessageProcessingSucceeded {}); + } + BatchStatus::Errored => { + emit!(QueueMessageProcessingErrored {}); + } + BatchStatus::Rejected => { + // TODO: consider allowing rejected events wihtout retrying, like s3 + emit!(QueueMessageProcessingRejected {}); + } + } + } + } + + Ok(()) + } +} + +#[async_trait::async_trait] +#[typetag::serde(name = "azure_blob")] +impl SourceConfig for AzureBlobConfig { + async fn build(&self, cx: SourceContext) -> crate::Result { + self.validate()?; + let azure_blob_streamer = AzureBlobStreamer::new( + cx.shutdown.clone(), + cx.out.clone(), + cx.log_namespace(self.log_namespace), + cx.do_acknowledgements(self.acknowledgements), + self.decoding.clone(), + )?; + + let blob_pack_stream: BlobPackStream = match self.strategy { + Strategy::Test => { + // streaming incremented numbers periodically + let exec_interval_secs = self.exec_interval_secs; + let shutdown = cx.shutdown.clone(); + stream! { + let schedule = Duration::from_secs(exec_interval_secs); + let mut counter = 0; + let mut interval = IntervalStream::new(time::interval(schedule)).take_until(shutdown); + while interval.next().await.is_some() { + counter += 1; + let counter_copy = counter; + yield BlobPack { + row_stream: stream! { + for i in 0..=counter { + yield format!("{}:{}", counter, i).into_bytes(); + } + }.boxed(), + success_handler: Box::new(move || { + Box::pin(async move { + debug!("Successfully processed blob pack for counter {}.", counter_copy); + }) + }), + } + } + }.boxed() + } + Strategy::StorageQueue => make_azure_row_stream(self, cx.shutdown.clone())?, + }; + Ok(Box::pin( + azure_blob_streamer.run_streaming(blob_pack_stream), + )) + } + + fn outputs(&self, global_log_namespace: LogNamespace) -> Vec { + let log_namespace = global_log_namespace.merge(self.log_namespace); + let schema_definition = self + .decoding + .schema_definition(log_namespace) + .with_standard_vector_source_metadata(); + + vec![SourceOutput::new_maybe_logs( + self.decoding.output_type(), + schema_definition, + )] + } + + fn can_acknowledge(&self) -> bool { + true + } +} + +fn default_exec_interval_secs() -> u64 { + 1 +} diff --git a/src/sources/azure_blob/queue.rs b/src/sources/azure_blob/queue.rs new file mode 100644 index 0000000000000..8754c3443ef4d --- /dev/null +++ b/src/sources/azure_blob/queue.rs @@ -0,0 +1,363 @@ +use std::{ + io::{BufRead, BufReader, Cursor}, + panic, + sync::Arc, +}; + +use anyhow::anyhow; +use async_stream::stream; +use azure_core; +use azure_storage_blobs::prelude::ContainerClient; +use azure_storage_queues::{operations::Message, QueueClient}; +use base64::{prelude::BASE64_STANDARD, Engine}; +use futures::stream::StreamExt; +use serde::Deserialize; +use serde_with::serde_as; +use snafu::Snafu; +use tokio::{select, time}; + +use vector_lib::{ + configurable::configurable_component, + internal_event::{ByteSize, BytesReceived, InternalEventHandle, Protocol, Registered}, +}; + +use crate::{ + azure, + internal_events::{ + QueueMessageDeleteError, QueueMessageProcessingError, QueueMessageReceiveError, + QueueStorageInvalidEventIgnored, QueueStorageMismatchingContainerName, BlobDoesntExist, + }, + shutdown::ShutdownSignal, + sources::azure_blob::{AzureBlobConfig, BlobPack, BlobPackStream}, +}; + +/// Azure Queue configuration options. +#[serde_as] +#[configurable_component] +#[derive(Clone, Debug, Derivative)] +#[derivative(Default)] +#[serde(deny_unknown_fields)] +pub(super) struct Config { + /// The name of the storage queue to poll for events. + pub(super) queue_name: String, + + /// How long to wait while polling the event grid queue for new messages, in seconds. + /// + // NOTE: We restrict this to u32 for safe conversion to i32 later. + #[serde(default = "default_poll_secs")] + #[derivative(Default(value = "default_poll_secs()"))] + #[configurable(metadata(docs::type_unit = "seconds"))] + pub(super) poll_secs: u32, +} + +pub fn make_azure_row_stream( + cfg: &AzureBlobConfig, + shutdown: ShutdownSignal, +) -> crate::Result { + let queue_client = make_queue_client(cfg)?; + let container_client = make_container_client(cfg)?; + let bytes_received = register!(BytesReceived::from(Protocol::HTTP)); + let poll_interval = std::time::Duration::from_secs( + cfg.queue + .as_ref() + .ok_or(anyhow!("Missing Event Grid queue config."))? + .poll_secs as u64, + ); + + Ok(Box::pin(stream! { + // TODO: add a way to stop this loop, possibly with shutdown + loop { + let messages = match queue_client.get_messages().number_of_messages(num_messages()).await { + Ok(messages) => messages, + Err(e) => { + emit!(QueueMessageReceiveError{error: &e}); + continue; + } + }; + if !messages.messages.is_empty() { + for message in messages.messages { + let msg_id = message.message_id.clone(); + match proccess_event_grid_message( + message, + &container_client, + &queue_client, + bytes_received.clone() + ).await { + Ok(blob_pack) => { + match blob_pack { + None => trace!("Message {msg_id} is ignored, \ + no blob stream stream created from it. \ + Will retry on next message."), + Some(bp) => yield bp + } + }, + Err(e) => { + emit!(QueueMessageProcessingError{ + error: &e, + message_id: &msg_id + }); + } + } + } + } else { + // sleep or shutdown + select! { + _ = shutdown.clone() => { + info!("Shutdown signal received, terminating azure row stream."); + break; + }, + _ = time::sleep(poll_interval) => { } + } + } + } + })) +} + +pub fn make_queue_client(cfg: &AzureBlobConfig) -> crate::Result> { + let q = cfg.queue.clone().ok_or("Missing queue.")?; + azure::build_queue_client( + cfg.connection_string + .as_ref() + .map(|v| v.inner().to_string()), + cfg.storage_account.as_ref().map(|v| v.to_string()), + q.queue_name.clone(), + cfg.endpoint.clone(), + cfg.client_credentials.clone(), + ) +} + +pub fn make_container_client(cfg: &AzureBlobConfig) -> crate::Result> { + azure::build_container_client( + cfg.connection_string + .as_ref() + .map(|v| v.inner().to_string()), + cfg.storage_account.as_ref().map(|v| v.to_string()), + cfg.container_name.clone(), + cfg.endpoint.clone(), + cfg.client_credentials.clone(), + ) +} + +#[derive(Clone, Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +struct AzureStorageEvent { + pub subject: String, + pub event_type: String, +} + +#[derive(Debug, Snafu)] +pub enum ProcessingError { + #[snafu(display("Could not decode Queue message with id {}: {}", message_id, error))] + InvalidQueueMessage { + error: serde_json::Error, + message_id: String, + }, + + #[snafu(display("Failed to base64 decode message: {}", error))] + FailedDecodingMessageBase64 { error: base64::DecodeError }, + + #[snafu(display("Failed to utf8 decode message: {}", error))] + FailedDecodingUTF8 { error: std::string::FromUtf8Error }, + + #[snafu(display("Failed to get blob: {}", error))] + FailedToGetBlob { error: azure_core::Error }, + + #[snafu(display("Failed to parse {} as subject", subject))] + FailedToParseSubject { subject: String }, +} + +async fn proccess_event_grid_message( + message: Message, + container_client: &ContainerClient, + queue_client: &QueueClient, + bytes_received: Registered, +) -> Result, ProcessingError> { + let msg_id = message.message_id.clone(); + let decoded_bytes = BASE64_STANDARD + .decode(&message.message_text) + .map_err(|e| ProcessingError::FailedDecodingMessageBase64 { error: e })?; + let decoded_string = String::from_utf8(decoded_bytes) + .map_err(|e| ProcessingError::FailedDecodingUTF8 { error: e })?; + let body: AzureStorageEvent = serde_json::from_str(decoded_string.as_str()).map_err(|e| { + ProcessingError::InvalidQueueMessage { + error: e, + message_id: msg_id, + } + })?; + if body.event_type != "Microsoft.Storage.BlobCreated" { + emit!(QueueStorageInvalidEventIgnored { + container: container_client.container_name(), + subject: &body.subject, + event_type: &body.event_type, + }); + return Ok(None); + } + match parse_subject(body.subject.clone()) { + Some((container, blob)) => { + if container != container_client.container_name() { + emit!(QueueStorageMismatchingContainerName { + configured_container: container_client.container_name(), + container: container.as_str(), + }); + + return Ok(None); + } + trace!( + "Detected new blob creation in container '{}': '{}'", + &container, + &blob + ); + let blob_client = container_client.blob_client(blob); + let mut result: Vec = vec![]; + let mut stream = blob_client.get().into_stream(); + while let Some(value) = stream.next().await { + match value { + Ok(response) => { + let mut body = response.data; + while let Some(value) = body.next().await { + match value { + Ok(chunk) => result.extend(&chunk), + Err(e) => { + // This should now happen as long as `next()` is working + // correctly. Leaving just a safeguard, not to crash Vector. + trace!("Failed to read body chunk: {}", e); + break; + } + } + } + } + Err(e) => { + if let Some(http_error) = e.as_http_error() { + if http_error.status() == azure_core::StatusCode::NotFound { + emit!(BlobDoesntExist{ + nonexistent_blob_name: blob_client.blob_name(), + }); + remove_message_from_queue(queue_client, message).await; + return Ok(None); + } + } + return Err(ProcessingError::FailedToGetBlob { error: e }); + } + } + } + + let reader = Cursor::new(result); + let buffered = BufReader::new(reader); + let queue_client_copy = queue_client.clone(); + let bytes_received_copy = bytes_received.clone(); + + Ok(Some(BlobPack { + row_stream: Box::pin(stream! { + for line in buffered.lines() { + let line = line.map(|line| line.as_bytes().to_vec()); + let line = match line { + Ok(l) => l, + Err(e) => { + error!("Failed to map line: {}", e); + break; + } + }; + bytes_received_copy.emit(ByteSize(line.len())); + yield line; + } + }), + success_handler: Box::new(|| { + Box::pin(async move { + remove_message_from_queue(&queue_client_copy, message).await; + }) + }), + })) + } + None => { + return Err(ProcessingError::FailedToParseSubject { + subject: body.subject, + }); + } + } +} + +fn parse_subject(subject: String) -> Option<(String, String)> { + let parts: Vec<&str> = subject.split('/').collect(); + if parts.len() < 7 { + warn!("Ignoring event because of wrong subject format"); + return None; + } + let container = parts[4]; + let blob = parts[6..].join("/"); + Some((container.to_string(), blob)) +} + +const fn default_poll_secs() -> u32 { + 15 +} + +// Number of messages to consume from the queue at once. This is the maximum +// value allowed by the Azure API. +const fn num_messages() -> u8 { + 32 +} + +async fn remove_message_from_queue(queue_client: &QueueClient, message: Message) { + _ = queue_client.pop_receipt_client(message).delete().await.inspect_err(move |e| { + emit!(QueueMessageDeleteError { error: &e }) + }) +} + +#[test] +fn test_azure_storage_event() { + let event_value: AzureStorageEvent = serde_json::from_str( + r#"{ + "topic": "/subscriptions/fa5f2180-1451-4461-9b1f-aae7d4b33cf8/resourceGroups/events_poc/providers/Microsoft.Storage/storageAccounts/eventspocaccount", + "subject": "/blobServices/default/containers/content/blobs/foo", + "eventType": "Microsoft.Storage.BlobCreated", + "id": "be3f21f7-201e-000b-7605-a29195062628", + "data": { + "api": "PutBlob", + "clientRequestId": "1fa42c94-6dd3-4172-95c4-fd9cf56b5009", + "requestId": "be3f21f7-201e-000b-7605-a29195000000", + "eTag": "0x8DC701C5D3FFDF6", + "contentType": "application/octet-stream", + "contentLength": 0, + "blobType": "BlockBlob", + "url": "https://eventspocaccount.blob.core.windows.net/content/foo", + "sequencer": "0000000000000000000000000005C5360000000000276a63", + "storageDiagnostics": { + "batchId": "fec5b12c-2006-0034-0005-a25936000000" + } + }, + "dataVersion": "", + "metadataVersion": "1", + "eventTime": "2024-05-09T11:37:10.5637878Z" + }"#, + ).unwrap(); + + assert_eq!( + event_value.subject, + "/blobServices/default/containers/content/blobs/foo".to_string() + ); + assert_eq!( + event_value.event_type, + "Microsoft.Storage.BlobCreated".to_string() + ); +} + +#[test] +fn test_parse_subject_no_dir() { + let subject = "/blobServices/default/containers/content/blobs/foo".to_string(); + let result = parse_subject(subject); + assert_eq!(result, Some(("content".to_string(), "foo".to_string()))); +} + +#[test] +fn test_parse_subject_with_dirs() { + let subject = "/blobServices/default/containers/insights-logs-signinlogs/blobs/tenantId=0e35ee7a-425d-45a5-9013-218c1eae8fd4/y=2024/m=06/d=20/h=05/m=00/PT1H.json".to_string(); + let result = parse_subject(subject); + assert_eq!( + result, + Some(( + "insights-logs-signinlogs".to_string(), + "tenantId=0e35ee7a-425d-45a5-9013-218c1eae8fd4/y=2024/m=06/d=20/h=05/m=00/PT1H.json" + .to_string() + )) + ); +} diff --git a/src/sources/azure_blob/test.rs b/src/sources/azure_blob/test.rs new file mode 100644 index 0000000000000..83b0e820ca02d --- /dev/null +++ b/src/sources/azure_blob/test.rs @@ -0,0 +1,95 @@ +use super::*; +use crate::{ + config::LogNamespace, event::EventStatus, serde::default_decoding, shutdown::ShutdownSignal, + test_util::collect_n, SourceSender, +}; +use tokio::{select, sync::oneshot}; + +#[tokio::test] +async fn test_messages_delivered() { + let (tx, rx) = SourceSender::new_test_finalize(EventStatus::Delivered); + let streamer = super::AzureBlobStreamer::new( + ShutdownSignal::noop(), + tx, + LogNamespace::Vector, + true, + default_decoding(), + ); + let mut streamer = streamer.expect("Failed to create streamer"); + let (success_sender, success_receiver) = oneshot::channel(); + let blob_pack = BlobPack { + row_stream: Box::pin(stream! { + let lines = vec!["foo", "bar"]; + for line in lines { + yield line.as_bytes().to_vec(); + } + }), + success_handler: Box::new(move || { + Box::pin(async move { + success_sender.send(()).unwrap(); + }) + }), + }; + let (events_collector, events_receiver) = oneshot::channel(); + tokio::spawn(async move { + events_collector.send(collect_n(rx, 2).await).unwrap(); + }); + streamer + .process_blob_pack(blob_pack) + .await + .expect("Failed processing blob pack"); + + let events = select! { + value = events_receiver => value.expect("Failed to receive events"), + _ = time::sleep(Duration::from_secs(5)) => panic!("Timeout waiting for events"), + }; + assert_eq!(events[0].as_log().value().to_string(), "\"foo\""); + assert_eq!(events[1].as_log().value().to_string(), "\"bar\""); + select! { + _ = success_receiver => {} + _ = time::sleep(Duration::from_secs(5)) => panic!("Timeout waiting for success handler"), + } +} + +#[tokio::test] +async fn test_messages_rejected() { + let (tx, rx) = SourceSender::new_test_finalize(EventStatus::Rejected); + let streamer = super::AzureBlobStreamer::new( + ShutdownSignal::noop(), + tx, + LogNamespace::Vector, + true, + default_decoding(), + ); + let mut streamer = streamer.expect("Failed to create streamer"); + let (success_sender, mut success_receiver) = oneshot::channel(); + let blob_pack = BlobPack { + row_stream: Box::pin(stream! { + let lines = vec!["foo", "bar"]; + for line in lines { + yield line.as_bytes().to_vec(); + } + }), + success_handler: Box::new(move || { + Box::pin(async move { + success_sender.send(()).unwrap(); + }) + }), + }; + let (events_collector, events_receiver) = oneshot::channel(); + tokio::spawn(async move { + events_collector.send(collect_n(rx, 2).await).unwrap(); + }); + streamer + .process_blob_pack(blob_pack) + .await + .expect("Failed processing blob pack"); + + let events = select! { + value = events_receiver => value.expect("Failed to receive events"), + _ = time::sleep(Duration::from_secs(5)) => panic!("Timeout waiting for events"), + }; + assert_eq!(events[0].as_log().value().to_string(), "\"foo\""); + assert_eq!(events[1].as_log().value().to_string(), "\"bar\""); + assert!(success_receiver.try_recv().is_err()); // assert success handler not called +} diff --git a/src/sources/mod.rs b/src/sources/mod.rs index f7b2b6bb534e8..bdaa17166d89e 100644 --- a/src/sources/mod.rs +++ b/src/sources/mod.rs @@ -13,6 +13,8 @@ pub mod aws_kinesis_firehose; pub mod aws_s3; #[cfg(feature = "sources-aws_sqs")] pub mod aws_sqs; +#[cfg(feature = "sources-azure_blob")] +pub mod azure_blob; #[cfg(feature = "sources-datadog_agent")] pub mod datadog_agent; #[cfg(feature = "sources-demo_logs")]