From 2a3c8f39fb37937c5952e670e27c8bb2295105b6 Mon Sep 17 00:00:00 2001 From: jong-un <36259838+zwong91@users.noreply.github.com> Date: Thu, 4 Jan 2024 15:30:26 +0000 Subject: [PATCH 1/4] Update Rust toolchain and dependencies --- Cargo.lock | 2776 ++++++++++++++++++++++++++-------- Cargo.toml | 3 +- build_docker.sh | 2 +- contract/Cargo.toml | 8 +- contract/src/api.rs | 8 +- integration-tests/Cargo.toml | 4 +- integration-tests/src/set.rs | 22 +- res/social_db_release.wasm | Bin 319142 -> 0 bytes rust-toolchain.toml | 2 +- 9 files changed, 2162 insertions(+), 663 deletions(-) delete mode 100755 res/social_db_release.wasm diff --git a/Cargo.lock b/Cargo.lock index 3064c96..334c9cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9,12 +9,59 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" [[package]] -name = "addr2line" -version = "0.20.0" +name = "actix" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "cba56612922b907719d4a01cf11c8d5b458e7d3dba946d0435f20f58d6795ed2" dependencies = [ - "gimli", + "actix-macros", + "actix-rt", + "actix_derive", + "bitflags 2.4.1", + "bytes", + "crossbeam-channel", + "futures-core", + "futures-sink", + "futures-task", + "futures-util", + "log", + "once_cell", + "parking_lot", + "pin-project-lite", + "smallvec", + "tokio", + "tokio-util 0.7.8", +] + +[[package]] +name = "actix-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" +dependencies = [ + "quote", + "syn 2.0.47", +] + +[[package]] +name = "actix-rt" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c7db3d5a9718568e4cf4a537cfd7070e6e6ff7481510d0237fb529ac850f6d3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.47", ] [[package]] @@ -23,6 +70,17 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "aes" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +dependencies = [ + "cfg-if 1.0.0", + "cipher 0.4.4", + "cpufeatures", +] + [[package]] name = "ahash" version = "0.7.6" @@ -58,12 +116,69 @@ dependencies = [ "libc", ] +[[package]] +name = "anstream" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + [[package]] name = "anyhow" version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] + [[package]] name = "arrayref" version = "0.3.7" @@ -83,69 +198,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] -name = "async-channel" -version = "1.9.0" +name = "async-stream" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ - "concurrent-queue", - "event-listener", + "async-stream-impl", "futures-core", + "pin-project-lite", ] [[package]] -name = "async-io" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" -dependencies = [ - "async-lock", - "autocfg", - "cfg-if 1.0.0", - "concurrent-queue", - "futures-lite", - "log", - "parking", - "polling", - "rustix 0.37.23", - "slab", - "socket2", - "waker-fn", -] - -[[package]] -name = "async-lock" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" -dependencies = [ - "event-listener", -] - -[[package]] -name = "async-process" -version = "1.7.0" +name = "async-stream-impl" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9d28b1d97e08915212e2e45310d47854eafa69600756fc735fb788f75199c9" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ - "async-io", - "async-lock", - "autocfg", - "blocking", - "cfg-if 1.0.0", - "event-listener", - "futures-lite", - "rustix 0.37.23", - "signal-hook", - "windows-sys", + "proc-macro2", + "quote", + "syn 2.0.47", ] -[[package]] -name = "async-task" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" - [[package]] name = "async-trait" version = "0.1.72" @@ -154,14 +227,19 @@ checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.47", ] [[package]] -name = "atomic-waker" -version = "1.1.1" +name = "atty" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] [[package]] name = "autocfg" @@ -169,21 +247,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "backtrace" -version = "0.3.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" -dependencies = [ - "addr2line", - "cc", - "cfg-if 1.0.0", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - [[package]] name = "base64" version = "0.11.0" @@ -202,21 +265,28 @@ version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + [[package]] name = "binary-install" -version = "0.0.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5bc5f8c50dd6a80d0b303ddab79f42ddcb52fd43d68107ecf622c551fd4cd4" +checksum = "93bff426ff93f3610dd2b946f3eb8cb2d1285ca8682834d43be531a3f93db2ff" dependencies = [ - "curl", - "dirs 1.0.5", - "failure", + "anyhow", + "dirs-next", "flate2", - "hex 0.3.2", + "fs2", + "hex", "is_executable", "siphasher", "tar", - "zip", + "ureq", + "zip 0.6.6", ] [[package]] @@ -227,9 +297,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.3" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "bitvec" @@ -237,10 +307,22 @@ version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" dependencies = [ - "funty", - "radium", + "funty 1.1.0", + "radium 0.6.2", "tap", - "wyz", + "wyz 0.2.0", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty 2.0.0", + "radium 0.7.0", + "tap", + "wyz 0.5.1", ] [[package]] @@ -254,17 +336,6 @@ dependencies = [ "opaque-debug", ] -[[package]] -name = "blake2b_simd" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "constant_time_eq", -] - [[package]] name = "block-buffer" version = "0.9.0" @@ -291,28 +362,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] -name = "blocking" -version = "1.3.1" +name = "borsh" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" dependencies = [ - "async-channel", - "async-lock", - "async-task", - "atomic-waker", - "fastrand 1.9.0", - "futures-lite", - "log", + "borsh-derive 0.9.3", + "hashbrown 0.11.2", ] [[package]] name = "borsh" -version = "0.9.3" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" dependencies = [ - "borsh-derive", - "hashbrown 0.11.2", + "borsh-derive 0.10.3", + "hashbrown 0.12.3", +] + +[[package]] +name = "borsh" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d4d6dafc1a3bb54687538972158f07b2c948bc57d5890df22c0739098b3028" +dependencies = [ + "borsh-derive 1.3.0", + "cfg_aliases", ] [[package]] @@ -321,13 +397,40 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", + "borsh-derive-internal 0.9.3", + "borsh-schema-derive-internal 0.9.3", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal 0.10.3", + "borsh-schema-derive-internal 0.10.3", "proc-macro-crate 0.1.5", "proc-macro2", "syn 1.0.109", ] +[[package]] +name = "borsh-derive" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4918709cc4dd777ad2b6303ed03cb37f3ca0ccede8c1b0d28ac6db8f4710e0" +dependencies = [ + "once_cell", + "proc-macro-crate 2.0.1", + "proc-macro2", + "quote", + "syn 2.0.47", + "syn_derive", +] + [[package]] name = "borsh-derive-internal" version = "0.9.3" @@ -339,6 +442,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "borsh-schema-derive-internal" version = "0.9.3" @@ -350,12 +464,41 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "brownstone" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030ea61398f34f1395ccbeb046fb68c87b631d1f34567fed0f0f11fa35d18d8d" +dependencies = [ + "arrayvec 0.7.4", +] + [[package]] name = "bs58" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" +[[package]] +name = "bs58" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +dependencies = [ + "tinyvec", +] + [[package]] name = "bumpalo" version = "3.13.0" @@ -385,6 +528,9 @@ name = "bytesize" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38fcc2979eff34a4b84e1cf9a1e3da42a7d44b3b690a40cdcb23e3d556cfb2e5" +dependencies = [ + "serde", +] [[package]] name = "bzip2" @@ -413,16 +559,73 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d27dae93fe7b1e0424dc57179ac396908c26b035a87234809f5c4dfd1b47dc80" dependencies = [ - "cipher", + "cipher 0.2.5", "ppv-lite86", ] +[[package]] +name = "camino" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-near" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f73eb01da3b6737778d2006645533e75563d1080c64bf714bfb88d3fb0ac09b" +dependencies = [ + "anyhow", + "atty", + "bs58 0.4.0", + "camino", + "cargo_metadata", + "clap 3.2.25", + "colored", + "env_logger", + "libloading", + "log", + "near-abi", + "rustc_version", + "schemars", + "serde_json", + "sha2 0.10.7", + "symbolic-debuginfo", + "zstd", +] + +[[package]] +name = "cargo-platform" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ceed8ef69d8518a5dda55c07425450b58a4e1946f4951eab6d7191ee86c2443d" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", +] + [[package]] name = "cc" -version = "1.0.81" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c6b2562119bf28c3439f7f02db99faf0aa1a8cdfe5772a2ee155d32227239f0" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ + "jobserver", "libc", ] @@ -438,6 +641,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "chrono" version = "0.4.26" @@ -449,7 +658,7 @@ dependencies = [ "js-sys", "num-traits", "serde", - "time", + "time 0.1.45", "wasm-bindgen", "winapi", ] @@ -464,12 +673,108 @@ dependencies = [ ] [[package]] -name = "concurrent-queue" -version = "2.2.0" +name = "cipher" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "crossbeam-utils", + "crypto-common", + "inout", +] + +[[package]] +name = "clap" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +dependencies = [ + "atty", + "bitflags 1.3.2", + "clap_derive 3.2.25", + "clap_lex 0.2.4", + "indexmap 1.9.3", + "once_cell", + "strsim", + "termcolor", + "textwrap", +] + +[[package]] +name = "clap" +version = "4.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcfab8ba68f3668e89f6ff60f5b205cea56aa7b769451a59f34b8682f51c056d" +dependencies = [ + "clap_builder", + "clap_derive 4.4.7", +] + +[[package]] +name = "clap_builder" +version = "4.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb7fb5e4e979aec3be7791562fcba452f94ad85e954da024396433e0e25a79e9" +dependencies = [ + "anstream", + "anstyle", + "clap_lex 0.6.0", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" +dependencies = [ + "heck 0.4.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "clap_derive" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.47", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "clap_lex" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "colored" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" +dependencies = [ + "lazy_static", + "windows-sys 0.48.0", ] [[package]] @@ -527,11 +832,21 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "crossbeam-channel" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82a9b73a36529d9c47029b9fb3a6f0ea3cc916a261195352ba19e770fc1748b2" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +checksum = "c3a430a770ebd84726f584a90ee7f020d28db52c6d02138900f22341f866d39c" dependencies = [ "cfg-if 1.0.0", ] @@ -563,46 +878,81 @@ dependencies = [ ] [[package]] -name = "curl" -version = "0.4.44" +name = "curve25519-dalek" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22" +checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" dependencies = [ - "curl-sys", - "libc", - "openssl-probe", - "openssl-sys", - "schannel", - "socket2", - "winapi", + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", ] [[package]] -name = "curl-sys" -version = "0.4.65+curl-8.2.1" +name = "darling" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "961ba061c9ef2fe34bbd12b807152d96f0badd2bebe7b90ce6c8c8b7572a0986" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" dependencies = [ - "cc", - "libc", - "libz-sys", - "openssl-sys", - "pkg-config", - "vcpkg", - "winapi", + "darling_core", + "darling_macro", ] [[package]] -name = "curve25519-dalek" -version = "3.2.1" +name = "darling_core" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.47", +] + +[[package]] +name = "darling_macro" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.47", +] + +[[package]] +name = "debugid" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6ee87af31d84ef885378aebca32be3d682b0e0dc119d5b4860a2c5bb5046730" +dependencies = [ + "uuid", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.47", ] [[package]] @@ -635,38 +985,41 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", "crypto-common", + "subtle", ] [[package]] -name = "dirs" -version = "1.0.5" +name = "dirs-next" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" dependencies = [ - "libc", - "redox_users 0.3.5", - "winapi", + "cfg-if 1.0.0", + "dirs-sys-next", ] [[package]] -name = "dirs" -version = "3.0.2" +name = "dirs-sys-next" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ - "dirs-sys", + "libc", + "redox_users", + "winapi", ] [[package]] -name = "dirs-sys" -version = "0.3.7" +name = "dmsort" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users 0.4.3", - "winapi", -] +checksum = "f0bc8fbe9441c17c9f46f75dfe27fa1ddb6c68a461ccaed0481419219d4f10d3" + +[[package]] +name = "dyn-clone" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" [[package]] name = "easy-ext" @@ -697,6 +1050,22 @@ dependencies = [ "zeroize", ] +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "elementtree" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6319c9433cf1e95c60c8533978bccf0614f27f03bb4e514253468eeeaa7fe3" +dependencies = [ + "string_cache", + "xml-rs", +] + [[package]] name = "encoding_rs" version = "0.8.32" @@ -707,68 +1076,59 @@ dependencies = [ ] [[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.2" +name = "enum-map" +version = "2.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", + "enum-map-derive", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "enum-map-derive" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ - "cc", - "libc", + "proc-macro2", + "quote", + "syn 2.0.47", ] [[package]] -name = "event-listener" -version = "2.5.3" +name = "env_logger" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] [[package]] -name = "failure" -version = "0.1.8" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "failure_derive" -version = "0.1.8" +name = "errno" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure", + "libc", + "windows-sys 0.52.0", ] [[package]] -name = "fastrand" -version = "1.9.0" +name = "fallible-iterator" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] name = "fastrand" @@ -785,7 +1145,7 @@ dependencies = [ "cfg-if 1.0.0", "libc", "redox_syscall 0.2.16", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -800,6 +1160,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "flate2" version = "1.0.26" @@ -856,6 +1222,26 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + [[package]] name = "futures-channel" version = "0.3.28" @@ -863,6 +1249,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" dependencies = [ "futures-core", + "futures-sink", ] [[package]] @@ -872,26 +1259,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] -name = "futures-io" +name = "futures-executor" version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" - -[[package]] -name = "futures-lite" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" dependencies = [ - "fastrand 1.9.0", "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", + "futures-task", + "futures-util", ] +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + [[package]] name = "futures-sink" version = "0.3.28" @@ -910,10 +1293,15 @@ version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ + "futures-channel", "futures-core", + "futures-io", + "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", + "slab", ] [[package]] @@ -950,9 +1338,24 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.3" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +dependencies = [ + "fallible-iterator", + "stable_deref_trait", +] + +[[package]] +name = "goblin" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" +dependencies = [ + "log", + "plain", + "scroll 0.11.0", +] [[package]] name = "h2" @@ -969,7 +1372,7 @@ dependencies = [ "indexmap 1.9.3", "slab", "tokio", - "tokio-util", + "tokio-util 0.7.8", "tracing", ] @@ -987,6 +1390,9 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] [[package]] name = "hashbrown" @@ -994,6 +1400,15 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "heck" version = "0.4.1" @@ -1002,21 +1417,36 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] [[package]] -name = "hex" +name = "hermit-abi" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] [[package]] name = "home" @@ -1024,7 +1454,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" dependencies = [ - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -1061,6 +1491,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + [[package]] name = "hyper" version = "0.14.27" @@ -1085,6 +1521,18 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + [[package]] name = "hyper-tls" version = "0.5.0" @@ -1122,15 +1570,10 @@ dependencies = [ ] [[package]] -name = "idna" -version = "0.2.3" +name = "ident_case" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" @@ -1162,6 +1605,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "indent_write" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cfe9645a18782869361d9c8732246be7b410ad4e919d3609ebabdac00ba12c3" + [[package]] name = "indexmap" version = "1.9.3" @@ -1170,6 +1619,7 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] @@ -1180,15 +1630,16 @@ checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" dependencies = [ "equivalent", "hashbrown 0.14.0", + "serde", ] [[package]] -name = "instant" -version = "0.1.12" +name = "inout" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ - "cfg-if 1.0.0", + "generic-array", ] [[package]] @@ -1197,20 +1648,9 @@ version = "1.0.0" dependencies = [ "anyhow", "near-units", + "near-workspaces", "serde_json", "tokio", - "workspaces", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys", ] [[package]] @@ -1228,12 +1668,36 @@ dependencies = [ "winapi", ] +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +[[package]] +name = "jobserver" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +dependencies = [ + "libc", +] + +[[package]] +name = "joinery" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72167d68f5fce3b8655487b8038691a3c9984ee769590f93f2a631f4ad64e4f5" + [[package]] name = "js-sys" version = "0.3.64" @@ -1243,6 +1707,24 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "json-patch" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ff1e1486799e3f64129f8ccad108b38290df9cd7015cd31bed17239f0789d6" +dependencies = [ + "serde", + "serde_json", + "thiserror", + "treediff", +] + +[[package]] +name = "json_comments" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dbbfed4e59ba9750e15ba154fdfd9329cee16ff3df539c2666b70f58cc32105" + [[package]] name = "keccak" version = "0.1.4" @@ -1257,36 +1739,37 @@ name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] [[package]] -name = "libc" -version = "0.2.147" +name = "lazycell" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] -name = "libz-sys" -version = "1.1.12" +name = "libc" +version = "0.2.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" [[package]] -name = "linux-raw-sys" -version = "0.3.8" +name = "libloading" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] [[package]] name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "lock_api" @@ -1305,10 +1788,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" [[package]] -name = "matches" -version = "0.1.10" +name = "matchers" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] [[package]] name = "memchr" @@ -1316,6 +1802,15 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + [[package]] name = "memory_units" version = "0.4.0" @@ -1328,6 +1823,12 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.7.1" @@ -1345,9 +1846,15 @@ checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", + "windows-sys 0.48.0", ] +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + [[package]] name = "native-tls" version = "0.2.11" @@ -1366,38 +1873,53 @@ dependencies = [ "tempfile", ] +[[package]] +name = "near-abi" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "885db39b08518fa700b73fa2214e8adbbfba316ba82dd510f50519173eadaf73" +dependencies = [ + "borsh 0.9.3", + "schemars", + "semver", + "serde", +] + [[package]] name = "near-account-id" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd61f43cedc1bb7a7c097ef3adbab0092a51185dca0e48d5851b37818e13978" +checksum = "71d258582a1878e6db67400b0504a5099db85718d22c2e07f747fe1706ae7150" dependencies = [ - "borsh", + "borsh 0.9.3", "serde", ] [[package]] name = "near-account-id" -version = "0.15.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d924011380de759c3dc6fdbcda37a19a5c061f56dab69d28a34ecee765e23e4" +checksum = "dc0cb40869cab7f5232f934f45db35bffe0f2d2a7cb0cd0346202fbe4ebf2dd7" dependencies = [ - "borsh", + "borsh 0.10.3", "serde", ] [[package]] name = "near-chain-configs" -version = "0.15.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1faf676a95bd1718b06e5957e01a9415fedf7900f32d94d5bcf70abd678b10a2" +checksum = "c4f9a1c805846237d56f99b328ba6ab77e5d43ef59aaaf8d2a41d42fdc708a7b" dependencies = [ "anyhow", "chrono", "derive_more", - "near-crypto 0.15.0", - "near-primitives 0.15.0", + "near-config-utils", + "near-crypto 0.17.0", + "near-o11y", + "near-primitives 0.17.0", "num-rational", + "once_cell", "serde", "serde_json", "sha2 0.10.7", @@ -1405,34 +1927,46 @@ dependencies = [ "tracing", ] +[[package]] +name = "near-config-utils" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5523e7dce493c45bc3241eb3100d943ec471852f9b1f84b46a34789eadf17031" +dependencies = [ + "anyhow", + "json_comments", + "thiserror", + "tracing", +] + [[package]] name = "near-contract-standards" -version = "4.0.0-pre.7" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c4f636adbffbd9399610cb6445894c64c6c8fcf9ea4e607021f252a1e0459f" +checksum = "7bacc932e79b26472797adfb21689294b6f90960d1570daaf1e0b682b59fcb35" dependencies = [ "near-sdk", + "schemars", "serde", "serde_json", ] [[package]] name = "near-crypto" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f68d8d55bd2a457eba5956d8c1255e288c47f394ca6fffe6184d19664bf0bc4c" +checksum = "1e75673d69fd7365508f3d32483669fe45b03bfb34e4d9363e90adae9dfb416c" dependencies = [ "arrayref", "blake2", - "borsh", - "bs58", + "borsh 0.9.3", + "bs58 0.4.0", "c2-chacha", "curve25519-dalek", "derive_more", "ed25519-dalek", - "lazy_static", - "libc", - "near-account-id 0.10.0", + "near-account-id 0.14.0", + "once_cell", "parity-secp256k1", "primitive-types", "rand 0.7.3", @@ -1445,19 +1979,21 @@ dependencies = [ [[package]] name = "near-crypto" -version = "0.15.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7754612b47737d277fb818e9fdbb1406e90f9e57151c55c3584d714421976cb6" +checksum = "ff6b382b626e7e0cd372d027c6672ac97b4b6ee6114288c9e58d8180b935d315" dependencies = [ - "arrayref", "blake2", - "borsh", - "bs58", + "borsh 0.10.3", + "bs58 0.4.0", "c2-chacha", "curve25519-dalek", "derive_more", "ed25519-dalek", - "near-account-id 0.15.0", + "hex", + "near-account-id 0.17.0", + "near-config-utils", + "near-stdx", "once_cell", "primitive-types", "rand 0.7.3", @@ -1468,146 +2004,198 @@ dependencies = [ "thiserror", ] +[[package]] +name = "near-fmt" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c44c842c6cfcd9b8c387cccd4cd0619a5f21920cde5d5c292af3cc5d40510672" +dependencies = [ + "near-primitives-core 0.17.0", +] + +[[package]] +name = "near-gas" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14e75c875026229902d065e4435804497337b631ec69ba746b102954273e9ad1" +dependencies = [ + "borsh 1.3.0", + "schemars", + "serde", +] + [[package]] name = "near-jsonrpc-client" -version = "0.4.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1335ffce1476da6516dcd22b26cece1a495fc725c0e8fec1879073752ac068d" +checksum = "118f44c02ad211db805c1370ad3ff26576af6ff554093c9fece1b835d29d233a" dependencies = [ - "borsh", + "borsh 0.10.3", "lazy_static", "log", "near-chain-configs", - "near-crypto 0.15.0", + "near-crypto 0.17.0", "near-jsonrpc-primitives", - "near-primitives 0.15.0", + "near-primitives 0.17.0", "reqwest", "serde", "serde_json", "thiserror", - "uuid", ] [[package]] name = "near-jsonrpc-primitives" -version = "0.15.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ada226c74f05508c516f109a97b9f23335120d0bfda208f0d187b6bbfe6eef5a" +checksum = "97b2934b5ab243e25e951c984525ba0aff0e719ed915c988c5195405aa0f6987" dependencies = [ + "arbitrary", "near-chain-configs", - "near-crypto 0.15.0", - "near-primitives 0.15.0", - "near-rpc-error-macro 0.15.0", + "near-crypto 0.17.0", + "near-primitives 0.17.0", + "near-rpc-error-macro 0.17.0", "serde", "serde_json", "thiserror", ] +[[package]] +name = "near-o11y" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af7d35397b02b131c188c72f3885e97daeccab134ec2fc8cc0073a94cf1cfe19" +dependencies = [ + "actix", + "atty", + "clap 4.4.12", + "near-crypto 0.17.0", + "near-primitives-core 0.17.0", + "once_cell", + "opentelemetry", + "opentelemetry-otlp", + "opentelemetry-semantic-conventions", + "prometheus", + "serde", + "strum", + "thiserror", + "tokio", + "tracing", + "tracing-appender", + "tracing-opentelemetry", + "tracing-subscriber", +] + [[package]] name = "near-primitives" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d93aaf84ad4f5ccf780d8a0029c6fb636a2e6c1ddb3c772dee4686529e30a8" +checksum = "8ad1a9a1640539c81f065425c31bffcfbf6b31ef1aeaade59ce905f5df6ac860" dependencies = [ - "base64 0.13.1", - "borsh", - "bs58", + "borsh 0.9.3", "byteorder", "bytesize", "chrono", "derive_more", "easy-ext", - "hex 0.4.3", - "near-crypto 0.10.0", - "near-primitives-core 0.10.0", - "near-rpc-error-macro 0.10.0", - "near-vm-errors 0.10.0", + "hex", + "near-crypto 0.14.0", + "near-primitives-core 0.14.0", + "near-rpc-error-macro 0.14.0", + "near-vm-errors 0.14.0", "num-rational", + "once_cell", "primitive-types", "rand 0.7.3", "reed-solomon-erasure", - "regex", "serde", "serde_json", - "sha2 0.9.9", "smart-default", - "validator", + "strum", + "thiserror", ] [[package]] name = "near-primitives" -version = "0.15.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97670b302dce15f09bba50f24c67aa08130fd01528cc61d4415892401e88e974" +checksum = "05f7051aaf199adc4d068620fca6d5f70f906a1540d03a8bb3701271f8881835" dependencies = [ - "borsh", - "byteorder", + "arbitrary", + "borsh 0.10.3", "bytesize", "cfg-if 1.0.0", "chrono", "derive_more", "easy-ext", - "hex 0.4.3", - "near-crypto 0.15.0", - "near-primitives-core 0.15.0", - "near-rpc-error-macro 0.15.0", - "near-vm-errors 0.15.0", + "enum-map", + "hex", + "near-crypto 0.17.0", + "near-fmt", + "near-primitives-core 0.17.0", + "near-rpc-error-macro 0.17.0", + "near-stdx", + "near-vm-errors 0.17.0", "num-rational", "once_cell", "primitive-types", - "rand 0.7.3", + "rand 0.8.5", "reed-solomon-erasure", "serde", "serde_json", + "serde_with", + "serde_yaml", "smart-default", "strum", "thiserror", + "time 0.3.31", + "tracing", ] [[package]] name = "near-primitives-core" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d88b2b0f418c1174214fb51106c90251f61ecfe4c7063f149c2e199ec2850fd" +checksum = "91d508f0fc340f6461e4e256417685720d3c4c00bb5a939b105160e49137caba" dependencies = [ "base64 0.11.0", - "borsh", - "bs58", + "borsh 0.9.3", + "bs58 0.4.0", "derive_more", - "hex 0.4.3", - "lazy_static", - "near-account-id 0.10.0", + "near-account-id 0.14.0", "num-rational", "serde", - "serde_json", - "sha2 0.9.9", + "sha2 0.10.7", + "strum", ] [[package]] name = "near-primitives-core" -version = "0.15.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7929e19d862221949734c4a0063a8f55e7069de3a2ebc2d4f4c13497a5e953cb" +checksum = "775fec19ef51a341abdbf792a9dda5b4cb89f488f681b2fd689b9321d24db47b" dependencies = [ - "base64 0.13.1", - "borsh", - "bs58", + "arbitrary", + "base64 0.21.2", + "borsh 0.10.3", + "bs58 0.4.0", "derive_more", - "near-account-id 0.15.0", + "enum-map", + "near-account-id 0.17.0", "num-rational", "serde", "serde_repr", + "serde_with", "sha2 0.10.7", "strum", + "thiserror", ] [[package]] name = "near-rpc-error-core" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a98c9bd7edee4dcfc293e3511e9fab826bcd6fbfbfe06124a1164b94ee60351" +checksum = "93ee0b41c75ef859c193a8ff1dadfa0c8207bc0ac447cc22259721ad769a1408" dependencies = [ - "proc-macro2", "quote", "serde", "syn 1.0.109", @@ -1615,68 +2203,70 @@ dependencies = [ [[package]] name = "near-rpc-error-core" -version = "0.15.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36addf90cc04bd547a627b3a292f59d7de4dd6fb5042115419ae901b93ce6c2d" +checksum = "84c1eda300e2e78f4f945ae58117d49e806899f4a51ee2faa09eda5ebc2e6571" dependencies = [ "quote", "serde", - "syn 1.0.109", + "syn 2.0.47", ] [[package]] name = "near-rpc-error-macro" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1abade92d0fc76a6c25aeb82f3e7fd97678ab5d0fd92b80149a65d1088e86505" +checksum = "8e837bd4bacd807073ec5ceb85708da7f721b46a4c2a978de86027fb0034ce31" dependencies = [ - "near-rpc-error-core 0.10.0", - "proc-macro2", - "quote", + "near-rpc-error-core 0.14.0", "serde", - "serde_json", "syn 1.0.109", ] [[package]] name = "near-rpc-error-macro" -version = "0.15.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5beb352f3b91d8c491646c2fa4fdbbbf463c7b9c0226951c28f0197de44f99" +checksum = "31d2dadd765101c77e664029dd6fbec090e696877d4ae903c620d02ceda4969a" dependencies = [ - "near-rpc-error-core 0.15.0", + "fs2", + "near-rpc-error-core 0.17.0", "serde", - "syn 1.0.109", + "syn 2.0.47", ] [[package]] name = "near-sandbox-utils" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7479b0a2c52890000d410c6e4ba4f851334280530fa7446b78bcaf4683fe69b0" +checksum = "2de216bb0152bfb64f59016d9e6a5b1ac56dd85f729e5fde08461571e2182c8f" dependencies = [ "anyhow", - "async-process", "binary-install", "chrono", "fs2", - "hex 0.3.2", "home", + "tokio", ] [[package]] name = "near-sdk" -version = "4.0.0-pre.7" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4f17c763e91999827a2ad30b909f79e82a56c448bf7170ed72841756397e5a3" +checksum = "15eb3de2defe3626260cc209a6cdb985c6b27b0bd4619fad97dcfae002c3c5bd" dependencies = [ "base64 0.13.1", - "borsh", - "bs58", - "near-primitives-core 0.10.0", + "borsh 0.9.3", + "bs58 0.4.0", + "near-abi", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "near-primitives-core 0.14.0", "near-sdk-macros", "near-sys", "near-vm-logic", + "once_cell", + "schemars", "serde", "serde_json", "wee_alloc", @@ -1684,9 +2274,9 @@ dependencies = [ [[package]] name = "near-sdk-macros" -version = "4.0.0-pre.7" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d07b8d59302bf900707c41654a7ba178c5a2d8040a8812647f6b7e7e28dc5b1" +checksum = "4907affc9f5ed559456509188ff0024f1f2099c0830e6bdb66eb61d5b75912c0" dependencies = [ "Inflector", "proc-macro2", @@ -1694,11 +2284,26 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "near-stdx" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6540152fba5e96fe5d575b79e8cd244cf2add747bb01362426bdc069bc3a23bc" + [[package]] name = "near-sys" -version = "0.1.0" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397688591acf8d3ebf2c2485ba32d4b24fc10aad5334e3ad8ec0b7179bfdf06b" + +[[package]] +name = "near-token" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6a7aa3f46fac44416d8a93d14f30a562c4d730a1c6bf14bffafab5f475c244a" +checksum = "7b68f3f8a2409f72b43efdbeff8e820b81e70824c49fee8572979d789d1683fb" +dependencies = [ + "serde", +] [[package]] name = "near-units" @@ -1733,50 +2338,127 @@ dependencies = [ ] [[package]] -name = "near-vm-errors" -version = "0.10.0" +name = "near-vm-errors" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0da466a30f0446639cbd788c30865086fac3e8dcb07a79e51d2b0775ed4261e" +dependencies = [ + "borsh 0.9.3", + "near-account-id 0.14.0", + "near-rpc-error-macro 0.14.0", + "serde", +] + +[[package]] +name = "near-vm-errors" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec545d1bede0579e7c15dd2dce9b998dc975c52f2165702ff40bec7ff69728bb" +dependencies = [ + "borsh 0.10.3", + "near-account-id 0.17.0", + "near-rpc-error-macro 0.17.0", + "serde", + "strum", + "thiserror", +] + +[[package]] +name = "near-vm-logic" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81b534828419bacbf1f7b11ef7b00420f248c548c485d3f0cfda8bb6931152f2" +dependencies = [ + "base64 0.13.1", + "borsh 0.9.3", + "bs58 0.4.0", + "byteorder", + "near-account-id 0.14.0", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "near-primitives-core 0.14.0", + "near-vm-errors 0.14.0", + "ripemd", + "serde", + "sha2 0.10.7", + "sha3", + "zeropool-bn", +] + +[[package]] +name = "near-workspaces" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a14e772e49ba9644c06dad20f635b6463f74d378fa19822bfc35fef479c72e5" +dependencies = [ + "async-trait", + "base64 0.21.2", + "borsh 0.10.3", + "bs58 0.5.0", + "cargo-near", + "chrono", + "fs2", + "json-patch", + "libc", + "near-account-id 0.17.0", + "near-crypto 0.17.0", + "near-gas", + "near-jsonrpc-client", + "near-jsonrpc-primitives", + "near-primitives 0.17.0", + "near-sandbox-utils", + "near-sdk", + "near-token", + "rand 0.8.5", + "reqwest", + "serde", + "serde_json", + "sha2 0.10.7", + "tempfile", + "thiserror", + "tokio", + "tokio-retry", + "tracing", + "url", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "nom" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e781248bed1f8e4792aee0c0362cf8bc831fc9f51573bc43807b5e07e0e7db81" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ - "borsh", - "hex 0.4.3", - "near-account-id 0.10.0", - "near-rpc-error-macro 0.10.0", - "serde", + "memchr", + "minimal-lexical", ] [[package]] -name = "near-vm-errors" -version = "0.15.0" +name = "nom-supreme" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5591c9c8afa83a040cb5c3f29bc52b2efae2c32d4bcaee1bba723738da1a5cf6" +checksum = "aadc66631948f6b65da03be4c4cd8bd104d481697ecbb9bbd65719b1ec60bc9f" dependencies = [ - "borsh", - "near-account-id 0.15.0", - "near-rpc-error-macro 0.15.0", - "serde", - "strum", + "brownstone", + "indent_write", + "joinery", + "memchr", + "nom", ] [[package]] -name = "near-vm-logic" -version = "0.10.0" +name = "nu-ansi-term" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c06b3cb3ccf0423a9ba6908ccf07abe19c3c34319af200c733f34b7ac5af0ab" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" dependencies = [ - "base64 0.13.1", - "borsh", - "bs58", - "byteorder", - "near-account-id 0.10.0", - "near-crypto 0.10.0", - "near-primitives 0.10.0", - "near-primitives-core 0.10.0", - "near-vm-errors 0.10.0", - "ripemd160", - "serde", - "sha2 0.9.9", - "sha3", + "overload", + "winapi", ] [[package]] @@ -1838,19 +2520,10 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.2", "libc", ] -[[package]] -name = "object" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" -dependencies = [ - "memchr", -] - [[package]] name = "once_cell" version = "1.18.0" @@ -1886,7 +2559,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.47", ] [[package]] @@ -1907,6 +2580,66 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror", + "tokio", + "tokio-stream", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1a6ca9de4c8b00aa7f1a153bd76cb263287155cec642680d79d98706f3d28a" +dependencies = [ + "async-trait", + "futures", + "futures-util", + "http", + "opentelemetry", + "prost", + "thiserror", + "tokio", + "tonic", + "tonic-build", +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985cc35d832d412224b2cffe2f9194b1b89b6aa5d0bef76d080dce09d90e62bd" +dependencies = [ + "opentelemetry", +] + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "parity-scale-codec" version = "2.3.1" @@ -1914,7 +2647,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" dependencies = [ "arrayvec 0.7.4", - "bitvec", + "bitvec 0.20.4", "byte-slice-cast", "impl-trait-for-tuples", "parity-scale-codec-derive", @@ -1945,12 +2678,6 @@ dependencies = [ "rand 0.7.3", ] -[[package]] -name = "parking" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" - [[package]] name = "parking_lot" version = "0.12.1" @@ -1971,7 +2698,41 @@ dependencies = [ "libc", "redox_syscall 0.3.5", "smallvec", - "windows-targets", + "windows-targets 0.48.1", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac", + "password-hash", + "sha2 0.10.7", +] + +[[package]] +name = "pdb" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13f4d162ecaaa1467de5afbe62d597757b674b51da8bb4e587430c5fdb2af7aa" +dependencies = [ + "fallible-iterator", + "scroll 0.10.2", + "uuid", ] [[package]] @@ -1980,6 +2741,25 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap 2.0.0", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + [[package]] name = "pin-project" version = "1.1.2" @@ -1997,7 +2777,7 @@ checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.47", ] [[package]] @@ -2019,29 +2799,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] -name = "polling" -version = "2.8.0" +name = "plain" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if 1.0.0", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys", -] +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] -name = "portpicker" -version = "0.1.1" +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9" -dependencies = [ - "rand 0.8.5", -] +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" @@ -2049,6 +2816,12 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + [[package]] name = "primitive-types" version = "0.10.1" @@ -2076,23 +2849,131 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit", + "toml_edit 0.19.14", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a" +dependencies = [ + "toml_datetime", + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", ] [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "907a61bd0f64c2f29cd1cf1dc34d05176426a3f504a78010f08416ddb7b13708" dependencies = [ "unicode-ident", ] +[[package]] +name = "prometheus" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +dependencies = [ + "cfg-if 1.0.0", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "protobuf", + "thiserror", +] + +[[package]] +name = "prost" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" +dependencies = [ + "bytes", + "heck 0.3.3", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prost", + "prost-types", + "regex", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-types" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" +dependencies = [ + "bytes", + "prost", +] + +[[package]] +name = "protobuf" +version = "2.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" + [[package]] name = "quote" -version = "1.0.32" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -2103,6 +2984,12 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "rand" version = "0.7.3" @@ -2174,12 +3061,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "redox_syscall" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - [[package]] name = "redox_syscall" version = "0.2.16" @@ -2198,17 +3079,6 @@ dependencies = [ "bitflags 1.3.2", ] -[[package]] -name = "redox_users" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" -dependencies = [ - "getrandom 0.1.16", - "redox_syscall 0.1.57", - "rust-argon2", -] - [[package]] name = "redox_users" version = "0.4.3" @@ -2237,8 +3107,17 @@ checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.3.4", + "regex-syntax 0.7.4", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -2249,9 +3128,15 @@ checksum = "b7b6d6190b7594385f61bd3911cd1be99dfddcfc365a4160cc2ab5bff4aed294" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.7.4", ] +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + [[package]] name = "regex-syntax" version = "0.7.4" @@ -2296,34 +3181,28 @@ dependencies = [ ] [[package]] -name = "ripemd160" -version = "0.9.1" +name = "ring" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eca4ecc81b7f313189bf73ce724400a07da2a6dac19588b03c8bd76a2dcc251" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "opaque-debug", + "cc", + "getrandom 0.2.10", + "libc", + "spin 0.9.8", + "untrusted", + "windows-sys 0.48.0", ] [[package]] -name = "rust-argon2" -version = "0.8.3" +name = "ripemd" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" dependencies = [ - "base64 0.13.1", - "blake2b_simd", - "constant_time_eq", - "crossbeam-utils", + "digest 0.10.7", ] -[[package]] -name = "rustc-demangle" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" - [[package]] name = "rustc-hex" version = "2.1.0" @@ -2341,29 +3220,37 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.23" +version = "0.38.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" +checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "errno", - "io-lifetimes", "libc", - "linux-raw-sys 0.3.8", - "windows-sys", + "linux-raw-sys", + "windows-sys 0.52.0", ] [[package]] -name = "rustix" -version = "0.38.6" +name = "rustls" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee020b1716f0a80e2ace9b03441a749e402e86712f15f16fe8a8f75afac732f" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ - "bitflags 2.3.3", - "errno", - "libc", - "linux-raw-sys 0.4.5", - "windows-sys", + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", ] [[package]] @@ -2384,7 +3271,31 @@ version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys", + "windows-sys 0.48.0", +] + +[[package]] +name = "schemars" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 1.0.109", ] [[package]] @@ -2393,11 +3304,47 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "scroll" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda28d4b4830b807a8b43f7b0e6b5df875311b3e7621d84577188c175b6ec1ec" + +[[package]] +name = "scroll" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.47", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "secp256k1" -version = "0.24.3" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" dependencies = [ "rand 0.8.5", "secp256k1-sys", @@ -2405,9 +3352,9 @@ dependencies = [ [[package]] name = "secp256k1-sys" -version = "0.6.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" +checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" dependencies = [ "cc", ] @@ -2440,25 +3387,39 @@ name = "semver" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +dependencies = [ + "serde", +] [[package]] name = "serde" -version = "1.0.180" +version = "1.0.194" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea67f183f058fe88a4e3ec6e2788e003840893b91bac4559cabedd00863b3ed" +checksum = "0b114498256798c94a0689e1a15fec6005dee8ac1f41de56404b67afc2a4b773" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.180" +version = "1.0.194" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3385e45322e8f9931410f01b3031ec534c3947d0e94c18049af4d9f9907d4e0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.47", +] + +[[package]] +name = "serde_derive_internals" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24e744d7782b686ab3b73267ef05697159cc0e5abbed3f47f9933165e5219036" +checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 1.0.109", ] [[package]] @@ -2467,7 +3428,6 @@ version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" dependencies = [ - "indexmap 2.0.0", "itoa", "ryu", "serde", @@ -2481,7 +3441,7 @@ checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.47", ] [[package]] @@ -2496,6 +3456,59 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_with" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" +dependencies = [ + "base64 0.21.2", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.0.0", + "serde", + "serde_json", + "serde_with_macros", + "time 0.3.31", +] + +[[package]] +name = "serde_with_macros" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.47", +] + +[[package]] +name = "serde_yaml" +version = "0.9.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1bf28c79a99f70ee1f1d83d10c875d2e70618417fda01ad1785e027579d9d38" +dependencies = [ + "indexmap 2.0.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + [[package]] name = "sha2" version = "0.9.9" @@ -2533,13 +3546,12 @@ dependencies = [ ] [[package]] -name = "signal-hook" -version = "0.3.17" +name = "sharded-slab" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ - "libc", - "signal-hook-registry", + "lazy_static", ] [[package]] @@ -2559,9 +3571,9 @@ checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" [[package]] name = "siphasher" -version = "0.2.3" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "slab" @@ -2599,12 +3611,50 @@ dependencies = [ "winapi", ] +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared", + "precomputed-hash", + "serde", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "strum" version = "0.24.1" @@ -2620,7 +3670,7 @@ version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", "rustversion", @@ -2633,6 +3683,48 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +[[package]] +name = "symbolic-common" +version = "8.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f551f902d5642e58039aee6a9021a61037926af96e071816361644983966f540" +dependencies = [ + "debugid", + "memmap2", + "stable_deref_trait", + "uuid", +] + +[[package]] +name = "symbolic-debuginfo" +version = "8.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165dabf9fc1d6bb6819c2c0e27c8dd0e3068d2c53cf186d319788e96517f0d6" +dependencies = [ + "bitvec 1.0.1", + "dmsort", + "elementtree", + "fallible-iterator", + "flate2", + "gimli", + "goblin", + "lazy_static", + "lazycell", + "nom", + "nom-supreme", + "parking_lot", + "pdb", + "regex", + "scroll 0.11.0", + "serde", + "serde_json", + "smallvec", + "symbolic-common", + "thiserror", + "wasmparser", + "zip 0.5.13", +] + [[package]] name = "syn" version = "1.0.109" @@ -2646,9 +3738,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.28" +version = "2.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +checksum = "1726efe18f42ae774cc644f330953a5e7b3c3003d3edcecf18850fe9d4dd9afb" dependencies = [ "proc-macro2", "quote", @@ -2656,15 +3748,15 @@ dependencies = [ ] [[package]] -name = "synstructure" -version = "0.12.6" +name = "syn_derive" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" dependencies = [ + "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", - "unicode-xid", + "syn 2.0.47", ] [[package]] @@ -2691,12 +3783,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5486094ee78b2e5038a6382ed7645bc084dc2ec433426ca4c3cb61e2007b8998" dependencies = [ "cfg-if 1.0.0", - "fastrand 2.0.0", + "fastrand", "redox_syscall 0.3.5", - "rustix 0.38.6", - "windows-sys", + "rustix", + "windows-sys 0.48.0", +] + +[[package]] +name = "termcolor" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +dependencies = [ + "winapi-util", ] +[[package]] +name = "textwrap" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" + [[package]] name = "thiserror" version = "1.0.44" @@ -2714,7 +3821,17 @@ checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.47", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", ] [[package]] @@ -2728,6 +3845,35 @@ dependencies = [ "winapi", ] +[[package]] +name = "time" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" +dependencies = [ + "deranged", + "itoa", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" +dependencies = [ + "time-core", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -2745,12 +3891,11 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.29.1" +version = "1.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" dependencies = [ "autocfg", - "backtrace", "bytes", "libc", "mio", @@ -2760,7 +3905,17 @@ dependencies = [ "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-io-timeout" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +dependencies = [ + "pin-project-lite", + "tokio", ] [[package]] @@ -2771,7 +3926,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.47", ] [[package]] @@ -2795,6 +3950,31 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-stream" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "tokio", +] + [[package]] name = "tokio-util" version = "0.7.8" @@ -2819,21 +3999,101 @@ dependencies = [ ] [[package]] -name = "toml_datetime" -version = "0.6.3" +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" + +[[package]] +name = "toml_edit" +version = "0.19.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +dependencies = [ + "indexmap 2.0.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.0.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tonic" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a" +dependencies = [ + "async-stream", + "async-trait", + "base64 0.13.1", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "prost-derive", + "tokio", + "tokio-stream", + "tokio-util 0.6.10", + "tower", + "tower-layer", + "tower-service", + "tracing", + "tracing-futures", +] + +[[package]] +name = "tonic-build" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9403f1bafde247186684b230dc6f38b5cd514584e8bec1dd32514be4745fa757" +dependencies = [ + "proc-macro2", + "prost-build", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tower" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util 0.7.8", + "tower-layer", + "tower-service", + "tracing", +] [[package]] -name = "toml_edit" -version = "0.19.14" +name = "tower-layer" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" -dependencies = [ - "indexmap 2.0.0", - "toml_datetime", - "winnow", -] +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" [[package]] name = "tower-service" @@ -2848,11 +4108,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if 1.0.0", + "log", "pin-project-lite", "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror", + "time 0.3.31", + "tracing-subscriber", +] + [[package]] name = "tracing-attributes" version = "0.1.26" @@ -2861,7 +4134,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.47", ] [[package]] @@ -2871,6 +4144,80 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-log 0.1.4", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log 0.2.0", +] + +[[package]] +name = "treediff" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52984d277bdf2a751072b5df30ec0377febdb02f7696d64c2d7d54630bac4303" +dependencies = [ + "serde_json", ] [[package]] @@ -2893,7 +4240,7 @@ checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" dependencies = [ "byteorder", "crunchy", - "hex 0.4.3", + "hex", "static_assertions", ] @@ -2919,10 +4266,38 @@ dependencies = [ ] [[package]] -name = "unicode-xid" -version = "0.2.4" +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97" +dependencies = [ + "base64 0.21.2", + "flate2", + "log", + "once_cell", + "rustls", + "rustls-webpki", + "url", + "webpki-roots", +] [[package]] name = "url" @@ -2931,41 +4306,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", - "idna 0.4.0", + "idna", "percent-encoding", "serde", ] [[package]] -name = "uuid" -version = "1.4.1" +name = "utf8parse" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" -dependencies = [ - "getrandom 0.2.10", -] +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] -name = "validator" -version = "0.12.0" +name = "uuid" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d6937c33ec6039d8071bcf72933146b5bbe378d645d8fa59bdadabfc2a249" -dependencies = [ - "idna 0.2.3", - "lazy_static", - "regex", - "serde", - "serde_derive", - "serde_json", - "url", - "validator_types", -] +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" [[package]] -name = "validator_types" -version = "0.12.0" +name = "valuable" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad9680608df133af2c1ddd5eaf1ddce91d60d61b6bc51494ef326458365a470a" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "vcpkg" @@ -2979,12 +4341,6 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" -[[package]] -name = "waker-fn" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" - [[package]] name = "want" version = "0.3.1" @@ -3033,7 +4389,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.47", "wasm-bindgen-shared", ] @@ -3067,7 +4423,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.47", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3078,6 +4434,12 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +[[package]] +name = "wasmparser" +version = "0.83.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718ed7c55c2add6548cca3ddd6383d738cd73b892df400e96b9aa876f0141d7a" + [[package]] name = "web-sys" version = "0.3.64" @@ -3088,6 +4450,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki-roots" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" + [[package]] name = "wee_alloc" version = "0.4.5" @@ -3100,6 +4468,18 @@ dependencies = [ "winapi", ] +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + [[package]] name = "winapi" version = "0.3.9" @@ -3116,6 +4496,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -3128,7 +4517,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets", + "windows-targets 0.48.1", ] [[package]] @@ -3137,7 +4526,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.1", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", ] [[package]] @@ -3146,13 +4544,28 @@ version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -3161,42 +4574,84 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + [[package]] name = "windows_aarch64_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + [[package]] name = "windows_i686_gnu" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + [[package]] name = "windows_i686_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + [[package]] name = "windows_x86_64_gnu" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + [[package]] name = "windows_x86_64_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + [[package]] name = "winnow" version = "0.5.3" @@ -3216,43 +4671,19 @@ dependencies = [ ] [[package]] -name = "workspaces" -version = "0.7.0" +name = "wyz" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b13d249618f197811e3673decc81459730cf5cc09ee7246dc4bede1e9333bc" -dependencies = [ - "async-process", - "async-trait", - "base64 0.13.1", - "borsh", - "bs58", - "chrono", - "dirs 3.0.2", - "hex 0.4.3", - "libc", - "near-account-id 0.15.0", - "near-crypto 0.15.0", - "near-jsonrpc-client", - "near-jsonrpc-primitives", - "near-primitives 0.15.0", - "near-sandbox-utils", - "portpicker", - "rand 0.8.5", - "reqwest", - "serde", - "serde_json", - "thiserror", - "tokio", - "tokio-retry", - "tracing", - "url", -] +checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" [[package]] name = "wyz" -version = "0.2.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] [[package]] name = "xattr" @@ -3263,6 +4694,12 @@ dependencies = [ "libc", ] +[[package]] +name = "xml-rs" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" + [[package]] name = "zeroize" version = "1.3.0" @@ -3280,7 +4717,21 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.47", +] + +[[package]] +name = "zeropool-bn" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e61de68ede9ffdd69c01664f65a178c5188b73f78faa21f0936016a888ff7c" +dependencies = [ + "borsh 0.9.3", + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.5", + "rustc-hex", ] [[package]] @@ -3290,9 +4741,56 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" dependencies = [ "byteorder", - "bzip2", "crc32fast", "flate2", "thiserror", - "time", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2", + "sha1", + "time 0.3.31", + "zstd", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.9+zstd.1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +dependencies = [ + "cc", + "pkg-config", ] diff --git a/Cargo.toml b/Cargo.toml index e68e32c..398d0dd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [workspace.package] version = "0.11.0" authors = ["Eugene The Dream"] -edition = "2018" +edition = "2021" [profile.release] codegen-units = 1 @@ -13,6 +13,7 @@ panic = "abort" overflow-checks = true [workspace] +resolver = "2" members = [ "contract", "integration-tests" diff --git a/build_docker.sh b/build_docker.sh index da88d56..98900ba 100755 --- a/build_docker.sh +++ b/build_docker.sh @@ -22,7 +22,7 @@ docker create \ fi docker start $NAME -docker exec -it $NAME /bin/bash -c "rustup toolchain install 1.69.0; rustup default 1.69.0; rustup target add wasm32-unknown-unknown; cargo build --package contract --target wasm32-unknown-unknown --release" +docker exec -it $NAME /bin/bash -c "rustup toolchain install 1.75.0; rustup default 1.75.0; rustup target add wasm32-unknown-unknown; cargo build --package contract --target wasm32-unknown-unknown --release" mkdir -p res cp $DIR/target/wasm32-unknown-unknown/release/contract.wasm $DIR/res/social_db_release.wasm diff --git a/contract/Cargo.toml b/contract/Cargo.toml index 42c56a3..ee74491 100644 --- a/contract/Cargo.toml +++ b/contract/Cargo.toml @@ -2,12 +2,12 @@ name = "contract" version = "0.11.0" authors = ["Eugene The Dream"] -edition = "2018" +edition = "2021" [lib] crate-type = ["cdylib"] [dependencies] -near-sdk = "=4.0.0-pre.7" -near-contract-standards = "=4.0.0-pre.7" -near-sys = "=0.1" +near-sdk = "4.1.1" +near-contract-standards = "4.1.1" +near-sys = "0.2.1" diff --git a/contract/src/api.rs b/contract/src/api.rs index 25c5e1e..0536ecc 100644 --- a/contract/src/api.rs +++ b/contract/src/api.rs @@ -137,12 +137,12 @@ impl Contract { /// /// ``` #[payable] - pub fn set(&mut self, mut data: Value, options: Option) { + pub fn set(&mut self, data: Value, options: Option) { self.assert_live(); let options = options.unwrap_or_default(); let predecessor_account_id = env::predecessor_account_id(); let mut attached_balance = env::attached_deposit(); - for (key, value) in data.as_object_mut().expect("Data is not a JSON object") { + for (key, value) in data.as_object().expect("Data is not a JSON object") { let mut account = self.internal_unwrap_account_or_create(key, attached_balance); let write_approved = key == predecessor_account_id.as_str(); let writable_node_ids = if write_approved { @@ -327,7 +327,7 @@ impl Contract { pub fn recursive_set( &mut self, mut node: Node, - value: &mut Value, + value: &Value, write_approved: bool, writable_node_ids: &HashSet, ) { @@ -335,7 +335,7 @@ impl Contract { if value.is_string() || value.is_null() { require!(write_approved, ERR_PERMISSION_DENIED); node.set(&EMPTY_KEY.to_string(), value); - } else if let Some(obj) = value.as_object_mut() { + } else if let Some(obj) = value.as_object() { for (key, value) in obj { assert_key_valid(key.as_str()); let node_value = node.children.get(key); diff --git a/integration-tests/Cargo.toml b/integration-tests/Cargo.toml index f55ce50..eb6b591 100644 --- a/integration-tests/Cargo.toml +++ b/integration-tests/Cargo.toml @@ -2,7 +2,7 @@ name = "integration-tests" version = "1.0.0" publish = false -edition = "2018" +edition = "2021" [dev-dependencies] anyhow = "1.0" @@ -10,7 +10,7 @@ near-units = "0.2.0" # arbitrary_precision enabled for u128 types that workspaces requires for Balance types serde_json = { version = "1.0", features = ["arbitrary_precision"] } tokio = { version = "1.18.1", features = ["full"] } -workspaces = "0.7.0" +near-workspaces = "0.9.0" [[example]] name = "set_method" diff --git a/integration-tests/src/set.rs b/integration-tests/src/set.rs index 521909e..d9cb66e 100644 --- a/integration-tests/src/set.rs +++ b/integration-tests/src/set.rs @@ -2,12 +2,12 @@ mod get_workspace_dir; use crate::get_workspace_dir::get_workspace_dir; use anyhow::Result; -use near_units::parse_near; use serde_json::json; use std::collections::HashMap; use std::fs; -use workspaces::network::Sandbox; -use workspaces::{Account, Contract, Worker}; +use near_workspaces::network::Sandbox; +use near_workspaces::{Account, Contract, Worker}; +use near_workspaces::types::NearToken; static CONTRACT_WASM_FILEPATH: &str = "res/social_db_local.wasm"; @@ -38,7 +38,7 @@ async fn test_set_method() -> Result<()> { user.call(contract.id(), "set") .args_json(args) - .deposit(parse_near!("0.1 N")) + .deposit(NearToken::from_yoctonear(100_000_000_000_000_000_000_000u128)) .transact() .await? .into_result()?; @@ -82,7 +82,7 @@ async fn test_set_method_and_refund() -> Result<()> { }); let prev_balance = user.view_account().await?.balance; - let deposit = parse_near!("1 N"); + let deposit = NearToken::from_near(1); user.call(contract.id(), "set") .args_json(args) @@ -97,7 +97,7 @@ async fn test_set_method_and_refund() -> Result<()> { // less than prev balance. assert!(post_balance < prev_balance); // Check that the refund is received. - assert!(post_balance > prev_balance - deposit); + assert!(post_balance > prev_balance.checked_sub(deposit).unwrap()); Ok(()) } @@ -120,7 +120,7 @@ async fn test_set_method_and_refund_with_existing_deposit() -> Result<()> { }, }); - let deposit = parse_near!("1 N"); + let deposit = NearToken::from_near(1); let first_prev_balance = first_user.view_account().await?.balance; first_user @@ -154,9 +154,9 @@ async fn test_set_method_and_refund_with_existing_deposit() -> Result<()> { let second_post_balance = second_user.view_account().await?.balance; // Make sure first user didn't receive refund. - assert!(first_post_balance < first_prev_balance - deposit); + assert!(first_post_balance < first_prev_balance.checked_sub(deposit).unwrap()); // Make sure second user did receive refund. - assert!(second_post_balance > second_prev_balance - deposit); + assert!(second_post_balance > second_prev_balance.checked_sub(deposit).unwrap()); // Make sure second user didn't receive more than what they put in. assert!(second_post_balance < second_prev_balance); @@ -167,7 +167,7 @@ async fn init_contract_and_user() -> Result<(Worker, Contract, Account) let workspace_dir = get_workspace_dir(); let wasm_filepath = workspace_dir.join(CONTRACT_WASM_FILEPATH); - let worker = workspaces::sandbox().await?; + let worker = near_workspaces::sandbox().await?; let wasm = fs::read(wasm_filepath)?; let contract = worker.dev_deploy(&wasm).await?; @@ -185,7 +185,7 @@ async fn init_contract_and_user() -> Result<(Worker, Contract, Account) let account = worker.dev_create_account().await?; let user = account .create_subaccount("alice") - .initial_balance(parse_near!("30 N")) + .initial_balance(NearToken::from_near(30)) .transact() .await? .into_result()?; diff --git a/res/social_db_release.wasm b/res/social_db_release.wasm deleted file mode 100755 index 01e9704e6741db21cdd7054c9eed913ef21386ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319142 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%0AwX~*^!p)V$sS2?jXRnxFnJA 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%0D?|z+cnHW!>kS%-9rfC{9uwW6HubH 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 -E+3e%#vrSk<<~fR9Vl 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

SJUWZBaa3lXVWkP{{#h6$ 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

  • YH zcF*!~o+4Y}I&M1;V%y=^jf{=kvQ6@PhvnunuH*JRCda63i~Ppeh@Wr`LVlv?>x=RUM~PTohet$FrV_Jj8mJsv4wXVhP$BfMJLVJ|hYmxBpr@fnp}o*f z=vHVIbOSUDxlkCI{Dt{`%AN zdv28XcQ(A&l;HvF$9rPzJ(%bFeEQcuXjxqnXjm>>ql@Z=Pwv!Q3A=CtJ|D)u1n<{N zPqF!~HtRo*^?as`&0GU>^XyAuv)#YDWsby?T}Toi|I{)J4GK2x(%%@e9DJ_-4Vsp^ AO8@`> diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 8f357ce..6d833ff 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.69" +channel = "1.75" From cb9834546022cc40b418f97dc5aaa575496f07d4 Mon Sep 17 00:00:00 2001 From: jong-un <36259838+zwong91@users.noreply.github.com> Date: Sat, 6 Jan 2024 21:09:11 +0800 Subject: [PATCH 2/4] Testing use workspace-rs --- integration-tests/Cargo.toml | 2 +- integration-tests/src/set.rs | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/integration-tests/Cargo.toml b/integration-tests/Cargo.toml index eb6b591..0af7ec8 100644 --- a/integration-tests/Cargo.toml +++ b/integration-tests/Cargo.toml @@ -10,7 +10,7 @@ near-units = "0.2.0" # arbitrary_precision enabled for u128 types that workspaces requires for Balance types serde_json = { version = "1.0", features = ["arbitrary_precision"] } tokio = { version = "1.18.1", features = ["full"] } -near-workspaces = "0.9.0" +near-workspaces = { version = "0.9.0", features = ["unstable"] } [[example]] name = "set_method" diff --git a/integration-tests/src/set.rs b/integration-tests/src/set.rs index d9cb66e..3091646 100644 --- a/integration-tests/src/set.rs +++ b/integration-tests/src/set.rs @@ -11,6 +11,7 @@ use near_workspaces::types::NearToken; static CONTRACT_WASM_FILEPATH: &str = "res/social_db_local.wasm"; +//NEAR_ENABLE_SANDBOX_LOG = 1 /// Tests the `set` method. #[tokio::main] async fn main() -> Result<()> { @@ -167,8 +168,14 @@ async fn init_contract_and_user() -> Result<(Worker, Contract, Account) let workspace_dir = get_workspace_dir(); let wasm_filepath = workspace_dir.join(CONTRACT_WASM_FILEPATH); + // Create a sandboxed environment. + // NOTE: Each call will create a new sandboxed environment let worker = near_workspaces::sandbox().await?; + // or for testnet: + //let worker = near_workspaces::testnet().await?; let wasm = fs::read(wasm_filepath)?; + // 测试前编译合约 + let wasm = near_workspaces::compile_project(wasm_filepath).await?; let contract = worker.dev_deploy(&wasm).await?; contract.call("new").transact().await?.into_result()?; From db99c9d606756028706b311940b3341ad48f1da4 Mon Sep 17 00:00:00 2001 From: jong-un Date: Sat, 6 Jan 2024 13:22:17 +0000 Subject: [PATCH 3/4] Update cargo_metadata version and enable sandbox log --- .gitpod.yml | 11 +++++++++++ Cargo.lock | 17 ++++++++++++++++- integration-tests/src/set.rs | 6 +++--- test_local.sh | 1 + 4 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 .gitpod.yml diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 0000000..de291ac --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,11 @@ +# This configuration file was automatically generated by Gitpod. +# Please adjust to your needs (see https://www.gitpod.io/docs/introduction/learn-gitpod/gitpod-yaml) +# and commit this file to your remote git repository to share the goodness with others. + +# Learn more from ready-to-use templates: https://www.gitpod.io/docs/introduction/getting-started/quickstart + +tasks: + - init: cargo build + command: cargo watch -x run + + diff --git a/Cargo.lock b/Cargo.lock index 334c9cd..c5c0926 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -582,7 +582,7 @@ dependencies = [ "atty", "bs58 0.4.0", "camino", - "cargo_metadata", + "cargo_metadata 0.14.2", "clap 3.2.25", "colored", "env_logger", @@ -619,6 +619,20 @@ dependencies = [ "serde_json", ] +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "cc" version = "1.0.83" @@ -2396,6 +2410,7 @@ dependencies = [ "borsh 0.10.3", "bs58 0.5.0", "cargo-near", + "cargo_metadata 0.18.1", "chrono", "fs2", "json-patch", diff --git a/integration-tests/src/set.rs b/integration-tests/src/set.rs index 3091646..45f87ab 100644 --- a/integration-tests/src/set.rs +++ b/integration-tests/src/set.rs @@ -11,7 +11,7 @@ use near_workspaces::types::NearToken; static CONTRACT_WASM_FILEPATH: &str = "res/social_db_local.wasm"; -//NEAR_ENABLE_SANDBOX_LOG = 1 +//Environment Variables: NEAR_ENABLE_SANDBOX_LOG = 1 /// Tests the `set` method. #[tokio::main] async fn main() -> Result<()> { @@ -174,8 +174,8 @@ async fn init_contract_and_user() -> Result<(Worker, Contract, Account) // or for testnet: //let worker = near_workspaces::testnet().await?; let wasm = fs::read(wasm_filepath)?; - // 测试前编译合约 - let wasm = near_workspaces::compile_project(wasm_filepath).await?; + + //let wasm = near_workspaces::compile_project(wasm_filepath.).await?; let contract = worker.dev_deploy(&wasm).await?; contract.call("new").transact().await?.into_result()?; diff --git a/test_local.sh b/test_local.sh index 6e787aa..a646d04 100755 --- a/test_local.sh +++ b/test_local.sh @@ -4,4 +4,5 @@ set -e cd "$(dirname $0)" +export NEAR_ENABLE_SANDBOX_LOG=1 cargo run --example set_method From 74b05f50de64029837e0f7885e236284c584d850 Mon Sep 17 00:00:00 2001 From: jong-un Date: Sun, 7 Jan 2024 07:43:14 +0000 Subject: [PATCH 4/4] Update URLs in README.md --- README.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 2824680..5e515ee 100644 --- a/README.md +++ b/README.md @@ -6,13 +6,13 @@ Deployed at `v1.social08.testnet` -https://explorer.testnet.near.org/accounts/v1.social08.testnet + ### Mainnet account ID Deployed at `social.near` -https://explorer.near.org/accounts/social.near + ### About empty keys @@ -65,6 +65,7 @@ pub fn set(&mut self, data: Value); ``` Arguments: + - `data` is an object to store. The leaf values should be strings or null values. String values will be added, while null values will be deleted. Examples: @@ -103,6 +104,7 @@ Returns the data for a list of given key patterns. It takes one or more path patterns as arguments, and returns the matching data. The path pattern is a string that can contain wildcards. For example: + - `alice.near/profile/**` will match the entire profile data of account `alice.near`. - `alice.near/profile/*` will match all the fields of the profile, but not the nested objects. - `alice.near/profile/name` will match only the name field of the profile. @@ -119,10 +121,12 @@ pub fn get(self, keys: Vec, options: Option) -> Value; ``` Arguments: + - `keys` - an array of key patterns to return. - `options` - optional argument to specify options. Options: + - `with_block_height` - if true, for every value and a node will add the block height of the data with the key `:block`. - `with_node_id` - if true, for every node will add the node index with the key `:node`. - `return_deleted` - if true, will include deleted keys with the value `null`. @@ -153,6 +157,7 @@ The `keys` method allows to get the list of keys that match the path pattern. It's useful for querying the data without reading values. It also has an additional `options` field that can be used to specify the return type and whether to return deleted keys. For example: + - `alice.near/profile/*` will return the list of all the fields of the profile, but not the nested objects. - `*/profile/image/nft` will return the list of all the accounts that have an NFT image in their profile. - `alice.near/widget/*` with `return_deleted` option will return the list of all the widget names of the account, including the deleted ones. @@ -176,10 +181,12 @@ pub fn keys(self, keys: Vec, options: Option) -> Value; ``` Arguments: + - `keys` - an array of key patterns to return. - `options` - optional argument to specify options. Options: + - `return_type` - if `BlockHeight`, will return the block height of the key instead of `true`, if `NodeId`, will return the node index of the key instead of `true`. - `return_deleted` - if true, will include deleted keys. - `values_only` - if `true`, only matches keys which value is not a node. It's needed to filter out deleted entries. Since a node can't be deleted right now. @@ -200,7 +207,7 @@ keys({keys: ["alex.near/widget/*"], options: {return_type: "BlockHeight", values ### Permissions -See https://explorer.testnet.near.org/transactions/3c7h9da1z5Px4JumNDsRaJtCDQaZHG46dsc2SnAj5LHx\ +See ```rust #[payable] @@ -233,6 +240,3 @@ near view $CONTRACT_ID get '{"keys":["**"]}' # Full account's data near view $CONTRACT_ID get '{"keys":["'$ACCOUNT_ID'/**"]}' ``` - - -