diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 9aa01f3f7..f605c5597 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -21,6 +21,8 @@ jobs: os: [ ubuntu-latest, macos-15-intel, windows-latest ] steps: - uses: actions/checkout@v3 + with: + submodules: true - uses: actions-rust-lang/setup-rust-toolchain@v1 - if: matrix.os == 'windows-latest' name: Windows Dependencies @@ -40,6 +42,8 @@ jobs: os: [ ubuntu-latest, macos-15-intel ] steps: - uses: actions/checkout@v2 + with: + submodules: true - uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Integration_Test run: make integration @@ -51,6 +55,8 @@ jobs: os: [ ubuntu-latest, macos-15-intel ] steps: - uses: actions/checkout@v2 + with: + submodules: true - uses: actions-rust-lang/setup-rust-toolchain@v1 with: components: rustfmt, clippy @@ -70,6 +76,8 @@ jobs: - --hide-inclusion-graph --show-stats licenses steps: - uses: actions/checkout@v3 + with: + submodules: true - uses: actions-rust-lang/setup-rust-toolchain@v1 - name: cargo-deny uses: EmbarkStudios/cargo-deny-action@v2 diff --git a/.github/workflows/package.yaml b/.github/workflows/package.yaml index b36dc2d87..079ab3c18 100644 --- a/.github/workflows/package.yaml +++ b/.github/workflows/package.yaml @@ -25,6 +25,8 @@ jobs: upload_url: ${{ steps.create-release.outputs.upload_url }} steps: - uses: actions/checkout@v4 + with: + submodules: true - name: Set tag run: | export GIT_TAG_NAME=` echo ${{ github.ref }} | awk -F '/' '{print $4}' ` @@ -45,6 +47,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + submodules: true - name: Set Env run: | export GIT_TAG_NAME=` echo ${{ github.ref }} | awk -F '/' '{print $4}' ` @@ -80,6 +84,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + submodules: true - name: Set Env run: | export GIT_TAG_NAME=` echo ${{ github.ref }} | awk -F '/' '{print $4}' ` @@ -119,6 +125,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + submodules: true - name: Set Env run: | export GIT_TAG_NAME=` echo ${{ github.ref }} | awk -F '/' '{print $4}' ` @@ -154,6 +162,8 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@v4 + with: + submodules: true - name: Set Env run: | export GIT_TAG_NAME=` echo ${{ github.ref }} | awk -F '/' '{print $4}' ` @@ -205,6 +215,8 @@ jobs: fi - uses: actions/checkout@v4 + with: + submodules: true - name: Set Env run: | export GIT_TAG_NAME=` echo ${{ github.ref }} | awk -F '/' '{print $4}' ` @@ -251,6 +263,8 @@ jobs: echo "C:\msys64\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append echo "LIBCLANG_PATH=$env:USERPROFILE\scoop\apps\llvm\current\bin" >> $env:GITHUB_ENV - uses: actions/checkout@v4 + with: + submodules: true - name: Build run: | make prod @@ -308,6 +322,8 @@ jobs: - package-for-centos steps: - uses: actions/checkout@v4 + with: + submodules: true - name: Set tag run: | export GIT_TAG_NAME=` echo ${{ github.ref }} | awk -F '/' '{print $4}' ` diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..cf374a6a1 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "ckb-tui"] + path = ckb-tui + url = https://github.com/nervosnetwork/ckb-tui diff --git a/Cargo.lock b/Cargo.lock index b16bce937..693cf247a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,15 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "addr2line" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" -dependencies = [ - "gimli", -] - [[package]] name = "adler" version = "1.0.2" @@ -60,6 +51,19 @@ dependencies = [ "version_check", ] +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if 1.0.0", + "getrandom 0.3.4", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -69,12 +73,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -93,6 +91,56 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "anstream" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + [[package]] name = "anyhow" version = "1.0.104" @@ -101,9 +149,9 @@ checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -131,7 +179,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -160,21 +208,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" -[[package]] -name = "backtrace" -version = "0.3.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" -dependencies = [ - "addr2line", - "cc", - "cfg-if 1.0.0", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - [[package]] name = "base58ck" version = "0.2.0" @@ -405,6 +438,15 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c95ee6bba9d950218b6cc910cf62bc9e0a171d0f4537e3627b0f54d08549b188" +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + [[package]] name = "bstr" version = "1.9.1" @@ -452,6 +494,15 @@ dependencies = [ "serde", ] +[[package]] +name = "byteutils" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52ee7b5a84b1c1b78f39a2ea1f1381233ebc49d61104ed79353857569946d32" +dependencies = [ + "regex", +] + [[package]] name = "cacache" version = "13.1.0" @@ -460,7 +511,7 @@ checksum = "5c5063741c7b2e260bbede781cf4679632dd90e2718e99f7715e46824b65670b" dependencies = [ "digest 0.10.7", "either", - "futures 0.3.30", + "futures 0.3.33", "hex", "libc", "memmap2", @@ -473,23 +524,30 @@ dependencies = [ "sha2 0.10.8", "ssri", "tempfile", - "thiserror", + "thiserror 1.0.63", "tokio", "tokio-stream", "walkdir", ] [[package]] -name = "cassowary" -version = "0.3.0" +name = "castaway" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" +checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a" +dependencies = [ + "rustversion", +] [[package]] name = "cc" -version = "1.1.6" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" +checksum = "5add81bb678e6cb321aff7fa0dc7689ad82b112dbc032cea19f91d6b8e3582b9" +dependencies = [ + "find-msvc-tools", + "shlex", +] [[package]] name = "cfg-if" @@ -511,16 +569,15 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets", + "windows-link", ] [[package]] @@ -558,7 +615,7 @@ dependencies = [ "ckb-traits", "ckb-types", "serde", - "toml", + "toml 0.5.11", ] [[package]] @@ -593,9 +650,10 @@ dependencies = [ "ckb-script", "ckb-sdk", "ckb-signer", + "ckb-tui", "ckb-types", "ckb-util", - "clap", + "clap 3.0.0-beta.1", "clap_generate", "colored", "console", @@ -606,7 +664,7 @@ dependencies = [ "eaglesong", "env_logger", "faster-hex", - "futures 0.3.30", + "futures 0.3.33", "ipnetwork", "jsonrpc-core", "jsonrpc-core-client", @@ -624,12 +682,10 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "serde_yaml", + "serde_yaml 0.8.26", "shell-words", - "termion", "tokio", - "toml", - "tui", + "toml 0.5.11", "url 1.7.2", "yaml-rust", ] @@ -665,7 +721,7 @@ dependencies = [ "faster-hex", "rand 0.8.5", "secp256k1", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -688,7 +744,7 @@ dependencies = [ "anyhow", "ckb-occupied-capacity", "derive_more 1.0.0", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -710,7 +766,7 @@ dependencies = [ "faster-hex", "schemars", "serde", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -722,7 +778,7 @@ dependencies = [ "ckb-fixed-hash-core", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -823,7 +879,7 @@ checksum = "a4a36880cfd22cad07fd1e6c8f4b2d46eeb6dfae651de55bc1966a7a0554afa7" dependencies = [ "ckb-occupied-capacity-core", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -912,7 +968,7 @@ dependencies = [ "derive-getters", "dyn-clone", "enum-repr-derive", - "futures 0.3.30", + "futures 0.3.33", "getrandom 0.2.16", "hex", "jsonrpc-core", @@ -924,7 +980,7 @@ dependencies = [ "serde_derive", "serde_json", "sha3 0.10.8", - "thiserror", + "thiserror 1.0.63", "tokio", "tokio-util 0.7.11", "tokio_with_wasm", @@ -949,7 +1005,7 @@ dependencies = [ "scrypt", "secp256k1", "serde_json", - "thiserror", + "thiserror 1.0.63", "tiny-keccak", "uuid", ] @@ -989,6 +1045,39 @@ dependencies = [ "ckb-types", ] +[[package]] +name = "ckb-tui" +version = "0.1.2" +dependencies = [ + "anyhow", + "bs58 0.5.1", + "byteutils", + "chrono", + "ckb-fixed-hash-core", + "ckb-gen-types", + "ckb-jsonrpc-types", + "ckb-sdk", + "clap 4.5.60", + "cursive", + "cursive-aligned-view", + "cursive-async-view", + "cursive-spinner-view", + "cursive_table_view", + "http 1.3.1", + "log", + "number_prefix", + "numext-fixed-uint", + "queue", + "rand 0.9.5", + "serde", + "serde_json", + "serde_yaml 0.9.34+deprecated", + "tentacle-multiaddr", + "thousands", + "tokio", + "tokio-stream", +] + [[package]] name = "ckb-types" version = "1.1.3" @@ -1058,17 +1147,39 @@ checksum = "860643c53f980f0d38a5e25dfab6c3c93b2cb3aa1fe192643d17a293c6c41936" dependencies = [ "atty", "bitflags 1.3.2", - "clap_derive", - "indexmap", + "clap_derive 3.2.25", + "indexmap 1.9.3", "lazy_static", "os_str_bytes", - "strsim", + "strsim 0.10.0", "termcolor", "textwrap", - "unicode-width", + "unicode-width 0.1.13", "vec_map", ] +[[package]] +name = "clap" +version = "4.5.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a" +dependencies = [ + "clap_builder", + "clap_derive 4.5.55", +] + +[[package]] +name = "clap_builder" +version = "4.5.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim 0.11.1", +] + [[package]] name = "clap_derive" version = "3.2.25" @@ -1082,15 +1193,33 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "clap_derive" +version = "4.5.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "clap_generate" version = "3.0.0-beta.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "188d8b137fa922515d549cf17ece165ddbc71bf21e723e81d84406958dcdef67" dependencies = [ - "clap", + "clap 3.0.0-beta.1", ] +[[package]] +name = "clap_lex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" + [[package]] name = "clipboard-win" version = "5.4.0" @@ -1109,6 +1238,12 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "colorchoice" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + [[package]] name = "colored" version = "1.9.4" @@ -1120,6 +1255,20 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "compact_str" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab" +dependencies = [ + "castaway", + "cfg-if 1.0.0", + "itoa", + "rustversion", + "ryu", + "static_assertions", +] + [[package]] name = "console" version = "0.15.8" @@ -1129,8 +1278,8 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width", - "windows-sys", + "unicode-width 0.1.13", + "windows-sys 0.52.0", ] [[package]] @@ -1151,7 +1300,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" dependencies = [ - "percent-encoding 2.3.1", + "percent-encoding 2.3.2", "time", "version_check", ] @@ -1171,7 +1320,7 @@ dependencies = [ "serde_derive", "serde_json", "time", - "url 2.5.2", + "url 2.5.8", ] [[package]] @@ -1208,6 +1357,19 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "crossbeam" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + [[package]] name = "crossbeam-channel" version = "0.5.15" @@ -1217,12 +1379,65 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "crossbeam-deque" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "803d13fb3b09d88be9f4dbc29062c66b19bf7170867ceb746d2a8689bf6c7a26" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +[[package]] +name = "crossterm" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" +dependencies = [ + "bitflags 2.6.0", + "crossterm_winapi", + "mio", + "parking_lot 0.12.3", + "rustix", + "signal-hook", + "signal-hook-mio", + "winapi 0.3.9", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi 0.3.9", +] + [[package]] name = "crunchy" version = "0.2.2" @@ -1265,7 +1480,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "672465ae37dc1bc6380a6547a8883d5dd397b0f1faaad4f265726cc7042a5345" dependencies = [ "nix", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -1274,6 +1489,135 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" +[[package]] +name = "cursive" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "386d5a36020bb856e9a34ecb8a4e6c9bd6b0262d1857bae4db7bc7e2fdaa532e" +dependencies = [ + "ahash 0.8.12", + "cfg-if 1.0.0", + "crossbeam-channel", + "crossterm", + "cursive_core", + "lazy_static", + "libc", + "log", + "signal-hook", + "unicode-segmentation", + "unicode-width 0.1.13", +] + +[[package]] +name = "cursive-aligned-view" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "376f1c24af1ac14ffbd180caabc4022707265622d2280263e4fff8dd5ba0dc86" +dependencies = [ + "cursive_core", +] + +[[package]] +name = "cursive-async-view" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240119a1821439b02b9710b22d02b9d0044418452811b0b05230d2c240cfc634" +dependencies = [ + "crossbeam", + "cursive_core", + "doc-comment", + "interpolation", + "lazy_static", + "log", + "num", + "send_wrapper", +] + +[[package]] +name = "cursive-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac7ac0eb0cede3dfdfebf4d5f22354e05a730b79c25fd03481fc69fcfba0a73e" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "cursive-spinner-view" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1204f7d5aa30cfaba33ec518c6655e5c479e471eacfa7978868ce9417fb6e60" +dependencies = [ + "cursive_core", +] + +[[package]] +name = "cursive_core" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40c54bcff5c30d198d0c089b3f1674e2b3b7b438147b798fe247c955e171c4f" +dependencies = [ + "ahash 0.8.12", + "compact_str", + "crossbeam-channel", + "cursive-macros", + "enum-map", + "enumset", + "jiff", + "lazy_static", + "log", + "num", + "parking_lot 0.12.3", + "serde_json", + "toml 1.1.4+spec-1.1.0", + "unicode-segmentation", + "unicode-width 0.2.2", + "xi-unicode", +] + +[[package]] +name = "cursive_table_view" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86a6cca21da26bb588502349d09b68574a3e55689ddeaeeb086af373e0ef6766" +dependencies = [ + "cursive_core", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.119", +] + [[package]] name = "dashmap" version = "5.5.3" @@ -1293,6 +1637,37 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +[[package]] +name = "defmt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" +dependencies = [ + "defmt-parser", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror 2.0.19", +] + [[package]] name = "deranged" version = "0.4.0" @@ -1323,7 +1698,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -1343,7 +1718,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", "unicode-xid", ] @@ -1385,9 +1760,15 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] +[[package]] +name = "doc-comment" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9" + [[package]] name = "document-features" version = "0.2.11" @@ -1433,6 +1814,26 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "enum-repr-derive" version = "0.2.0" @@ -1445,6 +1846,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "enumset" +version = "1.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccc5801fd11762e24d1e420d01d2ac518f2a2ca4329d4fbb6639f2412b6204e0" +dependencies = [ + "enumset_derive", +] + +[[package]] +name = "enumset_derive" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd536557b58c682b217b8fb199afdff47cd3eff260623f19e77074eb073d63a" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "env_logger" version = "0.6.2" @@ -1458,6 +1880,12 @@ dependencies = [ "termcolor", ] +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + [[package]] name = "errno" version = "0.3.9" @@ -1465,7 +1893,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -1500,9 +1928,15 @@ checksum = "7e5768da2206272c81ef0b5e951a41862938a6070da63bcea197899942d3b947" dependencies = [ "cfg-if 1.0.0", "rustix", - "windows-sys", + "windows-sys 0.52.0", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + [[package]] name = "flate2" version = "1.0.30" @@ -1536,11 +1970,11 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ - "percent-encoding 2.3.1", + "percent-encoding 2.3.2", ] [[package]] @@ -1557,9 +1991,9 @@ checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "a88cf1f829d945f548cf8fec32c61b1f202b6d93b45848602fc02af4b12ad218" dependencies = [ "futures-channel", "futures-core", @@ -1572,9 +2006,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae" dependencies = [ "futures-core", "futures-sink", @@ -1582,56 +2016,55 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "6754879cc9f2c66f88c6e5c35344bb0bdb0708b0352b1201815667c7eabc7458" dependencies = [ "futures-core", "futures-task", "futures-util", - "num_cpus", ] [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "4577ecaa3c4f96589d473f679a71b596316f6641bc350038b962a5daf0085d7a" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" dependencies = [ "futures 0.1.31", "futures-channel", @@ -1640,9 +2073,9 @@ dependencies = [ "futures-macro", "futures-sink", "futures-task", + "libc", "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -1690,10 +2123,16 @@ dependencies = [ ] [[package]] -name = "gimli" -version = "0.29.0" +name = "getrandom" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "r-efi", + "wasip2", +] [[package]] name = "globset" @@ -1745,7 +2184,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash", + "ahash 0.7.8", ] [[package]] @@ -1754,6 +2193,12 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + [[package]] name = "heapsize" version = "0.4.2" @@ -1830,7 +2275,7 @@ version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -1926,7 +2371,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.5.7", "tokio", "tower-service", "tracing", @@ -1981,7 +2426,7 @@ dependencies = [ "http-body 1.0.1", "hyper 1.6.0", "pin-project-lite", - "socket2", + "socket2 0.5.7", "tokio", "tower", "tower-service", @@ -2098,22 +2543,18 @@ dependencies = [ ] [[package]] -name = "idna" -version = "0.1.5" +name = "ident_case" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" dependencies = [ + "matches", "unicode-bidi", "unicode-normalization", ] @@ -2170,6 +2611,16 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown 0.17.1", +] + [[package]] name = "instant" version = "0.1.13" @@ -2179,6 +2630,12 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "interpolation" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3b7357d2bbc5ee92f8e899ab645233e43d21407573cceb37fed8bc3dede2c02" + [[package]] name = "iovec" version = "0.1.4" @@ -2211,17 +2668,14 @@ checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ "hermit-abi 0.3.9", "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] -name = "itertools" -version = "0.8.2" +name = "is_terminal_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" -dependencies = [ - "either", -] +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itoa" @@ -2229,6 +2683,59 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +[[package]] +name = "jiff" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668b7183bd07af9a4885f5c35b0cc5c83c4607a913c16b7e17291832910d2dcc" +dependencies = [ + "defmt", + "jiff-core", + "jiff-static", + "jiff-tzdb-platform", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", + "windows-link", +] + +[[package]] +name = "jiff-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7feca88439efe53da3754500c1851dedf3cb36c524dd5cf8225cc0794de95d09" +dependencies = [ + "defmt", +] + +[[package]] +name = "jiff-static" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a69dcb3a21cfb32ce1cd056169337ca284af0766dd766e7878819b251a49204" +dependencies = [ + "jiff-core", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +dependencies = [ + "jiff-tzdb", +] + [[package]] name = "js-sys" version = "0.3.77" @@ -2246,7 +2753,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2b99d4207e2a04fb4581746903c2bb7eb376f88de9c699d0f3e10feeac0cd3a" dependencies = [ "derive_more 0.99.18", - "futures 0.3.30", + "futures 0.3.33", "jsonrpc-core", "jsonrpc-pubsub", "log", @@ -2261,7 +2768,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ - "futures 0.3.30", + "futures 0.3.33", "futures-executor", "futures-util", "log", @@ -2276,7 +2783,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b51da17abecbdab3e3d4f26b01c5ec075e88d3abe3ab3b05dc9aa69392764ec0" dependencies = [ - "futures 0.3.30", + "futures 0.3.33", "jsonrpc-client-transports", ] @@ -2298,7 +2805,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" dependencies = [ - "futures 0.3.30", + "futures 0.3.33", "hyper 0.14.30", "jsonrpc-core", "jsonrpc-server-utils", @@ -2314,7 +2821,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240f87695e6c6f62fb37f05c02c04953cf68d6408b8c1c89de85c7a0125b1011" dependencies = [ - "futures 0.3.30", + "futures 0.3.33", "jsonrpc-core", "lazy_static", "log", @@ -2330,7 +2837,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa4fdea130485b572c39a460d50888beb00afb3e35de23ccd7fad8ff19f0e0d4" dependencies = [ "bytes 1.11.1", - "futures 0.3.30", + "futures 0.3.33", "globset", "jsonrpc-core", "lazy_static", @@ -2368,9 +2875,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "linked-hash-map" @@ -2411,9 +2918,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "lru" @@ -2462,8 +2969,8 @@ checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e" dependencies = [ "miette-derive", "once_cell", - "thiserror", - "unicode-width", + "thiserror 1.0.63", + "unicode-width 0.1.13", ] [[package]] @@ -2474,7 +2981,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -2500,8 +3007,9 @@ checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ "hermit-abi 0.3.9", "libc", + "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -2564,11 +3072,74 @@ dependencies = [ "libc", ] +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] [[package]] name = "num-traits" @@ -2580,14 +3151,10 @@ dependencies = [ ] [[package]] -name = "num_cpus" -version = "1.16.0" +name = "number_prefix" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.9", - "libc", -] +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "numext-constructor" @@ -2620,7 +3187,7 @@ dependencies = [ "numext-constructor", "rand 0.7.3", "serde", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -2635,27 +3202,18 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "numtoa" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" - -[[package]] -name = "object" -version = "0.36.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" -dependencies = [ - "memchr", -] - [[package]] name = "once_cell" version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + [[package]] name = "opaque-debug" version = "0.2.3" @@ -2691,7 +3249,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -2735,13 +3293,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b574ca9f0c0235c04de4c5110542959f64c9b8882f638b70f6c6be52c75bdc46" dependencies = [ "arrayref", - "bs58", + "bs58 0.2.5", "byteorder", "bytes 0.4.12", "data-encoding", "parity-multihash", "serde", - "unsigned-varint", + "unsigned-varint 0.2.3", "url 1.7.2", ] @@ -2757,7 +3315,7 @@ dependencies = [ "sha-1 0.8.2", "sha2 0.8.2", "sha3 0.8.2", - "unsigned-varint", + "unsigned-varint 0.2.3", ] [[package]] @@ -2832,9 +3390,9 @@ checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "phf" @@ -2896,7 +3454,7 @@ dependencies = [ "phf_shared 0.12.1", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -2934,7 +3492,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -2943,17 +3501,11 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "plain" @@ -2961,6 +3513,21 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" +[[package]] +name = "portable-atomic" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3" + +[[package]] +name = "portable-atomic-util" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" +dependencies = [ + "portable-atomic", +] + [[package]] name = "potential_utf" version = "0.1.2" @@ -2988,7 +3555,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" dependencies = [ - "toml", + "toml 0.5.11", ] [[package]] @@ -3040,6 +3607,12 @@ dependencies = [ "psl-types", ] +[[package]] +name = "queue" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff7e7fd62294a081720771513c1c1c995468a5d4e771a2928e423b88682ce48" + [[package]] name = "quick-error" version = "1.2.3" @@ -3055,6 +3628,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "radix_trie" version = "0.2.1" @@ -3122,6 +3701,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + [[package]] name = "rand_chacha" version = "0.1.1" @@ -3152,6 +3741,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + [[package]] name = "rand_core" version = "0.3.1" @@ -3185,6 +3784,15 @@ dependencies = [ "getrandom 0.2.16", ] +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + [[package]] name = "rand_hc" version = "0.1.0" @@ -3298,12 +3906,6 @@ dependencies = [ "bitflags 2.6.0", ] -[[package]] -name = "redox_termios" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20145670ba436b55d91fc92d25e71160fbfbdd57831631c8d7d36377a476f1cb" - [[package]] name = "redox_users" version = "0.3.5" @@ -3348,9 +3950,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.5" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -3360,9 +3962,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" dependencies = [ "aho-corasick", "memchr", @@ -3371,9 +3973,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "reqwest" @@ -3399,7 +4001,7 @@ dependencies = [ "mime", "native-tls", "once_cell", - "percent-encoding 2.3.1", + "percent-encoding 2.3.2", "pin-project-lite", "rustls-pemfile", "serde", @@ -3409,7 +4011,7 @@ dependencies = [ "tokio", "tokio-native-tls", "tower-service", - "url 2.5.2", + "url 2.5.8", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -3439,12 +4041,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - [[package]] name = "rustc_version" version = "0.4.0" @@ -3464,7 +4060,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -3505,9 +4101,9 @@ dependencies = [ "nix", "radix_trie", "unicode-segmentation", - "unicode-width", + "unicode-width 0.1.13", "utf8parse", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -3518,7 +4114,7 @@ checksum = "e5af959c8bf6af1aff6d2b463a57f71aae53d1332da58419e30ad8dc7011d951" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -3548,7 +4144,7 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -3667,6 +4263,12 @@ version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +[[package]] +name = "send_wrapper" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "930c0acf610d3fdb5e2ab6213019aaa04e227ebe9547b0649ba599b16d788bd7" + [[package]] name = "seq-macro" version = "0.3.6" @@ -3700,7 +4302,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -3727,6 +4329,15 @@ dependencies = [ "zmij", ] +[[package]] +name = "serde_spanned" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" +dependencies = [ + "serde_core", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -3745,12 +4356,25 @@ version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" dependencies = [ - "indexmap", + "indexmap 1.9.3", "ryu", "serde", "yaml-rust", ] +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.14.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + [[package]] name = "sha-1" version = "0.8.2" @@ -3837,6 +4461,43 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39acde55a154c4cd3ae048ac78cc21c25f3a0145e44111b523279113dce0d94a" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc" +dependencies = [ + "libc", + "mio", + "signal-hook", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + [[package]] name = "siphasher" version = "0.3.11" @@ -3871,7 +4532,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" +dependencies = [ + "libc", + "windows-sys 0.61.2", ] [[package]] @@ -3887,7 +4558,7 @@ dependencies = [ "serde", "sha-1 0.10.1", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.63", "xxhash-rust", ] @@ -3897,12 +4568,24 @@ 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 = "strsim" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "strum" version = "0.27.2" @@ -3921,7 +4604,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -3943,9 +4626,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.87" +version = "2.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" dependencies = [ "proc-macro2", "quote", @@ -3980,7 +4663,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -3992,28 +4675,32 @@ dependencies = [ "cfg-if 1.0.0", "fastrand", "rustix", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] -name = "termcolor" -version = "1.4.1" +name = "tentacle-multiaddr" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +checksum = "b7b06b419ae75898680ae449d5db5bf9dfedb531c49cdb6f24d42054508a2df3" dependencies = [ - "winapi-util", + "arrayref", + "bs58 0.5.1", + "byteorder", + "bytes 1.11.1", + "data-encoding", + "serde", + "sha2 0.10.8", + "unsigned-varint 0.8.0", ] [[package]] -name = "termion" -version = "1.5.6" +name = "termcolor" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ - "libc", - "numtoa", - "redox_syscall 0.2.16", - "redox_termios", + "winapi-util", ] [[package]] @@ -4022,7 +4709,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ - "unicode-width", + "unicode-width 0.1.13", ] [[package]] @@ -4031,7 +4718,16 @@ version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.63", +] + +[[package]] +name = "thiserror" +version = "2.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" +dependencies = [ + "thiserror-impl 2.0.19", ] [[package]] @@ -4042,9 +4738,26 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", ] +[[package]] +name = "thousands" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" + [[package]] name = "time" version = "0.3.41" @@ -4112,29 +4825,28 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.42.1" +version = "1.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2209a14885b74764cce87ffa777ffa1b8ce81a3f3166c6f886b83337fe7e077f" +checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" dependencies = [ - "backtrace", "bytes 1.11.1", "libc", "mio", "pin-project-lite", - "socket2", + "socket2 0.6.5", "tokio-macros", - "windows-sys", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -4149,9 +4861,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b" dependencies = [ "futures-core", "pin-project-lite", @@ -4206,7 +4918,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "499ed9d797c376545920fa64c39c3efb34217ba4db826102db6c3912555291c9" dependencies = [ "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -4218,6 +4930,45 @@ dependencies = [ "serde", ] +[[package]] +name = "toml" +version = "1.1.4+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5" +dependencies = [ + "indexmap 2.14.0", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", +] + +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_parser" +version = "1.1.3+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_writer" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" + [[package]] name = "tower" version = "0.4.13" @@ -4270,22 +5021,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "tui" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b422ff4986065d33272b587907654f918a3fe8702786a8110bf68dede0d8ee" -dependencies = [ - "bitflags 1.3.2", - "cassowary", - "either", - "itertools", - "log", - "termion", - "unicode-segmentation", - "unicode-width", -] - [[package]] name = "typenum" version = "1.17.0" @@ -4334,18 +5069,36 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + [[package]] name = "unicode-xid" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + [[package]] name = "unsigned-varint" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7f0023a96687fe169081e8adce3f65e3874426b7886e9234d490af2dc077959" +[[package]] +name = "unsigned-varint" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" + [[package]] name = "url" version = "1.7.2" @@ -4359,13 +5112,14 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", - "idna 0.5.0", - "percent-encoding 2.3.1", + "idna 1.1.0", + "percent-encoding 2.3.2", + "serde", ] [[package]] @@ -4438,6 +5192,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasip2" +version = "1.0.4+wasi-0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" +dependencies = [ + "wit-bindgen", +] + [[package]] name = "wasm-bindgen" version = "0.2.100" @@ -4460,7 +5223,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", "wasm-bindgen-shared", ] @@ -4495,7 +5258,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4563,7 +5326,7 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -4612,7 +5375,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] @@ -4623,9 +5386,15 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-registry" version = "0.2.0" @@ -4665,6 +5434,15 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -4729,12 +5507,30 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "winnow" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + [[package]] name = "writeable" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +[[package]] +name = "xi-unicode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" + [[package]] name = "xxhash-rust" version = "0.8.11" @@ -4770,10 +5566,30 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", "synstructure", ] +[[package]] +name = "zerocopy" +version = "0.8.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a105cd7b140f6eeec8acff2ea38135d3cab283ada58540f629fe51e46696eb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fe976fb70c78cd64cccfe3a6fc142244e8a77b70959b30faf9d0ac37ee228eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "zerofrom" version = "0.1.6" @@ -4791,7 +5607,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", "synstructure", ] @@ -4825,7 +5641,7 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.119", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 23f48b2c2..3174b1d77 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -67,9 +67,7 @@ tokio = { version = "1", features = ["net", "io-util", "rt"] } futures = "0.3" async-trait = "0.1.88" -[target.'cfg(unix)'.dependencies] -tui = "0.6.0" -termion = "1.5" +ckb-tui = { path = "./ckb-tui" } [dev-dependencies] rand = "0.7" diff --git a/ckb-tui b/ckb-tui new file mode 160000 index 000000000..cde729335 --- /dev/null +++ b/ckb-tui @@ -0,0 +1 @@ +Subproject commit cde7293356bf2a14fa54114b4a9f441f01430aa1 diff --git a/src/main.rs b/src/main.rs index 8344282c8..39fb8607f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -25,6 +25,8 @@ use utils::{ rpc::{HttpRpcClient, RawHttpRpcClient}, }; +use crate::subcommands::TuiSubCommand; + mod interactive; mod plugin; #[allow(clippy::mutable_key_type)] @@ -166,6 +168,7 @@ async fn main() -> Result<(), io::Error> { .process(sub_matches, debug) }) } + ("tui", Some(sub_matches)) => TuiSubCommand::new().process(sub_matches, debug), _ => { if let Err(err) = InteractiveEnv::from_config(ckb_cli_dir, config, plugin_mgr, key_store) @@ -240,6 +243,7 @@ pub fn build_cli<'a>(version_short: &'a str, version_long: &'a str) -> App<'a> { .subcommand(DAOSubCommand::subcommand()) .subcommand(SudtSubCommand::subcommand("sudt")) .subcommand(DeploySubCommand::subcommand("deploy")) + .subcommand(TuiSubCommand::subcommand("tui")) .arg( Arg::with_name("url") diff --git a/src/subcommands/deploy/mod.rs b/src/subcommands/deploy/mod.rs index 2288e8d68..17255ea3f 100644 --- a/src/subcommands/deploy/mod.rs +++ b/src/subcommands/deploy/mod.rs @@ -643,8 +643,17 @@ fn load_snapshot(migration_dir: &Path, snapshot_name: String) -> Result String { - let now: DateTime = Utc::now(); - now.format("%Y-%m-%d-%H%M%S.json").to_string() + snapshot_name_at(Utc::now()) +} + +fn snapshot_name_at(now: DateTime) -> String { + // Multiple deployments can be applied within the same second. Keep the + // timestamp fixed-width so lexicographic ordering still matches time order. + now.format("%Y-%m-%d-%H%M%S%9f.json").to_string() +} + +fn snapshot_name_regex() -> regex::Regex { + regex::Regex::new(r"^\d{4}-\d{2}-\d{2}-\d{6}(?:\d{9})?\.json$").unwrap() } fn snapshot_recipe(path: &Path, recipe: &DeploymentRecipe) -> Result<()> { @@ -658,7 +667,9 @@ fn snapshot_recipe(path: &Path, recipe: &DeploymentRecipe) -> Result<()> { } fn load_last_snapshot(migration_dir: &Path) -> Result> { - let re = regex::Regex::new(r"^\d{4}-\d{2}-\d{2}-\d{6}\.json$").unwrap(); + // Accept legacy second-precision snapshots as well as the nanosecond- + // precision names generated by current versions. + let re = snapshot_name_regex(); fs::read_dir(migration_dir)? .map(|d| d.map(|d| d.file_name())) .collect::, _>>()? @@ -1192,3 +1203,31 @@ fn modify_info_file Result>( file.write_all(content.as_bytes())?; Ok(result) } + +#[cfg(test)] +mod tests { + use super::{snapshot_name_at, snapshot_name_regex}; + use chrono::{TimeZone, Utc}; + + #[test] + fn snapshot_names_are_unique_and_sortable_within_a_second() { + let first = + Utc.with_ymd_and_hms(2026, 8, 6, 4, 39, 11).unwrap() + chrono::Duration::nanoseconds(1); + let second = first + chrono::Duration::nanoseconds(1); + + let first_name = snapshot_name_at(first); + let second_name = snapshot_name_at(second); + + assert_eq!(first_name, "2026-08-06-043911000000001.json"); + assert_eq!(second_name, "2026-08-06-043911000000002.json"); + assert!(first_name < second_name); + } + + #[test] + fn snapshot_name_regex_accepts_legacy_and_precise_names() { + let re = snapshot_name_regex(); + assert!(re.is_match("2026-08-06-043911.json")); + assert!(re.is_match("2026-08-06-043911000000001.json")); + assert!(!re.is_match("2026-08-06-04391100000001.json")); + } +} diff --git a/src/subcommands/mod.rs b/src/subcommands/mod.rs index e48c246e1..4c32df4f8 100644 --- a/src/subcommands/mod.rs +++ b/src/subcommands/mod.rs @@ -8,6 +8,7 @@ pub mod plugin; pub mod pubsub; pub mod rpc; pub mod sudt; +pub mod tui; pub mod tx; pub mod util; pub mod wallet; @@ -24,6 +25,7 @@ pub use plugin::PluginSubCommand; pub use pubsub::PubSubCommand; pub use rpc::RpcSubCommand; pub use sudt::SudtSubCommand; +pub use tui::TuiSubCommand; pub use tx::TxSubCommand; pub use util::UtilSubCommand; pub use wallet::{TransferArgs, WalletSubCommand}; diff --git a/src/subcommands/tui.rs b/src/subcommands/tui.rs new file mode 100644 index 000000000..c798761ee --- /dev/null +++ b/src/subcommands/tui.rs @@ -0,0 +1,63 @@ +use ckb_tui::start_ckb_tui; +use clap::{App, Arg}; + +use crate::{ + subcommands::CliSubCommand, + utils::arg_parser::{ArgParser, FilePathParser, FromStrParser}, +}; + +pub struct TuiSubCommand; + +impl TuiSubCommand { + pub fn new() -> Self { + Self + } + pub fn subcommand(name: &str) -> App<'static> { + let arg_rpc_url = Arg::with_name("rpc-url") + .long("rpc-url") + .short('r') + .default_value("http://127.0.0.1:8114") + .about("RPC endpoint of CKB node") + .takes_value(true) + .required(false); + let arg_tcp_url= Arg::with_name("tcp-url").long("tcp-url").short('t').takes_value(true).required(false).about("TCP endpoint of CKB node, used for receiving pushed transactions data\nIf not provided, latest transactions and rejected transactions won't be displayed"); + let arg_refresh_interval = Arg::with_name("refresh-interval") + .long("refresh_interval") + .short('i') + .default_value("300") + .takes_value(true) + .required(false) + .about("Refresh interval of displayed data, defaults to 300ms") + .validator(|input| FromStrParser::::new().validate(input)); + let arg_theme_file = Arg::with_name("theme-file").long("theme-file").takes_value(true).required(false).about("Theme file to use for cursive. See https://github.com/gyscos/cursive/blob/main/cursive/examples/assets/style.toml for an example.").validator(|input|FilePathParser::new(true).validate(input)); + App::new(name).about("Start ckb-tui").args(vec![ + arg_rpc_url, + arg_tcp_url, + arg_refresh_interval, + arg_theme_file, + ]) + } +} + +impl CliSubCommand for TuiSubCommand { + fn process( + &mut self, + matches: &clap::ArgMatches, + debug: bool, + ) -> Result { + match start_ckb_tui( + matches.value_of("rpc-url").unwrap(), + matches.value_of("tcp-url").map(|x| x.to_string()), + matches.value_of_t("refresh-interval").unwrap(), + matches.value_of("theme-file").map(|x| x.to_string()), + debug, + ) { + Ok(_) => Ok(super::Output { + stderr: None, + stdout: None, + success: true, + }), + Err(e) => Err(e.to_string()), + } + } +} diff --git a/src/subcommands/tui/mod.rs b/src/subcommands/tui/mod.rs deleted file mode 100644 index d31cc04e3..000000000 --- a/src/subcommands/tui/mod.rs +++ /dev/null @@ -1,547 +0,0 @@ -mod state; -mod util; -mod widgets; - -use std::io; -use std::path::PathBuf; -use std::sync::Arc; - -use ckb_util::RwLock; -use termion::event::Key; -use termion::input::MouseTerminal; -use termion::raw::IntoRawMode; -use termion::screen::AlternateScreen; -use tui::backend::{Backend, TermionBackend}; -use tui::layout::{Alignment, Constraint, Direction, Layout, Rect}; -use tui::style::{Color, Modifier, Style}; -// use tui::widgets::canvas::{Canvas, Map, MapResolution, Rectangle}; -// use tui::widgets::{Dataset, Axis, Chart, Marker}; -use tui::widgets::{Block, Borders, Paragraph, SelectableList, Text, Widget}; -use tui::{Frame, Terminal}; -// use chrono::{Local, DateTime, TimeZone}; -use ckb_sdk::{constants::ONE_CKB, Address, NetworkType}; -use ckb_types::{ - core::BlockView, - prelude::*, - H256, -}; -use ckb_channel::Request; - -use crate::utils::{ - genesis_info::GenesisInfo, - other::get_network_type, - rpc::HttpRpcClient, -}; -use state::{start_rpc_thread, State, SummaryInfo}; -use util::{human_capacity, ts_now, App, Event, Events, TabsState}; -use widgets::List; - -pub struct TuiSubCommand { - url: String, - index_dir: PathBuf, - index_controller: IndexController, -} - -impl TuiSubCommand { - pub fn new( - url: String, - index_dir: PathBuf, - index_controller: IndexController, - ) -> TuiSubCommand { - TuiSubCommand { - url, - index_dir, - index_controller, - } - } - - pub fn start(self) -> Result { - let (network_type, genesis_info) = { - let mut rpc_client = HttpRpcClient::new(self.url.clone()); - let network_type = get_network_type(&mut rpc_client)?; - let genesis_block: BlockView = rpc_client - .get_block_by_number(0) - .map_err(|err| { - format!( - "Get genesis block from {} failed: {}\n[Hint]: you can use `ckb-cli --url tui` to override API url", - self.url, - err - ) - })? - .expect("Can not get genesis block?") - .into(); - let genesis_info = GenesisInfo::from_block(&genesis_block)?; - (network_type, genesis_info) - }; - - let stdout = io::stdout() - .into_raw_mode() - .map_err(|err| err.to_string())?; - let stdout = MouseTerminal::from(stdout); - let stdout = AlternateScreen::from(stdout); - let backend = TermionBackend::new(stdout); - let mut terminal = Terminal::new(backend).map_err(|err| err.to_string())?; - terminal.hide_cursor().map_err(|err| err.to_string())?; - - let events = Events::new(); - let state = Arc::new(RwLock::new(State::default())); - Request::call( - self.index_controller.sender(), - IndexRequest::UpdateUrl(self.url.clone()), - ); - start_rpc_thread(self.url.clone(), Arc::clone(&state)); - // App - let mut app = App { - menu_active: true, - tabs: TabsState::new(vec!["Summary", "Recent Blocks", "Peers", "Top Capacity"]), - }; - - // Main loop - loop { - terminal - .draw(|mut f| { - let size = f.size(); - let chunks = Layout::default() - .direction(Direction::Vertical) - .constraints([Constraint::Length(3), Constraint::Min(0)].as_ref()) - .split(size); - let body_chunks = Layout::default() - .direction(Direction::Horizontal) - .constraints([Constraint::Length(17), Constraint::Min(1)].as_ref()) - .split(chunks[1]); - - let banner_context = RenderContext { - block: Block::default().borders(Borders::ALL), - frame: &mut f, - rect: chunks[0], - }; - render_bannar(&state.read(), banner_context); - - let menu_context = RenderContext { - block: Block::default().borders(Borders::ALL), - frame: &mut f, - rect: body_chunks[0], - }; - render_menu(&app, menu_context); - - // Content - let mut content_block = Block::default() - .title(app.tabs.titles[app.tabs.index].trim()) - .borders(Borders::ALL); - if !app.menu_active { - content_block = content_block - .border_style(Style::default().fg(Color::Green)) - .title_style(Style::default().modifier(Modifier::BOLD)); - } - let mut content_context = RenderContext { - block: content_block, - frame: &mut f, - rect: body_chunks[1], - }; - match app.tabs.index { - 0 => render_summary(&state.read(), self.url.as_str(), content_context), - 1 => render_blocks(&state.read(), content_context), - 2 => render_peers(&state.read(), content_context), - 3 => { - let title = format!( - "{} ({})", - app.tabs.titles[app.tabs.index].trim(), - self.index_controller.state().read(), - ); - content_context.block = - Block::default().title(&title).borders(Borders::ALL); - render_top_capacity( - &self.index_controller, - self.index_dir.clone(), - network_type, - &genesis_info, - content_context, - ) - } - _ => {} - } - }) - .map_err(|err| err.to_string())?; - - match events.next().map_err(|err| err.to_string())? { - Event::Input(input) => match input { - Key::Char('q') => { - break; - } - Key::Left | Key::Char('h') => { - app.menu_active = true; - } - Key::Right | Key::Char('l') => { - app.menu_active = false; - } - Key::Down | Key::Char('j') => { - if app.menu_active { - app.tabs.next(); - } - } - Key::Up | Key::Char('k') => { - if app.menu_active { - app.tabs.previous(); - } - } - _ => {} - }, - Event::Tick => {} - } - } - Ok("".to_owned()) - } -} - -struct RenderContext<'a, 'b, B: Backend> { - block: Block<'a>, - frame: &'a mut Frame<'b, B>, - rect: Rect, -} - -fn render_bannar(state: &State, ctx: RenderContext) { - let chain_name = state - .chain - .as_ref() - .map(|info| info.chain.to_string()) - .unwrap_or_else(|| "".to_string()); - let version = state - .local_node - .as_ref() - .map(|info| info.version.to_string()) - .unwrap_or_else(|| "".to_string()); - let texts = [ - Text::raw(" <"), - Text::styled(chain_name, Style::default().fg(Color::Green)), - Text::raw("> "), - Text::styled( - "CKB", - Style::default().fg(Color::Blue).modifier(Modifier::BOLD), - ), - Text::raw(" "), - Text::raw(version), - ]; - Paragraph::new(texts.iter()) - .block(ctx.block) - .alignment(Alignment::Left) - .render(ctx.frame, ctx.rect); -} - -fn render_menu(app: &App, ctx: RenderContext) { - let menu_chunks = Layout::default() - .direction(Direction::Vertical) - .constraints([Constraint::Min(6), Constraint::Length(6)].as_ref()) - .split(ctx.rect); - - // Menu - let mut menu_block = ctx.block.title("Menu"); - let mut highlight_style = Style::default().fg(Color::Black).modifier(Modifier::BOLD); - if app.menu_active { - menu_block = menu_block - .border_style(Style::default().fg(Color::Green)) - .title_style(Style::default().modifier(Modifier::BOLD)); - highlight_style = highlight_style.bg(Color::LightYellow); - } - SelectableList::default() - .block(menu_block) - .items(&app.tabs.fixed_titles()) - .select(Some(app.tabs.index)) - .highlight_style(highlight_style) - .render(ctx.frame, menu_chunks[0]); - - // Menu doc - let docs = vec![ - Text::raw("\n"), - Text::styled("Quit ", Style::default().modifier(Modifier::BOLD)), - Text::raw(": Q"), - Text::raw("\n"), - Text::styled("Help ", Style::default().modifier(Modifier::BOLD)), - Text::raw(": ?"), - Text::raw("\n"), - ]; - Paragraph::new(docs.iter()) - .block(Block::default().title("Help").borders(Borders::ALL)) - .alignment(Alignment::Center) - .render(ctx.frame, menu_chunks[1]); -} - -fn render_summary(state: &State, url: &str, ctx: RenderContext) { - let SummaryInfo { - chain, - tip, - tx_pool, - peer_count, - } = state.summary(); - let mut length: u16 = 0; - let mut lines = vec![]; - let mut push_pair = |name: &str, content_opt: Option, style_opt: Option