diff --git a/.circleci/config.yml b/.circleci/config.yml index d346792e..fa7787af 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,7 +6,7 @@ version: 2.1 # See: https://circleci.com/docs/configuration-reference/#jobs jobs: build: - resource_class: chronicleworks/macos-laptop + resource_class: paravela/aws-medium # Specify the execution environment. You can specify an image from Docker Hub or use one of our convenience images from CircleCI's Developer Hub. # See: https://circleci.com/docs/configuration-reference/#executor-job machine: true @@ -15,12 +15,9 @@ jobs: steps: - checkout - run: - shell: /bin/zsh name: Build release, test e2e command: | - eval "$(/opt/homebrew/bin/brew shellenv)" - . "$HOME/.cargo/env" - ISOLATION_ID=${CIRCLE_SHA1} gmake test + ISOLATION_ID=${CIRCLE_SHA1} make test # Orchestrate jobs using workflows # See: https://circleci.com/docs/configuration-reference/#workflows diff --git a/Cargo.lock b/Cargo.lock index 2ee4c2b6..c5538724 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -117,6 +117,21 @@ dependencies = [ "memchr", ] +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + [[package]] name = "allocator-api2" version = "0.2.18" @@ -144,6 +159,12 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" +[[package]] +name = "ansi-colors-macro" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c2afa84a2916e88ff06df6fd84e7c89e374a726e392f72dc5e32d6db3c3cf6" + [[package]] name = "ansi_term" version = "0.12.1" @@ -155,9 +176,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -170,33 +191,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -299,7 +320,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -603,9 +624,9 @@ checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" @@ -783,7 +804,7 @@ dependencies = [ "arrow-schema", "chrono", "half", - "indexmap 2.2.6", + "indexmap 2.4.0", "lexical-core", "num", "serde", @@ -913,14 +934,14 @@ dependencies = [ [[package]] name = "assert_fs" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cd762e110c8ed629b11b6cde59458cc1c71de78ebbcc30099fc8e0403a2a2ec" +checksum = "7efdb1fdb47602827a342857666feb372712cbc64b414172bd6b167a02927674" dependencies = [ "anstyle", "doc-comment", "globwalk", - "predicates 3.1.0", + "predicates 3.1.2", "predicates-core", "predicates-tree", "tempfile", @@ -993,7 +1014,7 @@ dependencies = [ "futures-util", "handlebars", "http 1.1.0", - "indexmap 2.2.6", + "indexmap 2.4.0", "mime", "multer", "num-traits", @@ -1023,7 +1044,7 @@ dependencies = [ "proc-macro2", "quote", "strum 0.26.3", - "syn 2.0.71", + "syn 2.0.74", "thiserror", ] @@ -1063,16 +1084,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69117c43c01d81a69890a9f5dd6235f2f027ca8d1ec62d6d3c5e01ca0edb4f2b" dependencies = [ "bytes", - "indexmap 2.2.6", + "indexmap 2.4.0", "serde", "serde_json", ] [[package]] name = "async-io" -version = "2.3.3" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ "async-lock", "cfg-if", @@ -1084,7 +1105,7 @@ dependencies = [ "rustix 0.38.34", "slab", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1111,9 +1132,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.2.3" +version = "2.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a" +checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374" dependencies = [ "async-channel 2.3.1", "async-io", @@ -1126,14 +1147,14 @@ dependencies = [ "futures-lite", "rustix 0.38.34", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "async-signal" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb3634b73397aa844481f814fad23bbf07fdb0eabec10f2eb95e58944b1ec32" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" dependencies = [ "async-io", "async-lock", @@ -1144,7 +1165,7 @@ dependencies = [ "rustix 0.38.34", "signal-hook-registry", "slab", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1177,7 +1198,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -1194,7 +1215,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -1301,7 +1322,7 @@ dependencies = [ "cfg-if", "libc", "miniz_oxide", - "object 0.36.1", + "object 0.36.3", "rustc-demangle", ] @@ -1412,7 +1433,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -1605,6 +1626,27 @@ dependencies = [ "serde", ] +[[package]] +name = "brotli" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + [[package]] name = "bs58" version = "0.4.0" @@ -1622,9 +1664,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.9.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "serde", @@ -1665,9 +1707,9 @@ checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "bytemuck" -version = "1.16.1" +version = "1.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83" dependencies = [ "bytemuck_derive", ] @@ -1680,7 +1722,7 @@ checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -1691,9 +1733,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.1" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" dependencies = [ "serde", ] @@ -1759,9 +1801,9 @@ checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" [[package]] name = "camino" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +checksum = "3054fea8a20d8ff3968d5b22cc27501d2b08dc4decdb31b184323f00c5ef23bb" dependencies = [ "serde", ] @@ -1803,12 +1845,13 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.1.6" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" +checksum = "68064e60dbf1f17005c2fde4d07c16d8baa506fd7ffed8ccab702d93617975c7" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -1987,14 +2030,25 @@ dependencies = [ name = "chronicle-data" version = "0.1.0" dependencies = [ + "anyhow", "arrow-array", + "arrow-csv", "arrow-data", "arrow-flight", "arrow-ipc", + "arrow-json", "arrow-schema", - "clap 4.5.9", + "chronicle-arrow", + "clap 4.5.15", + "futures", + "object_store", + "parquet", "prettytable-rs", + "rand 0.8.5", + "terminal-spinners", "tokio", + "tokio-stream", + "tokio-util", "tonic 0.10.2", ] @@ -2299,23 +2353,23 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.9" +version = "4.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" +checksum = "11d8838454fda655dafd3accb2b6e2bea645b9e4078abe84a22ceb947235c5cc" dependencies = [ "clap_builder", - "clap_derive 4.5.8", + "clap_derive 4.5.13", ] [[package]] name = "clap_builder" -version = "4.5.9" +version = "4.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" +checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" dependencies = [ "anstream", "anstyle", - "clap_lex 0.7.1", + "clap_lex 0.7.2", "strsim 0.11.1", "terminal_size", ] @@ -2344,14 +2398,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.8" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -2365,9 +2419,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "codespan-reporting" @@ -2381,9 +2435,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "colored" @@ -2431,7 +2485,7 @@ dependencies = [ [[package]] name = "common" version = "0.1.0" -source = "git+https://github.com/w3f/ring-proof#626c9598be949aa3dbdd72e8a40531f68b01d6c2" +source = "git+https://github.com/w3f/ring-proof#665f5f51af5734c7b6d90b985dd6861d4c5b4752" dependencies = [ "ark-ec", "ark-ff", @@ -2651,9 +2705,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core2" @@ -2675,9 +2729,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" dependencies = [ "libc", ] @@ -2798,7 +2852,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.9", + "clap 4.5.15", "criterion-plot", "futures", "is-terminal", @@ -2870,6 +2924,31 @@ version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +[[package]] +name = "crossterm" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c85525306c4291d1b73ce93c8acf9c339f9b213aef6c1d85c3830cbf1c16325c" +dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi", + "libc", + "mio 0.7.14", + "parking_lot 0.11.2", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + [[package]] name = "crunchy" version = "0.2.2" @@ -2998,7 +3077,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -3009,9 +3088,9 @@ checksum = "4f8a51dd197fa6ba5b4dc98a990a43cc13693c23eb0089ebb0fcc1f04152bca6" [[package]] name = "cxx" -version = "1.0.124" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "273dcfd3acd4e1e276af13ed2a43eea7001318823e7a726a6b3ed39b4acc0b82" +checksum = "3c4eae4b7fc8dcb0032eb3b1beee46b38d371cdeaf2d0c64b9944f6f69ad7755" dependencies = [ "cc", "cxxbridge-flags", @@ -3021,9 +3100,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.124" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b2766fbd92be34e9ed143898fce6c572dc009de39506ed6903e5a05b68914e" +checksum = "6c822bf7fb755d97328d6c337120b6f843678178751cba33c9da25cf522272e0" dependencies = [ "cc", "codespan-reporting", @@ -3031,24 +3110,24 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] name = "cxxbridge-flags" -version = "1.0.124" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "839fcd5e43464614ffaa989eaf1c139ef1f0c51672a1ed08023307fa1b909ccd" +checksum = "719d6197dc016c88744aff3c0d0340a01ecce12e8939fc282e7c8f583ee64bc6" [[package]] name = "cxxbridge-macro" -version = "1.0.124" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2c1c1776b986979be68bb2285da855f8d8a35851a769fca8740df7c3d07877" +checksum = "35de3b547387863c8f82013c4f79f1c2162edee956383e4089e1d04c18c4f16c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -3120,7 +3199,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -3153,7 +3232,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -3294,7 +3373,7 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -3305,7 +3384,7 @@ checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -3349,7 +3428,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -3392,7 +3471,7 @@ dependencies = [ "diesel_table_macro_syntax", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -3412,7 +3491,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc5557efc453706fed5e4fa85006fe9817c224c3f480a34c7e5959fd700921c5" dependencies = [ - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -3520,7 +3599,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -3566,9 +3645,9 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.71", + "syn 2.0.74", "termcolor", - "toml 0.8.15", + "toml 0.8.19", "walkdir", ] @@ -3902,7 +3981,7 @@ dependencies = [ "prettyplease 0.2.20", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -4013,14 +4092,14 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.23" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +checksum = "bf401df4a4e3872c4fe8151134cf483738e74b67fc934d6532c882b3d24a4550" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", + "libredox", + "windows-sys 0.59.0", ] [[package]] @@ -4079,9 +4158,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" dependencies = [ "crc32fast", "libz-sys", @@ -4184,7 +4263,7 @@ dependencies = [ "Inflector", "array-bytes 6.2.3", "chrono", - "clap 4.5.9", + "clap 4.5.15", "comfy-table", "frame-benchmarking", "frame-support", @@ -4345,7 +4424,7 @@ dependencies = [ "proc-macro2", "quote", "sp-crypto-hashing 0.0.0", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -4357,7 +4436,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -4367,7 +4446,7 @@ source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0 dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -4521,7 +4600,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -4805,7 +4884,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.2.6", + "indexmap 2.4.0", "slab", "tokio", "tokio-util", @@ -4824,7 +4903,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.2.6", + "indexmap 2.4.0", "slab", "tokio", "tokio-util", @@ -5212,7 +5291,7 @@ dependencies = [ "hyper 1.4.1", "hyper-util", "log", - "rustls 0.23.11", + "rustls 0.23.12", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -5262,9 +5341,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" dependencies = [ "bytes", "futures-channel", @@ -5436,9 +5515,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -5498,6 +5577,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "integer-encoding" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" + [[package]] name = "integer-sqrt" version = "0.1.5" @@ -5564,20 +5649,20 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.4.0", "libc", "windows-sys 0.52.0", ] [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "iso8601" @@ -5606,6 +5691,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -5634,18 +5728,18 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -5882,7 +5976,7 @@ dependencies = [ "http 1.1.0", "jsonrpsee-core 0.23.2", "pin-project", - "rustls 0.23.11", + "rustls 0.23.12", "rustls-pki-types", "rustls-platform-verifier", "soketto 0.8.0", @@ -5979,7 +6073,7 @@ dependencies = [ "hyper-util", "jsonrpsee-core 0.23.2", "jsonrpsee-types 0.23.2", - "rustls 0.23.11", + "rustls 0.23.12", "rustls-platform-verifier", "serde", "serde_json", @@ -6000,7 +6094,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -6089,7 +6183,7 @@ dependencies = [ "anyhow", "base64 0.21.7", "bytecount", - "clap 4.5.9", + "clap 4.5.15", "fancy-regex", "fraction", "getrandom 0.2.15", @@ -6318,15 +6412,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.155" +version = "0.2.156" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a" [[package]] name = "libloading" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", "windows-targets 0.52.6", @@ -6739,6 +6833,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.6.0", "libc", + "redox_syscall 0.5.3", ] [[package]] @@ -6806,9 +6901,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.18" +version = "1.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" +checksum = "fdc53a7799a7496ebc9fd29f31f7df80e83c9bda5299768af5f9e59eeea74647" dependencies = [ "cc", "pkg-config", @@ -6921,9 +7016,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" +checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" dependencies = [ "hashbrown 0.14.5", ] @@ -6939,9 +7034,9 @@ dependencies = [ [[package]] name = "lz4" -version = "1.25.0" +version = "1.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6eab492fe7f8651add23237ea56dbf11b3c4ff762ab83d40a47f11433421f91" +checksum = "958b4caa893816eea05507c20cfe47574a43d9a697138a7872990bba8a0ece68" dependencies = [ "libc", "lz4-sys", @@ -6949,14 +7044,23 @@ dependencies = [ [[package]] name = "lz4-sys" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3" +checksum = "109de74d5d2353660401699a4174a4ff23fcc649caf553df71933c7fb45ad868" dependencies = [ "cc", "libc", ] +[[package]] +name = "lz4_flex" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5" +dependencies = [ + "twox-hash", +] + [[package]] name = "mach" version = "0.3.2" @@ -6981,7 +7085,7 @@ dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -6995,7 +7099,7 @@ dependencies = [ "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -7006,7 +7110,7 @@ checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -7017,7 +7121,7 @@ checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -7064,9 +7168,9 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "matrixmultiply" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" dependencies = [ "autocfg", "rawpointer", @@ -7175,7 +7279,7 @@ dependencies = [ "hyper 1.4.1", "hyper-tls 0.6.0", "hyper-util", - "indexmap 2.2.6", + "indexmap 2.4.0", "ipnet", "metrics", "metrics-util", @@ -7244,13 +7348,36 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.11" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" dependencies = [ + "libc", + "log", + "miow", + "ntapi", + "winapi", +] + +[[package]] +name = "mio" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "miow" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi", ] [[package]] @@ -7307,14 +7434,19 @@ dependencies = [ [[package]] name = "mockito" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f6e023aa5bdf392aa06c78e4a4e6d498baab5138d0c993503350ebbc37bf1e" +checksum = "09b34bd91b9e5c5b06338d392463e1318d683cf82ec3d3af4014609be6e2108d" dependencies = [ "assert-json-diff", + "bytes", "colored", - "futures-core", - "hyper 0.14.30", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-util", "log", "rand 0.8.5", "regex", @@ -7452,7 +7584,7 @@ checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -7582,13 +7714,13 @@ dependencies = [ [[package]] name = "nix" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ "bitflags 2.6.0", "cfg-if", - "cfg_aliases 0.1.1", + "cfg_aliases 0.2.1", "libc", ] @@ -7617,7 +7749,7 @@ checksum = "43794a0ace135be66a25d3ae77d41b91615fb68ae937f904090203e81f755b65" name = "node-chronicle" version = "0.1.0" dependencies = [ - "clap 4.5.9", + "clap 4.5.15", "common 0.7.5", "frame-benchmarking", "frame-benchmarking-cli", @@ -7698,6 +7830,15 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" +[[package]] +name = "ntapi" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" +dependencies = [ + "winapi", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -7872,13 +8013,34 @@ dependencies = [ [[package]] name = "object" -version = "0.36.1" +version = "0.36.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" +checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" dependencies = [ "memchr", ] +[[package]] +name = "object_store" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6da452820c715ce78221e8202ccc599b4a52f3e1eb3eedb487b680c81a8e3f3" +dependencies = [ + "async-trait", + "bytes", + "chrono", + "futures", + "humantime", + "itertools 0.13.0", + "parking_lot 0.12.3", + "percent-encoding", + "snafu", + "tokio", + "tracing", + "url", + "walkdir", +] + [[package]] name = "oid-registry" version = "0.6.1" @@ -7926,7 +8088,7 @@ dependencies = [ "async-trait", "chronicle-signing", "chronicle-telemetry", - "clap 4.5.9", + "clap 4.5.15", "common 0.7.5", "const_format", "frame-support", @@ -7978,9 +8140,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -7999,7 +8161,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -8010,9 +8172,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -8136,7 +8298,7 @@ dependencies = [ "futures-util", "opentelemetry 0.23.0", "opentelemetry_sdk", - "ordered-float", + "ordered-float 4.2.2", "serde", "serde_json", "thiserror", @@ -8156,7 +8318,7 @@ dependencies = [ "lazy_static", "once_cell", "opentelemetry 0.23.0", - "ordered-float", + "ordered-float 4.2.2", "percent-encoding", "rand 0.8.5", "serde_json", @@ -8173,9 +8335,18 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "ordered-float" -version = "4.2.1" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ff2cf528c6c03d9ed653d6c4ce1dc0582dc4af309790ad92f07c1cd551b0be" +checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ordered-float" +version = "4.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a91171844676f8c7990ce64959210cd2eaef32c2612c50f9fae9f8aaa6065a6" dependencies = [ "num-traits", ] @@ -8504,6 +8675,40 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "parquet" +version = "50.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "547b92ebf0c1177e3892f44c8f79757ee62e678d564a9834189725f2c5b7a750" +dependencies = [ + "ahash 0.8.11", + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-data", + "arrow-ipc", + "arrow-schema", + "arrow-select", + "base64 0.21.7", + "brotli", + "bytes", + "chrono", + "flate2", + "futures", + "half", + "hashbrown 0.14.5", + "lz4_flex", + "num", + "num-bigint", + "paste", + "seq-macro", + "snap", + "thrift", + "tokio", + "twox-hash", + "zstd 0.13.2", +] + [[package]] name = "parse-zoneinfo" version = "0.3.1" @@ -8622,7 +8827,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -8643,7 +8848,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.2.6", + "indexmap 2.4.0", ] [[package]] @@ -8739,7 +8944,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -8762,9 +8967,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", "fastrand", @@ -8827,9 +9032,9 @@ dependencies = [ [[package]] name = "poem" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c2c9ce82b482f5d7b0db655b104fc80fc0d7de9fc099e9f4a40a96faaef6f1" +checksum = "f1ba1c27f8f89e1bccdda0c680f72790545a11a8d8555819472f5839d7a8ca9d" dependencies = [ "base64 0.22.1", "bytes", @@ -8840,7 +9045,7 @@ dependencies = [ "hyper 1.4.1", "hyper-util", "mime", - "nix 0.28.0", + "nix 0.29.0", "opentelemetry 0.24.0", "opentelemetry-http", "opentelemetry-semantic-conventions 0.16.0", @@ -8865,14 +9070,14 @@ dependencies = [ [[package]] name = "poem-derive" -version = "3.0.2" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adec62bf9b9483848bc0b46c7911a23a47885b83c20ac9a71d700e349e172aaa" +checksum = "a62fea1692d80a000126f9b28d865012a160b80000abb53ccf152b428222c155" dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -8939,7 +9144,7 @@ dependencies = [ "polkavm-common 0.8.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -8951,7 +9156,7 @@ dependencies = [ "polkavm-common 0.9.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -8961,7 +9166,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15e85319a0d5129dc9f021c62607e0804f5fb777a05cdda44d750ac0732def66" dependencies = [ "polkavm-derive-impl 0.8.0", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -8971,7 +9176,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" dependencies = [ "polkavm-derive-impl 0.9.0", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -8997,9 +9202,9 @@ checksum = "26e85d3456948e650dff0cfc85603915847faf893ed1e66b020bb82ef4557120" [[package]] name = "polling" -version = "3.7.2" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if", "concurrent-queue", @@ -9007,7 +9212,7 @@ dependencies = [ "pin-project-lite 0.2.14", "rustix 0.38.34", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -9035,9 +9240,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "portpicker" @@ -9050,11 +9255,11 @@ dependencies = [ [[package]] name = "postgres-protocol" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b6c5ef183cd3ab4ba005f1ca64c21e8bd97ce4699cfea9e8d9a2c4958ca520" +checksum = "acda0ebdebc28befa84bee35e651e4c5f09073d668c7aed4cf7e23c3cda84b23" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "byteorder", "bytes", "fallible-iterator 0.2.0", @@ -9068,9 +9273,9 @@ dependencies = [ [[package]] name = "postgres-types" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d2234cdee9408b523530a9b6d2d6b373d1db34f6a8e51dc03ded1828d7fb67c" +checksum = "02048d9e032fb3cc3413bbf7b83a15d84a5d419778e2628751896d856498eee9" dependencies = [ "bytes", "fallible-iterator 0.2.0", @@ -9085,9 +9290,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "pq-sys" @@ -9114,9 +9322,9 @@ dependencies = [ [[package]] name = "predicates" -version = "3.1.0" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8" +checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" dependencies = [ "anstyle", "difflib", @@ -9125,15 +9333,15 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" [[package]] name = "predicates-tree" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" dependencies = [ "predicates-core", "termtree", @@ -9165,7 +9373,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -9246,7 +9454,7 @@ checksum = "834da187cfe638ae8abb0203f0b33e5ccdb02a28e7199f2f47b3e2754f50edca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -9292,7 +9500,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -9380,7 +9588,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -9498,9 +9706,9 @@ dependencies = [ [[package]] name = "psl" -version = "2.1.52" +version = "2.1.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9175d202d68cb9075415cd2d00062282941010af4174edb7a82d20514b89bc36" +checksum = "ce9398ad066421139b2e3afe16ea46772ffda30bd9ba57554dc035df5e26edc8" dependencies = [ "psl-types", ] @@ -9865,7 +10073,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -9895,9 +10103,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.5" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -10036,7 +10244,7 @@ dependencies = [ [[package]] name = "ring" version = "0.1.0" -source = "git+https://github.com/w3f/ring-proof#626c9598be949aa3dbdd72e8a40531f68b01d6c2" +source = "git+https://github.com/w3f/ring-proof#665f5f51af5734c7b6d90b985dd6861d4c5b4752" dependencies = [ "ark-ec", "ark-ff", @@ -10201,7 +10409,7 @@ dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.71", + "syn 2.0.74", "walkdir", ] @@ -10346,22 +10554,22 @@ dependencies = [ "log", "ring 0.17.8", "rustls-pki-types", - "rustls-webpki 0.102.5", + "rustls-webpki 0.102.6", "subtle 2.6.1", "zeroize", ] [[package]] name = "rustls" -version = "0.23.11" +version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4828ea528154ae444e5a642dbb7d5623354030dc9822b83fd9bb79683c7399d0" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ "log", "once_cell", "ring 0.17.8", "rustls-pki-types", - "rustls-webpki 0.102.5", + "rustls-webpki 0.102.6", "subtle 2.6.1", "zeroize", ] @@ -10385,7 +10593,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a88d6d420651b496bdd98684116959239430022a115c1240e6c3993be0b15fba" dependencies = [ "openssl-probe", - "rustls-pemfile 2.1.2", + "rustls-pemfile 2.1.3", "rustls-pki-types", "schannel", "security-framework", @@ -10402,9 +10610,9 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ "base64 0.22.1", "rustls-pki-types", @@ -10412,25 +10620,25 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" [[package]] name = "rustls-platform-verifier" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e3beb939bcd33c269f4bf946cc829fcd336370267c4a927ac0399c84a3151a1" +checksum = "93bda3f493b9abe5b93b3e7e3ecde0df292f2bd28c0296b90586ee0055ff5123" dependencies = [ "core-foundation", "core-foundation-sys", "jni", "log", "once_cell", - "rustls 0.23.11", + "rustls 0.23.12", "rustls-native-certs 0.7.1", "rustls-platform-verifier-android", - "rustls-webpki 0.102.5", + "rustls-webpki 0.102.6", "security-framework", "security-framework-sys", "webpki-roots 0.26.3", @@ -10439,9 +10647,9 @@ dependencies = [ [[package]] name = "rustls-platform-verifier-android" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84e217e7fdc8466b5b35d30f8c0a30febd29173df4a3a0c2115d306b9c4117ad" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" @@ -10455,9 +10663,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.5" +version = "0.102.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a6fccd794a42c2c105b513a2f62bc3fd8f3ba57a4593677ceb0bd035164d78" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" dependencies = [ "ring 0.17.8", "rustls-pki-types", @@ -10642,7 +10850,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -10652,7 +10860,7 @@ source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0 dependencies = [ "array-bytes 6.2.3", "chrono", - "clap 4.5.9", + "clap 4.5.15", "fdlimit", "futures", "itertools 0.10.5", @@ -11475,7 +11683,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -11696,7 +11904,7 @@ dependencies = [ "proc-macro2", "quote", "scale-info", - "syn 2.0.71", + "syn 2.0.74", "thiserror", ] @@ -11723,9 +11931,9 @@ dependencies = [ [[package]] name = "scale-value" -version = "0.16.0" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cf9738c263c665144177201126bdad39d3d62512152f178f35002228026976" +checksum = "ba4d772cfb7569e03868400344a1695d16560bf62b86b918604773607d39ec84" dependencies = [ "base58", "blake2 0.10.6", @@ -11955,11 +12163,17 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +[[package]] +name = "seq-macro" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" + [[package]] name = "serde" -version = "1.0.204" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" dependencies = [ "serde_derive", ] @@ -11991,22 +12205,23 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.204" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -12023,9 +12238,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -12070,7 +12285,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.4.0", "itoa", "ryu", "serde", @@ -12179,6 +12394,27 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" +dependencies = [ + "libc", + "mio 0.7.14", + "signal-hook", +] + [[package]] name = "signal-hook-registry" version = "1.4.2" @@ -12223,9 +12459,9 @@ dependencies = [ [[package]] name = "similar" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" [[package]] name = "simple-mermaid" @@ -12283,9 +12519,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smol" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e635339259e51ef85ac7aa29a1cd991b957047507288697a690e80ab97d07cad" +checksum = "aad24f41392790e6ac67f4f4cd871da61f7d758e07b5622431e491e897d9c8a7" dependencies = [ "async-channel 2.3.1", "async-executor", @@ -12374,7 +12610,7 @@ dependencies = [ "hex", "itertools 0.12.1", "log", - "lru 0.12.3", + "lru 0.12.4", "no-std-net 0.6.0", "parking_lot 0.12.3", "pin-project", @@ -12389,6 +12625,28 @@ dependencies = [ "zeroize", ] +[[package]] +name = "snafu" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6" +dependencies = [ + "doc-comment", + "snafu-derive", +] + +[[package]] +name = "snafu-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "snap" version = "1.1.1" @@ -12497,7 +12755,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -12781,7 +13039,7 @@ dependencies = [ [[package]] name = "sp-crypto-ec-utils" version = "0.10.0" -source = "git+https://github.com/paritytech/polkadot-sdk#f8f70b37562e3519401f8c1fada9a2c55589e0c6" +source = "git+https://github.com/paritytech/polkadot-sdk#843c4db78f0ca260376c5a3abf78c95782ebdc64" dependencies = [ "ark-bls12-377", "ark-bls12-377-ext", @@ -12832,7 +13090,7 @@ source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0 dependencies = [ "quote", "sp-crypto-hashing 0.0.0", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -12852,7 +13110,7 @@ checksum = "48d09fa0a5f7299fb81ee25ae3853d26200f7a348148aed6de76be905c007dbe" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -12862,17 +13120,17 @@ source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0 dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] name = "sp-debug-derive" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#f8f70b37562e3519401f8c1fada9a2c55589e0c6" +source = "git+https://github.com/paritytech/polkadot-sdk#843c4db78f0ca260376c5a3abf78c95782ebdc64" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -12889,7 +13147,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.25.0" -source = "git+https://github.com/paritytech/polkadot-sdk#f8f70b37562e3519401f8c1fada9a2c55589e0c6" +source = "git+https://github.com/paritytech/polkadot-sdk#843c4db78f0ca260376c5a3abf78c95782ebdc64" dependencies = [ "environmental", "parity-scale-codec", @@ -13163,7 +13421,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#f8f70b37562e3519401f8c1fada9a2c55589e0c6" +source = "git+https://github.com/paritytech/polkadot-sdk#843c4db78f0ca260376c5a3abf78c95782ebdc64" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -13209,20 +13467,20 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] name = "sp-runtime-interface-proc-macro" version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#f8f70b37562e3519401f8c1fada9a2c55589e0c6" +source = "git+https://github.com/paritytech/polkadot-sdk#843c4db78f0ca260376c5a3abf78c95782ebdc64" dependencies = [ "Inflector", "expander", "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -13236,7 +13494,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -13350,7 +13608,7 @@ source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0 [[package]] name = "sp-std" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#f8f70b37562e3519401f8c1fada9a2c55589e0c6" +source = "git+https://github.com/paritytech/polkadot-sdk#843c4db78f0ca260376c5a3abf78c95782ebdc64" [[package]] name = "sp-storage" @@ -13368,7 +13626,7 @@ dependencies = [ [[package]] name = "sp-storage" version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#f8f70b37562e3519401f8c1fada9a2c55589e0c6" +source = "git+https://github.com/paritytech/polkadot-sdk#843c4db78f0ca260376c5a3abf78c95782ebdc64" dependencies = [ "impl-serde", "parity-scale-codec", @@ -13432,7 +13690,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#f8f70b37562e3519401f8c1fada9a2c55589e0c6" +source = "git+https://github.com/paritytech/polkadot-sdk#843c4db78f0ca260376c5a3abf78c95782ebdc64" dependencies = [ "parity-scale-codec", "tracing", @@ -13538,7 +13796,7 @@ dependencies = [ "parity-scale-codec", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -13571,7 +13829,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#f8f70b37562e3519401f8c1fada9a2c55589e0c6" +source = "git+https://github.com/paritytech/polkadot-sdk#843c4db78f0ca260376c5a3abf78c95782ebdc64" dependencies = [ "impl-trait-for-tuples", "log", @@ -13825,7 +14083,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -13936,7 +14194,7 @@ dependencies = [ "sp-maybe-compressed-blob", "strum 0.24.1", "tempfile", - "toml 0.8.15", + "toml 0.8.19", "walkdir", "wasm-opt", ] @@ -13956,7 +14214,7 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "subxt" version = "0.37.0" -source = "git+https://github.com/paritytech/subxt#f359119da26aa427ee8b3bfa5fd41d9b580eade0" +source = "git+https://github.com/paritytech/subxt#90b47faad85c34382f086e2cc886da8574453c36" dependencies = [ "async-trait", "derive-where", @@ -13974,7 +14232,7 @@ dependencies = [ "scale-decode 0.13.1", "scale-encode 0.7.1", "scale-info", - "scale-value 0.16.0", + "scale-value 0.16.2", "serde", "serde_json", "sp-crypto-hashing 0.1.0", @@ -13991,7 +14249,7 @@ dependencies = [ [[package]] name = "subxt-codegen" version = "0.37.0" -source = "git+https://github.com/paritytech/subxt#f359119da26aa427ee8b3bfa5fd41d9b580eade0" +source = "git+https://github.com/paritytech/subxt#90b47faad85c34382f086e2cc886da8574453c36" dependencies = [ "frame-metadata 16.0.0", "heck 0.5.0", @@ -14003,7 +14261,7 @@ dependencies = [ "scale-info", "scale-typegen", "subxt-metadata", - "syn 2.0.71", + "syn 2.0.74", "thiserror", "tokio", ] @@ -14011,7 +14269,7 @@ dependencies = [ [[package]] name = "subxt-core" version = "0.37.0" -source = "git+https://github.com/paritytech/subxt#f359119da26aa427ee8b3bfa5fd41d9b580eade0" +source = "git+https://github.com/paritytech/subxt#90b47faad85c34382f086e2cc886da8574453c36" dependencies = [ "base58", "blake2 0.10.6", @@ -14027,7 +14285,7 @@ dependencies = [ "scale-decode 0.13.1", "scale-encode 0.7.1", "scale-info", - "scale-value 0.16.0", + "scale-value 0.16.2", "serde", "serde_json", "sp-core 31.0.0", @@ -14040,7 +14298,7 @@ dependencies = [ [[package]] name = "subxt-lightclient" version = "0.37.0" -source = "git+https://github.com/paritytech/subxt#f359119da26aa427ee8b3bfa5fd41d9b580eade0" +source = "git+https://github.com/paritytech/subxt#90b47faad85c34382f086e2cc886da8574453c36" dependencies = [ "futures", "futures-util", @@ -14056,7 +14314,7 @@ dependencies = [ [[package]] name = "subxt-macro" version = "0.37.0" -source = "git+https://github.com/paritytech/subxt#f359119da26aa427ee8b3bfa5fd41d9b580eade0" +source = "git+https://github.com/paritytech/subxt#90b47faad85c34382f086e2cc886da8574453c36" dependencies = [ "darling 0.20.10", "parity-scale-codec", @@ -14064,13 +14322,13 @@ dependencies = [ "quote", "scale-typegen", "subxt-codegen", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] name = "subxt-metadata" version = "0.37.0" -source = "git+https://github.com/paritytech/subxt#f359119da26aa427ee8b3bfa5fd41d9b580eade0" +source = "git+https://github.com/paritytech/subxt#90b47faad85c34382f086e2cc886da8574453c36" dependencies = [ "frame-metadata 16.0.0", "hashbrown 0.14.5", @@ -14092,9 +14350,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.71" +version = "2.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" +checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" dependencies = [ "proc-macro2", "quote", @@ -14168,20 +14426,21 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.15" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand", + "once_cell", "rustix 0.38.34", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -14204,6 +14463,59 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "terminal-emoji" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8143568e8d5270b3b8f573ab8bb11a556a5c9e4becdc12241a7eef4c54a55170" +dependencies = [ + "terminal-supports-emoji", +] + +[[package]] +name = "terminal-log-symbols" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7569386670bad024a2729d194542c42500615fca75f1139c99b697704f7e46f" +dependencies = [ + "ansi-colors-macro", + "terminal-emoji", +] + +[[package]] +name = "terminal-spinner-data" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3aadcf9cbc909865c51ff9ced167a1065201b9b35d7254d530c9520b687ef3f4" +dependencies = [ + "anyhow", + "heck 0.3.3", + "quote", + "serde", + "serde_json", +] + +[[package]] +name = "terminal-spinners" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a1f23d549659993743823e9f54d6dd0502e6e6466894a0e1c254262c0e0e93" +dependencies = [ + "crossterm", + "terminal-log-symbols", + "terminal-spinner-data", +] + +[[package]] +name = "terminal-supports-emoji" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8873a7a1f2d286cfedc10663a722309b1c74092852cf149aee738cbe901c6eb" +dependencies = [ + "atty", + "lazy_static", +] + [[package]] name = "terminal_size" version = "0.3.0" @@ -14269,7 +14581,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -14317,6 +14629,17 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "thrift" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e54bc85fc7faa8bc175c4bab5b92ba8d9a3ce893d0e9f42cc455c8ab16a9e09" +dependencies = [ + "byteorder", + "integer-encoding", + "ordered-float 2.10.1", +] + [[package]] name = "tikv-jemalloc-sys" version = "0.5.4+5.3.0-patched" @@ -14394,22 +14717,21 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.38.1" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2caba9f80616f438e09748d5acda951967e1ea58508ef53d9c6402485a46df" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" dependencies = [ "backtrace", "bytes", "libc", - "mio", - "num_cpus", + "mio 1.0.2", "parking_lot 0.12.3", "pin-project-lite 0.2.14", "signal-hook-registry", "socket2 0.5.7", "tokio-macros", "tracing", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -14424,13 +14746,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -14445,9 +14767,9 @@ dependencies = [ [[package]] name = "tokio-postgres" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d340244b32d920260ae7448cb72b6e238bddc3d4f7603394e7dd46ed8e48f5b8" +checksum = "03adcf0147e203b6032c0b2d30be1415ba03bc348901f3ff1cc0df6a733e60c3" dependencies = [ "async-trait", "byteorder", @@ -14507,7 +14829,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.11", + "rustls 0.23.12", "rustls-pki-types", "tokio", ] @@ -14526,14 +14848,14 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.21.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" +checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" dependencies = [ "futures-util", "log", "tokio", - "tungstenite 0.21.0", + "tungstenite 0.23.0", ] [[package]] @@ -14573,21 +14895,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.15" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac2caab0bf757388c6c0ae23b3293fdb463fee59434529014f85e3263b995c28" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.16", + "toml_edit 0.22.20", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] @@ -14598,7 +14920,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.4.0", "serde", "serde_spanned", "toml_datetime", @@ -14611,22 +14933,22 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.4.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.16" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "278f3d518e152219c994ce877758516bca5e118eaed6996192a774fb9fbf0788" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.4.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow 0.6.18", ] [[package]] @@ -14676,7 +14998,7 @@ dependencies = [ "pin-project", "prost 0.12.6", "rustls-native-certs 0.7.1", - "rustls-pemfile 2.1.2", + "rustls-pemfile 2.1.3", "rustls-pki-types", "tokio", "tokio-rustls 0.25.0", @@ -14727,15 +15049,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -14757,7 +15079,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -14868,6 +15190,7 @@ dependencies = [ "sharded-slab", "smallvec", "thread_local", + "time", "tracing", "tracing-core", "tracing-log 0.2.0", @@ -14954,7 +15277,7 @@ version = "0.38.0" source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" dependencies = [ "async-trait", - "clap 4.5.9", + "clap 4.5.15", "frame-remote-externalities", "frame-try-runtime", "hex", @@ -15011,9 +15334,9 @@ dependencies = [ [[package]] name = "tungstenite" -version = "0.21.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" +checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" dependencies = [ "byteorder", "bytes", @@ -15024,7 +15347,6 @@ dependencies = [ "rand 0.8.5", "sha1", "thiserror", - "url", "utf-8", ] @@ -15290,9 +15612,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "void" @@ -15372,34 +15694,35 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -15409,9 +15732,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -15419,22 +15742,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wasm-instrument" @@ -15747,9 +16070,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -15824,9 +16147,9 @@ dependencies = [ [[package]] name = "wide" -version = "0.7.25" +version = "0.7.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2caba658a80831539b30698ae9862a72db6697dfdd7151e46920f5f2755c3ce2" +checksum = "b828f995bf1e9622031f8009f8481a85406ce1f4d4588ff746d872043e855690" dependencies = [ "bytemuck", "safe_arch", @@ -15862,11 +16185,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -15930,6 +16253,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -16119,9 +16451,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -16238,6 +16570,7 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] @@ -16249,7 +16582,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -16269,7 +16602,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.74", ] [[package]] @@ -16290,6 +16623,15 @@ dependencies = [ "zstd-safe 6.0.6", ] +[[package]] +name = "zstd" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +dependencies = [ + "zstd-safe 7.2.1", +] + [[package]] name = "zstd-safe" version = "5.0.2+zstd.1.5.2" @@ -16310,11 +16652,20 @@ dependencies = [ "zstd-sys", ] +[[package]] +name = "zstd-safe" +version = "7.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +dependencies = [ + "zstd-sys", +] + [[package]] name = "zstd-sys" -version = "2.0.12+zstd.1.5.6" +version = "2.0.13+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index af8a06aa..0b22ed79 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,7 +60,12 @@ crossbeam = "^0.8" custom_error = "1.9.2" derivative = "2.2.0" diesel = { version = "^2.1", features = ["uuid", "chrono"] } -diesel-async = { version = "^0.4.1", features = ["postgres","deadpool","async-connection-wrapper","tokio"]} +diesel-async = { version = "^0.4.1", features = [ + "postgres", + "deadpool", + "async-connection-wrapper", + "tokio", +] } diesel_migrations = { version = "2.1", features = ["postgres"] } dotenvy = "0.15" frame-benchmarking = "24.0.0" @@ -127,24 +132,25 @@ secret-vault = { version = "1.8", features = [] } secret-vault-value = "0.3" serde = "1.0" serde_derive = "1.0" -serde_json = { version = "^1.0", default-features = false } -serde_yaml = "0.9.14" +serde_json = { version = "1", default-features = false } +serde_yaml = "0.9" shellexpand = "3.0.0" -temp-dir = "0.1.11" -tempfile = "3.4.0" +temp-dir = "0.1" +tempfile = "3" testcontainers = "0.14" thiserror = "^1" tightness = "0.1" -tokio = { version = "1.27", features = [ +tokio = { version = "1", features = [ "time", "macros", "rt-multi-thread", "sync", ] } -tracing-log = "^0.1.3" -tokio-stream = { version = "0.1.11", features = ["sync"] } +tokio-stream = { version = "0.1", features = ["sync"] } +tokio-util = { version = "0.7" } toml = "0.7.3" tracing = "^0.1.35" +tracing-log = "^0.1.3" tungstenite = "0.20.1" url = "2" user-error = "1" diff --git a/Makefile b/Makefile index 21f25b3e..32ef2c16 100644 --- a/Makefile +++ b/Makefile @@ -77,7 +77,7 @@ test-prep-$(ISOLATION_ID): ensure-context --build-arg CARGO_HOME=.cargo_cached \ --target test \ --load - +ping .PHONY: tested-$(ISOLATION_ID) test: tested-$(ISOLATION_ID) tested-$(ISOLATION_ID): test-prep-$(ISOLATION_ID) diff --git a/crates/chronicle-arrow/Cargo.toml b/crates/chronicle-arrow/Cargo.toml index e10f7e92..ad8870db 100644 --- a/crates/chronicle-arrow/Cargo.toml +++ b/crates/chronicle-arrow/Cargo.toml @@ -1,11 +1,12 @@ [package] edition = "2021" -name = "chronicle-arrow" +name = "chronicle-arrow" version = "0.1.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] + arrow = { version = "50", features = ["json", "prettyprint", "chrono-tz"] } arrow-array = { version = "50" } arrow-buffer = { version = "50" } @@ -24,30 +25,30 @@ serde = { workspace = true } serde_json = { workspace = true } thiserror = { workspace = true } tokio = { version = "^1", default-features = false, features = [ - "macros", - "rt", - "rt-multi-thread", + "macros", + "rt", + "rt-multi-thread", ] } tonic = { version = "0.10.2", default-features = false, features = [ - "transport", - "codegen", - "prost", + "transport", + "codegen", + "prost", ] } tracing = { workspace = true } uuid = { workspace = true } #local dependencies -api = { path = "../api" } +api = { path = "../api" } chronicle-persistence = { path = "../chronicle-persistence" } -common = { path = "../common", features = ["std"] } +common = { path = "../common", features = ["std"] } [dev-dependencies] -arrow-json = { version = "50" } -chronicle-telemetry = { path = "../chronicle-telemetry" } +arrow-json = { version = "50" } +chronicle-telemetry = { path = "../chronicle-telemetry" } chronicle-test-infrastructure = { path = "../chronicle-test-infrastructure" } -insta = { workspace = true, features = ["toml"] } -portpicker = { workspace = true } -serde = { workspace = true, features = ["derive"] } -serde_arrow = { version = "*", features = ["arrow-50"] } +insta = { workspace = true, features = ["toml"] } +portpicker = { workspace = true } +serde = { workspace = true, features = ["derive"] } +serde_arrow = { version = "*", features = ["arrow-50"] } diff --git a/crates/chronicle-arrow/src/lib.rs b/crates/chronicle-arrow/src/lib.rs index d98a5e7f..681a239e 100644 --- a/crates/chronicle-arrow/src/lib.rs +++ b/crates/chronicle-arrow/src/lib.rs @@ -6,6 +6,7 @@ use arrow_flight::{ HandshakeResponse, IpcMessage, PutResult, SchemaAsIpc, SchemaResult, Ticket, }; use arrow_schema::ArrowError; + use diesel_async::{ pooled_connection::deadpool::{Pool, PoolError}, AsyncPgConnection, @@ -45,7 +46,7 @@ use crate::{ mod meta; mod operations; mod peekablestream; -mod query; +pub mod query; #[derive(Error, Debug)] pub enum ChronicleArrowError { @@ -133,24 +134,27 @@ pub async fn calculate_count_by_metadata_term( ) -> Result { let pool = pool.clone(); match term { - Term::Entity => + Term::Entity => { entity_count_by_type( &pool, domaintype.map(|x| x.to_string()).iter().map(|s| s.as_str()).collect(), ) - .await, - Term::Agent => + .await + }, + Term::Agent => { agent_count_by_type( &pool, domaintype.map(|x| x.to_string()).iter().map(|s| s.as_str()).collect(), ) - .await, - Term::Activity => + .await + }, + Term::Activity => { activity_count_by_type( &pool, domaintype.map(|x| x.to_string()).iter().map(|s| s.as_str()).collect(), ) - .await, + .await + }, _ => Ok(0), } .map_err(|e| Status::from_error(e.into())) @@ -429,11 +433,12 @@ impl FlightService for FlightServiceImpl { ) .boxed() }, - _ => + _ => { return Err(Status::not_found(format!( "Definition not found for term: {:?}, type_name: {}", term, type_name - ))), + ))) + }, } .await; @@ -461,8 +466,9 @@ impl FlightService for FlightServiceImpl { let ipc_message_result = SchemaAsIpc::new(&schema.schema, &options).try_into(); match ipc_message_result { Ok(IpcMessage(schema)) => Ok(Response::new(SchemaResult { schema })), - Err(e) => - Err(Status::internal(format!("Failed to convert schema to IPC message: {}", e))), + Err(e) => { + Err(Status::internal(format!("Failed to convert schema to IPC message: {}", e))) + }, } } @@ -559,8 +565,12 @@ impl FlightService for FlightServiceImpl { Some(descriptor) => descriptor, None => return Err(Status::invalid_argument("Flight data has no descriptor")), }, - Some(Err(e)) => - return Err(Status::internal(format!("Failed to get first item from stream: {}", e))), + Some(Err(e)) => { + return Err(Status::internal(format!( + "Failed to get first item from stream: {}", + e + ))) + }, None => { return Err(Status::invalid_argument("Stream is empty")); }, @@ -665,8 +675,6 @@ pub async fn run_flight_service( #[cfg(test)] mod tests { - use std::{collections::HashMap, net::SocketAddr, time::Duration}; - use arrow_array::RecordBatch; use arrow_flight::{ decode::FlightRecordBatchStream, flight_service_client::FlightServiceClient, Criteria, @@ -674,9 +682,11 @@ mod tests { }; use arrow_ipc::writer::{self, IpcWriteOptions}; use arrow_schema::ArrowError; + use chronicle_test_infrastructure::substitutes::{test_api, TestDispatch}; use chrono::{TimeZone, Utc}; use futures::{pin_mut, stream, StreamExt}; use portpicker::pick_unused_port; + use std::{collections::HashMap, net::SocketAddr, time::Duration}; use tonic::{transport::Channel, Request, Status}; use uuid::Uuid; @@ -684,7 +694,6 @@ mod tests { chronicle_graphql::{authorization::TokenChecker, EndpointSecurityConfiguration}, commands::{ApiCommand, ImportCommand}, }; - use chronicle_test_infrastructure::substitutes::{test_api, TestDispatch}; use common::{ attributes::{Attribute, Attributes}, domain::{ChronicleDomainDef, PrimitiveType}, @@ -787,13 +796,16 @@ roles: .iter() .map(|(name, typ)| { let value = match typ { - PrimitiveType::String => - serde_json::Value::String(format!("{}-value", name)), - PrimitiveType::Int => - serde_json::Value::Number(serde_json::Number::from(42)), + PrimitiveType::String => { + serde_json::Value::String(format!("{}-value", name)) + }, + PrimitiveType::Int => { + serde_json::Value::Number(serde_json::Number::from(42)) + }, PrimitiveType::Bool => serde_json::Value::Bool(true), - PrimitiveType::JSON => - serde_json::Value::String(format!("{{\"{}\": \"example\"}}", name)), + PrimitiveType::JSON => { + serde_json::Value::String(format!("{{\"{}\": \"example\"}}", name)) + }, }; Attribute::new(name, value) }) diff --git a/crates/chronicle-arrow/src/query/activity.rs b/crates/chronicle-arrow/src/query/activity.rs index 69f0f3aa..00d2e426 100644 --- a/crates/chronicle-arrow/src/query/activity.rs +++ b/crates/chronicle-arrow/src/query/activity.rs @@ -44,28 +44,28 @@ pub async fn activity_count_by_type( #[derive(Default)] pub struct AgentInteraction { - pub(crate) agent: String, - pub(crate) role: Option, + pub agent: String, + pub role: Option, } #[derive(Default)] pub struct ActivityAssociationRef { - pub(crate) responsible: AgentInteraction, - pub(crate) delegated: Vec, + pub responsible: AgentInteraction, + pub delegated: Vec, } #[derive(Default)] pub struct ActivityAndReferences { - pub(crate) id: String, - pub(crate) namespace_name: String, - pub(crate) namespace_uuid: [u8; 16], - pub(crate) started: Option>, - pub(crate) ended: Option>, - pub(crate) attributes: Attributes, - pub(crate) used: Vec, - pub(crate) generated: Vec, - pub(crate) was_informed_by: Vec, - pub(crate) was_associated_with: Vec, + pub id: String, + pub namespace_name: String, + pub namespace_uuid: [u8; 16], + pub started: Option>, + pub ended: Option>, + pub attributes: Attributes, + pub used: Vec, + pub generated: Vec, + pub was_informed_by: Vec, + pub was_associated_with: Vec, } impl ActivityAndReferences { @@ -200,8 +200,9 @@ impl ActivityAndReferences { let field_name = field.name(); match hashed_fields.get(field_name) { Some(array) => columns.push(array.clone()), - None => - return Err(ChronicleArrowError::SchemaFieldNotFound(field_name.to_string())), + None => { + return Err(ChronicleArrowError::SchemaFieldNotFound(field_name.to_string())) + }, } } @@ -291,7 +292,7 @@ pub async fn load_activities_by_type( let mut connection = pool.get().await.map_err(ChronicleArrowError::PoolError)?; let activities_and_namespaces: Vec<(Activity, Namespace)> = match typ { - Some(typ_value) => + Some(typ_value) => { activity::table .inner_join(namespace::table.on(activity::namespace_id.eq(namespace::id))) .inner_join( @@ -304,8 +305,9 @@ pub async fn load_activities_by_type( .offset(position as i64) .limit(max_records as i64) .load(&mut connection) - .await?, - None => + .await? + }, + None => { activity::table .inner_join(namespace::table.on(activity::namespace_id.eq(namespace::id))) .inner_join( @@ -318,7 +320,8 @@ pub async fn load_activities_by_type( .offset(position as i64) .limit(max_records as i64) .load(&mut connection) - .await?, + .await? + }, }; let (activities, namespaces): (Vec, Vec) = diff --git a/crates/chronicle-arrow/src/query/agent.rs b/crates/chronicle-arrow/src/query/agent.rs index 8bf06693..7793401d 100644 --- a/crates/chronicle-arrow/src/query/agent.rs +++ b/crates/chronicle-arrow/src/query/agent.rs @@ -40,25 +40,25 @@ pub async fn agent_count_by_type( #[derive(Default)] pub struct ActedOnBehalfOfRef { - pub(crate) agent: String, - pub(crate) role: Option, - pub(crate) activity: String, + pub agent: String, + pub role: Option, + pub activity: String, } #[derive(Default)] pub struct AgentAttributionRef { - pub(crate) entity: String, - pub(crate) role: Option, + pub entity: String, + pub role: Option, } #[derive(Default)] pub struct AgentAndReferences { - pub(crate) id: String, - pub(crate) namespace_name: String, - pub(crate) namespace_uuid: [u8; 16], - pub(crate) attributes: Attributes, - pub(crate) acted_on_behalf_of: Vec, - pub(crate) was_attributed_to: Vec, + pub id: String, + pub namespace_name: String, + pub namespace_uuid: [u8; 16], + pub attributes: Attributes, + pub acted_on_behalf_of: Vec, + pub was_attributed_to: Vec, } impl AgentAndReferences { @@ -160,8 +160,9 @@ impl AgentAndReferences { let field_name = field.name(); match hashed_fields.get(field_name) { Some(array) => columns.push(array.clone()), - None => - return Err(ChronicleArrowError::SchemaFieldNotFound(field_name.to_string())), + None => { + return Err(ChronicleArrowError::SchemaFieldNotFound(field_name.to_string())) + }, } } @@ -294,7 +295,7 @@ pub async fn load_agents_by_type( let mut connection = pool.get().await.map_err(ChronicleArrowError::PoolError)?; let agents_and_namespaces: Vec<(Agent, Namespace)> = match typ { - Some(typ_value) => + Some(typ_value) => { agent::table .inner_join(namespace::table.on(agent::namespace_id.eq(namespace::id))) .inner_join(agent_block_info::table.on(agent::id.eq(agent_block_info::agent_id))) @@ -304,8 +305,9 @@ pub async fn load_agents_by_type( .offset(position as i64) .limit(max_records as i64) .load(&mut connection) - .await?, - None => + .await? + }, + None => { agent::table .inner_join(namespace::table.on(agent::namespace_id.eq(namespace::id))) .inner_join(agent_block_info::table.on(agent::id.eq(agent_block_info::agent_id))) @@ -315,7 +317,8 @@ pub async fn load_agents_by_type( .offset(position as i64) .limit(max_records as i64) .load(&mut connection) - .await?, + .await? + }, }; let total_records = agents_and_namespaces.len() as u64; diff --git a/crates/chronicle-arrow/src/query/entity.rs b/crates/chronicle-arrow/src/query/entity.rs index 8bd647e8..84a65863 100644 --- a/crates/chronicle-arrow/src/query/entity.rs +++ b/crates/chronicle-arrow/src/query/entity.rs @@ -81,16 +81,16 @@ pub struct EntityAttributionRef { #[derive(Default, Debug)] pub struct EntityAndReferences { - pub(crate) id: String, - pub(crate) namespace_name: String, - pub(crate) namespace_uuid: [u8; 16], - pub(crate) attributes: Attributes, - pub(crate) was_generated_by: Vec, - pub(crate) was_attributed_to: Vec, - pub(crate) was_derived_from: Vec, - pub(crate) had_primary_source: Vec, - pub(crate) was_quoted_from: Vec, - pub(crate) was_revision_of: Vec, + pub id: String, + pub namespace_name: String, + pub namespace_uuid: [u8; 16], + pub attributes: Attributes, + pub was_generated_by: Vec, + pub was_attributed_to: Vec, + pub was_derived_from: Vec, + pub had_primary_source: Vec, + pub was_quoted_from: Vec, + pub was_revision_of: Vec, } impl EntityAndReferences { @@ -218,8 +218,9 @@ impl EntityAndReferences { let field_name = field.name(); match hashed_fields.get(field_name) { Some(array) => columns.push(array.clone()), - None => - return Err(ChronicleArrowError::SchemaFieldNotFound(field_name.to_string())), + None => { + return Err(ChronicleArrowError::SchemaFieldNotFound(field_name.to_string())) + }, } } diff --git a/crates/chronicle-arrow/src/query/mod.rs b/crates/chronicle-arrow/src/query/mod.rs index a762caa9..9e8bcdd2 100644 --- a/crates/chronicle-arrow/src/query/mod.rs +++ b/crates/chronicle-arrow/src/query/mod.rs @@ -11,9 +11,9 @@ pub use entity::*; use crate::ChronicleArrowError; -mod activity; -mod agent; -mod entity; +pub mod activity; +pub mod agent; +pub mod entity; // For simple id only relations, we can just reuse this mapping fn vec_vec_string_to_list_array( diff --git a/crates/chronicle-data/Cargo.toml b/crates/chronicle-data/Cargo.toml index da124234..0980c1a8 100644 --- a/crates/chronicle-data/Cargo.toml +++ b/crates/chronicle-data/Cargo.toml @@ -1,20 +1,31 @@ [package] edition = "2021" -name = "chronicle-data" +name = "chronicle-data" version = "0.1.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +anyhow = { workspace = true } arrow-array = { version = "50" } +arrow-csv = { version = "50" } arrow-data = { version = "50" } arrow-flight = { version = "50" } arrow-ipc = { version = "50" } +arrow-json = { version = "50" } arrow-schema = { version = "50" } +chronicle-arrow = { path = "../chronicle-arrow" } clap = { version = "^4" } +futures = { workspace = true } +object_store = { version = "^0.10" } +parquet = { version = "50", features = ["async"] } prettytable-rs = "^0.10" -tokio = { workspace = true } +rand = { workspace = true } +terminal-spinners = "0.3.2" +tokio = { workspace = true, features = ["fs"] } +tokio-stream = { workspace = true } +tokio-util = { workspace = true } tonic = { version = "0.10.2", default-features = false, features = [ - "transport", - "prost", + "transport", + "prost", ] } diff --git a/crates/chronicle-data/src/cli.rs b/crates/chronicle-data/src/cli.rs index 48b412d0..a7133243 100644 --- a/crates/chronicle-data/src/cli.rs +++ b/crates/chronicle-data/src/cli.rs @@ -1,9 +1,37 @@ +use core::str::FromStr; +use std::path::PathBuf; + use clap::{Parser, Subcommand}; +#[derive(Clone, Debug, Copy)] +pub enum Format { + Parquet, + CSV, + JSON, +} + +impl FromStr for Format { + type Err = String; + + fn from_str(s: &str) -> Result { + match s.to_lowercase().as_str() { + "parquet" => Ok(Format::Parquet), + "csv" => Ok(Format::CSV), + "json" => Ok(Format::JSON), + _ => Err(format!("Unknown format: {}", s)), + } + } +} + #[derive(Parser)] #[clap(name = "chronicle-data", about = "CLI for Chronicle Data operations")] pub struct Cli { - #[arg(long, help = "The Chronicle server URL", global = true, default_value = "http://localhost:9983")] + #[arg( + long, + help = "The Chronicle server URL", + global = true, + default_value = "http://localhost:9983" + )] pub chronicle: String, #[arg(long, help = "Authentication token", global = true, required = false)] @@ -20,18 +48,56 @@ pub enum Commands { #[clap(subcommand)] subcommand: DescribeSubcommands, }, + #[clap( + about = "Generate naive fake data for a flight, for load testing rather than simulating a domain" + )] + Fake { + #[arg(long, help = "Path representing the flight", required = true)] + path: PathBuf, + + #[arg(long, help = "Number of terms to generate", required = true)] + terms: u32, + + #[arg(long, help = "Seed for the random number generator", required = false)] + seed: Option, + }, #[clap(about = "Handles incoming data operations")] - In, + In { + #[arg(long, help = "Path representing the flight", required = true)] + path: PathBuf, + + #[arg(long, help = "Local path to store flight data", required = true)] + local_path: PathBuf, + + #[arg( + long, + help = "The format for the data operation", + required = false, + default_value = "parquet" + )] + format: Format, + }, #[clap(about = "Handles outgoing data operations")] Out { - #[arg(long, help = "The path for the data operation", required = true)] - path: String, + #[arg(long, help = "Path representing the flight", required = true)] + path: PathBuf, + + #[arg(long, help = "Local path to store flight data", required = true)] + local_path: PathBuf, + + #[arg(long, help = "Optional start block time to export", required = false)] + from: Option, - #[arg(long, help = "Optional start date for the data operation", required = false)] - from: Option, + #[arg(long, help = "Optional end block time to export", required = false)] + to: Option, - #[arg(long, help = "Optional end date for the data operation", required = false)] - to: Option, + #[arg( + long, + help = "The format for the data operation", + required = false, + default_value = "parquet" + )] + format: Format, }, } diff --git a/crates/chronicle-data/src/main.rs b/crates/chronicle-data/src/main.rs index 18152d9b..0c0a3647 100644 --- a/crates/chronicle-data/src/main.rs +++ b/crates/chronicle-data/src/main.rs @@ -1,17 +1,37 @@ -use arrow_flight::{flight_service_client::FlightServiceClient, FlightDescriptor, FlightInfo}; +use std::{io::BufReader, path::Path, sync::Arc}; + +use anyhow::{Context, Result}; +use arrow_array::RecordBatch; +use arrow_flight::{ + decode::FlightRecordBatchStream, + encode::{FlightDataEncoder, FlightDataEncoderBuilder}, + error::FlightError, + flight_service_client::FlightServiceClient, + Criteria, FlightData, FlightDescriptor, FlightInfo, SchemaResult, +}; use arrow_schema::Schema; use clap::Parser; -use cli::{Cli, Commands, DescribeSubcommands}; +use cli::{Cli, Commands, DescribeSubcommands, Format}; +use futures::{prelude::future::FutureExt, Stream, StreamExt, TryStreamExt}; +use parquet::{ + arrow::{arrow_reader::ParquetRecordBatchReaderBuilder, ParquetRecordBatchStreamBuilder}, + basic::Compression, + file::properties::WriterProperties, +}; use prettytable::{format, row, Cell, Row, Table}; +use terminal_spinners::{SpinnerBuilder, DOTS}; +use tokio::fs::File; use tonic::transport::Channel; mod cli; +mod fake; -async fn init_flight_client( - cli: &Cli, -) -> Result, Box> { +async fn init_flight_client(cli: &Cli) -> Result> { let chronicle_url = &cli.chronicle; - let channel = Channel::from_shared(chronicle_url.clone())?.connect().await?; + let channel = Channel::from_shared(chronicle_url.clone())? + .connect() + .await + .context("Failed to connect to Flight service")?; Ok(FlightServiceClient::new(channel)) } @@ -33,69 +53,294 @@ fn format_flight_info_as_table(flight_infos: Vec) -> String { let mut table = Table::new(); table.set_format(*format::consts::FORMAT_NO_LINESEP_WITH_TITLE); - table.set_titles(row!["Descriptor", "Endpoints", "Summary"]); + table.set_titles(row!["Path", "Endpoints", "Count"]); for flight_info in flight_infos { - let descriptor = format!("{:?}", flight_info.flight_descriptor); - let endpoints = flight_info.endpoint.iter() + let path = format!("{:?}", flight_info.flight_descriptor.unwrap().path.join("/")); + let endpoints = flight_info + .endpoint + .iter() .map(|e| format!("{:?}", e.location)) .collect::>() .join(", "); let summary = format!("{:?}", flight_info.total_records); - table.add_row(row![descriptor, endpoints, summary]); + table.add_row(row![path, endpoints, summary]); } table.to_string() } -async fn list_flights( +fn decode_flight_data( + flight_data: impl Stream> + Unpin + Send + 'static, +) -> impl Stream> { + let decoder = FlightRecordBatchStream::new_from_flight_data(flight_data); + decoder +} + +fn encode_flight_data( + flight_data: impl Stream> + Unpin + Send + 'static, +) -> impl Stream> { + let encoder = FlightDataEncoderBuilder::new().build(flight_data); + encoder +} + +async fn store_batch( + schema: Arc, + batch: impl Stream, + filename: &Path, + format: Format, +) -> Result<()> { + match format { + Format::Parquet => store_parquet(schema, batch, filename).await, + Format::CSV => store_csv(batch, filename).await, + Format::JSON => store_json(batch, filename).await, + } +} + +async fn store_json(batch: impl Stream, filename: &Path) -> Result<()> { + let mut new_filename = filename.to_path_buf(); + new_filename.set_extension("json"); + + let file = std::fs::File::open(new_filename).context("Failed to open JSON file")?; + let mut writer = arrow_json::writer::LineDelimitedWriter::new(file); + + tokio::pin!(batch); + + while let Some(record_batch) = batch.next().await { + writer.write_batches(&[&record_batch]).context("Failed to write JSON batch")?; + } + + Ok(()) +} + +async fn store_csv(batch: impl Stream, filename: &Path) -> Result<()> { + let mut new_filename = filename.to_path_buf(); + new_filename.set_extension("csv"); + + let file = std::fs::File::create(new_filename).context("Failed to create CSV file")?; + let mut writer = arrow_csv::Writer::new(file); + tokio::pin!(batch); + + while let Some(record_batch) = batch.next().await { + writer.write(&record_batch).context("Failed to write CSV batch")?; + } + + Ok(()) +} + +async fn store_parquet( + schema: Arc, + batch: impl Stream, + filename: &Path, +) -> Result<()> { + let mut new_filename = filename.to_path_buf(); + new_filename.set_extension("parquet"); + + let file = File::create(new_filename).await.context("Failed to create Parquet file")?; + let mut writer = parquet::arrow::AsyncArrowWriter::try_new(file, schema, 1024, None) + .context("Failed to create Parquet writer")?; + + tokio::pin!(batch); + + while let Some(record_batch) = batch.next().await { + writer.write(&record_batch).await.context("Failed to write Parquet batch")?; + } + + writer.close().await.context("Failed to close Parquet writer")?; + Ok(()) +} + +async fn upload_flight( + format: Format, + local_path: &Path, + path: Vec, client: &mut FlightServiceClient, -) -> Result, Box> { - let request = tonic::Request::new(arrow_flight::Criteria::default()); - let response = client.list_flights(request).await?; - - let mut flights_info = Vec::new(); - let mut stream = response.into_inner(); - while let Some(flight_info) = stream.message().await? { - flights_info.push(flight_info); +) -> Result<()> { + let flight_descriptor = FlightDescriptor::new_path(path); + let schema = get_schema(flight_descriptor.path.clone(), client).await?; + let schema = Arc::new(schema); + + let record_batches = read_batch(schema.clone(), local_path, format) + .await? + .map_err(|e| FlightError::from_external_error(e.into())); // Map the error type + + let flight_data_stream = encode_flight_data(record_batches) + .map(|result| result.expect("Failed to encode flight data")); + + let request = tonic::Request::new(flight_data_stream); + let mut stream = client.do_put(request).await?.into_inner(); + + let mut _spinner = SpinnerBuilder::new().spinner(&DOTS).text("Uploading flight data").start(); + + while let Some(_response) = stream.message().await? {} + + Ok(()) +} + +async fn download_flight( + format: Format, + local_path: &Path, + path: Vec, + client: &mut FlightServiceClient, +) -> Result<()> { + let flight_descriptor = FlightDescriptor::new_path(path); + let local_path = local_path.to_owned(); + + if let Some(parent) = local_path.parent() { + tokio::fs::create_dir_all(parent) + .await + .context("Failed to create directories for local path")?; } + let request = tonic::Request::new(flight_descriptor); + let response = client.get_flight_info(request).await?; + + let flight_info = response.into_inner(); + let endpoints = flight_info.endpoint; + + let arrow_schema = arrow_ipc::convert::try_schema_from_ipc_buffer(&flight_info.schema)?; + let schema = Arc::new(arrow_schema); + + for (index, endpoint) in endpoints.iter().enumerate() { + let mut client_clone = client.clone(); + let ticket = endpoint.ticket.clone().unwrap(); + + let request = tonic::Request::new(ticket); + let response = client_clone.do_get(request).await?; + let stream = response.into_inner(); + + let mut filename = local_path.to_path_buf(); + filename.set_file_name(format!( + "{}_{}", + filename.file_name().unwrap().to_str().unwrap(), + index + )); - Ok(flights_info) + let record_batches = decode_flight_data(stream.map_err(|e| FlightError::from(e))) + .filter_map(|x| async move { x.ok() }); + + store_batch(schema.clone(), record_batches, &filename, format).await?; + } + + Ok(()) } -async fn get_schema(path: Vec,client: &mut FlightServiceClient) -> Result> { - let flight_descriptor = FlightDescriptor::new_path(path); - let request = tonic::Request::new(flight_descriptor); - let response = client.get_schema(request).await?; - let schema_result = response.into_inner(); +async fn get_schema( + path: Vec, + client: &mut FlightServiceClient, +) -> Result { + let flight_descriptor = FlightDescriptor::new_path(path); + let request = tonic::Request::new(flight_descriptor); + let response = client.get_schema(request).await?; + let schema_result = response.into_inner(); - Schema::try_from(&schema_result).map_err(|e| e.into()) + Schema::try_from(&schema_result).context("Failed to convert schema") +} + +async fn list_flights(client: &mut FlightServiceClient) -> Result> { + let response = client.list_flights(Criteria::default()).await?; + let flight_info_stream = response.into_inner(); + + let mut flight_infos = Vec::new(); + let mut stream = flight_info_stream.boxed(); + + while let Some(flight_info) = stream.next().await { + let flight_info = flight_info?; + flight_infos.push(flight_info); + } + + Ok(flight_infos) +} + +async fn read_batch( + schema: Arc, + filename: &Path, + format: Format, +) -> Result>> { + match format { + Format::Parquet => Ok(read_parquet(filename).await?.boxed()), + Format::CSV => Ok(read_csv(schema, filename).await?.boxed()), + Format::JSON => Ok(read_json(schema, filename).await?.boxed()), + } +} + +async fn read_json( + schema: Arc, + filename: &Path, +) -> Result>> { + let file = std::fs::File::open(filename).context("Failed to open JSON file")?; + let reader = BufReader::new(file); + let reader = arrow_json::reader::ReaderBuilder::new(schema).build(reader)?; + + let stream = tokio_stream::iter(reader).map(|batch| batch.map_err(anyhow::Error::from)); + Ok(stream) +} + +async fn read_csv( + schema: Arc, + filename: &Path, +) -> Result>> { + let file = std::fs::File::open(filename).context("Failed to open CSV file")?; + let reader = BufReader::new(file); + let csv_reader = arrow_csv::ReaderBuilder::new(schema).build(reader)?; + + let stream = tokio_stream::iter(csv_reader).map(|batch| batch.map_err(anyhow::Error::from)); + Ok(stream) +} + +async fn read_parquet(filename: &Path) -> Result>> { + let file = tokio::fs::File::open(filename).await.context("Failed to open Parquet file")?; + + let stream = ParquetRecordBatchStreamBuilder::new(file) + .await? + .build()? + .map(|batch| batch.map_err(anyhow::Error::from)); + Ok(stream) } #[tokio::main] async fn main() { let cli = Cli::parse(); - let mut client = init_flight_client(&cli).await.expect("Failed to initialize the Flight client"); - - match &cli.command { + let mut client = + init_flight_client(&cli).await.expect("Failed to initialize the Flight client"); + match &cli.command { Commands::Describe { subcommand } => match subcommand { - DescribeSubcommands::Schema{path, ..} => { - let schema = get_schema(path.split('/').map(String::from).collect(), &mut client).await.expect("Failed to get schema"); + DescribeSubcommands::Schema { path, .. } => { + let schema = get_schema(path.split('/').map(String::from).collect(), &mut client) + .await + .expect("Failed to get schema"); println!("{}", format_schema_as_table(&schema)); }, - DescribeSubcommands::Flights => { - match list_flights(&mut client).await { - Ok(flights) => println!("{}", format_flight_info_as_table(flights)), - Err(e) => eprintln!("Error listing flights: {}", e), - } + DescribeSubcommands::Flights => match list_flights(&mut client).await { + Ok(flights) => println!("{}", format_flight_info_as_table(flights)), + Err(e) => eprintln!("Error listing flights: {}", e), }, }, - Commands::In => { - println!("Handling incoming data operations..."); + Commands::In { path, local_path, format } => { + match upload_flight( + *format, + local_path, + path.to_string_lossy().split("/").map(String::from).collect(), + &mut client, + ) + .await + { + Ok(_) => println!("Complete"), + Err(e) => eprintln!("Error uploading flight: {}", e), + } }, - Commands::Out { path, from, to } => { - + Commands::Out { path, local_path, from, to, format } => { + match download_flight( + *format, + local_path, + path.to_string_lossy().split("/").map(String::from).collect(), + &mut client, + ) + .await + { + Ok(_) => println!("Complete"), + Err(e) => eprintln!("Error downloading flight: {}", e), + } }, } } diff --git a/crates/chronicle-domain/domain.yaml b/crates/chronicle-domain/domain.yaml index 8cf1de07..ffae147a 100644 --- a/crates/chronicle-domain/domain.yaml +++ b/crates/chronicle-domain/domain.yaml @@ -1,33 +1,6 @@ -name: Manufacturing -attributes: - BatchID: - type: String - CertID: - type: String - CompanyName: - type: String - PartID: - type: String - Location: - type: String -agents: - Contractor: - attributes: - - CompanyName - - Location -entities: - Certificate: - attributes: - - CertID - Item: - attributes: - - PartID -activities: - ItemCertified: - attributes: [ ] - ItemManufactured: - attributes: - - BatchID -roles: - - CERTIFIER - - MANUFACTURER +name: "untyped" +attributes: {} +entities: {} +activities: {} +agents: {} +roles: [] diff --git a/crates/chronicle-test-infrastructure/src/substitutes/mod.rs b/crates/chronicle-test-infrastructure/src/substitutes/mod.rs index 08ee6507..c30b0226 100644 --- a/crates/chronicle-test-infrastructure/src/substitutes/mod.rs +++ b/crates/chronicle-test-infrastructure/src/substitutes/mod.rs @@ -27,7 +27,7 @@ use diesel_async::{ }; use testcontainers::{images::postgres::Postgres, Container}; -use api::{Api, ApiDispatch, UuidGen}; +use api::{Api, ApiDispatch}; use lazy_static::lazy_static; use testcontainers::clients; @@ -118,8 +118,9 @@ impl<'a> TestDispatch<'a> { let commit = self.api.notify_commit.subscribe().recv().await.unwrap(); match commit { common::ledger::SubmissionStage::Submitted(Ok(_)) => continue, - common::ledger::SubmissionStage::Committed(commit, _id) => - return Ok(Some((commit.delta, commit.tx_id))), + common::ledger::SubmissionStage::Committed(commit, _id) => { + return Ok(Some((commit.delta, commit.tx_id))) + }, common::ledger::SubmissionStage::Submitted(Err(e)) => panic!("{e:?}"), common::ledger::SubmissionStage::NotCommitted((_, tx, _id)) => { panic!("{tx:?}") @@ -127,22 +128,14 @@ impl<'a> TestDispatch<'a> { } } }, - ApiResponse::AlreadyRecorded { subject: _, prov } => - Ok(Some((prov, ChronicleTransactionId::default()))), + ApiResponse::AlreadyRecorded { subject: _, prov } => { + Ok(Some((prov, ChronicleTransactionId::default()))) + }, _ => Ok(None), } } } -#[derive(Debug, Clone)] -struct SameUuid; - -impl UuidGen for SameUuid { - fn uuid() -> Uuid { - Uuid::parse_str("5a0ab5b8-eeb7-4812-9fe3-6dd69bd20cea").unwrap() - } -} - pub async fn embed_substrate() -> Stubstrate { stubstrate::Stubstrate::new() } diff --git a/crates/chronicle/src/bootstrap/mod.rs b/crates/chronicle/src/bootstrap/mod.rs index 060e1e48..c551ac9b 100644 --- a/crates/chronicle/src/bootstrap/mod.rs +++ b/crates/chronicle/src/bootstrap/mod.rs @@ -651,14 +651,6 @@ where } } -fn get_namespace(matches: &ArgMatches) -> NamespaceId { - let namespace_id = matches.value_of("namespace-id").unwrap(); - let namespace_uuid = matches.value_of("namespace-uuid").unwrap(); - let uuid = uuid::Uuid::try_parse(namespace_uuid) - .unwrap_or_else(|_| panic!("cannot parse namespace UUID: {}", namespace_uuid)); - NamespaceId::from_external_id(namespace_id, uuid) -} - async fn config_and_exec( gql: ChronicleGraphQl, domain: &ChronicleDomainDef, diff --git a/crates/chronicle/src/codegen/mod.rs b/crates/chronicle/src/codegen/mod.rs index 648a3448..c5487899 100644 --- a/crates/chronicle/src/codegen/mod.rs +++ b/crates/chronicle/src/codegen/mod.rs @@ -1608,7 +1608,7 @@ fn gen_graphql_type(domain: &ChronicleDomainDef) -> rust::Tokens { #[#tokio::main] pub async fn main() { - + use crate::bootstrap; let model = #chronicledomaindef::from_input_string(#_(#(&domain.to_json_string().unwrap()))).unwrap(); diff --git a/crates/embedded-substrate/src/lib.rs b/crates/embedded-substrate/src/lib.rs index ab28015a..a3264673 100644 --- a/crates/embedded-substrate/src/lib.rs +++ b/crates/embedded-substrate/src/lib.rs @@ -2,9 +2,7 @@ use node_chronicle::{cli::Cli, service}; use protocol_substrate::SubxtClientError; use protocol_substrate_chronicle::ChronicleSubstrateClient; use sc_cli::{print_node_infos, CliConfiguration, Signals, SubstrateCli}; -use subxt::{ - ext::futures::{pin_mut, FutureExt}, -}; +use subxt::ext::futures::{pin_mut, FutureExt}; use tempfile::TempDir; use thiserror::Error; use tokio::{ diff --git a/crates/opactl/src/test/mod.rs b/crates/opactl/src/test/mod.rs index 9b9cdc4f..3453fe72 100644 --- a/crates/opactl/src/test/mod.rs +++ b/crates/opactl/src/test/mod.rs @@ -48,41 +48,6 @@ async fn bootstrap_root_state() -> (String, Stubstrate, TempDir) { (root_key, stubstrate, keystore) } -//TODO: downloads -#[tokio::test] -#[ignore] -async fn bootstrap_root_and_get_key() { - let (_root_key, opa_tp, _keystore) = bootstrap_root_state().await; - //Generate a key pem and set env vars - insta::assert_yaml_snapshot!(opa_tp.stored_keys(), { - ".**.date" => "[date]", - ".**.key" => "[pem]", - } ,@r###" - --- - - id: root - current: - key: "[pem]" - version: 0 - expired: ~ - "###); - - tokio::time::sleep(tokio::time::Duration::from_millis(1000)).await; - - let out_keyfile = NamedTempFile::new().unwrap(); - - let matches = get_opactl_cmd( - format!("opactl get-key --output {}", out_keyfile.path().display(),).as_str(), - ); - - insta::assert_yaml_snapshot!( - dispatch_args(matches, &opa_tp) - .await - .unwrap(), @r###" - --- - NoWait - "###); -} - #[tokio::test] async fn rotate_root() { let (_root_key, opa_tp, keystore) = bootstrap_root_state().await; diff --git a/crates/protocol-substrate-opa/src/transaction.rs b/crates/protocol-substrate-opa/src/transaction.rs index 1a9fa6e2..91ccc888 100644 --- a/crates/protocol-substrate-opa/src/transaction.rs +++ b/crates/protocol-substrate-opa/src/transaction.rs @@ -27,7 +27,6 @@ pub enum TransactionError { // Note, the subxt client requires synchronous, infallible access to the signing keypair, so we // extract it on construction pub enum OpaTransaction { - BootstrapRoot(OpaSubmission, ChronicleSigning, subxt::ext::sp_core::ecdsa::Pair), RotateRoot(OpaSubmission, ChronicleSigning, subxt::ext::sp_core::ecdsa::Pair), RegisterKey(OpaSubmission, ChronicleSigning, String, bool, subxt::ext::sp_core::ecdsa::Pair), RotateKey(OpaSubmission, ChronicleSigning, String, subxt::ext::sp_core::ecdsa::Pair), @@ -35,19 +34,6 @@ pub enum OpaTransaction { } impl OpaTransaction { - pub async fn bootstrap_root( - opa_submission: OpaSubmission, - signer: &ChronicleSigning, - ) -> Result { - Ok(Self::BootstrapRoot( - opa_submission, - signer.to_owned(), - subxt::ext::sp_core::ecdsa::Pair::from_seed_slice( - &signer.copy_signing_key(BATCHER_NAMESPACE, BATCHER_PK).await?.to_bytes(), - )?, - )) - } - pub async fn rotate_root( opa_submission: OpaSubmission, signer: &ChronicleSigning, @@ -111,7 +97,6 @@ impl OpaTransaction { pub fn account_key(&self) -> &subxt::ext::sp_core::ecdsa::Pair { match self { - OpaTransaction::BootstrapRoot(_, _, k) => k, OpaTransaction::RotateRoot(_, _, k) => k, OpaTransaction::RegisterKey(_, _, _, _, k) => k, OpaTransaction::RotateKey(_, _, _, k) => k, @@ -121,7 +106,6 @@ impl OpaTransaction { pub fn submission(&self) -> &OpaSubmission { match self { - OpaTransaction::BootstrapRoot(o, _, _) => o, OpaTransaction::RotateRoot(o, _, _) => o, OpaTransaction::RegisterKey(o, _, _, _, _) => o, OpaTransaction::RotateKey(o, _, _, _) => o, @@ -137,7 +121,6 @@ impl LedgerTransaction for OpaTransaction { async fn as_payload(&self) -> Result { Ok(match self.clone() { - OpaTransaction::BootstrapRoot(o, _, _) => o, OpaTransaction::RotateRoot(o, _, _) => o, OpaTransaction::RegisterKey(o, _, _, _, _) => o, OpaTransaction::RotateKey(o, _, _, _) => o, @@ -148,7 +131,6 @@ impl LedgerTransaction for OpaTransaction { fn correlation_id(&self) -> [u8; 32] { match self { - OpaTransaction::BootstrapRoot(o, _, _) => o.correlation_id, OpaTransaction::RotateRoot(o, _, _) => o.correlation_id, OpaTransaction::RegisterKey(o, _, _, _, _) => o.correlation_id, OpaTransaction::RotateKey(o, _, _, _) => o.correlation_id,