diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e3ba2e..034833e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,6 +29,7 @@ jobs: runs-on: ubuntu-latest permissions: # Write access to push changes to pages contents: write + pull-requests: write steps: - uses: actions/checkout@v4 - name: Install latest Rust @@ -46,12 +47,12 @@ jobs: uses: hrishikesh-kadam/setup-lcov@v1 - name: Report code coverage - uses: zgosalvez/github-actions-report-lcov@v3 + uses: zgosalvez/github-actions-report-lcov@v4 with: coverage-files: lcov.info minimum-coverage: 0 # for now we are not enforcing any minimum coverage. artifact-name: code-coverage-report - github-token: ${{ secrets.REPO_TOKEN }} + github-token: ${{ secrets.GITHUB_TOKEN }} update-comment: true lint-toml-files: diff --git a/Cargo.lock b/Cargo.lock index b95abff..14f1e69 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -47,7 +47,7 @@ dependencies = [ "cfg-if", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -67,9 +67,9 @@ checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-tzdata" @@ -87,19 +87,19 @@ dependencies = [ ] [[package]] -name = "ansi_term" -version = "0.12.1" +name = "ansiterm" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +checksum = "4ab587f5395da16dd2e6939adf53dede583221b320cadfb94e02b5b7b9bf24cc" dependencies = [ "winapi", ] [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -112,53 +112,70 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "assert-json-diff" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" +dependencies = [ + "serde", + "serde_json", +] [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -170,6 +187,23 @@ dependencies = [ "critical-section", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "auto_impl" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e12882f59de5360c748c4cbf569a042d5fb0eb515f7bea9c1f470b47f6ffbd73" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "autocfg" version = "1.4.0" @@ -229,16 +263,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" [[package]] -name = "bitflags" -version = "1.3.2" +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" dependencies = [ "serde", ] @@ -276,9 +320,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byteorder" @@ -288,15 +332,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cc" -version = "1.1.25" +version = "1.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d9e0b4957f635b8d3da819d0db5603620467ecf1f692d22a8c2717ce27e6d8" +checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a" dependencies = [ "shlex", ] @@ -315,9 +359,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ "android-tzdata", "iana-time-zone", @@ -325,7 +369,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -340,9 +384,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.19" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7be5744db7978a28d9df86a214130d106a89ce49644cbc4e3f0c22c3fba30615" +checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" dependencies = [ "clap_builder", "clap_derive", @@ -350,9 +394,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.19" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5fbc17d3ef8278f55b282b2a2e75ae6f6c7d4bb70ed3d0382375104bfafdb4b" +checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" dependencies = [ "anstream", "anstyle", @@ -362,21 +406,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "cobs" @@ -397,7 +441,7 @@ dependencies = [ "k256", "serde", "sha2", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] @@ -411,9 +455,9 @@ dependencies = [ "hmac", "once_cell", "pbkdf2 0.12.2", - "rand", + "rand 0.8.5", "sha2", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] @@ -433,14 +477,14 @@ dependencies = [ "serde_derive", "sha2", "sha3", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "const-oid" @@ -473,7 +517,7 @@ checksum = "2eac901828f88a5241ee0600950ab981148a18f2f756900ffba1b125ca6a3ef9" dependencies = [ "cookie", "document-features", - "idna 1.0.3", + "idna", "log", "publicsuffix", "serde", @@ -501,24 +545,24 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "critical-section" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64009896348fc5af4222e9cf7d7d82a95a256c634ebcf61c53e4ea461422242" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-bigint" @@ -527,7 +571,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -564,6 +608,7 @@ dependencies = [ "fiat-crypto", "rustc_version", "subtle", + "zeroize", ] [[package]] @@ -574,14 +619,14 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "cynic" -version = "3.9.1" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17334136b717249d58b05739a825e2c83f53b0beee0e1f714c332cf48eee7023" +checksum = "c99c59968c8aa7f90d84240ab6ded4d3864125ce36b5b044554542cebc974946" dependencies = [ "cynic-proc-macros", "ref-cast", @@ -589,14 +634,14 @@ dependencies = [ "serde", "serde_json", "static_assertions", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] name = "cynic-codegen" -version = "3.9.1" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa0d13b24fe724349a8363f04183d4ee0dc2ab5e40c574f8f8ee2edbc0d344d" +checksum = "332695dddff7f260dfda1e97502b6440d443816f576994548b7751494991d2e3" dependencies = [ "cynic-parser", "darling", @@ -605,31 +650,31 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.96", - "thiserror 1.0.64", + "syn 2.0.100", + "thiserror 1.0.69", ] [[package]] name = "cynic-parser" -version = "0.8.7" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86a21da88ae46f2be6a622880a72f968d05c50b5a797e525332d0c988f693f70" +checksum = "cbb0f21f2f8d3134c2e887a16564c165694231f48b6ae2769193299081ecf662" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.8.0", "lalrpop-util", "logos", ] [[package]] name = "cynic-proc-macros" -version = "3.9.1" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046126da74af834da9b8b6e9c2a8e56bf85bc4f2b871550586008237b64ff6bb" +checksum = "a7880789c425a73aff3ba286b2a9c794f330d4770769a42a1493d6175e4606c1" dependencies = [ "cynic-codegen", "darling", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -653,7 +698,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -664,9 +709,27 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.96", + "syn 2.0.100", ] +[[package]] +name = "deadpool" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb84100978c1c7b37f09ed3ce3e5f843af02c2a2c431bae5b19230dad2c1b490" +dependencies = [ + "async-trait", + "deadpool-runtime", + "num_cpus", + "tokio", +] + +[[package]] +name = "deadpool-runtime" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b" + [[package]] name = "der" version = "0.7.9" @@ -674,14 +737,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", + "pem-rfc7468", "zeroize", ] [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "28cfac68e08048ae1883171632c2aef3ebc555621ae56fbccce1cbf22dd7f058" dependencies = [ "powerfmt", "serde", @@ -700,15 +764,15 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.18" +version = "0.99.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "3da29a38df43d6f156149c9b43ded5e018ddff2a855cf2cfd62e8cd7d079c69f" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -728,7 +792,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", "unicode-xid", ] @@ -752,23 +816,23 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "document-features" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" dependencies = [ "litrs", ] [[package]] name = "dtoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" +checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" [[package]] name = "ecdsa" @@ -790,6 +854,8 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ + "pkcs8", + "serde", "signature", ] @@ -801,8 +867,10 @@ checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ "curve25519-dalek", "ed25519", + "serde", "sha2", "subtle", + "zeroize", ] [[package]] @@ -814,14 +882,14 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elliptic-curve" @@ -835,8 +903,9 @@ dependencies = [ "ff", "generic-array", "group", + "pem-rfc7468", "pkcs8", - "rand_core", + "rand_core 0.6.4", "sec1", "subtle", "zeroize", @@ -871,7 +940,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -891,23 +960,23 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -922,13 +991,13 @@ dependencies = [ "hex", "hmac", "pbkdf2 0.11.0", - "rand", + "rand 0.8.5", "scrypt", "serde", "serde_json", "sha2", "sha3", - "thiserror 1.0.64", + "thiserror 1.0.69", "uuid", ] @@ -945,28 +1014,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43ddc25e1ad2cc0106d5e2d967397b4fb2068a66677ee9b0eea4600e5cfe8fb4" dependencies = [ "futures", - "hyper 0.14.30", + "hyper 0.14.32", "hyper-rustls 0.24.2", "hyper-timeout", "log", "pin-project", - "rand", + "rand 0.8.5", "tokio", ] [[package]] name = "fastrand" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -993,38 +1062,36 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "forc-tracing" -version = "0.47.0" +version = "0.67.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9504fde5c9179bf6bf6f4ca6902ad1733aa64ad5679946b72d648b133d24d24" +checksum = "c81ec9672413a0cadedb2791aa6208c415523f7f9a430bc8516da00587439ce6" dependencies = [ - "ansi_term", + "ansiterm", "tracing", "tracing-subscriber", ] [[package]] name = "forc-wallet" -version = "0.12.0" +version = "0.13.0" dependencies = [ "anyhow", "clap", "eth-keystore", "forc-tracing", - "fuel-crypto", - "fuel-types", + "fuel-core-client 0.42.0", "fuels", - "fuels-core", "futures", "hex", "home", - "rand", + "rand 0.8.5", "rpassword", "serde_json", "tempfile", "termion", - "tiny-bip39", "tokio", "url", + "wiremock", ] [[package]] @@ -1049,36 +1116,48 @@ dependencies = [ "regex", "serde", "serde_json", - "syn 2.0.96", - "thiserror 1.0.64", + "syn 2.0.100", + "thiserror 1.0.69", ] [[package]] name = "fuel-asm" -version = "0.59.1" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "885617a606218680114122f4e1107ed5c9424e42dec05de84843e4a3a99e2cd7" +checksum = "fd48cb44034f02a922df95889a888948e62258edb1910bcf7fe79ee5c92b412f" dependencies = [ - "bitflags 2.6.0", - "fuel-types", + "bitflags", + "fuel-types 0.59.2", + "serde", + "strum 0.24.1", +] + +[[package]] +name = "fuel-asm" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4702e63db53a308a4bb57ba21e8f7dcb08f1146a9b34fce06d964306ed3e1497" +dependencies = [ + "bitflags", + "fuel-types 0.60.0", "serde", "strum 0.24.1", ] [[package]] name = "fuel-core-chain-config" -version = "0.41.0" +version = "0.41.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561dab934413f1d3b56b1c6023e1f828deb5d969284fa78ec8940dd236b5ecc9" +checksum = "7170a8f5362167924ae79f943548be2e81816118c038513d16bea61297716eff" dependencies = [ "anyhow", "bech32", "derivative", "fuel-core-storage", - "fuel-core-types", + "fuel-core-types 0.41.9", "itertools 0.12.1", "postcard", - "rand", + "rand 0.8.5", "serde", "serde_json", "serde_with", @@ -1087,16 +1166,41 @@ dependencies = [ [[package]] name = "fuel-core-client" -version = "0.41.0" +version = "0.41.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c672a492e0fa18eeb2fb8f8291af53b2609ce03889a384467cd8a5f0c48d126" +dependencies = [ + "anyhow", + "base64 0.22.1", + "cynic", + "derive_more 0.99.19", + "eventsource-client", + "fuel-core-types 0.41.9", + "futures", + "hex", + "hyper-rustls 0.24.2", + "itertools 0.12.1", + "reqwest", + "schemafy_lib", + "serde", + "serde_json", + "tai64", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "fuel-core-client" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "737fcbfa02681525087f85411eb41b2d1a9b382d13ccb87dcb28097efaff1352" +checksum = "ed1d84902418db27d5576721be9c50df9592649dabb6f9e878d388e4cb9ef940" dependencies = [ "anyhow", "base64 0.22.1", "cynic", - "derive_more 0.99.18", + "derive_more 0.99.19", "eventsource-client", - "fuel-core-types", + "fuel-core-types 0.42.0", "futures", "hex", "hyper-rustls 0.24.2", @@ -1106,15 +1210,15 @@ dependencies = [ "serde", "serde_json", "tai64", - "thiserror 1.0.64", + "thiserror 1.0.69", "tracing", ] [[package]] name = "fuel-core-metrics" -version = "0.41.0" +version = "0.41.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaac31027b604babadec94cb3f601ac076610c9ac6eb0b798d911314792886c0" +checksum = "af9c9eb1719d4bb9a9f0b936e5aa64f64a28d5bf59a14c9ab3b417e2b76e492e" dependencies = [ "once_cell", "parking_lot", @@ -1128,16 +1232,16 @@ dependencies = [ [[package]] name = "fuel-core-poa" -version = "0.41.0" +version = "0.41.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d26d7fc9d370871c6312a2901d831648f2eca0740f69e353f421fadd956d096" +checksum = "58eed4b2f24063cfd82dbc00da11077814addaab209b1b5a9b6cd906b0632539" dependencies = [ "anyhow", "async-trait", "fuel-core-chain-config", "fuel-core-services", "fuel-core-storage", - "fuel-core-types", + "fuel-core-types 0.41.9", "serde", "serde_json", "tokio", @@ -1147,9 +1251,9 @@ dependencies = [ [[package]] name = "fuel-core-services" -version = "0.41.0" +version = "0.41.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa93d053b71ccaea58b677eac43aaa5ca9ac68a50cb23fb193bfc0f765d0fa66" +checksum = "90065c171c71330b3562a375897304759ab65430cedcd0c821ff3009f5659ac4" dependencies = [ "anyhow", "async-trait", @@ -1163,15 +1267,15 @@ dependencies = [ [[package]] name = "fuel-core-storage" -version = "0.41.0" +version = "0.41.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1092d1940760240b1888123c0b8b83d3f3c47483de5b8097499a7a86a67abf2" +checksum = "08baa0f1f5aebb6d72f958a41a68bc26521e8df4743c414a4f9e3ddf5708e620" dependencies = [ "anyhow", - "derive_more 0.99.18", + "derive_more 0.99.19", "enum-iterator", - "fuel-core-types", - "fuel-vm", + "fuel-core-types 0.41.9", + "fuel-vm 0.59.2", "impl-tools", "itertools 0.12.1", "num_enum", @@ -1185,17 +1289,37 @@ dependencies = [ [[package]] name = "fuel-core-types" -version = "0.41.0" +version = "0.41.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd81c11015a730920c91aee0dec360f372895324a81d3db06be3ee2b64da29ce" +checksum = "da3b7e4e334dad1dc5f7eaed63186e2ba8639faa1a459633893063501203b14e" dependencies = [ "anyhow", "bs58", "derivative", - "derive_more 0.99.18", - "fuel-vm", + "derive_more 0.99.19", + "fuel-vm 0.59.2", + "k256", + "rand 0.8.5", + "secrecy", + "serde", + "tai64", + "zeroize", +] + +[[package]] +name = "fuel-core-types" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41490f79b4f2679a4ae30f05593b59480da812a6b88b0cc4bb2c5ce3270af4b6" +dependencies = [ + "anyhow", + "bs58", + "derive_more 0.99.19", + "ed25519", + "ed25519-dalek", + "educe", + "fuel-vm 0.60.0", "k256", - "rand", "secrecy", "serde", "tai64", @@ -1204,20 +1328,41 @@ dependencies = [ [[package]] name = "fuel-crypto" -version = "0.59.1" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5643d6c281369825854bbc96d5d1648fe49ddcc3443961c633270f65e6c4b6" +checksum = "cefb201fbf4753e696c21bea9e5702a11c210ed8ec2830386a83d85109362055" dependencies = [ "coins-bip32", "coins-bip39", "ecdsa", "ed25519-dalek", - "fuel-types", + "fuel-types 0.59.2", "k256", "lazy_static", "p256", - "rand", - "secp256k1", + "rand 0.8.5", + "secp256k1 0.29.1", + "serde", + "sha2", + "zeroize", +] + +[[package]] +name = "fuel-crypto" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b478d21160fa528667ca477b82e2426efa5ac226a7b6fce67987d62f1b041cac" +dependencies = [ + "base64ct", + "coins-bip32", + "coins-bip39", + "ecdsa", + "ed25519-dalek", + "fuel-types 0.60.0", + "k256", + "p256", + "rand 0.8.5", + "secp256k1 0.30.0", "serde", "sha2", "zeroize", @@ -1225,25 +1370,52 @@ dependencies = [ [[package]] name = "fuel-derive" -version = "0.59.1" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8703ee10001e6a52ad9a0d8411ca5a92098de978ccfbdddd0ba185f3a7405b4c" +checksum = "bb5b7bb2277f37f4b3d36b4c49257f1f5804cf7d8c0224f417115186d06ee249" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", "synstructure", ] +[[package]] +name = "fuel-derive" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e0b24c724f47a73f021dae315e5d2b5aec03ba6b9ef9d66377106a20a5fdcde" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "synstructure", +] + +[[package]] +name = "fuel-merkle" +version = "0.59.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e591b5056b011c943c5a40acda4ce568bec745111a15aed986f1e9bf2c0bded" +dependencies = [ + "derive_more 0.99.19", + "digest", + "fuel-storage 0.59.2", + "hashbrown 0.13.2", + "hex", + "serde", + "sha2", +] + [[package]] name = "fuel-merkle" -version = "0.59.1" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7446f9cc1885ede3af88cf567931f96fd1feda3146e9052c09b1b260fbd56173" +checksum = "7d3a023169ea7231b6bd107c513b8b9a7ff849df5ca023c120b348da234ec20a" dependencies = [ - "derive_more 0.99.18", + "derive_more 0.99.19", "digest", - "fuel-storage", + "fuel-storage 0.60.0", "hashbrown 0.13.2", "hex", "serde", @@ -1252,27 +1424,55 @@ dependencies = [ [[package]] name = "fuel-storage" -version = "0.59.1" +version = "0.59.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ada067d4aaff1acf1175a00edb1c3efbeccf7e2fb414270a2d29eedb2f207c97" + +[[package]] +name = "fuel-storage" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01f810b544f0930fc68e1311ea078fad9af6912d5215a9ae9febda67206e34e5" +checksum = "8425dc32f86e2d6082126ee34998a9556306c6a79d95b85a62a05b439ff9bb19" [[package]] name = "fuel-tx" -version = "0.59.1" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806498d953bc989995425f1bb7c17890f5538a3664c6ec3b5d8a77c63d617421" +checksum = "5374f7caf8a447f3a67ea1ec381e60133ea54b6ea1544e51214446c6b44f5b39" dependencies = [ - "bitflags 2.6.0", + "bitflags", "derive_more 1.0.0", "educe", - "fuel-asm", - "fuel-crypto", - "fuel-merkle", - "fuel-types", + "fuel-asm 0.59.2", + "fuel-crypto 0.59.2", + "fuel-merkle 0.59.2", + "fuel-types 0.59.2", "hashbrown 0.14.5", "itertools 0.10.5", "postcard", - "rand", + "rand 0.8.5", + "serde", + "strum 0.24.1", + "strum_macros 0.24.3", +] + +[[package]] +name = "fuel-tx" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db32cb7845a7462b02a8406303bfc5387589387418b5f4817a01bd5d3d16b287" +dependencies = [ + "bitflags", + "derive_more 1.0.0", + "educe", + "fuel-asm 0.60.0", + "fuel-crypto 0.60.0", + "fuel-merkle 0.60.0", + "fuel-types 0.60.0", + "hashbrown 0.14.5", + "itertools 0.10.5", + "postcard", + "rand 0.8.5", "serde", "strum 0.24.1", "strum_macros 0.24.3", @@ -1280,42 +1480,53 @@ dependencies = [ [[package]] name = "fuel-types" -version = "0.59.1" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0d46d41db59c131195e6d842cc1e50f0b8adeadf2a840519e8b57b78e57a0bf" +checksum = "db2cbad4962ba02b683f33686eb79c3002dde3791f3c71a4465d46601caba8b6" dependencies = [ - "fuel-derive", + "fuel-derive 0.59.2", + "hex", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "fuel-types" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284f4e00bb184c4d24e7fe12f5a698612c384f2b9354eba4478bb022b4fb0a33" +dependencies = [ + "fuel-derive 0.60.0", "hex", - "rand", "serde", ] [[package]] name = "fuel-vm" -version = "0.59.1" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bcf74f636cc01a1ab035458628f925945bb4df9da653058c6ab2b26fa25f087" +checksum = "fbc85fe82b07c8ec2a84bf897d48184c0ba70894dd80366c988564f04b9ec64a" dependencies = [ "anyhow", "async-trait", "backtrace", - "bitflags 2.6.0", - "derive_more 0.99.18", + "bitflags", + "derive_more 0.99.19", "educe", "ethnum", - "fuel-asm", - "fuel-crypto", - "fuel-merkle", - "fuel-storage", - "fuel-tx", - "fuel-types", + "fuel-asm 0.59.2", + "fuel-crypto 0.59.2", + "fuel-merkle 0.59.2", + "fuel-storage 0.59.2", + "fuel-tx 0.59.2", + "fuel-types 0.59.2", "hashbrown 0.14.5", "itertools 0.10.5", "libm", "paste", "percent-encoding", "primitive-types", - "rand", + "rand 0.8.5", "serde", "serde_with", "sha3", @@ -1325,15 +1536,47 @@ dependencies = [ "tai64", ] +[[package]] +name = "fuel-vm" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a07bfdb498244dc1e82de4e396a6c1f4183fd05355454e4847a727c9b5fb3331" +dependencies = [ + "async-trait", + "backtrace", + "bitflags", + "derive_more 0.99.19", + "educe", + "ethnum", + "fuel-asm 0.60.0", + "fuel-crypto 0.60.0", + "fuel-merkle 0.60.0", + "fuel-storage 0.60.0", + "fuel-tx 0.60.0", + "fuel-types 0.60.0", + "hashbrown 0.14.5", + "itertools 0.10.5", + "libm", + "paste", + "percent-encoding", + "primitive-types", + "serde", + "serde_with", + "sha3", + "static_assertions", + "strum 0.24.1", + "substrate-bn", +] + [[package]] name = "fuels" -version = "0.70.0" +version = "0.71.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953825fefd5141d586051a4639181cfdc1a7f6b9f063759992f3ac0dec4d168c" +checksum = "7a895dd24adef0a5b0d4ed62a4f356301cc43872a1d4b41e201aa84b21f0a361" dependencies = [ - "fuel-core-client", - "fuel-crypto", - "fuel-tx", + "fuel-core-client 0.41.9", + "fuel-crypto 0.59.2", + "fuel-tx 0.59.2", "fuels-accounts", "fuels-core", "fuels-macros", @@ -1343,35 +1586,34 @@ dependencies = [ [[package]] name = "fuels-accounts" -version = "0.70.0" +version = "0.71.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b189b85cd777c7453268f94da63fdea1efcadf02913568ab1c0d9d2c19a7a52d" +checksum = "b90ff98f435a14c89ccc2289d00a8eba997db0a6363beb1260a570e5f82e7c05" dependencies = [ "async-trait", "chrono", "cynic", - "elliptic-curve", - "eth-keystore", - "fuel-core-client", - "fuel-core-types", - "fuel-crypto", - "fuel-tx", - "fuel-types", + "fuel-core-client 0.41.9", + "fuel-core-types 0.41.9", + "fuel-crypto 0.59.2", + "fuel-tx 0.59.2", + "fuel-types 0.59.2", "fuels-core", "itertools 0.12.1", - "rand", + "k256", + "rand 0.8.5", "semver", "tai64", - "thiserror 1.0.64", + "thiserror 1.0.69", "tokio", "zeroize", ] [[package]] name = "fuels-code-gen" -version = "0.70.0" +version = "0.71.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834cea3765d3172148285a7f0e5b3e8480c95dddcb70687d6a1545d27e8cba1" +checksum = "d6066e7b16b7fdad682b0b40d36050d2d9c22e8542fb5314d7377f82933893a5" dependencies = [ "Inflector", "fuel-abi-types", @@ -1380,89 +1622,91 @@ dependencies = [ "quote", "regex", "serde_json", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "fuels-core" -version = "0.70.0" +version = "0.71.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ecd1f67da0380e46cc72ec7b00f1323fdee5113b9b0b8d9de3c3bdf2ef785bc" +checksum = "3df160d6e944601ecf4d491a6a50f9e3bf577a3b1b663973237004a29006ca0a" dependencies = [ "async-trait", + "auto_impl", "bech32", "chrono", "fuel-abi-types", - "fuel-asm", + "fuel-asm 0.59.2", "fuel-core-chain-config", - "fuel-core-client", - "fuel-core-types", - "fuel-crypto", - "fuel-tx", - "fuel-types", - "fuel-vm", + "fuel-core-client 0.41.9", + "fuel-core-types 0.41.9", + "fuel-crypto 0.59.2", + "fuel-tx 0.59.2", + "fuel-types 0.59.2", + "fuel-vm 0.59.2", "fuels-macros", "hex", "itertools 0.12.1", "postcard", + "rand 0.8.5", "serde", "serde_json", "sha2", - "thiserror 1.0.64", + "thiserror 1.0.69", "uint", ] [[package]] name = "fuels-macros" -version = "0.70.0" +version = "0.71.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604a27c929d6557289aab0e76ad30025d31d9ea8a567310880129e1a69e114c5" +checksum = "e73afb530bb6af53d74f5eda8a7833d9d91914bfc7906fa14d47a6b7931dd50c" dependencies = [ "fuels-code-gen", "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "fuels-programs" -version = "0.70.0" +version = "0.71.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1ff7d91cd7c396b86331c6e76c489427a249c7d69dd9d3934542e1ca31ece46" +checksum = "2d33bf96e80e546c39833db300d960433316107d0d6b5cadb21c0a775da4e763" dependencies = [ "async-trait", "fuel-abi-types", - "fuel-asm", - "fuel-tx", - "fuel-types", + "fuel-asm 0.59.2", + "fuel-tx 0.59.2", + "fuel-types 0.59.2", "fuels-accounts", "fuels-core", "itertools 0.12.1", - "rand", + "rand 0.8.5", "serde_json", "tokio", ] [[package]] name = "fuels-test-helpers" -version = "0.70.0" +version = "0.71.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "814ed63e1b9266cb7a074e882f638ffd2b8c42a95c13ff2ddda57e3d729d8acf" +checksum = "71ecca10907654d0854520f9a330cad90be91041022171dd92ff58a9925c48b3" dependencies = [ "fuel-core-chain-config", - "fuel-core-client", + "fuel-core-client 0.41.9", "fuel-core-poa", "fuel-core-services", - "fuel-core-types", - "fuel-crypto", - "fuel-tx", - "fuel-types", + "fuel-core-types 0.41.9", + "fuel-crypto 0.59.2", + "fuel-tx 0.59.2", + "fuel-types 0.59.2", "fuels-accounts", "fuels-core", "futures", "portpicker", - "rand", + "rand 0.8.5", "tempfile", "tokio", "which", @@ -1530,7 +1774,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -1583,7 +1827,21 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", "wasm-bindgen", ] @@ -1600,7 +1858,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1616,7 +1874,26 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.6.0", + "indexmap 2.8.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap 2.8.0", "slab", "tokio", "tokio-util", @@ -1660,9 +1937,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "heapless" @@ -1705,6 +1982,15 @@ dependencies = [ "serde", ] +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] + [[package]] name = "hmac" version = "0.12.1" @@ -1716,11 +2002,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1736,9 +2022,9 @@ dependencies = [ [[package]] name = "http" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -1763,27 +2049,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.2.0", + "http 1.3.1", ] [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", - "http 1.2.0", + "futures-core", + "http 1.3.1", "http-body 1.0.1", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -1793,15 +2079,15 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "httparse", @@ -1817,16 +2103,18 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.2.0", + "h2 0.4.8", + "http 1.3.1", "http-body 1.0.1", "httparse", + "httpdate", "itoa", "pin-project-lite", "smallvec", @@ -1842,7 +2130,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.32", "log", "rustls 0.21.12", "rustls-native-certs", @@ -1858,15 +2146,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", - "http 1.2.0", - "hyper 1.5.2", + "http 1.3.1", + "hyper 1.6.0", "hyper-util", - "rustls 0.23.21", + "rustls 0.23.25", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.1", + "tokio-rustls 0.26.2", "tower-service", - "webpki-roots 0.26.7", + "webpki-roots 0.26.8", ] [[package]] @@ -1875,7 +2163,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.30", + "hyper 0.14.32", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -1890,9 +2178,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.2.0", + "http 1.3.1", "http-body 1.0.1", - "hyper 1.5.2", + "hyper 1.6.0", "pin-project-lite", "socket2", "tokio", @@ -1902,14 +2190,15 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "b2fd658b06e56721792c5df4475705b6cda790e9298d19d2f8af083457bcd127" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", "windows-core", ] @@ -2038,7 +2327,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -2047,26 +2336,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -[[package]] -name = "idna" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "idna" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "idna" version = "1.0.3" @@ -2097,7 +2366,7 @@ dependencies = [ "autocfg", "impl-tools-lib", "proc-macro-error2", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -2109,7 +2378,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -2125,29 +2394,29 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.2", "serde", ] [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array", ] [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is_terminal_polyfill" @@ -2175,16 +2444,17 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -2231,38 +2501,44 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.159" +version = "0.2.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libredox" -version = "0.0.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags", "libc", - "redox_syscall 0.4.1", + "redox_syscall", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413" [[package]] name = "litemap" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "litrs" @@ -2282,9 +2558,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "logos" @@ -2307,7 +2583,7 @@ dependencies = [ "proc-macro2", "quote", "regex-syntax 0.8.5", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -2342,22 +2618,21 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -2386,6 +2661,16 @@ dependencies = [ "autocfg", ] +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + [[package]] name = "num_enum" version = "0.7.3" @@ -2404,35 +2689,35 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "numtoa" -version = "0.1.0" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" +checksum = "6aa2c4e539b869820a2b82e1aef6ff40aa85e65decdd5185e83fb4b1249cd00f" [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "ouroboros" @@ -2455,7 +2740,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -2494,7 +2779,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.7", + "redox_syscall", "smallvec", "windows-targets 0.52.6", ] @@ -2524,6 +2809,15 @@ dependencies = [ "hmac", ] +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -2532,29 +2826,29 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -2578,14 +2872,14 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9" dependencies = [ - "rand", + "rand 0.8.5", ] [[package]] name = "postcard" -version = "1.0.10" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7f0a8d620d71c457dd1d47df76bb18960378da56af4527aaa10f515eee732e" +checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" dependencies = [ "cobs", "embedded-io 0.4.0", @@ -2602,11 +2896,11 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy", + "zerocopy 0.8.24", ] [[package]] @@ -2630,9 +2924,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ "toml_edit", ] @@ -2660,9 +2954,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] @@ -2675,7 +2969,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", "version_check", "yansi", ] @@ -2700,7 +2994,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -2711,47 +3005,49 @@ checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" [[package]] name = "publicsuffix" -version = "2.2.3" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96a8c1bda5ae1af7f99a2962e49df150414a43d62404644d98dd5c3a93d07457" +checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf" dependencies = [ - "idna 0.3.0", + "idna", "psl-types", ] [[package]] name = "quinn" -version = "0.11.6" +version = "0.11.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +checksum = "c3bd15a6f2967aef83887dcb9fec0014580467e33720d073560cf015a5683012" dependencies = [ "bytes", + "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.0", - "rustls 0.23.21", + "rustc-hash", + "rustls 0.23.25", "socket2", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", + "web-time", ] [[package]] name = "quinn-proto" -version = "0.11.9" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +checksum = "b820744eb4dc9b57a3398183639c511b5a26d2ed702cedd3febaa1393caa22cc" dependencies = [ "bytes", - "getrandom", - "rand", + "getrandom 0.3.2", + "rand 0.9.0", "ring", - "rustc-hash 2.1.0", - "rustls 0.23.21", + "rustc-hash", + "rustls 0.23.25", "rustls-pki-types", "slab", - "thiserror 2.0.11", + "thiserror 2.0.12", "tinyvec", "tracing", "web-time", @@ -2759,9 +3055,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" +checksum = "e46f3055866785f6b92bc6164b76be02ca8f2eb4b002c0354b28cf4c119e5944" dependencies = [ "cfg_aliases", "libc", @@ -2773,13 +3069,19 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "radium" version = "0.7.0" @@ -2793,8 +3095,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "zerocopy 0.8.24", ] [[package]] @@ -2804,7 +3117,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "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.3", ] [[package]] @@ -2813,25 +3136,25 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] -name = "redox_syscall" -version = "0.4.1" +name = "rand_core" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "bitflags 1.3.2", + "getrandom 0.3.2", ] [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" dependencies = [ - "bitflags 2.6.0", + "bitflags", ] [[package]] @@ -2842,33 +3165,33 @@ checksum = "20145670ba436b55d91fc92d25e71160fbfbdd57831631c8d7d36377a476f1cb" [[package]] name = "ref-cast" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -2883,9 +3206,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -2906,9 +3229,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.12" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" +checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" dependencies = [ "base64 0.22.1", "bytes", @@ -2916,10 +3239,10 @@ dependencies = [ "cookie_store", "futures-core", "futures-util", - "http 1.2.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-rustls 0.27.5", "hyper-util", "ipnet", @@ -2930,7 +3253,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.21", + "rustls 0.23.25", "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", @@ -2938,14 +3261,14 @@ dependencies = [ "serde_urlencoded", "sync_wrapper", "tokio", - "tokio-rustls 0.26.1", + "tokio-rustls 0.26.2", "tower", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.26.7", + "webpki-roots 0.26.8", "windows-registry", ] @@ -2961,15 +3284,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] @@ -3012,15 +3334,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc-hash" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc-hex" @@ -3039,15 +3355,28 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.6.0", + "bitflags", "errno", "libc", - "linux-raw-sys", - "windows-sys 0.52.0", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e56a18552996ac8d29ecc3b190b4fdbb2d91ca4ec396de7bbffaf43f3d637e96" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.9.3", + "windows-sys 0.59.0", ] [[package]] @@ -3064,14 +3393,14 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.21" +version = "0.23.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f287924602bf649d949c63dc8ac8b235fa5387d394020705b80c4eb597ce5b8" +checksum = "822ee9188ac4ec04a2f0531e55d035fb2de73f18b41a63c70c2712503b6fb13c" dependencies = [ "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.102.8", + "rustls-webpki 0.103.0", "subtle", "zeroize", ] @@ -3108,9 +3437,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" dependencies = [ "web-time", ] @@ -3127,9 +3456,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "0aa4eeac2588ffff23e9d7a7e9b3f971c5fb5b7ebc9452745e0c232c64f83b2f" dependencies = [ "ring", "rustls-pki-types", @@ -3138,15 +3467,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "salsa20" @@ -3159,9 +3488,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ "windows-sys 0.59.0", ] @@ -3240,7 +3569,18 @@ version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" dependencies = [ - "rand", + "rand 0.8.5", + "secp256k1-sys", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes", + "rand 0.8.5", "secp256k1-sys", ] @@ -3268,7 +3608,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -3277,9 +3617,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -3287,35 +3627,35 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -3337,15 +3677,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.11.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.6.0", + "indexmap 2.8.0", "serde", "serde_derive", "serde_json", @@ -3355,14 +3695,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.11.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -3417,7 +3757,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -3431,15 +3771,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", @@ -3526,7 +3866,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -3538,7 +3878,7 @@ dependencies = [ "byteorder", "crunchy", "lazy_static", - "rand", + "rand 0.8.5", "rustc-hex", ] @@ -3561,9 +3901,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.96" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", @@ -3587,7 +3927,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -3607,22 +3947,22 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.13.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.2", "once_cell", - "rustix", + "rustix 1.0.3", "windows-sys 0.59.0", ] [[package]] name = "termion" -version = "2.0.3" +version = "4.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4648c7def6f2043b2568617b9f9b75eae88ca185dbc1f1fda30e95a85d49d7d" +checksum = "6f359c854fbecc1ea65bc3683f1dcb2dce78b174a1ca7fda37acd1fff81df6ff" dependencies = [ "libc", "libredox", @@ -3632,42 +3972,42 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.64", + "thiserror-impl 1.0.69", ] [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -3682,9 +4022,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", @@ -3697,38 +4037,20 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", ] -[[package]] -name = "tiny-bip39" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a6e875ccbd782b2d91350816d4ab27da3c9424c381f9ba07ed3e2e1ae680d90" -dependencies = [ - "anyhow", - "once_cell", - "pbkdf2 0.12.2", - "rand", - "rustc-hash 1.1.0", - "sha2", - "thiserror 1.0.64", - "unicode-normalization", - "wasm-bindgen", - "zeroize", -] - [[package]] name = "tinystr" version = "0.7.6" @@ -3741,9 +4063,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -3756,9 +4078,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.44.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" dependencies = [ "backtrace", "bytes", @@ -3784,13 +4106,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -3805,19 +4127,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ - "rustls 0.23.21", + "rustls 0.23.25", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -3826,9 +4148,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" dependencies = [ "bytes", "futures-core", @@ -3845,11 +4167,11 @@ checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.8.0", "toml_datetime", "winnow", ] @@ -3883,9 +4205,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -3894,20 +4216,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -3926,9 +4248,9 @@ dependencies = [ [[package]] name = "tracing-serde" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" dependencies = [ "serde", "tracing-core", @@ -3936,9 +4258,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -3963,9 +4285,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "uint" @@ -3979,26 +4301,11 @@ dependencies = [ "static_assertions", ] -[[package]] -name = "unicode-bidi" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" - [[package]] name = "unicode-ident" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "unicode-normalization" -version = "0.1.24" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-xid" @@ -4014,12 +4321,12 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", - "idna 0.5.0", + "idna", "percent-encoding", ] @@ -4047,15 +4354,15 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom", + "getrandom 0.2.15", "serde", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "version_check" @@ -4078,49 +4385,59 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4128,28 +4445,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -4173,9 +4493,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.7" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" dependencies = [ "rustls-pki-types", ] @@ -4188,7 +4508,7 @@ checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", - "rustix", + "rustix 0.38.44", "winsafe", ] @@ -4223,34 +4543,39 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + [[package]] name = "windows-registry" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ "windows-result", "windows-strings", - "windows-targets 0.52.6", + "windows-targets 0.53.0", ] [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" dependencies = [ - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" dependencies = [ - "windows-result", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -4304,13 +4629,29 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -4323,6 +4664,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -4335,6 +4682,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -4347,12 +4700,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -4365,6 +4730,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -4377,6 +4748,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -4389,6 +4766,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -4401,11 +4784,17 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36" dependencies = [ "memchr", ] @@ -4416,6 +4805,39 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" +[[package]] +name = "wiremock" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "101681b74cd87b5899e87bcf5a64e83334dd313fcd3053ea72e6dba18928e301" +dependencies = [ + "assert-json-diff", + "async-trait", + "base64 0.22.1", + "deadpool", + "futures", + "http 1.3.1", + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "log", + "once_cell", + "regex", + "serde", + "serde_json", + "tokio", + "url", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + [[package]] name = "write16" version = "1.0.0" @@ -4463,7 +4885,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", "synstructure", ] @@ -4473,8 +4895,16 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +dependencies = [ + "zerocopy-derive 0.8.24", ] [[package]] @@ -4485,27 +4915,38 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", "synstructure", ] @@ -4526,7 +4967,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] [[package]] @@ -4548,5 +4989,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.100", ] diff --git a/Cargo.toml b/Cargo.toml index be7c9a2..c2d2432 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,36 +1,30 @@ [package] name = "forc-wallet" -version = "0.12.0" +version = "0.13.0" edition = "2021" homepage = "https://fuel.network/" license = "Apache-2.0" repository = "https://github.com/FuelLabs/forc-wallet" -description = "A forc plugin for generating or importing wallets using BIP39 phrases." +description = "A forc plugin for generating or importing wallets using mnemonic phrases." [dependencies] anyhow = "1.0" clap = { version = "4.2.4", features = ["derive"] } eth-keystore = { version = "0.5" } -forc-tracing = "0.47.0" - -# Dependencies from the `fuel-vm` repository: -fuel-crypto = { version = "0.59" } -fuel-types = { version = "0.59" } +forc-tracing = "0.67" # Dependencies from the `fuels-rs` repository: -fuels = "0.70" -fuels-core = "0.70" +fuels = "0.71" futures = "0.3" hex = "0.4" home = "0.5.3" -rand = { version = "0.8.4", default-features = false } +rand = { version = "0.8", default-features = false } rpassword = "7.2" serde_json = "1.0" -termion = "2.0" -tiny-bip39 = "1.0" -tokio = { version = "1.10.1", features = ["full"] } -url = "2.3" +termion = "4.0" +tokio = { version = "1.44", features = ["full"] } +url = "2.5" [lib] name = "forc_wallet" @@ -41,4 +35,6 @@ name = "forc-wallet" path = "src/main.rs" [dev-dependencies] -tempfile = "3.13.0" +fuel-core-client = "0.42" +tempfile = "3.19" +wiremock = "0.6" diff --git a/src/account.rs b/src/account.rs index 16b9597..ac27242 100644 --- a/src/account.rs +++ b/src/account.rs @@ -7,13 +7,17 @@ use anyhow::{anyhow, bail, Context, Result}; use clap::{Args, Subcommand}; use eth_keystore::EthKeystore; use forc_tracing::println_warning; -use fuel_crypto::{PublicKey, SecretKey}; -use fuel_types::{AssetId, Bytes32}; +use fuels::accounts::provider::Provider; +use fuels::accounts::signers::private_key::PrivateKeySigner; +use fuels::accounts::wallet::Unlocked; +use fuels::accounts::ViewOnlyAccount; +use fuels::crypto::{PublicKey, SecretKey}; use fuels::types::checksum_address::{checksum_encode, is_checksum_valid}; +use fuels::types::transaction::TxPolicies; +use fuels::types::{Address, AssetId}; use fuels::{ - accounts::wallet::{Wallet, WalletUnlocked}, - prelude::*, - types::bech32::FUEL_BECH32_HRP, + accounts::wallet::Wallet, + types::bech32::{Bech32Address, FUEL_BECH32_HRP}, }; use std::ops::Range; use std::{ @@ -24,13 +28,15 @@ use std::{ }; use url::Url; +type WalletUnlocked = Wallet>; + #[derive(Debug, Args)] pub struct Accounts { + #[clap(flatten)] + unverified: UnverifiedOpt, /// Contains optional flag for displaying all accounts as hex / bytes values. /// /// pass in --as-hex for this alternative display. - #[clap(flatten)] - unverified: Unverified, #[clap(long)] as_bech32: bool, } @@ -42,7 +48,7 @@ pub struct Account { /// This index is used directly within the path used to derive the account. index: Option, #[clap(flatten)] - unverified: Unverified, + unverified: UnverifiedOpt, #[clap(subcommand)] cmd: Option, } @@ -84,23 +90,10 @@ pub(crate) enum Command { Transfer(Transfer), } -#[derive(Debug, Args)] -pub(crate) struct Unverified { - /// When enabled, shows account addresses stored in the cache without re-deriving them. - /// - /// The cache can be found at `~/.fuel/wallets/addresses`. - /// - /// Useful for non-interactive scripts on trusted systems or integration tests. - #[clap(long = "unverified")] - pub(crate) unverified: bool, -} - #[derive(Debug, Args)] pub(crate) struct Balance { - #[clap(long, default_value_t = crate::network::DEFAULT.parse().unwrap())] - pub(crate) node_url: Url, #[clap(flatten)] - pub(crate) unverified: Unverified, + pub(crate) unverified: UnverifiedOpt, } #[derive(Debug, Args)] @@ -114,8 +107,6 @@ pub(crate) struct Transfer { /// Asset ID of the asset to transfer. #[clap(long)] asset_id: AssetId, - #[clap(long, default_value_t = crate::network::DEFAULT.parse().unwrap())] - node_url: Url, #[clap(long)] gas_price: Option, #[clap(long)] @@ -124,10 +115,21 @@ pub(crate) struct Transfer { maturity: Option, } +#[derive(Debug, Args)] +pub(crate) struct UnverifiedOpt { + /// When enabled, shows account addresses stored in the cache without re-deriving them. + /// + /// The cache can be found at `~/.fuel/wallets/addresses`. + /// + /// Useful for non-interactive scripts on trusted systems or integration tests. + #[clap(long = "unverified")] + pub(crate) unverified: bool, +} + #[derive(Debug, Clone)] enum To { Bech32Address(Bech32Address), - HexAddress(fuel_types::Address), + HexAddress(Address), } impl FromStr for To { @@ -136,7 +138,7 @@ impl FromStr for To { fn from_str(s: &str) -> std::result::Result { if let Ok(bech32_address) = Bech32Address::from_str(s) { return Ok(Self::Bech32Address(bech32_address)); - } else if let Ok(hex_address) = fuel_types::Address::from_str(s) { + } else if let Ok(hex_address) = Address::from_str(s) { if !is_checksum_valid(s) { return Err(format!( "Checksum is not valid for address `{}`, the address might not be an account.", @@ -169,27 +171,27 @@ impl fmt::Display for To { } /// A map from an account's index to its bech32 address. -type AccountAddresses = BTreeMap; +type AccountAddresses = BTreeMap; -pub async fn cli(wallet_path: &Path, account: Account) -> Result<()> { +pub async fn cli(ctx: &crate::CliContext, account: Account) -> Result<()> { match (account.index, account.cmd) { - (None, Some(Command::New)) => new_cli(wallet_path)?, - (Some(acc_ix), Some(Command::New)) => new_at_index_cli(wallet_path, acc_ix)?, - (Some(acc_ix), None) => print_address(wallet_path, acc_ix, account.unverified.unverified)?, + (None, Some(Command::New)) => new_cli(ctx).await?, + (Some(acc_ix), Some(Command::New)) => new_at_index_cli(ctx, acc_ix).await?, + (Some(acc_ix), None) => print_address(ctx, acc_ix, account.unverified.unverified).await?, (Some(acc_ix), Some(Command::Sign(sign_cmd))) => { - sign::wallet_account_cli(wallet_path, acc_ix, sign_cmd)? + sign::wallet_account_cli(ctx, acc_ix, sign_cmd)? } - (Some(acc_ix), Some(Command::PrivateKey)) => private_key_cli(wallet_path, acc_ix)?, + (Some(acc_ix), Some(Command::PrivateKey)) => private_key_cli(ctx, acc_ix)?, (Some(acc_ix), Some(Command::PublicKey(format))) => match format.as_hex { - true => hex_address_cli(wallet_path, acc_ix)?, - false => public_key_cli(wallet_path, acc_ix)?, + true => hex_address_cli(ctx, acc_ix)?, + false => public_key_cli(ctx, acc_ix)?, }, (Some(acc_ix), Some(Command::Balance(balance))) => { - account_balance_cli(wallet_path, acc_ix, &balance).await? + account_balance_cli(ctx, acc_ix, &balance).await? } (Some(acc_ix), Some(Command::Transfer(transfer))) => { - transfer_cli(wallet_path, acc_ix, transfer).await? + transfer_cli(ctx, acc_ix, transfer).await? } (None, Some(cmd)) => print_subcmd_index_warning(&cmd), (None, None) => print_subcmd_help(), @@ -198,36 +200,36 @@ pub async fn cli(wallet_path: &Path, account: Account) -> Result<()> { } pub(crate) async fn account_balance_cli( - wallet_path: &Path, + ctx: &crate::CliContext, acc_ix: usize, balance: &Balance, ) -> Result<()> { - let wallet = load_wallet(wallet_path)?; + let wallet = load_wallet(&ctx.wallet_path)?; + let provider = Provider::connect(&ctx.node_url).await?; let mut cached_addrs = read_cached_addresses(&wallet.crypto.ciphertext)?; let cached_addr = cached_addrs .remove(&acc_ix) .ok_or_else(|| anyhow!("No cached address for account {acc_ix}"))?; - let mut account = if balance.unverified.unverified { + + let account = if balance.unverified.unverified { let cached_addr = Bech32Address::from(cached_addr); - Wallet::from_address(cached_addr.clone(), None) + Wallet::new_locked(cached_addr, provider) } else { let prompt = format!("Please enter your wallet password to verify account {acc_ix}: "); let password = rpassword::prompt_password(prompt)?; - let account = derive_account(wallet_path, acc_ix, &password)?; + let account = derive_account_unlocked(&ctx.wallet_path, acc_ix, &password, &provider)?; let cached_addr = Bech32Address::from(cached_addr); verify_address_and_update_cache(acc_ix, &account, &cached_addr, &wallet.crypto.ciphertext)?; - account + account.lock() }; - println!("Connecting to {}", balance.node_url); + println!("Connecting to {}", &ctx.node_url); println!("Fetching the balance of the following account:",); let account_adr = checksum_encode(&format!("0x{}", account.address()))?; println!(" {acc_ix:>3}: {}", account_adr); - let provider = Provider::connect(&balance.node_url).await?; - account.set_provider(provider); let account_balance: BTreeMap<_, _> = account.get_balances().await?.into_iter().collect(); println!("\nAccount {acc_ix}:"); if account_balance.is_empty() { - print_balance_empty(&balance.node_url); + print_balance_empty(&ctx.node_url); } else { print_balance(&account_balance); } @@ -292,8 +294,8 @@ pub(crate) fn print_balance(balance: &BTreeMap) { } /// Prints a list of all known (cached) accounts for the wallet at the given path. -pub fn print_accounts_cli(wallet_path: &Path, accounts: Accounts) -> Result<()> { - let wallet = load_wallet(wallet_path)?; +pub async fn print_accounts_cli(ctx: &crate::CliContext, accounts: Accounts) -> Result<()> { + let wallet = load_wallet(&ctx.wallet_path)?; let addresses = read_cached_addresses(&wallet.crypto.ciphertext)?; if accounts.unverified.unverified { println!("Account addresses (unverified, printed from cache):"); @@ -311,8 +313,9 @@ pub fn print_accounts_cli(wallet_path: &Path, accounts: Accounts) -> Result<()> } else { let prompt = "Please enter your wallet password to verify cached accounts: "; let password = rpassword::prompt_password(prompt)?; + let provider = Provider::connect(&ctx.node_url).await?; for &ix in addresses.keys() { - let account = derive_account(wallet_path, ix, &password)?; + let account = derive_account_unlocked(&ctx.wallet_path, ix, &password, &provider)?; let account_addr = account.address(); match accounts.as_bech32 { false => { @@ -363,8 +366,12 @@ fn print_subcmd_index_warning(cmd: &Command) { } /// Print the address of the wallet's account at the given index. -pub fn print_address(wallet_path: &Path, account_ix: usize, unverified: bool) -> Result<()> { - let wallet = load_wallet(wallet_path)?; +pub async fn print_address( + ctx: &crate::CliContext, + account_ix: usize, + unverified: bool, +) -> Result<()> { + let wallet = load_wallet(&ctx.wallet_path)?; if unverified { let addresses = read_cached_addresses(&wallet.crypto.ciphertext)?; match addresses.get(&account_ix) { @@ -374,10 +381,10 @@ pub fn print_address(wallet_path: &Path, account_ix: usize, unverified: bool) -> } else { let prompt = format!("Please enter your wallet password to verify account {account_ix}: "); let password = rpassword::prompt_password(prompt)?; - let account = derive_account(wallet_path, account_ix, &password)?; + let provider = Provider::connect(&ctx.node_url).await?; + let account = derive_account_unlocked(&ctx.wallet_path, account_ix, &password, &provider)?; let account_addr = account.address(); - let checksum_addr = - checksum_encode(&format!("0x{}", fuel_types::Address::from(account_addr)))?; + let checksum_addr = checksum_encode(&format!("0x{}", Address::from(account_addr)))?; println!("Account {account_ix} address: {checksum_addr}"); cache_address(&wallet.crypto.ciphertext, account_ix, account_addr)?; } @@ -403,27 +410,30 @@ fn next_derivation_index(addrs: &AccountAddresses) -> usize { } /// Derive an account at the first index succeeding the greatest known existing index. -fn derive_account_unlocked( +pub(crate) fn derive_account_unlocked( wallet_path: &Path, account_ix: usize, password: &str, -) -> Result { + provider: &Provider, +) -> Result> { let secret_key = derive_secret_key(wallet_path, account_ix, password)?; - let wallet = WalletUnlocked::new_from_private_key(secret_key, None); + let wallet = WalletUnlocked::new(PrivateKeySigner::new(secret_key), provider.clone()); Ok(wallet) } -pub fn derive_and_cache_addresses( - wallet: &EthKeystore, +pub async fn derive_and_cache_addresses( + ctx: &crate::CliContext, mnemonic: &str, range: Range, -) -> anyhow::Result> { +) -> anyhow::Result> { + let wallet = load_wallet(&ctx.wallet_path)?; + let provider = Provider::connect(&ctx.node_url).await?; range .into_iter() .map(|acc_ix| { let derive_path = get_derivation_path(acc_ix); let secret_key = SecretKey::new_from_mnemonic_phrase_with_path(mnemonic, &derive_path)?; - let account = WalletUnlocked::new_from_private_key(secret_key, None); + let account = WalletUnlocked::new(PrivateKeySigner::new(secret_key), provider.clone()); cache_address(&wallet.crypto.ciphertext, acc_ix, account.address())?; Ok(account.address().to_owned().into()) @@ -432,18 +442,15 @@ pub fn derive_and_cache_addresses( .map(|x| x.into_iter().enumerate().collect()) } -pub(crate) fn derive_account( +fn new_at_index( + keystore: &EthKeystore, wallet_path: &Path, account_ix: usize, - password: &str, -) -> Result { - Ok(derive_account_unlocked(wallet_path, account_ix, password)?.lock()) -} - -fn new_at_index(keystore: &EthKeystore, wallet_path: &Path, account_ix: usize) -> Result { + provider: &Provider, +) -> Result { let prompt = format!("Please enter your wallet password to derive account {account_ix}: "); let password = rpassword::prompt_password(prompt)?; - let account = derive_account(wallet_path, account_ix, &password)?; + let account = derive_account_unlocked(wallet_path, account_ix, &password, provider)?; let account_addr = account.address(); cache_address(&keystore.crypto.ciphertext, account_ix, account_addr)?; let checksum_addr = checksum_encode(&Address::from(account_addr).to_string())?; @@ -451,60 +458,62 @@ fn new_at_index(keystore: &EthKeystore, wallet_path: &Path, account_ix: usize) - Ok(checksum_addr) } -pub fn new_at_index_cli(wallet_path: &Path, account_ix: usize) -> Result<()> { - let keystore = load_wallet(wallet_path)?; - new_at_index(&keystore, wallet_path, account_ix)?; +pub async fn new_at_index_cli(ctx: &crate::CliContext, account_ix: usize) -> Result<()> { + let keystore = load_wallet(&ctx.wallet_path)?; + let provider = Provider::connect(&ctx.node_url).await?; + new_at_index(&keystore, &ctx.wallet_path, account_ix, &provider)?; Ok(()) } -pub(crate) fn new_cli(wallet_path: &Path) -> Result<()> { - let keystore = load_wallet(wallet_path)?; +pub(crate) async fn new_cli(ctx: &crate::CliContext) -> Result<()> { + let keystore = load_wallet(&ctx.wallet_path)?; let addresses = read_cached_addresses(&keystore.crypto.ciphertext)?; let account_ix = next_derivation_index(&addresses); - new_at_index(&keystore, wallet_path, account_ix)?; + let provider = Provider::connect(&ctx.node_url).await?; + new_at_index(&keystore, &ctx.wallet_path, account_ix, &provider)?; Ok(()) } -pub(crate) fn private_key_cli(wallet_path: &Path, account_ix: usize) -> Result<()> { +pub(crate) fn private_key_cli(ctx: &crate::CliContext, account_ix: usize) -> Result<()> { let prompt = format!( "Please enter your wallet password to display account {account_ix}'s private key: " ); let password = rpassword::prompt_password(prompt)?; - let secret_key = derive_secret_key(wallet_path, account_ix, &password)?; + let secret_key = derive_secret_key(&ctx.wallet_path, account_ix, &password)?; let secret_key_string = format!("Secret key for account {account_ix}: {secret_key}\n"); display_string_discreetly(&secret_key_string, "### Press any key to complete. ###")?; Ok(()) } /// Prints the public key of given account index. -pub(crate) fn public_key_cli(wallet_path: &Path, account_ix: usize) -> Result<()> { +pub(crate) fn public_key_cli(ctx: &crate::CliContext, account_ix: usize) -> Result<()> { let prompt = format!("Please enter your wallet password to display account {account_ix}'s public key: "); let password = rpassword::prompt_password(prompt)?; - let secret_key = derive_secret_key(wallet_path, account_ix, &password)?; + let secret_key = derive_secret_key(&ctx.wallet_path, account_ix, &password)?; let public_key = PublicKey::from(&secret_key); println!("Public key for account {account_ix}: {public_key}"); Ok(()) } /// Prints the plain address for the given account index -pub(crate) fn hex_address_cli(wallet_path: &Path, account_ix: usize) -> Result<()> { +pub(crate) fn hex_address_cli(ctx: &crate::CliContext, account_ix: usize) -> Result<()> { let prompt = format!( "Please enter your wallet password to display account {account_ix}'s plain address: " ); let password = rpassword::prompt_password(prompt)?; - let secret_key = derive_secret_key(wallet_path, account_ix, &password)?; + let secret_key = derive_secret_key(&ctx.wallet_path, account_ix, &password)?; let public_key = PublicKey::from(&secret_key); let hashed = public_key.hash(); let bech = Bech32Address::new(FUEL_BECH32_HRP, hashed); - let plain_address: fuel_types::Address = bech.into(); + let plain_address: Address = bech.into(); println!("Plain address for {}: {}", account_ix, plain_address); Ok(()) } /// Transfers assets from account at a given account index to a target address. pub(crate) async fn transfer_cli( - wallet_path: &Path, + ctx: &crate::CliContext, acc_ix: usize, transfer: Transfer, ) -> Result<()> { @@ -514,7 +523,7 @@ pub(crate) async fn transfer_cli( "Preparing to transfer:\n Amount: {}\n Asset ID: 0x{}\n To: {}\n", transfer.amount, transfer.asset_id, transfer.to ); - let provider = Provider::connect(&transfer.node_url).await?; + let provider = Provider::connect(&ctx.node_url).await?; let to = match transfer.to { To::Bech32Address(bech32_addr) => bech32_addr, @@ -524,7 +533,7 @@ pub(crate) async fn transfer_cli( // At this point we want to query the provider to see if the // acount is actually something we can transfer to. let addr = checksum_encode(&format!("0x{hex_addr}"))?; - let to_addr = Bytes32::from_str(&addr).map_err(|e| anyhow!("{e}"))?; + let to_addr = fuels::types::Bytes32::from_str(&addr).map_err(|e| anyhow!("{e}"))?; if !provider.is_user_account(to_addr).await? { bail!(format!("{addr} is not a user account. Aborting transfer.")) } @@ -536,11 +545,11 @@ pub(crate) async fn transfer_cli( "Please enter your wallet password to unlock account {acc_ix} and to initiate transfer: " ); let password = rpassword::prompt_password(prompt)?; - let mut account = derive_account_unlocked(wallet_path, acc_ix, &password)?; + let mut account = derive_account_unlocked(&ctx.wallet_path, acc_ix, &password, &provider)?; account.set_provider(provider); println!("Transferring..."); - let (tx_id, receipts) = account + let tx_response = account .transfer( &to, transfer.amount, @@ -550,12 +559,13 @@ pub(crate) async fn transfer_cli( None, transfer.maturity, None, + None, transfer.gas_limit, ), ) .await?; - let block_explorer_url = match transfer.node_url.host_str() { + let block_explorer_url = match ctx.node_url.host_str() { host if host == crate::network::MAINNET.parse::().unwrap().host_str() => { crate::explorer::DEFAULT } @@ -565,10 +575,12 @@ pub(crate) async fn transfer_cli( _ => "", }; - let tx_explorer_url = format!("{block_explorer_url}/tx/0x{tx_id}"); + let tx_explorer_url = format!("{block_explorer_url}/tx/0x{}", tx_response.tx_id); println!( - "\nTransfer complete!\nSummary:\n Transaction ID: 0x{tx_id}\n Receipts: {:#?}\n Explorer: {tx_explorer_url}\n", - receipts + "\nTransfer complete!\nSummary:\n Transaction ID: 0x{}\n Receipts: {:#?}\n Explorer: {}\n", + tx_response.tx_id, + tx_response.tx_status.receipts, + tx_explorer_url ); Ok(()) @@ -634,7 +646,7 @@ pub(crate) fn read_cached_addresses(wallet_ciphertext: &[u8]) -> Result Result::from_str(address) .expect("failed to create Bech32 address from string"); - let plain_address: fuel_types::Address = bech32.into(); + let plain_address: Address = bech32.into(); assert_eq!( - ::from_str( +
::from_str( "978f983cf8210549fa92e23bff07d42e3108aa395cc961066d832e2e6a252900" ) .expect("RIP"), diff --git a/src/balance.rs b/src/balance.rs index 5ce0f81..c45950a 100644 --- a/src/balance.rs +++ b/src/balance.rs @@ -1,9 +1,17 @@ +use crate::{ + account::{ + derive_account_unlocked, derive_and_cache_addresses, print_balance, print_balance_empty, + read_cached_addresses, verify_address_and_update_cache, + }, + format::List, + utils::load_wallet, + DEFAULT_CACHE_ACCOUNTS, +}; use anyhow::{anyhow, Result}; use clap::Args; use fuels::{ - accounts::{wallet::Wallet, ViewOnlyAccount}, - prelude::*, - types::checksum_address::checksum_encode, + accounts::{provider::Provider, wallet::Wallet, ViewOnlyAccount}, + types::{bech32::Bech32Address, checksum_address::checksum_encode, Address}, }; use std::{ cmp::max, @@ -12,16 +20,6 @@ use std::{ }; use url::Url; -use crate::{ - account::{ - derive_account, derive_and_cache_addresses, print_balance, print_balance_empty, - read_cached_addresses, verify_address_and_update_cache, - }, - format::List, - utils::load_wallet, - DEFAULT_CACHE_ACCOUNTS, -}; - #[derive(Debug, Args)] #[group(skip)] pub struct Balance { @@ -45,20 +43,22 @@ pub enum AccountVerification { /// List of accounts and amount of tokens they hold with different ASSET_IDs. pub type AccountBalances = Vec>; /// A mapping between account index and the bech32 address for that account. -pub type AccountsMap = BTreeMap; +pub type AccountsMap = BTreeMap; /// Return a map of accounts after desired verification applied in a map where each key is account /// index and each value is the `Bech32Address` of that account. -pub fn collect_accounts_with_verification( +pub async fn collect_accounts_with_verification( wallet_path: &Path, verification: AccountVerification, + node_url: &Url, ) -> Result { let wallet = load_wallet(wallet_path)?; let mut addresses = read_cached_addresses(&wallet.crypto.ciphertext)?; if let AccountVerification::Yes(password) = verification { for (&ix, addr) in addresses.iter_mut() { let addr_bech32 = Bech32Address::from(*addr); - let account = derive_account(wallet_path, ix, &password)?; + let provider = Provider::connect(node_url).await?; + let account = derive_account_unlocked(wallet_path, ix, &password, &provider)?; if verify_address_and_update_cache( ix, &account, @@ -77,12 +77,12 @@ pub fn collect_accounts_with_verification( /// and will use the cached ones. /// /// This function will override / fix the cached addresses if the user password is requested -pub fn get_derived_accounts( - wallet_path: &Path, +pub async fn get_derived_accounts( + ctx: &crate::CliContext, unverified: bool, target_accounts: Option, ) -> Result { - let wallet = load_wallet(wallet_path)?; + let wallet = load_wallet(&ctx.wallet_path)?; let addresses = if unverified { read_cached_addresses(&wallet.crypto.ciphertext)? } else { @@ -93,11 +93,11 @@ pub fn get_derived_accounts( if !unverified || addresses.len() < target_accounts { let prompt = "Please enter your wallet password to verify accounts: "; let password = rpassword::prompt_password(prompt)?; - let phrase_recovered = eth_keystore::decrypt_key(wallet_path, password)?; + let phrase_recovered = eth_keystore::decrypt_key(&ctx.wallet_path, password)?; let phrase = String::from_utf8(phrase_recovered)?; let range = 0..max(target_accounts, DEFAULT_CACHE_ACCOUNTS); - derive_and_cache_addresses(&wallet, &phrase, range) + derive_and_cache_addresses(ctx, &phrase, range).await } else { Ok(addresses) } @@ -135,7 +135,7 @@ pub fn print_account_balances( pub(crate) async fn list_account_balances( node_url: &Url, - addresses: &BTreeMap, + addresses: &BTreeMap, ) -> Result<(Vec>, BTreeMap)> { println!("Connecting to {node_url}"); let provider = Provider::connect(&node_url).await?; @@ -147,7 +147,7 @@ pub(crate) async fn list_account_balances( } let accounts: Vec<_> = addresses .values() - .map(|addr| Wallet::from_address((*addr).into(), Some(provider.clone()))) + .map(|addr| Wallet::new_locked(Bech32Address::from(*addr), provider.clone())) .collect(); let account_balances = futures::future::try_join_all(accounts.iter().map(|acc| acc.get_balances())).await?; @@ -165,7 +165,7 @@ pub(crate) async fn list_account_balances( Ok((account_balances, total_balance)) } -pub async fn cli(wallet_path: &Path, balance: &Balance) -> Result<()> { +pub async fn cli(ctx: &crate::CliContext, balance: &Balance) -> Result<()> { let verification = if !balance.account.unverified.unverified { let prompt = "Please enter your wallet password to verify accounts: "; let password = rpassword::prompt_password(prompt)?; @@ -173,9 +173,11 @@ pub async fn cli(wallet_path: &Path, balance: &Balance) -> Result<()> { } else { AccountVerification::No }; - let addresses = collect_accounts_with_verification(wallet_path, verification)?; - let node_url = &balance.account.node_url; - let (account_balances, total_balance) = list_account_balances(node_url, &addresses).await?; + + let addresses = + collect_accounts_with_verification(&ctx.wallet_path, verification, &ctx.node_url).await?; + let (account_balances, total_balance) = + list_account_balances(&ctx.node_url, &addresses).await?; if balance.accounts { print_account_balances(&addresses, &account_balances)?; @@ -183,7 +185,7 @@ pub async fn cli(wallet_path: &Path, balance: &Balance) -> Result<()> { println!("\nTotal:"); if total_balance.is_empty() { - print_balance_empty(&balance.account.node_url); + print_balance_empty(&ctx.node_url); } else { print_balance(&total_balance); } diff --git a/src/import.rs b/src/import.rs index 1a44bba..d54c9fb 100644 --- a/src/import.rs +++ b/src/import.rs @@ -1,15 +1,14 @@ use crate::{ account::derive_and_cache_addresses, utils::{ - ensure_no_wallet_exists, load_wallet, request_new_password, - write_wallet_from_mnemonic_and_password, + ensure_no_wallet_exists, request_new_password, write_wallet_from_mnemonic_and_password, }, DEFAULT_CACHE_ACCOUNTS, }; use anyhow::{bail, Result}; use clap::Args; -use fuels::accounts::wallet::WalletUnlocked; -use std::{io::stdin, path::Path}; +use fuels::{accounts::signers::derivation::DEFAULT_DERIVATION_PATH, crypto::SecretKey}; +use std::io::stdin; #[derive(Debug, Args)] pub struct Import { @@ -21,27 +20,27 @@ pub struct Import { pub cache_accounts: Option, } -/// Check if given mnemonic is valid by trying to create a `WalletUnlocked` from it +/// Check if given mnemonic is valid by trying to create a [SecretKey] from it fn check_mnemonic(mnemonic: &str) -> Result<()> { - // Check users's phrase by trying to create a wallet from it - if WalletUnlocked::new_from_mnemonic_phrase(mnemonic, None).is_err() { + // Check users's phrase by trying to create secret key from it + if SecretKey::new_from_mnemonic_phrase_with_path(mnemonic, DEFAULT_DERIVATION_PATH).is_err() { bail!("Cannot generate a wallet from provided mnemonics, please check your mnemonic phrase") } Ok(()) } -pub fn import_wallet_cli(wallet_path: &Path, import: Import) -> Result<()> { - ensure_no_wallet_exists(wallet_path, import.force, stdin().lock())?; - +pub async fn import_wallet_cli(ctx: &crate::CliContext, import: Import) -> Result<()> { + ensure_no_wallet_exists(&ctx.wallet_path, import.force, stdin().lock())?; let mnemonic = rpassword::prompt_password("Please enter your mnemonic phrase: ")?; check_mnemonic(&mnemonic)?; let password = request_new_password(); - write_wallet_from_mnemonic_and_password(wallet_path, &mnemonic, &password)?; + write_wallet_from_mnemonic_and_password(&ctx.wallet_path, &mnemonic, &password)?; derive_and_cache_addresses( - &load_wallet(wallet_path)?, + ctx, &mnemonic, 0..import.cache_accounts.unwrap_or(DEFAULT_CACHE_ACCOUNTS), - )?; + ) + .await?; Ok(()) } diff --git a/src/lib.rs b/src/lib.rs index 23a564e..1b2130e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,7 @@ +use std::path::PathBuf; + +use url::Url; + pub mod account; pub mod balance; pub mod format; @@ -23,3 +27,8 @@ pub mod explorer { pub const TESTNET: &str = "https://app-testnet.fuel.network"; pub const MAINNET: &str = "https://app.fuel.network"; } + +pub struct CliContext { + pub wallet_path: PathBuf, + pub node_url: Url, +} diff --git a/src/list.rs b/src/list.rs index ba657be..874726a 100644 --- a/src/list.rs +++ b/src/list.rs @@ -1,23 +1,18 @@ use crate::{ - account::{print_balance, print_balance_empty, Unverified}, + account::{print_balance, print_balance_empty, UnverifiedOpt}, balance::{get_derived_accounts, list_account_balances, print_account_balances}, }; use anyhow::Result; use clap::Args; -use std::{collections::BTreeMap, path::Path}; -use url::Url; +use std::collections::BTreeMap; #[derive(Debug, Args)] pub struct List { - /// The URL of the node to connect to to requests balances. - #[clap(long, default_value_t = crate::network::DEFAULT.parse().unwrap())] - pub(crate) node_url: Url, - /// Contains optional flag for displaying all accounts as hex / bytes values. /// /// pass in --as-hex for this alternative display. #[clap(flatten)] - unverified: Unverified, + unverified: UnverifiedOpt, /// The minimum amount of derived accounts to display their balances from. /// If there are not enough accounts in the cache, the wallet will be unlocked (requesting the @@ -26,22 +21,19 @@ pub struct List { target_accounts: Option, } -pub async fn list_wallet_cli(wallet_path: &Path, opts: List) -> Result<()> { - let addresses = get_derived_accounts( - wallet_path, - opts.unverified.unverified, - opts.target_accounts, - )? - .range(0..opts.target_accounts.unwrap_or(1)) - .map(|(a, b)| (*a, *b)) - .collect::>(); +pub async fn list_wallet_cli(ctx: &crate::CliContext, opts: List) -> Result<()> { + let addresses = get_derived_accounts(ctx, opts.unverified.unverified, opts.target_accounts) + .await? + .range(0..opts.target_accounts.unwrap_or(1)) + .map(|(a, b)| (*a, *b)) + .collect::>(); let (account_balances, total_balance) = - list_account_balances(&opts.node_url, &addresses).await?; + list_account_balances(&ctx.node_url, &addresses).await?; print_account_balances(&addresses, &account_balances)?; println!("\nTotal:"); if total_balance.is_empty() { - print_balance_empty(&opts.node_url); + print_balance_empty(&ctx.node_url); } else { print_balance(&total_balance); } diff --git a/src/main.rs b/src/main.rs index 801f6c7..d939433 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,22 +6,29 @@ use forc_wallet::{ balance::{self, Balance}, import::{import_wallet_cli, Import}, list::{list_wallet_cli, List}, + network::DEFAULT as DEFAULT_NODE_URL, new::{new_wallet_cli, New}, sign::{self, Sign}, - utils, + utils::default_wallet_path, + CliContext, }; use std::path::PathBuf; +use url::Url; #[derive(Debug, Parser)] #[clap(name = "forc wallet", about = ABOUT, after_long_help = EXAMPLES, version)] struct App { /// The path to a wallet. A wallet is a JSON keystore file as described in /// the Web3 Secret Storage Definition. - /// By default, this is `$HOME/.fuel/wallets/.wallet`. /// Read more about the Web3 Secret Storage Definition here: /// https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage - #[clap(long = "path")] - wallet_path: Option, + #[clap(long = "path", default_value_os_t = default_wallet_path() )] + wallet_path: PathBuf, + + /// The URL of the Fuel node to connect to. + #[clap(long, default_value_t = Url::parse(DEFAULT_NODE_URL).unwrap())] + node_url: Url, + #[clap(subcommand)] pub cmd: Command, } @@ -135,15 +142,18 @@ async fn main() { async fn run() -> Result<()> { let app = App::parse(); - let wallet_path = app.wallet_path.unwrap_or_else(utils::default_wallet_path); + let ctx = CliContext { + wallet_path: app.wallet_path, + node_url: app.node_url, + }; match app.cmd { - Command::New(new) => new_wallet_cli(&wallet_path, new)?, - Command::List(list) => list_wallet_cli(&wallet_path, list).await?, - Command::Import(import) => import_wallet_cli(&wallet_path, import)?, - Command::Accounts(accounts) => account::print_accounts_cli(&wallet_path, accounts)?, - Command::Account(account) => account::cli(&wallet_path, account).await?, - Command::Sign(sign) => sign::cli(&wallet_path, sign)?, - Command::Balance(balance) => balance::cli(&wallet_path, &balance).await?, + Command::New(new) => new_wallet_cli(&ctx, new).await?, + Command::List(list) => list_wallet_cli(&ctx, list).await?, + Command::Import(import) => import_wallet_cli(&ctx, import).await?, + Command::Accounts(accounts) => account::print_accounts_cli(&ctx, accounts).await?, + Command::Account(account) => account::cli(&ctx, account).await?, + Command::Sign(sign) => sign::cli(&ctx, sign)?, + Command::Balance(balance) => balance::cli(&ctx, &balance).await?, } Ok(()) } diff --git a/src/new.rs b/src/new.rs index 5822804..0f8a27d 100644 --- a/src/new.rs +++ b/src/new.rs @@ -1,14 +1,14 @@ use crate::{ account::derive_and_cache_addresses, utils::{ - display_string_discreetly, ensure_no_wallet_exists, load_wallet, request_new_password, + display_string_discreetly, ensure_no_wallet_exists, request_new_password, write_wallet_from_mnemonic_and_password, }, DEFAULT_CACHE_ACCOUNTS, }; use clap::Args; -use fuels::prelude::*; -use std::{io::stdin, path::Path}; +use fuels::accounts::signers::private_key::generate_mnemonic_phrase; +use std::io::stdin; #[derive(Debug, Args)] pub struct New { @@ -21,18 +21,19 @@ pub struct New { pub cache_accounts: Option, } -pub fn new_wallet_cli(wallet_path: &Path, new: New) -> anyhow::Result<()> { - ensure_no_wallet_exists(wallet_path, new.force, stdin().lock())?; +pub async fn new_wallet_cli(ctx: &crate::CliContext, new: New) -> anyhow::Result<()> { + ensure_no_wallet_exists(&ctx.wallet_path, new.force, stdin().lock())?; let password = request_new_password(); // Generate a random mnemonic phrase. let mnemonic = generate_mnemonic_phrase(&mut rand::thread_rng(), 24)?; - write_wallet_from_mnemonic_and_password(wallet_path, &mnemonic, &password)?; + write_wallet_from_mnemonic_and_password(&ctx.wallet_path, &mnemonic, &password)?; derive_and_cache_addresses( - &load_wallet(wallet_path)?, + ctx, &mnemonic, 0..new.cache_accounts.unwrap_or(DEFAULT_CACHE_ACCOUNTS), - )?; + ) + .await?; let mnemonic_string = format!("Wallet mnemonic phrase: {mnemonic}\n"); display_string_discreetly( diff --git a/src/sign.rs b/src/sign.rs index a970df1..85cf39a 100644 --- a/src/sign.rs +++ b/src/sign.rs @@ -1,8 +1,8 @@ use crate::account; use anyhow::{bail, Context, Result}; use clap::{Args, Subcommand}; -use fuel_crypto::{Message, SecretKey, Signature}; -use fuel_types::Bytes32; +use fuels::crypto::{Message, SecretKey, Signature}; +use fuels::types::Bytes32; use rpassword::prompt_password; use std::{ path::{Path, PathBuf}, @@ -45,7 +45,7 @@ pub enum Data { /// The tx ID is signed directly, i.e. it is not re-hashed before signing. /// /// Previously `tx`, though renamed in anticipation of support for signing transaction files. - TxId { tx_id: fuel_types::Bytes32 }, + TxId { tx_id: Bytes32 }, /// Read the file at the given path into bytes and sign the raw data. File { path: PathBuf }, /// Sign the given string as a slice of bytes. @@ -60,7 +60,7 @@ pub enum Data { Hex { hex_string: String }, } -pub fn cli(wallet_path: &Path, sign: Sign) -> Result<()> { +pub fn cli(ctx: &crate::CliContext, sign: Sign) -> Result<()> { let Sign { account, private_key, @@ -75,11 +75,11 @@ pub fn cli(wallet_path: &Path, sign: Sign) -> Result<()> { private_key_non_interactive, ) { // Provided an account index, so we'll request the password. - (Some(acc_ix), None, false, None) => wallet_account_cli(wallet_path, acc_ix, data)?, + (Some(acc_ix), None, false, None) => wallet_account_cli(ctx, acc_ix, data)?, // Provided the password as a flag, so no need for interactive step. (Some(acc_ix), Some(pw), false, None) => { let msg = msg_from_data(data)?; - let sig = sign_msg_with_wallet_account(wallet_path, acc_ix, &msg, &pw)?; + let sig = sign_msg_with_wallet_account(&ctx.wallet_path, acc_ix, &msg, &pw)?; println!("Signature: {sig}"); } // Provided the private key to sign with directly. @@ -100,9 +100,13 @@ pub fn cli(wallet_path: &Path, sign: Sign) -> Result<()> { Ok(()) } -pub(crate) fn wallet_account_cli(wallet_path: &Path, account_ix: usize, data: Data) -> Result<()> { +pub(crate) fn wallet_account_cli( + ctx: &crate::CliContext, + account_ix: usize, + data: Data, +) -> Result<()> { let msg = msg_from_data(data)?; - sign_msg_with_wallet_account_cli(wallet_path, account_ix, &msg) + sign_msg_with_wallet_account_cli(&ctx.wallet_path, account_ix, &msg) } pub(crate) fn private_key_cli(data: Data) -> Result<()> { @@ -183,7 +187,7 @@ fn bytes_from_hex_str(mut hex_str: &str) -> Result> { mod tests { use super::*; use crate::utils::test_utils::{with_tmp_dir_and_wallet, TEST_PASSWORD}; - use fuel_crypto::Message; + use fuels::crypto::Message; #[test] fn sign_tx_id() { diff --git a/src/utils.rs b/src/utils.rs index f0f6e96..43a55b5 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,7 +1,6 @@ use anyhow::{anyhow, bail, Context, Ok, Result}; use eth_keystore::EthKeystore; use forc_tracing::println_warning; -use fuels::accounts::wallet::DEFAULT_DERIVATION_PATH_PREFIX; use home::home_dir; use std::{ fs, @@ -9,6 +8,8 @@ use std::{ path::{Path, PathBuf}, }; +pub const DEFAULT_DERIVATION_PATH_PREFIX: &str = "m/44'/1179993420'"; + /// The user's fuel directory (stores state related to fuel-core, wallet, etc). pub fn user_fuel_dir() -> PathBuf { const USER_FUEL_DIR: &str = ".fuel"; @@ -358,6 +359,13 @@ mod tests { #[cfg(test)] pub(crate) mod test_utils { + use fuels::accounts::provider::Provider; + use serde_json::json; + use wiremock::{ + matchers::{method, path}, + Mock, MockServer, ResponseTemplate, + }; + use super::*; use std::{panic, path::Path}; @@ -375,4 +383,51 @@ pub(crate) mod test_utils { .unwrap(); f(tmp_dir.path(), &wallet_path); } + + /// Returns a mock provider with a mock fuel-core server that responds to the nodeInfo graphql query. + /// Note: the raw JSON response will need to be updated if the schema changes. + pub(crate) async fn mock_provider() -> Provider { + let mock_server = MockServer::start().await; + + // Since [fuel_core_client::client::types::NodeInfo] does not implement [serde::Serialize], + // we use raw JSON for the response. + // If you get an error like "Error making HTTP request: error decoding response body", there has + // likely been a change to the schema and the raw JSON response will need to be updated to match + // the new schema. + let node_info_res_body = json!({ + "data": { + "nodeInfo": { + "utxoValidation": true, + "vmBacktrace": false, + "maxTx": "160000", + "maxGas": "30000000000", + "maxSize": "131072000", + "maxDepth": "32", + "nodeVersion": "0.41.9", + "indexation": { + "balances": false, + "coinsToSpend": false, + "assetMetadata": false + }, + "txPoolStats": { + "txCount": "0", + "totalGas": "0", + "totalSize": "0" + } + } + } + }); + + let node_info_response = ResponseTemplate::new(200).set_body_json(node_info_res_body); + + Mock::given(method("POST")) + .and(path("/v1/graphql")) + .respond_with(node_info_response) + .mount(&mock_server) + .await; + + Provider::connect(mock_server.uri()) + .await + .expect("mock provider") + } }