From 7af22c985c2144d1c2938cda5f918041b5ec1a19 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 31 Jul 2025 10:47:31 +0200 Subject: [PATCH 1/3] depdendencies: added code0-definition-reader and removed unused dependencies --- Cargo.lock | 3212 +++++----------------------------------------------- Cargo.toml | 18 +- 2 files changed, 291 insertions(+), 2939 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2c7e4d9..dac4c3e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,17 +17,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - [[package]] name = "aho-corasick" version = "1.1.3" @@ -37,287 +26,12 @@ dependencies = [ "memchr", ] -[[package]] -name = "amq-protocol" -version = "8.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56406d1cfd9933844a083206bf10fe3748c753bf43c64d4f4453d87181c14f6" -dependencies = [ - "amq-protocol-tcp", - "amq-protocol-types", - "amq-protocol-uri", - "cookie-factory", - "nom 8.0.0", - "serde", -] - -[[package]] -name = "amq-protocol-tcp" -version = "8.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c95840a64f5529882346cf7710d0c8d6b6e6fb4ecd3fed0883d1ae97c42efc14" -dependencies = [ - "amq-protocol-uri", - "tcp-stream", - "tracing", -] - -[[package]] -name = "amq-protocol-types" -version = "8.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a7bc568496f6fd598f44bf5c7e9f8157111634a54c114cb9c087e05d282c91a" -dependencies = [ - "cookie-factory", - "nom 8.0.0", - "serde", - "serde_json", -] - -[[package]] -name = "amq-protocol-uri" -version = "8.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d80bcd4af9f0fd2bad6def25c66d55130178749cc98000fd3de2b44991b5ed" -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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - [[package]] name = "anyhow" version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" -[[package]] -name = "asn1-rs" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60" -dependencies = [ - "asn1-rs-derive", - "asn1-rs-impl", - "displaydoc", - "nom 7.1.3", - "num-traits", - "rusticata-macros", - "thiserror", - "time", -] - -[[package]] -name = "asn1-rs-derive" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "asn1-rs-impl" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-channel" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" -dependencies = [ - "concurrent-queue", - "event-listener 2.5.3", - "futures-core", -] - -[[package]] -name = "async-channel" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-executor" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "pin-project-lite", - "slab", -] - -[[package]] -name = "async-global-executor" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" -dependencies = [ - "async-channel 2.3.1", - "async-executor", - "async-io", - "async-lock", - "blocking", - "futures-lite", - "once_cell", -] - -[[package]] -name = "async-global-executor" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13f937e26114b93193065fd44f507aa2e9169ad0cdabbb996920b1fe1ddea7ba" -dependencies = [ - "async-channel 2.3.1", - "async-executor", - "async-io", - "async-lock", - "blocking", - "futures-lite", -] - -[[package]] -name = "async-global-executor-trait" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9af57045d58eeb1f7060e7025a1631cbc6399e0a1d10ad6735b3d0ea7f8346ce" -dependencies = [ - "async-global-executor 3.1.0", - "async-trait", - "executor-trait", -] - -[[package]] -name = "async-io" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" -dependencies = [ - "async-lock", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix 0.38.44", - "slab", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "async-lock" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" -dependencies = [ - "event-listener 5.4.0", - "event-listener-strategy", - "pin-project-lite", -] - -[[package]] -name = "async-reactor-trait" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ce4c5a0627f1b37c346233c34ef2263e6a58812f7c071b71d3712511421422" -dependencies = [ - "async-io", - "async-trait", - "futures-core", - "reactor-trait", -] - -[[package]] -name = "async-std" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" -dependencies = [ - "async-channel 1.9.0", - "async-global-executor 2.4.1", - "async-io", - "async-lock", - "crossbeam-utils", - "futures-channel", - "futures-core", - "futures-io", - "futures-lite", - "gloo-timers", - "kv-log-macro", - "log", - "memchr", - "once_cell", - "pin-project-lite", - "pin-utils", - "slab", - "wasm-bindgen-futures", -] - -[[package]] -name = "async-stream" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-task" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" - [[package]] name = "async-trait" version = "0.1.88" @@ -341,29 +55,6 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" -[[package]] -name = "aws-lc-rs" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fcc8f365936c834db5514fc45aee5b1202d677e6b40e48468aaaa8183ca8c7" -dependencies = [ - "aws-lc-sys", - "zeroize", -] - -[[package]] -name = "aws-lc-sys" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61b1d86e7705efe1be1b569bab41d4fa1e14e220b60a160f78de2db687add079" -dependencies = [ - "bindgen", - "cc", - "cmake", - "dunce", - "fs_extra", -] - [[package]] name = "axum" version = "0.8.4" @@ -424,53 +115,12 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "base64ct" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" - -[[package]] -name = "bindgen" -version = "0.69.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" -dependencies = [ - "bitflags 2.9.0", - "cexpr", - "clang-sys", - "itertools 0.12.1", - "lazy_static", - "lazycell", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn", - "which", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.9.0" @@ -478,1588 +128,389 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" [[package]] -name = "block-buffer" -version = "0.10.4" +name = "bytes" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] -name = "block-padding" -version = "0.3.3" +name = "cfg-if" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" -dependencies = [ - "generic-array", -] +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "blocking" -version = "1.6.1" +name = "code0-definition-reader" +version = "0.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +checksum = "d3823dd8c9a5a8efec3934080920c8d10b8043637a5c8fdfc86c5fc34942e20a" dependencies = [ - "async-channel 2.3.1", - "async-task", - "futures-io", - "futures-lite", - "piper", + "serde", + "serde_json", + "tucana", ] [[package]] -name = "bollard" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899ca34eb6924d6ec2a77c6f7f5c7339e60fd68235eaf91edd5a15f12958bb06" +name = "code0-flow" +version = "0.0.0" dependencies = [ - "async-stream", - "base64 0.22.1", - "bitflags 2.9.0", - "bollard-buildkit-proto", - "bollard-stubs", - "bytes", - "chrono", - "futures-core", - "futures-util", - "hex", - "home", - "http", - "http-body-util", - "hyper", - "hyper-named-pipe", - "hyper-rustls", - "hyper-util", - "hyperlocal", + "async-trait", + "code0-definition-reader", + "dotenv", "log", - "num", - "pin-project-lite", - "rand", - "rustls", - "rustls-native-certs", - "rustls-pemfile", - "rustls-pki-types", "serde", - "serde_derive", "serde_json", - "serde_repr", - "serde_urlencoded", - "thiserror", "tokio", - "tokio-stream", - "tokio-util", - "tonic", - "tower-service", - "url", - "winapi", -] - -[[package]] -name = "bollard-buildkit-proto" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40b3e79f8bd0f25f32660e3402afca46fd91bebaf135af017326d905651f8107" -dependencies = [ - "prost", - "prost-types", "tonic", - "ureq", -] - -[[package]] -name = "bollard-stubs" -version = "1.48.3-rc.28.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ea257e555d16a2c01e5593f40b73865cdf12efbceda33c6d14a2d8d1490368" -dependencies = [ - "base64 0.22.1", - "bollard-buildkit-proto", - "bytes", - "chrono", - "prost", - "serde", - "serde_json", - "serde_repr", - "serde_with", + "tucana", ] [[package]] -name = "bumpalo" -version = "3.17.0" +name = "dotenv" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" [[package]] -name = "bytes" -version = "1.10.1" +name = "either" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] -name = "cbc" -version = "0.1.2" +name = "equivalent" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" -dependencies = [ - "cipher", -] +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] -name = "cc" -version = "1.2.21" +name = "errno" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8691782945451c1c383942c4874dbe63814f61cb57ef773cda2972682b7bb3c0" +checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" dependencies = [ - "jobserver", "libc", - "shlex", + "windows-sys 0.59.0", ] [[package]] -name = "cexpr" -version = "0.6.0" +name = "fastrand" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom 7.1.3", -] +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] -name = "cfg-if" -version = "1.0.0" +name = "fixedbitset" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] -name = "chrono" -version = "0.4.41" +name = "fnv" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "num-traits", - "serde", - "windows-link", -] +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] -name = "cipher" -version = "0.4.4" +name = "futures-channel" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ - "crypto-common", - "inout", + "futures-core", ] [[package]] -name = "clang-sys" -version = "1.8.1" +name = "futures-core" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" -dependencies = [ - "glob", - "libc", - "libloading", -] +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] -name = "cmake" -version = "0.1.54" +name = "futures-sink" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" -dependencies = [ - "cc", -] +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] -name = "cms" -version = "0.2.3" +name = "futures-task" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b77c319abfd5219629c45c34c89ba945ed3c5e49fcde9d16b6c3885f118a730" -dependencies = [ - "const-oid", - "der", - "spki", - "x509-cert", -] - -[[package]] -name = "code0-flow" -version = "0.0.0" -dependencies = [ - "async-trait", - "dotenv", - "futures-lite", - "lapin", - "log", - "redis", - "serde", - "serde_json", - "serial_test", - "testcontainers", - "tokio", - "tonic", - "tucana", -] +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] -name = "combine" -version = "4.6.7" +name = "futures-util" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ - "bytes", "futures-core", - "memchr", + "futures-task", "pin-project-lite", - "tokio", - "tokio-util", + "pin-utils", ] [[package]] -name = "concurrent-queue" -version = "2.5.0" +name = "getrandom" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" dependencies = [ - "crossbeam-utils", + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "cookie-factory" -version = "0.3.3" +name = "gimli" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9885fa71e26b8ab7855e2ec7cae6e9b380edff76cd052e07c683a0319d51b3a2" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] -name = "core-foundation" -version = "0.10.0" +name = "h2" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" dependencies = [ - "core-foundation-sys", - "libc", + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", ] [[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cpufeatures" -version = "0.2.17" +name = "hashbrown" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" [[package]] -name = "crossbeam-utils" -version = "0.8.21" +name = "heck" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] -name = "crypto-common" -version = "0.1.6" +name = "http" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ - "generic-array", - "typenum", + "bytes", + "fnv", + "itoa", ] [[package]] -name = "darling" -version = "0.20.11" +name = "http-body" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ - "darling_core", - "darling_macro", + "bytes", + "http", ] [[package]] -name = "darling_core" -version = "0.20.11" +name = "http-body-util" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn", + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", ] [[package]] -name = "darling_macro" -version = "0.20.11" +name = "httparse" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" -dependencies = [ - "darling_core", - "quote", - "syn", -] +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] -name = "data-encoding" -version = "2.9.0" +name = "httpdate" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] -name = "der" -version = "0.7.10" +name = "hyper" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ - "const-oid", - "der_derive", - "flagset", - "pem-rfc7468", - "zeroize", + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", ] [[package]] -name = "der-parser" -version = "10.0.0" +name = "hyper-timeout" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "asn1-rs", - "displaydoc", - "nom 7.1.3", - "num-bigint", - "num-traits", - "rusticata-macros", + "hyper", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", ] [[package]] -name = "der_derive" -version = "0.7.3" +name = "hyper-util" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" +checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" dependencies = [ - "proc-macro2", - "quote", - "syn", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "libc", + "pin-project-lite", + "socket2 0.5.9", + "tokio", + "tower-service", + "tracing", ] [[package]] -name = "deranged" -version = "0.4.0" +name = "indexmap" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ - "powerfmt", - "serde", + "equivalent", + "hashbrown", ] [[package]] -name = "des" -version = "0.8.1" +name = "io-uring" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdd80ce8ce993de27e9f063a444a4d53ce8e8db4c1f00cc03af5ad5a9867a1e" +checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" dependencies = [ - "cipher", + "bitflags", + "cfg-if", + "libc", ] [[package]] -name = "digest" -version = "0.10.7" +name = "itertools" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" dependencies = [ - "block-buffer", - "crypto-common", - "subtle", + "either", ] [[package]] -name = "displaydoc" -version = "0.2.5" +name = "itoa" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] -name = "docker_credential" -version = "1.3.2" +name = "libc" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d89dfcba45b4afad7450a99b39e751590463e45c04728cf555d36bb66940de8" -dependencies = [ - "base64 0.21.7", - "serde", - "serde_json", -] +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] -name = "dotenv" -version = "0.15.0" +name = "linux-raw-sys" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] -name = "dunce" -version = "1.0.5" +name = "log" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] -name = "either" -version = "1.15.0" +name = "matchit" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] -name = "equivalent" -version = "1.0.2" +name = "memchr" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] -name = "errno" -version = "0.3.11" +name = "mime" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] -name = "etcetera" -version = "0.10.0" +name = "miniz_oxide" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c7b13d0780cb82722fd59f6f57f925e143427e4a75313a6c77243bf5326ae6" +checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" dependencies = [ - "cfg-if", - "home", - "windows-sys 0.59.0", + "adler2", ] [[package]] -name = "event-listener" -version = "2.5.3" +name = "mio" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] [[package]] -name = "event-listener" -version = "5.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener 5.4.0", - "pin-project-lite", -] - -[[package]] -name = "executor-trait" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c39dff9342e4e0e16ce96be751eb21a94e94a87bb2f6e63ad1961c2ce109bf" -dependencies = [ - "async-trait", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "filetime" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" -dependencies = [ - "cfg-if", - "libc", - "libredox", - "windows-sys 0.59.0", -] - -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - -[[package]] -name = "flagset" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7ac824320a75a52197e8f2d787f6a38b6718bb6897a35142d749af3c0e8f4fe" - -[[package]] -name = "flume" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" -dependencies = [ - "futures-core", - "futures-sink", - "spin", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "fs_extra" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" - -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-lite" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" -dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasi 0.14.2+wasi-0.2.4", -] - -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "glob" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" - -[[package]] -name = "gloo-timers" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "h2" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http", - "indexmap 2.9.0", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.15.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest", -] - -[[package]] -name = "home" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "http" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "hyper" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-named-pipe" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" -dependencies = [ - "hex", - "hyper", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", - "winapi", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" -dependencies = [ - "futures-util", - "http", - "hyper", - "hyper-util", - "rustls", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tower-service", -] - -[[package]] -name = "hyper-timeout" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" -dependencies = [ - "hyper", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "hyper", - "libc", - "pin-project-lite", - "socket2 0.5.9", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "hyperlocal" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" -dependencies = [ - "hex", - "http-body-util", - "hyper", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.63" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locid" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" - -[[package]] -name = "icu_normalizer" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" -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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" - -[[package]] -name = "icu_properties" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locid_transform", - "icu_properties_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" - -[[package]] -name = "icu_provider" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "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", - "quote", - "syn", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" -dependencies = [ - "equivalent", - "hashbrown 0.15.3", - "serde", -] - -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "block-padding", - "generic-array", -] - -[[package]] -name = "io-uring" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" -dependencies = [ - "bitflags 2.9.0", - "cfg-if", - "libc", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" - -[[package]] -name = "jobserver" -version = "0.1.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" -dependencies = [ - "getrandom 0.3.2", - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "kv-log-macro" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" -dependencies = [ - "log", -] - -[[package]] -name = "lapin" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cefae8bc0ff5fabbb04b13f92b931472fcce42eae1ae9d629ed866ffe1fff54" -dependencies = [ - "amq-protocol", - "async-global-executor-trait", - "async-reactor-trait", - "async-trait", - "executor-trait", - "flume", - "futures-core", - "futures-io", - "reactor-trait", - "tracing", - "waker-fn", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - -[[package]] -name = "libc" -version = "0.2.172" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" - -[[package]] -name = "libloading" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" -dependencies = [ - "cfg-if", - "windows-targets", -] - -[[package]] -name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.9.0", - "libc", - "redox_syscall 0.5.12", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - -[[package]] -name = "linux-raw-sys" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" - -[[package]] -name = "litemap" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" -dependencies = [ - "value-bag", -] - -[[package]] -name = "matchit" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "miniz_oxide" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" -dependencies = [ - "adler2", -] - -[[package]] -name = "mio" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" -dependencies = [ - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", -] - -[[package]] -name = "multimap" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "nom" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" -dependencies = [ - "memchr", -] - -[[package]] -name = "num" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" -dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" -dependencies = [ - "num-bigint", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "object" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "memchr", -] - -[[package]] -name = "oid-registry" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7" -dependencies = [ - "asn1-rs", -] - -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - -[[package]] -name = "p12-keystore" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cae83056e7cb770211494a0ecf66d9fa7eba7d00977e5bb91f0e925b40b937f" -dependencies = [ - "cbc", - "cms", - "der", - "des", - "hex", - "hmac", - "pkcs12", - "pkcs5", - "rand", - "rc2", - "sha1", - "sha2", - "thiserror", - "x509-parser", -] - -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "parking_lot" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.5.12", - "smallvec", - "windows-targets", -] - -[[package]] -name = "parse-display" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "914a1c2265c98e2446911282c6ac86d8524f495792c38c5bd884f80499c7538a" -dependencies = [ - "parse-display-derive", - "regex", - "regex-syntax", -] - -[[package]] -name = "parse-display-derive" -version = "0.9.1" +name = "multimap" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ae7800a4c974efd12df917266338e79a7a74415173caf7e70aa0a0707345281" -dependencies = [ - "proc-macro2", - "quote", - "regex", - "regex-syntax", - "structmeta", - "syn", -] +checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" [[package]] -name = "pbkdf2" -version = "0.12.2" +name = "object" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ - "digest", - "hmac", + "memchr", ] [[package]] -name = "pem-rfc7468" -version = "0.7.0" +name = "once_cell" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "percent-encoding" @@ -2074,7 +525,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset", - "indexmap 2.9.0", + "indexmap", ] [[package]] @@ -2109,77 +560,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "piper" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - -[[package]] -name = "pkcs12" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "695b3df3d3cc1015f12d70235e35b6b79befc5fa7a9b95b951eab1dd07c9efc2" -dependencies = [ - "cms", - "const-oid", - "der", - "digest", - "spki", - "x509-cert", - "zeroize", -] - -[[package]] -name = "pkcs5" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e847e2c91a18bfa887dd028ec33f2fe6f25db77db3619024764914affe8b69a6" -dependencies = [ - "aes", - "cbc", - "der", - "pbkdf2", - "scrypt", - "sha2", - "spki", -] - -[[package]] -name = "polling" -version = "3.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix 0.38.44", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - [[package]] name = "prettyplease" version = "0.2.32" @@ -2200,410 +580,131 @@ dependencies = [ ] [[package]] -name = "prost" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" -dependencies = [ - "bytes", - "prost-derive", -] - -[[package]] -name = "prost-build" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" -dependencies = [ - "heck", - "itertools 0.14.0", - "log", - "multimap", - "once_cell", - "petgraph", - "prettyplease", - "prost", - "prost-types", - "regex", - "syn", - "tempfile", -] - -[[package]] -name = "prost-derive" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" -dependencies = [ - "anyhow", - "itertools 0.14.0", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "prost-types" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" -dependencies = [ - "prost", -] - -[[package]] -name = "quote" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" - -[[package]] -name = "rand" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" -dependencies = [ - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" -dependencies = [ - "getrandom 0.3.2", -] - -[[package]] -name = "rc2" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62c64daa8e9438b84aaae55010a93f396f8e60e3911590fcba770d04643fc1dd" -dependencies = [ - "cipher", -] - -[[package]] -name = "reactor-trait" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2eb4ff39ed91c79034b2856a73b07bc8afd752c981bc4433bcbeff531e275a" -dependencies = [ - "async-io", - "async-trait", - "futures-core", - "futures-io", -] - -[[package]] -name = "redis" -version = "0.32.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1f66bf4cac9733a23bcdf1e0e01effbaaad208567beba68be8f67e5f4af3ee1" -dependencies = [ - "async-std", - "bytes", - "cfg-if", - "combine", - "futures-util", - "itoa", - "num-bigint", - "percent-encoding", - "pin-project-lite", - "ryu", - "serde", - "serde_json", - "sha1_smol", - "socket2 0.6.0", - "tokio", - "tokio-util", - "url", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" -dependencies = [ - "bitflags 2.9.0", -] - -[[package]] -name = "regex" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" - -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.16", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rusticata-macros" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" -dependencies = [ - "nom 7.1.3", -] - -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.9.0", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustix" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" -dependencies = [ - "bitflags 2.9.0", - "errno", - "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustls" -version = "0.23.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" -dependencies = [ - "aws-lc-rs", - "log", - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-connector" -version = "0.21.7" +name = "prost" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b68f41384a0c195494f07c9bf5d020dcfca869d3b1492c9391bbc267bd9904fd" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ - "log", - "rustls", - "rustls-native-certs", - "rustls-pki-types", - "rustls-webpki", + "bytes", + "prost-derive", ] [[package]] -name = "rustls-native-certs" -version = "0.8.1" +name = "prost-build" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" dependencies = [ - "openssl-probe", - "rustls-pki-types", - "schannel", - "security-framework", + "heck", + "itertools", + "log", + "multimap", + "once_cell", + "petgraph", + "prettyplease", + "prost", + "prost-types", + "regex", + "syn", + "tempfile", ] [[package]] -name = "rustls-pemfile" -version = "2.2.0" +name = "prost-derive" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ - "rustls-pki-types", + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "rustls-pki-types" -version = "1.12.0" +name = "prost-types" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" dependencies = [ - "zeroize", + "prost", ] [[package]] -name = "rustls-webpki" -version = "0.103.2" +name = "quote" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7149975849f1abb3832b246010ef62ccc80d3a76169517ada7188252b9cfb437" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ - "aws-lc-rs", - "ring", - "rustls-pki-types", - "untrusted", + "proc-macro2", ] [[package]] -name = "rustversion" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" - -[[package]] -name = "ryu" -version = "1.0.20" +name = "r-efi" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" [[package]] -name = "salsa20" -version = "0.10.2" +name = "regex" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ - "cipher", + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", ] [[package]] -name = "scc" -version = "2.3.4" +name = "regex-automata" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22b2d775fb28f245817589471dd49c5edf64237f4a19d10ce9a92ff4651a27f4" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ - "sdd", + "aho-corasick", + "memchr", + "regex-syntax", ] [[package]] -name = "schannel" -version = "0.1.27" +name = "regex-syntax" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" -dependencies = [ - "windows-sys 0.59.0", -] +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] -name = "scopeguard" -version = "1.2.0" +name = "rustc-demangle" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] -name = "scrypt" -version = "0.11.0" +name = "rustix" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "pbkdf2", - "salsa20", - "sha2", + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", ] [[package]] -name = "sdd" -version = "3.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "584e070911c7017da6cb2eb0788d09f43d789029b5877d3e5ecc8acf86ceee21" - -[[package]] -name = "security-framework" -version = "3.2.0" +name = "rustversion" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" -dependencies = [ - "bitflags 2.9.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] -name = "security-framework-sys" -version = "2.14.0" +name = "ryu" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" -dependencies = [ - "core-foundation-sys", - "libc", -] +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "serde" @@ -2637,118 +738,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.9.0", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serial_test" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" -dependencies = [ - "futures", - "log", - "once_cell", - "parking_lot", - "scc", - "serial_test_derive", -] - -[[package]] -name = "serial_test_derive" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha1_smol" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" - -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - [[package]] name = "slab" version = "0.4.9" @@ -2784,66 +773,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -dependencies = [ - "lock_api", -] - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "structmeta" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e1575d8d40908d70f6fd05537266b90ae71b15dbbe7a8b7dffa2b759306d329" -dependencies = [ - "proc-macro2", - "quote", - "structmeta-derive", - "syn", -] - -[[package]] -name = "structmeta-derive" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - [[package]] name = "syn" version = "2.0.101" @@ -2861,29 +790,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tcp-stream" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0217559d8c5a883d66838180671a74007e785689364ebe9627d517af936eaa9" -dependencies = [ - "cfg-if", - "p12-keystore", - "rustls-connector", - "rustls-pemfile", -] - [[package]] name = "tempfile" version = "3.19.1" @@ -2891,101 +797,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ "fastrand", - "getrandom 0.3.2", + "getrandom", "once_cell", - "rustix 1.0.7", - "windows-sys 0.59.0", -] - -[[package]] -name = "testcontainers" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b92bce247dc9260a19808321e11b51ea6a0293d02b48ab1c6578960610cfa2a7" -dependencies = [ - "async-trait", - "bollard", - "bollard-stubs", - "bytes", - "docker_credential", - "either", - "etcetera", - "futures", - "log", - "memchr", - "parse-display", - "pin-project-lite", - "serde", - "serde_json", - "serde_with", - "thiserror", - "tokio", - "tokio-stream", - "tokio-tar", - "tokio-util", - "ulid", - "url", -] - -[[package]] -name = "thiserror" -version = "2.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "time" -version = "0.3.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" - -[[package]] -name = "time-macros" -version = "0.2.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinystr" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" -dependencies = [ - "displaydoc", - "zerovec", + "rustix", + "windows-sys 0.59.0", ] [[package]] @@ -3017,16 +832,6 @@ dependencies = [ "syn", ] -[[package]] -name = "tokio-rustls" -version = "0.26.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" -dependencies = [ - "rustls", - "tokio", -] - [[package]] name = "tokio-stream" version = "0.1.17" @@ -3038,21 +843,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-tar" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5714c010ca3e5c27114c1cdeb9d14641ace49874aa5626d7149e47aedace75" -dependencies = [ - "filetime", - "futures-core", - "libc", - "redox_syscall 0.3.5", - "tokio", - "tokio-stream", - "xattr", -] - [[package]] name = "tokio-util" version = "0.7.15" @@ -3074,7 +864,7 @@ checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" dependencies = [ "async-trait", "axum", - "base64 0.22.1", + "base64", "bytes", "h2", "http", @@ -3117,7 +907,7 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", - "indexmap 2.9.0", + "indexmap", "pin-project-lite", "slab", "sync_wrapper", @@ -3191,91 +981,12 @@ dependencies = [ "tonic-build", ] -[[package]] -name = "typenum" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" - -[[package]] -name = "ulid" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "470dbf6591da1b39d43c14523b2b469c86879a53e8b758c8e090a470fe7b1fbe" -dependencies = [ - "rand", - "web-time", -] - [[package]] name = "unicode-ident" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "ureq" -version = "2.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" -dependencies = [ - "base64 0.22.1", - "log", - "once_cell", - "rustls", - "rustls-pki-types", - "url", - "webpki-roots 0.26.11", -] - -[[package]] -name = "url" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "value-bag" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "waker-fn" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" - [[package]] name = "want" version = "0.3.1" @@ -3300,208 +1011,6 @@ dependencies = [ "wit-bindgen-rt", ] -[[package]] -name = "wasm-bindgen" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" -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", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" -dependencies = [ - "cfg-if", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "web-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "0.26.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" -dependencies = [ - "webpki-roots 1.0.2", -] - -[[package]] -name = "webpki-roots" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.61.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-implement" -version = "0.60.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-interface" -version = "0.59.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-link" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" - -[[package]] -name = "windows-result" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" -dependencies = [ - "windows-link", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -3590,148 +1099,5 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.0", -] - -[[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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - -[[package]] -name = "x509-cert" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1301e935010a701ae5f8655edc0ad17c44bad3ac5ce8c39185f75453b720ae94" -dependencies = [ - "const-oid", - "der", - "spki", -] - -[[package]] -name = "x509-parser" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4569f339c0c402346d4a75a9e39cf8dad310e287eef1ff56d4c68e5067f53460" -dependencies = [ - "asn1-rs", - "data-encoding", - "der-parser", - "lazy_static", - "nom 7.1.3", - "oid-registry", - "rusticata-macros", - "thiserror", - "time", -] - -[[package]] -name = "xattr" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" -dependencies = [ - "libc", - "rustix 1.0.7", -] - -[[package]] -name = "yoke" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerocopy" -version = "0.8.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" - -[[package]] -name = "zerovec" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "bitflags", ] diff --git a/Cargo.toml b/Cargo.toml index d4700b3..fb56e16 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,31 +12,17 @@ tucana = { version = "0.0.32", features = ["aquila"] } tokio = "1.43.0" async-trait = "0.1.85" log = "0.4.24" -redis = { version = "0.32.0", features = [ - "aio", - "tokio-comp", - "async-std-comp", - "json", -] } serde_json = "1.0.138" serde = "1.0.138" -lapin = "3.0.0" -futures-lite = "2.6.0" tonic = "0.13.0" dotenv = "0.15.0" - - -[dev-dependencies] -testcontainers = "0.25.0" -serial_test = "3.2.0" +code0-definition-reader = "0.0.8" [lib] doctest = true [features] default = ["all"] -flow_queue = [] -flow_store = [] flow_definition = [] flow_config = [] -all = ["flow_queue", "flow_store", "flow_definition", "flow_config"] +all = ["flow_definition", "flow_config"] From 22469dd39b8fadcbb9d6b73bc1ccafdb114a1634 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 31 Jul 2025 10:47:44 +0200 Subject: [PATCH 2/3] feat: added reader to definition feature --- src/flow_definition/mod.rs | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/src/flow_definition/mod.rs b/src/flow_definition/mod.rs index 6ce5183..805eda1 100644 --- a/src/flow_definition/mod.rs +++ b/src/flow_definition/mod.rs @@ -16,12 +16,39 @@ pub struct FlowUpdateService { } impl FlowUpdateService { - pub fn from_url(aquila_url: String) -> Self { + /// Create a new FlowUpdateService instance from an Aquila URL and a definition path. + /// + /// This will read the definition files from the given path and initialize the service with the data types, runtime definitions, and flow types. + pub fn from_url(aquila_url: String, definition_path: &str) -> Self { + let mut data_types = Vec::new(); + let mut runtime_definitions = Vec::new(); + let mut flow_types = Vec::new(); + + let definitions = match code0_definition_reader::parser::Parser::from_path(definition_path) + { + Some(reader) => reader, + None => { + log::error!("No definition folder found at path: {}", definition_path); + return Self { + aquila_url, + data_types, + runtime_definitions, + flow_types, + }; + } + }; + + for feature in definitions.features { + data_types.append(&mut feature.data_types.clone()); + flow_types.append(&mut feature.flow_types.clone()); + runtime_definitions.append(&mut feature.runtime_functions.clone()); + } + Self { aquila_url, - data_types: Vec::new(), - runtime_definitions: Vec::new(), - flow_types: Vec::new(), + data_types, + runtime_definitions, + flow_types, } } From dd12e21b62d55471e8be26e6d8ba5fed8de7ede3 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 31 Jul 2025 10:48:04 +0200 Subject: [PATCH 3/3] drop: removed flow_queue and flow_store --- src/flow_config/mod.rs | 15 - src/flow_queue/connection.rs | 59 --- src/flow_queue/mod.rs | 2 - src/flow_queue/service.rs | 330 -------------- src/flow_store/connection.rs | 102 ----- src/flow_store/flow_identifier.rs | 137 ------ src/flow_store/mod.rs | 3 - src/flow_store/service.rs | 715 ------------------------------ src/lib.rs | 8 +- 9 files changed, 1 insertion(+), 1370 deletions(-) delete mode 100644 src/flow_queue/connection.rs delete mode 100644 src/flow_queue/mod.rs delete mode 100644 src/flow_queue/service.rs delete mode 100644 src/flow_store/connection.rs delete mode 100644 src/flow_store/flow_identifier.rs delete mode 100644 src/flow_store/mod.rs delete mode 100644 src/flow_store/service.rs diff --git a/src/flow_config/mod.rs b/src/flow_config/mod.rs index 2d53dbd..96e3152 100644 --- a/src/flow_config/mod.rs +++ b/src/flow_config/mod.rs @@ -32,11 +32,9 @@ pub fn load_env_file() { #[cfg(test)] mod tests { use super::*; - use serial_test::serial; use std::env; #[test] - #[serial] fn test_env_with_default_string_exists() { let key = "TEST_STRING_VAR"; let expected = "test_value"; @@ -54,7 +52,6 @@ mod tests { } #[test] - #[serial] fn test_env_with_default_string_missing() { let key = "TEST_MISSING_STRING_VAR"; unsafe { @@ -67,7 +64,6 @@ mod tests { } #[test] - #[serial] fn test_env_with_default_integer_exists() { let key = "TEST_INT_VAR"; let expected = 42; @@ -84,7 +80,6 @@ mod tests { } #[test] - #[serial] fn test_env_with_default_integer_missing() { let key = "TEST_MISSING_INT_VAR"; unsafe { @@ -97,7 +92,6 @@ mod tests { } #[test] - #[serial] fn test_env_with_default_boolean_exists_true() { let key = "TEST_BOOL_TRUE_VAR"; unsafe { @@ -113,7 +107,6 @@ mod tests { } #[test] - #[serial] fn test_env_with_default_boolean_exists_false() { let key = "TEST_BOOL_FALSE_VAR"; unsafe { @@ -129,7 +122,6 @@ mod tests { } #[test] - #[serial] fn test_env_with_default_boolean_missing() { let key = "TEST_MISSING_BOOL_VAR"; unsafe { @@ -142,7 +134,6 @@ mod tests { } #[test] - #[serial] fn test_env_with_default_boolean_invalid() { let key = "TEST_INVALID_BOOL_VAR"; unsafe { @@ -158,7 +149,6 @@ mod tests { } #[test] - #[serial] fn test_env_with_default_u32_exists() { let key = "TEST_U32_VAR"; let expected = 42u32; @@ -175,7 +165,6 @@ mod tests { } #[test] - #[serial] fn test_env_with_default_u32_negative_invalid() { let key = "TEST_U32_NEGATIVE_VAR"; unsafe { @@ -191,7 +180,6 @@ mod tests { } #[test] - #[serial] fn test_env_with_default_empty_string() { let key = "TEST_EMPTY_STRING_VAR"; unsafe { @@ -207,7 +195,6 @@ mod tests { } #[test] - #[serial] fn test_env_with_default_whitespace_string() { let key = "TEST_WHITESPACE_VAR"; unsafe { @@ -223,7 +210,6 @@ mod tests { } #[test] - #[serial] fn test_env_with_environment() { let key = "TEST_ENVIRONMENT"; unsafe { @@ -239,7 +225,6 @@ mod tests { } #[test] - #[serial] fn test_env_with_mode() { let key = "TEST_MODE"; unsafe { diff --git a/src/flow_queue/connection.rs b/src/flow_queue/connection.rs deleted file mode 100644 index 586954a..0000000 --- a/src/flow_queue/connection.rs +++ /dev/null @@ -1,59 +0,0 @@ -use lapin::Connection; - -pub async fn build_connection(rabbitmq_url: &str) -> Connection { - match Connection::connect(rabbitmq_url, lapin::ConnectionProperties::default()).await { - Ok(env) => env, - Err(error) => { - log::error!( - "Cannot connect to FlowQueue (RabbitMQ) instance! Reason: {:?}", - error - ); - panic!("Cannot connect to FlowQueue (RabbitMQ) instance!"); - } - } -} - -#[cfg(test)] -mod tests { - use crate::flow_queue::connection::build_connection; - use testcontainers::GenericImage; - use testcontainers::core::{IntoContainerPort, WaitFor}; - use testcontainers::runners::AsyncRunner; - - macro_rules! rabbitmq_container_test { - ($test_name:ident, $consumer:expr) => { - #[tokio::test] - async fn $test_name() { - let port: u16 = 5672; - let image_name = "rabbitmq"; - let wait_message = "Server startup complete"; - - let container = GenericImage::new(image_name, "latest") - .with_exposed_port(port.tcp()) - .with_wait_for(WaitFor::message_on_stdout(wait_message)) - .start() - .await - .unwrap(); - - let host_port = container.get_host_port_ipv4(port).await.unwrap(); - let url = format!("amqp://guest:guest@localhost:{}", host_port); - - $consumer(url).await; - } - }; - } - - rabbitmq_container_test!( - test_rabbitmq_startup, - (|url: String| async move { - println!("RabbitMQ started with the url: {}", url); - }) - ); - - rabbitmq_container_test!( - test_rabbitmq_connection, - (|url: String| async move { - build_connection(&*url).await; - }) - ); -} diff --git a/src/flow_queue/mod.rs b/src/flow_queue/mod.rs deleted file mode 100644 index f20b456..0000000 --- a/src/flow_queue/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod connection; -pub mod service; diff --git a/src/flow_queue/service.rs b/src/flow_queue/service.rs deleted file mode 100644 index 511ddc0..0000000 --- a/src/flow_queue/service.rs +++ /dev/null @@ -1,330 +0,0 @@ -use std::{sync::Arc, time::Duration}; - -use futures_lite::StreamExt; -use lapin::{ - Channel, - options::{BasicConsumeOptions, QueueDeclareOptions}, - types::FieldTable, -}; -use log::debug; -use serde::{Deserialize, Serialize}; -use tokio::sync::Mutex; - -use super::connection::build_connection; - -#[derive(Serialize, Deserialize)] -pub enum MessageType { - ExecuteFlow, - TestExecuteFlow, -} - -#[derive(Serialize, Deserialize)] -pub struct Sender { - pub name: String, - pub protocol: String, - pub version: String, -} - -#[derive(Serialize, Deserialize)] -pub struct Message { - pub message_type: MessageType, - pub sender: Sender, - pub timestamp: i64, - pub message_id: String, - pub body: String, -} - -pub struct RabbitmqClient { - pub channel: Arc>, -} - -#[derive(Debug)] -pub enum RabbitMqError { - LapinError(lapin::Error), - ConnectionError(String), - TimeoutError, - DeserializationError, - SerializationError, -} - -impl From for RabbitMqError { - fn from(error: lapin::Error) -> Self { - RabbitMqError::LapinError(error) - } -} - -impl From for RabbitMqError { - fn from(error: std::io::Error) -> Self { - RabbitMqError::ConnectionError(error.to_string()) - } -} - -impl std::fmt::Display for RabbitMqError { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - RabbitMqError::LapinError(err) => write!(f, "RabbitMQ error: {}", err), - RabbitMqError::ConnectionError(msg) => write!(f, "Connection error: {}", msg), - RabbitMqError::TimeoutError => write!(f, "Operation timed out"), - RabbitMqError::DeserializationError => write!(f, "Failed to deserialize message"), - RabbitMqError::SerializationError => write!(f, "Failed to serialize message"), - } - } -} - -impl RabbitmqClient { - // Create a new RabbitMQ client with channel - pub async fn new(rabbitmq_url: &str) -> Self { - let connection = build_connection(rabbitmq_url).await; - let channel = connection.create_channel().await.unwrap(); - - match channel - .queue_declare( - "send_queue", - QueueDeclareOptions::default(), - FieldTable::default(), - ) - .await - { - Ok(_) => { - log::info!("Successfully declared send_queue"); - } - Err(err) => log::error!("Failed to declare send_queue: {:?}", err), - } - - match channel - .queue_declare( - "recieve_queue", - QueueDeclareOptions::default(), - FieldTable::default(), - ) - .await - { - Ok(_) => { - log::info!("Successfully declared recieve_queue"); - } - Err(err) => log::error!("Failed to declare recieve_queue: {:?}", err), - } - - RabbitmqClient { - channel: Arc::new(Mutex::new(channel)), - } - } - - // Send message to the queue - pub async fn send_message( - &self, - message_json: String, - queue_name: &str, - ) -> Result<(), RabbitMqError> { - let channel = self.channel.lock().await; - - match channel - .basic_publish( - "", // exchange - queue_name, // routing key (queue name) - lapin::options::BasicPublishOptions::default(), - message_json.as_bytes(), - lapin::BasicProperties::default(), - ) - .await - { - Err(err) => { - log::error!("Failed to publish message: {:?}", err); - Err(RabbitMqError::LapinError(err)) - } - Ok(_) => Ok(()), - } - } - - // Receive messages from a queue with no timeout - pub async fn await_message_no_timeout( - &self, - queue_name: &str, - message_id: String, - ack_on_success: bool, - ) -> Result { - let mut consumer = { - let channel = self.channel.lock().await; - - let consumer_res = channel - .basic_consume( - queue_name, - "consumer", - lapin::options::BasicConsumeOptions::default(), - FieldTable::default(), - ) - .await; - - match consumer_res { - Ok(consumer) => { - log::info!("Established queue connection to {}", queue_name); - consumer - } - Err(err) => { - log::error!("Cannot create consumer for queue {}: {:?}", queue_name, err); - return Err(RabbitMqError::LapinError(err)); - } - } - }; - - debug!("Starting to consume from {}", queue_name); - - while let Some(delivery_result) = consumer.next().await { - let delivery = match delivery_result { - Ok(del) => del, - Err(_) => return Err(RabbitMqError::DeserializationError), - }; - let data = &delivery.data; - let message_str = match std::str::from_utf8(&data) { - Ok(str) => str, - Err(_) => { - return Err(RabbitMqError::DeserializationError); - } - }; - - debug!("Received message: {}", message_str); - - // Parse the message - let message = match serde_json::from_str::(message_str) { - Ok(m) => m, - Err(e) => { - log::error!("Failed to parse message: {:?}", e); - return Err(RabbitMqError::DeserializationError); - } - }; - - if message.message_id == message_id { - if ack_on_success { - if let Err(delivery_error) = delivery - .ack(lapin::options::BasicAckOptions::default()) - .await - { - log::error!("Failed to acknowledge message: {:?}", delivery_error); - } - } - - return Ok(message); - } - } - Err(RabbitMqError::DeserializationError) - } - - // Function intended to get used by the runtime - pub async fn receive_messages( - &self, - queue_name: &str, - handle_message: fn(Message) -> Result, - ) -> Result<(), RabbitMqError> { - let mut consumer = { - let channel = self.channel.lock().await; - - let consumer_res = channel - .basic_consume( - queue_name, - "consumer", - BasicConsumeOptions::default(), - FieldTable::default(), - ) - .await; - - match consumer_res { - Ok(consumer) => { - log::info!("Established queue connection to {}", queue_name); - consumer - } - Err(err) => { - log::error!("Cannot create consumer for queue {}: {:?}", queue_name, err); - return Err(RabbitMqError::LapinError(err)); - } - } - }; - - debug!("Starting to consume from {}", queue_name); - - while let Some(delivery) = consumer.next().await { - let delivery = match delivery { - Ok(del) => del, - Err(err) => { - log::error!("Error receiving message: {:?}", err); - return Err(RabbitMqError::LapinError(err)); - } - }; - - let data = &delivery.data; - let message_str = match std::str::from_utf8(&data) { - Ok(str) => { - log::info!("Received message: {}", str); - str - } - Err(err) => { - log::error!("Error decoding message: {:?}", err); - return Err(RabbitMqError::DeserializationError); - } - }; - // Parse the message - let inc_message = match serde_json::from_str::(message_str) { - Ok(mess) => mess, - Err(err) => { - log::error!("Error parsing message: {:?}", err); - return Err(RabbitMqError::DeserializationError); - } - }; - - let message = match handle_message(inc_message) { - Ok(mess) => mess, - Err(err) => { - log::error!("Error handling message: {:?}", err); - return Err(RabbitMqError::DeserializationError); - } - }; - - let message_json = match serde_json::to_string(&message) { - Ok(json) => json, - Err(err) => { - log::error!("Error serializing message: {:?}", err); - return Err(RabbitMqError::SerializationError); - } - }; - - { - let _ = self.send_message(message_json, "recieve_queue").await; - } - - // Acknowledge the message - if let Err(delivery_error) = delivery - .ack(lapin::options::BasicAckOptions::default()) - .await - { - log::error!("Failed to acknowledge message: {:?}", delivery_error); - } - } - - Ok(()) - } - - // Receive messages from a queue with timeout - pub async fn await_message( - &self, - queue_name: &str, - message_id: String, - timeout: Duration, - ack_on_success: bool, - ) -> Result { - // Set a timeout - match tokio::time::timeout( - timeout, - self.await_message_no_timeout(queue_name, message_id, ack_on_success), - ) - .await - { - Ok(result) => result, - Err(_) => { - debug!( - "Timeout waiting for message after {} seconds", - timeout.as_secs() - ); - Err(RabbitMqError::TimeoutError) - } - } - } -} diff --git a/src/flow_store/connection.rs b/src/flow_store/connection.rs deleted file mode 100644 index 916f5cd..0000000 --- a/src/flow_store/connection.rs +++ /dev/null @@ -1,102 +0,0 @@ -use redis::Client; -use redis::aio::MultiplexedConnection; -use std::sync::Arc; -use tokio::sync::Mutex; - -pub type FlowStore = Arc>>; - -pub fn build_connection(redis_url: String) -> Client { - match Client::open(redis_url) { - Ok(client) => { - log::info!("Successfully created connection to the FlowStore (Redis)"); - client - } - Err(con_error) => { - log::error!( - "Cannot create FlowStoreClient (Redis) connection! Reason: {:?}", - con_error - ); - panic!("Failed to create Redis client") - } - } -} - -pub async fn create_flow_store_connection(url: String) -> FlowStore { - let client = match build_connection(url) - .get_multiplexed_async_connection() - .await - { - Ok(connection) => { - log::info!("Successfully created connection to the FlowStore (Redis)"); - connection - } - Err(con_error) => { - log::error!( - "Cannot create FlowStoreClient (Redis) connection! Reason: {:?}", - con_error - ); - panic!("Failed to create Redis client") - } - }; - - Arc::new(Mutex::new(Box::new(client))) -} - -#[cfg(test)] -mod tests { - use crate::flow_store::connection::create_flow_store_connection; - use redis::{AsyncCommands, RedisResult}; - use serial_test::serial; - use testcontainers::GenericImage; - use testcontainers::core::IntoContainerPort; - use testcontainers::core::WaitFor; - use testcontainers::runners::AsyncRunner; - - macro_rules! redis_container_test { - ($test_name:ident, $consumer:expr) => { - #[tokio::test] - #[serial] - async fn $test_name() { - let port: u16 = 6379; - let image_name = "redis"; - let wait_message = "Ready to accept connections"; - - let container = GenericImage::new(image_name, "latest") - .with_exposed_port(port.tcp()) - .with_wait_for(WaitFor::message_on_stdout(wait_message)) - .start() - .await - .unwrap(); - - let host = container.get_host().await.unwrap(); - let host_port = container.get_host_port_ipv4(port).await.unwrap(); - let url = format!("redis://{host}:{host_port}"); - - $consumer(url).await; - - let _ = container.stop().await; - } - }; - } - - redis_container_test!( - test_redis_startup, - (|url: String| async move { - println!("Redis server started correctly on: {}", url); - }) - ); - - redis_container_test!( - test_redis_ping, - (|url: String| async move { - println!("Redis server started correctly on: {}", url.clone()); - - let flow_store = create_flow_store_connection(url.clone()).await; - let mut con = flow_store.lock().await; - - let ping_res: RedisResult = con.ping().await; - assert!(ping_res.is_ok()); - assert_eq!(ping_res.unwrap(), "PONG"); - }) - ); -} diff --git a/src/flow_store/flow_identifier.rs b/src/flow_store/flow_identifier.rs deleted file mode 100644 index ed46974..0000000 --- a/src/flow_store/flow_identifier.rs +++ /dev/null @@ -1,137 +0,0 @@ -use tucana::shared::{FlowSetting, ValidationFlow, value::Kind}; - -fn extract_field(settings: &[FlowSetting], def_key: &str, field_name: &str) -> Option { - settings.iter().find_map(|setting| { - if setting.flow_setting_id != def_key { - return None; - } - - let obj = setting.object.as_ref()?; - obj.fields.iter().find_map(|(k, v)| { - if k == field_name { - if let Some(Kind::StringValue(s)) = &v.kind { - return Some(s.clone()); - } - } - None - }) - }) -} - -/// Every flow identifier needs to start with its -/// flow_id::project_id::flow_identifier::protocol_specific_fields -pub fn get_flow_identifier(flow: &ValidationFlow) -> Option { - match flow.r#type.as_str() { - "REST" => { - let method = extract_field(&flow.settings, "HTTP_METHOD", "method"); - let host = extract_field(&flow.settings, "HTTP_HOST", "host"); - - let (method, host) = match (method, host) { - (Some(m), Some(h)) => (m, h), - missing => { - log::error!("Missing settings: {:?}", missing); - return None; - } - }; - - Some(format!( - "{}::{}::REST::{}::{}", - flow.flow_id, flow.project_id, host, method - )) - } - _ => return None, - } -} - -#[cfg(test)] -mod test { - use std::collections::HashMap; - - use tucana::shared::{FlowSetting, Struct, ValidationFlow as Flow}; - - use super::get_flow_identifier; - - fn get_string_value(value: &str) -> tucana::shared::Value { - tucana::shared::Value { - kind: Some(tucana::shared::value::Kind::StringValue(String::from( - value, - ))), - } - } - - #[test] - fn test_incorrect_flow_type_id() { - let unkown = Flow { - starting_node: None, - flow_id: 1, - project_id: 1, - r#type: "UNKOWN_FLOW_TYPE_IDENTIFIER".to_string(), - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - settings: vec![], - }; - - assert!(get_flow_identifier(&unkown).is_none()) - } - - #[test] - fn test_rest_flow_type_id_is_correct() { - let rest = Flow { - starting_node: None, - flow_id: 1, - project_id: 1, - r#type: "REST".to_string(), - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - settings: vec![ - FlowSetting { - database_id: 1424525, - flow_setting_id: String::from("HTTP_HOST"), - object: Some(Struct { - fields: { - let mut map = HashMap::new(); - map.insert(String::from("host"), get_string_value("abc.code0.tech")); - map - }, - }), - }, - FlowSetting { - database_id: 14245252352, - flow_setting_id: String::from("HTTP_METHOD"), - object: Some(Struct { - fields: { - let mut map = HashMap::new(); - map.insert(String::from("method"), get_string_value("GET")); - map - }, - }), - }, - ], - }; - - let id = get_flow_identifier(&rest); - - assert!(id.is_some()); - assert_eq!(id.unwrap(), String::from("1::1::REST::abc.code0.tech::GET")) - } - - #[test] - fn test_rest_flow_type_id_with_missing_settings_fails() { - let rest = Flow { - starting_node: None, - flow_id: 1, - project_id: 1, - r#type: "REST".to_string(), - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - settings: vec![], - }; - - let id = get_flow_identifier(&rest); - - assert!(id.is_none()); - } -} diff --git a/src/flow_store/mod.rs b/src/flow_store/mod.rs deleted file mode 100644 index c2c4bab..0000000 --- a/src/flow_store/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod connection; -mod flow_identifier; -pub mod service; diff --git a/src/flow_store/service.rs b/src/flow_store/service.rs deleted file mode 100644 index a4b91c6..0000000 --- a/src/flow_store/service.rs +++ /dev/null @@ -1,715 +0,0 @@ -use super::flow_identifier; -use crate::flow_store::connection::FlowStore; -use async_trait::async_trait; -use log::error; -use redis::{AsyncCommands, JsonAsyncCommands, RedisError, RedisResult}; -use tucana::shared::{Flows, ValidationFlow}; - -#[derive(Debug)] -pub struct FlowStoreError { - pub kind: FlowStoreErrorKind, - pub flow_id: i64, - pub reason: String, -} - -#[derive(Debug)] -pub enum FlowStoreErrorKind { - Serialization, - RedisOperation, - NoIdentifier, -} - -/// Trait representing a service for managing flows in a Redis. -#[async_trait] -pub trait FlowStoreServiceBase { - async fn new(redis_client_arc: FlowStore) -> Self; - async fn insert_flow(&mut self, flow: ValidationFlow) -> Result; - async fn insert_flows(&mut self, flows: Flows) -> Result; - async fn delete_flow(&mut self, flow_id: i64) -> Result; - async fn delete_flows(&mut self, flow_ids: Vec) -> Result; - async fn get_all_flow_ids(&mut self) -> Result, RedisError>; - async fn query_flows(&mut self, pattern: String) -> Result; -} - -/// Struct representing a service for managing flows in a Redis. -#[derive(Clone)] -pub struct FlowStoreService { - pub(crate) redis_client_arc: FlowStore, -} - -/// Implementation of a service for managing flows in a Redis. -#[async_trait] -impl FlowStoreServiceBase for FlowStoreService { - async fn new(redis_client_arc: FlowStore) -> FlowStoreService { - FlowStoreService { redis_client_arc } - } - - /// Insert a list of flows into Redis - async fn insert_flow(&mut self, flow: ValidationFlow) -> Result { - let mut connection = self.redis_client_arc.lock().await; - - let identifier = match flow_identifier::get_flow_identifier(&flow) { - Some(id) => id, - None => { - return Err(FlowStoreError { - kind: FlowStoreErrorKind::NoIdentifier, - flow_id: flow.flow_id, - reason: String::from("Identifier can't be determent!"), - }); - } - }; - - let insert_result: RedisResult<()> = connection.json_set(identifier, "$", &flow).await; - - match insert_result { - Err(redis_error) => { - error!("An Error occurred {}", redis_error); - Err(FlowStoreError { - flow_id: flow.flow_id, - kind: FlowStoreErrorKind::RedisOperation, - reason: redis_error.to_string(), - }) - } - _ => Ok(1), - } - } - - /// Insert a flows into Redis - async fn insert_flows(&mut self, flows: Flows) -> Result { - let mut total_modified = 0; - - for flow in flows.flows { - let result = self.insert_flow(flow).await?; - total_modified += result; - } - - Ok(total_modified) - } - - /// Deletes a flow - async fn delete_flow(&mut self, flow_id: i64) -> Result { - let mut connection = self.redis_client_arc.lock().await; - - let identifier = format!("{}::*", flow_id); - let keys: Vec = connection.keys(&identifier).await?; - let deleted_flow: RedisResult = connection.json_del(keys, ".").await; - - match deleted_flow { - Ok(int) => Ok(int), - Err(redis_error) => { - error!("An Error occurred {}", redis_error); - Err(redis_error) - } - } - } - - /// Deletes a list of flows - async fn delete_flows(&mut self, flow_ids: Vec) -> Result { - let mut total_modified = 0; - - for id in flow_ids { - let result = self.delete_flow(id).await?; - total_modified += result; - } - - Ok(total_modified) - } - - /// Queries for all ids in the redis - /// Returns `Result, RedisError>`: Result of the flow ids currently in Redis - async fn get_all_flow_ids(&mut self) -> Result, RedisError> { - let mut connection = self.redis_client_arc.lock().await; - - let string_keys: Vec = { - match connection.keys("*").await { - Ok(res) => res, - Err(error) => { - error!("Can't retrieve keys from redis. Reason: {error}"); - return Err(error); - } - } - }; - - let mut real_keys: Vec = vec![]; - - for key in string_keys { - if key.contains("::") { - let number = key.splitn(2, "::").next(); - if let Some(real_number) = number { - real_keys.push(String::from(real_number)); - } - } - } - - let int_keys: Vec = real_keys - .into_iter() - .filter_map(|key| key.parse::().ok()) - .collect(); - - Ok(int_keys) - } - - async fn query_flows(&mut self, pattern: String) -> Result { - let mut connection = self.redis_client_arc.lock().await; - - let keys: Vec = { - match connection.keys(pattern).await { - Ok(res) => res, - Err(error) => { - error!("Can't retrieve keys from redis. Reason: {error}"); - return Err(FlowStoreError { - kind: FlowStoreErrorKind::RedisOperation, - flow_id: 0, - reason: error.detail().unwrap().to_string(), - }); - } - } - }; - - if keys.is_empty() { - return Ok(Flows { flows: vec![] }); - } - - match connection - .json_get::, &str, Vec>(keys, "$") - .await - { - Ok(json_values) => { - let mut all_flows: Vec = Vec::new(); - - for json_str in json_values { - match serde_json::from_str::>(&json_str) { - Ok(mut flows) => all_flows.append(&mut flows), - Err(error) => { - return Err(FlowStoreError { - kind: FlowStoreErrorKind::Serialization, - flow_id: 0, - reason: error.to_string(), - }); - } - } - } - - return Ok(Flows { flows: all_flows }); - } - Err(error) => { - return Err(FlowStoreError { - kind: FlowStoreErrorKind::RedisOperation, - flow_id: 0, - reason: error.detail().unwrap_or("Unknown Redis error").to_string(), - }); - } - } - } -} - -#[cfg(test)] -mod tests { - use std::collections::HashMap; - - use crate::flow_store::connection::FlowStore; - use crate::flow_store::connection::create_flow_store_connection; - use crate::flow_store::service::FlowStoreService; - use crate::flow_store::service::FlowStoreServiceBase; - use redis::{AsyncCommands, JsonAsyncCommands}; - use serial_test::serial; - use testcontainers::GenericImage; - use testcontainers::core::IntoContainerPort; - use testcontainers::core::WaitFor; - use testcontainers::runners::AsyncRunner; - use tucana::shared::FlowSetting; - use tucana::shared::Struct; - use tucana::shared::{Flows, ValidationFlow}; - - fn get_string_value(value: &str) -> tucana::shared::Value { - tucana::shared::Value { - kind: Some(tucana::shared::value::Kind::StringValue(String::from( - value, - ))), - } - } - - fn get_settings() -> Vec { - vec![ - FlowSetting { - database_id: 1234567, - flow_setting_id: String::from("HTTP_HOST"), - object: Some(Struct { - fields: { - let mut map = HashMap::new(); - map.insert(String::from("host"), get_string_value("abc.code0.tech")); - map - }, - }), - }, - FlowSetting { - database_id: 14245252352, - flow_setting_id: String::from("HTTP_METHOD"), - object: Some(Struct { - fields: { - let mut map = HashMap::new(); - map.insert(String::from("method"), get_string_value("GET")); - map - }, - }), - }, - ] - } - - macro_rules! redis_integration_test { - ($test_name:ident, $consumer:expr) => { - #[tokio::test] - #[serial] - async fn $test_name() { - let port: u16 = 6379; - let image_name = "redis/redis-stack"; - let wait_message = "Ready to accept connections"; - - let container = GenericImage::new(image_name, "latest") - .with_exposed_port(port.tcp()) - .with_wait_for(WaitFor::message_on_stdout(wait_message)) - .start() - .await - .unwrap(); - - let host = container.get_host().await.unwrap(); - let host_port = container.get_host_port_ipv4(port).await.unwrap(); - let url = format!("redis://{host}:{host_port}"); - println!("Redis server started correctly on: {}", url.clone()); - - let connection = create_flow_store_connection(url).await; - - { - let mut con = connection.lock().await; - - let _: () = redis::cmd("FLUSHALL") - .query_async(&mut **con) - .await - .expect("FLUSHALL command failed"); - } - - let base = FlowStoreService::new(connection.clone()).await; - - $consumer(connection, base).await; - let _ = container.stop().await; - } - }; - } - - redis_integration_test!( - insert_one_flow, - (|connection: FlowStore, mut service: FlowStoreService| async move { - let flow = ValidationFlow { - flow_id: 1, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - match service.insert_flow(flow.clone()).await { - Ok(i) => println!("{}", i), - Err(err) => println!("{}", err.reason), - }; - - let redis_result: Option = { - let mut redis_cmd = connection.lock().await; - redis_cmd - .json_get("1::1::REST::abc.code0.tech::GET", "$") - .await - .unwrap() - }; - - println!("{}", redis_result.clone().unwrap()); - - assert!(redis_result.is_some()); - let redis_flow: Vec = - serde_json::from_str(&*redis_result.unwrap()).unwrap(); - assert_eq!(redis_flow[0], flow); - }) - ); - - redis_integration_test!( - insert_one_flow_fails_no_identifier, - (|_connection: FlowStore, mut service: FlowStoreService| async move { - let flow = ValidationFlow { - flow_id: 1, - r#type: "".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - assert!(!service.insert_flow(flow.clone()).await.is_ok()); - }) - ); - - redis_integration_test!( - insert_will_overwrite_existing_flow, - (|connection: FlowStore, mut service: FlowStoreService| async move { - let flow = ValidationFlow { - flow_id: 1, - r#type: "REST".to_string(), - settings: get_settings(), - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - starting_node: None, - }; - - match service.insert_flow(flow.clone()).await { - Ok(i) => println!("{}", i), - Err(err) => println!("{}", err.reason), - }; - - let flow_overwrite = ValidationFlow { - flow_id: 1, - r#type: "REST".to_string(), - settings: get_settings(), - data_types: vec![], - input_type_identifier: Some(String::from("ABC")), - return_type_identifier: None, - project_id: 1, - starting_node: None, - }; - - let _ = service.insert_flow(flow_overwrite).await; - let amount = service.get_all_flow_ids().await; - assert_eq!(amount.unwrap().len(), 1); - - let redis_result: Vec = { - let mut redis_cmd = connection.lock().await; - redis_cmd - .json_get("1::1::REST::abc.code0.tech::GET", "$") - .await - .unwrap() - }; - - assert_eq!(redis_result.len(), 1); - let string: &str = &*redis_result[0]; - let redis_flow: Vec = serde_json::from_str(string).unwrap(); - assert!(redis_flow[0].r#input_type_identifier.is_some()); - }) - ); - - redis_integration_test!( - insert_many_flows, - (|_connection: FlowStore, mut service: FlowStoreService| async move { - let flow_one = ValidationFlow { - flow_id: 1, - r#type: "REST".to_string(), - settings: get_settings(), - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - starting_node: None, - }; - - let flow_two = ValidationFlow { - flow_id: 2, - r#type: "REST".to_string(), - settings: get_settings(), - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - starting_node: None, - }; - - let flow_three = ValidationFlow { - flow_id: 3, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - let flow_vec = vec![flow_one.clone(), flow_two.clone(), flow_three.clone()]; - let flows = Flows { flows: flow_vec }; - - let amount = service.insert_flows(flows).await.unwrap(); - assert_eq!(amount, 3); - }) - ); - - redis_integration_test!( - delete_one_existing_flow, - (|connection: FlowStore, mut service: FlowStoreService| async move { - let flow = ValidationFlow { - flow_id: 1, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - match service.insert_flow(flow.clone()).await { - Ok(i) => println!("{}", i), - Err(err) => println!("{}", err.reason), - }; - - let result = service.delete_flow(1).await; - - assert_eq!(result.unwrap(), 1); - - let redis_result: Option = { - let mut redis_cmd = connection.lock().await; - redis_cmd.get("1").await.unwrap() - }; - - assert!(redis_result.is_none()); - }) - ); - - redis_integration_test!( - delete_one_non_existing_flow, - (|_connection: FlowStore, mut service: FlowStoreService| async move { - let result = service.delete_flow(1).await; - assert_eq!(result.unwrap(), 0); - }) - ); - - redis_integration_test!( - delete_many_existing_flows, - (|_connection: FlowStore, mut service: FlowStoreService| async move { - let flow_one = ValidationFlow { - flow_id: 1, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - let flow_two = ValidationFlow { - flow_id: 2, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - let flow_three = ValidationFlow { - flow_id: 3, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - let flow_vec = vec![flow_one.clone(), flow_two.clone(), flow_three.clone()]; - let flows = Flows { flows: flow_vec }; - - let amount = service.insert_flows(flows).await.unwrap(); - assert_eq!(amount, 3); - - let deleted_amount = service.delete_flows(vec![1, 2, 3]).await; - assert_eq!(deleted_amount.unwrap(), 3); - }) - ); - - redis_integration_test!( - delete_many_non_existing_flows, - (|_connection: FlowStore, mut service: FlowStoreService| async move { - let deleted_amount = service.delete_flows(vec![1, 2, 3]).await; - assert_eq!(deleted_amount.unwrap(), 0); - }) - ); - - redis_integration_test!( - get_existing_flow_ids, - (|_connection: FlowStore, mut service: FlowStoreService| async move { - let flow_one = ValidationFlow { - flow_id: 1, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - let flow_two = ValidationFlow { - flow_id: 2, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - let flow_three = ValidationFlow { - flow_id: 3, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - let flow_vec = vec![flow_one.clone(), flow_two.clone(), flow_three.clone()]; - let flows = Flows { flows: flow_vec }; - - let amount = service.insert_flows(flows).await.unwrap(); - assert_eq!(amount, 3); - - let mut flow_ids = service.get_all_flow_ids().await.unwrap(); - flow_ids.sort(); - - assert_eq!(flow_ids, vec![1, 2, 3]); - }) - ); - - redis_integration_test!( - get_empty_flow_ids, - (|_connection: FlowStore, mut service: FlowStoreService| async move { - let flow_ids = service.get_all_flow_ids().await; - assert_eq!(flow_ids.unwrap(), Vec::::new()); - }) - ); - - redis_integration_test!( - query_empty_flow_store, - (|_connection: FlowStore, mut service: FlowStoreService| async move { - let flows = service.query_flows(String::from("*")).await; - assert!(flows.is_ok()); - assert!(flows.unwrap().flows.is_empty()); - }) - ); - - redis_integration_test!( - query_all_flows, - (|_connection: FlowStore, mut service: FlowStoreService| async move { - let flow_one = ValidationFlow { - flow_id: 1, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - let flow_two = ValidationFlow { - flow_id: 2, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - let flow_three = ValidationFlow { - flow_id: 3, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - let flows = service.query_flows(String::from("*")).await; - assert!(flows.is_ok()); - assert!(flows.unwrap().flows.is_empty()); - - let flow_vec = vec![flow_one.clone(), flow_two.clone(), flow_three.clone()]; - let flows = Flows { flows: flow_vec }; - - let amount = service.insert_flows(flows.clone()).await.unwrap(); - assert_eq!(amount, 3); - - let query_flows = service.query_flows(String::from("*")).await; - - println!("{:?}", &query_flows); - - assert!(query_flows.is_ok()); - - assert_eq!(flows.flows.len(), query_flows.unwrap().flows.len()) - }) - ); - - redis_integration_test!( - query_one_existing_flow, - (|_connection: FlowStore, mut service: FlowStoreService| async move { - let flow_one = ValidationFlow { - flow_id: 1, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - let flow_two = ValidationFlow { - flow_id: 2, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - let flow_three = ValidationFlow { - flow_id: 3, - r#type: "REST".to_string(), - settings: get_settings(), - starting_node: None, - data_types: vec![], - input_type_identifier: None, - return_type_identifier: None, - project_id: 1, - }; - - let flows = service.query_flows(String::from("*")).await; - assert!(flows.is_ok()); - assert!(flows.unwrap().flows.is_empty()); - - let flow_vec = vec![flow_one.clone(), flow_two.clone(), flow_three.clone()]; - let flows = Flows { flows: flow_vec }; - - let amount = service.insert_flows(flows.clone()).await.unwrap(); - assert_eq!(amount, 3); - - let query_flows = service.query_flows(String::from("1::*")).await; - - assert!(query_flows.is_ok()); - assert_eq!(query_flows.unwrap().flows, vec![flow_one]) - }) - ); -} diff --git a/src/lib.rs b/src/lib.rs index 95fcfef..897e130 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,11 +1,5 @@ -#[cfg(feature = "flow_store")] -pub mod flow_store; - -#[cfg(feature = "flow_queue")] -pub mod flow_queue; - #[cfg(feature = "flow_definition")] pub mod flow_definition; #[cfg(feature = "flow_config")] -pub mod flow_config; \ No newline at end of file +pub mod flow_config;