diff --git a/.github/workflows/mysticeti.yml b/.github/workflows/mysticeti.yml index 97f7a1e6642..1cf0e8f1800 100644 --- a/.github/workflows/mysticeti.yml +++ b/.github/workflows/mysticeti.yml @@ -3,11 +3,11 @@ name: Mysticeti tests on: push: branches: - - 'develop' - - 'devnet' - - 'testnet' - - 'mainnet' - - 'releases/iota-*-release' + - "develop" + - "devnet" + - "testnet" + - "mainnet" + - "releases/iota-*-release" pull_request: types: [opened, synchronize, reopened, ready_for_review] workflow_dispatch: @@ -16,10 +16,10 @@ on: description: "Branch / commit to test" type: string required: false - default: '' + default: "" # Triggers the workflow every day at 05:00 UTC. schedule: - - cron: '0 5 * * *' + - cron: "0 5 * * *" concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} @@ -65,9 +65,9 @@ jobs: - uses: dorny/paths-filter@v3 id: filter with: - list-files: 'json' + list-files: "json" filters: .github/crates-filters.yml - + test: name: Test ${{ matrix.components }} timeout-minutes: 45 @@ -77,7 +77,7 @@ jobs: # non-deterministic `test` job. IOTA_SKIP_SIMTESTS: 1 strategy: - matrix: + matrix: components: ${{ fromJson(needs.changes.outputs.components) }} fail-fast: false runs-on: [self-hosted-rust] @@ -95,7 +95,7 @@ jobs: isMove: ${{ steps.diff.outputs.isMove }} isReleaseNotesEligible: ${{ steps.diff.outputs.isReleaseNotesEligible }} steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 with: ref: ${{ github.event.inputs.iota_repo_ref || github.ref }} - name: Detect Changes @@ -118,7 +118,7 @@ jobs: - [self-hosted-rust] fail-fast: false steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 with: ref: ${{ github.event.inputs.iota_repo_ref || github.ref }} - uses: taiki-e/install-action@nextest @@ -145,24 +145,25 @@ jobs: - run: scripts/changed-files.sh shell: bash - simtest: - name: Simtest ${{ matrix.components }} - needs: changes - runs-on: [self-hosted-rust] - strategy: - matrix: - components: ${{ fromJson(needs.changes.outputs.components) }} - fail-fast: false - env: - MSIM_WATCHDOG_TIMEOUT_MS: 60000 - steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 - with: - ref: ${{ github.event.inputs.iota_repo_ref || github.ref }} - - uses: taiki-e/install-action@nextest - - name: cargo simtest - run: | - scripts/simtest/cargo-simtest simtest -E 'rdeps(${{matrix.components}})' -p ${{matrix.components}} - - name: check new tests for flakiness - run: | - scripts/simtest/stress-new-tests.sh -E 'rdeps(${{matrix.components}})' -p ${{matrix.components}} + # TODO: Disabled until we can get an updated fork of msim with tokio 1.38 https://github.com/iotaledger/iota/issues/1212 + # simtest: + # name: Simtest ${{ matrix.components }} + # needs: changes + # runs-on: [self-hosted-rust] + # strategy: + # matrix: + # components: ${{ fromJson(needs.changes.outputs.components) }} + # fail-fast: false + # env: + # MSIM_WATCHDOG_TIMEOUT_MS: 60000 + # steps: + # - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 + # with: + # ref: ${{ github.event.inputs.iota_repo_ref || github.ref }} + # - uses: taiki-e/install-action@nextest + # - name: cargo simtest + # run: | + # scripts/simtest/cargo-simtest simtest -E 'rdeps(${{matrix.components}})' -p ${{matrix.components}} + # - name: check new tests for flakiness + # run: | + # scripts/simtest/stress-new-tests.sh -E 'rdeps(${{matrix.components}})' -p ${{matrix.components}} diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 23a24f7de2b..24b754394ab 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -187,26 +187,27 @@ jobs: - run: scripts/changed-files.sh shell: bash - simtest: - name: Simtest ${{ matrix.components }} - needs: changes - timeout-minutes: 45 - runs-on: [self-hosted-rust] - strategy: - matrix: - components: ${{ fromJson(needs.changes.outputs.components) }} - fail-fast: false - env: - MSIM_WATCHDOG_TIMEOUT_MS: 60000 - steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 - - uses: taiki-e/install-action@nextest - - name: cargo simtest - run: | - scripts/simtest/cargo-simtest simtest -E 'rdeps(${{matrix.components}})' -p ${{matrix.components}} - - name: check new tests for flakiness - run: | - scripts/simtest/stress-new-tests.sh -E 'rdeps(${{matrix.components}})' -p ${{matrix.components}} + # TODO: Disabled until we can get an updated fork of msim with tokio 1.38 https://github.com/iotaledger/iota/issues/1212 + # simtest: + # name: Simtest ${{ matrix.components }} + # needs: changes + # timeout-minutes: 45 + # runs-on: [self-hosted-rust] + # strategy: + # matrix: + # components: ${{ fromJson(needs.changes.outputs.components) }} + # fail-fast: false + # env: + # MSIM_WATCHDOG_TIMEOUT_MS: 60000 + # steps: + # - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 + # - uses: taiki-e/install-action@nextest + # - name: cargo simtest + # run: | + # scripts/simtest/cargo-simtest simtest -E 'rdeps(${{matrix.components}})' -p ${{matrix.components}} + # - name: check new tests for flakiness + # run: | + # scripts/simtest/stress-new-tests.sh -E 'rdeps(${{matrix.components}})' -p ${{matrix.components}} # This job ensures that Move unit tests are run if there are changes # to Move code but not Rust code (If there are Rust changes, they @@ -328,33 +329,33 @@ jobs: - name: Check execution builds run: cargo build -p iota-execution - #indexer: - # name: indexer - # needs: diff - # if: needs.diff.outputs.isRust == 'true' - # timeout-minutes: 45 - # runs-on: [self-hosted-rust] - # services: - # postgres: - # image: postgres - # env: - # POSTGRES_PASSWORD: postgrespw - # options: >- - # --health-cmd pg_isready - # --health-interval 10s - # --health-timeout 5s - # --health-retries 5 - # ports: - # - 5432:5432 - # steps: - # - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 - # - name: integration-test-with-postgres - # #We only have 1 instance of postgres DB, can only run test in single thread - # run: | - # cargo test --package iota-indexer --test integration_tests --features pg_integration -- --test-threads=1 - # env: - # POSTGRES_HOST: localhost - # POSTGRES_PORT: 5432 + #indexer: + # name: indexer + # needs: diff + # if: needs.diff.outputs.isRust == 'true' + # timeout-minutes: 45 + # runs-on: [self-hosted-rust] + # services: + # postgres: + # image: postgres + # env: + # POSTGRES_PASSWORD: postgrespw + # options: >- + # --health-cmd pg_isready + # --health-interval 10s + # --health-timeout 5s + # --health-retries 5 + # ports: + # - 5432:5432 + # steps: + # - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 + # - name: integration-test-with-postgres + # #We only have 1 instance of postgres DB, can only run test in single thread + # run: | + # cargo test --package iota-indexer --test integration_tests --features pg_integration -- --test-threads=1 + # env: + # POSTGRES_HOST: localhost + # POSTGRES_PORT: 5432 graphql-rpc: name: graphql-rpc @@ -365,9 +366,13 @@ jobs: env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgrespw + POSTGRES_HOST: localhost + POSTGRES_PORT: 5432 services: postgres: image: postgres + env: + POSTGRES_PASSWORD: postgrespw options: >- --health-cmd pg_isready --health-interval 10s diff --git a/Cargo.lock b/Cargo.lock index bb06d06cfe2..e87bd706e9f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -46,9 +46,9 @@ checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "aead" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c192eb8f11fc081b0fe4259ba5af04217d4e0faddd02417310a927911abd7c8" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ "crypto-common", "generic-array", @@ -56,9 +56,9 @@ dependencies = [ [[package]] name = "aes" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", @@ -67,9 +67,9 @@ dependencies = [ [[package]] name = "aes-gcm" -version = "0.10.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e1366e0c69c9f927b1fa5ce2c7bf9eafc8f9268c0b9800729e8b267612447c" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ "aead", "aes", @@ -85,7 +85,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.15", "once_cell", "version_check", ] @@ -98,7 +98,7 @@ checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "const-random", - "getrandom 0.2.9", + "getrandom 0.2.15", "once_cell", "version_check", "zerocopy", @@ -106,18 +106,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" -dependencies = [ - "memchr", -] - -[[package]] -name = "aho-corasick" -version = "1.0.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -145,9 +136,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "android-tzdata" @@ -176,24 +167,24 @@ dependencies = [ "ed25519 1.5.3", "futures", "hex", - "http", + "http 0.2.12", "matchit 0.5.0", "pin-project-lite", "pkcs8 0.9.0", - "quinn", - "quinn-proto", + "quinn 0.10.2", + "quinn-proto 0.10.6", "rand 0.8.5", "rcgen", "ring 0.16.20", - "rustls 0.21.6", + "rustls 0.21.12", "rustls-webpki 0.101.7", "serde", "serde_json", - "socket2 0.5.6", + "socket2 0.5.7", "tap", "thiserror", "tokio", - "tokio-util 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-util 0.7.11", "tower", "tracing", "x509-parser", @@ -205,9 +196,9 @@ version = "0.0.0" source = "git+https://github.com/mystenlabs/anemo.git?rev=26d415eb9aa6a2417be3c03c57d6e93c30bd1ad7#26d415eb9aa6a2417be3c03c57d6e93c30bd1ad7" dependencies = [ "prettyplease 0.1.25", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] @@ -252,75 +243,76 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.5.0" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.0" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.0" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "2.1.0" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" dependencies = [ "backtrace", ] [[package]] name = "arbitrary" -version = "1.3.0" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d098ff73c1ca148721f37baad5ea6a465a13f9573aba8641fbbbae8164a54e" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" dependencies = [ "derive_arbitrary", ] [[package]] name = "arc-swap" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" dependencies = [ "serde", ] @@ -363,14 +355,14 @@ dependencies = [ "blake2", "derivative", "digest 0.10.7", - "sha2 0.10.6", + "sha2 0.10.8", ] [[package]] name = "ark-ec" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c60370a92f8e1a5f053cad73a862e1b99bc642333cd676fa11c0c39f80f4ac2" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ "ark-ff", "ark-poly", @@ -396,7 +388,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools 0.10.5", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-traits", "paste", "rustc_version", @@ -409,8 +401,8 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" dependencies = [ - "quote 1.0.35", - "syn 1.0.107", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] @@ -419,11 +411,11 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-traits", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] @@ -443,9 +435,9 @@ dependencies = [ [[package]] name = "ark-poly" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6ec811462cabe265cfe1b102fcfe3df79d7d2929c2425673648ee9abfd0272" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ "ark-ff", "ark-serialize", @@ -485,7 +477,7 @@ dependencies = [ "ark-serialize-derive", "ark-std", "digest 0.10.7", - "num-bigint 0.4.4", + "num-bigint 0.4.6", ] [[package]] @@ -494,9 +486,9 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] @@ -523,21 +515,21 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "arrow" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa285343fba4d829d49985bdc541e3789cf6000ed0e84be7c039438df4a4e78c" +checksum = "6127ea5e585a12ec9f742232442828ebaf264dfa5eefdd71282376c599562b77" dependencies = [ "arrow-arith", "arrow-array", @@ -556,69 +548,71 @@ dependencies = [ [[package]] name = "arrow-arith" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "753abd0a5290c1bcade7c6623a556f7d1659c5f4148b140b5b63ce7bd1a45705" +checksum = "7add7f39210b7d726e2a8efc0083e7bf06e8f2d15bdb4896b564dce4410fbf5d" dependencies = [ "arrow-array", "arrow-buffer", "arrow-data", "arrow-schema", "chrono", - "half 2.3.1", + "half", "num", ] [[package]] name = "arrow-array" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d390feeb7f21b78ec997a4081a025baef1e2e0d6069e181939b61864c9779609" +checksum = "81c16ec702d3898c2f5cfdc148443c6cd7dbe5bac28399859eb0a3d38f072827" dependencies = [ "ahash 0.8.11", "arrow-buffer", "arrow-data", "arrow-schema", "chrono", - "half 2.3.1", - "hashbrown 0.14.3", + "half", + "hashbrown 0.14.5", "num", ] [[package]] name = "arrow-buffer" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69615b061701bcdffbc62756bc7e85c827d5290b472b580c972ebbbf690f5aa4" +checksum = "cae6970bab043c4fbc10aee1660ceb5b306d0c42c8cc5f6ae564efcd9759b663" dependencies = [ "bytes", - "half 2.3.1", + "half", "num", ] [[package]] name = "arrow-cast" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e448e5dd2f4113bf5b74a1f26531708f5edcacc77335b7066f9398f4bcf4cdef" +checksum = "1c7ef44f26ef4f8edc392a048324ed5d757ad09135eff6d5509e6450d39e0398" dependencies = [ "arrow-array", "arrow-buffer", "arrow-data", "arrow-schema", "arrow-select", - "base64 0.21.2", + "atoi", + "base64 0.22.1", "chrono", - "half 2.3.1", + "half", "lexical-core", "num", + "ryu", ] [[package]] name = "arrow-csv" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46af72211f0712612f5b18325530b9ad1bfbdc87290d5fbfd32a7da128983781" +checksum = "5f843490bd258c5182b66e888161bb6f198f49f3792f7c7f98198b924ae0f564" dependencies = [ "arrow-array", "arrow-buffer", @@ -635,21 +629,21 @@ dependencies = [ [[package]] name = "arrow-data" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67d644b91a162f3ad3135ce1184d0a31c28b816a581e08f29e8e9277a574c64e" +checksum = "a769666ffac256dd301006faca1ca553d0ae7cffcf4cd07095f73f95eb226514" dependencies = [ "arrow-buffer", "arrow-schema", - "half 2.3.1", + "half", "num", ] [[package]] name = "arrow-ipc" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03dea5e79b48de6c2e04f03f62b0afea7105be7b77d134f6c5414868feefb80d" +checksum = "dbf9c3fb57390a1af0b7bb3b5558c1ee1f63905f3eccf49ae7676a8d1e6e5a72" dependencies = [ "arrow-array", "arrow-buffer", @@ -661,9 +655,9 @@ dependencies = [ [[package]] name = "arrow-json" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8950719280397a47d37ac01492e3506a8a724b3fb81001900b866637a829ee0f" +checksum = "654e7f3724176b66ddfacba31af397c48e106fbe4d281c8144e7d237df5acfd7" dependencies = [ "arrow-array", "arrow-buffer", @@ -671,7 +665,7 @@ dependencies = [ "arrow-data", "arrow-schema", "chrono", - "half 2.3.1", + "half", "indexmap 2.2.6", "lexical-core", "num", @@ -681,45 +675,45 @@ dependencies = [ [[package]] name = "arrow-ord" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ed9630979034077982d8e74a942b7ac228f33dd93a93b615b4d02ad60c260be" +checksum = "e8008370e624e8e3c68174faaf793540287106cfda8ad1da862fdc53d8e096b4" dependencies = [ "arrow-array", "arrow-buffer", "arrow-data", "arrow-schema", "arrow-select", - "half 2.3.1", + "half", "num", ] [[package]] name = "arrow-row" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "007035e17ae09c4e8993e4cb8b5b96edf0afb927cd38e2dff27189b274d83dcf" +checksum = "ca5e3a6b7fda8d9fe03f3b18a2d946354ea7f3c8e4076dbdb502ad50d9d44824" dependencies = [ "ahash 0.8.11", "arrow-array", "arrow-buffer", "arrow-data", "arrow-schema", - "half 2.3.1", - "hashbrown 0.14.3", + "half", + "hashbrown 0.14.5", ] [[package]] name = "arrow-schema" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ff3e9c01f7cd169379d269f926892d0e622a704960350d09d331be3ec9e0029" +checksum = "dab1c12b40e29d9f3b699e0203c2a73ba558444c05e388a4377208f8f9c97eee" [[package]] name = "arrow-select" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce20973c1912de6514348e064829e50947e35977bb9d7fb637dc99ea9ffd78c" +checksum = "e80159088ffe8c48965cb9b1a7c968b2729f29f37363df7eca177fc3281fe7c3" dependencies = [ "ahash 0.8.11", "arrow-array", @@ -731,18 +725,19 @@ dependencies = [ [[package]] name = "arrow-string" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f3b37f2aeece31a2636d1b037dabb69ef590e03bdc7eb68519b51ec86932a7" +checksum = "0fd04a6ea7de183648edbcb7a6dd925bbd04c210895f6384c780e27a9b54afcd" dependencies = [ "arrow-array", "arrow-buffer", "arrow-data", "arrow-schema", "arrow-select", + "memchr", "num", "regex", - "regex-syntax 0.8.2", + "regex-syntax 0.8.4", ] [[package]] @@ -753,9 +748,9 @@ checksum = "71938f30533e4d95a6d17aa530939da3842c2ab6f4f84b9dae68447e4129f74a" [[package]] name = "asn1-rs" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf6690c370453db30743b373a60ba498fc0d6d83b11f4abfd87a84a075db5dd4" +checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" dependencies = [ "asn1-rs-derive", "asn1-rs-impl", @@ -773,9 +768,9 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", "synstructure", ] @@ -785,20 +780,21 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] name = "assert_cmd" -version = "2.0.7" +version = "2.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa3d466004a8b4cb1bc34044240a2fd29d17607e2e3bd613eb44fd48e8100da3" +checksum = "bc65048dd435533bb1baf2ed9956b9a278fbfdcf90301b39ee117f06c0199d37" dependencies = [ + "anstyle", "bstr", "doc-comment", - "predicates", + "predicates 3.1.2", "predicates-core", "predicates-tree", "wait-timeout", @@ -806,43 +802,32 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" -dependencies = [ - "brotli 3.3.4", - "flate2", - "futures-core", - "memchr", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "async-compression" -version = "0.4.6" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a116f46a969224200a0a97f29cfd4c50e7534e4b4826bd23ea2c3c533039c82c" +checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa" dependencies = [ + "brotli", "flate2", "futures-core", "memchr", "pin-project-lite", "tokio", + "zstd", + "zstd-safe", ] [[package]] name = "async-graphql" -version = "6.0.7" +version = "7.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1addb0b551c59640e15de99e7566a4e3a1186cf42269e160c485ba6d8b43fe30" +checksum = "2b76aba2f176af685c2229633881a3adeae51f87ae1811781e73910b7001c93e" dependencies = [ "async-graphql-derive", "async-graphql-parser", "async-graphql-value", "async-stream", "async-trait", - "base64 0.13.1", + "base64 0.22.1", "bytes", "chrono", "fast_chemail", @@ -851,20 +836,20 @@ dependencies = [ "futures-timer", "futures-util", "handlebars", - "http", + "http 1.1.0", "indexmap 2.2.6", - "lru 0.7.8", + "lru 0.12.3", "mime", "multer", "num-traits", "once_cell", - "opentelemetry 0.19.0", + "opentelemetry", "pin-project-lite", "regex", "serde", "serde_json", "serde_urlencoded", - "static_assertions", + "static_assertions_next", "tempfile", "thiserror", "tracing", @@ -873,44 +858,44 @@ dependencies = [ [[package]] name = "async-graphql-axum" -version = "6.0.7" +version = "7.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c21af134ab9419aae6658298f819a28e4737ac81f96cde8008f9d49db1802662" +checksum = "686e48ce7820a1cf404b5c8e9b90ae24d03c867a408d8d651183945c7a554982" dependencies = [ "async-graphql", "async-trait", - "axum", + "axum 0.7.5", "bytes", "futures-util", "serde_json", "tokio", "tokio-stream", - "tokio-util 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-util 0.7.11", "tower-service", ] [[package]] name = "async-graphql-derive" -version = "6.0.7" +version = "7.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e1121ff0be2feea705c24f6940162c4f14a077e50a217b16e091e6534a8c08a" +checksum = "72e2e26a6b44bc61df3ca8546402cf9204c28e30c06084cc8e75cd5e34d4f150" dependencies = [ "Inflector", "async-graphql-parser", - "darling 0.20.3", - "proc-macro-crate", - "proc-macro2 1.0.78", - "quote 1.0.35", - "strum 0.25.0", - "syn 2.0.48", + "darling 0.20.10", + "proc-macro-crate 3.1.0", + "proc-macro2 1.0.86", + "quote 1.0.36", + "strum 0.26.3", + "syn 2.0.72", "thiserror", ] [[package]] name = "async-graphql-parser" -version = "6.0.7" +version = "7.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0b6713fd4ffd610b8b6f6e911bf31277cbb84b7c2a9cdeeb39d1b3eed3b88e4" +checksum = "f801451484b4977d6fe67b29030f81353cabdcbb754e5a064f39493582dac0cf" dependencies = [ "async-graphql-value", "pest", @@ -920,9 +905,9 @@ dependencies = [ [[package]] name = "async-graphql-value" -version = "6.0.7" +version = "7.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d74240f9daa8c1e8f73e9cfcc338d20a88d00bbeb83ded49ce8e5b4dcec0f5" +checksum = "69117c43c01d81a69890a9f5dd6235f2f027ca8d1ec62d6d3c5e01ca0edb4f2b" dependencies = [ "bytes", "indexmap 2.2.6", @@ -930,46 +915,37 @@ dependencies = [ "serde_json", ] -[[package]] -name = "async-lock" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8101efe8695a6c17e02911402145357e718ac92d3ff88ae8419e84b1707b685" -dependencies = [ - "event-listener", - "futures-lite", -] - [[package]] name = "async-recursion" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "async-stream" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", + "pin-project-lite", ] [[package]] name = "async-stream-impl" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] @@ -979,20 +955,29 @@ source = "git+https://github.com/mystenmark/async-task?rev=4e45b26e11126b191701b [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] -name = "async_once" -version = "0.2.6" +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ce4f10ea3abcd6617873bae9f91d1c5332b4a778bd9ce34d0cd517474c1de82" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "atomic_float" @@ -1008,90 +993,96 @@ checksum = "7460f7dd8e100147b82a63afca1a20eb6c231ee36b90ba7272e14951cb58af59" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "autotools" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8138adefca3e5d2e73bfba83bd6eeaf904b26a7ac1b4a19892cfe16cc7e1701" +checksum = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf" dependencies = [ "cc", ] [[package]] name = "aws-config" -version = "0.56.1" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6b3804dca60326e07205179847f17a4fce45af3a1106939177ad41ac08a6de" +checksum = "caf6cfe2881cb1fcbba9ae946fb9a6480d3b7a714ca84c74925014a89ef3387a" dependencies = [ "aws-credential-types", - "aws-http", + "aws-runtime", "aws-sdk-sso", + "aws-sdk-ssooidc", "aws-sdk-sts", "aws-smithy-async", - "aws-smithy-client", "aws-smithy-http", - "aws-smithy-http-tower", "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", "aws-smithy-types", "aws-types", "bytes", - "fastrand 2.0.0", + "fastrand", "hex", - "http", - "hyper", - "ring 0.16.20", + "http 0.2.12", + "hyper 0.14.30", + "ring 0.17.8", "time", "tokio", - "tower", "tracing", + "url", "zeroize", ] [[package]] name = "aws-credential-types" -version = "0.56.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a66ac8ef5fa9cf01c2d999f39d16812e90ec1467bd382cbbb74ba23ea86201" +checksum = "e16838e6c9e12125face1c1eff1343c75e3ff540de98ff7ebd61874a89bcfeb9" dependencies = [ "aws-smithy-async", + "aws-smithy-runtime-api", "aws-smithy-types", - "fastrand 2.0.0", - "tokio", - "tracing", "zeroize", ] [[package]] -name = "aws-http" -version = "0.56.1" +name = "aws-lc-rs" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e626370f9ba806ae4c439e49675fd871f5767b093075cdf4fef16cac42ba900" +checksum = "4ae74d9bd0a7530e8afd1770739ad34b36838829d6ad61818f9230f683f5ad77" dependencies = [ - "aws-credential-types", - "aws-smithy-http", - "aws-smithy-types", - "aws-types", - "bytes", - "http", - "http-body", - "lazy_static", - "percent-encoding", - "pin-project-lite", - "tracing", + "aws-lc-sys", + "mirai-annotations", + "paste", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e89b6941c2d1a7045538884d6e760ccfffdf8e1ffc2613d8efa74305e1f3752" +dependencies = [ + "bindgen 0.69.4", + "cc", + "cmake", + "dunce", + "fs_extra", + "libc", + "paste", ] [[package]] name = "aws-runtime" -version = "0.56.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07ac5cf0ff19c1bca0cea7932e11b239d1025a45696a4f44f72ea86e2b8bdd07" +checksum = "87c5f920ffd1e0526ec9e70e50bf444db50b204395a0fa7016bbf9e31ea1698f" dependencies = [ "aws-credential-types", - "aws-http", "aws-sigv4", "aws-smithy-async", "aws-smithy-eventstream", @@ -1099,24 +1090,25 @@ dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", "aws-types", - "fastrand 2.0.0", - "http", + "bytes", + "fastrand", + "http 0.2.12", + "http-body 0.4.6", "percent-encoding", + "pin-project-lite", "tracing", "uuid", ] [[package]] name = "aws-sdk-dynamodb" -version = "0.29.0" +version = "1.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b4df8750310555fa980f020f152e91013cf83d01036dab992cb64286e11431" +checksum = "e2fdd26fcd839ffa0df7a589a34f5e1a2d4c4c6d8127fe18100bf8b4d57f5d4c" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-smithy-async", - "aws-smithy-client", "aws-smithy-http", "aws-smithy-json", "aws-smithy-runtime", @@ -1124,24 +1116,22 @@ dependencies = [ "aws-smithy-types", "aws-types", "bytes", - "fastrand 2.0.0", - "http", - "regex", - "tokio-stream", + "fastrand", + "http 0.2.12", + "once_cell", + "regex-lite", "tracing", ] [[package]] name = "aws-sdk-ec2" -version = "0.29.0" +version = "1.61.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f098f12b70166afd023949291df62f7f716cb5866ac4256178cd3321d1b1b" +checksum = "7e31b40d3fc7f1f2165f4705c4293f74890bfd8a9bef37d481e7b45957a051f2" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-smithy-async", - "aws-smithy-client", "aws-smithy-http", "aws-smithy-json", "aws-smithy-query", @@ -1150,26 +1140,47 @@ dependencies = [ "aws-smithy-types", "aws-smithy-xml", "aws-types", - "fastrand 2.0.0", - "http", - "regex", - "tokio-stream", + "fastrand", + "http 0.2.12", + "once_cell", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-kms" +version = "1.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91f43512620f4b0d9e67ccf7d768fab5ed310ac2229ebb9422177abe99c36ba" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "http 0.2.12", + "once_cell", + "regex-lite", "tracing", ] [[package]] name = "aws-sdk-s3" -version = "0.29.0" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e30370b61599168d38190ad272bb91842cd81870a6ca035c05dd5726d22832c" +checksum = "558bbcec8db82a1a8af1610afcb3b10d00652d25ad366a0558eecdff2400a1d1" dependencies = [ + "ahash 0.8.11", "aws-credential-types", - "aws-http", "aws-runtime", "aws-sigv4", "aws-smithy-async", "aws-smithy-checksums", - "aws-smithy-client", "aws-smithy-eventstream", "aws-smithy-http", "aws-smithy-json", @@ -1179,27 +1190,29 @@ dependencies = [ "aws-smithy-xml", "aws-types", "bytes", - "http", - "http-body", + "fastrand", + "hex", + "hmac", + "http 0.2.12", + "http-body 0.4.6", + "lru 0.12.3", "once_cell", "percent-encoding", - "regex", - "tokio-stream", + "regex-lite", + "sha2 0.10.8", "tracing", "url", ] [[package]] name = "aws-sdk-sso" -version = "0.30.0" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "903f888ff190e64f6f5c83fb0f8d54f9c20481f1dc26359bb8896f5d99908949" +checksum = "6acca681c53374bf1d9af0e317a41d12a44902ca0f2d1e10e5cb5bb98ed74f35" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-smithy-async", - "aws-smithy-client", "aws-smithy-http", "aws-smithy-json", "aws-smithy-runtime", @@ -1207,23 +1220,43 @@ dependencies = [ "aws-smithy-types", "aws-types", "bytes", - "http", - "regex", - "tokio-stream", + "http 0.2.12", + "once_cell", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-ssooidc" +version = "1.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b79c6bdfe612503a526059c05c9ccccbf6bd9530b003673cb863e547fd7c0c9a" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "http 0.2.12", + "once_cell", + "regex-lite", "tracing", ] [[package]] name = "aws-sdk-sts" -version = "0.30.0" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47ad6bf01afc00423d781d464220bf69fb6a674ad6629cbbcb06d88cdc2be82" +checksum = "32e6ecdb2bd756f3b2383e6f0588dc10a4e65f5d551e70a56e0bfe0c884673ce" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-smithy-async", - "aws-smithy-client", "aws-smithy-http", "aws-smithy-json", "aws-smithy-query", @@ -1232,49 +1265,57 @@ dependencies = [ "aws-smithy-types", "aws-smithy-xml", "aws-types", - "http", - "regex", + "http 0.2.12", + "once_cell", + "regex-lite", "tracing", ] [[package]] name = "aws-sigv4" -version = "0.56.1" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7b28f4910bb956b7ab320b62e98096402354eca976c587d1eeccd523d9bac03" +checksum = "5df1b0fa6be58efe9d4ccc257df0a53b89cd8909e86591a13ca54817c87517be" dependencies = [ + "aws-credential-types", "aws-smithy-eventstream", "aws-smithy-http", + "aws-smithy-runtime-api", + "aws-smithy-types", "bytes", + "crypto-bigint 0.5.5", "form_urlencoded", "hex", - "hmac 0.12.1", - "http", + "hmac", + "http 0.2.12", + "http 1.1.0", "once_cell", + "p256 0.11.1", "percent-encoding", - "regex", - "sha2 0.10.6", + "ring 0.17.8", + "sha2 0.10.8", + "subtle", "time", "tracing", + "zeroize", ] [[package]] name = "aws-smithy-async" -version = "0.56.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cdb73f85528b9d19c23a496034ac53703955a59323d581c06aa27b4e4e247af" +checksum = "62220bc6e97f946ddd51b5f1361f78996e704677afc518a4ff66b7a72ea1378c" dependencies = [ "futures-util", "pin-project-lite", "tokio", - "tokio-stream", ] [[package]] name = "aws-smithy-checksums" -version = "0.56.1" +version = "0.60.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb15946af1b8d3beeff53ad991d9bff68ac22426b6d40372b958a75fa61eaed" +checksum = "48c4134cf3adaeacff34d588dbe814200357b0c466d730cf1c0d8054384a2de4" dependencies = [ "aws-smithy-http", "aws-smithy-types", @@ -1282,44 +1323,20 @@ dependencies = [ "crc32c", "crc32fast", "hex", - "http", - "http-body", - "md-5 0.10.5", + "http 0.2.12", + "http-body 0.4.6", + "md-5", "pin-project-lite", "sha1", - "sha2 0.10.6", - "tracing", -] - -[[package]] -name = "aws-smithy-client" -version = "0.56.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c27b2756264c82f830a91cb4d2d485b2d19ad5bea476d9a966e03d27f27ba59a" -dependencies = [ - "aws-smithy-async", - "aws-smithy-http", - "aws-smithy-http-tower", - "aws-smithy-types", - "bytes", - "fastrand 2.0.0", - "http", - "http-body", - "hyper", - "hyper-rustls 0.24.0", - "lazy_static", - "pin-project-lite", - "rustls 0.21.6", - "tokio", - "tower", + "sha2 0.10.8", "tracing", ] [[package]] name = "aws-smithy-eventstream" -version = "0.56.1" +version = "0.60.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "850233feab37b591b7377fd52063aa37af615687f5896807abe7f49bd4e1d25b" +checksum = "e6363078f927f612b970edf9d1903ef5cef9a64d1e8423525ebb1f0a1633c858" dependencies = [ "aws-smithy-types", "bytes", @@ -1328,57 +1345,39 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.56.1" +version = "0.60.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54cdcf365d8eee60686885f750a34c190e513677db58bbc466c44c588abf4199" +checksum = "d9cd0ae3d97daa0a2bf377a4d8e8e1362cae590c4a1aad0d40058ebca18eb91e" dependencies = [ "aws-smithy-eventstream", + "aws-smithy-runtime-api", "aws-smithy-types", "bytes", "bytes-utils", "futures-core", - "http", - "http-body", - "hyper", + "http 0.2.12", + "http-body 0.4.6", "once_cell", "percent-encoding", "pin-project-lite", "pin-utils", - "tokio", - "tokio-util 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing", -] - -[[package]] -name = "aws-smithy-http-tower" -version = "0.56.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "822de399d0ce62829a69dfa8c5cd08efdbe61a7426b953e2268f8b8b52a607bd" -dependencies = [ - "aws-smithy-http", - "aws-smithy-types", - "bytes", - "http", - "http-body", - "pin-project-lite", - "tower", "tracing", ] [[package]] name = "aws-smithy-json" -version = "0.56.1" +version = "0.60.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb1e7ab8fa7ad10c193af7ae56d2420989e9f4758bf03601a342573333ea34f" +checksum = "4683df9469ef09468dad3473d129960119a0d3593617542b7d52086c8486f2d6" dependencies = [ "aws-smithy-types", ] [[package]] name = "aws-smithy-query" -version = "0.56.1" +version = "0.60.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28556a3902091c1f768a34f6c998028921bdab8d47d92586f363f14a4a32d047" +checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb" dependencies = [ "aws-smithy-types", "urlencoding", @@ -1386,76 +1385,93 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "0.56.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "745e096b3553e7e0f40622aa04971ce52765af82bebdeeac53aa6fc82fe801e6" +checksum = "ce87155eba55e11768b8c1afa607f3e864ae82f03caf63258b37455b0ad02537" dependencies = [ "aws-smithy-async", - "aws-smithy-client", "aws-smithy-http", "aws-smithy-runtime-api", "aws-smithy-types", "bytes", - "fastrand 2.0.0", - "http", - "http-body", + "fastrand", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "http-body 1.0.1", + "httparse", + "hyper 0.14.30", + "hyper-rustls 0.24.2", "once_cell", "pin-project-lite", "pin-utils", + "rustls 0.21.12", "tokio", "tracing", ] [[package]] name = "aws-smithy-runtime-api" -version = "0.56.1" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d0ae0c9cfd57944e9711ea610b48a963fb174a53aabacc08c5794a594b1d02" +checksum = "30819352ed0a04ecf6a2f3477e344d2d1ba33d43e0f09ad9047c12e0d923616f" dependencies = [ "aws-smithy-async", - "aws-smithy-http", "aws-smithy-types", "bytes", - "http", + "http 0.2.12", + "http 1.1.0", + "pin-project-lite", "tokio", "tracing", + "zeroize", ] [[package]] name = "aws-smithy-types" -version = "0.56.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d90dbc8da2f6be461fa3c1906b20af8f79d14968fe47f2b7d29d086f62a51728" +checksum = "cfe321a6b21f5d8eabd0ade9c55d3d0335f3c3157fc2b3e87f05f34b539e4df5" dependencies = [ "base64-simd", + "bytes", + "bytes-utils", + "futures-core", + "http 0.2.12", + "http 1.1.0", + "http-body 0.4.6", + "http-body 1.0.1", + "http-body-util", "itoa", "num-integer", + "pin-project-lite", + "pin-utils", "ryu", "serde", "time", + "tokio", + "tokio-util 0.7.11", ] [[package]] name = "aws-smithy-xml" -version = "0.56.1" +version = "0.60.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01d2dedcdd8023043716cfeeb3c6c59f2d447fce365d8e194838891794b23b6" +checksum = "d123fbc2a4adc3c301652ba8e149bf4bc1d1725affb9784eb20c953ace06bf55" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "0.56.1" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85aa0451bf8af1bf22a4f028d5d28054507a14be43cb8ac0597a8471fba9edfe" +checksum = "5221b91b3e441e6675310829fd8984801b772cb1546ef6c0e54dec9f1ac13fef" dependencies = [ "aws-credential-types", "aws-smithy-async", - "aws-smithy-client", - "aws-smithy-http", + "aws-smithy-runtime-api", "aws-smithy-types", - "http", "rustc_version", "tracing", ] @@ -1467,17 +1483,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ "async-trait", - "axum-core", - "base64 0.21.2", + "axum-core 0.3.4", "bitflags 1.3.2", "bytes", "futures-util", - "headers", - "http", - "http-body", - "hyper", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.30", + "itoa", + "matchit 0.7.3", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper 0.1.2", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +dependencies = [ + "async-trait", + "axum-core 0.4.3", + "base64 0.21.7", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-util", "itoa", - "matchit 0.7.0", + "matchit 0.7.3", "memchr", "mime", "percent-encoding", @@ -1488,12 +1532,13 @@ dependencies = [ "serde_path_to_error", "serde_urlencoded", "sha1", - "sync_wrapper", + "sync_wrapper 1.0.1", "tokio", "tokio-tungstenite", "tower", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -1505,8 +1550,8 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http", - "http-body", + "http 0.2.12", + "http-body 0.4.6", "mime", "rustversion", "tower-layer", @@ -1514,41 +1559,65 @@ dependencies = [ ] [[package]] -name = "axum-extra" -version = "0.4.2" +name = "axum-core" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a320103719de37b7b4da4c8eb629d4573f6bcfd3dfe80d3208806895ccf81d" +checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" dependencies = [ - "axum", + "async-trait", "bytes", "futures-util", - "http", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", "mime", "pin-project-lite", - "tokio", - "tower", - "tower-http", + "rustversion", + "sync_wrapper 0.1.2", "tower-layer", "tower-service", + "tracing", +] + +[[package]] +name = "axum-extra" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0be6ea09c9b96cb5076af0de2e383bd2bc0c18f827cf1967bdd353e0b910d733" +dependencies = [ + "axum 0.7.5", + "axum-core 0.4.3", + "bytes", + "futures-util", + "headers", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "serde", + "tower", + "tower-layer", + "tower-service", + "tracing", ] [[package]] name = "axum-server" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447f28c85900215cc1bea282f32d4a2f22d55c5a300afdfbc661c8d6a632e063" +checksum = "c1ad46c3ec4e12f4a4b6835e173ba21c25e484c9d02b49770bf006ce5367c036" dependencies = [ - "arc-swap", "bytes", "futures-util", - "http", - "http-body", - "hyper", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-util", "pin-project-lite", - "rustls 0.21.6", - "rustls-pemfile 1.0.2", "tokio", - "tokio-rustls 0.24.0", + "tower", "tower-service", ] @@ -1559,7 +1628,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" dependencies = [ "futures-core", - "getrandom 0.2.9", + "getrandom 0.2.15", "instant", "pin-project-lite", "rand 0.8.5", @@ -1568,9 +1637,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line", "cc", @@ -1616,9 +1685,15 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.2" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64-simd" @@ -1632,18 +1707,18 @@ dependencies = [ [[package]] name = "base64-url" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c5b0a88aa36e9f095ee2e2b13fb8c5e4313e022783aedacc123328c0084916d" +checksum = "38e2b6c78c06f7288d5e3c3d683bde35a79531127c83b087e5d0d77c974b4b28" dependencies = [ - "base64 0.21.2", + "base64 0.22.1", ] [[package]] name = "base64ct" -version = "1.5.3" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bf" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bcrypt-pbkdf" @@ -1652,8 +1727,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aeac2e1fe888769f34f05ac343bbef98b14d1ffb292ab69d4608b3abc86f2a2" dependencies = [ "blowfish", - "pbkdf2 0.12.1", - "sha2 0.10.6", + "pbkdf2 0.12.2", + "sha2 0.10.8", ] [[package]] @@ -1672,20 +1747,11 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" -[[package]] -name = "beef" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" -dependencies = [ - "serde", -] - [[package]] name = "bellpepper" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b89c91b2463f99a3a527a16a5b6862f257ee8188d3cf1fbc53af06fb61c09f4f" +checksum = "9ae286c2cb403324ab644c7cc68dceb25fe52ca9429908a726d7ed272c1edf7b" dependencies = [ "bellpepper-core", "byteorder", @@ -1707,9 +1773,9 @@ dependencies = [ [[package]] name = "better_any" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b359aebd937c17c725e19efcb661200883f04c49c53e7132224dac26da39d4a0" +checksum = "1795ebc740ea791ffbe6685e0688ab1effec16c2864e0476db40bfdf0c02cb3d" dependencies = [ "better_typeid_derive", ] @@ -1720,29 +1786,29 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3deeecb812ca5300b7d3f66f730cc2ebd3511c3d36c691dd79c165d5b19a26e3" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] name = "bigdecimal" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9324c8014cd04590682b34f1e9448d38f0674d0f7b2dc553331016ef0e4e9ebc" +checksum = "51d712318a27c7150326677b321a5fa91b55f6d9034ffd67f20319e147d40cee" dependencies = [ "autocfg", "libm", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-integer", "num-traits", ] [[package]] name = "bimap" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0455254eb5c6964c4545d8bac815e1a1be4f3afe0ae695ea539c12d728d44b" +checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" [[package]] name = "bincode" @@ -1765,29 +1831,52 @@ dependencies = [ "lazy_static", "lazycell", "peeking_take_while", - "prettyplease 0.2.6", - "proc-macro2 1.0.78", - "quote 1.0.35", + "prettyplease 0.2.20", + "proc-macro2 1.0.86", + "quote 1.0.36", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.72", +] + +[[package]] +name = "bindgen" +version = "0.69.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +dependencies = [ + "bitflags 2.6.0", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "lazy_static", + "lazycell", + "log", + "prettyplease 0.2.20", + "proc-macro2 1.0.86", + "quote 1.0.36", "regex", - "rustc-hash", + "rustc-hash 1.1.0", "shlex", - "syn 2.0.48", + "syn 2.0.72", + "which", ] [[package]] name = "bip32" -version = "0.4.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30ed1d6f8437a487a266c8293aeb95b61a23261273e3e02912cdb8b68bf798b" +checksum = "aa13fae8b6255872fd86f7faf4b41168661d7d78609f7bfe6771b85c6739a15b" dependencies = [ - "bs58", - "hmac 0.12.1", - "k256 0.11.6", + "bs58 0.5.1", + "hmac", + "k256", "once_cell", - "pbkdf2 0.11.0", + "pbkdf2 0.12.2", "rand_core 0.6.4", "ripemd", - "sha2 0.10.6", + "sha2 0.10.8", "subtle", "zeroize", ] @@ -1830,9 +1919,12 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] [[package]] name = "bitmaps" @@ -1843,28 +1935,16 @@ dependencies = [ "typenum", ] -[[package]] -name = "bitvec" -version = "0.20.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" -dependencies = [ - "funty 1.1.0", - "radium 0.6.2", - "tap", - "wyz 0.2.0", -] - [[package]] name = "bitvec" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ - "funty 2.0.0", - "radium 0.7.0", + "funty", + "radium", "tap", - "wyz 0.5.1", + "wyz", ] [[package]] @@ -1910,9 +1990,9 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array", ] @@ -1925,9 +2005,9 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "block-padding" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a90ec2df9600c28a01c56c4784c9207a96d2451833aeceb8cc97e4c9548bb78" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" dependencies = [ "generic-array", ] @@ -1944,14 +2024,13 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.10" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a30d0edd9dd1c60ddb42b80341c7852f6f985279a5c1a83659dcb65899dec99" +checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" dependencies = [ "cc", "glob", "threadpool", - "which", "zeroize", ] @@ -1972,17 +2051,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "brotli" -version = "3.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor 2.3.2", -] - [[package]] name = "brotli" version = "6.0.0" @@ -1991,17 +2059,7 @@ checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", - "brotli-decompressor 4.0.1", -] - -[[package]] -name = "brotli-decompressor" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", + "brotli-decompressor", ] [[package]] @@ -2019,27 +2077,32 @@ name = "bs58" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" dependencies = [ - "sha2 0.9.9", + "sha2 0.10.8", ] [[package]] name = "bstr" -version = "1.1.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45ea9b00a7b3f2988e9a65ad3917e62123c38dba709b666506207be96d1790b" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" dependencies = [ "memchr", - "once_cell", - "regex-automata 0.1.10", + "regex-automata 0.4.7", "serde", ] [[package]] name = "bumpalo" -version = "3.11.1" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byte-slice-cast" @@ -2060,36 +2123,36 @@ dependencies = [ [[package]] name = "bytecount" -version = "0.6.3" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" +checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "bytemuck" -version = "1.15.0" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" dependencies = [ "serde", ] [[package]] name = "bytes-utils" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e47d3a8076e283f3acd27400535992edb3ba4b5bb72f8891ad8fbe7932a7d4b9" +checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" dependencies = [ "bytes", "either", @@ -2117,18 +2180,17 @@ dependencies = [ [[package]] name = "cached" -version = "0.43.0" +version = "0.51.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc2fafddf188d13788e7099295a59b99e99b2148ab2195cae454e754cc099925" +checksum = "0feb64151eed3da6107fddd2d717a6ca4b9dbd74e43784c55c841d1abfe5a295" dependencies = [ + "ahash 0.8.11", "async-trait", - "async_once", "cached_proc_macro", "cached_proc_macro_types", "futures", - "hashbrown 0.13.2", + "hashbrown 0.14.5", "instant", - "lazy_static", "once_cell", "thiserror", "tokio", @@ -2136,54 +2198,40 @@ dependencies = [ [[package]] name = "cached_proc_macro" -version = "0.16.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10ca87c81aaa3a949dbbe2b5e6c2c45dbc94ba4897e45ea31ff9ec5087be3dc" +checksum = "771aa57f3b17da6c8bcacb187bb9ec9bc81c8160e72342e67c329e0e1651a669" dependencies = [ - "cached_proc_macro_types", - "darling 0.14.2", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "darling 0.20.10", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "cached_proc_macro_types" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663" +checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" [[package]] name = "camino" -version = "1.1.2" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77df041dc383319cc661b428b6961a005db4d6808d5e12536931b1ca9556055" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" dependencies = [ "serde", ] [[package]] name = "cargo-platform" -version = "0.1.2" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ "serde", ] -[[package]] -name = "cargo_metadata" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" -dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.16", - "serde", - "serde_json", -] - [[package]] name = "cargo_metadata" version = "0.15.4" @@ -2192,7 +2240,7 @@ checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", "cargo-platform", - "semver 1.0.16", + "semver", "serde", "serde_json", "thiserror", @@ -2221,13 +2269,20 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.78" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" +checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" dependencies = [ "jobserver", + "libc", ] +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + [[package]] name = "cexpr" version = "0.6.0" @@ -2269,9 +2324,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", @@ -2279,14 +2334,14 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.48.0", + "windows-targets 0.52.6", ] [[package]] name = "ciborium" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" dependencies = [ "ciborium-io", "ciborium-ll", @@ -2295,18 +2350,18 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" [[package]] name = "ciborium-ll" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" dependencies = [ "ciborium-io", - "half 1.8.2", + "half", ] [[package]] @@ -2322,9 +2377,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.4.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", @@ -2333,45 +2388,44 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.1" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c8d502cbaec4595d2e7d5f61e318f05417bd2b66fdc3809498f0d3fdf0bea27" +checksum = "35723e6a11662c2afb578bcf0b88bf6ea8e21282a953428f240574fcc3a2b5b3" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.4.1" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5891c7bc0edb3e1c2204fc5e94009affabeb1821c9e5fdc3959536c5c0bb984d" +checksum = "49eb96cbfa7cfa35017b7cd548c75b14c3118c98b423041d70562665e07fb0fa" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim", - "terminal_size 0.2.6", + "strsim 0.11.1", + "terminal_size", ] [[package]] name = "clap_derive" -version = "4.4.0" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fd1a5729c4548118d7d70ff234a44868d00489a4b6597b0b020918a0e91a1a" +checksum = "5d029b67f89d30bbb547c89fd5161293c0aec155fc691d7924b64550662db93e" dependencies = [ - "heck", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "heck 0.5.0", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "clipboard-win" @@ -2384,6 +2438,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "cmake" +version = "0.1.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +dependencies = [ + "cc", +] + [[package]] name = "codespan" version = "0.11.1" @@ -2413,9 +2476,9 @@ checksum = "08abddbaad209601e53c7dd4308d8c04c06f17bb7df006434e586a22b83be45a" [[package]] name = "color-eyre" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a667583cca8c4f8436db8de46ea8233c42a7d9ae424a82d338f2e4675229204" +checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5" dependencies = [ "backtrace", "color-spantrace", @@ -2428,9 +2491,9 @@ dependencies = [ [[package]] name = "color-spantrace" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba75b3d9449ecdccb27ecbc479fdc0b87fa2dd43d2f8298f9bf0e59aacc8dce" +checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" dependencies = [ "once_cell", "owo-colors 3.5.0", @@ -2440,26 +2503,25 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "colored" -version = "2.0.4" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" dependencies = [ - "is-terminal", "lazy_static", "windows-sys 0.48.0", ] [[package]] name = "combine" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ "bytes", "memchr", @@ -2467,11 +2529,11 @@ dependencies = [ [[package]] name = "comfy-table" -version = "6.1.4" +version = "6.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e7b787b0dc42e8111badfdbe4c3059158ccb2db8780352fa1b01e8ccf45cc4d" +checksum = "7e959d788268e3bf9d35ace83e81b124190378e4c91c9067524675e33394b8ba" dependencies = [ - "crossterm", + "crossterm 0.26.1", "strum 0.24.1", "strum_macros 0.24.3", "unicode-width", @@ -2499,7 +2561,7 @@ dependencies = [ "anyhow", "arc-swap", "async-trait", - "base64 0.21.2", + "base64 0.22.1", "bcs", "bytes", "cfg-if", @@ -2512,10 +2574,10 @@ dependencies = [ "mockall", "mysten-metrics", "mysten-network", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "prometheus", - "prost 0.12.3", - "quinn-proto", + "prost 0.13.1", + "quinn-proto 0.10.6", "rand 0.8.5", "rstest", "serde", @@ -2525,7 +2587,7 @@ dependencies = [ "tempfile", "thiserror", "tokio", - "tonic 0.11.0", + "tonic 0.12.1", "tonic-build", "tower", "tracing", @@ -2534,35 +2596,35 @@ dependencies = [ [[package]] name = "console" -version = "0.15.4" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b6515d269224923b26b5febea2ed42b2d5f2ce37284a4dd670fedd6cb8347a" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" dependencies = [ "encode_unicode 0.3.6", "lazy_static", "libc", "unicode-width", - "windows-sys 0.42.0", + "windows-sys 0.52.0", ] [[package]] name = "console-api" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd326812b3fd01da5bb1af7d340d0d555fd3d4b641e7f1dfcf5962a902952787" +checksum = "a257c22cd7e487dd4a13d413beabc512c5052f0bc048db0da6a84c3d8a6142fd" dependencies = [ "futures-core", - "prost 0.12.3", - "prost-types", - "tonic 0.10.0", + "prost 0.12.6", + "prost-types 0.12.6", + "tonic 0.11.0", "tracing-core", ] [[package]] name = "console-subscriber" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7481d4c57092cd1c19dd541b92bdce883de840df30aa5d03fd48a3935c01842e" +checksum = "31c4cc54bae66f7d9188996404abdf7fdfa23034ef8e43478c8810828abad758" dependencies = [ "console-api", "crossbeam-channel", @@ -2570,13 +2632,14 @@ dependencies = [ "futures-task", "hdrhistogram", "humantime", - "prost-types", + "prost 0.12.6", + "prost-types 0.12.6", "serde", "serde_json", "thread_local", "tokio", "tokio-stream", - "tonic 0.10.0", + "tonic 0.11.0", "tracing", "tracing-core", "tracing-subscriber", @@ -2584,9 +2647,9 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.9.2" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "const-random" @@ -2603,16 +2666,16 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.15", "once_cell", "tiny-keccak", ] [[package]] name = "const-str" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aca749d3d3f5b87a0d6100509879f9cf486ab510803a4a4e1001da1ff61c2bd6" +checksum = "3618cccc083bb987a415d85c02ca6c9994ea5b44731ec28b9ecf09658655fba9" [[package]] name = "constant_time_eq" @@ -2634,9 +2697,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -2644,9 +2707,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core2" @@ -2659,18 +2722,18 @@ dependencies = [ [[package]] name = "cpp_demangle" -version = "0.4.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b446fd40bcc17eddd6a4a78f24315eb90afdb3334999ddfd4909985c47722442" +checksum = "7e8227005286ec39567949b33df9896bcadfa6051bccca2488129f108ca23119" dependencies = [ "cfg-if", ] [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -2686,9 +2749,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] @@ -2733,46 +2796,37 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.13" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset 0.7.1", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.14" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" -dependencies = [ - "cfg-if", -] +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crossterm" @@ -2784,7 +2838,23 @@ dependencies = [ "crossterm_winapi", "libc", "mio", - "parking_lot 0.12.1", + "parking_lot 0.12.3", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84cda67535339806297f1b331d6dd6320470d2a0fe65381e79ee9e156dd3d13" +dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi", + "libc", + "mio", + "parking_lot 0.12.3", "signal-hook", "signal-hook-mio", "winapi", @@ -2792,9 +2862,9 @@ dependencies = [ [[package]] name = "crossterm_winapi" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ae1b35a484aa10e07fe0638d02301c5ad24de82d310ccbd2f3693da5f09bf1c" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" dependencies = [ "winapi", ] @@ -2819,9 +2889,9 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.5.1" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c2538c4e68e52548bacb3e83ac549f903d44f011ac9d5abb5e132e67d0808f7" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", "rand_core 0.6.4", @@ -2840,21 +2910,11 @@ dependencies = [ "typenum", ] -[[package]] -name = "crypto-mac" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e" -dependencies = [ - "generic-array", - "subtle", -] - [[package]] name = "csv" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b015497079b9a9d69c02ad25de6c0a6edef051ea6360a327d0bd05802ef64ad" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" dependencies = [ "csv-core", "itoa", @@ -2864,23 +2924,13 @@ dependencies = [ [[package]] name = "csv-core" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" dependencies = [ "memchr", ] -[[package]] -name = "ctor" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" -dependencies = [ - "quote 1.0.35", - "syn 1.0.107", -] - [[package]] name = "ctr" version = "0.9.2" @@ -2905,16 +2955,15 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.1.0" +version = "4.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622178105f911d937a42cdb140730ba4a3ed2becd8ae6ce39c7d28b5d75d4588" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ "cfg-if", "cpufeatures", "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", - "platforms", "rustc_version", "subtle", "zeroize", @@ -2922,13 +2971,13 @@ dependencies = [ [[package]] name = "curve25519-dalek-derive" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] @@ -2957,118 +3006,74 @@ dependencies = [ "zeroize", ] -[[package]] -name = "cxx" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d1075c37807dcf850c379432f0df05ba52cc30f279c5cfc43cc221ce7f8579" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5044281f61b27bc598f2f6647d480aed48d2bf52d6eb0b627d84c0361b17aa70" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2 1.0.78", - "quote 1.0.35", - "scratch", - "syn 1.0.107", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61b50bc93ba22c27b0d31128d2d130a0a6b3d267ae27ef7e4fae2167dfe8781c" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e61fda7e62115119469c7b3591fd913ecca96fb766cfd3f2e2502ab7bc87a5" -dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", -] - [[package]] name = "darling" -version = "0.14.2" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfa" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" dependencies = [ - "darling_core 0.14.2", - "darling_macro 0.14.2", + "darling_core 0.14.4", + "darling_macro 0.14.4", ] [[package]] name = "darling" -version = "0.20.3" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ - "darling_core 0.20.3", - "darling_macro 0.20.3", + "darling_core 0.20.10", + "darling_macro 0.20.10", ] [[package]] name = "darling_core" -version = "0.14.2" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859f" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.78", - "quote 1.0.35", - "strsim", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "strsim 0.10.0", + "syn 1.0.109", ] [[package]] name = "darling_core" -version = "0.20.3" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.78", - "quote 1.0.35", - "strsim", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "strsim 0.11.1", + "syn 2.0.72", ] [[package]] name = "darling_macro" -version = "0.14.2" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7e" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" dependencies = [ - "darling_core 0.14.2", - "quote 1.0.35", - "syn 1.0.107", + "darling_core 0.14.4", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ - "darling_core 0.20.3", - "quote 1.0.35", - "syn 2.0.48", + "darling_core 0.20.10", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] @@ -3084,23 +3089,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core 0.9.9", + "parking_lot_core 0.9.10", ] [[package]] name = "data-encoding" -version = "2.3.3" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "data-encoding-macro" -version = "0.1.12" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86927b7cd2fe88fa698b87404b287ab98d1a0063a34071d92e575b72d3029aca" +checksum = "f1559b6cba622276d6d63706db152618eeb15b89b3e4041446b05876e352e639" dependencies = [ "data-encoding", "data-encoding-macro-internal", @@ -3108,12 +3113,12 @@ dependencies = [ [[package]] name = "data-encoding-macro-internal" -version = "0.1.10" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5bbed42daaa95e780b60a50546aa345b8413a1e46f9a40a12907d3598f038db" +checksum = "332d754c0af53bc87c108fed664d121ecf59207ec4196041f04d6ab9002ad33f" dependencies = [ "data-encoding", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -3148,9 +3153,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.5" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e58dffcdcc8ee7b22f0c1f71a69243d7c2d9ad87b5a14361f2424a1565c219" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", "pem-rfc7468 0.7.0", @@ -3159,14 +3164,14 @@ dependencies = [ [[package]] name = "der-parser" -version = "8.1.0" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d4bc9b0db0a0df9ae64634ac5bdefb7afcb534e182275ca0beadbe486701c1" +checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" dependencies = [ "asn1-rs", "displaydoc", "nom", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-traits", "rusticata-macros", ] @@ -3187,9 +3192,9 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] @@ -3198,73 +3203,73 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e79116f119dd1dba1abf1f3405f03b9b0e79a27a3883864bfebded8a3dc768cd" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] name = "derive_arbitrary" -version = "1.3.0" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cdeb9ec472d588e539a818b2dee436825730da08ad0017c4b1a17676bdc8b7" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "derive_builder" -version = "0.12.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8" +checksum = "0350b5cb0331628a5916d6c5c0b72e97393b8b6b03b47a9284f4e7f5a405ffd7" dependencies = [ "derive_builder_macro", ] [[package]] name = "derive_builder_core" -version = "0.12.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" +checksum = "d48cda787f839151732d396ac69e3473923d54312c070ee21e9effcaa8ca0b1d" dependencies = [ - "darling 0.14.2", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "darling 0.20.10", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "derive_builder_macro" -version = "0.12.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e" +checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 1.0.107", + "syn 2.0.72", ] [[package]] name = "derive_more" -version = "0.99.17" +version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "convert_case", - "proc-macro2 1.0.78", - "quote 1.0.35", + "proc-macro2 1.0.86", + "quote 1.0.36", "rustc_version", - "syn 1.0.107", + "syn 2.0.72", ] [[package]] name = "diesel" -version = "2.1.4" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62c6fcf842f17f8c78ecf7c81d75c5ce84436b41ee07e03f490fbb5f5a8731d8" +checksum = "bf97ee7261bb708fa3402fa9c17a54b70e90e3cb98afb3dc8999d5512cb03f94" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.6.0", "byteorder", "chrono", "diesel_derives", @@ -3276,33 +3281,34 @@ dependencies = [ [[package]] name = "diesel-derive-enum" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b10c03b954333d05bfd5be1d8a74eae2c9ca77b86e0f1c3a1ea29c49da1d6c2" +checksum = "81c5131a2895ef64741dad1d483f358c2a229a3a2d1b256778cdc5e146db64d4" dependencies = [ - "heck", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "heck 0.4.1", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "diesel_derives" -version = "2.1.2" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8337737574f55a468005a83499da720f20c65586241ffea339db9ecdfd2b44" +checksum = "d6ff2be1e7312c858b2ef974f5c7089833ae57b5311b334b30923af58e5718d8" dependencies = [ "diesel_table_macro_syntax", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "dsl_auto_type", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "diesel_migrations" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6036b3f0120c5961381b570ee20a02432d7e2d27ea60de9578799cf9156914ac" +checksum = "8a73ce704bad4231f001bff3314d91dce4aba0770cee8b233991859abc15c1f6" dependencies = [ "diesel", "migrations_internals", @@ -3311,11 +3317,11 @@ dependencies = [ [[package]] name = "diesel_table_macro_syntax" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc5557efc453706fed5e4fa85006fe9817c224c3f480a34c7e5959fd700921c5" +checksum = "209c735641a413bc68c4923a9d6ad4bcb3ca306b794edaa7eb0b3228a99ffb25" dependencies = [ - "syn 2.0.48", + "syn 2.0.72", ] [[package]] @@ -3360,7 +3366,7 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer 0.10.3", + "block-buffer 0.10.4", "const-oid", "crypto-common", "subtle", @@ -3430,20 +3436,20 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "dissimilar" -version = "1.0.5" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd5f0c7e4bd266b8ab2550e6238d2e74977c23c15536ac7be45e9c95e2e3fbbb" +checksum = "59f8e79d1fbf76bdfbde321e902714bf6c49df88a7dda6fc682fc2979226962d" [[package]] name = "doc-comment" @@ -3465,9 +3471,23 @@ checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "downcast-rs" -version = "1.2.0" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dsl_auto_type" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +checksum = "c5d9abe6314103864cc2d8901b7ae224e0ab1a103a0a416661b4097b0779b607" +dependencies = [ + "darling 0.20.10", + "either", + "heck 0.5.0", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", +] [[package]] name = "dunce" @@ -3477,23 +3497,23 @@ checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" [[package]] name = "duration-str" -version = "0.5.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f94be4825ff6a563f1bfbdb786ae10c687333c7524fade954e2271170e7f7e6d" +checksum = "709d653e7c92498eb29fb86a2a6f0f3502b97530f33aedb32ef848d4d28b31a3" dependencies = [ "chrono", - "nom", "rust_decimal", "serde", "thiserror", "time", + "winnow 0.6.16", ] [[package]] name = "dyn-clone" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "ec-gpu" @@ -3515,16 +3535,17 @@ dependencies = [ [[package]] name = "ecdsa" -version = "0.16.6" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a48e5d537b8a30c0b023116d981b16334be1485af7ca68db3a2b7024cbc957fd" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ - "der 0.7.5", + "der 0.7.9", "digest 0.10.7", - "elliptic-curve 0.13.4", + "elliptic-curve 0.13.8", "rfc6979 0.4.0", "serdect", - "signature 2.0.0", + "signature 2.2.0", + "spki 0.7.3", ] [[package]] @@ -3541,13 +3562,13 @@ dependencies = [ [[package]] name = "ed25519" -version = "2.2.2" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60f6d271ca33075c88028be6f04d502853d63a5ece419d269c15315d4fc1cf1d" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ "pkcs8 0.10.2", "serde", - "signature 2.0.0", + "signature 2.2.0", ] [[package]] @@ -3567,15 +3588,16 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ - "curve25519-dalek 4.1.0", - "ed25519 2.2.2", + "curve25519-dalek 4.1.3", + "ed25519 2.2.3", "rand_core 0.6.4", "serde", - "sha2 0.10.6", + "sha2 0.10.8", + "subtle", "zeroize", ] @@ -3600,21 +3622,21 @@ version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" dependencies = [ - "curve25519-dalek 4.1.0", - "ed25519 2.2.2", - "hashbrown 0.14.3", + "curve25519-dalek 4.1.3", + "ed25519 2.2.3", + "hashbrown 0.14.5", "hex", "rand_core 0.6.4", "serde", - "sha2 0.10.6", + "sha2 0.10.8", "zeroize", ] [[package]] name = "either" -version = "1.8.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "elliptic-curve" @@ -3629,6 +3651,7 @@ dependencies = [ "ff 0.12.1", "generic-array", "group 0.12.1", + "pkcs8 0.9.0", "rand_core 0.6.4", "sec1 0.3.0", "subtle", @@ -3637,12 +3660,12 @@ dependencies = [ [[package]] name = "elliptic-curve" -version = "0.13.4" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75c71eaa367f2e5d556414a8eea812bc62985c879748d6403edabd9cb03f16e7" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct 0.2.0", - "crypto-bigint 0.5.1", + "crypto-bigint 0.5.5", "digest 0.10.7", "ff 0.13.0", "generic-array", @@ -3650,7 +3673,7 @@ dependencies = [ "pem-rfc7468 0.7.0", "pkcs8 0.10.2", "rand_core 0.6.4", - "sec1 0.7.1", + "sec1 0.7.3", "serdect", "subtle", "zeroize", @@ -3670,9 +3693,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.31" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] @@ -3683,23 +3706,35 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" +[[package]] +name = "enum-as-inner" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" +dependencies = [ + "heck 0.4.1", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", +] + [[package]] name = "enum-compat-util" version = "0.1.0" dependencies = [ - "serde_yaml 0.8.26", + "serde_yaml", ] [[package]] name = "enum_dispatch" -version = "0.3.9" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1693044dcf452888dd3a6a6a0dab67f0652094e3920dfe029a54d2f37d9b7394" +checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" dependencies = [ "once_cell", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] @@ -3720,44 +3755,14 @@ dependencies = [ [[package]] name = "errno" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" -dependencies = [ - "errno-dragonfly", - "libc", - "winapi", -] - -[[package]] -name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", ] -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "error-chain" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" -dependencies = [ - "version_check", -] - [[package]] name = "error-code" version = "2.3.1" @@ -3770,21 +3775,15 @@ dependencies = [ [[package]] name = "ethnum" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0198b9d0078e0f30dedc7acbb21c974e838fc8fae3ee170128658a98cb2c1c04" - -[[package]] -name = "event-listener" -version = "2.5.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +checksum = "b90ca2580b73ab6a1f724b76ca11ab632df820fd6040c336200d2c1df7b3c82c" [[package]] name = "expect-test" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d9eafeadd538e68fb28016364c9732d78e420b9ff8853fa5e4058861e9f8d3" +checksum = "9e0be0a561335815e06dab7c62e50353134c796e7a6155402a64bcff66b6a5e0" dependencies = [ "dissimilar", "once_cell", @@ -3792,9 +3791,9 @@ dependencies = [ [[package]] name = "eyre" -version = "0.6.8" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" dependencies = [ "indenter", "once_cell", @@ -3822,8 +3821,8 @@ dependencies = [ [[package]] name = "fastcrypto" -version = "0.1.7" -source = "git+https://github.com/MystenLabs/fastcrypto?rev=d7a33a9f79271bfc19fc4c8816ea5467e4205e17#d7a33a9f79271bfc19fc4c8816ea5467e4205e17" +version = "0.1.8" +source = "git+https://github.com/MystenLabs/fastcrypto?rev=fastcrypto-zkp-v0.1.3#56f6223b84ada922b6cb2c672c69db2ea3dc6a13" dependencies = [ "aes", "aes-gcm", @@ -3837,37 +3836,37 @@ dependencies = [ "bincode", "blake2", "blst", - "bs58", + "bs58 0.4.0", "cbc", "ctr", "curve25519-dalek-ng", "derive_more", "digest 0.10.7", - "ecdsa 0.16.6", + "ecdsa 0.16.9", "ed25519-consensus", - "elliptic-curve 0.13.4", + "elliptic-curve 0.13.8", "eyre", "fastcrypto-derive", "generic-array", "hex", - "hex-literal 0.4.1", + "hex-literal", "hkdf", "lazy_static", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "once_cell", - "p256", + "p256 0.13.2", "rand 0.8.5", "readonly", "rfc6979 0.4.0", - "rsa", + "rsa 0.8.2", "schemars", "secp256k1", "serde", "serde_json", "serde_with", - "sha2 0.10.6", - "sha3 0.10.6", - "signature 2.0.0", + "sha2 0.10.8", + "sha3 0.10.8", + "signature 2.2.0", "static_assertions", "thiserror", "tokio", @@ -3878,16 +3877,16 @@ dependencies = [ [[package]] name = "fastcrypto-derive" version = "0.1.3" -source = "git+https://github.com/MystenLabs/fastcrypto?rev=d7a33a9f79271bfc19fc4c8816ea5467e4205e17#d7a33a9f79271bfc19fc4c8816ea5467e4205e17" +source = "git+https://github.com/MystenLabs/fastcrypto?rev=fastcrypto-zkp-v0.1.3#56f6223b84ada922b6cb2c672c69db2ea3dc6a13" dependencies = [ - "quote 1.0.35", - "syn 1.0.107", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] name = "fastcrypto-tbls" version = "0.1.0" -source = "git+https://github.com/MystenLabs/fastcrypto?rev=d7a33a9f79271bfc19fc4c8816ea5467e4205e17#d7a33a9f79271bfc19fc4c8816ea5467e4205e17" +source = "git+https://github.com/MystenLabs/fastcrypto?rev=fastcrypto-zkp-v0.1.3#56f6223b84ada922b6cb2c672c69db2ea3dc6a13" dependencies = [ "bcs", "digest 0.10.7", @@ -3896,7 +3895,7 @@ dependencies = [ "itertools 0.10.5", "rand 0.8.5", "serde", - "sha3 0.10.6", + "sha3 0.10.8", "tap", "tracing", "typenum", @@ -3904,8 +3903,8 @@ dependencies = [ [[package]] name = "fastcrypto-zkp" -version = "0.1.2" -source = "git+https://github.com/MystenLabs/fastcrypto?rev=d7a33a9f79271bfc19fc4c8816ea5467e4205e17#d7a33a9f79271bfc19fc4c8816ea5467e4205e17" +version = "0.1.3" +source = "git+https://github.com/MystenLabs/fastcrypto?rev=fastcrypto-zkp-v0.1.3#56f6223b84ada922b6cb2c672c69db2ea3dc6a13" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -3921,12 +3920,12 @@ dependencies = [ "fastcrypto", "ff 0.13.0", "im", - "itertools 0.12.0", + "itertools 0.12.1", "lazy_static", "neptune", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "once_cell", - "reqwest", + "reqwest 0.11.27", "schemars", "serde", "serde_json", @@ -3935,28 +3934,19 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" -dependencies = [ - "instant", -] - -[[package]] -name = "fastrand" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "fd-lock" -version = "3.0.8" +version = "3.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb21c69b9fea5e15dbc1049e4b77145dd0ba1c84019c488102de0dc4ea4b0a27" +checksum = "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5" dependencies = [ "cfg-if", - "rustix 0.36.6", - "windows-sys 0.42.0", + "rustix", + "windows-sys 0.48.0", ] [[package]] @@ -3984,7 +3974,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ - "bitvec 1.0.1", + "bitvec", "byteorder", "ff_derive", "rand_core 0.6.4", @@ -4002,27 +3992,27 @@ dependencies = [ "num-bigint 0.3.3", "num-integer", "num-traits", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] name = "fiat-crypto" -version = "0.2.1" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0870c84016d4b481be5c9f323c24f65e31e901ae618f0e80f4308fb00de1d2d" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "filetime" -version = "0.2.22" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", - "windows-sys 0.48.0", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", ] [[package]] @@ -4037,18 +4027,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "fixed-hash" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" -dependencies = [ - "byteorder", - "rand 0.8.5", - "rustc-hex", - "static_assertions", -] - [[package]] name = "fixed-hash" version = "0.8.0" @@ -4075,9 +4053,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flatbuffers" -version = "23.5.26" +version = "24.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dac53e22462d78c16d64a1cd22371b54cc3fe94aa15e7886a2fa6e5d1ab8640" +checksum = "8add37afff2d4ffa83bc748a70b4b1370984f6980768554182424ef71447c35f" dependencies = [ "bitflags 1.3.2", "rustc_version", @@ -4085,9 +4063,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", @@ -4138,12 +4116,6 @@ dependencies = [ "libc", ] -[[package]] -name = "funty" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" - [[package]] name = "funty" version = "2.0.0" @@ -4199,30 +4171,15 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" -[[package]] -name = "futures-lite" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" -dependencies = [ - "fastrand 1.8.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - [[package]] name = "futures-macro" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] @@ -4239,9 +4196,13 @@ checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +dependencies = [ + "gloo-timers 0.2.6", + "send_wrapper", +] [[package]] name = "futures-util" @@ -4263,17 +4224,16 @@ dependencies = [ [[package]] name = "gcp-bigquery-client" -version = "0.18.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0ce6fcbdaca0a4521a734f2bc7f2f6bd872fe40576e24f8bd0b05732c19a74f" +checksum = "ebc3e5c4b8a072ca074ab0d4f53dc6b04f45eb9bc0cc046a4a1428c8498af71e" dependencies = [ "async-stream", "async-trait", "dyn-clone", - "hyper", - "hyper-rustls 0.24.0", + "hyper 1.4.1", "log", - "reqwest", + "reqwest 0.12.5", "serde", "serde_json", "thiserror", @@ -4309,9 +4269,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "js-sys", @@ -4327,16 +4287,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e45727250e75cc04ff2846a66397da8ef2b3db8e40e0cef4df67950a07621eb9" dependencies = [ "proc-macro-error", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] name = "ghash" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" dependencies = [ "opaque-debug", "polyval", @@ -4350,24 +4310,22 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "git-version" -version = "0.3.5" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6b0decc02f4636b9ccad390dcbe77b722a77efedfa393caf8379a51d5c61899" +checksum = "1ad568aa3db0fcbc81f2f116137f263d7304f512a1209b35b85150d3ef88ad19" dependencies = [ "git-version-macro", - "proc-macro-hack", ] [[package]] name = "git-version-macro" -version = "0.3.5" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe69f1cbdb6e28af2bac214e943b99ce8a0a06b447d15d3e61161b0423139f3f" +checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" dependencies = [ - "proc-macro-hack", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] @@ -4377,16 +4335,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] -name = "globset" -version = "0.4.10" +name = "gloo-net" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" +checksum = "43aaa242d1239a8822c15c645f02166398da4f8b5c4bae795c1f5b44e9eee173" dependencies = [ - "aho-corasick 0.7.20", - "bstr", - "fnv", - "log", - "regex", + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils", + "http 0.2.12", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", ] [[package]] @@ -4401,11 +4379,24 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "gloo-utils" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "governor" -version = "0.6.0" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "821239e5672ff23e2a7060901fa622950bbd80b649cdaadd78d1c1767ed14eb4" +checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b" dependencies = [ "cfg-if", "dashmap", @@ -4413,10 +4404,12 @@ dependencies = [ "futures-timer", "no-std-compat", "nonzero_ext", - "parking_lot 0.12.1", + "parking_lot 0.12.3", + "portable-atomic", "quanta", "rand 0.8.5", "smallvec", + "spinning_top", ] [[package]] @@ -4445,34 +4438,47 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.24" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", "futures-core", "futures-sink", "futures-util", - "http", + "http 0.2.12", "indexmap 2.2.6", "slab", "tokio", - "tokio-util 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-util 0.7.11", "tracing", ] [[package]] -name = "half" -version = "1.8.2" +name = "h2" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util 0.7.11", + "tracing", +] [[package]] name = "half" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" dependencies = [ "cfg-if", "crunchy", @@ -4481,9 +4487,9 @@ dependencies = [ [[package]] name = "handlebars" -version = "4.3.7" +version = "5.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c3372087601b532857d332f5957cbae686da52bb7810bf038c3e3c3cc2fa0d" +checksum = "d08485b96a0e6393e9e4d1b8d48cf74ad6c063cd905eb33f42c1ce3f0377539b" dependencies = [ "log", "pest", @@ -4513,9 +4519,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash 0.8.11", "allocator-api2", @@ -4524,11 +4530,11 @@ dependencies = [ [[package]] name = "hdrhistogram" -version = "7.5.2" +version = "7.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f19b9f54f7c7f55e31401bb647626ce0cf0f67b0004982ce815b3ee72a02aa8" +checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" dependencies = [ - "base64 0.13.1", + "base64 0.21.7", "byteorder", "crossbeam-channel", "flate2", @@ -4538,15 +4544,14 @@ dependencies = [ [[package]] name = "headers" -version = "0.3.8" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" +checksum = "322106e6bd0cba2d5ead589ddb8150a13d7c4217cf80d7c4f682ca994ccc6aa9" dependencies = [ - "base64 0.13.1", - "bitflags 1.3.2", + "base64 0.21.7", "bytes", "headers-core", - "http", + "http 1.1.0", "httpdate", "mime", "sha1", @@ -4554,11 +4559,11 @@ dependencies = [ [[package]] name = "headers-core" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http", + "http 1.1.0", ] [[package]] @@ -4567,11 +4572,17 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -4582,12 +4593,6 @@ dependencies = [ "serde", ] -[[package]] -name = "hex-literal" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" - [[package]] name = "hex-literal" version = "0.4.1" @@ -4596,21 +4601,11 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "hkdf" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" -dependencies = [ - "hmac 0.12.1", -] - -[[package]] -name = "hmac" -version = "0.11.0" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ - "crypto-mac", - "digest 0.9.0", + "hmac", ] [[package]] @@ -4630,18 +4625,18 @@ checksum = "77e806677ce663d0a199541030c816847b36e8dc095f70dae4a4f4ad63da5383" [[package]] name = "home" -version = "0.5.4" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747309b4b440c06d57b0b25f2aee03ee9b5e5397d288c60e21fc709bb98a7408" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] name = "http" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -4649,33 +4644,67 @@ dependencies = [ ] [[package]] -name = "http-body" -version = "0.4.5" +name = "http" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", - "http", - "pin-project-lite", + "fnv", + "itoa", ] [[package]] -name = "http-range-header" -version = "0.3.0" +name = "http-body" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] [[package]] -name = "httparse" -version = "1.8.0" +name = "http-body" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.1.0", +] [[package]] -name = "httpdate" -version = "1.0.2" +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "http-range-header" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08a397c49fec283e3d6211adbe480be95aae5f304cfb923e9970e08956d5168a" + +[[package]] +name = "httparse" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -4685,58 +4714,100 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.26" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", - "h2", - "http", - "http-body", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.9", + "socket2 0.5.7", "tokio", "tower-service", "tracing", "want", ] +[[package]] +name = "hyper" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.1", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + [[package]] name = "hyper-rustls" -version = "0.23.2" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ - "http", - "hyper", + "futures-util", + "http 0.2.12", + "hyper 0.14.30", "log", - "rustls 0.20.7", - "rustls-native-certs", + "rustls 0.21.12", + "rustls-native-certs 0.6.3", "tokio", - "tokio-rustls 0.23.4", - "webpki-roots 0.22.6", + "tokio-rustls 0.24.1", ] [[package]] name = "hyper-rustls" -version = "0.24.0" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "399c78f9338483cb7e630c8474b07268983c6bd5acee012e4211f9f7bb21b070" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper 0.14.30", + "log", + "rustls 0.22.4", + "rustls-native-certs 0.7.1", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.25.0", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0646026eb1b3eea4cd9ba47912ea5ce9cc07713d105b1a14698f4e6433d348b7" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ - "http", - "hyper", + "futures-util", + "http 1.1.0", + "hyper 1.4.1", + "hyper-util", "log", - "rustls 0.21.6", - "rustls-native-certs", + "rustls 0.23.12", + "rustls-native-certs 0.7.1", + "rustls-pki-types", "tokio", - "tokio-rustls 0.24.0", - "webpki-roots 0.23.1", + "tokio-rustls 0.26.0", + "tower-service", + "webpki-roots 0.26.3", ] [[package]] @@ -4745,34 +4816,66 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper", + "hyper 0.14.30", "pin-project-lite", "tokio", "tokio-io-timeout", ] +[[package]] +name = "hyper-timeout" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" +dependencies = [ + "hyper 1.4.1", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "hyper 1.4.1", + "pin-project-lite", + "socket2 0.5.7", + "tokio", + "tower", + "tower-service", + "tracing", +] + [[package]] name = "iana-time-zone" -version = "0.1.53" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "winapi", + "windows-core", ] [[package]] name = "iana-time-zone-haiku" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "cxx", - "cxx-build", + "cc", ] [[package]] @@ -4811,31 +4914,13 @@ dependencies = [ "version_check", ] -[[package]] -name = "impl-codec" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" -dependencies = [ - "parity-scale-codec 2.3.1", -] - [[package]] name = "impl-codec" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" dependencies = [ - "parity-scale-codec 3.6.5", -] - -[[package]] -name = "impl-serde" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" -dependencies = [ - "serde", + "parity-scale-codec", ] [[package]] @@ -4853,9 +4938,9 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] @@ -4882,17 +4967,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "serde", ] [[package]] name = "indicatif" -version = "0.17.2" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4295cbb7573c16d310e99e713cf9e75101eb190ab31fccd35f2d2691b4352b19" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ "console", + "instant", "number_prefix", "portable-atomic", "unicode-width", @@ -4924,7 +5010,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ - "block-padding 0.3.2", + "block-padding 0.3.3", "generic-array", ] @@ -4935,7 +5021,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c33e7c1ddeb15c9abcbfef6029d8e29f69b52b6d6c891031b88ed91b5065803b" dependencies = [ "bitflags 1.3.2", - "crossterm", + "crossterm 0.25.0", "dyn-clone", "lazy_static", "newline-converter", @@ -4946,9 +5032,9 @@ dependencies = [ [[package]] name = "insta" -version = "1.26.0" +version = "1.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f0f08b46e4379744de2ab67aa8f7de3ffd1da3e275adc41fcc82053ede46ff" +checksum = "810ae6042d48e2c9e9215043563a58a80b877bc863228a74cf10c49d4620a6f5" dependencies = [ "console", "lazy_static", @@ -4957,14 +5043,13 @@ dependencies = [ "pest_derive", "serde", "similar", - "yaml-rust", ] [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", "js-sys", @@ -4988,17 +5073,7 @@ dependencies = [ "dashmap", "hashbrown 0.12.3", "once_cell", - "parking_lot 0.12.1", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" -dependencies = [ - "libc", - "windows-sys 0.42.0", + "parking_lot 0.12.3", ] [[package]] @@ -5010,6 +5085,8 @@ dependencies = [ "assert_cmd", "async-recursion", "async-trait", + "aws-config", + "aws-sdk-kms", "bcs", "bip32", "camino", @@ -5054,22 +5131,20 @@ dependencies = [ "move-package", "move-vm-profiler", "msim", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "prometheus", "rand 0.8.5", "regex", - "reqwest", - "rusoto_core", - "rusoto_kms", + "reqwest 0.12.5", "rustyline", "rustyline-derive", "serde", "serde_json", - "serde_yaml 0.8.26", + "serde_yaml", "shared-crypto", "shell-words", "shlex", - "signature 1.6.4", + "signature 2.2.0", "tabled", "tap", "telemetry-subscribers", @@ -5103,7 +5178,7 @@ dependencies = [ "move-vm-profiler", "move-vm-runtime", "move-vm-types", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "serde", "tracing", ] @@ -5137,7 +5212,7 @@ dependencies = [ "move-vm-profiler", "move-vm-runtime-v0", "move-vm-types", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "serde", "tracing", ] @@ -5150,7 +5225,7 @@ dependencies = [ "arrow", "arrow-array", "async-trait", - "axum", + "axum 0.7.5", "bcs", "byteorder", "bytes", @@ -5173,7 +5248,7 @@ dependencies = [ "move-core-types", "mysten-metrics", "num_enum", - "object_store 0.7.0", + "object_store", "parquet", "prometheus", "rocksdb", @@ -5181,8 +5256,7 @@ dependencies = [ "serde_json", "simulacrum", "snowflake-api", - "strum 0.24.1", - "strum_macros 0.24.3", + "strum 0.26.3", "tap", "telemetry-subscribers", "tempfile", @@ -5199,9 +5273,9 @@ dependencies = [ name = "iota-analytics-indexer-derive" version = "1.22.0" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] @@ -5226,7 +5300,7 @@ dependencies = [ "move-core-types", "move-package", "num_enum", - "object_store 0.7.0", + "object_store", "prometheus", "rand 0.8.5", "serde", @@ -5254,12 +5328,13 @@ version = "0.0.1" dependencies = [ "async-trait", "aws-config", + "aws-runtime", "aws-sdk-ec2", "aws-smithy-http", "aws-smithy-runtime-api", "clap", "color-eyre", - "crossterm", + "crossterm 0.25.0", "eyre", "futures", "iota-config", @@ -5269,7 +5344,7 @@ dependencies = [ "narwhal-config", "prettytable-rs", "prometheus-parse", - "reqwest", + "reqwest 0.12.5", "russh", "russh-keys", "serde", @@ -5308,7 +5383,7 @@ dependencies = [ "iota-swarm-config", "iota-test-transaction-builder", "iota-types", - "itertools 0.11.0", + "itertools 0.13.0", "move-core-types", "mysten-metrics", "narwhal-node", @@ -5318,13 +5393,12 @@ dependencies = [ "roaring", "serde", "serde_json", - "strum 0.24.1", - "strum_macros 0.24.3", + "strum 0.26.3", "sysinfo", "telemetry-subscribers", "test-cluster", "tokio", - "tokio-util 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-util 0.7.11", "tracing", "typed-store", ] @@ -5358,7 +5432,7 @@ dependencies = [ "move-core-types", "prometheus", "regex", - "reqwest", + "reqwest 0.12.5", "serde_json", "shared-crypto", "telemetry-subscribers", @@ -5378,21 +5452,21 @@ dependencies = [ "bcs", "clap", "csv", - "dirs 4.0.0", + "dirs 5.0.1", "fastcrypto", "insta", "iota-keys", "iota-protocol-config", "iota-types", "narwhal-config", - "object_store 0.7.0", + "object_store", "once_cell", "prometheus", "rand 0.8.5", - "reqwest", + "reqwest 0.12.5", "serde", "serde_with", - "serde_yaml 0.8.26", + "serde_yaml", "tempfile", "tracing", ] @@ -5442,8 +5516,8 @@ dependencies = [ "iota-test-transaction-builder", "iota-transaction-checks", "iota-types", - "itertools 0.11.0", - "lru 0.10.0", + "itertools 0.13.0", + "lru 0.10.1", "mockall", "moka", "more-asserts", @@ -5463,11 +5537,11 @@ dependencies = [ "narwhal-test-utils", "narwhal-types", "narwhal-worker", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num_cpus", - "object_store 0.7.0", + "object_store", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "pprof", "pretty_assertions", "prometheus", @@ -5479,9 +5553,9 @@ dependencies = [ "serde-reflection", "serde_json", "serde_with", - "serde_yaml 0.8.26", + "serde_yaml", "shared-crypto", - "signature 1.6.4", + "signature 2.2.0", "static_assertions", "tap", "telemetry-subscribers", @@ -5515,8 +5589,7 @@ dependencies = [ "move-cli", "move-disassembler", "serde", - "strum 0.24.1", - "strum_macros 0.24.3", + "strum 0.26.3", "test-cluster", "tokio", ] @@ -5531,7 +5604,7 @@ dependencies = [ "aes", "aes-gcm", "autocfg", - "base64 0.21.2", + "base64 0.21.7", "blake2", "chacha20poly1305", "cipher", @@ -5539,17 +5612,17 @@ dependencies = [ "digest 0.10.7", "ed25519-zebra", "generic-array", - "getrandom 0.2.9", + "getrandom 0.2.15", "hkdf", - "hmac 0.12.1", - "iterator-sorted", - "k256 0.13.1", + "hmac", + "iterator-sorted 0.1.0", + "k256", "num-traits", - "pbkdf2 0.12.1", + "pbkdf2 0.12.2", "rand 0.8.5", "scrypt", "serde", - "sha2 0.10.6", + "sha2 0.10.8", "tiny-keccak", "unicode-normalization", "x25519-dalek", @@ -5577,12 +5650,12 @@ dependencies = [ "iota-types", "mysten-metrics", "notify", - "object_store 0.7.0", + "object_store", "prometheus", "rand 0.8.5", "serde", "serde_json", - "serde_yaml 0.8.26", + "serde_yaml", "telemetry-subscribers", "tempfile", "tokio", @@ -5602,7 +5675,7 @@ dependencies = [ "iota-types", "mysten-metrics", "notify", - "object_store 0.7.0", + "object_store", "prometheus", "rand 0.8.5", "serde", @@ -5673,14 +5746,14 @@ dependencies = [ name = "iota-enum-compat-util" version = "0.1.0" dependencies = [ - "serde_yaml 0.8.26", + "serde_yaml", ] [[package]] name = "iota-execution" version = "0.1.0" dependencies = [ - "cargo_metadata 0.15.4", + "cargo_metadata", "iota-adapter-latest", "iota-adapter-v0", "iota-move-natives-latest", @@ -5707,8 +5780,8 @@ dependencies = [ "expect-test", "tempfile", "thiserror", - "toml 0.7.4", - "toml_edit 0.19.10", + "toml 0.8.16", + "toml_edit 0.22.17", ] [[package]] @@ -5718,11 +5791,11 @@ dependencies = [ "anyhow", "async-recursion", "async-trait", - "axum", + "axum 0.7.5", "clap", "eyre", "futures", - "http", + "http 1.1.0", "iota", "iota-config", "iota-json-rpc-types", @@ -5730,7 +5803,7 @@ dependencies = [ "iota-sdk 1.22.0", "iota-types", "mysten-metrics", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "prometheus", "rocksdb", "scopeguard", @@ -5809,7 +5882,7 @@ dependencies = [ "anyhow", "bcs", "bigdecimal", - "brotli 6.0.0", + "brotli", "camino", "clap", "fastcrypto", @@ -5824,11 +5897,11 @@ dependencies = [ "iota-move-build", "iota-move-natives-v0", "iota-protocol-config", - "iota-sdk 1.1.4", + "iota-sdk 1.1.5", "iota-simulator", "iota-swarm-config", "iota-types", - "itertools 0.11.0", + "itertools 0.13.0", "move-binary-format", "move-compiler", "move-core-types", @@ -5842,12 +5915,12 @@ dependencies = [ "rand_regex", "rand_seeder", "regex", - "reqwest", + "reqwest 0.12.5", "schemars", "serde", "serde_json", "serde_with", - "serde_yaml 0.8.26", + "serde_yaml", "shared-crypto", "tempfile", "thiserror", @@ -5876,7 +5949,8 @@ dependencies = [ "async-graphql-axum", "async-graphql-value", "async-trait", - "axum", + "axum 0.7.5", + "axum-extra", "bcs", "chrono", "clap", @@ -5889,8 +5963,10 @@ dependencies = [ "futures", "git-version", "hex", - "http", - "hyper", + "http 1.1.0", + "http-body-util", + "hyper 1.4.1", + "hyper-util", "im", "insta", "iota-framework", @@ -5905,7 +5981,7 @@ dependencies = [ "iota-sdk 1.22.0", "iota-swarm-config", "iota-types", - "lru 0.10.0", + "lru 0.10.1", "markdown-gen", "move-binary-format", "move-bytecode-utils", @@ -5918,11 +5994,11 @@ dependencies = [ "prometheus", "rand 0.8.5", "regex", - "reqwest", + "reqwest 0.12.5", "serde", "serde_json", "serde_with", - "serde_yaml 0.8.26", + "serde_yaml", "serial_test", "shared-crypto", "similar", @@ -5932,8 +6008,8 @@ dependencies = [ "test-cluster", "thiserror", "tokio", - "tokio-util 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.7.4", + "tokio-util 0.7.11", + "toml 0.8.16", "tower", "tower-http", "tracing", @@ -5945,10 +6021,10 @@ name = "iota-graphql-rpc-client" version = "0.1.0" dependencies = [ "async-graphql", - "axum", - "hyper", + "axum 0.7.5", + "hyper 1.4.1", "iota-graphql-rpc-headers", - "reqwest", + "reqwest 0.12.5", "serde_json", "thiserror", ] @@ -5957,7 +6033,7 @@ dependencies = [ name = "iota-graphql-rpc-headers" version = "0.1.0" dependencies = [ - "axum", + "axum 0.7.5", ] [[package]] @@ -5966,7 +6042,7 @@ version = "1.22.0" dependencies = [ "anyhow", "async-trait", - "axum", + "axum 0.7.5", "backoff", "bcs", "cached", @@ -5992,7 +6068,7 @@ dependencies = [ "iota-test-transaction-builder", "iota-transaction-builder", "iota-types", - "itertools 0.11.0", + "itertools 0.13.0", "jsonrpsee", "move-binary-format", "move-bytecode-utils", @@ -6041,14 +6117,15 @@ dependencies = [ "anyhow", "arc-swap", "async-trait", - "axum", + "axum 0.7.5", "bcs", "cached", "expect-test", "eyre", "fastcrypto", "futures", - "hyper", + "http-body 1.0.1", + "hyper 1.4.1", "indexmap 2.2.6", "iota-core", "iota-json", @@ -6060,7 +6137,7 @@ dependencies = [ "iota-storage", "iota-transaction-builder", "iota-types", - "itertools 0.11.0", + "itertools 0.13.0", "jsonrpsee", "mockall", "move-binary-format", @@ -6073,7 +6150,7 @@ dependencies = [ "serde", "serde_json", "shared-crypto", - "signature 1.6.4", + "signature 2.2.0", "tap", "telemetry-subscribers", "thiserror", @@ -6110,7 +6187,7 @@ dependencies = [ "anyhow", "async-trait", "bcs", - "hyper", + "hyper 1.4.1", "iota-config", "iota-core", "iota-json", @@ -6132,7 +6209,7 @@ dependencies = [ "move-package", "prometheus", "rand 0.8.5", - "reqwest", + "reqwest 0.12.5", "telemetry-subscribers", "test-cluster", "tokio", @@ -6153,7 +6230,7 @@ dependencies = [ "iota-macros", "iota-protocol-config", "iota-types", - "itertools 0.11.0", + "itertools 0.13.0", "json_to_table", "move-binary-format", "move-bytecode-utils", @@ -6180,7 +6257,7 @@ dependencies = [ "serde", "serde_json", "shared-crypto", - "signature 1.6.4", + "signature 2.2.0", "slip10_ed25519", "tempfile", "tiny-bip39", @@ -6206,7 +6283,7 @@ dependencies = [ "move-core-types", "serde", "serde_json", - "serde_yaml 0.8.26", + "serde_yaml", "tokio", ] @@ -6226,16 +6303,16 @@ version = "0.0.0" dependencies = [ "anyhow", "backoff", - "base64 0.21.2", + "base64 0.22.1", "chrono", "clap", "humantime", "once_cell", "prometheus-http-query", - "reqwest", + "reqwest 0.12.5", "serde", - "serde_yaml 0.9.21", - "strum_macros 0.24.3", + "serde_yaml", + "strum 0.26.3", "telemetry-subscribers", "tokio", "tracing", @@ -6276,7 +6353,7 @@ dependencies = [ "prometheus", "rand 0.8.5", "serde_json", - "serde_yaml 0.8.26", + "serde_yaml", "telemetry-subscribers", "tempfile", "tokio", @@ -6302,7 +6379,6 @@ dependencies = [ "move-ir-types", "move-package", "move-symbol-pool", - "serde-reflection", "tempfile", ] @@ -6377,7 +6453,7 @@ dependencies = [ "telemetry-subscribers", "tempfile", "tokio", - "tonic 0.11.0", + "tonic 0.12.1", "tonic-build", "tower", "tracing", @@ -6391,7 +6467,7 @@ dependencies = [ "anemo-tower", "anyhow", "arc-swap", - "axum", + "axum 0.7.5", "clap", "const-str", "fastcrypto", @@ -6419,7 +6495,7 @@ dependencies = [ "narwhal-network", "narwhal-worker", "prometheus", - "reqwest", + "reqwest 0.12.5", "serde", "snap", "tap", @@ -6460,10 +6536,10 @@ name = "iota-open-rpc-macros" version = "0.1.0" dependencies = [ "derive-syn-parse", - "itertools 0.11.0", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "itertools 0.13.0", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", "unescape", ] @@ -6474,12 +6550,12 @@ dependencies = [ "async-trait", "bcs", "eyre", - "hyper", + "hyper 1.4.1", "insta", "iota-move-build", "iota-rest-api", "iota-types", - "lru 0.10.0", + "lru 0.10.1", "move-binary-format", "move-compiler", "move-core-types", @@ -6496,9 +6572,9 @@ version = "0.7.0" dependencies = [ "iota-enum-compat-util", "msim-macros", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] @@ -6518,9 +6594,9 @@ dependencies = [ name = "iota-protocol-config-macros" version = "0.1.0" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] @@ -6533,7 +6609,7 @@ dependencies = [ "bcs", "clap", "futures", - "http", + "http 1.1.0", "iota-config", "iota-core", "iota-execution", @@ -6546,18 +6622,18 @@ dependencies = [ "iota-storage", "iota-types", "jsonrpsee", - "lru 0.10.0", + "lru 0.10.1", "move-binary-format", "move-bytecode-utils", "move-core-types", "move-vm-config", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "prometheus", "rand 0.8.5", "serde", "serde_json", "serde_with", - "serde_yaml 0.8.26", + "serde_yaml", "shared-crypto", "shellexpand", "similar", @@ -6573,13 +6649,13 @@ name = "iota-rest-api" version = "0.1.0" dependencies = [ "anyhow", - "axum", + "axum 0.7.5", "bcs", "fastcrypto", "iota-types", "mime", "rand 0.8.5", - "reqwest", + "reqwest 0.12.5", "serde", "serde_json", "serde_with", @@ -6594,14 +6670,14 @@ version = "0.1.0" dependencies = [ "anyhow", "async-trait", - "axum", + "axum 0.7.5", "axum-extra", "bcs", "clap", "eyre", "fastcrypto", "futures", - "hyper", + "hyper 1.4.1", "iota-config", "iota-json-rpc-types", "iota-keys", @@ -6614,13 +6690,12 @@ dependencies = [ "mysten-metrics", "once_cell", "rand 0.8.5", - "reqwest", + "reqwest 0.12.5", "serde", "serde_json", "shared-crypto", - "signature 1.6.4", - "strum 0.24.1", - "strum_macros 0.24.3", + "signature 2.2.0", + "strum 0.26.3", "telemetry-subscribers", "tempfile", "test-cluster", @@ -6638,20 +6713,19 @@ dependencies = [ "async-trait", "clap", "dashmap", - "dirs 4.0.0", + "dirs 5.0.1", "futures", "iota-json-rpc", "iota-json-rpc-types", "iota-keys", "iota-sdk 1.22.0", "iota-types", - "itertools 0.11.0", + "itertools 0.13.0", "serde", "serde_json", "shared-crypto", "shellexpand", - "strum 0.24.1", - "strum_macros 0.24.3", + "strum 0.26.3", "telemetry-subscribers", "tokio", "tracing", @@ -6659,35 +6733,35 @@ dependencies = [ [[package]] name = "iota-sdk" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d62d16468c4bc555cac621734b5aa4fa971341f8fe3938d4481f7f394b9167" +checksum = "c1dfb0cae5c5bad8186576ca00b8be675257431eda028dcea01cb3b9f276037e" dependencies = [ "async-trait", "bech32", - "bitflags 2.4.1", + "bitflags 2.6.0", "bytemuck", "derive_more", "futures", "getset", - "gloo-timers", - "hashbrown 0.14.3", + "gloo-timers 0.3.0", + "hashbrown 0.14.5", "hex", "instant", "iota-crypto", "iota_stronghold", - "iterator-sorted", - "itertools 0.12.0", + "iterator-sorted 0.2.0", + "itertools 0.12.1", "lazy_static", "log", "num_cpus", "once_cell", "packable", "prefix-hex", - "primitive-types 0.12.2", + "primitive-types", "rand 0.8.5", "regex", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "serde_repr", @@ -6707,7 +6781,7 @@ dependencies = [ "bcs", "clap", "colored", - "dirs 4.0.0", + "dirs 5.0.1", "fastcrypto", "futures", "futures-core", @@ -6721,7 +6795,7 @@ dependencies = [ "jsonrpsee", "move-core-types", "rand 0.8.5", - "reqwest", + "reqwest 0.12.5", "serde", "serde_json", "serde_with", @@ -6743,7 +6817,7 @@ dependencies = [ "iota-framework", "iota-move-build", "iota-types", - "lru 0.10.0", + "lru 0.10.1", "move-package", "msim", "narwhal-network", @@ -6782,8 +6856,7 @@ dependencies = [ "prometheus", "serde", "serde_json", - "strum 0.24.1", - "strum_macros 0.24.3", + "strum 0.26.3", "telemetry-subscribers", "tokio", "tracing", @@ -6807,7 +6880,7 @@ dependencies = [ "iota-storage", "iota-types", "num_enum", - "object_store 0.7.0", + "object_store", "prometheus", "serde", "serde_json", @@ -6853,13 +6926,13 @@ name = "iota-source-validation-service" version = "0.1.0" dependencies = [ "anyhow", - "axum", + "axum 0.7.5", "clap", "const-str", "expect-test", "fs_extra", "git-version", - "hyper", + "hyper 1.4.1", "iota", "iota-json-rpc-types", "iota-move", @@ -6873,13 +6946,13 @@ dependencies = [ "move-symbol-pool", "mysten-metrics", "prometheus", - "reqwest", + "reqwest 0.12.5", "serde", "telemetry-subscribers", "tempfile", "test-cluster", "tokio", - "toml 0.7.4", + "toml 0.8.16", "tower", "tower-http", "tracing", @@ -6903,8 +6976,10 @@ dependencies = [ "eyre", "fastcrypto", "futures", - "hyper", - "hyper-rustls 0.24.0", + "http-body-util", + "hyper 1.4.1", + "hyper-rustls 0.27.2", + "hyper-util", "indicatif", "integer-encoding", "iota-config", @@ -6914,21 +6989,21 @@ dependencies = [ "iota-simulator", "iota-test-transaction-builder", "iota-types", - "itertools 0.11.0", - "lru 0.10.0", + "itertools 0.13.0", + "lru 0.10.1", "move-binary-format", "move-bytecode-utils", "move-core-types", "mysten-metrics", "num_cpus", "num_enum", - "object_store 0.7.0", + "object_store", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "percent-encoding", "pretty_assertions", "prometheus", - "reqwest", + "reqwest 0.12.5", "rocksdb", "serde", "serde_json", @@ -6940,7 +7015,7 @@ dependencies = [ "typed-store", "typed-store-derive", "url", - "zstd 0.12.3+zstd.1.5.2", + "zstd", ] [[package]] @@ -7017,7 +7092,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_with", - "serde_yaml 0.8.26", + "serde_yaml", "shared-crypto", "tempfile", "tracing", @@ -7041,9 +7116,9 @@ name = "iota-test-validator" version = "0.0.0" dependencies = [ "anyhow", - "axum", + "axum 0.7.5", "clap", - "http", + "http 1.1.0", "iota-cluster-test", "iota-faucet", "telemetry-subscribers", @@ -7083,19 +7158,18 @@ dependencies = [ "iota-snapshot", "iota-storage", "iota-types", - "itertools 0.11.0", + "itertools 0.13.0", "move-core-types", "narwhal-storage", "narwhal-types", "num_cpus", - "object_store 0.7.0", + "object_store", "prometheus", "rocksdb", "ron", "serde", "serde_json", - "strum 0.24.1", - "strum_macros 0.24.3", + "strum 0.26.3", "telemetry-subscribers", "tempfile", "tokio", @@ -7207,8 +7281,8 @@ dependencies = [ "iota-enum-compat-util", "iota-macros", "iota-protocol-config", - "iota-sdk 1.1.4", - "itertools 0.11.0", + "iota-sdk 1.1.5", + "itertools 0.13.0", "move-binary-format", "move-bytecode-utils", "move-command-line-common", @@ -7222,8 +7296,7 @@ dependencies = [ "mysten-network", "narwhal-config", "narwhal-crypto", - "nonempty", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-rational", "num-traits", "once_cell", @@ -7238,15 +7311,14 @@ dependencies = [ "serde-name", "serde_json", "serde_with", - "serde_yaml 0.8.26", + "serde_yaml", "shared-crypto", - "signature 1.6.4", + "signature 2.2.0", "static_assertions", - "strum 0.24.1", - "strum_macros 0.24.3", + "strum 0.26.3", "tap", "thiserror", - "tonic 0.11.0", + "tonic 0.12.1", "tracing", "typed-store-error", ] @@ -7339,12 +7411,12 @@ dependencies = [ "move-core-types", "mysten-metrics", "notify", - "object_store 0.7.0", + "object_store", "prometheus", "rand 0.8.5", "serde", "serde_json", - "serde_yaml 0.8.26", + "serde_yaml", "telemetry-subscribers", "tempfile", "tokio", @@ -7354,29 +7426,29 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.7.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "iri-string" -version = "0.4.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f0f7638c1e223529f1bfdc48c8b133b9e0b434094d1d28473161ee48b235f78" +checksum = "7f5f6c2df22c009ac44f6f1499308e7a3ac7ba42cd2378475cc691510e1eef1b" dependencies = [ - "nom", + "memchr", + "serde", ] [[package]] name = "is-terminal" -version = "0.4.7" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ "hermit-abi", - "io-lifetimes", - "rustix 0.37.7", - "windows-sys 0.48.0", + "libc", + "windows-sys 0.52.0", ] [[package]] @@ -7385,12 +7457,24 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "iterator-sorted" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d101775d2bc8f99f4ac18bf29b9ed70c0dd138b9a1e88d7b80179470cbbe8bd2" +[[package]] +name = "iterator-sorted" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3c1d66191fc266439b989dc1a9a69d9c4156e803ce456221231398b84c35d1" + [[package]] name = "itertools" version = "0.10.5" @@ -7402,33 +7486,33 @@ dependencies = [ [[package]] name = "itertools" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] [[package]] name = "itertools" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] [[package]] name = "itoa" -version = "1.0.5" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jemalloc-ctl" -version = "0.5.0" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1891c671f3db85d8ea8525dd43ab147f9977041911d24a03e5a36187a7bfde9" +checksum = "7cffc705424a344c054e135d12ee591402f4539245e8bbd64e6c9eaa9458b63c" dependencies = [ "jemalloc-sys", "libc", @@ -7437,29 +7521,48 @@ dependencies = [ [[package]] name = "jemalloc-sys" -version = "0.5.2+5.3.0-patched" +version = "0.5.4+5.3.0-patched" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134163979b6eed9564c98637b710b40979939ba351f59952708234ea11b5f3f8" +checksum = "ac6c1946e1cea1788cbfde01c993b52a10e2da07f4bac608228d1bed20bfebf2" dependencies = [ "cc", - "fs_extra", "libc", ] +[[package]] +name = "jni" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + [[package]] name = "jobserver" -version = "0.1.25" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -7467,7 +7570,8 @@ dependencies = [ [[package]] name = "json_to_table" version = "0.6.0" -source = "git+https://github.com/zhiburt/tabled.git?rev=e449317a1c02eb6b29e409ad6617e5d9eb7b3bd4#e449317a1c02eb6b29e409ad6617e5d9eb7b3bd4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39c911645638ed6e1ce6aad8f043ecc2d2ef2d45f9fb19f89c6b55a685b883a1" dependencies = [ "serde_json", "tabled", @@ -7475,172 +7579,209 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.16.2" -source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e419d6c39cb9632288c592a06d7d0a96740021b0bff812e211ace754b0fe8c9a" dependencies = [ + "jsonrpsee-client-transport", "jsonrpsee-core", "jsonrpsee-http-client", "jsonrpsee-proc-macros", "jsonrpsee-server", "jsonrpsee-types", + "jsonrpsee-wasm-client", "jsonrpsee-ws-client", + "tokio", "tracing", ] [[package]] name = "jsonrpsee-client-transport" -version = "0.16.2" -source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8b6dc3b1e2da087969e69a095e7d6127966c8c194490b311017bb2053a7d5a1" dependencies = [ + "base64 0.22.1", + "futures-channel", "futures-util", - "http", + "gloo-net", + "http 1.1.0", "jsonrpsee-core", - "jsonrpsee-types", "pin-project", - "rustls-native-certs", + "rustls 0.23.12", + "rustls-pki-types", + "rustls-platform-verifier", "soketto", "thiserror", "tokio", - "tokio-rustls 0.23.4", - "tokio-util 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-rustls 0.26.0", + "tokio-util 0.7.11", "tracing", - "webpki-roots 0.22.6", + "url", ] [[package]] name = "jsonrpsee-core" -version = "0.16.2" -source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d06b8be79a3bdd7d87c1d95c0e939052b7f64fffce7b9436986e43e92f20a978" dependencies = [ - "anyhow", - "arrayvec", - "async-lock", "async-trait", - "beef", - "futures-channel", + "bytes", "futures-timer", "futures-util", - "globset", - "hyper", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", "jsonrpsee-types", - "parking_lot 0.12.1", + "parking_lot 0.12.3", + "pin-project", "rand 0.8.5", - "rustc-hash", + "rustc-hash 2.0.0", "serde", "serde_json", - "soketto", "thiserror", "tokio", + "tokio-stream", "tracing", + "wasm-bindgen-futures", ] [[package]] name = "jsonrpsee-http-client" -version = "0.16.2" -source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52dc99c70619e252e6adc5e95144323505a69a1742771de5b3f2071e1595b363" dependencies = [ "async-trait", - "hyper", - "hyper-rustls 0.23.2", + "base64 0.22.1", + "http-body 1.0.1", + "hyper 1.4.1", + "hyper-rustls 0.27.2", + "hyper-util", "jsonrpsee-core", "jsonrpsee-types", - "rustc-hash", + "rustls 0.23.12", + "rustls-platform-verifier", "serde", "serde_json", "thiserror", "tokio", + "tower", "tracing", + "url", ] [[package]] name = "jsonrpsee-proc-macros" -version = "0.16.2" -source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4278d453682d9f9671b5261404360cdabd063198a43bb221c5c80e8f8bfb6b1" dependencies = [ - "heck", - "proc-macro-crate", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "heck 0.5.0", + "proc-macro-crate 3.1.0", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "jsonrpsee-server" -version = "0.16.2" -source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c358788aa585f51a78b11bec5d4b16fbe26dda1cc149f21d95dc24836a0be83" dependencies = [ - "futures-channel", "futures-util", - "http", - "hyper", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-util", "jsonrpsee-core", "jsonrpsee-types", + "pin-project", + "route-recognizer", "serde", "serde_json", "soketto", + "thiserror", "tokio", "tokio-stream", - "tokio-util 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-util 0.7.11", "tower", "tracing", ] [[package]] name = "jsonrpsee-types" -version = "0.16.2" -source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0feba38a9878d70ccccd2f54b534b15e861d6caa7911d59abfd3e0d8b4de091f" dependencies = [ - "anyhow", - "beef", + "http 1.1.0", "serde", "serde_json", "thiserror", - "tracing", +] + +[[package]] +name = "jsonrpsee-wasm-client" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0da29b570ad645e72c6098716719d2ef58d51a8eb0f084ac5e43a5763839542" +dependencies = [ + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", ] [[package]] name = "jsonrpsee-ws-client" -version = "0.16.2" -source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e82b1c7fc629c345581d89ad802d53dc11d18df11d4d94d2c95da6e70f8520d3" dependencies = [ - "http", + "http 1.1.0", "jsonrpsee-client-transport", "jsonrpsee-core", "jsonrpsee-types", + "url", ] [[package]] -name = "k256" -version = "0.11.6" +name = "jsonwebtoken" +version = "9.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" +checksum = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f" dependencies = [ - "cfg-if", - "ecdsa 0.14.8", - "elliptic-curve 0.12.3", - "sha2 0.10.6", - "sha3 0.10.6", + "base64 0.21.7", + "js-sys", + "pem 3.0.4", + "ring 0.17.8", + "serde", + "serde_json", + "simple_asn1", ] [[package]] name = "k256" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" dependencies = [ "cfg-if", - "ecdsa 0.16.6", - "elliptic-curve 0.13.4", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", "once_cell", "serdect", - "sha2 0.10.6", + "sha2 0.10.8", ] [[package]] name = "keccak" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ "cpufeatures", ] @@ -7667,11 +7808,11 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.5.2", + "spin 0.9.8", ] [[package]] @@ -7752,9 +7893,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.152" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libflate" @@ -7776,33 +7917,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e0d73b369f386f1c44abd9c570d5318f55ccde816ff4b562fa452e5182863d" dependencies = [ "core2", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "rle-decode-fast", ] [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "winapi", + "windows-targets 0.52.6", ] [[package]] name = "libm" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] -name = "librocksdb-sys" +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", +] + +[[package]] +name = "librocksdb-sys" version = "0.11.0+8.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3386f101bcb4bd252d8e9d2fb41ec3b0862a15a62b478c355b2982efa469e3e" dependencies = [ - "bindgen", + "bindgen 0.65.1", "bzip2-sys", "cc", "glob", @@ -7814,9 +7965,9 @@ dependencies = [ [[package]] name = "libsodium-sys-stable" -version = "1.20.5" +version = "1.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff84815195b3d40db429f6cb8c7b1c6548c618797b3b919e08fec250bcdd2" +checksum = "ad52c454200cd0178a04ef7642a240a7e81b4d8c59f0865eb98c477daf7d3b84" dependencies = [ "cc", "libc", @@ -7842,24 +7993,15 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.8" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" +checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" dependencies = [ "cc", "pkg-config", "vcpkg", ] -[[package]] -name = "link-cplusplus" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" -dependencies = [ - "cc", -] - [[package]] name = "linked-hash-map" version = "0.5.6" @@ -7868,64 +8010,58 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" - -[[package]] -name = "linux-raw-sys" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" - -[[package]] -name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", ] +[[package]] +name = "lockfree-object-pool" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" + [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" dependencies = [ "serde", ] [[package]] name = "lru" -version = "0.7.8" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" dependencies = [ - "hashbrown 0.12.3", + "hashbrown 0.13.2", ] [[package]] name = "lru" -version = "0.10.0" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03f1160296536f10c833a82dca22267d5486734230d47bf00bf435885814ba1e" +checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" dependencies = [ - "hashbrown 0.13.2", + "hashbrown 0.14.5", ] [[package]] name = "lz4-sys" -version = "1.9.4" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +checksum = "109de74d5d2353660401699a4174a4ff23fcc649caf553df71933c7fb45ad868" dependencies = [ "cc", "libc", @@ -7933,22 +8069,13 @@ dependencies = [ [[package]] name = "lz4_flex" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "912b45c753ff5f7f5208307e8ace7d2a2e30d024e26d3509f3dce546c044ce15" +checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5" dependencies = [ "twox-hash", ] -[[package]] -name = "mach2" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8" -dependencies = [ - "libc", -] - [[package]] name = "markdown-gen" version = "1.2.1" @@ -7978,27 +8105,17 @@ checksum = "73cbba799671b762df5a175adf59ce145165747bb891505c43d09aefbbf38beb" [[package]] name = "matchit" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" - -[[package]] -name = "md-5" -version = "0.9.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15" -dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "opaque-debug", -] +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "md-5" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ + "cfg-if", "digest 0.10.7", ] @@ -8010,15 +8127,15 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap2" -version = "0.5.8" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dc" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" dependencies = [ "libc", ] @@ -8032,29 +8149,21 @@ dependencies = [ "autocfg", ] -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "miette" -version = "7.0.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98a72adfa0c7ae88ba0abcbd00047a476616c66b831d628b8ac7f1e9de0cfd67" +checksum = "4edc8853320c2a0dab800fbda86253c8938f6ea88510dc92c5f1ed20e794afc1" dependencies = [ "backtrace", "backtrace-ext", + "cfg-if", "miette-derive", "owo-colors 4.0.0", "supports-color", "supports-hyperlinks", "supports-unicode", - "terminal_size 0.3.0", + "terminal_size", "textwrap", "thiserror", "unicode-width", @@ -8062,34 +8171,34 @@ dependencies = [ [[package]] name = "miette-derive" -version = "7.0.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "279def6bf114a34b3cf887489eb440d4dfcf709ab3ce9955e4a6f957ce5cce77" +checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "migrations_internals" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f23f71580015254b020e856feac3df5878c2c7a8812297edd6c0a485ac9dada" +checksum = "fd01039851e82f8799046eabbb354056283fb265c8ec0996af940f4e85a380ff" dependencies = [ "serde", - "toml 0.7.4", + "toml 0.8.16", ] [[package]] name = "migrations_macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cce3325ac70e67bbab5bd837a31cae01f1a6db64e0e744a33cb03a543469ef08" +checksum = "ffb161cc72176cb37aa47f1fc520d3ef02263d67d661f44f05d05a079e1237fd" dependencies = [ "migrations_internals", - "proc-macro2 1.0.78", - "quote 1.0.35", + "proc-macro2 1.0.86", + "quote 1.0.36", ] [[package]] @@ -8100,9 +8209,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ "mime", "unicase", @@ -8122,9 +8231,9 @@ checksum = "933dca44d65cdd53b355d0b73d380a2ff5da71f87f036053188bf1eab6a19881" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] @@ -8141,6 +8250,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mirai-annotations" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9be0862c1b3f26a88803c4a49de6889c10e608b3ee9344e6ef5b45fb37ad3d1" + [[package]] name = "mockall" version = "0.11.4" @@ -8152,7 +8267,7 @@ dependencies = [ "fragile", "lazy_static", "mockall_derive", - "predicates", + "predicates 2.1.5", "predicates-tree", ] @@ -8163,24 +8278,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" dependencies = [ "cfg-if", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] name = "moka" -version = "0.12.5" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1911e88d5831f748a4097a43862d129e3c6fca831eecac9b8db6d01d93c9de2" +checksum = "32cf62eb4dd975d2dde76432fb1075c49e3ee2331cf36f1f8fd4b66550d32b6f" dependencies = [ "crossbeam-channel", "crossbeam-epoch", "crossbeam-utils", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "rustc_version", - "skeptic", "smallvec", "tagptr", "thiserror", @@ -8237,7 +8351,9 @@ dependencies = [ "move-binary-format", "move-core-types", "petgraph 0.5.1", + "serde", "serde-reflection", + "serde_yaml", ] [[package]] @@ -8270,7 +8386,7 @@ version = "0.1.0" dependencies = [ "anyhow", "clap", - "crossterm", + "crossterm 0.25.0", "move-binary-format", "move-bytecode-source-map", "move-disassembler", @@ -8309,9 +8425,9 @@ dependencies = [ "move-vm-runtime", "move-vm-test-utils", "move-vm-types", - "serde_yaml 0.8.26", + "serde_yaml", "tempfile", - "toml_edit 0.14.4", + "toml_edit 0.22.17", "walkdir", ] @@ -8324,7 +8440,7 @@ dependencies = [ "dirs-next", "hex", "move-core-types", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "once_cell", "serde", "sha2 0.9.9", @@ -8377,7 +8493,7 @@ dependencies = [ "move-proc-macros", "num", "once_cell", - "primitive-types 0.10.1", + "primitive-types", "proptest", "proptest-derive", "rand 0.8.5", @@ -8431,7 +8547,7 @@ dependencies = [ "anyhow", "codespan", "codespan-reporting", - "itertools 0.10.5", + "itertools 0.13.0", "log", "move-compiler", "move-model", @@ -8516,7 +8632,7 @@ dependencies = [ "codespan", "codespan-reporting", "internment", - "itertools 0.10.5", + "itertools 0.13.0", "log", "move-binary-format", "move-bytecode-source-map", @@ -8539,7 +8655,7 @@ dependencies = [ "anyhow", "clap", "colored", - "itertools 0.10.5", + "itertools 0.13.0", "move-binary-format", "move-bytecode-source-map", "move-bytecode-utils", @@ -8554,11 +8670,11 @@ dependencies = [ "petgraph 0.5.1", "regex", "serde", - "serde_yaml 0.8.26", + "serde_yaml", "sha2 0.9.9", "tempfile", - "toml 0.5.10", - "toml_edit 0.14.4", + "toml 0.8.16", + "toml_edit 0.22.17", "treeline", "walkdir", "whoami", @@ -8569,8 +8685,8 @@ name = "move-proc-macros" version = "0.1.0" dependencies = [ "enum-compat-util", - "quote 1.0.35", - "syn 2.0.48", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] @@ -8580,7 +8696,7 @@ dependencies = [ "anyhow", "clap", "codespan-reporting", - "itertools 0.10.5", + "itertools 0.13.0", "log", "move-command-line-common", "move-compiler", @@ -8591,7 +8707,7 @@ dependencies = [ "once_cell", "serde", "simplelog", - "toml 0.5.10", + "toml 0.8.16", ] [[package]] @@ -8611,7 +8727,7 @@ dependencies = [ "codespan-reporting", "ethnum", "im", - "itertools 0.10.5", + "itertools 0.13.0", "log", "move-binary-format", "move-command-line-common", @@ -8633,7 +8749,7 @@ dependencies = [ "bytecode-interpreter-crypto", "clap", "codespan-reporting", - "itertools 0.10.5", + "itertools 0.13.0", "move-binary-format", "move-core-types", "move-model", @@ -8731,7 +8847,7 @@ dependencies = [ "clap", "codespan-reporting", "colored", - "itertools 0.10.5", + "itertools 0.13.0", "move-binary-format", "move-bytecode-utils", "move-command-line-common", @@ -8783,7 +8899,7 @@ dependencies = [ "move-vm-profiler", "move-vm-types", "once_cell", - "parking_lot 0.11.2", + "parking_lot 0.12.3", "sha3 0.9.1", "smallvec", "tracing", @@ -8802,7 +8918,7 @@ dependencies = [ "move-vm-profiler", "move-vm-types", "once_cell", - "parking_lot 0.11.2", + "parking_lot 0.12.3", "sha3 0.9.1", "smallvec", "tracing", @@ -8854,10 +8970,10 @@ dependencies = [ "rand 0.8.5", "real_tokio", "serde", - "socket2 0.4.9", + "socket2 0.4.10", "tap", - "tokio-util 0.7.10 (git+https://github.com/mystenmark/tokio-madsim-fork.git?rev=e47aafebf98e9c1734a8848a1876d5946c44bdd1)", - "toml 0.5.10", + "tokio-util 0.7.10", + "toml 0.5.11", "tracing", "tracing-subscriber", ] @@ -8867,24 +8983,23 @@ name = "msim-macros" version = "0.1.0" source = "git+https://github.com/MystenLabs/mysten-sim.git?rev=6f88ec84644cb1a6809c010f1f534d0d09e0cd89#6f88ec84644cb1a6809c010f1f534d0d09e0cd89" dependencies = [ - "darling 0.14.2", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "darling 0.14.4", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] name = "multer" -version = "2.1.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01acbdc23469fd8fe07ab135923371d5f5a422fbf9c522158677c8eb15bc51c2" +checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" dependencies = [ "bytes", "encoding_rs", "futures-util", - "http", + "http 1.1.0", "httparse", - "log", "memchr", "mime", "spin 0.9.8", @@ -8893,13 +9008,14 @@ dependencies = [ [[package]] name = "multiaddr" -version = "0.17.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b53e0cc5907a5c216ba6584bf74be8ab47d6d6289f72793b2dddbf15dc3bf8c" +checksum = "2b36f567c7099511fa8612bbbb52dda2419ce0bdbacf31714e3a5ffdb766d3bd" dependencies = [ "arrayref", "byteorder", "data-encoding", + "log", "multibase", "multihash", "percent-encoding", @@ -8937,26 +9053,26 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro-error", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", "synstructure", ] [[package]] name = "multimap" -version = "0.8.3" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" [[package]] name = "mysten-common" version = "0.1.0" dependencies = [ "futures", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "tokio", ] @@ -8965,11 +9081,11 @@ name = "mysten-metrics" version = "0.7.0" dependencies = [ "async-trait", - "axum", + "axum 0.7.5", "dashmap", "futures", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "prometheus", "prometheus-closure-metric", "scopeguard", @@ -8988,14 +9104,15 @@ dependencies = [ "bytes", "eyre", "futures", - "http", + "http 1.1.0", + "hyper-util", "multiaddr", "pin-project-lite", "serde", "snap", "tokio", "tokio-stream", - "tonic 0.11.0", + "tonic 0.12.1", "tonic-health", "tower", "tower-http", @@ -9010,12 +9127,12 @@ dependencies = [ "ed25519-consensus", "fastcrypto", "fastcrypto-tbls", - "hashbrown 0.12.3", + "hashbrown 0.14.5", "impl-trait-for-tuples", "indexmap 2.2.6", "mysten-util-mem-derive", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "roaring", "smallvec", ] @@ -9024,8 +9141,8 @@ dependencies = [ name = "mysten-util-mem-derive" version = "0.1.0" dependencies = [ - "proc-macro2 1.0.78", - "syn 1.0.107", + "proc-macro2 1.0.86", + "syn 1.0.109", "synstructure", ] @@ -9043,7 +9160,7 @@ checksum = "40a3eb6b7c682b65d1f631ec3176829d72ab450b3aacdd3f719bf220822e59ac" dependencies = [ "libc", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "thiserror", "widestring", "winapi", @@ -9076,7 +9193,7 @@ dependencies = [ "bincode", "criterion", "fastcrypto", - "hex-literal 0.3.4", + "hex-literal", "proptest", "proptest-derive", "serde", @@ -9113,7 +9230,7 @@ dependencies = [ "tempfile", "thiserror", "tokio", - "tonic 0.11.0", + "tonic 0.12.1", "tracing", "typed-store", ] @@ -9126,7 +9243,7 @@ dependencies = [ "anemo-tower", "anyhow", "async-trait", - "axum", + "axum 0.7.5", "axum-server", "backoff", "bincode", @@ -9139,9 +9256,9 @@ dependencies = [ "narwhal-crypto", "narwhal-test-utils", "narwhal-types", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "prometheus", - "quinn-proto", + "quinn-proto 0.10.6", "rand 0.8.5", "tokio", "tower", @@ -9155,7 +9272,7 @@ dependencies = [ "anemo", "arc-swap", "async-trait", - "axum", + "axum 0.7.5", "bytes", "cfg-if", "clap", @@ -9165,6 +9282,7 @@ dependencies = [ "iota-keys", "iota-protocol-config", "iota-types", + "move-bytecode-utils", "mysten-metrics", "mysten-network", "narwhal-config", @@ -9179,9 +9297,10 @@ dependencies = [ "pretty_assertions", "prometheus", "rand 0.8.5", - "reqwest", + "reqwest 0.12.5", + "serde", "serde-reflection", - "serde_yaml 0.8.26", + "serde_yaml", "telemetry-subscribers", "thiserror", "tokio", @@ -9213,7 +9332,7 @@ dependencies = [ "indexmap 2.2.6", "iota-macros", "iota-protocol-config", - "itertools 0.11.0", + "itertools 0.13.0", "mockall", "mysten-common", "mysten-metrics", @@ -9228,11 +9347,11 @@ dependencies = [ "narwhal-types", "narwhal-worker", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "prometheus", "proptest", "rand 0.8.5", - "reqwest", + "reqwest 0.12.5", "tap", "telemetry-subscribers", "tempfile", @@ -9252,12 +9371,12 @@ dependencies = [ "fastcrypto-tbls", "futures", "iota-macros", - "lru 0.10.0", + "lru 0.10.1", "mysten-common", "narwhal-config", "narwhal-test-utils", "narwhal-types", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "prometheus", "tap", "tempfile", @@ -9275,7 +9394,7 @@ dependencies = [ "fdlimit", "indexmap 2.2.6", "iota-protocol-config", - "itertools 0.11.0", + "itertools 0.13.0", "mysten-metrics", "mysten-network", "narwhal-config", @@ -9293,7 +9412,7 @@ dependencies = [ "telemetry-subscribers", "tempfile", "tokio", - "tonic 0.11.0", + "tonic 0.12.1", "tracing", "typed-store", ] @@ -9305,7 +9424,7 @@ dependencies = [ "anemo", "anemo-build", "anyhow", - "base64 0.21.2", + "base64 0.22.1", "bcs", "bytes", "criterion", @@ -9327,7 +9446,7 @@ dependencies = [ "prometheus", "proptest", "proptest-derive", - "prost 0.12.3", + "prost 0.13.1", "prost-build", "protobuf-src", "rand 0.8.5", @@ -9338,7 +9457,7 @@ dependencies = [ "serde_with", "thiserror", "tokio", - "tonic 0.11.0", + "tonic 0.12.1", "tonic-build", "tracing", "typed-store", @@ -9360,7 +9479,7 @@ dependencies = [ "futures", "governor", "iota-protocol-config", - "itertools 0.11.0", + "itertools 0.13.0", "mysten-metrics", "mysten-network", "narwhal-config", @@ -9373,13 +9492,13 @@ dependencies = [ "narwhal-types", "prometheus", "rand 0.8.5", - "reqwest", + "reqwest 0.12.5", "tap", "telemetry-subscribers", "tempfile", "thiserror", "tokio", - "tonic 0.11.0", + "tonic 0.12.1", "tower", "tracing", "typed-store", @@ -9432,7 +9551,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "memoffset 0.6.5", + "memoffset", ] [[package]] @@ -9444,7 +9563,7 @@ dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", - "memoffset 0.6.5", + "memoffset", ] [[package]] @@ -9466,20 +9585,14 @@ checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c" [[package]] name = "nom" -version = "7.1.2" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5507769c4919c998e69e49c839d9dc6e693ede4cc4290d6ad8b41d4f09c548c" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", ] -[[package]] -name = "nonempty" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995defdca0a589acfdd1bd2e8e3b896b4d4f7675a31fd14c32611440c7f608e6" - [[package]] name = "nonzero_ext" version = "0.3.0" @@ -9498,7 +9611,7 @@ version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.6.0", "crossbeam-channel", "filetime", "fsevent-sys", @@ -9513,18 +9626,18 @@ dependencies = [ [[package]] name = "ntapi" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc51db7b362b205941f71232e56c625156eb9a929f8cf74a428fd5bc094a4afc" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" dependencies = [ "winapi", ] [[package]] name = "ntest" -version = "0.9.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da8ec6d2b73d45307e926f5af46809768581044384637af6b3f3fe7c3c88f512" +checksum = "fb183f0a1da7a937f672e5ee7b7edb727bf52b8a52d531374ba8ebb9345c0330" dependencies = [ "ntest_test_cases", "ntest_timeout", @@ -9532,25 +9645,25 @@ dependencies = [ [[package]] name = "ntest_test_cases" -version = "0.9.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be7d33be719c6f4d09e64e27c1ef4e73485dc4cc1f4d22201f89860a7fe22e22" +checksum = "16d0d3f2a488592e5368ebbe996e7f1d44aa13156efad201f5b4d84e150eaa93" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] name = "ntest_timeout" -version = "0.9.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "066b468120587a402f0b47d8f80035c921f6a46f8209efd0632a89a16f5188a4" +checksum = "fcc7c92f190c97f79b4a332f5e81dcf68c8420af2045c936c9be0bc9de6f63b5" dependencies = [ - "proc-macro-crate", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro-crate 3.1.0", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] @@ -9565,11 +9678,11 @@ dependencies = [ [[package]] name = "num" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-complex", "num-integer", "num-iter", @@ -9590,11 +9703,10 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ - "autocfg", "num-integer", "num-traits", "rand 0.8.5", @@ -9602,9 +9714,9 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2399c9463abc5f909349d8aa9ba080e0b88b3ce2885389b60b993f39b1a56905" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" dependencies = [ "byteorder", "lazy_static", @@ -9619,9 +9731,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] @@ -9634,19 +9746,18 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -9655,21 +9766,20 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-integer", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -9687,30 +9797,30 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.6.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.6.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ - "proc-macro-crate", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro-crate 3.1.0", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "num_threads" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" dependencies = [ "libc", ] @@ -9732,54 +9842,26 @@ dependencies = [ [[package]] name = "object_store" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d359e231e5451f4f9fa889d56e3ce34f8724f1a61db2107739359717cf2bbf08" -dependencies = [ - "async-trait", - "base64 0.21.2", - "bytes", - "chrono", - "futures", - "humantime", - "hyper", - "itertools 0.10.5", - "parking_lot 0.12.1", - "percent-encoding", - "quick-xml 0.28.2", - "rand 0.8.5", - "reqwest", - "ring 0.16.20", - "rustls-pemfile 1.0.2", - "serde", - "serde_json", - "snafu", - "tokio", - "tracing", - "url", - "walkdir", -] - -[[package]] -name = "object_store" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d139f545f64630e2e3688fd9f81c470888ab01edeb72d13b4e86c566f1130000" +checksum = "e6da452820c715ce78221e8202ccc599b4a52f3e1eb3eedb487b680c81a8e3f3" dependencies = [ "async-trait", - "base64 0.21.2", + "base64 0.22.1", "bytes", "chrono", "futures", "humantime", - "hyper", - "itertools 0.12.0", - "parking_lot 0.12.1", + "hyper 1.4.1", + "itertools 0.13.0", + "md-5", + "parking_lot 0.12.3", "percent-encoding", - "quick-xml 0.31.0", + "quick-xml", "rand 0.8.5", - "reqwest", - "ring 0.17.3", + "reqwest 0.12.5", + "ring 0.17.8", + "rustls-pemfile 2.1.2", "serde", "serde_json", "snafu", @@ -9806,15 +9888,15 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "oorandom" -version = "11.1.3" +version = "11.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "opaque-debug" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl-probe" @@ -9824,131 +9906,65 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "opentelemetry" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4b8347cc26099d3aeee044065ecc3ae11469796b4d65d065a23a584ed92a6f" -dependencies = [ - "opentelemetry_api 0.19.0", - "opentelemetry_sdk 0.19.0", -] - -[[package]] -name = "opentelemetry" -version = "0.20.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54" +checksum = "1b69a91d4893e713e06f724597ad630f1fa76057a5e1026c0ca67054a9032a76" dependencies = [ - "opentelemetry_api 0.20.0", - "opentelemetry_sdk 0.20.0", + "futures-core", + "futures-sink", + "js-sys", + "once_cell", + "pin-project-lite", + "thiserror", ] [[package]] name = "opentelemetry-otlp" -version = "0.13.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e5e5a5c4135864099f3faafbe939eb4d7f9b80ebf68a8448da961b32a7c1275" +checksum = "a94c69209c05319cdf7460c6d4c055ed102be242a0a6245835d7bc42c6ec7f54" dependencies = [ "async-trait", "futures-core", - "http", + "http 0.2.12", + "opentelemetry", "opentelemetry-proto", - "opentelemetry-semantic-conventions", - "opentelemetry_api 0.20.0", - "opentelemetry_sdk 0.20.0", - "prost 0.11.9", + "opentelemetry_sdk", + "prost 0.12.6", "thiserror", "tokio", - "tonic 0.9.2", + "tonic 0.11.0", ] [[package]] name = "opentelemetry-proto" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e3f814aa9f8c905d0ee4bde026afd3b2577a97c10e1699912e3e44f0c4cbeb" -dependencies = [ - "opentelemetry_api 0.20.0", - "opentelemetry_sdk 0.20.0", - "prost 0.11.9", - "tonic 0.9.2", -] - -[[package]] -name = "opentelemetry-semantic-conventions" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73c9f9340ad135068800e7f1b24e9e09ed9e7143f5bf8518ded3d3ec69789269" -dependencies = [ - "opentelemetry 0.20.0", -] - -[[package]] -name = "opentelemetry_api" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed41783a5bf567688eb38372f2b7a8530f5a607a4b49d38dd7573236c23ca7e2" -dependencies = [ - "futures-channel", - "futures-util", - "indexmap 1.9.3", - "once_cell", - "pin-project-lite", - "thiserror", - "urlencoding", -] - -[[package]] -name = "opentelemetry_api" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a81f725323db1b1206ca3da8bb19874bbd3f57c3bcd59471bfb04525b265b9b" -dependencies = [ - "futures-channel", - "futures-util", - "indexmap 1.9.3", - "js-sys", - "once_cell", - "pin-project-lite", - "thiserror", - "urlencoding", -] - -[[package]] -name = "opentelemetry_sdk" -version = "0.19.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b3a2a91fdbfdd4d212c0dcc2ab540de2c2bcbbd90be17de7a7daf8822d010c1" +checksum = "984806e6cf27f2b49282e2a05e288f30594f3dbc74eb7a6e99422bc48ed78162" dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "once_cell", - "opentelemetry_api 0.19.0", - "percent-encoding", - "rand 0.8.5", - "thiserror", + "opentelemetry", + "opentelemetry_sdk", + "prost 0.12.6", + "tonic 0.11.0", ] [[package]] name = "opentelemetry_sdk" -version = "0.20.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa8e705a0612d48139799fcbaba0d4a90f06277153e43dd2bdc16c6f0edd8026" +checksum = "ae312d58eaa90a82d2e627fd86e075cf5230b3f11794e2ed74199ebbe572d4fd" dependencies = [ "async-trait", - "crossbeam-channel", "futures-channel", "futures-executor", "futures-util", + "glob", + "lazy_static", "once_cell", - "opentelemetry_api 0.20.0", - "ordered-float 3.9.1", + "opentelemetry", + "ordered-float 4.2.1", "percent-encoding", "rand 0.8.5", - "regex", - "serde_json", "thiserror", "tokio", "tokio-stream", @@ -9971,9 +9987,9 @@ dependencies = [ [[package]] name = "ordered-float" -version = "3.9.1" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a54938017eacd63036332b4ae5c8a49fc8c0c1d6d629893057e4f13609edd06" +checksum = "19ff2cf528c6c03d9ed653d6c4ce1dc0582dc4af309790ad92f07c1cd551b0be" dependencies = [ "num-traits", ] @@ -9995,20 +10011,11 @@ version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec4c6225c69b4ca778c0aea097321a64c421cf4577b331c61b229267edabb6f8" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro-error", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", -] - -[[package]] -name = "output_vt100" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" -dependencies = [ - "winapi", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] @@ -10037,14 +10044,25 @@ checksum = "caff54706df99d2a78a5a4e3455ff45448d81ef1bb63c22cd14052ca0e993a3f" [[package]] name = "p256" -version = "0.13.2" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" +dependencies = [ + "ecdsa 0.14.8", + "elliptic-curve 0.12.3", + "sha2 0.10.8", +] + +[[package]] +name = "p256" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" dependencies = [ - "ecdsa 0.16.6", - "elliptic-curve 0.13.4", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", "primeorder", - "sha2 0.10.6", + "sha2 0.10.8", ] [[package]] @@ -10055,7 +10073,7 @@ checksum = "11259b086696fc9256f790485d8f14f11f0fa60a60351af9693e3d49fd24fdb6" dependencies = [ "autocfg", "packable-derive", - "primitive-types 0.12.2", + "primitive-types", "serde", ] @@ -10065,11 +10083,11 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9567693dd2f9a4339cb0a54adfcc0cb431c0ac88b2e46c6ddfb5f5d11a1cc4f" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro-error", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] @@ -10094,62 +10112,30 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" -dependencies = [ - "arrayvec", - "bitvec 0.20.4", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive 2.3.1", - "serde", -] - -[[package]] -name = "parity-scale-codec" -version = "3.6.5" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" dependencies = [ "arrayvec", - "bitvec 1.0.1", + "bitvec", "byte-slice-cast", "impl-trait-for-tuples", - "parity-scale-codec-derive 3.6.5", + "parity-scale-codec-derive", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "2.3.1" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" dependencies = [ - "proc-macro-crate", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro-crate 3.1.0", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] -[[package]] -name = "parity-scale-codec-derive" -version = "3.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" -dependencies = [ - "proc-macro-crate", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", -] - -[[package]] -name = "parking" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" - [[package]] name = "parking_lot" version = "0.11.2" @@ -10163,12 +10149,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", - "parking_lot_core 0.9.9", + "parking_lot_core 0.9.10", ] [[package]] @@ -10187,22 +10173,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", + "redox_syscall 0.5.3", "smallvec", - "windows-targets 0.48.0", + "windows-targets 0.52.6", ] [[package]] name = "parquet" -version = "50.0.0" +version = "52.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "547b92ebf0c1177e3892f44c8f79757ee62e678d564a9834189725f2c5b7a750" +checksum = "0f22ba0d95db56dde8685e3fadcb915cdaadda31ab8abbe3ff7f0ad1ef333267" dependencies = [ "ahash 0.8.11", "arrow-array", @@ -10212,22 +10198,23 @@ dependencies = [ "arrow-ipc", "arrow-schema", "arrow-select", - "base64 0.21.2", - "brotli 3.3.4", + "base64 0.22.1", + "brotli", "bytes", "chrono", "flate2", - "half 2.3.1", - "hashbrown 0.14.3", + "half", + "hashbrown 0.14.5", "lz4_flex", "num", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "paste", "seq-macro", "snap", "thrift", "twox-hash", - "zstd 0.13.0", + "zstd", + "zstd-sys", ] [[package]] @@ -10261,9 +10248,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pathdiff" @@ -10278,19 +10265,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ "digest 0.10.7", - "hmac 0.12.1", + "hmac", "password-hash", - "sha2 0.10.6", + "sha2 0.10.8", ] [[package]] name = "pbkdf2" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0ca0b5a68607598bf3bad68f32227a8164f6254833f84eafaac409cd6746c31" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ "digest 0.10.7", - "hmac 0.12.1", + "hmac", ] [[package]] @@ -10301,13 +10288,23 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "pem" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c64931a1a212348ec4f3b4362585eca7159d0d09cbdf4a7f74f02173596fd4" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" dependencies = [ "base64 0.13.1", ] +[[package]] +name = "pem" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" +dependencies = [ + "base64 0.22.1", + "serde", +] + [[package]] name = "pem-rfc7468" version = "0.6.0" @@ -10334,19 +10331,20 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.2" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1acb4a4365a13f749a93f1a094a7805e5cfa0955373a9de860d962eaa3a5fe5a" +checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" dependencies = [ + "memchr", "thiserror", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.5.2" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96504449aa860c8dcde14f9fba5c58dc6658688ca1fe363589d6327b8662c603" +checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" dependencies = [ "pest", "pest_generator", @@ -10354,26 +10352,26 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.5.2" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "798e0220d1111ae63d66cb66a5dcb3fc2d986d520b98e49e1852bfdb11d7c5e7" +checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" dependencies = [ "pest", "pest_meta", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "pest_meta" -version = "2.5.2" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "984298b75898e30a843e278a9f2452c31e349a073a0ce6fd950a12a74464e065" +checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" dependencies = [ "once_cell", "pest", - "sha1", + "sha2 0.10.8", ] [[package]] @@ -10388,19 +10386,19 @@ dependencies = [ [[package]] name = "petgraph" -version = "0.6.2" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset 0.4.2", - "indexmap 1.9.3", + "indexmap 2.2.6", ] [[package]] name = "phf" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" dependencies = [ "phf_macros", "phf_shared", @@ -10408,9 +10406,9 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ "phf_shared", "rand 0.8.5", @@ -10418,51 +10416,51 @@ dependencies = [ [[package]] name = "phf_macros" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92aacdc5f16768709a569e913f7451034034178b05bdc8acda226659a3dccc66" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" dependencies = [ "phf_generator", "phf_shared", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "phf_shared" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fb5f6f826b772a8d4c0394209441e7d37cbbb967ae9c7e0e8134365c9ee676" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" dependencies = [ "siphasher", ] [[package]] name = "pin-project" -version = "1.0.12" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.12" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -10482,6 +10480,17 @@ dependencies = [ "zeroize", ] +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der 0.7.9", + "pkcs8 0.10.2", + "spki 0.7.3", +] + [[package]] name = "pkcs8" version = "0.9.0" @@ -10498,27 +10507,21 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der 0.7.5", - "spki 0.7.1", + "der 0.7.9", + "spki 0.7.3", ] [[package]] name = "pkg-config" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" - -[[package]] -name = "platforms" -version = "3.1.2" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plotters" -version = "0.3.4" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" dependencies = [ "num-traits", "plotters-backend", @@ -10529,15 +10532,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.4" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" +checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" [[package]] name = "plotters-svg" -version = "0.3.3" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" dependencies = [ "plotters-backend", ] @@ -10555,9 +10558,9 @@ dependencies = [ [[package]] name = "polyval" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef234e08c11dfcb2e56f79fd70f6f2eb7f025c0ce2333e82f4f0518ecad30c6" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" dependencies = [ "cfg-if", "cpufeatures", @@ -10567,9 +10570,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "0.3.19" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26f6a7b87c2e435a3241addceeeff740ff8b7e76b74c13bf9acb17fa454ea00b" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "powerfmt" @@ -10590,7 +10593,7 @@ dependencies = [ "log", "nix 0.26.4", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "smallvec", "symbolic-demangle", "tempfile", @@ -10605,9 +10608,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "pq-sys" -version = "0.4.7" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b845d6d8ec554f972a2c5298aad68953fd64e7441e846075450b44656a016d1" +checksum = "a24ff9e4cf6945c988f0db7005d87747bf72864965c3529d259ad155ac41d584" dependencies = [ "vcpkg", ] @@ -10626,17 +10629,28 @@ dependencies = [ "regex", ] +[[package]] +name = "predicates" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" +dependencies = [ + "anstyle", + "difflib", + "predicates-core", +] + [[package]] name = "predicates-core" -version = "1.0.5" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f883590242d3c6fc5bf50299011695fa6590c2c70eac95ee1bdb9a733ad1a2" +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" [[package]] name = "predicates-tree" -version = "1.0.7" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54ff541861505aabf6ea722d2131ee980b8276e10a1297b94e896dd8b621850d" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" dependencies = [ "predicates-core", "termtree", @@ -10649,19 +10663,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f1799f398371ad6957951ec446d3ff322d35c46d9db2e217b67e828b311c249" dependencies = [ "hex", - "primitive-types 0.12.2", + "primitive-types", "uint", ] [[package]] name = "pretty_assertions" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755" +checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" dependencies = [ - "ctor", "diff", - "output_vt100", "yansi", ] @@ -10671,18 +10683,18 @@ version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" dependencies = [ - "proc-macro2 1.0.78", - "syn 1.0.107", + "proc-macro2 1.0.86", + "syn 1.0.109", ] [[package]] name = "prettyplease" -version = "0.2.6" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b69d39aab54d069e7f2fe8cb970493e7834601ca2d8c65fd7bbd183578080d1" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ - "proc-macro2 1.0.78", - "syn 2.0.48", + "proc-macro2 1.0.86", + "syn 2.0.72", ] [[package]] @@ -10701,23 +10713,11 @@ dependencies = [ [[package]] name = "primeorder" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0" -dependencies = [ - "elliptic-curve 0.13.4", -] - -[[package]] -name = "primitive-types" -version = "0.10.1" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" dependencies = [ - "fixed-hash 0.7.0", - "impl-codec 0.5.1", - "impl-serde 0.3.2", - "uint", + "elliptic-curve 0.13.8", ] [[package]] @@ -10726,9 +10726,9 @@ version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ - "fixed-hash 0.8.0", - "impl-codec 0.6.0", - "impl-serde 0.4.0", + "fixed-hash", + "impl-codec", + "impl-serde", "uint", ] @@ -10739,7 +10739,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit 0.19.10", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", ] [[package]] @@ -10749,9 +10758,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", "version_check", ] @@ -10761,17 +10770,11 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", + "proc-macro2 1.0.86", + "quote 1.0.36", "version_check", ] -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - [[package]] name = "proc-macro2" version = "0.4.30" @@ -10783,24 +10786,24 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "prometheus" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" dependencies = [ "cfg-if", "fnv", "lazy_static", "memchr", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "protobuf", "thiserror", ] @@ -10816,44 +10819,45 @@ dependencies = [ [[package]] name = "prometheus-http-query" -version = "0.6.6" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7970fd6e91b5cb87e9a093657572a896d133879ced7752d2c7635beae29eaba0" +checksum = "0fcebfa99f03ae51220778316b37d24981e36322c82c24848f48c5bd0f64cbdb" dependencies = [ - "reqwest", + "enum-as-inner", + "mime", + "reqwest 0.12.5", "serde", - "serde_json", "time", "url", ] [[package]] name = "prometheus-parse" -version = "0.2.3" -source = "git+https://github.com/asonnino/prometheus-parser.git?rev=75334db#75334dbe2d286edf6d4424abba92a74643333096" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "811031bea65e5a401fb2e1f37d802cca6601e204ac463809a3189352d13b78a5" dependencies = [ "chrono", - "itertools 0.10.5", - "lazy_static", + "itertools 0.12.1", + "once_cell", "regex", ] [[package]] name = "proptest" -version = "1.1.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29f1b898011ce9595050a68e60f90bad083ff2987a695a42357134c8381fba70" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" dependencies = [ "bit-set", - "bitflags 1.3.2", - "byteorder", + "bit-vec", + "bitflags 2.6.0", "lazy_static", "num-traits", - "quick-error 2.0.1", "rand 0.8.5", "rand_chacha 0.3.1", "rand_xorshift", - "regex-syntax 0.6.28", + "regex-syntax 0.8.4", "rusty-fork", "tempfile", "unarray", @@ -10872,79 +10876,87 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.9" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" dependencies = [ "bytes", - "prost-derive 0.11.9", + "prost-derive 0.12.6", ] [[package]] name = "prost" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a" +checksum = "e13db3d3fde688c61e2446b4d843bc27a7e8af269a69440c0308021dc92333cc" dependencies = [ "bytes", - "prost-derive 0.12.3", + "prost-derive 0.13.1", ] [[package]] name = "prost-build" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55e02e35260070b6f716a2423c2ff1c3bb1642ddca6f99e1f26d06268a0e2d2" +checksum = "5bb182580f71dd070f88d01ce3de9f4da5021db7115d2e1c3605a754153b77c1" dependencies = [ "bytes", - "heck", - "itertools 0.11.0", + "heck 0.5.0", + "itertools 0.13.0", "log", "multimap", "once_cell", - "petgraph 0.6.2", - "prettyplease 0.2.6", - "prost 0.12.3", - "prost-types", + "petgraph 0.6.5", + "prettyplease 0.2.20", + "prost 0.13.1", + "prost-types 0.13.1", "regex", - "syn 2.0.48", + "syn 2.0.72", "tempfile", - "which", ] [[package]] name = "prost-derive" -version = "0.11.9" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" dependencies = [ "anyhow", - "itertools 0.10.5", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "itertools 0.12.1", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "prost-derive" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" +checksum = "18bec9b0adc4eba778b33684b7ba3e7137789434769ee3ce3930463ef904cfca" dependencies = [ "anyhow", - "itertools 0.11.0", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "itertools 0.13.0", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "prost-types" -version = "0.12.3" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e" +checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" dependencies = [ - "prost 0.12.3", + "prost 0.12.6", +] + +[[package]] +name = "prost-types" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cee5168b05f49d4b0ca581206eb14a7b22fafd963efe729ac48eb03266e25cc2" +dependencies = [ + "prost 0.13.1", ] [[package]] @@ -10974,26 +10986,14 @@ dependencies = [ "cc", ] -[[package]] -name = "pulldown-cmark" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" -dependencies = [ - "bitflags 2.4.1", - "memchr", - "unicase", -] - [[package]] name = "quanta" -version = "0.11.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab" +checksum = "8e5167a477619228a0b284fac2674e3c388cba90631d7b7de620e6f1fcd08da5" dependencies = [ "crossbeam-utils", "libc", - "mach2", "once_cell", "raw-cpuid", "wasi 0.11.0+wasi-snapshot-preview1", @@ -11007,45 +11007,46 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" -[[package]] -name = "quick-error" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" - [[package]] name = "quick-xml" -version = "0.28.2" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1" +checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc" dependencies = [ "memchr", "serde", ] [[package]] -name = "quick-xml" -version = "0.31.0" +name = "quinn" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" dependencies = [ - "memchr", - "serde", + "bytes", + "futures-io", + "pin-project-lite", + "quinn-proto 0.10.6", + "quinn-udp 0.4.1", + "rustc-hash 1.1.0", + "rustls 0.21.12", + "thiserror", + "tokio", + "tracing", ] [[package]] name = "quinn" -version = "0.10.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21252f1c0fc131f1b69182db8f34837e8a69737b8251dff75636a9be0518c324" +checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" dependencies = [ "bytes", - "futures-io", "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash", - "rustls 0.21.6", + "quinn-proto 0.11.3", + "quinn-udp 0.5.4", + "rustc-hash 1.1.0", + "rustls 0.23.12", "thiserror", "tokio", "tracing", @@ -11053,15 +11054,32 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c78e758510582acc40acb90458401172d41f1016f8c9dde89e49677afb7eec1" +checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a" dependencies = [ "bytes", "rand 0.8.5", "ring 0.16.20", - "rustc-hash", - "rustls 0.21.6", + "rustc-hash 1.1.0", + "rustls 0.21.12", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" +dependencies = [ + "bytes", + "rand 0.8.5", + "ring 0.17.8", + "rustc-hash 1.1.0", + "rustls 0.23.12", "slab", "thiserror", "tinyvec", @@ -11070,17 +11088,29 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6df19e284d93757a9fb91d63672f7741b129246a669db09d1c0063071debc0c0" +checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" dependencies = [ "bytes", "libc", - "socket2 0.5.6", + "socket2 0.5.7", "tracing", "windows-sys 0.48.0", ] +[[package]] +name = "quinn-udp" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +dependencies = [ + "libc", + "once_cell", + "socket2 0.5.7", + "windows-sys 0.52.0", +] + [[package]] name = "quote" version = "0.6.13" @@ -11092,11 +11122,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ - "proc-macro2 1.0.78", + "proc-macro2 1.0.86", ] [[package]] @@ -11106,16 +11136,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93" dependencies = [ "log", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "scheduled-thread-pool", ] -[[package]] -name = "radium" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" - [[package]] name = "radium" version = "0.7.0" @@ -11191,7 +11215,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.15", ] [[package]] @@ -11219,7 +11243,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b2a9fe2d7d9eeaf3279d1780452a5bbd26b31b27938787ef1c3e930d1e9cfbd" dependencies = [ "rand 0.8.5", - "regex-syntax 0.6.28", + "regex-syntax 0.6.29", ] [[package]] @@ -11251,18 +11275,18 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "10.6.0" +version = "11.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6823ea29436221176fe662da99998ad3b4db2c7f31e7b6f5fe43adccd6320bb" +checksum = "cb9ee317cfe3fbd54b36a511efc1edd42e216903c9cd575e686dd68a2ba90d8d" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", ] [[package]] name = "rayon" -version = "1.6.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -11270,14 +11294,12 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.10.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cac410af5d00ab6884528b4ab69d1e8e146e8d471201800fa1b4524126de6ad3" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] [[package]] @@ -11286,7 +11308,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd" dependencies = [ - "pem", + "pem 1.1.1", "ring 0.16.20", "time", "yasna", @@ -11294,13 +11316,13 @@ dependencies = [ [[package]] name = "readonly" -version = "0.2.3" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78725e4e53781014168628ef49b2dc2fc6ae8d01a08769a5064685d34ee116c" +checksum = "a25d631e41bfb5fdcde1d4e2215f62f7f0afa3ff11e26563765bd6ea1d229aeb" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] @@ -11313,11 +11335,11 @@ dependencies = [ "libc", "mio", "num_cpus", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.6", - "tokio-macros 2.2.0 (git+https://github.com/mystenmark/tokio-madsim-fork.git?rev=e47aafebf98e9c1734a8848a1876d5946c44bdd1)", + "socket2 0.5.7", + "tokio-macros 2.2.0", "windows-sys 0.48.0", ] @@ -11332,63 +11354,63 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ - "getrandom 0.2.9", - "redox_syscall 0.2.16", + "getrandom 0.2.15", + "libredox", "thiserror", ] [[package]] name = "ref-cast" -version = "1.0.14" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c78fb8c9293bcd48ef6fce7b4ca950ceaf21210de6e105a883ee280c0f7b9ed" +checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.14" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f9c0c92af03644e4806106281fe2e068ac5bc0ae74a707266d06ea27bccee5f" +checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "regex" -version = "1.10.4" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ - "aho-corasick 1.0.2", + "aho-corasick", "memchr", - "regex-automata 0.4.6", - "regex-syntax 0.8.2", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -11397,31 +11419,37 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "regex-syntax 0.6.28", + "regex-syntax 0.6.29", ] [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ - "aho-corasick 1.0.2", + "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.4", ] +[[package]] +name = "regex-lite" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" + [[package]] name = "regex-syntax" -version = "0.6.28" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reqwest" @@ -11429,95 +11457,131 @@ version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ - "async-compression 0.4.6", - "base64 0.21.2", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-rustls 0.24.0", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.30", + "hyper-rustls 0.24.2", "ipnet", "js-sys", "log", "mime", - "mime_guess", "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.6", - "rustls-native-certs", - "rustls-pemfile 1.0.2", + "rustls 0.21.12", + "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 0.1.2", "system-configuration", "tokio", - "tokio-rustls 0.24.0", - "tokio-util 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-rustls 0.24.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.4", + "winreg 0.50.0", +] + +[[package]] +name = "reqwest" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +dependencies = [ + "async-compression", + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-rustls 0.27.2", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "quinn 0.11.2", + "rustls 0.23.12", + "rustls-native-certs 0.7.1", + "rustls-pemfile 2.1.2", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "tokio", + "tokio-rustls 0.26.0", + "tokio-util 0.7.11", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 0.25.2", - "winreg", + "webpki-roots 0.26.3", + "winreg 0.52.0", ] [[package]] name = "reqwest-middleware" -version = "0.2.4" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a3e86aa6053e59030e7ce2d2a3b258dd08fc2d337d52f73f6cb480f5858690" +checksum = "39346a33ddfe6be00cbc17a34ce996818b97b230b87229f10114693becca1268" dependencies = [ "anyhow", "async-trait", - "http", - "reqwest", + "http 1.1.0", + "reqwest 0.12.5", "serde", - "task-local-extensions", "thiserror", + "tower-service", ] [[package]] name = "reqwest-retry" -version = "0.3.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9af20b65c2ee9746cc575acb6bd28a05ffc0d15e25c992a8f4462d8686aacb4f" +checksum = "40f342894422862af74c50e1e9601cf0931accc9c6981e5eb413c46603b616b5" dependencies = [ "anyhow", "async-trait", "chrono", "futures", - "getrandom 0.2.9", - "http", - "hyper", + "getrandom 0.2.15", + "http 1.1.0", + "hyper 1.4.1", "parking_lot 0.11.2", - "reqwest", + "reqwest 0.12.5", "reqwest-middleware", "retry-policies", - "task-local-extensions", "tokio", "tracing", "wasm-timer", ] -[[package]] -name = "retain_mut" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c31b5c4033f8fdde8700e4657be2c497e7288f01515be52168c631e2e4d4086" - [[package]] name = "retry-policies" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17dd00bff1d737c40dbcd47d4375281bf4c17933f9eef0a185fc7bacca23ecbd" +checksum = "493b4243e32d6eedd29f9a398896e35c6943a123b55eec97dcaee98310d25810" dependencies = [ "anyhow", "chrono", @@ -11531,7 +11595,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" dependencies = [ "crypto-bigint 0.4.9", - "hmac 0.12.1", + "hmac", "zeroize", ] @@ -11541,7 +11605,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ - "hmac 0.12.1", + "hmac", "subtle", ] @@ -11562,16 +11626,17 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.3" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babe80d5c16becf6594aa32ad2be8fe08498e7ae60b77de8df700e67f191d7e" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", - "getrandom 0.2.9", + "cfg-if", + "getrandom 0.2.15", "libc", "spin 0.9.8", "untrusted 0.9.0", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -11591,13 +11656,12 @@ checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" [[package]] name = "roaring" -version = "0.10.1" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef0fb5e826a8bde011ecae6a8539dd333884335c57ff0f003fbe27c25bbe8f71" +checksum = "8f4b84ba6e838ceb47b41de5194a60244fac43d9fe03b71dbe8c5a201081d6d1" dependencies = [ "bytemuck", "byteorder", - "retain_mut", ] [[package]] @@ -11612,15 +11676,22 @@ dependencies = [ [[package]] name = "ron" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300a51053b1cb55c80b7a9fde4120726ddf25ca241a1cbb926626f62fb136bff" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ - "base64 0.13.1", - "bitflags 1.3.2", + "base64 0.21.7", + "bitflags 2.6.0", "serde", + "serde_derive", ] +[[package]] +name = "route-recognizer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" + [[package]] name = "rsa" version = "0.8.2" @@ -11633,11 +11704,31 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "pkcs1", + "pkcs1 0.4.1", "pkcs8 0.9.0", "rand_core 0.6.4", - "sha2 0.10.6", - "signature 2.0.0", + "sha2 0.10.8", + "signature 2.2.0", + "subtle", + "zeroize", +] + +[[package]] +name = "rsa" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" +dependencies = [ + "const-oid", + "digest 0.10.7", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1 0.7.5", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "signature 2.2.0", + "spki 0.7.3", "subtle", "zeroize", ] @@ -11661,96 +11752,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7229b505ae0706e64f37ffc54a9c163e11022a6636d58fe1f3f52018257ff9f7" dependencies = [ "cfg-if", - "proc-macro2 1.0.78", - "quote 1.0.35", + "proc-macro2 1.0.86", + "quote 1.0.36", "rustc_version", - "syn 1.0.107", + "syn 1.0.109", "unicode-ident", ] -[[package]] -name = "rusoto_core" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db30db44ea73551326269adcf7a2169428a054f14faf9e1768f2163494f2fa2" -dependencies = [ - "async-trait", - "base64 0.13.1", - "bytes", - "crc32fast", - "futures", - "http", - "hyper", - "hyper-rustls 0.23.2", - "lazy_static", - "log", - "rusoto_credential", - "rusoto_signature", - "rustc_version", - "serde", - "serde_json", - "tokio", - "xml-rs", -] - -[[package]] -name = "rusoto_credential" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee0a6c13db5aad6047b6a44ef023dbbc21a056b6dab5be3b79ce4283d5c02d05" -dependencies = [ - "async-trait", - "chrono", - "dirs-next", - "futures", - "hyper", - "serde", - "serde_json", - "shlex", - "tokio", - "zeroize", -] - -[[package]] -name = "rusoto_kms" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e1fc19cfcfd9f6b2f96e36d5b0dddda9004d2cbfc2d17543e3b9f10cc38fce8" -dependencies = [ - "async-trait", - "bytes", - "futures", - "rusoto_core", - "serde", - "serde_json", -] - -[[package]] -name = "rusoto_signature" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ae95491c8b4847931e291b151127eccd6ff8ca13f33603eb3d0035ecb05272" -dependencies = [ - "base64 0.13.1", - "bytes", - "chrono", - "digest 0.9.0", - "futures", - "hex", - "hmac 0.11.0", - "http", - "hyper", - "log", - "md-5 0.9.1", - "percent-encoding", - "pin-project-lite", - "rusoto_credential", - "rustc_version", - "serde", - "sha2 0.9.9", - "tokio", -] - [[package]] name = "russh" version = "0.38.0" @@ -11760,37 +11768,37 @@ dependencies = [ "aes", "aes-gcm", "async-trait", - "bitflags 2.4.1", + "bitflags 2.6.0", "byteorder", "chacha20", "ctr", - "curve25519-dalek 4.1.0", + "curve25519-dalek 4.1.3", "digest 0.10.7", "flate2", "futures", "generic-array", - "hex-literal 0.4.1", - "hmac 0.12.1", + "hex-literal", + "hmac", "log", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "once_cell", "poly1305", "rand 0.8.5", "russh-cryptovec", "russh-keys", "sha1", - "sha2 0.10.6", + "sha2 0.10.8", "subtle", "thiserror", "tokio", - "tokio-util 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-util 0.7.11", ] [[package]] name = "russh-cryptovec" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fdf036c2216b554053d19d4af45c1722d13b00ac494ea19825daf4beac034e" +checksum = "fadd2c0ab350e21c66556f94ee06f766d8bdae3213857ba7610bfd8e10e51880" dependencies = [ "libc", "winapi", @@ -11806,7 +11814,7 @@ dependencies = [ "async-trait", "bcrypt-pbkdf", "bit-vec", - "block-padding 0.3.2", + "block-padding 0.3.3", "byteorder", "cbc", "ctr", @@ -11814,18 +11822,18 @@ dependencies = [ "dirs 5.0.1", "ed25519-dalek", "futures", - "hmac 0.12.1", + "hmac", "inout", "log", "md5", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-integer", "pbkdf2 0.11.0", "rand 0.7.3", "rand_core 0.6.4", "russh-cryptovec", "serde", - "sha2 0.10.6", + "sha2 0.10.8", "thiserror", "tokio", "tokio-stream", @@ -11846,9 +11854,9 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.27.0" +version = "1.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c321ee4e17d2b7abe12b5d20c1231db708dd36185c8a21e9de5fed6da4dbe9" +checksum = "1790d1c4c0ca81211399e0e0af16333276f375209e71a37b67698a373db5b47a" dependencies = [ "arrayvec", "num-traits", @@ -11856,9 +11864,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.21" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -11866,6 +11874,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + [[package]] name = "rustc-hex" version = "2.1.0" @@ -11878,170 +11892,177 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.16", + "semver", ] [[package]] name = "rusticata-macros" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" -dependencies = [ - "nom", -] - -[[package]] -name = "rustix" -version = "0.36.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4feacf7db682c6c329c4ede12649cd36ecab0f3be5b7d74e6a20304725db4549" -dependencies = [ - "bitflags 1.3.2", - "errno 0.2.8", - "io-lifetimes", - "libc", - "linux-raw-sys 0.1.4", - "windows-sys 0.42.0", -] - -[[package]] -name = "rustix" -version = "0.37.7" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aae838e49b3d63e9274e1c01833cc8139d3fec468c3b84688c628f44b1ae11d" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" dependencies = [ - "bitflags 1.3.2", - "errno 0.3.8", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.1", - "windows-sys 0.45.0", + "nom", ] [[package]] name = "rustix" -version = "0.38.28" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.4.1", - "errno 0.3.8", + "bitflags 2.6.0", + "errno", "libc", - "linux-raw-sys 0.4.12", + "linux-raw-sys", "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.20.7" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2c" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.16.20", + "ring 0.17.8", + "rustls-webpki 0.101.7", "sct", - "webpki", ] [[package]] name = "rustls" -version = "0.21.6" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1feddffcfcc0b33f5c6ce9a29e341e4cd59c3f78e7ee45f4a40c038b1d6cbb" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" dependencies = [ "log", - "ring 0.16.20", - "rustls-webpki 0.101.7", - "sct", + "ring 0.17.8", + "rustls-pki-types", + "rustls-webpki 0.102.6", + "subtle", + "zeroize", ] [[package]] name = "rustls" -version = "0.22.2" +version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ + "aws-lc-rs", "log", - "ring 0.17.3", + "once_cell", + "ring 0.17.8", "rustls-pki-types", - "rustls-webpki 0.102.2", + "rustls-webpki 0.102.6", "subtle", "zeroize", ] [[package]] name = "rustls-native-certs" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", - "rustls-pemfile 1.0.2", + "rustls-pemfile 1.0.4", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-native-certs" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a88d6d420651b496bdd98684116959239430022a115c1240e6c3993be0b15fba" +dependencies = [ + "openssl-probe", + "rustls-pemfile 2.1.2", + "rustls-pki-types", "schannel", "security-framework", ] [[package]] name = "rustls-pemfile" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.2", + "base64 0.21.7", ] [[package]] name = "rustls-pemfile" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f48172685e6ff52a556baa527774f61fcaa884f59daf3375c62a3f1cd2549dab" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ - "base64 0.21.2", + "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.3.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ede67b28608b4c60685c7d54122d4400d90f62b40caee7700e700380a390fa8" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" [[package]] -name = "rustls-webpki" -version = "0.100.3" +name = "rustls-platform-verifier" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6a5fc258f1c1276dfe3016516945546e2d5383911efc0fc4f1cdc5df3a4ae3" +checksum = "3e3beb939bcd33c269f4bf946cc829fcd336370267c4a927ac0399c84a3151a1" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "core-foundation", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls 0.23.12", + "rustls-native-certs 0.7.1", + "rustls-platform-verifier-android", + "rustls-webpki 0.102.6", + "security-framework", + "security-framework-sys", + "webpki-roots 0.26.3", + "winapi", ] +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84e217e7fdc8466b5b35d30f8c0a30febd29173df4a3a0c2115d306b9c4117ad" + [[package]] name = "rustls-webpki" version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.3", + "ring 0.17.8", "untrusted 0.9.0", ] [[package]] name = "rustls-webpki" -version = "0.102.2" +version = "0.102.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" dependencies = [ - "ring 0.17.3", + "aws-lc-rs", + "ring 0.17.8", "rustls-pki-types", "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.11" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "rusty-fork" @@ -12050,7 +12071,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" dependencies = [ "fnv", - "quick-error 1.2.3", + "quick-error", "tempfile", "wait-timeout", ] @@ -12085,16 +12106,16 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "107c3d5d7f370ac09efa62a78375f94d94b8a33c61d8c278b96683fb4dbf2d8d" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] name = "ryu" -version = "1.0.12" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "salsa20" @@ -12116,27 +12137,27 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys 0.42.0", + "windows-sys 0.52.0", ] [[package]] name = "scheduled-thread-pool" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "977a7519bff143a44f842fd07e80ad1329295bd71686457f18e496736f4bf9bf" +checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19" dependencies = [ - "parking_lot 0.12.1", + "parking_lot 0.12.3", ] [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" dependencies = [ "dyn-clone", "either", @@ -12147,27 +12168,21 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", + "proc-macro2 1.0.86", + "quote 1.0.36", "serde_derive_internals", - "syn 1.0.107", + "syn 2.0.72", ] [[package]] name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "scratch" -version = "1.0.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scrypt" @@ -12175,19 +12190,19 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" dependencies = [ - "pbkdf2 0.12.1", + "pbkdf2 0.12.2", "salsa20", - "sha2 0.10.6", + "sha2 0.10.8", ] [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring 0.17.8", + "untrusted 0.9.0", ] [[package]] @@ -12205,18 +12220,19 @@ dependencies = [ "base16ct 0.1.1", "der 0.6.1", "generic-array", + "pkcs8 0.9.0", "subtle", "zeroize", ] [[package]] name = "sec1" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ "base16ct 0.2.0", - "der 0.7.5", + "der 0.7.9", "generic-array", "pkcs8 0.10.2", "serdect", @@ -12246,22 +12262,23 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", + "num-bigint 0.4.6", "security-framework-sys", ] [[package]] name = "security-framework-sys" -version = "2.6.1" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", @@ -12269,30 +12286,18 @@ dependencies = [ [[package]] name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.16" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] [[package]] -name = "semver-parser" -version = "0.10.2" +name = "send_wrapper" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" [[package]] name = "seq-macro" @@ -12302,9 +12307,9 @@ checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" [[package]] name = "serde" -version = "1.0.198" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] @@ -12321,9 +12326,9 @@ dependencies = [ [[package]] name = "serde-reflection" -version = "0.3.6" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05a5f801ac62a51a49d378fdb3884480041b99aced450b28990673e8ff99895" +checksum = "5b6798a64289ff550d8d79847467789a5fd30b42c9c406a4d6dc0bc9b567e55c" dependencies = [ "once_cell", "serde", @@ -12332,40 +12337,40 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.9" +version = "0.11.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "serde_derive_internals" -version = "0.26.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" dependencies = [ "indexmap 2.2.6", "itoa", @@ -12375,10 +12380,11 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.9" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b04f22b563c91331a10074bda3dd5492e3cc39d56bd557e91c0af42b6c7341" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" dependencies = [ + "itoa", "serde", ] @@ -12388,25 +12394,25 @@ version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "serde_spanned" -version = "0.6.2" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93107647184f6027e3b7dcb2e11034cf95ffa1e3a682c67951963ac69c1c007d" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] [[package]] name = "serde_test" -version = "1.0.152" +version = "1.0.176" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3611210d2d67e3513204742004d6ac6f589e521861dabb0f649b070eea8bed9e" +checksum = "5a2f49ace1498612d14f7e0b8245519584db8299541dfe31a06374a828d620ab" dependencies = [ "serde", ] @@ -12425,9 +12431,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "2.1.0" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25bf4a5a814902cd1014dbccfa4d4560fb8432c779471e96e035602519f82eef" +checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" dependencies = [ "base64 0.13.1", "chrono", @@ -12441,35 +12447,23 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3452b4c0f6c1e357f73fdb87cd1efabaa12acf328c7a528e252893baeb3f4aa" -dependencies = [ - "darling 0.14.2", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", -] - -[[package]] -name = "serde_yaml" -version = "0.8.26" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" +checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" dependencies = [ - "indexmap 1.9.3", - "ryu", - "serde", - "yaml-rust", + "darling 0.20.10", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "serde_yaml" -version = "0.9.21" +version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9d684e3ec7de3bf5466b32bd75303ac16f0736426e5a4e0d6e489559ce1249c" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 1.9.3", + "indexmap 2.2.6", "itoa", "ryu", "serde", @@ -12496,7 +12490,7 @@ dependencies = [ "futures", "lazy_static", "log", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "serial_test_derive", ] @@ -12506,22 +12500,9 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", -] - -[[package]] -name = "sha-1" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] @@ -12537,9 +12518,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", @@ -12561,9 +12542,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -12584,9 +12565,9 @@ dependencies = [ [[package]] name = "sha3" -version = "0.10.6" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ "digest 0.10.7", "keccak", @@ -12594,9 +12575,9 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] @@ -12635,9 +12616,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook" -version = "0.3.14" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" dependencies = [ "libc", "signal-hook-registry", @@ -12656,9 +12637,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -12675,19 +12656,37 @@ dependencies = [ [[package]] name = "signature" -version = "2.0.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fe458c98333f9c8152221191a77e2a44e8325d0193484af2e9421a53019e57d" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", "rand_core 0.6.4", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "similar" -version = "2.4.0" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" + +[[package]] +name = "simple_asn1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32fea41aca09ee824cc9724996433064c89f7777e60762749a4170a14abbfa21" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "thiserror", + "time", +] [[package]] name = "simplelog" @@ -12732,9 +12731,9 @@ dependencies = [ [[package]] name = "siphasher" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "sized-chunks" @@ -12746,26 +12745,11 @@ dependencies = [ "typenum", ] -[[package]] -name = "skeptic" -version = "0.13.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8" -dependencies = [ - "bytecount", - "cargo_metadata 0.14.2", - "error-chain", - "glob", - "pulldown-cmark", - "tempfile", - "walkdir", -] - [[package]] name = "slab" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] @@ -12781,9 +12765,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.10.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smawk" @@ -12793,9 +12777,9 @@ checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "snafu" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0656e7e3ffb70f6c39b3c2a86332bb74aa3c679da781642590f3c1118c5045" +checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6" dependencies = [ "doc-comment", "snafu-derive", @@ -12803,51 +12787,69 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "475b3bbe5245c26f2d8a6f62d67c1f30eb9fffeccee721c45d162c3ebbdf81b2" +checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf" dependencies = [ - "heck", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "heck 0.4.1", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] name = "snap" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e9f0ab6ef7eb7353d9119c170a436d1bf248eea575ac42d19d12f4e34130831" +checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" [[package]] name = "snowflake-api" -version = "0.6.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66ca01bf134469135170a7271c0a31bbfb7da903104857e3dfa671093300683a" +checksum = "1c7f29746a86845a74953b3728029b378c9bac2fb15c2defd54a8177cabcc452" dependencies = [ "arrow", "async-trait", - "base64 0.21.2", + "base64 0.22.1", "bytes", "futures", + "glob", "log", - "object_store 0.9.0", + "object_store", "regex", - "reqwest", + "reqwest 0.12.5", "reqwest-middleware", "reqwest-retry", "serde", "serde_json", + "snowflake-jwt", "thiserror", + "tokio", "url", "uuid", ] +[[package]] +name = "snowflake-jwt" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f1c0c8818bb7400e821b166075ec771c8e8a012af41a8982b34eefaad4739fd" +dependencies = [ + "base64 0.22.1", + "jsonwebtoken", + "rsa 0.9.6", + "serde", + "sha2 0.10.8", + "thiserror", + "time", +] + [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", @@ -12855,9 +12857,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -12865,18 +12867,18 @@ dependencies = [ [[package]] name = "soketto" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" +checksum = "37468c595637c10857701c990f93a40ce0e357cedb0953d1c26c8d8027f9bb53" dependencies = [ - "base64 0.13.1", + "base64 0.22.1", "bytes", "futures", - "http", + "http 1.1.0", "httparse", "log", "rand 0.8.5", - "sha-1 0.9.8", + "sha1", ] [[package]] @@ -12891,6 +12893,15 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +[[package]] +name = "spinning_top" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" version = "0.6.0" @@ -12903,12 +12914,12 @@ dependencies = [ [[package]] name = "spki" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a5be806ab6f127c3da44b7378837ebf01dadca8510a0e572460216b228bd0e" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", - "der 0.7.5", + "der 0.7.9", ] [[package]] @@ -12936,6 +12947,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "static_assertions_next" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7beae5182595e9a8b683fa98c4317f956c9a2dec3b9716990d20023cc60c766" + [[package]] name = "str-buf" version = "1.0.6" @@ -12948,9 +12965,9 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2835db23c4724c05a2f85b81c4681f4aa8ea158edc8a7f4ad791c916fb766c2e" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] @@ -13006,22 +13023,25 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "strum" version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" -dependencies = [ - "strum_macros 0.24.3", -] [[package]] name = "strum" -version = "0.25.0" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros 0.25.2", + "strum_macros 0.26.4", ] [[package]] @@ -13030,24 +13050,24 @@ version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ - "heck", - "proc-macro2 1.0.78", - "quote 1.0.35", + "heck 0.4.1", + "proc-macro2 1.0.86", + "quote 1.0.36", "rustversion", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "strum_macros" -version = "0.25.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8d03b598d3d0fff69bf533ee3ef19b8eeb342729596df84bcc7e1f96ec4059" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", - "proc-macro2 1.0.78", - "quote 1.0.35", + "heck 0.5.0", + "proc-macro2 1.0.86", + "quote 1.0.36", "rustversion", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] @@ -13062,9 +13082,9 @@ dependencies = [ [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "subtle-ng" @@ -13095,9 +13115,9 @@ checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" [[package]] name = "symbolic-common" -version = "12.1.1" +version = "12.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26212dc7aeb75abb4cc84320a50dd482977089402f7b4043b454d6d79d8536e7" +checksum = "16629323a4ec5268ad23a575110a724ad4544aae623451de600c747bf87b36cf" dependencies = [ "debugid", "memmap2", @@ -13107,9 +13127,9 @@ dependencies = [ [[package]] name = "symbolic-demangle" -version = "12.1.1" +version = "12.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f1b0155f588568b2df0d693b30aeedb59360b647b85fc3c23942e81e8cc97a" +checksum = "48c043a45f08f41187414592b3ceb53fb0687da57209cc77401767fb69d5b596" dependencies = [ "cpp_demangle", "rustc-demangle", @@ -13129,23 +13149,23 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.107" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", + "proc-macro2 1.0.86", + "quote 1.0.36", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.48" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", + "proc-macro2 1.0.86", + "quote 1.0.36", "unicode-ident", ] @@ -13155,23 +13175,29 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" + [[package]] name = "synstructure" version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", "unicode-xid 0.2.4", ] [[package]] name = "sysinfo" -version = "0.27.7" +version = "0.27.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "975fe381e0ecba475d4acff52466906d95b153a40324956552e027b2a9eaa89e" +checksum = "a902e9050fca0a5d6877550b769abd2bd1ce8c04634b941dbe2809735e1a1e33" dependencies = [ "cfg-if", "core-foundation-sys", @@ -13220,11 +13246,11 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99f688a08b54f4f02f0a3c382aefdb7884d3d69609f785bd253dc033243e3fe4" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro-error", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] @@ -13241,24 +13267,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" dependencies = [ "filetime", "libc", "xattr", ] -[[package]] -name = "task-local-extensions" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba323866e5d033818e3240feeb9f7db2c4296674e4d9e16b97b7bf8f490434e8" -dependencies = [ - "pin-utils", -] - [[package]] name = "telemetry-subscribers" version = "0.2.0" @@ -13269,17 +13286,17 @@ dependencies = [ "camino", "clap", "console-subscriber", - "crossterm", + "crossterm 0.25.0", "futures", "once_cell", - "opentelemetry 0.20.0", + "opentelemetry", "opentelemetry-otlp", "opentelemetry-proto", - "opentelemetry_api 0.20.0", + "opentelemetry_sdk", "prometheus", - "prost 0.11.9", + "prost 0.12.6", "tokio", - "tonic 0.9.2", + "tonic 0.11.0", "tracing", "tracing-appender", "tracing-opentelemetry", @@ -13288,15 +13305,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.8.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", - "fastrand 2.0.0", - "redox_syscall 0.3.5", - "rustix 0.38.28", - "windows-sys 0.48.0", + "fastrand", + "rustix", + "windows-sys 0.52.0", ] [[package]] @@ -13319,31 +13335,21 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "terminal_size" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" -dependencies = [ - "rustix 0.37.7", - "windows-sys 0.48.0", -] - [[package]] name = "terminal_size" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "rustix 0.38.28", + "rustix", "windows-sys 0.48.0", ] [[package]] name = "termtree" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95059e91184749cb66be6dc994f67f182b6d897cb3df74a5bf66b5e709295fd8" +checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "test-cluster" @@ -13378,9 +13384,9 @@ dependencies = [ [[package]] name = "test-fuzz" -version = "3.0.5" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd4a3a7f00909d5a1d1f83b86b65d91e4c94f80b0c2d0ae37e2ef44da7b7a0a0" +checksum = "857e884d611b1f26e63f00559975d348491e66b1271a8144a9806c9bd4a791cf" dependencies = [ "serde", "test-fuzz-internal", @@ -13390,54 +13396,54 @@ dependencies = [ [[package]] name = "test-fuzz-internal" -version = "3.0.5" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9186daca5c58cb307d09731e0ba06b13fd6c036c90672b9bfc31cecf76cf689" +checksum = "48db3bbc562408b2111f3a0c96ec416ffa3ab66f8a6ab42579b608b9f74744e1" dependencies = [ - "cargo_metadata 0.15.4", - "proc-macro2 1.0.78", - "quote 1.0.35", + "cargo_metadata", + "proc-macro2 1.0.86", + "quote 1.0.36", "serde", "strum_macros 0.24.3", ] [[package]] name = "test-fuzz-macro" -version = "3.0.5" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d187b450bfb5b7939f82f9747dc1ebb15a7a9c4a93cd304a41aece7149608b" +checksum = "e17cd05c077c7b9c5d0045c539f9c5e911187bf65cd1b407d28239efc7b54880" dependencies = [ - "darling 0.14.2", + "darling 0.20.10", "if_chain", + "itertools 0.10.5", "lazy_static", - "proc-macro2 1.0.78", - "quote 1.0.35", + "proc-macro2 1.0.86", + "quote 1.0.36", "subprocess", - "syn 1.0.107", + "syn 2.0.72", "test-fuzz-internal", "toolchain_find", - "unzip-n", ] [[package]] name = "test-fuzz-runtime" -version = "3.0.5" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a0d69068569b9b7311095823fe0e49eedfd05ad4277eb64fc334cf1a5bc5116" +checksum = "53d68728ca22d1a96a71645fd2327e37821b8979a7e75e44ad24a72e8051513d" dependencies = [ "bincode", "hex", "num-traits", "serde", - "sha-1 0.10.1", + "sha-1", "test-fuzz-internal", ] [[package]] name = "textwrap" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "smawk", "unicode-linebreak", @@ -13446,30 +13452,31 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "thread_local" -version = "1.1.4" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ + "cfg-if", "once_cell", ] @@ -13533,12 +13540,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62cc94d358b5a1e84a5cb9109f559aa3c4d634d2b1b4de3d0fa4adc7c78e2861" dependencies = [ "anyhow", - "hmac 0.12.1", + "hmac", "once_cell", "pbkdf2 0.11.0", "rand 0.8.5", - "rustc-hash", - "sha2 0.10.6", + "rustc-hash 1.1.0", + "sha2 0.10.8", "thiserror", "unicode-normalization", "wasm-bindgen", @@ -13566,35 +13573,35 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.36.0" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" dependencies = [ "backtrace", "bytes", "libc", "mio", "num_cpus", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.6", - "tokio-macros 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "socket2 0.5.7", + "tokio-macros 2.3.0", "tracing", "windows-sys 0.48.0", ] @@ -13612,22 +13619,22 @@ dependencies = [ [[package]] name = "tokio-macros" version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +source = "git+https://github.com/mystenmark/tokio-madsim-fork.git?rev=e47aafebf98e9c1734a8848a1876d5946c44bdd1#e47aafebf98e9c1734a8848a1876d5946c44bdd1" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "tokio-macros" -version = "2.2.0" -source = "git+https://github.com/mystenmark/tokio-madsim-fork.git?rev=e47aafebf98e9c1734a8848a1876d5946c44bdd1#e47aafebf98e9c1734a8848a1876d5946c44bdd1" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] @@ -13643,53 +13650,53 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.23.4" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.20.7", + "rustls 0.21.12", "tokio", - "webpki", ] [[package]] name = "tokio-rustls" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0d409377ff5b1e3ca6437aa86c1eb7d40c134bfec254e44c830defa92669db5" +checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" dependencies = [ - "rustls 0.21.6", + "rustls 0.22.4", + "rustls-pki-types", "tokio", ] [[package]] name = "tokio-rustls" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.22.2", + "rustls 0.23.12", "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", "tokio", - "tokio-util 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-util 0.7.11", ] [[package]] name = "tokio-tungstenite" -version = "0.20.1" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" dependencies = [ "futures-util", "log", @@ -13700,140 +13707,121 @@ dependencies = [ [[package]] name = "tokio-util" version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +source = "git+https://github.com/mystenmark/tokio-madsim-fork.git?rev=e47aafebf98e9c1734a8848a1876d5946c44bdd1#e47aafebf98e9c1734a8848a1876d5946c44bdd1" dependencies = [ "bytes", "futures-core", "futures-io", "futures-sink", "futures-util", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "pin-project-lite", - "tokio", + "real_tokio", + "slab", "tracing", ] [[package]] name = "tokio-util" -version = "0.7.10" -source = "git+https://github.com/mystenmark/tokio-madsim-fork.git?rev=e47aafebf98e9c1734a8848a1876d5946c44bdd1#e47aafebf98e9c1734a8848a1876d5946c44bdd1" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", "futures-io", "futures-sink", "futures-util", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "pin-project-lite", - "real_tokio", - "slab", - "tracing", + "tokio", ] [[package]] name = "toml" -version = "0.5.10" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] [[package]] name = "toml" -version = "0.7.4" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6135d499e69981f9ff0ef2167955a5333c35e36f6937d382974566b3d5b94ec" +checksum = "81967dd0dd2c1ab0bc3468bd7caecc32b8a4aa47d0c8c695d8c2b2108168d62c" dependencies = [ - "indexmap 1.9.3", + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.19.10", + "toml_edit 0.22.17", ] [[package]] name = "toml_datetime" -version = "0.6.2" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +checksum = "f8fb9f64314842840f1d940ac544da178732128f1c78c21772e876579e0da1db" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.14.4" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5376256e44f2443f8896ac012507c19a012df0fe8758b55246ae51a2279db51f" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "combine", - "indexmap 1.9.3", - "itertools 0.10.5", - "serde", + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.19.10" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 1.9.3", - "serde", - "serde_spanned", + "indexmap 2.2.6", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] -name = "tonic" -version = "0.9.2" +name = "toml_edit" +version = "0.22.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" +checksum = "8d9f8729f5aea9562aac1cc0441f5d6de3cff1ee0c5d67293eeca5eb36ee7c16" dependencies = [ - "async-trait", - "axum", - "base64 0.21.2", - "bytes", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-timeout", - "percent-encoding", - "pin-project", - "prost 0.11.9", - "tokio", - "tokio-stream", - "tower", - "tower-layer", - "tower-service", - "tracing", + "indexmap 2.2.6", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.16", ] [[package]] name = "tonic" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5469afaf78a11265c343a88969045c1568aa8ecc6c787dbf756e92e70f199861" +checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" dependencies = [ "async-stream", "async-trait", - "axum", - "base64 0.21.2", + "axum 0.6.20", + "base64 0.21.7", "bytes", - "h2", - "http", - "http-body", - "hyper", - "hyper-timeout", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.30", + "hyper-timeout 0.4.1", "percent-encoding", "pin-project", - "prost 0.12.3", + "prost 0.12.6", "tokio", "tokio-stream", "tower", @@ -13844,27 +13832,29 @@ dependencies = [ [[package]] name = "tonic" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" +checksum = "38659f4a91aba8598d27821589f5db7dddd94601e7a01b1e485a50e5484c7401" dependencies = [ "async-stream", "async-trait", - "axum", - "base64 0.21.2", + "axum 0.7.5", + "base64 0.22.1", "bytes", - "h2", - "http", - "http-body", - "hyper", - "hyper-timeout", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-timeout 0.5.1", + "hyper-util", "percent-encoding", "pin-project", - "prost 0.12.3", - "rustls-pemfile 2.1.1", - "rustls-pki-types", + "prost 0.13.1", + "rustls-pemfile 2.1.2", + "socket2 0.5.7", "tokio", - "tokio-rustls 0.25.0", + "tokio-rustls 0.26.0", "tokio-stream", "tower", "tower-layer", @@ -13874,40 +13864,40 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4ef6dd70a610078cb4e338a0f79d06bc759ff1b22d2120c2ff02ae264ba9c2" +checksum = "568392c5a2bd0020723e3f387891176aabafe36fd9fcd074ad309dfa0c8eb964" dependencies = [ - "prettyplease 0.2.6", - "proc-macro2 1.0.78", + "prettyplease 0.2.20", + "proc-macro2 1.0.86", "prost-build", - "quote 1.0.35", - "syn 2.0.48", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "tonic-health" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cef6e24bc96871001a7e48e820ab240b3de2201e59b517cf52835df2f1d2350" +checksum = "e1e10e6a96ee08b6ce443487d4368442d328d0e746f3681f81127f7dc41b4955" dependencies = [ "async-stream", - "prost 0.12.3", + "prost 0.13.1", "tokio", "tokio-stream", - "tonic 0.11.0", + "tonic 0.12.1", ] [[package]] name = "toolchain_find" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e85654a10e7a07a47c6f19d93818f3f343e22927f2fa280c84f7c8042743413" +checksum = "fa8c746c4e8d786ff304a6a73d7b406420d9a7c7d8292e090979dc85213113ed" dependencies = [ "home", - "lazy_static", + "once_cell", "regex", - "semver 0.11.0", + "semver", "walkdir", ] @@ -13926,7 +13916,7 @@ dependencies = [ "rand 0.8.5", "slab", "tokio", - "tokio-util 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-util 0.7.11", "tower-layer", "tower-service", "tracing", @@ -13934,18 +13924,19 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.3.5" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ - "async-compression 0.3.15", - "base64 0.13.1", - "bitflags 1.3.2", + "async-compression", + "base64 0.21.7", + "bitflags 2.6.0", "bytes", "futures-core", "futures-util", - "http", - "http-body", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", "http-range-header", "httpdate", "iri-string", @@ -13954,7 +13945,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "tokio", - "tokio-util 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-util 0.7.11", "tower", "tower-layer", "tower-service", @@ -13976,11 +13967,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "log", "pin-project-lite", "tracing-attributes", @@ -13989,24 +13979,25 @@ dependencies = [ [[package]] name = "tracing-appender" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d48f71a791638519505cefafe162606f706c25592e4bde4d97600c0195312e" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" dependencies = [ "crossbeam-channel", + "thiserror", "time", "tracing-subscriber", ] [[package]] name = "tracing-attributes" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] @@ -14043,29 +14034,31 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "lazy_static", "log", + "once_cell", "tracing-core", ] [[package]] name = "tracing-opentelemetry" -version = "0.21.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75327c6b667828ddc28f5e3f169036cb793c3f588d83bf0f262a7f062ffed3c8" +checksum = "f68803492bf28ab40aeccaecc7021096bd256baf7ca77c3d425d89b35a7be4e4" dependencies = [ + "js-sys", "once_cell", - "opentelemetry 0.20.0", - "opentelemetry_sdk 0.20.0", + "opentelemetry", + "opentelemetry_sdk", "smallvec", "tracing", "tracing-core", "tracing-log", "tracing-subscriber", + "web-time", ] [[package]] @@ -14080,9 +14073,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -14106,9 +14099,9 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b79e2e9c9ab44c6d7c20d5976961b47e8f49ac199154daa514b77cd1ab536625" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] @@ -14142,9 +14135,9 @@ checksum = "859eb650cfee7434994602c3a68b25d77ad9e68c8a6cd491616ef86661382eb3" [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "ttl_cache" @@ -14163,21 +14156,21 @@ checksum = "ccdd26cbd674007e649a272da4475fb666d3aa0ad0531da7136db6fab0e5bad1" dependencies = [ "bitflags 1.3.2", "cassowary", - "crossterm", + "crossterm 0.25.0", "unicode-segmentation", "unicode-width", ] [[package]] name = "tungstenite" -version = "0.20.1" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" dependencies = [ "byteorder", "bytes", "data-encoding", - "http", + "http 1.1.0", "httparse", "log", "rand 0.8.5", @@ -14210,18 +14203,18 @@ dependencies = [ "fdlimit", "hdrhistogram", "iota-macros", - "itertools 0.11.0", + "itertools 0.13.0", "msim", "once_cell", "ouroboros", - "proc-macro2 1.0.78", + "proc-macro2 1.0.86", "prometheus", - "quote 1.0.35", + "quote 1.0.36", "rand 0.8.5", "rocksdb", "rstest", "serde", - "syn 1.0.107", + "syn 1.0.109", "tap", "tempfile", "thiserror", @@ -14237,11 +14230,11 @@ name = "typed-store-derive" version = "0.3.0" dependencies = [ "eyre", - "itertools 0.11.0", - "proc-macro2 1.0.78", - "quote 1.0.35", + "itertools 0.13.0", + "proc-macro2 1.0.86", + "quote 1.0.36", "rocksdb", - "syn 1.0.107", + "syn 1.0.109", "tempfile", "tokio", "typed-store", @@ -14257,15 +14250,15 @@ dependencies = [ [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" [[package]] name = "uint" @@ -14293,9 +14286,9 @@ checksum = "ccb97dac3243214f8d8507998906ca3e2e0b900bf9bf4870477f125b82e68f6e" [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] @@ -14308,9 +14301,9 @@ checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.6" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-linebreak" @@ -14320,24 +14313,24 @@ checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" @@ -14363,15 +14356,15 @@ dependencies = [ [[package]] name = "unsafe-libyaml" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1865806a559042e51ab5414598446a5871b561d21b6764f2eabb0dd481d880a6" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" [[package]] name = "unsigned-varint" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836" +checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" [[package]] name = "untrusted" @@ -14385,38 +14378,27 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" -[[package]] -name = "unzip-n" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7e85a0596447f0f2ac090e16bc4c516c6fe91771fb0c0ccf7fa3dae896b9c" -dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", -] - [[package]] name = "ureq" -version = "2.9.1" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97" +checksum = "72139d247e5f97a3eff96229a7ae85ead5328a39efe76f8bf5a06313d505b6ea" dependencies = [ - "base64 0.21.2", + "base64 0.22.1", "flate2", "log", "once_cell", - "rustls 0.21.6", - "rustls-webpki 0.101.7", + "rustls 0.23.12", + "rustls-pki-types", "url", - "webpki-roots 0.25.2", + "webpki-roots 0.26.3", ] [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -14426,9 +14408,9 @@ dependencies = [ [[package]] name = "urlencoding" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "utf-8" @@ -14438,17 +14420,17 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.2.2" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.15", "rand 0.8.5", ] @@ -14464,8 +14446,8 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aae2faf80ac463422992abf4de234731279c058aaf33171ca70277c98406b124" dependencies = [ - "quote 1.0.35", - "syn 1.0.107", + "quote 1.0.36", + "syn 1.0.109", ] [[package]] @@ -14482,11 +14464,11 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "versions" -version = "4.1.0" +version = "6.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee97e1d97bd593fb513912a07691b742361b3dd64ad56f2c694ea2dbfe0665d3" +checksum = "5fc28d1172a20e32754969ea1a873c2c6e68e36c449c6056aa3e2ee5fe69a794" dependencies = [ - "itertools 0.10.5", + "itertools 0.13.0", "nom", ] @@ -14511,30 +14493,22 @@ dependencies = [ "libc", ] -[[package]] -name = "waker-fn" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" - [[package]] name = "walkdir" -version = "2.3.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", - "winapi", "winapi-util", ] [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -14558,9 +14532,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -14568,24 +14542,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -14595,32 +14569,32 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ - "quote 1.0.35", + "quote 1.0.36", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasm-streams" @@ -14652,64 +14626,56 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] -name = "webpki" -version = "0.22.0" +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "js-sys", + "wasm-bindgen", ] [[package]] name = "webpki-roots" -version = "0.22.6" +version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" -dependencies = [ - "webpki", -] +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.23.1" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" dependencies = [ - "rustls-webpki 0.100.3", + "rustls-pki-types", ] -[[package]] -name = "webpki-roots" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" - [[package]] name = "which" -version = "4.3.0" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ "either", - "libc", + "home", "once_cell", + "rustix", ] [[package]] name = "whoami" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fec781d48b41f8163426ed18e8fc2864c12937df9ce54c88ede7bd47270893e" +checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" dependencies = [ "redox_syscall 0.4.1", "wasite", @@ -14740,11 +14706,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -14767,27 +14733,12 @@ dependencies = [ ] [[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" +name = "windows-core" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.42.2", + "windows-targets 0.52.6", ] [[package]] @@ -14796,7 +14747,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -14805,71 +14756,51 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.52.6", ] [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "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_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -14879,21 +14810,15 @@ checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" [[package]] name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -14903,21 +14828,21 @@ checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" [[package]] name = "windows_i686_gnu" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] -name = "windows_i686_gnu" -version = "0.52.0" +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -14927,21 +14852,15 @@ checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" [[package]] name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -14951,39 +14870,27 @@ checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" [[package]] name = "windows_x86_64_gnu" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -14993,27 +14900,30 @@ checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "windows_x86_64_msvc" -version = "0.52.0" +name = "winnow" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] [[package]] name = "winnow" -version = "0.4.6" +version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" +checksum = "b480ae9340fc261e6be3e95a1ba86d54ae3f9171132a73ce8d4bbaf68339507c" dependencies = [ "memchr", ] @@ -15029,10 +14939,14 @@ dependencies = [ ] [[package]] -name = "wyz" -version = "0.2.0" +name = "winreg" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] [[package]] name = "wyz" @@ -15074,35 +14988,20 @@ dependencies = [ [[package]] name = "xattr" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "914566e6413e7fa959cc394fb30e563ba80f3541fbd40816d4c05a0fc3f2a0f1" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", - "linux-raw-sys 0.4.12", - "rustix 0.38.28", + "linux-raw-sys", + "rustix", ] -[[package]] -name = "xml-rs" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "699d0104bcdd7e7af6d093d6c6e2d0c479b8a129ee0d1023b31d2e0c71bfdda2" - [[package]] name = "xmlparser" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d25c75bf9ea12c4040a97f829154768bbbce366287e2dc044af160cd79a13fd" - -[[package]] -name = "yaml-rust" -version = "0.4.5" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", -] +checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" [[package]] name = "yansi" @@ -15112,33 +15011,33 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "yasna" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aed2e7a52e3744ab4d0c05c20aa065258e84c49fd4226f5191b2ed29712710b4" +checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" dependencies = [ "bit-vec", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "time", ] [[package]] name = "yup-oauth2" -version = "8.3.1" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24bea7df5a9a74a9a0de92f22e5ab3fb9505dd960c7f1f00de5b7231d9d97206" +checksum = "f75463c432f5d4ca9c75047514df3d768f8ac3276ac22c9a6531af6d0a3da7ee" dependencies = [ "anyhow", "async-trait", - "base64 0.13.1", + "base64 0.21.7", "futures", - "http", - "hyper", - "hyper-rustls 0.24.0", - "itertools 0.10.5", + "http 0.2.12", + "hyper 0.14.30", + "hyper-rustls 0.25.0", + "itertools 0.12.1", "log", "percent-encoding", - "rustls 0.21.6", - "rustls-pemfile 1.0.2", + "rustls 0.22.4", + "rustls-pemfile 1.0.4", "seahash", "serde", "serde_json", @@ -15150,29 +15049,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 2.0.48", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" dependencies = [ "serde", "zeroize_derive", @@ -15180,72 +15079,70 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.3.3" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ - "proc-macro2 1.0.78", - "quote 1.0.35", - "syn 1.0.107", - "synstructure", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.72", ] [[package]] name = "zip" -version = "0.6.6" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +checksum = "b895748a3ebcb69b9d38dcfdf21760859a4b0d0b0015277640c2ef4c69640e6f" dependencies = [ - "byteorder", + "arbitrary", "crc32fast", "crossbeam-utils", + "displaydoc", "flate2", + "indexmap 2.2.6", + "memchr", + "thiserror", + "zopfli", ] [[package]] -name = "zstd" -version = "0.12.3+zstd.1.5.2" +name = "zopfli" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76eea132fb024e0e13fd9c2f5d5d595d8a967aa72382ac2f9d39fcc95afd0806" +checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" dependencies = [ - "zstd-safe 6.0.5+zstd.1.5.4", + "bumpalo", + "crc32fast", + "lockfree-object-pool", + "log", + "once_cell", + "simd-adler32", ] [[package]] name = "zstd" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110" -dependencies = [ - "zstd-safe 7.0.0", -] - -[[package]] -name = "zstd-safe" -version = "6.0.5+zstd.1.5.4" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56d9e60b4b1758206c238a10165fbcae3ca37b01744e394c463463f6529d23b" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" dependencies = [ - "libc", - "zstd-sys", + "zstd-safe", ] [[package]] name = "zstd-safe" -version = "7.0.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e" +checksum = "fa556e971e7b568dc775c136fc9de8c779b1c2fc3a63defaafadffdbd3181afa" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.8+zstd.1.5.5" +version = "2.0.11+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" +checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4" dependencies = [ "cc", - "libc", "pkg-config", ] diff --git a/Cargo.toml b/Cargo.toml index 296534cc77a..23ba9fc406a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -209,34 +209,37 @@ opt-level = 1 [workspace.dependencies] anyhow = "1.0.71" arc-swap = { version = "1.5.1", features = ["serde"] } -arrow-array = "50.0.0" +arrow = "52.1.0" +arrow-array = "52.1.0" assert_cmd = "2.0.6" -async-graphql = "6.0.7" -async-graphql-axum = "6.0.7" -async-graphql-value = "6.0.7" +async-graphql = "7.0.6" +async-graphql-axum = "7.0.6" +async-graphql-value = "7.0.6" async-recursion = "1.0.4" async-trait = "0.1.61" atomic_float = "0.1" -aws-config = "0.56" -aws-sdk-dynamodb = "0.29.0" -aws-sdk-ec2 = "0.29.0" -aws-sdk-s3 = "0.29.0" -aws-smithy-http = "0.56" -aws-smithy-runtime-api = "0.56" -axum = { version = "0.6.6", default-features = false, features = ["headers", "tokio", "http1", "http2", "json", "matched-path", "original-uri", "form", "query", "ws"] } -axum-extra = "0.4.2" -axum-server = { version = "0.5.1", default-features = false, features = ["tls-rustls"] } +aws-config = { version = "1.5.3", features = ["behavior-version-latest"] } +aws-runtime = "1.3.1" +aws-sdk-dynamodb = "1.36.0" +aws-sdk-ec2 = "1.54.0" +aws-sdk-kms = "1.35.0" +aws-sdk-s3 = "1.40.0" +aws-smithy-http = "0.60.8" +aws-smithy-runtime-api = "1.7.0" +axum = { version = "0.7.5", default-features = false, features = ["tokio", "http1", "http2", "json", "matched-path", "original-uri", "form", "query", "ws"] } +axum-extra = "0.9.3" +axum-server = { version = "0.6.0", default-features = false } backoff = { version = "0.4.0", features = ["tokio"] } -base64 = "0.21.2" -base64-url = "2" +base64 = "0.22.1" +base64-url = "3.0.0" bcs = "0.1.4" -better_any = "0.1.1" +better_any = { version = "0.2.0", features = ["derive"] } bimap = "0.6.2" bincode = "1.3.3" -bip32 = "0.4.0" +bip32 = "0.5.1" byteorder = "1.4.3" bytes = { version = "1.5.0", features = ["serde"] } -cached = "0.43.0" +cached = { version = "0.51.4", features = ["async"] } camino = "1.1.1" cfg-if = "1.0.0" chrono = { version = "0.4.26", features = ["clock", "serde"] } @@ -245,7 +248,7 @@ collectable = "0.0.2" color-eyre = "0.6.2" colored = "2.0.0" comfy-table = "6.1.3" -console-subscriber = "0.2" +console-subscriber = "0.3.0" const-str = "0.5.3" criterion = { version = "0.5.0", features = ["async", "async_tokio", "html_reports"] } crossterm = "0.25.0" @@ -255,13 +258,13 @@ dashmap = "5.5.3" datatest-stable = { git = "https://github.com/nextest-rs/datatest-stable.git", rev = "72db7f6d1bbe36a5407e96b9488a581f763e106f" } derivative = "2.2.0" derive-syn-parse = "0.1.5" -derive_builder = "0.12.0" -derive_more = "0.99.17" -diesel = { version = "2.1.0", features = ["chrono", "postgres", "r2d2", "serde_json", "64-column-tables", "i-implement-a-third-party-backend-and-opt-into-breaking-changes", "postgres_backend"] } -diesel-derive-enum = { version = "2.0.1", features = ["postgres"] } -diesel_migrations = { version = "2.0.0" } -dirs = "4.0.0" -duration-str = "0.5.0" +derive_builder = "0.20.0" +derive_more = "0.99.18" +diesel = { version = "2.2.1", features = ["chrono", "postgres", "r2d2", "serde_json", "64-column-tables", "i-implement-a-third-party-backend-and-opt-into-breaking-changes", "postgres_backend"] } +diesel-derive-enum = { version = "2.1.0", features = ["postgres"] } +diesel_migrations = "2.2.0" +dirs = "5.0.1" +duration-str = "0.11.2" ed25519 = { version = "1.5.0", features = ["pkcs8", "alloc", "zeroize"] } ed25519-consensus = { version = "2.0.1", features = ["serde"] } either = "1.8.0" @@ -276,16 +279,18 @@ futures-core = "0.3.21" git-version = "0.3.5" glob = "0.3.1" governor = "0.6.0" -hashbrown = "0.12" +hashbrown = "0.14.5" hdrhistogram = "7.5.1" hex = "0.4.3" -hex-literal = "0.3.4" -highlight = "all" -http = "0.2.8" -http-body = "0.4.5" +hex-literal = "0.4.1" +highlight = "0.0.3" +http = "1.1.0" +http-body = "1.0.0" +http-body-util = "0.1.2" humantime = "2.1.0" -hyper = "0.14.20" -hyper-rustls = { version = "0.24", features = ["webpki-roots", "http2"] } +hyper = { version = "1.3.1", features = ["http2"] } +hyper-rustls = { version = "0.27.2", features = ["webpki-roots", "http2"] } +hyper-util = { version = "0.1.6", default-features = false } im = "15" impl-trait-for-tuples = "0.2.0" indexmap = { version = "2.1.0", features = ["serde"] } @@ -294,10 +299,10 @@ inquire = "0.6.0" insta = { version = "1.21.1", features = ["redactions", "yaml", "json"] } integer-encoding = "3.0.1" ipnetwork = "0.20.0" -itertools = "0.11" -jemalloc-ctl = "^0.5" -json_to_table = { git = "https://github.com/zhiburt/tabled.git", rev = "e449317a1c02eb6b29e409ad6617e5d9eb7b3bd4" } -jsonrpsee = { git = "https://github.com/wlmyng/jsonrpsee.git", rev = "b1b300784795f6a64d0fcdf8f03081a9bc38bde8", features = ["server", "macros", "ws-client", "http-client", "jsonrpsee-core"] } +itertools = "0.13.0" +jemalloc-ctl = "0.5.4" +json_to_table = "0.6" +jsonrpsee = { version = "0.24.0", features = ["server", "macros", "client", "ws-client", "http-client"] } leb128 = "0.2.5" linked-hash-map = "0.5.6" lru = "0.10" @@ -313,30 +318,29 @@ msim-macros = { git = "https://github.com/MystenLabs/mysten-sim.git", rev = "6f8 multiaddr = "0.17.0" nexlint = { git = "https://github.com/nextest-rs/nexlint.git", rev = "94da5c787636dad779c340affa65219134d127f5" } nexlint-lints = { git = "https://github.com/nextest-rs/nexlint.git", rev = "94da5c787636dad779c340affa65219134d127f5" } -nonempty = "0.9.0" notify = "6.1.1" ntest = "0.9.0" num-bigint = "0.4.4" num_cpus = "1.15.0" -num_enum = "0.6.1" -object_store = { version = "0.7", features = ["aws", "gcp", "azure", "http"] } +num_enum = "0.7.2" +object_store = { version = "0.10.1", features = ["aws", "gcp", "azure", "http"] } once_cell = "1.18.0" ouroboros = "0.17" -parking_lot = "0.12.1" -parquet = "50.0.0" +parking_lot = "0.12.3" +parquet = "52.1.0" petgraph = "0.5.1" pkcs8 = { version = "0.9.0", features = ["std"] } pprof = { version = "0.13.0", features = ["cpp", "frame-pointer"] } pretty_assertions = "1.3.0" prettytable-rs = "0.10.0" proc-macro2 = "1.0.47" -prometheus = "0.13.3" -prometheus-http-query = { version = "0.6.6", default-features = false, features = ["rustls-tls"] } -prometheus-parse = { git = "https://github.com/asonnino/prometheus-parser.git", rev = "75334db" } +prometheus = "0.13.4" +prometheus-http-query = { version = "0.8.3", default-features = false, features = ["rustls-tls"] } +prometheus-parse = "0.2.5" proptest = "1.1.0" proptest-derive = "0.3.0" -prost = "0.12.3" -prost-build = "0.12.3" +prost = "0.13.1" +prost-build = "0.13.1" protobuf = { version = "2.28", features = ["with-bytes"] } protobuf-src = "1.1.0" quinn-proto = "^0.10.5" @@ -346,18 +350,15 @@ rand_regex = "0.15.1" rayon = "1.5.3" rcgen = "0.9.2" regex = "1.7.1" -reqwest = { version = "0.11.20", default-features = false, features = ["blocking", "json", "rustls-tls"] } +reqwest = { version = "0.12.5", default-features = false, features = ["blocking", "json", "rustls-tls"] } roaring = "0.10.1" rocksdb = { version = "0.21.0", features = ["snappy", "lz4", "zstd", "zlib", "multi-threaded-cf"], default-features = false } ron = "0.8.0" rstest = "0.16.0" -rusoto_core = { version = "0.48.0", default-features = false, features = ["rustls"] } -rusoto_kms = { version = "0.48.0", default-features = false, features = ["rustls"] } russh = "0.38.0" russh-keys = "0.38.0" -rust-version = "1.56.1" -rustls = { version = "0.21.6", features = ["dangerous_configuration"] } -rustls-pemfile = "1.0.2" +rustls = { version = "0.23.10", features = ["ring"] } +rustls-pemfile = "2.1.2" rustversion = "1.0.9" rustyline = "9.1.2" rustyline-derive = "0.7.0" @@ -365,53 +366,49 @@ schemars = { version = "0.8.10", features = ["either"] } scopeguard = "1.1" serde = { version = "1.0.144", features = ["derive", "rc"] } serde-name = "0.2.1" -serde-reflection = "0.3.6" +serde-reflection = "0.4.0" serde_json = { version = "1.0.95", features = ["preserve_order", "arbitrary_precision"] } serde_repr = "0.1" serde_test = "1.0.147" -serde_with = { version = "2.1.0", features = ["hex"] } -# serde_yaml = "0.9.21" -serde_yaml = "0.8.26" +serde_with = { version = "2.3.3", features = ["hex"] } +serde_yaml = "0.9.34" serial_test = "2.0.0" shell-words = "1.1.0" shellexpand = "3.1.0" shlex = "1.3.0" -signature = "1.6.0" +signature = "2.2.0" similar = "2.4.0" slip10_ed25519 = "0.1.3" smallvec = "1.10.0" snap = "1.1.0" static_assertions = "1.1.0" -strum = { version = "0.24", features = ["derive"] } -strum_macros = "0.24.3" +strum = { version = "0.26.3", features = ["derive"] } syn = { version = "1.0.104", features = ["full", "derive", "extra-traits"] } -# syn = { version = "2", features = ["full", "fold", "extra-traits"] } synstructure = "0.12" sysinfo = "0.27.5" -tabled = { version = "0.12" } +tabled = "0.12" tap = "1.0.1" tar = "0.4.40" tempfile = "3.3.0" test-fuzz = "3.0.4" thiserror = "1.0.40" tiny-bip39 = "1.0.0" -tokio = "1.36.0" +tokio = "=1.38.0" tokio-retry = "0.3" -tokio-rustls = "0.24" +tokio-rustls = "0.26.0" tokio-stream = { version = "0.1.14", features = ["sync", "net"] } tokio-util = "0.7.10" -toml = { version = "0.7.4", features = ["preserve_order"] } -toml_edit = { version = "0.19.10" } -tonic = { version = "0.11", features = ["transport", "tls"] } -tonic-build = { version = "0.11", features = ["prost", "transport"] } -tonic-health = "0.11" -tower = { version = "0.4.12", features = ["full", "util", "timeout", "load-shed", "limit"] } -tower-http = { version = "0.3.4", features = ["cors", "full", "trace", "set-header", "propagate-header"] } -# tower-http = { version="0.4", features = ["trace"] } +toml = { version = "0.8.14", features = ["preserve_order"] } +toml_edit = "0.22.15" +tonic = { version = "0.12.0", features = ["transport", "tls"] } +tonic-build = { version = "0.12.0", features = ["prost", "transport"] } +tonic-health = "0.12.0" +tower = { version = "0.4.13", features = ["full", "util", "timeout", "load-shed", "limit"] } +tower-http = { version = "0.5.2", features = ["cors", "full", "trace", "set-header", "propagate-header"] } tower-layer = "0.3.2" -tracing = "0.1.37" -tracing-appender = "0.2.2" -tracing-subscriber = { version = "0.3.15", default-features = false, features = ["std", "smallvec", "fmt", "ansi", "time", "json", "registry", "env-filter"] } +tracing = "0.1.40" +tracing-appender = "0.2.3" +tracing-subscriber = { version = "0.3.18", default-features = false, features = ["std", "smallvec", "fmt", "ansi", "time", "json", "registry", "env-filter"] } ttl_cache = "0.5.1" twox-hash = "1.6.3" uint = "0.9.4" @@ -419,11 +416,11 @@ unescape = "0.1.0" ureq = "2.9.1" url = "2.3.1" uuid = { version = "1.1.2", features = ["v4", "fast-rng"] } -versions = "4.1.0" -webpki = { version = "0.101.0", package = "rustls-webpki", features = ["alloc", "std"] } +versions = "6.3.0" +webpki = { version = "0.102.4", package = "rustls-webpki", features = ["alloc", "std"] } x509-parser = "0.14.0" zeroize = "1.6.0" -zstd = "0.12.3" +zstd = "0.13.1" # Move dependencies move-abstract-stack = { path = "external-crates/move/crates/move-abstract-stack" } @@ -447,9 +444,9 @@ move-vm-profiler = { path = "external-crates/move/crates/move-vm-profiler" } move-vm-test-utils = { path = "external-crates/move/crates/move-vm-test-utils/", features = ["tiered-gas"] } move-vm-types = { path = "external-crates/move/crates/move-vm-types" } -fastcrypto = { git = "https://github.com/MystenLabs/fastcrypto", rev = "d7a33a9f79271bfc19fc4c8816ea5467e4205e17" } -fastcrypto-tbls = { git = "https://github.com/MystenLabs/fastcrypto", rev = "d7a33a9f79271bfc19fc4c8816ea5467e4205e17" } -fastcrypto-zkp = { git = "https://github.com/MystenLabs/fastcrypto", rev = "d7a33a9f79271bfc19fc4c8816ea5467e4205e17", package = "fastcrypto-zkp" } +fastcrypto = { git = "https://github.com/MystenLabs/fastcrypto", rev = "fastcrypto-zkp-v0.1.3", package = "fastcrypto" } +fastcrypto-tbls = { git = "https://github.com/MystenLabs/fastcrypto", rev = "fastcrypto-zkp-v0.1.3", package = "fastcrypto-tbls" } +fastcrypto-zkp = { git = "https://github.com/MystenLabs/fastcrypto", rev = "fastcrypto-zkp-v0.1.3", package = "fastcrypto-zkp" } # anemo dependencies anemo = { git = "https://github.com/mystenlabs/anemo.git", rev = "26d415eb9aa6a2417be3c03c57d6e93c30bd1ad7" } diff --git a/crates/iota-analytics-indexer/Cargo.toml b/crates/iota-analytics-indexer/Cargo.toml index bc092323bbe..fada4a1a947 100644 --- a/crates/iota-analytics-indexer/Cargo.toml +++ b/crates/iota-analytics-indexer/Cargo.toml @@ -8,7 +8,7 @@ publish = false [dependencies] anyhow.workspace = true -arrow = { version = "50.0.0" } +arrow.workspace = true arrow-array.workspace = true async-trait.workspace = true axum.workspace = true @@ -20,7 +20,7 @@ clap.workspace = true csv.workspace = true eyre.workspace = true fastcrypto = { workspace = true, features = ["copy_key"] } -gcp-bigquery-client = "0.18.0" +gcp-bigquery-client = "0.20.0" iota-analytics-indexer-derive.workspace = true iota-config.workspace = true iota-indexer.workspace = true @@ -41,10 +41,9 @@ rocksdb.workspace = true serde.workspace = true serde_json.workspace = true simulacrum.workspace = true -snowflake-api = { version = "0.6.0" } +snowflake-api = { version = "0.9.0" } strum.workspace = true -strum_macros.workspace = true -tap = { version = "1.0.1", features = [] } +tap = "1.0.1" telemetry-subscribers.workspace = true tempfile.workspace = true thiserror.workspace = true diff --git a/crates/iota-analytics-indexer/src/lib.rs b/crates/iota-analytics-indexer/src/lib.rs index 1a94ca327ac..9ef6acd05b7 100644 --- a/crates/iota-analytics-indexer/src/lib.rs +++ b/crates/iota-analytics-indexer/src/lib.rs @@ -22,7 +22,7 @@ use num_enum::{IntoPrimitive, TryFromPrimitive}; use object_store::path::Path; use serde::{Deserialize, Serialize}; use snowflake_api::{QueryResult, SnowflakeApi}; -use strum_macros::EnumIter; +use strum::EnumIter; use tracing::info; use crate::{ @@ -270,7 +270,7 @@ impl MaxCheckpointReader for NoOpCheckpointReader { Eq, PartialEq, Parser, - strum_macros::Display, + strum::Display, ValueEnum, Serialize, Deserialize, diff --git a/crates/iota-analytics-indexer/src/tables.rs b/crates/iota-analytics-indexer/src/tables.rs index 82437ce1218..5a5cd566d32 100644 --- a/crates/iota-analytics-indexer/src/tables.rs +++ b/crates/iota-analytics-indexer/src/tables.rs @@ -6,7 +6,7 @@ use iota_analytics_indexer_derive::SerializeParquet; use iota_types::dynamic_field::DynamicFieldType; use serde::Serialize; -use strum_macros::Display; +use strum::Display; use crate::{ParquetSchema, ParquetValue}; diff --git a/crates/iota-aws-orchestrator/Cargo.toml b/crates/iota-aws-orchestrator/Cargo.toml index 4e77830326f..03522a32ef4 100644 --- a/crates/iota-aws-orchestrator/Cargo.toml +++ b/crates/iota-aws-orchestrator/Cargo.toml @@ -9,6 +9,7 @@ publish = false [dependencies] async-trait.workspace = true aws-config.workspace = true +aws-runtime.workspace = true aws-sdk-ec2.workspace = true aws-smithy-http.workspace = true aws-smithy-runtime-api.workspace = true diff --git a/crates/iota-aws-orchestrator/src/client/aws.rs b/crates/iota-aws-orchestrator/src/client/aws.rs index c88521291c5..427fe646c50 100644 --- a/crates/iota-aws-orchestrator/src/client/aws.rs +++ b/crates/iota-aws-orchestrator/src/client/aws.rs @@ -7,7 +7,7 @@ use std::{ fmt::{Debug, Display}, }; -use aws_config::profile::profile_file::{ProfileFileKind, ProfileFiles}; +use aws_runtime::env_config::file::{EnvConfigFileKind, EnvConfigFiles}; use aws_sdk_ec2::{ config::Region, primitives::Blob, @@ -16,7 +16,7 @@ use aws_sdk_ec2::{ TagSpecification, VolumeType, }, }; -use aws_smithy_http::result::SdkError; +use aws_smithy_runtime_api::client::result::SdkError; use serde::Serialize; use super::{Instance, ServerProviderClient}; @@ -56,9 +56,9 @@ impl AwsClient { /// Make a new AWS client. pub async fn new(settings: Settings) -> Self { - let profile_files = ProfileFiles::builder() - .with_file(ProfileFileKind::Credentials, &settings.token_file) - .with_contents(ProfileFileKind::Config, "[default]\noutput=json") + let profile_files = EnvConfigFiles::builder() + .with_file(EnvConfigFileKind::Credentials, &settings.token_file) + .with_contents(EnvConfigFileKind::Config, "[default]\noutput=json") .build(); let mut clients = HashMap::new(); @@ -146,7 +146,7 @@ impl AwsClient { // Parse the response to select the first returned image id. response .images() - .and_then(|images| images.first()) + .first() .ok_or_else(|| CloudProviderError::RequestError("Cannot find image id".into()))? .image_id .clone() @@ -223,7 +223,7 @@ impl AwsClient { let response = request.send().await?; // Return true if the response contains references to NVMe drives. - if let Some(info) = response.instance_types().and_then(|x| x.first()) { + if let Some(info) = response.instance_types().first() { if let Some(info) = info.instance_storage_info() { if info.nvme_support() == Some(&EphemeralNvmeSupport::Required) { return Ok(true); @@ -247,13 +247,9 @@ impl ServerProviderClient for AwsClient { let mut instances = Vec::new(); for (region, client) in &self.clients { let request = client.describe_instances().filters(filter.clone()); - if let Some(reservations) = request.send().await?.reservations() { - for reservation in reservations { - if let Some(aws_instances) = reservation.instances() { - for instance in aws_instances { - instances.push(self.make_instance(region.clone(), instance)); - } - } + for reservation in request.send().await?.reservations() { + for instance in reservation.instances() { + instances.push(self.make_instance(region.clone(), instance)); } } } @@ -355,7 +351,7 @@ impl ServerProviderClient for AwsClient { let response = request.send().await?; let instance = &response .instances() - .and_then(|x| x.first()) + .first() .expect("AWS instances list should contain instances"); Ok(self.make_instance(region, instance)) diff --git a/crates/iota-benchmark/Cargo.toml b/crates/iota-benchmark/Cargo.toml index 64b2b7a5547..3ae86dcd3b0 100644 --- a/crates/iota-benchmark/Cargo.toml +++ b/crates/iota-benchmark/Cargo.toml @@ -36,7 +36,6 @@ roaring.workspace = true serde.workspace = true serde_json.workspace = true strum.workspace = true -strum_macros.workspace = true telemetry-subscribers.workspace = true tokio = { workspace = true, features = ["full"] } tokio-util.workspace = true diff --git a/crates/iota-benchmark/src/options.rs b/crates/iota-benchmark/src/options.rs index 757de7feed0..01c181bcfdb 100644 --- a/crates/iota-benchmark/src/options.rs +++ b/crates/iota-benchmark/src/options.rs @@ -5,7 +5,7 @@ use std::str::FromStr; use clap::*; -use strum_macros::EnumString; +use strum::EnumString; use crate::drivers::Interval; diff --git a/crates/iota-benchmark/src/workloads/adversarial.rs b/crates/iota-benchmark/src/workloads/adversarial.rs index bbcf6bfec82..27dd8af1cc9 100644 --- a/crates/iota-benchmark/src/workloads/adversarial.rs +++ b/crates/iota-benchmark/src/workloads/adversarial.rs @@ -23,8 +23,7 @@ use rand::{ Rng, }; use regex::Regex; -use strum::{EnumCount, IntoEnumIterator}; -use strum_macros::{EnumCount as EnumCountMacro, EnumIter}; +use strum::{EnumCount, EnumIter, IntoEnumIterator}; use tracing::debug; use super::{ @@ -45,7 +44,7 @@ const NUM_VECTORS: u64 = 1_000; // TODO: Need to fix Large* workloads, which are currently failing due to // InsufficientGas -#[derive(Debug, EnumCountMacro, EnumIter, Clone)] +#[derive(Debug, EnumCount, EnumIter, Clone)] pub enum AdversarialPayloadType { Random = 0, LargeObjects, diff --git a/crates/iota-core/src/authority.rs b/crates/iota-core/src/authority.rs index facc68f4c82..f915f5b7fbd 100644 --- a/crates/iota-core/src/authority.rs +++ b/crates/iota-core/src/authority.rs @@ -4293,7 +4293,7 @@ impl AuthorityState { desired_upgrades.sort(); desired_upgrades .into_iter() - .group_by(|(packages, _authority)| packages.clone()) + .chunk_by(|(packages, _authority)| packages.clone()) .into_iter() .find_map(|(packages, group)| { // should have been filtered out earlier. diff --git a/crates/iota-core/src/generate_format.rs b/crates/iota-core/src/generate_format.rs index 8b3e9dceb0e..58c9176c546 100644 --- a/crates/iota-core/src/generate_format.rs +++ b/crates/iota-core/src/generate_format.rs @@ -36,13 +36,15 @@ use iota_types::{ }, utils::DEFAULT_ADDRESS_SEED, }; +use move_bytecode_utils::layout::YamlRegistry; use move_core_types::language_storage::{StructTag, TypeTag}; use pretty_assertions::assert_str_eq; use rand::{rngs::StdRng, SeedableRng}; -use serde_reflection::{Registry, Result, Samples, Tracer, TracerConfig}; +use serde_reflection::{Result, Samples, Tracer, TracerConfig}; use shared_crypto::intent::{Intent, IntentMessage, PersonalMessage}; use typed_store::TypedStoreError; -fn get_registry() -> Result { + +fn get_registry() -> Result { let config = TracerConfig::default() .record_samples_for_structs(true) .record_samples_for_newtype_structs(true); @@ -176,7 +178,7 @@ fn get_registry() -> Result { tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; - tracer.registry() + Ok(YamlRegistry(tracer.registry()?)) } #[derive(Debug, Parser, Clone, Copy, ValueEnum)] diff --git a/crates/iota-core/tests/staged/iota.yaml b/crates/iota-core/tests/staged/iota.yaml index c2e0d35178b..3bf92815236 100644 --- a/crates/iota-core/tests/staged/iota.yaml +++ b/crates/iota-core/tests/staged/iota.yaml @@ -1,4 +1,3 @@ ---- AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -6,11 +5,11 @@ AccountAddress: SIZE: 32 ActiveJwk: STRUCT: - - jwk_id: - TYPENAME: JwkId - - jwk: - TYPENAME: JWK - - epoch: U64 + - jwk_id: + TYPENAME: JwkId + - jwk: + TYPENAME: JWK + - epoch: U64 Argument: ENUM: 0: @@ -24,22 +23,22 @@ Argument: 3: NestedResult: TUPLE: - - U16 - - U16 + - U16 + - U16 AuthenticatorStateExpire: STRUCT: - - min_epoch: U64 - - authenticator_obj_initial_shared_version: - TYPENAME: SequenceNumber + - min_epoch: U64 + - authenticator_obj_initial_shared_version: + TYPENAME: SequenceNumber AuthenticatorStateUpdate: STRUCT: - - epoch: U64 - - round: U64 - - new_active_jwks: - SEQ: - TYPENAME: ActiveJwk - - authenticator_obj_initial_shared_version: - TYPENAME: SequenceNumber + - epoch: U64 + - round: U64 + - new_active_jwks: + SEQ: + TYPENAME: ActiveJwk + - authenticator_obj_initial_shared_version: + TYPENAME: SequenceNumber AuthorityPublicKeyBytes: NEWTYPESTRUCT: BYTES CallArg: @@ -54,22 +53,22 @@ CallArg: TYPENAME: ObjectArg ChangeEpoch: STRUCT: - - epoch: U64 - - protocol_version: - TYPENAME: ProtocolVersion - - storage_charge: U64 - - computation_charge: U64 - - storage_rebate: U64 - - non_refundable_storage_fee: U64 - - epoch_start_timestamp_ms: U64 - - system_packages: - SEQ: - TUPLE: - - TYPENAME: SequenceNumber - - SEQ: - SEQ: U8 - - SEQ: - TYPENAME: ObjectID + - epoch: U64 + - protocol_version: + TYPENAME: ProtocolVersion + - storage_charge: U64 + - computation_charge: U64 + - storage_rebate: U64 + - non_refundable_storage_fee: U64 + - epoch_start_timestamp_ms: U64 + - system_packages: + SEQ: + TUPLE: + - TYPENAME: SequenceNumber + - SEQ: + SEQ: U8 + - SEQ: + TYPENAME: ObjectID CheckpointCommitment: ENUM: 0: @@ -87,37 +86,37 @@ CheckpointContentsDigest: TYPENAME: Digest CheckpointContentsV1: STRUCT: - - transactions: - SEQ: - TYPENAME: ExecutionDigests - - user_signatures: + - transactions: + SEQ: + TYPENAME: ExecutionDigests + - user_signatures: + SEQ: SEQ: - SEQ: - TYPENAME: GenericSignature + TYPENAME: GenericSignature CheckpointDigest: NEWTYPESTRUCT: TYPENAME: Digest CheckpointSummary: STRUCT: - - epoch: U64 - - sequence_number: U64 - - network_total_transactions: U64 - - content_digest: - TYPENAME: CheckpointContentsDigest - - previous_digest: - OPTION: - TYPENAME: CheckpointDigest - - epoch_rolling_gas_cost_summary: - TYPENAME: GasCostSummary - - timestamp_ms: U64 - - checkpoint_commitments: - SEQ: - TYPENAME: CheckpointCommitment - - end_of_epoch_data: - OPTION: - TYPENAME: EndOfEpochData - - version_specific_data: - SEQ: U8 + - epoch: U64 + - sequence_number: U64 + - network_total_transactions: U64 + - content_digest: + TYPENAME: CheckpointContentsDigest + - previous_digest: + OPTION: + TYPENAME: CheckpointDigest + - epoch_rolling_gas_cost_summary: + TYPENAME: GasCostSummary + - timestamp_ms: U64 + - checkpoint_commitments: + SEQ: + TYPENAME: CheckpointCommitment + - end_of_epoch_data: + OPTION: + TYPENAME: EndOfEpochData + - version_specific_data: + SEQ: U8 Command: ENUM: 0: @@ -127,44 +126,44 @@ Command: 1: TransferObjects: TUPLE: - - SEQ: - TYPENAME: Argument - - TYPENAME: Argument + - SEQ: + TYPENAME: Argument + - TYPENAME: Argument 2: SplitCoins: TUPLE: - - TYPENAME: Argument - - SEQ: - TYPENAME: Argument + - TYPENAME: Argument + - SEQ: + TYPENAME: Argument 3: MergeCoins: TUPLE: - - TYPENAME: Argument - - SEQ: - TYPENAME: Argument + - TYPENAME: Argument + - SEQ: + TYPENAME: Argument 4: Publish: TUPLE: - - SEQ: - SEQ: U8 - - SEQ: - TYPENAME: ObjectID + - SEQ: + SEQ: U8 + - SEQ: + TYPENAME: ObjectID 5: MakeMoveVec: TUPLE: - - OPTION: - TYPENAME: TypeTag - - SEQ: - TYPENAME: Argument + - OPTION: + TYPENAME: TypeTag + - SEQ: + TYPENAME: Argument 6: Upgrade: TUPLE: - - SEQ: - SEQ: U8 - - SEQ: - TYPENAME: ObjectID - - TYPENAME: ObjectID - - TYPENAME: Argument + - SEQ: + SEQ: U8 + - SEQ: + TYPENAME: ObjectID + - TYPENAME: ObjectID + - TYPENAME: Argument CommandArgumentError: ENUM: 0: @@ -178,16 +177,16 @@ CommandArgumentError: 4: IndexOutOfBounds: STRUCT: - - idx: U16 + - idx: U16 5: SecondaryIndexOutOfBounds: STRUCT: - - result_idx: U16 - - secondary_idx: U16 + - result_idx: U16 + - secondary_idx: U16 6: InvalidResultArity: STRUCT: - - result_idx: U16 + - result_idx: U16 7: InvalidGasCoinUsage: UNIT 8: @@ -227,16 +226,16 @@ ConsensusCommitDigest: TYPENAME: Digest ConsensusCommitPrologue: STRUCT: - - epoch: U64 - - round: U64 - - commit_timestamp_ms: U64 + - epoch: U64 + - round: U64 + - commit_timestamp_ms: U64 ConsensusCommitPrologueV2: STRUCT: - - epoch: U64 - - round: U64 - - commit_timestamp_ms: U64 - - consensus_commit_digest: - TYPENAME: ConsensusCommitDigest + - epoch: U64 + - round: U64 + - commit_timestamp_ms: U64 + - consensus_commit_digest: + TYPENAME: ConsensusCommitDigest Data: ENUM: 0: @@ -259,33 +258,33 @@ Digest: NEWTYPESTRUCT: BYTES ECMHLiveObjectSetDigest: STRUCT: - - digest: - TYPENAME: Digest + - digest: + TYPENAME: Digest EffectsAuxDataDigest: NEWTYPESTRUCT: TYPENAME: Digest EffectsObjectChange: STRUCT: - - input_state: - TYPENAME: ObjectIn - - output_state: - TYPENAME: ObjectOut - - id_operation: - TYPENAME: IDOperation + - input_state: + TYPENAME: ObjectIn + - output_state: + TYPENAME: ObjectOut + - id_operation: + TYPENAME: IDOperation EmptySignInfo: STRUCT: [] EndOfEpochData: STRUCT: - - nextEpochCommittee: - SEQ: - TUPLE: - - TYPENAME: AuthorityPublicKeyBytes - - U64 - - nextEpochProtocolVersion: - TYPENAME: ProtocolVersion - - epochCommitments: - SEQ: - TYPENAME: CheckpointCommitment + - nextEpochCommittee: + SEQ: + TUPLE: + - TYPENAME: AuthorityPublicKeyBytes + - U64 + - nextEpochProtocolVersion: + TYPENAME: ProtocolVersion + - epochCommitments: + SEQ: + TYPENAME: CheckpointCommitment EndOfEpochTransactionKind: ENUM: 0: @@ -304,22 +303,22 @@ EndOfEpochTransactionKind: DenyListStateCreate: UNIT Envelope: STRUCT: - - data: - TYPENAME: SenderSignedData - - auth_signature: - TYPENAME: EmptySignInfo + - data: + TYPENAME: SenderSignedData + - auth_signature: + TYPENAME: EmptySignInfo ExecutionData: STRUCT: - - transaction: - TYPENAME: Envelope - - effects: - TYPENAME: TransactionEffects + - transaction: + TYPENAME: Envelope + - effects: + TYPENAME: TransactionEffects ExecutionDigests: STRUCT: - - transaction: - TYPENAME: TransactionDigest - - effects: - TYPENAME: TransactionEffectsDigest + - transaction: + TYPENAME: TransactionDigest + - effects: + TYPENAME: TransactionEffectsDigest ExecutionFailureStatus: ENUM: 0: @@ -333,18 +332,18 @@ ExecutionFailureStatus: 4: MoveObjectTooBig: STRUCT: - - object_size: U64 - - max_object_size: U64 + - object_size: U64 + - max_object_size: U64 5: MovePackageTooBig: STRUCT: - - object_size: U64 - - max_object_size: U64 + - object_size: U64 + - max_object_size: U64 6: CircularObjectOwnership: STRUCT: - - object: - TYPENAME: ObjectID + - object: + TYPENAME: ObjectID 7: InsufficientCoinBalance: UNIT 8: @@ -360,8 +359,8 @@ ExecutionFailureStatus: 12: MoveAbort: TUPLE: - - TYPENAME: MoveLocation - - U64 + - TYPENAME: MoveLocation + - U64 13: VMVerificationOrDeserializationError: UNIT 14: @@ -377,31 +376,31 @@ ExecutionFailureStatus: 19: CommandArgumentError: STRUCT: - - arg_idx: U16 - - kind: - TYPENAME: CommandArgumentError + - arg_idx: U16 + - kind: + TYPENAME: CommandArgumentError 20: TypeArgumentError: STRUCT: - - argument_idx: U16 - - kind: - TYPENAME: TypeArgumentError + - argument_idx: U16 + - kind: + TYPENAME: TypeArgumentError 21: UnusedValueWithoutDrop: STRUCT: - - result_idx: U16 - - secondary_idx: U16 + - result_idx: U16 + - secondary_idx: U16 22: InvalidPublicFunctionReturnType: STRUCT: - - idx: U16 + - idx: U16 23: InvalidTransferObject: UNIT 24: EffectsTooLarge: STRUCT: - - current_size: U64 - - max_size: U64 + - current_size: U64 + - max_size: U64 25: PublishUpgradeMissingDependency: UNIT 26: @@ -409,13 +408,13 @@ ExecutionFailureStatus: 27: PackageUpgradeError: STRUCT: - - upgrade_error: - TYPENAME: PackageUpgradeError + - upgrade_error: + TYPENAME: PackageUpgradeError 28: WrittenObjectsTooLarge: STRUCT: - - current_size: U64 - - max_size: U64 + - current_size: U64 + - max_size: U64 29: CertificateDenied: UNIT 30: @@ -431,37 +430,37 @@ ExecutionStatus: 1: Failure: STRUCT: - - error: - TYPENAME: ExecutionFailureStatus - - command: - OPTION: U64 + - error: + TYPENAME: ExecutionFailureStatus + - command: + OPTION: U64 FullCheckpointContents: STRUCT: - - transactions: - SEQ: - TYPENAME: ExecutionData - - user_signatures: + - transactions: + SEQ: + TYPENAME: ExecutionData + - user_signatures: + SEQ: SEQ: - SEQ: - TYPENAME: GenericSignature + TYPENAME: GenericSignature GasCostSummary: STRUCT: - - computationCost: U64 - - storageCost: U64 - - storageRebate: U64 - - nonRefundableStorageFee: U64 + - computationCost: U64 + - storageCost: U64 + - storageRebate: U64 + - nonRefundableStorageFee: U64 GasData: STRUCT: - - payment: - SEQ: - TUPLE: - - TYPENAME: ObjectID - - TYPENAME: SequenceNumber - - TYPENAME: ObjectDigest - - owner: - TYPENAME: IotaAddress - - price: U64 - - budget: U64 + - payment: + SEQ: + TUPLE: + - TYPENAME: ObjectID + - TYPENAME: SequenceNumber + - TYPENAME: ObjectDigest + - owner: + TYPENAME: IotaAddress + - price: U64 + - budget: U64 GenericSignature: NEWTYPESTRUCT: SEQ: U8 @@ -470,15 +469,15 @@ GenesisObject: 0: RawObject: STRUCT: - - data: - TYPENAME: Data - - owner: - TYPENAME: Owner + - data: + TYPENAME: Data + - owner: + TYPENAME: Owner GenesisTransaction: STRUCT: - - objects: - SEQ: - TYPENAME: GenesisObject + - objects: + SEQ: + TYPENAME: GenesisObject IDOperation: ENUM: 0: @@ -491,15 +490,15 @@ Identifier: NEWTYPESTRUCT: STR Intent: STRUCT: - - scope: U8 - - version: U8 - - app_id: U8 + - scope: U8 + - version: U8 + - app_id: U8 IntentMessage: STRUCT: - - intent: - TYPENAME: Intent - - value: - TYPENAME: TransactionData + - intent: + TYPENAME: Intent + - value: + TYPENAME: TransactionData IotaAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -507,40 +506,40 @@ IotaAddress: SIZE: 32 JWK: STRUCT: - - kty: STR - - e: STR - - n: STR - - alg: STR + - kty: STR + - e: STR + - n: STR + - alg: STR JwkId: STRUCT: - - iss: STR - - kid: STR + - iss: STR + - kid: STR ModuleId: STRUCT: - - address: - TYPENAME: AccountAddress - - name: - TYPENAME: Identifier + - address: + TYPENAME: AccountAddress + - name: + TYPENAME: Identifier MoveLocation: STRUCT: - - module: - TYPENAME: ModuleId - - function: U16 - - instruction: U16 - - function_name: - OPTION: STR + - module: + TYPENAME: ModuleId + - function: U16 + - instruction: U16 + - function_name: + OPTION: STR MoveLocationOpt: NEWTYPESTRUCT: OPTION: TYPENAME: MoveLocation MoveObject: STRUCT: - - type_: - TYPENAME: MoveObjectType - - has_public_transfer: BOOL - - version: - TYPENAME: SequenceNumber - - contents: BYTES + - type_: + TYPENAME: MoveObjectType + - has_public_transfer: BOOL + - version: + TYPENAME: SequenceNumber + - contents: BYTES MoveObjectType: NEWTYPESTRUCT: TYPENAME: MoveObjectType_ @@ -560,63 +559,63 @@ MoveObjectType_: TYPENAME: TypeTag MovePackage: STRUCT: - - id: - TYPENAME: ObjectID - - version: - TYPENAME: SequenceNumber - - module_map: - MAP: - KEY: STR - VALUE: BYTES - - type_origin_table: - SEQ: - TYPENAME: TypeOrigin - - linkage_table: - MAP: - KEY: - TYPENAME: ObjectID - VALUE: - TYPENAME: UpgradeInfo + - id: + TYPENAME: ObjectID + - version: + TYPENAME: SequenceNumber + - module_map: + MAP: + KEY: STR + VALUE: BYTES + - type_origin_table: + SEQ: + TYPENAME: TypeOrigin + - linkage_table: + MAP: + KEY: + TYPENAME: ObjectID + VALUE: + TYPENAME: UpgradeInfo MultiSig: STRUCT: - - sigs: - SEQ: - TYPENAME: CompressedSignature - - bitmap: U16 - - multisig_pk: - TYPENAME: MultiSigPublicKey + - sigs: + SEQ: + TYPENAME: CompressedSignature + - bitmap: U16 + - multisig_pk: + TYPENAME: MultiSigPublicKey MultiSigPublicKey: STRUCT: - - pk_map: - SEQ: - TUPLE: - - TYPENAME: PublicKey - - U8 - - threshold: U16 + - pk_map: + SEQ: + TUPLE: + - TYPENAME: PublicKey + - U8 + - threshold: U16 ObjectArg: ENUM: 0: ImmOrOwnedObject: NEWTYPE: TUPLE: - - TYPENAME: ObjectID - - TYPENAME: SequenceNumber - - TYPENAME: ObjectDigest + - TYPENAME: ObjectID + - TYPENAME: SequenceNumber + - TYPENAME: ObjectDigest 1: SharedObject: STRUCT: - - id: - TYPENAME: ObjectID - - initial_shared_version: - TYPENAME: SequenceNumber - - mutable: BOOL + - id: + TYPENAME: ObjectID + - initial_shared_version: + TYPENAME: SequenceNumber + - mutable: BOOL 2: Receiving: NEWTYPE: TUPLE: - - TYPENAME: ObjectID - - TYPENAME: SequenceNumber - - TYPENAME: ObjectDigest + - TYPENAME: ObjectID + - TYPENAME: SequenceNumber + - TYPENAME: ObjectDigest ObjectDigest: NEWTYPESTRUCT: TYPENAME: Digest @@ -631,10 +630,10 @@ ObjectIn: Exist: NEWTYPE: TUPLE: - - TUPLE: - - TYPENAME: SequenceNumber - - TYPENAME: ObjectDigest - - TYPENAME: Owner + - TUPLE: + - TYPENAME: SequenceNumber + - TYPENAME: ObjectDigest + - TYPENAME: Owner ObjectInfoRequestKind: ENUM: 0: @@ -651,14 +650,14 @@ ObjectOut: ObjectWrite: NEWTYPE: TUPLE: - - TYPENAME: ObjectDigest - - TYPENAME: Owner + - TYPENAME: ObjectDigest + - TYPENAME: Owner 2: PackageWrite: NEWTYPE: TUPLE: - - TYPENAME: SequenceNumber - - TYPENAME: ObjectDigest + - TYPENAME: SequenceNumber + - TYPENAME: ObjectDigest Owner: ENUM: 0: @@ -672,8 +671,8 @@ Owner: 2: Shared: STRUCT: - - initial_shared_version: - TYPENAME: SequenceNumber + - initial_shared_version: + TYPENAME: SequenceNumber 3: Immutable: UNIT PackageUpgradeError: @@ -681,53 +680,53 @@ PackageUpgradeError: 0: UnableToFetchPackage: STRUCT: - - package_id: - TYPENAME: ObjectID + - package_id: + TYPENAME: ObjectID 1: NotAPackage: STRUCT: - - object_id: - TYPENAME: ObjectID + - object_id: + TYPENAME: ObjectID 2: IncompatibleUpgrade: UNIT 3: DigestDoesNotMatch: STRUCT: - - digest: - SEQ: U8 + - digest: + SEQ: U8 4: UnknownUpgradePolicy: STRUCT: - - policy: U8 + - policy: U8 5: PackageIDDoesNotMatch: STRUCT: - - package_id: - TYPENAME: ObjectID - - ticket_id: - TYPENAME: ObjectID + - package_id: + TYPENAME: ObjectID + - ticket_id: + TYPENAME: ObjectID ProgrammableMoveCall: STRUCT: - - package: - TYPENAME: ObjectID - - module: - TYPENAME: Identifier - - function: - TYPENAME: Identifier - - type_arguments: - SEQ: - TYPENAME: TypeTag - - arguments: - SEQ: - TYPENAME: Argument + - package: + TYPENAME: ObjectID + - module: + TYPENAME: Identifier + - function: + TYPENAME: Identifier + - type_arguments: + SEQ: + TYPENAME: TypeTag + - arguments: + SEQ: + TYPENAME: Argument ProgrammableTransaction: STRUCT: - - inputs: - SEQ: - TYPENAME: CallArg - - commands: - SEQ: - TYPENAME: Command + - inputs: + SEQ: + TYPENAME: CallArg + - commands: + SEQ: + TYPENAME: Command ProtocolVersion: NEWTYPESTRUCT: U64 PublicKey: @@ -758,37 +757,37 @@ RandomnessRound: NEWTYPESTRUCT: U64 RandomnessStateUpdate: STRUCT: - - epoch: U64 - - randomness_round: - TYPENAME: RandomnessRound - - random_bytes: - SEQ: U8 - - randomness_obj_initial_shared_version: - TYPENAME: SequenceNumber + - epoch: U64 + - randomness_round: + TYPENAME: RandomnessRound + - random_bytes: + SEQ: U8 + - randomness_obj_initial_shared_version: + TYPENAME: SequenceNumber SenderSignedData: NEWTYPESTRUCT: SEQ: TYPENAME: SenderSignedTransaction SenderSignedTransaction: STRUCT: - - intent_message: - TYPENAME: IntentMessage - - tx_signatures: - SEQ: - TYPENAME: GenericSignature + - intent_message: + TYPENAME: IntentMessage + - tx_signatures: + SEQ: + TYPENAME: GenericSignature SequenceNumber: NEWTYPESTRUCT: U64 StructTag: STRUCT: - - address: - TYPENAME: AccountAddress - - module: - TYPENAME: Identifier - - name: - TYPENAME: Identifier - - type_args: - SEQ: - TYPENAME: TypeTag + - address: + TYPENAME: AccountAddress + - module: + TYPENAME: Identifier + - name: + TYPENAME: Identifier + - type_args: + SEQ: + TYPENAME: TypeTag TransactionData: ENUM: 0: @@ -797,14 +796,14 @@ TransactionData: TYPENAME: TransactionDataV1 TransactionDataV1: STRUCT: - - kind: - TYPENAME: TransactionKind - - sender: - TYPENAME: IotaAddress - - gas_data: - TYPENAME: GasData - - expiration: - TYPENAME: TransactionExpiration + - kind: + TYPENAME: TransactionKind + - sender: + TYPENAME: IotaAddress + - gas_data: + TYPENAME: GasData + - expiration: + TYPENAME: TransactionExpiration TransactionDigest: NEWTYPESTRUCT: TYPENAME: Digest @@ -823,111 +822,111 @@ TransactionEffectsDigest: TYPENAME: Digest TransactionEffectsV1: STRUCT: - - status: - TYPENAME: ExecutionStatus - - executed_epoch: U64 - - gas_used: - TYPENAME: GasCostSummary - - modified_at_versions: - SEQ: - TUPLE: - - TYPENAME: ObjectID - - TYPENAME: SequenceNumber - - shared_objects: - SEQ: - TUPLE: - - TYPENAME: ObjectID - - TYPENAME: SequenceNumber - - TYPENAME: ObjectDigest - - transaction_digest: - TYPENAME: TransactionDigest - - created: - SEQ: - TUPLE: - - TUPLE: - - TYPENAME: ObjectID - - TYPENAME: SequenceNumber - - TYPENAME: ObjectDigest - - TYPENAME: Owner - - mutated: - SEQ: - TUPLE: - - TUPLE: - - TYPENAME: ObjectID - - TYPENAME: SequenceNumber - - TYPENAME: ObjectDigest - - TYPENAME: Owner - - unwrapped: - SEQ: - TUPLE: - - TUPLE: - - TYPENAME: ObjectID - - TYPENAME: SequenceNumber - - TYPENAME: ObjectDigest - - TYPENAME: Owner - - deleted: - SEQ: - TUPLE: - - TYPENAME: ObjectID - - TYPENAME: SequenceNumber - - TYPENAME: ObjectDigest - - unwrapped_then_deleted: - SEQ: - TUPLE: - - TYPENAME: ObjectID - - TYPENAME: SequenceNumber - - TYPENAME: ObjectDigest - - wrapped: - SEQ: - TUPLE: - - TYPENAME: ObjectID - - TYPENAME: SequenceNumber - - TYPENAME: ObjectDigest - - gas_object: + - status: + TYPENAME: ExecutionStatus + - executed_epoch: U64 + - gas_used: + TYPENAME: GasCostSummary + - modified_at_versions: + SEQ: TUPLE: - - TUPLE: - - TYPENAME: ObjectID - - TYPENAME: SequenceNumber - - TYPENAME: ObjectDigest - - TYPENAME: Owner - - events_digest: - OPTION: - TYPENAME: TransactionEventsDigest - - dependencies: - SEQ: - TYPENAME: TransactionDigest + - TYPENAME: ObjectID + - TYPENAME: SequenceNumber + - shared_objects: + SEQ: + TUPLE: + - TYPENAME: ObjectID + - TYPENAME: SequenceNumber + - TYPENAME: ObjectDigest + - transaction_digest: + TYPENAME: TransactionDigest + - created: + SEQ: + TUPLE: + - TUPLE: + - TYPENAME: ObjectID + - TYPENAME: SequenceNumber + - TYPENAME: ObjectDigest + - TYPENAME: Owner + - mutated: + SEQ: + TUPLE: + - TUPLE: + - TYPENAME: ObjectID + - TYPENAME: SequenceNumber + - TYPENAME: ObjectDigest + - TYPENAME: Owner + - unwrapped: + SEQ: + TUPLE: + - TUPLE: + - TYPENAME: ObjectID + - TYPENAME: SequenceNumber + - TYPENAME: ObjectDigest + - TYPENAME: Owner + - deleted: + SEQ: + TUPLE: + - TYPENAME: ObjectID + - TYPENAME: SequenceNumber + - TYPENAME: ObjectDigest + - unwrapped_then_deleted: + SEQ: + TUPLE: + - TYPENAME: ObjectID + - TYPENAME: SequenceNumber + - TYPENAME: ObjectDigest + - wrapped: + SEQ: + TUPLE: + - TYPENAME: ObjectID + - TYPENAME: SequenceNumber + - TYPENAME: ObjectDigest + - gas_object: + TUPLE: + - TUPLE: + - TYPENAME: ObjectID + - TYPENAME: SequenceNumber + - TYPENAME: ObjectDigest + - TYPENAME: Owner + - events_digest: + OPTION: + TYPENAME: TransactionEventsDigest + - dependencies: + SEQ: + TYPENAME: TransactionDigest TransactionEffectsV2: STRUCT: - - status: - TYPENAME: ExecutionStatus - - executed_epoch: U64 - - gas_used: - TYPENAME: GasCostSummary - - transaction_digest: + - status: + TYPENAME: ExecutionStatus + - executed_epoch: U64 + - gas_used: + TYPENAME: GasCostSummary + - transaction_digest: + TYPENAME: TransactionDigest + - gas_object_index: + OPTION: U32 + - events_digest: + OPTION: + TYPENAME: TransactionEventsDigest + - dependencies: + SEQ: TYPENAME: TransactionDigest - - gas_object_index: - OPTION: U32 - - events_digest: - OPTION: - TYPENAME: TransactionEventsDigest - - dependencies: - SEQ: - TYPENAME: TransactionDigest - - lamport_version: - TYPENAME: SequenceNumber - - changed_objects: - SEQ: - TUPLE: - - TYPENAME: ObjectID - - TYPENAME: EffectsObjectChange - - unchanged_shared_objects: - SEQ: - TUPLE: - - TYPENAME: ObjectID - - TYPENAME: UnchangedSharedKind - - aux_data_digest: - OPTION: - TYPENAME: EffectsAuxDataDigest + - lamport_version: + TYPENAME: SequenceNumber + - changed_objects: + SEQ: + TUPLE: + - TYPENAME: ObjectID + - TYPENAME: EffectsObjectChange + - unchanged_shared_objects: + SEQ: + TUPLE: + - TYPENAME: ObjectID + - TYPENAME: UnchangedSharedKind + - aux_data_digest: + OPTION: + TYPENAME: EffectsAuxDataDigest TransactionEventsDigest: NEWTYPESTRUCT: TYPENAME: Digest @@ -981,10 +980,10 @@ TypeArgumentError: ConstraintNotSatisfied: UNIT TypeOrigin: STRUCT: - - module_name: STR - - struct_name: STR - - package: - TYPENAME: ObjectID + - module_name: STR + - struct_name: STR + - package: + TYPENAME: ObjectID TypeTag: ENUM: 0: @@ -1036,8 +1035,8 @@ UnchangedSharedKind: ReadOnlyRoot: NEWTYPE: TUPLE: - - TYPENAME: SequenceNumber - - TYPENAME: ObjectDigest + - TYPENAME: SequenceNumber + - TYPENAME: ObjectDigest 1: MutateDeleted: NEWTYPE: @@ -1048,10 +1047,10 @@ UnchangedSharedKind: TYPENAME: SequenceNumber UpgradeInfo: STRUCT: - - upgraded_id: - TYPENAME: ObjectID - - upgraded_version: - TYPENAME: SequenceNumber + - upgraded_id: + TYPENAME: ObjectID + - upgraded_version: + TYPENAME: SequenceNumber ZkLoginAuthenticatorAsBytes: NEWTYPESTRUCT: SEQ: U8 diff --git a/crates/iota-cost/Cargo.toml b/crates/iota-cost/Cargo.toml index dcd6383168f..4e687788eaa 100644 --- a/crates/iota-cost/Cargo.toml +++ b/crates/iota-cost/Cargo.toml @@ -12,7 +12,6 @@ bcs.workspace = true iota-types.workspace = true serde.workspace = true strum.workspace = true -strum_macros.workspace = true tokio = { workspace = true, features = ["full"] } [dev-dependencies] diff --git a/crates/iota-cost/tests/empirical_transaction_cost.rs b/crates/iota-cost/tests/empirical_transaction_cost.rs index 03494cb30e4..b245d6883fb 100644 --- a/crates/iota-cost/tests/empirical_transaction_cost.rs +++ b/crates/iota-cost/tests/empirical_transaction_cost.rs @@ -19,7 +19,7 @@ use iota_types::{ IOTA_FRAMEWORK_PACKAGE_ID, }; use serde::{Deserialize, Serialize}; -use strum_macros::{Display, EnumString}; +use strum::{Display, EnumString}; use test_cluster::{TestCluster, TestClusterBuilder}; #[derive( diff --git a/crates/iota-data-ingestion/src/workers/archival.rs b/crates/iota-data-ingestion/src/workers/archival.rs index ae1db5def99..a20c07f010d 100644 --- a/crates/iota-data-ingestion/src/workers/archival.rs +++ b/crates/iota-data-ingestion/src/workers/archival.rs @@ -125,7 +125,7 @@ impl ArchivalWorker { let bytes = finalize_manifest(manifest)?; self.remote_store - .put(&Path::from("MANIFEST"), bytes) + .put(&Path::from("MANIFEST"), bytes.into()) .await?; Ok(()) } @@ -140,7 +140,7 @@ impl ArchivalWorker { let mut cursor = Cursor::new(buffer); compress(&mut cursor, &mut compressed_buffer)?; self.remote_store - .put(&location, Bytes::from(compressed_buffer.clone())) + .put(&location, Bytes::from(compressed_buffer.clone()).into()) .await?; Ok(Bytes::from(compressed_buffer)) } diff --git a/crates/iota-data-ingestion/src/workers/blob.rs b/crates/iota-data-ingestion/src/workers/blob.rs index b7ddee2a9ce..6200a92d7c4 100644 --- a/crates/iota-data-ingestion/src/workers/blob.rs +++ b/crates/iota-data-ingestion/src/workers/blob.rs @@ -38,7 +38,9 @@ impl Worker for BlobWorker { "{}.chk", checkpoint.checkpoint_summary.sequence_number )); - self.remote_store.put(&location, Bytes::from(bytes)).await?; + self.remote_store + .put(&location, Bytes::from(bytes).into()) + .await?; Ok(()) } } diff --git a/crates/iota-data-ingestion/src/workers/kv_store.rs b/crates/iota-data-ingestion/src/workers/kv_store.rs index 4c923e5056e..eba8a4bc716 100644 --- a/crates/iota-data-ingestion/src/workers/kv_store.rs +++ b/crates/iota-data-ingestion/src/workers/kv_store.rs @@ -106,7 +106,7 @@ impl KVStoreWorker { "bcs", AttributeValue::B(Blob::new(bcs::to_bytes(value.borrow())?)), ) - .build(), + .build()?, )) .build(); items.push(item); diff --git a/crates/iota-faucet/src/main.rs b/crates/iota-faucet/src/main.rs index 275085c7c75..60fcf4af319 100644 --- a/crates/iota-faucet/src/main.rs +++ b/crates/iota-faucet/src/main.rs @@ -123,9 +123,8 @@ async fn main() -> Result<(), anyhow::Error> { let addr = SocketAddr::new(IpAddr::V4(host_ip), port); info!("listening on {}", addr); - axum::Server::bind(&addr) - .serve(app.into_make_service()) - .await?; + let listener = tokio::net::TcpListener::bind(addr).await?; + axum::serve(listener, app.into_make_service()).await?; Ok(()) } diff --git a/crates/iota-genesis-builder/src/stardust/native_token/package_data.rs b/crates/iota-genesis-builder/src/stardust/native_token/package_data.rs index 4a39f2d4b95..180f63d604a 100644 --- a/crates/iota-genesis-builder/src/stardust/native_token/package_data.rs +++ b/crates/iota-genesis-builder/src/stardust/native_token/package_data.rs @@ -14,7 +14,7 @@ use iota_types::stardust::error::StardustError; use move_compiler::parser::keywords; use rand::distributions::{Alphanumeric, DistString}; use rand_pcg::Pcg64; -use rand_seeder::Seeder; +use rand_seeder::{rand_core::RngCore, Seeder, SipRng}; use regex::Regex; use serde::{Deserialize, Serialize}; @@ -231,9 +231,13 @@ fn derive_foundry_package_lowercase_identifier(input: &str, seed: &[u8]) -> Stri let additional_part = if is_valid { refined_identifier } else { + let mut rng: SipRng = Seeder::from(seed).make_rng(); + fn next_u128(rng: &mut SipRng) -> u128 { + (rng.next_u64() as u128) << 64 | rng.next_u64() as u128 + } // Generate a new valid random identifier if the identifier is empty. Alphanumeric - .sample_string(&mut Pcg64::from(Seeder::from(seed).make_rng()), 7) + .sample_string(&mut Pcg64::new(next_u128(&mut rng), next_u128(&mut rng)), 7) .to_lowercase() }; final_identifier.push_str(&additional_part); diff --git a/crates/iota-graphql-rpc/Cargo.toml b/crates/iota-graphql-rpc/Cargo.toml index 40b61053949..f64470eb4ac 100644 --- a/crates/iota-graphql-rpc/Cargo.toml +++ b/crates/iota-graphql-rpc/Cargo.toml @@ -13,6 +13,7 @@ async-graphql-axum.workspace = true async-graphql-value.workspace = true async-trait.workspace = true axum.workspace = true +axum-extra = { workspace = true, features = ["typed-header"] } chrono.workspace = true clap.workspace = true const-str.workspace = true @@ -24,7 +25,9 @@ futures.workspace = true git-version.workspace = true hex.workspace = true http.workspace = true +http-body-util.workspace = true hyper.workspace = true +hyper-util = { workspace = true, features = ["http2", "server", "tokio"] } im.workspace = true iota-sdk.workspace = true iota-types.workspace = true diff --git a/crates/iota-graphql-rpc/schema/current_progress_schema.graphql b/crates/iota-graphql-rpc/schema/current_progress_schema.graphql index 1cb4669df03..616f6261d52 100644 --- a/crates/iota-graphql-rpc/schema/current_progress_schema.graphql +++ b/crates/iota-graphql-rpc/schema/current_progress_schema.graphql @@ -4346,6 +4346,8 @@ type ZkLoginVerifyResult { errors: [String!]! } +directive @include(if: Boolean!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT +directive @skip(if: Boolean!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT schema { query: Query mutation: Mutation diff --git a/crates/iota-graphql-rpc/src/extensions/query_limits_checker.rs b/crates/iota-graphql-rpc/src/extensions/query_limits_checker.rs index c6247ef09ab..e4cb738b784 100644 --- a/crates/iota-graphql-rpc/src/extensions/query_limits_checker.rs +++ b/crates/iota-graphql-rpc/src/extensions/query_limits_checker.rs @@ -17,10 +17,8 @@ use async_graphql::{ value, Name, Pos, Positioned, Response, ServerResult, Value, Variables, }; use async_graphql_value::Value as GqlValue; -use axum::{ - headers, - http::{HeaderName, HeaderValue}, -}; +use axum::http::{HeaderName, HeaderValue}; +use axum_extra::headers; use iota_graphql_rpc_headers::LIMITS_HEADER; use once_cell::sync::Lazy; use tokio::sync::Mutex; diff --git a/crates/iota-graphql-rpc/src/server/builder.rs b/crates/iota-graphql-rpc/src/server/builder.rs index 3a1227091df..7d8a131ee4b 100644 --- a/crates/iota-graphql-rpc/src/server/builder.rs +++ b/crates/iota-graphql-rpc/src/server/builder.rs @@ -20,22 +20,22 @@ use async_graphql::{ }; use async_graphql_axum::{GraphQLRequest, GraphQLResponse}; use axum::{ - extract::{connect_info::IntoMakeServiceWithConnectInfo, ConnectInfo, FromRef, State}, - headers::Header, + body::Body, + extract::{ConnectInfo, FromRef, State}, http::{HeaderMap, StatusCode}, middleware::{self}, response::IntoResponse, routing::{post, MethodRouter, Route}, Router, }; +use axum_extra::headers::Header as _; use http::{HeaderValue, Method, Request}; -use hyper::{server::conn::AddrIncoming as HyperAddrIncoming, Body, Server as HyperServer}; use iota_graphql_rpc_headers::{LIMITS_HEADER, VERSION_HEADER}; use iota_package_resolver::{PackageStoreWithLruCache, Resolver}; use iota_sdk::IotaClientBuilder; use mysten_metrics::spawn_monitored_task; use mysten_network::callback::{CallbackLayer, MakeCallbackHandler, ResponseHandler}; -use tokio::{join, sync::OnceCell}; +use tokio::{join, net::TcpListener, sync::OnceCell}; use tokio_util::sync::CancellationToken; use tower::{Layer, Service}; use tower_http::cors::{AllowOrigin, CorsLayer}; @@ -70,7 +70,8 @@ use crate::{ }; pub(crate) struct Server { - pub server: HyperServer>, + address: SocketAddr, + router: Router, /// The following fields are internally used for background tasks checkpoint_watermark: CheckpointWatermark, state: AppState, @@ -107,14 +108,21 @@ impl Server { let server_task = { info!("Starting graphql service"); let cancellation_token = self.state.cancellation_token.clone(); + let address = self.address; + let router = self.router; spawn_monitored_task!(async move { - self.server - .with_graceful_shutdown(async { - cancellation_token.cancelled().await; - info!("Shutdown signal received, terminating graphql service"); - }) - .await - .map_err(|e| Error::Internal(format!("Server run failed: {}", e))) + axum::serve( + TcpListener::bind(address) + .await + .map_err(|e| Error::Internal(format!("listener bind failed: {}", e)))?, + router.into_make_service_with_connect_info::(), + ) + .with_graceful_shutdown(async move { + cancellation_token.cancelled().await; + info!("Shutdown signal received, terminating graphql service"); + }) + .await + .map_err(|e| Error::Internal(format!("Server run failed: {}", e))) }) }; @@ -320,12 +328,10 @@ impl ServerBuilder { .layer(Self::cors()?); Ok(Server { - server: axum::Server::bind( - &address - .parse() - .map_err(|_| Error::Internal(format!("Failed to parse address {}", address)))?, - ) - .serve(app.into_make_service_with_connect_info::()), + address: address + .parse() + .map_err(|_| Error::Internal(format!("Failed to parse address {}", address)))?, + router: app, checkpoint_watermark, state, db_reader, diff --git a/crates/iota-graphql-rpc/src/server/version.rs b/crates/iota-graphql-rpc/src/server/version.rs index 516e416e2f0..3e429c7f9c6 100644 --- a/crates/iota-graphql-rpc/src/server/version.rs +++ b/crates/iota-graphql-rpc/src/server/version.rs @@ -3,13 +3,12 @@ // SPDX-License-Identifier: Apache-2.0 use axum::{ - extract::State, - headers, - http::{HeaderName, HeaderValue, Request, StatusCode}, + extract::{Request, State}, + http::{HeaderName, HeaderValue, StatusCode}, middleware::Next, response::{IntoResponse, Response}, - TypedHeader, }; +use axum_extra::{headers, TypedHeader}; use crate::{ config::Version, @@ -51,11 +50,11 @@ impl headers::Header for IotaRpcVersion { /// constraint. Each RPC instance only supports one version of the RPC /// software, and it is the responsibility of the load balancer to make sure /// version constraints are met. -pub(crate) async fn check_version_middleware( +pub(crate) async fn check_version_middleware( user_version: Option>, State(version): State, - request: Request, - next: Next, + request: Request, + next: Next, ) -> Response { if let Some(TypedHeader(IotaRpcVersion(req_version, rest))) = user_version { if !rest.is_empty() { @@ -111,10 +110,10 @@ pub(crate) async fn check_version_middleware( /// Mark every outgoing response with a header indicating the precise version of /// the RPC that was used (including the patch version and sha). -pub(crate) async fn set_version_middleware( +pub(crate) async fn set_version_middleware( State(version): State, - request: Request, - next: Next, + request: Request, + next: Next, ) -> Response { let mut response = next.run(request).await; let headers = response.headers_mut(); @@ -146,6 +145,7 @@ mod tests { use axum::{body::Body, middleware, routing::get, Router}; use expect_test::expect; + use http_body_util::BodyExt; use mysten_metrics; use tokio_util::sync::CancellationToken; use tower::ServiceExt; @@ -202,8 +202,8 @@ mod tests { } async fn response_body(response: Response) -> String { - let bytes = hyper::body::to_bytes(response.into_body()).await.unwrap(); - let value: serde_json::Value = serde_json::from_slice(bytes.as_ref()).unwrap(); + let bytes = response.into_body().collect().await.unwrap(); + let value: serde_json::Value = serde_json::from_slice(bytes.to_bytes().as_ref()).unwrap(); serde_json::to_string_pretty(&value).unwrap() } diff --git a/crates/iota-graphql-rpc/src/types/checkpoint.rs b/crates/iota-graphql-rpc/src/types/checkpoint.rs index f5d19b7273c..7bf2e2d8dd6 100644 --- a/crates/iota-graphql-rpc/src/types/checkpoint.rs +++ b/crates/iota-graphql-rpc/src/types/checkpoint.rs @@ -11,6 +11,7 @@ use async_graphql::{ }; use diesel::{CombineDsl, ExpressionMethods, OptionalExtension, QueryDsl}; use fastcrypto::encoding::{Base58, Encoding}; +use futures::Future; use iota_indexer::{ models::checkpoints::StoredCheckpoint, schema::{checkpoints, objects_snapshot}, @@ -465,106 +466,118 @@ impl Checkpointed for Cursor { } } -#[async_trait::async_trait] +#[allow(clippy::manual_async_fn)] impl Loader for Db { type Value = Checkpoint; type Error = Error; - async fn load(&self, keys: &[SeqNumKey]) -> Result, Error> { - use checkpoints::dsl; - - let checkpoint_ids: BTreeSet<_> = keys - .iter() - .filter_map(|key| { - if let Some(viewed_at) = key.checkpoint_viewed_at { - // Filter out keys querying for checkpoints after their own consistency cursor. - (viewed_at >= key.sequence_number).then_some(key.sequence_number as i64) - } else { - Some(key.sequence_number as i64) - } - }) - .collect(); + fn load( + &self, + keys: &[SeqNumKey], + ) -> impl Future, Self::Error>> + Send { + async { + use checkpoints::dsl; + + let checkpoint_ids: BTreeSet<_> = keys + .iter() + .filter_map(|key| { + if let Some(viewed_at) = key.checkpoint_viewed_at { + // Filter out keys querying for checkpoints after their own consistency + // cursor. + (viewed_at >= key.sequence_number).then_some(key.sequence_number as i64) + } else { + Some(key.sequence_number as i64) + } + }) + .collect(); - let checkpoints: Vec = self - .execute(move |conn| { - conn.results(move || { - dsl::checkpoints - .filter(dsl::sequence_number.eq_any(checkpoint_ids.iter().cloned())) + let checkpoints: Vec = self + .execute(move |conn| { + conn.results(move || { + dsl::checkpoints + .filter(dsl::sequence_number.eq_any(checkpoint_ids.iter().cloned())) + }) }) - }) - .await - .map_err(|e| Error::Internal(format!("Failed to fetch checkpoints: {e}")))?; - - let checkpoint_id_to_stored: BTreeMap<_, _> = checkpoints - .into_iter() - .map(|stored| (stored.sequence_number as u64, stored)) - .collect(); - - Ok(keys - .iter() - .filter_map(|key| { - let stored = checkpoint_id_to_stored.get(&key.sequence_number).cloned()?; - let checkpoint = Checkpoint { - stored, - checkpoint_viewed_at: key.checkpoint_viewed_at, - }; - - let digest = &checkpoint.stored.checkpoint_digest; - if matches!(key.digest, Some(d) if d.as_slice() != digest) { - None - } else { - Some((*key, checkpoint)) - } - }) - .collect()) + .await + .map_err(|e| Error::Internal(format!("Failed to fetch checkpoints: {e}")))?; + + let checkpoint_id_to_stored: BTreeMap<_, _> = checkpoints + .into_iter() + .map(|stored| (stored.sequence_number as u64, stored)) + .collect(); + + Ok(keys + .iter() + .filter_map(|key| { + let stored = checkpoint_id_to_stored.get(&key.sequence_number).cloned()?; + let checkpoint = Checkpoint { + stored, + checkpoint_viewed_at: key.checkpoint_viewed_at, + }; + + let digest = &checkpoint.stored.checkpoint_digest; + if matches!(key.digest, Some(d) if d.as_slice() != digest) { + None + } else { + Some((*key, checkpoint)) + } + }) + .collect()) + } } } -#[async_trait::async_trait] +#[allow(clippy::manual_async_fn)] impl Loader for Db { type Value = Checkpoint; type Error = Error; - async fn load(&self, keys: &[DigestKey]) -> Result, Error> { - use checkpoints::dsl; + fn load( + &self, + keys: &[DigestKey], + ) -> impl Future, Self::Error>> + Send { + async { + use checkpoints::dsl; - let digests: BTreeSet<_> = keys.iter().map(|key| key.digest.to_vec()).collect(); + let digests: BTreeSet<_> = keys.iter().map(|key| key.digest.to_vec()).collect(); - let checkpoints: Vec = self - .execute(move |conn| { - conn.results(move || { - dsl::checkpoints.filter(dsl::checkpoint_digest.eq_any(digests.iter().cloned())) + let checkpoints: Vec = self + .execute(move |conn| { + conn.results(move || { + dsl::checkpoints + .filter(dsl::checkpoint_digest.eq_any(digests.iter().cloned())) + }) }) - }) - .await - .map_err(|e| Error::Internal(format!("Failed to fetch checkpoints: {e}")))?; - - let checkpoint_id_to_stored: BTreeMap<_, _> = checkpoints - .into_iter() - .map(|stored| (stored.checkpoint_digest.clone(), stored)) - .collect(); - - Ok(keys - .iter() - .filter_map(|key| { - let stored = checkpoint_id_to_stored - .get(key.digest.as_slice()) - .cloned()?; - let checkpoint = Checkpoint { - stored, - checkpoint_viewed_at: key.checkpoint_viewed_at, - }; - - // Filter by key's checkpoint viewed at here. Doing this in memory because it - // should be quite rare that this query actually filters - // something, but encoding it in SQL is complicated. - let seq_num = checkpoint.stored.sequence_number as u64; - if matches!(key.checkpoint_viewed_at, Some(cp) if cp < seq_num) { - None - } else { - Some((*key, checkpoint)) - } - }) - .collect()) + .await + .map_err(|e| Error::Internal(format!("Failed to fetch checkpoints: {e}")))?; + + let checkpoint_id_to_stored: BTreeMap<_, _> = checkpoints + .into_iter() + .map(|stored| (stored.checkpoint_digest.clone(), stored)) + .collect(); + + Ok(keys + .iter() + .filter_map(|key| { + let stored = checkpoint_id_to_stored + .get(key.digest.as_slice()) + .cloned()?; + let checkpoint = Checkpoint { + stored, + checkpoint_viewed_at: key.checkpoint_viewed_at, + }; + + // Filter by key's checkpoint viewed at here. Doing this in memory because it + // should be quite rare that this query actually filters + // something, but encoding it in SQL is complicated. + let seq_num = checkpoint.stored.sequence_number as u64; + if matches!(key.checkpoint_viewed_at, Some(cp) if cp < seq_num) { + None + } else { + Some((*key, checkpoint)) + } + }) + .collect()) + } } } diff --git a/crates/iota-graphql-rpc/src/types/epoch.rs b/crates/iota-graphql-rpc/src/types/epoch.rs index a158f651da5..390669484db 100644 --- a/crates/iota-graphql-rpc/src/types/epoch.rs +++ b/crates/iota-graphql-rpc/src/types/epoch.rs @@ -11,6 +11,7 @@ use async_graphql::{ }; use diesel::{ExpressionMethods, OptionalExtension, QueryDsl, SelectableHelper}; use fastcrypto::encoding::{Base58, Encoding}; +use futures::Future; use iota_indexer::{models::epoch::QueryableEpochInfo, schema::epochs}; use iota_types::messages_checkpoint::CheckpointCommitment as EpochCommitment; @@ -342,52 +343,57 @@ impl Epoch { } } -#[async_trait::async_trait] +#[allow(clippy::manual_async_fn)] impl Loader for Db { type Value = Epoch; type Error = Error; - async fn load(&self, keys: &[EpochKey]) -> Result, Error> { - use epochs::dsl; - - let epoch_ids: BTreeSet<_> = keys.iter().map(|key| key.epoch_id as i64).collect(); - let epochs: Vec = self - .execute_repeatable(move |conn| { - conn.results(move || { - dsl::epochs - .select(QueryableEpochInfo::as_select()) - .filter(dsl::epoch.eq_any(epoch_ids.iter().cloned())) + fn load( + &self, + keys: &[EpochKey], + ) -> impl Future, Self::Error>> + Send { + async { + use epochs::dsl; + + let epoch_ids: BTreeSet<_> = keys.iter().map(|key| key.epoch_id as i64).collect(); + let epochs: Vec = self + .execute_repeatable(move |conn| { + conn.results(move || { + dsl::epochs + .select(QueryableEpochInfo::as_select()) + .filter(dsl::epoch.eq_any(epoch_ids.iter().cloned())) + }) }) - }) - .await - .map_err(|e| Error::Internal(format!("Failed to fetch epochs: {e}")))?; - - let epoch_id_to_stored: BTreeMap<_, _> = epochs - .into_iter() - .map(|stored| (stored.epoch as u64, stored)) - .collect(); - - Ok(keys - .iter() - .filter_map(|key| { - let stored = epoch_id_to_stored.get(&key.epoch_id).cloned()?; - let epoch = Epoch { - stored, - checkpoint_viewed_at: key.checkpoint_viewed_at, - }; - - // We filter by checkpoint viewed at in memory because it should be quite rare - // that this query actually filters something (only in edge - // cases), and not trying to encode it in the SQL query makes - // the query much simpler and therefore easier for - // the DB to plan. - let start = epoch.stored.first_checkpoint_id as u64; - if matches!(key.checkpoint_viewed_at, Some(cp) if cp < start) { - None - } else { - Some((*key, epoch)) - } - }) - .collect()) + .await + .map_err(|e| Error::Internal(format!("Failed to fetch epochs: {e}")))?; + + let epoch_id_to_stored: BTreeMap<_, _> = epochs + .into_iter() + .map(|stored| (stored.epoch as u64, stored)) + .collect(); + + Ok(keys + .iter() + .filter_map(|key| { + let stored = epoch_id_to_stored.get(&key.epoch_id).cloned()?; + let epoch = Epoch { + stored, + checkpoint_viewed_at: key.checkpoint_viewed_at, + }; + + // We filter by checkpoint viewed at in memory because it should be quite rare + // that this query actually filters something (only in edge + // cases), and not trying to encode it in the SQL query makes + // the query much simpler and therefore easier for + // the DB to plan. + let start = epoch.stored.first_checkpoint_id as u64; + if matches!(key.checkpoint_viewed_at, Some(cp) if cp < start) { + None + } else { + Some((*key, epoch)) + } + }) + .collect()) + } } } diff --git a/crates/iota-graphql-rpc/src/types/move_value.rs b/crates/iota-graphql-rpc/src/types/move_value.rs index 8e4d33b8daf..d613f26467f 100644 --- a/crates/iota-graphql-rpc/src/types/move_value.rs +++ b/crates/iota-graphql-rpc/src/types/move_value.rs @@ -901,7 +901,7 @@ mod tests { .unwrap(); let expect = expect![[ - r#"{baz: null,qux: [{quy: 44,quz: "Hello, world!",frob: "0x0000000000000000000000000000000000000000000000000000000000000045"},{quy: 46,quz: null,frob: "0x0000000000000000000000000000000000000000000000000000000000000047"}]}"# + r#"{baz: null, qux: [{quy: 44, quz: "Hello, world!", frob: "0x0000000000000000000000000000000000000000000000000000000000000045"}, {quy: 46, quz: null, frob: "0x0000000000000000000000000000000000000000000000000000000000000047"}]}"# ]]; expect.assert_eq(&format!("{v}")); } diff --git a/crates/iota-graphql-rpc/tests/snapshots/snapshot_tests__schema_sdl_export.snap b/crates/iota-graphql-rpc/tests/snapshots/snapshot_tests__schema_sdl_export.snap index d6cf62b6d09..24d4617eb8c 100644 --- a/crates/iota-graphql-rpc/tests/snapshots/snapshot_tests__schema_sdl_export.snap +++ b/crates/iota-graphql-rpc/tests/snapshots/snapshot_tests__schema_sdl_export.snap @@ -4350,6 +4350,8 @@ type ZkLoginVerifyResult { errors: [String!]! } +directive @include(if: Boolean!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT +directive @skip(if: Boolean!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT schema { query: Query mutation: Mutation diff --git a/crates/iota-indexer/src/apis/extended_api.rs b/crates/iota-indexer/src/apis/extended_api.rs index 2f954d3fd4b..ce1d8d267ac 100644 --- a/crates/iota-indexer/src/apis/extended_api.rs +++ b/crates/iota-indexer/src/apis/extended_api.rs @@ -3,7 +3,9 @@ // SPDX-License-Identifier: Apache-2.0 use iota_json_rpc::IotaRpcModule; -use iota_json_rpc_api::{validate_limit, ExtendedApiServer, QUERY_MAX_RESULT_LIMIT_CHECKPOINTS}; +use iota_json_rpc_api::{ + internal_error, validate_limit, ExtendedApiServer, QUERY_MAX_RESULT_LIMIT_CHECKPOINTS, +}; use iota_json_rpc_types::{ CheckpointedObjectID, EpochInfo, EpochPage, IotaObjectResponseQuery, Page, QueryObjectsPage, }; @@ -31,7 +33,8 @@ impl ExtendedApiServer for ExtendedApi { limit: Option, descending_order: Option, ) -> RpcResult { - let limit = validate_limit(limit, QUERY_MAX_RESULT_LIMIT_CHECKPOINTS)?; + let limit = + validate_limit(limit, QUERY_MAX_RESULT_LIMIT_CHECKPOINTS).map_err(internal_error)?; let mut epochs = self .inner .spawn_blocking(move |this| { @@ -67,10 +70,7 @@ impl ExtendedApiServer for ExtendedApi { _cursor: Option, _limit: Option, ) -> RpcResult { - Err(jsonrpsee::types::error::CallError::Custom( - jsonrpsee::types::error::ErrorCode::MethodNotFound.into(), - ) - .into()) + Err(jsonrpsee::types::error::ErrorCode::MethodNotFound.into()) } async fn get_total_transactions(&self) -> RpcResult> { diff --git a/crates/iota-indexer/src/apis/governance_api.rs b/crates/iota-indexer/src/apis/governance_api.rs index 37a83d081c1..e94720e8131 100644 --- a/crates/iota-indexer/src/apis/governance_api.rs +++ b/crates/iota-indexer/src/apis/governance_api.rs @@ -296,7 +296,7 @@ fn stake_status( /// 1, it will be cleared when the epoch changes. rates are in descending order /// by epoch. #[cached( - type = "SizedCache>", + ty = "SizedCache>", create = "{ SizedCache::with_size(1) }", convert = "{ system_state_summary.epoch }", result = true @@ -391,7 +391,7 @@ async fn exchange_rates( /// Cache a map representing the validators' APYs for this epoch #[cached( - type = "SizedCache>", + ty = "SizedCache>", create = "{ SizedCache::with_size(1) }", convert = " {apys.epoch} " )] diff --git a/crates/iota-indexer/src/apis/indexer_api.rs b/crates/iota-indexer/src/apis/indexer_api.rs index 6ef245698f8..5edb575239a 100644 --- a/crates/iota-indexer/src/apis/indexer_api.rs +++ b/crates/iota-indexer/src/apis/indexer_api.rs @@ -7,10 +7,11 @@ use iota_json_rpc::{ name_service::{Domain, NameRecord, NameServiceConfig}, IotaRpcModule, }; -use iota_json_rpc_api::{cap_page_limit, IndexerApiServer}; +use iota_json_rpc_api::{cap_page_limit, internal_error, IndexerApiServer}; use iota_json_rpc_types::{ - DynamicFieldPage, EventFilter, EventPage, IotaObjectResponse, IotaObjectResponseQuery, - IotaTransactionBlockResponseQuery, ObjectsPage, Page, TransactionBlocksPage, TransactionFilter, + DynamicFieldPage, EventFilter, EventPage, IotaObjectData, IotaObjectDataOptions, + IotaObjectResponse, IotaObjectResponseQuery, IotaTransactionBlockResponseQuery, ObjectsPage, + Page, TransactionBlocksPage, TransactionFilter, }; use iota_open_rpc::Module; use iota_types::{ @@ -22,11 +23,7 @@ use iota_types::{ object::ObjectRead, TypeTag, }; -use jsonrpsee::{ - core::RpcResult, - types::{SubscriptionEmptyError, SubscriptionResult}, - RpcModule, SubscriptionSink, -}; +use jsonrpsee::{core::RpcResult, PendingSubscriptionSink, RpcModule}; use crate::{indexer_reader::IndexerReader, IndexerError}; @@ -70,52 +67,65 @@ impl IndexerApi { objects.truncate(limit); let next_cursor = objects.last().map(|o_read| o_read.object_id()); - let mut parallel_tasks = vec![]; - for o in objects { - let inner_clone = self.inner.clone(); - let options = options.clone(); - parallel_tasks.push(tokio::task::spawn(async move { - match o { - ObjectRead::NotExists(id) => Ok(IotaObjectResponse::new_with_error( - IotaObjectResponseError::NotExists { object_id: id }, - )), - ObjectRead::Exists(object_ref, o, layout) => { - if options.show_display { - match inner_clone.get_display_fields(&o, &layout).await { - Ok(rendered_fields) => Ok(IotaObjectResponse::new_with_data( - (object_ref, o, layout, options, Some(rendered_fields)) - .try_into()?, - )), - Err(e) => Ok(IotaObjectResponse::new( - Some((object_ref, o, layout, options, None).try_into()?), - Some(IotaObjectResponseError::DisplayError { - error: e.to_string(), - }), - )), + let mut parallel_tasks = Vec::with_capacity(objects.len()); + async fn check_read_obj( + obj: ObjectRead, + reader: IndexerReader, + options: IotaObjectDataOptions, + ) -> anyhow::Result { + match obj { + ObjectRead::NotExists(id) => Ok(IotaObjectResponse::new_with_error( + IotaObjectResponseError::NotExists { object_id: id }, + )), + ObjectRead::Exists(object_ref, o, layout) => { + if options.show_display { + match reader.get_display_fields(&o, &layout).await { + Ok(rendered_fields) => { + Ok(IotaObjectResponse::new_with_data(IotaObjectData::new( + object_ref, + o, + layout, + options, + rendered_fields, + )?)) } - } else { - Ok(IotaObjectResponse::new_with_data( - (object_ref, o, layout, options, None).try_into()?, - )) + Err(e) => Ok(IotaObjectResponse::new( + Some(IotaObjectData::new(object_ref, o, layout, options, None)?), + Some(IotaObjectResponseError::DisplayError { + error: e.to_string(), + }), + )), } + } else { + Ok(IotaObjectResponse::new_with_data(IotaObjectData::new( + object_ref, o, layout, options, None, + )?)) } - ObjectRead::Deleted((object_id, version, digest)) => Ok( - IotaObjectResponse::new_with_error(IotaObjectResponseError::Deleted { - object_id, - version, - digest, - }), - ), } - })); + ObjectRead::Deleted((object_id, version, digest)) => Ok( + IotaObjectResponse::new_with_error(IotaObjectResponseError::Deleted { + object_id, + version, + digest, + }), + ), + } + } + for obj in objects { + parallel_tasks.push(tokio::task::spawn(check_read_obj( + obj, + self.inner.clone(), + options.clone(), + ))); } let data = futures::future::join_all(parallel_tasks) .await .into_iter() .collect::, _>>() - .map_err(|e: tokio::task::JoinError| anyhow::anyhow!(e))? + .map_err(internal_error)? .into_iter() - .collect::, anyhow::Error>>()?; + .collect::, _>>() + .map_err(internal_error)?; Ok(Page { data, @@ -162,8 +172,7 @@ impl IndexerApiServer for IndexerApi { limit + 1, descending_order.unwrap_or(false), ) - .await - .map_err(|e: IndexerError| anyhow::anyhow!(e))?; + .await?; let has_next_page = results.len() > limit; results.truncate(limit); @@ -252,7 +261,8 @@ impl IndexerApiServer for IndexerApi { | iota_types::object::ObjectRead::Deleted(_) => {} iota_types::object::ObjectRead::Exists(object_ref, o, layout) => { return Ok(IotaObjectResponse::new_with_data( - (object_ref, o, layout, options, None).try_into()?, + IotaObjectData::new(object_ref, o, layout, options, None) + .map_err(internal_error)?, )); } } @@ -276,7 +286,8 @@ impl IndexerApiServer for IndexerApi { | iota_types::object::ObjectRead::Deleted(_) => {} iota_types::object::ObjectRead::Exists(object_ref, o, layout) => { return Ok(IotaObjectResponse::new_with_data( - (object_ref, o, layout, options, None).try_into()?, + IotaObjectData::new(object_ref, o, layout, options, None) + .map_err(internal_error)?, )); } } @@ -286,16 +297,13 @@ impl IndexerApiServer for IndexerApi { )) } - fn subscribe_event(&self, _sink: SubscriptionSink, _filter: EventFilter) -> SubscriptionResult { - Err(SubscriptionEmptyError) - } + async fn subscribe_event(&self, _sink: PendingSubscriptionSink, _filter: EventFilter) {} - fn subscribe_transaction( + async fn subscribe_transaction( &self, - _sink: SubscriptionSink, + _sink: PendingSubscriptionSink, _filter: TransactionFilter, - ) -> SubscriptionResult { - Err(SubscriptionEmptyError) + ) { } async fn resolve_name_service_address(&self, name: String) -> RpcResult> { diff --git a/crates/iota-indexer/src/apis/read_api.rs b/crates/iota-indexer/src/apis/read_api.rs index 1cf86ea9c78..4d36f377051 100644 --- a/crates/iota-indexer/src/apis/read_api.rs +++ b/crates/iota-indexer/src/apis/read_api.rs @@ -4,10 +4,10 @@ use async_trait::async_trait; use iota_json_rpc::{error::IotaRpcInputError, IotaRpcModule}; -use iota_json_rpc_api::{ReadApiServer, QUERY_MAX_RESULT_LIMIT}; +use iota_json_rpc_api::{internal_error, ReadApiServer, QUERY_MAX_RESULT_LIMIT}; use iota_json_rpc_types::{ Checkpoint, CheckpointId, CheckpointPage, IotaEvent, IotaGetPastObjectRequest, - IotaLoadedChildObjectsResponse, IotaObjectDataOptions, IotaObjectResponse, + IotaLoadedChildObjectsResponse, IotaObjectData, IotaObjectDataOptions, IotaObjectResponse, IotaPastObjectResponse, IotaTransactionBlockResponse, IotaTransactionBlockResponseOptions, ProtocolConfigResponse, }; @@ -84,7 +84,10 @@ impl ReadApiServer for ReadApi { Ok(rendered_fields) => display_fields = Some(rendered_fields), Err(e) => { return Ok(IotaObjectResponse::new( - Some((object_ref, o, layout, options, None).try_into()?), + Some( + IotaObjectData::new(object_ref, o, layout, options, None) + .map_err(internal_error)?, + ), Some(IotaObjectResponseError::DisplayError { error: e.to_string(), }), @@ -93,7 +96,8 @@ impl ReadApiServer for ReadApi { } } Ok(IotaObjectResponse::new_with_data( - (object_ref, o, layout, options, display_fields).try_into()?, + IotaObjectData::new(object_ref, o, layout, options, display_fields) + .map_err(internal_error)?, )) } ObjectRead::Deleted((object_id, version, digest)) => Ok( @@ -179,10 +183,7 @@ impl ReadApiServer for ReadApi { _version: SequenceNumber, _options: Option, ) -> RpcResult { - Err(jsonrpsee::types::error::CallError::Custom( - jsonrpsee::types::error::ErrorCode::MethodNotFound.into(), - ) - .into()) + Err(jsonrpsee::types::error::ErrorCode::MethodNotFound.into()) } async fn try_multi_get_past_objects( @@ -190,10 +191,7 @@ impl ReadApiServer for ReadApi { _past_objects: Vec, _options: Option, ) -> RpcResult> { - Err(jsonrpsee::types::error::CallError::Custom( - jsonrpsee::types::error::ErrorCode::MethodNotFound.into(), - ) - .into()) + Err(jsonrpsee::types::error::ErrorCode::MethodNotFound.into()) } async fn get_latest_checkpoint_sequence_number(&self) -> RpcResult> { @@ -202,7 +200,7 @@ impl ReadApiServer for ReadApi { } async fn get_checkpoint(&self, id: CheckpointId) -> RpcResult { - self.get_checkpoint(id).await.map_err(Into::into) + Ok(self.get_checkpoint(id).await?) } async fn get_checkpoints( @@ -260,10 +258,7 @@ impl ReadApiServer for ReadApi { &self, _digest: TransactionDigest, ) -> RpcResult { - Err(jsonrpsee::types::error::CallError::Custom( - jsonrpsee::types::error::ErrorCode::MethodNotFound.into(), - ) - .into()) + Err(jsonrpsee::types::error::ErrorCode::MethodNotFound.into()) } async fn get_protocol_config( diff --git a/crates/iota-indexer/src/apis/write_api.rs b/crates/iota-indexer/src/apis/write_api.rs index 40d57a3ca8c..e00f50c579d 100644 --- a/crates/iota-indexer/src/apis/write_api.rs +++ b/crates/iota-indexer/src/apis/write_api.rs @@ -5,7 +5,7 @@ use async_trait::async_trait; use fastcrypto::encoding::Base64; use iota_json_rpc::IotaRpcModule; -use iota_json_rpc_api::{WriteApiClient, WriteApiServer}; +use iota_json_rpc_api::{error_object_from_rpc, WriteApiClient, WriteApiServer}; use iota_json_rpc_types::{ DevInspectArgs, DevInspectResults, DryRunTransactionBlockResponse, IotaTransactionBlockResponse, IotaTransactionBlockResponseOptions, @@ -42,7 +42,8 @@ impl WriteApiServer for WriteApi { let iota_transaction_response = self .fullnode .execute_transaction_block(tx_bytes, signatures, options.clone(), request_type) - .await?; + .await + .map_err(error_object_from_rpc)?; Ok(IotaTransactionBlockResponseWithOptions { response: iota_transaction_response, options: options.unwrap_or_default(), @@ -67,13 +68,17 @@ impl WriteApiServer for WriteApi { additional_args, ) .await + .map_err(error_object_from_rpc) } async fn dry_run_transaction_block( &self, tx_bytes: Base64, ) -> RpcResult { - self.fullnode.dry_run_transaction_block(tx_bytes).await + self.fullnode + .dry_run_transaction_block(tx_bytes) + .await + .map_err(error_object_from_rpc) } } diff --git a/crates/iota-indexer/src/errors.rs b/crates/iota-indexer/src/errors.rs index 6f0299d1269..64226abd85d 100644 --- a/crates/iota-indexer/src/errors.rs +++ b/crates/iota-indexer/src/errors.rs @@ -4,11 +4,12 @@ use fastcrypto::error::FastCryptoError; use iota_json_rpc::name_service::NameServiceError; +use iota_json_rpc_api::{error_object_from_rpc, internal_error}; use iota_types::{ base_types::ObjectIDParseError, error::{IotaError, IotaObjectResponseError, UserInputError}, }; -use jsonrpsee::{core::Error as RpcError, types::error::CallError}; +use jsonrpsee::{core::ClientError as RpcError, types::ErrorObjectOwned}; use thiserror::Error; #[derive(Debug, Error)] @@ -146,7 +147,13 @@ impl Context for Result { impl From for RpcError { fn from(e: IndexerError) -> Self { - RpcError::Call(CallError::Failed(e.into())) + RpcError::Call(internal_error(e)) + } +} + +impl From for ErrorObjectOwned { + fn from(value: IndexerError) -> Self { + error_object_from_rpc(value.into()) } } diff --git a/crates/iota-indexer/src/indexer_reader.rs b/crates/iota-indexer/src/indexer_reader.rs index 05f96e35eaa..974f980dd94 100644 --- a/crates/iota-indexer/src/indexer_reader.rs +++ b/crates/iota-indexer/src/indexer_reader.rs @@ -1690,7 +1690,7 @@ impl move_bytecode_utils::module_cache::GetModule for IndexerReader { } #[cached( - type = "SizedCache>", + ty = "SizedCache>", create = "{ SizedCache::with_size(10000) }", convert = r#"{ format!("{}{}", package_id, obj_type) }"#, result = true diff --git a/crates/iota-indexer/src/lib.rs b/crates/iota-indexer/src/lib.rs index 05a2446d845..6431e147a2a 100644 --- a/crates/iota-indexer/src/lib.rs +++ b/crates/iota-indexer/src/lib.rs @@ -173,8 +173,7 @@ fn get_http_client(rpc_client_url: &str) -> Result { headers.insert(CLIENT_SDK_TYPE_HEADER, HeaderValue::from_static("indexer")); HttpClientBuilder::default() - .max_request_body_size(2 << 30) - .max_concurrent_requests(usize::MAX) + .max_request_size(2 << 30) .set_headers(headers.clone()) .build(rpc_client_url) .map_err(|e| { diff --git a/crates/iota-indexer/src/metrics.rs b/crates/iota-indexer/src/metrics.rs index 73cd36ae07b..804bd8c9e7f 100644 --- a/crates/iota-indexer/src/metrics.rs +++ b/crates/iota-indexer/src/metrics.rs @@ -38,8 +38,8 @@ pub fn start_prometheus_server( .layer(Extension(registry_service.clone())); tokio::spawn(async move { - axum::Server::bind(&addr) - .serve(app.into_make_service()) + let listener = tokio::net::TcpListener::bind(addr).await.unwrap(); + axum::serve(listener, app.into_make_service()) .await .unwrap(); }); diff --git a/crates/iota-json-rpc-api/src/indexer.rs b/crates/iota-json-rpc-api/src/indexer.rs index 6a2a9adf93a..99a1465ec2c 100644 --- a/crates/iota-json-rpc-api/src/indexer.rs +++ b/crates/iota-json-rpc-api/src/indexer.rs @@ -71,7 +71,7 @@ pub trait IndexerApi { /// Subscribe to a stream of Iota event #[rustfmt::skip] #[subscription(name = "subscribeEvent", item = IotaEvent)] - fn subscribe_event( + async fn subscribe_event( &self, /// The filter criteria of the event stream. See [Event filter](https://docs.iota.io/build/event_api#event-filters) documentation for examples. filter: EventFilter, @@ -79,7 +79,7 @@ pub trait IndexerApi { /// Subscribe to a stream of Iota transaction effects #[subscription(name = "subscribeTransaction", item = IotaTransactionBlockEffects)] - fn subscribe_transaction(&self, filter: TransactionFilter); + async fn subscribe_transaction(&self, filter: TransactionFilter); /// Return the list of dynamic field objects owned by an object. #[rustfmt::skip] diff --git a/crates/iota-json-rpc-api/src/lib.rs b/crates/iota-json-rpc-api/src/lib.rs index 4fc64c6fd18..e44501ff3de 100644 --- a/crates/iota-json-rpc-api/src/lib.rs +++ b/crates/iota-json-rpc-api/src/lib.rs @@ -7,6 +7,13 @@ pub use coin::{CoinReadApiClient, CoinReadApiOpenRpc, CoinReadApiServer}; pub use extended::{ExtendedApiClient, ExtendedApiOpenRpc, ExtendedApiServer}; pub use governance::{GovernanceReadApiClient, GovernanceReadApiOpenRpc, GovernanceReadApiServer}; pub use indexer::{IndexerApiClient, IndexerApiOpenRpc, IndexerApiServer}; +use jsonrpsee::{ + core::ClientError, + types::{ + error::{INTERNAL_ERROR_CODE, UNKNOWN_ERROR_CODE}, + ErrorObjectOwned, + }, +}; pub use move_utils::{MoveUtilsClient, MoveUtilsOpenRpc, MoveUtilsServer}; use mysten_metrics::histogram::Histogram; use once_cell::sync::Lazy; @@ -287,3 +294,16 @@ pub const CLIENT_TARGET_API_VERSION_HEADER: &str = "client-target-api-version"; pub const TRANSIENT_ERROR_CODE: i32 = -32050; pub const TRANSACTION_EXECUTION_CLIENT_ERROR_CODE: i32 = -32002; + +/// Convert a jsonrpsee client error into a generic error object. +pub fn error_object_from_rpc(rpc_err: ClientError) -> ErrorObjectOwned { + match rpc_err { + ClientError::Call(e) => ErrorObjectOwned::owned(e.code(), e.message().to_owned(), e.data()), + _ => ErrorObjectOwned::owned::<()>(UNKNOWN_ERROR_CODE, rpc_err.to_string(), None), + } +} + +/// Convert an internal error into a generic error object. +pub fn internal_error(err: impl ToString) -> ErrorObjectOwned { + ErrorObjectOwned::owned::<()>(INTERNAL_ERROR_CODE, err.to_string(), None) +} diff --git a/crates/iota-json-rpc-tests/tests/routing_tests.rs b/crates/iota-json-rpc-tests/tests/routing_tests.rs index 39044109fb4..c5a09fba202 100644 --- a/crates/iota-json-rpc-tests/tests/routing_tests.rs +++ b/crates/iota-json-rpc-tests/tests/routing_tests.rs @@ -35,7 +35,7 @@ async fn test_rpc_backward_compatibility() { // try to access old method directly should fail let client = HttpClientBuilder::default().build(&url).unwrap(); - let response: RpcResult = client.request("test_foo_1_5", rpc_params!("string")).await; + let response: Result = client.request("test_foo_1_5", rpc_params!("string")).await; assert!(response.is_err()); // Test with versioned client, version > backward compatible method version @@ -109,7 +109,7 @@ async fn test_disable_routing() { // try to access old method directly should fail let client = HttpClientBuilder::default().build(&url).unwrap(); - let response: RpcResult = client.request("test_foo_1_5", rpc_params!("string")).await; + let response: Result = client.request("test_foo_1_5", rpc_params!("string")).await; assert!(response.is_err()); // Test with versioned client, version = backward compatible method version, @@ -124,7 +124,7 @@ async fn test_disable_routing() { .build(&url) .unwrap(); - let response: RpcResult = client_with_new_header + let response: Result = client_with_new_header .request( "test_foo", rpc_params!("old version expect string as input"), @@ -133,76 +133,6 @@ async fn test_disable_routing() { assert!(response.is_err()); } -// TODO(chris): clean up this after March 27th, 2023 -// #[tokio::test] -// async fn test_rpc_backward_compatibility_batched_request() { -// let mut builder = JsonRpcServerBuilder::new("1.5", &Registry::new()); -// builder.register_module(TestApiModule).unwrap(); - -// let port = get_available_port("0.0.0.0"); -// let handle = builder -// .start(SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::LOCALHOST, port))) -// .await -// .unwrap(); -// let url = format!("http://0.0.0.0:{}", port); - -// // Test with un-versioned client -// let client = HttpClientBuilder::default().build(&url).unwrap(); - -// let mut builder = BatchRequestBuilder::default(); -// builder.insert("test_foo", rpc_params!(true)).unwrap(); -// builder.insert("test_foo", rpc_params!(true)).unwrap(); -// builder.insert("test_foo", rpc_params!(true)).unwrap(); - -// let response = client.batch_request::(builder).await.unwrap(); -// assert_eq!(3, response.num_successful_calls()); - -// // try to access old method directly should fail -// let mut builder = BatchRequestBuilder::default(); -// builder.insert("test_foo_1_5", rpc_params!(true)).unwrap(); -// builder.insert("test_foo", rpc_params!(true)).unwrap(); -// builder.insert("test_foo", rpc_params!(true)).unwrap(); - -// let response = client.batch_request::(builder).await.unwrap(); -// assert_eq!(2, response.num_successful_calls()); - -// // One malformed request shouldn't fail the whole batch -// let client = Client::new(); -// let response = client -// .post(format!("http://127.0.0.1:{}/", port)) -// .json(&vec![ -// json!(&Request { -// jsonrpc: Default::default(), -// id: Id::Number(1), -// method: "test_foo".into(), -// params: -// Some(&JsonRawValue::from_string("[true]".into()).unwrap()), }), -// json!("Bad json input"), -// ]) -// .send() -// .await -// .unwrap(); - -// let responses = response.text().await.unwrap(); -// let responses: Vec<&JsonRawValue> = -// serde_json::from_str(&responses).unwrap(); - -// // Should have 2 results -// assert_eq!(2, responses.len()); - -// // First response should success -// let response = -// serde_json::from_str::>(responses[0].get()); assert! -// (matches!(response, Ok(result) if result.result == "Some string")); - -// // Second response should fail -// let response = serde_json::from_str::(responses[1].get()); -// assert!(matches!(response, Ok(result) if result.error_object().message() -// == "Invalid request")); - -// handle.stop().unwrap() -// } - #[open_rpc(namespace = "test")] #[rpc(server, client, namespace = "test")] trait TestApi { diff --git a/crates/iota-json-rpc-types/src/iota_extended.rs b/crates/iota-json-rpc-types/src/iota_extended.rs index bf4e440d6b9..76580170e95 100644 --- a/crates/iota-json-rpc-types/src/iota_extended.rs +++ b/crates/iota-json-rpc-types/src/iota_extended.rs @@ -22,7 +22,7 @@ use crate::Page; pub type EpochPage = Page>; #[serde_as] -#[derive(Serialize, Deserialize, Debug, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)] #[serde(rename_all = "camelCase")] pub struct EpochInfo { /// epoch number @@ -58,7 +58,7 @@ impl EpochInfo { } #[serde_as] -#[derive(Serialize, Deserialize, Debug, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)] #[serde(rename_all = "camelCase")] pub struct EndOfEpochInfo { #[schemars(with = "BigInt")] diff --git a/crates/iota-json-rpc-types/src/iota_move.rs b/crates/iota-json-rpc-types/src/iota_move.rs index df886696c16..46be46da5df 100644 --- a/crates/iota-json-rpc-types/src/iota_move.rs +++ b/crates/iota-json-rpc-types/src/iota_move.rs @@ -39,7 +39,7 @@ pub type IotaMoveTypeParameterIndex = u16; #[path = "unit_tests/iota_move_tests.rs"] mod iota_move_tests; -#[derive(Serialize, Deserialize, Debug, JsonSchema)] +#[derive(Serialize, Deserialize, Copy, Clone, Debug, JsonSchema)] pub enum IotaMoveAbility { Copy, Drop, @@ -47,33 +47,33 @@ pub enum IotaMoveAbility { Key, } -#[derive(Serialize, Deserialize, Debug, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)] pub struct IotaMoveAbilitySet { pub abilities: Vec, } -#[derive(Serialize, Deserialize, Debug, JsonSchema)] +#[derive(Serialize, Deserialize, Copy, Clone, Debug, JsonSchema)] pub enum IotaMoveVisibility { Private, Public, Friend, } -#[derive(Serialize, Deserialize, Debug, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)] #[serde(rename_all = "camelCase")] pub struct IotaMoveStructTypeParameter { pub constraints: IotaMoveAbilitySet, pub is_phantom: bool, } -#[derive(Serialize, Deserialize, Debug, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)] pub struct IotaMoveNormalizedField { pub name: String, #[serde(rename = "type")] pub type_: IotaMoveNormalizedType, } -#[derive(Serialize, Deserialize, Debug, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)] #[serde(rename_all = "camelCase")] pub struct IotaMoveNormalizedStruct { pub abilities: IotaMoveAbilitySet, @@ -81,7 +81,7 @@ pub struct IotaMoveNormalizedStruct { pub fields: Vec, } -#[derive(Serialize, Deserialize, Debug, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)] pub enum IotaMoveNormalizedType { Bool, U8, @@ -105,7 +105,7 @@ pub enum IotaMoveNormalizedType { MutableReference(Box), } -#[derive(Serialize, Deserialize, Debug, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)] #[serde(rename_all = "camelCase")] pub struct IotaMoveNormalizedFunction { pub visibility: IotaMoveVisibility, @@ -115,13 +115,13 @@ pub struct IotaMoveNormalizedFunction { pub return_: Vec, } -#[derive(Serialize, Deserialize, Debug, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)] pub struct IotaMoveModuleId { address: String, name: String, } -#[derive(Serialize, Deserialize, Debug, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)] #[serde(rename_all = "camelCase")] pub struct IotaMoveNormalizedModule { pub file_format_version: u32, @@ -292,14 +292,14 @@ impl From for IotaMoveAbilitySet { } } -#[derive(Serialize, Deserialize, Debug, JsonSchema)] +#[derive(Serialize, Deserialize, Copy, Clone, Debug, JsonSchema)] pub enum ObjectValueKind { ByImmutableReference, ByMutableReference, ByValue, } -#[derive(Serialize, Deserialize, Debug, JsonSchema)] +#[derive(Serialize, Deserialize, Copy, Clone, Debug, JsonSchema)] pub enum MoveFunctionArgType { Pure, Object(ObjectValueKind), diff --git a/crates/iota-json-rpc-types/src/iota_object.rs b/crates/iota-json-rpc-types/src/iota_object.rs index 5ab605d1b2b..a29fba82a80 100644 --- a/crates/iota-json-rpc-types/src/iota_object.rs +++ b/crates/iota-json-rpc-types/src/iota_object.rs @@ -219,6 +219,88 @@ pub struct IotaObjectData { } impl IotaObjectData { + pub fn new( + object_ref: ObjectRef, + obj: Object, + layout: impl Into>, + options: IotaObjectDataOptions, + display_fields: impl Into>, + ) -> anyhow::Result { + let layout = layout.into(); + let display_fields = display_fields.into(); + let show_display = options.show_display; + let IotaObjectDataOptions { + show_type, + show_owner, + show_previous_transaction, + show_content, + show_bcs, + show_storage_rebate, + .. + } = options; + + let (object_id, version, digest) = object_ref; + let type_ = if show_type { + Some(Into::::into(&obj)) + } else { + None + }; + + let bcs: Option = if show_bcs { + let data = match obj.data.clone() { + Data::Move(m) => { + let layout = layout.clone().ok_or_else(|| { + anyhow!("Layout is required to convert Move object to json") + })?; + IotaRawData::try_from_object(m, layout)? + } + Data::Package(p) => IotaRawData::try_from_package(p) + .map_err(|e| anyhow!("Error getting raw data from package: {e:#?}"))?, + }; + Some(data) + } else { + None + }; + + let obj = obj.into_inner(); + + let content: Option = if show_content { + let data = match obj.data { + Data::Move(m) => { + let layout = layout.ok_or_else(|| { + anyhow!("Layout is required to convert Move object to json") + })?; + IotaParsedData::try_from_object(m, layout)? + } + Data::Package(p) => IotaParsedData::try_from_package(p)?, + }; + Some(data) + } else { + None + }; + + Ok(IotaObjectData { + object_id, + version, + digest, + type_, + owner: if show_owner { Some(obj.owner) } else { None }, + storage_rebate: if show_storage_rebate { + Some(obj.storage_rebate) + } else { + None + }, + previous_transaction: if show_previous_transaction { + Some(obj.previous_transaction) + } else { + None + }, + content, + bcs, + display: if show_display { display_fields } else { None }, + }) + } + pub fn object_ref(&self) -> ObjectRef { (self.object_id, self.version, self.digest) } @@ -426,10 +508,9 @@ impl TryFrom<(ObjectRead, IotaObjectDataOptions)> for IotaObjectResponse { ObjectRead::NotExists(id) => Ok(IotaObjectResponse::new_with_error( IotaObjectResponseError::NotExists { object_id: id }, )), - ObjectRead::Exists(object_ref, o, layout) => { - let data = (object_ref, o, layout, options).try_into()?; - Ok(IotaObjectResponse::new_with_data(data)) - } + ObjectRead::Exists(object_ref, o, layout) => Ok(IotaObjectResponse::new_with_data( + IotaObjectData::new(object_ref, o, layout, options, None)?, + )), ObjectRead::Deleted((object_id, version, digest)) => Ok( IotaObjectResponse::new_with_error(IotaObjectResponseError::Deleted { object_id, @@ -470,126 +551,6 @@ impl TryFrom<(ObjectInfo, IotaObjectDataOptions)> for IotaObjectResponse { } } -impl - TryFrom<( - ObjectRef, - Object, - Option, - IotaObjectDataOptions, - )> for IotaObjectData -{ - type Error = anyhow::Error; - - fn try_from( - (object_ref, o, layout, options): ( - ObjectRef, - Object, - Option, - IotaObjectDataOptions, - ), - ) -> Result { - let IotaObjectDataOptions { - show_type, - show_owner, - show_previous_transaction, - show_content, - show_bcs, - show_storage_rebate, - .. - } = options; - - let (object_id, version, digest) = object_ref; - let type_ = if show_type { - Some(Into::::into(&o)) - } else { - None - }; - - let bcs: Option = if show_bcs { - let data = match o.data.clone() { - Data::Move(m) => { - let layout = layout.clone().ok_or_else(|| { - anyhow!("Layout is required to convert Move object to json") - })?; - IotaRawData::try_from_object(m, layout)? - } - Data::Package(p) => IotaRawData::try_from_package(p) - .map_err(|e| anyhow!("Error getting raw data from package: {e:#?}"))?, - }; - Some(data) - } else { - None - }; - - let o = o.into_inner(); - - let content: Option = if show_content { - let data = match o.data { - Data::Move(m) => { - let layout = layout.ok_or_else(|| { - anyhow!("Layout is required to convert Move object to json") - })?; - IotaParsedData::try_from_object(m, layout)? - } - Data::Package(p) => IotaParsedData::try_from_package(p)?, - }; - Some(data) - } else { - None - }; - - Ok(IotaObjectData { - object_id, - version, - digest, - type_, - owner: if show_owner { Some(o.owner) } else { None }, - storage_rebate: if show_storage_rebate { - Some(o.storage_rebate) - } else { - None - }, - previous_transaction: if show_previous_transaction { - Some(o.previous_transaction) - } else { - None - }, - content, - bcs, - display: None, - }) - } -} - -impl - TryFrom<( - ObjectRef, - Object, - Option, - IotaObjectDataOptions, - Option, - )> for IotaObjectData -{ - type Error = anyhow::Error; - - fn try_from( - (object_ref, o, layout, options, display_fields): ( - ObjectRef, - Object, - Option, - IotaObjectDataOptions, - Option, - ), - ) -> Result { - let show_display = options.show_display; - let mut data: IotaObjectData = (object_ref, o, layout, options).try_into()?; - if show_display { - data.display = display_fields; - } - Ok(data) - } -} - impl IotaObjectResponse { /// Returns a reference to the object if there is any, otherwise an Err if /// the object does not exist or is deleted. diff --git a/crates/iota-json-rpc-types/src/iota_transaction.rs b/crates/iota-json-rpc-types/src/iota_transaction.rs index eadfe254f19..a54e0a84581 100644 --- a/crates/iota-json-rpc-types/src/iota_transaction.rs +++ b/crates/iota-json-rpc-types/src/iota_transaction.rs @@ -1950,7 +1950,7 @@ pub struct MoveCallParams { } #[serde_as] -#[derive(Serialize, Deserialize, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, JsonSchema)] #[serde(rename_all = "camelCase")] pub struct TransactionBlockBytes { /// BCS serialized transaction data bytes without its type tag, as base-64 diff --git a/crates/iota-json-rpc/Cargo.toml b/crates/iota-json-rpc/Cargo.toml index 4b00943549d..6cc8a070668 100644 --- a/crates/iota-json-rpc/Cargo.toml +++ b/crates/iota-json-rpc/Cargo.toml @@ -15,6 +15,7 @@ bcs.workspace = true eyre.workspace = true fastcrypto.workspace = true futures.workspace = true +http-body = "1.0.0" hyper.workspace = true indexmap.workspace = true itertools.workspace = true diff --git a/crates/iota-json-rpc/src/axum_router.rs b/crates/iota-json-rpc/src/axum_router.rs index 462d79eb8d0..07daa3d4b9d 100644 --- a/crates/iota-json-rpc/src/axum_router.rs +++ b/crates/iota-json-rpc/src/axum_router.rs @@ -4,27 +4,27 @@ use std::sync::Arc; -use axum::extract::{Json, State}; -use futures::StreamExt; +use axum::{ + body::Body, + extract::{Json, State}, +}; use hyper::HeaderMap; use iota_json_rpc_api::CLIENT_TARGET_API_VERSION_HEADER; use jsonrpsee::{ - core::server::{ - helpers::{BoundedSubscriptions, MethodResponse, MethodSink}, - rpc_module::{MethodKind, Methods}, - }, - server::{ - logger::{self, Logger, TransportProtocol}, - RandomIntegerIdProvider, - }, + core::server::{helpers::MethodSink, Methods}, + server::RandomIntegerIdProvider, types::{ error::{ErrorCode, BATCHES_NOT_SUPPORTED_CODE, BATCHES_NOT_SUPPORTED_MSG}, ErrorObject, Id, InvalidRequest, Params, Request, }, + BoundedSubscriptions, ConnectionId, Extensions, MethodCallback, MethodKind, MethodResponse, }; use serde_json::value::RawValue; -use crate::routing_layer::RpcRouter; +use crate::{ + logger::{Logger, TransportProtocol}, + routing_layer::RpcRouter, +}; pub const MAX_RESPONSE_SIZE: u32 = 2 << 30; @@ -36,15 +36,17 @@ pub struct JsonRpcService { /// Registered server methods. methods: Methods, + extensions: Extensions, rpc_router: RpcRouter, } impl JsonRpcService { - pub fn new(methods: Methods, rpc_router: RpcRouter, logger: L) -> Self { + pub fn new(methods: Methods, rpc_router: RpcRouter, logger: L, extensions: Extensions) -> Self { Self { methods, rpc_router, logger, + extensions, id_provider: Arc::new(RandomIntegerIdProvider), } } @@ -56,6 +58,7 @@ impl JsonRpcService { logger: &self.logger, methods: &self.methods, rpc_router: &self.rpc_router, + extensions: &self.extensions, max_response_body_size: MAX_RESPONSE_SIZE, request_start: self.logger.on_request(TransportProtocol::Http), } @@ -69,6 +72,7 @@ impl JsonRpcService { ws::WsCallData { logger: &self.logger, methods: &self.methods, + extensions: &self.extensions, max_response_body_size: MAX_RESPONSE_SIZE, request_start: self.logger.on_request(TransportProtocol::Http), bounded_subscriptions, @@ -79,11 +83,11 @@ impl JsonRpcService { } /// Create a response body. -fn from_template>( +fn from_template>( status: hyper::StatusCode, body: S, content_type: &'static str, -) -> hyper::Response { +) -> hyper::Response { hyper::Response::builder() .status(status) .header( @@ -97,7 +101,7 @@ fn from_template>( } /// Create a valid JSON response. -pub(crate) fn ok_response(body: String) -> hyper::Response { +pub(crate) fn ok_response(body: String) -> hyper::Response { const JSON: &str = "application/json; charset=utf-8"; from_template(hyper::StatusCode::OK, body, JSON) } @@ -113,7 +117,7 @@ pub async fn json_rpc_handler( .and_then(|h| h.to_str().ok()); let response = process_raw_request(&service, api_version, raw_request.get()).await; - ok_response(response.result) + ok_response(response.into_result()) } async fn process_raw_request( @@ -126,7 +130,7 @@ async fn process_raw_request( } else if let Ok(_batch) = serde_json::from_str::>(raw_request) { MethodResponse::error( Id::Null, - ErrorObject::borrowed(BATCHES_NOT_SUPPORTED_CODE, &BATCHES_NOT_SUPPORTED_MSG, None), + ErrorObject::borrowed(BATCHES_NOT_SUPPORTED_CODE, BATCHES_NOT_SUPPORTED_MSG, None), ) } else { let (id, code) = prepare_error(raw_request); @@ -143,12 +147,13 @@ async fn process_request( methods, rpc_router, logger, + extensions, max_response_body_size, request_start, } = call; - let conn_id = 0; // unused + let conn_id = ConnectionId(0); // unused - let params = Params::new(req.params.map(|params| params.get())); + let params = Params::new(req.params.as_ref().map(|params| params.get())); let name = rpc_router.route(&req.method, api_version); let id = req.id; @@ -157,39 +162,51 @@ async fn process_request( logger.on_call( name, params.clone(), - logger::MethodKind::Unknown, + MethodKind::NotFound, TransportProtocol::Http, ); MethodResponse::error(id, ErrorObject::from(ErrorCode::MethodNotFound)) } - Some((name, method)) => match method.inner() { - MethodKind::Sync(callback) => { + Some((name, method)) => match method { + MethodCallback::Sync(callback) => { logger.on_call( name, params.clone(), - logger::MethodKind::MethodCall, + MethodKind::MethodCall, TransportProtocol::Http, ); - (callback)(id, params, max_response_body_size as usize) + (callback)( + id, + params, + max_response_body_size as usize, + extensions.clone(), + ) } - MethodKind::Async(callback) => { + MethodCallback::Async(callback) => { logger.on_call( name, params.clone(), - logger::MethodKind::MethodCall, + MethodKind::MethodCall, TransportProtocol::Http, ); let id = id.into_owned(); let params = params.into_owned(); - (callback)(id, params, conn_id, max_response_body_size as usize, None).await + (callback)( + id, + params, + conn_id, + max_response_body_size as usize, + extensions.clone(), + ) + .await } - MethodKind::Subscription(_) | MethodKind::Unsubscription(_) => { + MethodCallback::Subscription(_) | MethodCallback::Unsubscription(_) => { logger.on_call( name, params.clone(), - logger::MethodKind::Unknown, + MethodKind::NotFound, TransportProtocol::Http, ); // Subscriptions not supported on HTTP @@ -200,8 +217,8 @@ async fn process_request( logger.on_result( name, - response.success, - response.error_code, + response.is_success(), + response.as_error_code(), request_start, TransportProtocol::Http, ); @@ -222,6 +239,7 @@ pub(crate) struct CallData<'a, L: Logger> { logger: &'a L, methods: &'a Methods, rpc_router: &'a RpcRouter, + extensions: &'a Extensions, max_response_body_size: u32, request_start: L::Instant, } @@ -234,23 +252,22 @@ pub mod ws { }, response::Response, }; - use futures::channel::mpsc; use jsonrpsee::{ - core::server::{ - helpers::{BoundedSubscriptions, MethodSink}, - rpc_module::ConnState, - }, - server::IdProvider, - types::error::reject_too_many_subscriptions, + core::server::helpers::MethodSink, server::IdProvider, + types::error::reject_too_many_subscriptions, SubscriptionState, }; + use tokio::sync::mpsc; use super::*; + const MAX_WS_MESSAGE_BUFFER: usize = 100; + #[derive(Debug, Clone)] pub(crate) struct WsCallData<'a, L: Logger> { pub bounded_subscriptions: BoundedSubscriptions, pub id_provider: &'a dyn IdProvider, pub methods: &'a Methods, + pub extensions: &'a Extensions, pub max_response_body_size: u32, pub sink: &'a MethodSink, pub logger: &'a L, @@ -270,8 +287,8 @@ pub mod ws { async fn ws_json_rpc_handler(mut socket: WebSocket, service: JsonRpcService) { #[allow(clippy::disallowed_methods)] - let (tx, mut rx) = mpsc::unbounded::(); - let sink = MethodSink::new_with_limit(tx, MAX_RESPONSE_SIZE, MAX_RESPONSE_SIZE); + let (tx, mut rx) = mpsc::channel::(MAX_WS_MESSAGE_BUFFER); + let sink = MethodSink::new_with_limit(tx, MAX_RESPONSE_SIZE); let bounded_subscriptions = BoundedSubscriptions::new(100); loop { @@ -282,14 +299,14 @@ pub mod ws { let response = process_raw_request(&service, &msg, bounded_subscriptions.clone(), &sink).await; if let Some(response) = response { - let _ = sink.send_raw(response.result); + sink.send(response.into_result()).await.ok(); } } } else { break; } }, - Some(response) = rx.next() => { + Some(response) = rx.recv() => { if socket.send(Message::Text(response)).await.is_err() { break; } @@ -309,7 +326,7 @@ pub mod ws { } else if let Ok(_batch) = serde_json::from_str::>(raw_request) { Some(MethodResponse::error( Id::Null, - ErrorObject::borrowed(BATCHES_NOT_SUPPORTED_CODE, &BATCHES_NOT_SUPPORTED_MSG, None), + ErrorObject::borrowed(BATCHES_NOT_SUPPORTED_CODE, BATCHES_NOT_SUPPORTED_MSG, None), )) } else { let (id, code) = prepare_error(raw_request); @@ -324,15 +341,16 @@ pub mod ws { let WsCallData { methods, logger, + extensions, max_response_body_size, request_start, bounded_subscriptions, id_provider, sink, } = call; - let conn_id = 0; // unused + let conn_id = ConnectionId(0); // unused - let params = Params::new(req.params.map(|params| params.get())); + let params = Params::new(req.params.as_ref().map(|params| params.get())); let name = &req.method; let id = req.id; @@ -341,7 +359,7 @@ pub mod ws { logger.on_call( name, params.clone(), - logger::MethodKind::Unknown, + MethodKind::NotFound, TransportProtocol::Http, ); Some(MethodResponse::error( @@ -349,47 +367,67 @@ pub mod ws { ErrorObject::from(ErrorCode::MethodNotFound), )) } - Some((name, method)) => match method.inner() { - MethodKind::Sync(callback) => { + Some((name, method)) => match method { + MethodCallback::Sync(callback) => { logger.on_call( name, params.clone(), - logger::MethodKind::MethodCall, + MethodKind::MethodCall, TransportProtocol::Http, ); - Some((callback)(id, params, max_response_body_size as usize)) + tracing::info!("calling {name} sync"); + Some((callback)( + id, + params, + max_response_body_size as usize, + extensions.clone(), + )) } - MethodKind::Async(callback) => { + MethodCallback::Async(callback) => { logger.on_call( name, params.clone(), - logger::MethodKind::MethodCall, + MethodKind::MethodCall, TransportProtocol::Http, ); let id = id.into_owned(); let params = params.into_owned(); + tracing::info!("calling {name} async"); Some( - (callback)(id, params, conn_id, max_response_body_size as usize, None) - .await, + (callback)( + id, + params, + conn_id, + max_response_body_size as usize, + extensions.clone(), + ) + .await, ) } - MethodKind::Subscription(callback) => { + MethodCallback::Subscription(callback) => { logger.on_call( name, params.clone(), - logger::MethodKind::Subscription, + MethodKind::Subscription, TransportProtocol::WebSocket, ); - if let Some(cn) = bounded_subscriptions.acquire() { - let conn_state = ConnState { + if let Some(subscription_permit) = bounded_subscriptions.acquire() { + let conn_state = SubscriptionState { conn_id, - close_notify: cn, + subscription_permit, id_provider, }; - callback(id.clone(), params, sink.clone(), conn_state, None).await; + (callback)( + id.clone(), + params, + sink.clone(), + conn_state, + extensions.clone(), + ) + .await; None } else { Some(MethodResponse::error( @@ -399,11 +437,11 @@ pub mod ws { } } - MethodKind::Unsubscription(callback) => { + MethodCallback::Unsubscription(callback) => { logger.on_call( name, params.clone(), - logger::MethodKind::Unsubscription, + MethodKind::Unsubscription, TransportProtocol::WebSocket, ); @@ -412,6 +450,7 @@ pub mod ws { params, conn_id, max_response_body_size as usize, + extensions.clone(), )) } }, @@ -420,8 +459,8 @@ pub mod ws { if let Some(response) = &response { logger.on_result( name, - response.success, - response.error_code, + response.is_success(), + response.as_error_code(), request_start, TransportProtocol::WebSocket, ); diff --git a/crates/iota-json-rpc/src/coin_api.rs b/crates/iota-json-rpc/src/coin_api.rs index 8781f055de5..238e6ba1ff4 100644 --- a/crates/iota-json-rpc/src/coin_api.rs +++ b/crates/iota-json-rpc/src/coin_api.rs @@ -27,12 +27,13 @@ use mockall::automock; use move_core_types::language_storage::{StructTag, TypeTag}; use mysten_metrics::spawn_monitored_task; use tap::TapFallible; -use tracing::{debug, info, instrument}; +use tracing::{debug, instrument}; use crate::{ authority_state::StateRead, error::{Error, IotaRpcInputError, RpcInterimResult}, - with_tracing, IotaRpcModule, + logger::with_tracing, + IotaRpcModule, }; pub fn parse_to_struct_tag(coin_type: &str) -> Result { @@ -89,22 +90,26 @@ impl CoinReadApiServer for CoinReadApi { cursor: Option, limit: Option, ) -> RpcResult { - with_tracing!(async move { - let coin_type_tag = parse_to_type_tag(coin_type)?; - - let cursor = match cursor { - Some(c) => (coin_type_tag.to_string(), c), - // If cursor is not specified, we need to start from the beginning of the coin type, - // which is the minimal possible ObjectID. - None => (coin_type_tag.to_string(), ObjectID::ZERO), - }; - - self.internal - .get_coins_iterator( - owner, cursor, limit, true, // only care about one type of coin - ) - .await - }) + with_tracing( + async move { + let coin_type_tag = parse_to_type_tag(coin_type)?; + + let cursor = match cursor { + Some(c) => (coin_type_tag.to_string(), c), + // If cursor is not specified, we need to start from the beginning of the coin + // type, which is the minimal possible ObjectID. + None => (coin_type_tag.to_string(), ObjectID::ZERO), + }; + + self.internal + .get_coins_iterator( + owner, cursor, limit, true, // only care about one type of coin + ) + .await + }, + None, + ) + .await } #[instrument(skip(self))] @@ -115,41 +120,45 @@ impl CoinReadApiServer for CoinReadApi { cursor: Option, limit: Option, ) -> RpcResult { - with_tracing!(async move { - let cursor = match cursor { - Some(object_id) => { - let obj = self.internal.get_object(&object_id).await?; - match obj { - Some(obj) => { - let coin_type = obj.coin_type_maybe(); - if coin_type.is_none() { - Err(IotaRpcInputError::GenericInvalid( - "cursor is not a coin".to_string(), - )) - } else { - Ok((coin_type.unwrap().to_string(), object_id)) + with_tracing( + async move { + let cursor = match cursor { + Some(object_id) => { + let obj = self.internal.get_object(&object_id).await?; + match obj { + Some(obj) => { + let coin_type = obj.coin_type_maybe(); + if coin_type.is_none() { + Err(IotaRpcInputError::GenericInvalid( + "cursor is not a coin".to_string(), + )) + } else { + Ok((coin_type.unwrap().to_string(), object_id)) + } } + None => Err(IotaRpcInputError::GenericInvalid( + "cursor not found".to_string(), + )), } - None => Err(IotaRpcInputError::GenericInvalid( - "cursor not found".to_string(), - )), } - } - None => { - // If cursor is None, start from the beginning - Ok((String::from_utf8([0u8].to_vec()).unwrap(), ObjectID::ZERO)) - } - }?; + None => { + // If cursor is None, start from the beginning + Ok((String::from_utf8([0u8].to_vec()).unwrap(), ObjectID::ZERO)) + } + }?; - let coins = self - .internal - .get_coins_iterator( - owner, cursor, limit, false, // return all types of coins - ) - .await?; + let coins = self + .internal + .get_coins_iterator( + owner, cursor, limit, false, // return all types of coins + ) + .await?; - Ok(coins) - }) + Ok(coins) + }, + None, + ) + .await } #[instrument(skip(self))] @@ -158,95 +167,111 @@ impl CoinReadApiServer for CoinReadApi { owner: IotaAddress, coin_type: Option, ) -> RpcResult { - with_tracing!(async move { - let coin_type_tag = parse_to_type_tag(coin_type)?; - let balance = self - .internal - .get_balance(owner, coin_type_tag.clone()) - .await - .tap_err(|e| { - debug!(?owner, "Failed to get balance with error: {:?}", e); - })?; - Ok(Balance { - coin_type: coin_type_tag.to_string(), - coin_object_count: balance.num_coins as usize, - total_balance: balance.balance as u128, - // note: LockedCoin is deprecated - locked_balance: Default::default(), - }) - }) + with_tracing( + async move { + let coin_type_tag = parse_to_type_tag(coin_type)?; + let balance = self + .internal + .get_balance(owner, coin_type_tag.clone()) + .await + .tap_err(|e| { + debug!(?owner, "Failed to get balance with error: {:?}", e); + })?; + Ok(Balance { + coin_type: coin_type_tag.to_string(), + coin_object_count: balance.num_coins as usize, + total_balance: balance.balance as u128, + // note: LockedCoin is deprecated + locked_balance: Default::default(), + }) + }, + None, + ) + .await } #[instrument(skip(self))] async fn get_all_balances(&self, owner: IotaAddress) -> RpcResult> { - with_tracing!(async move { - let all_balance = self.internal.get_all_balance(owner).await.tap_err(|e| { - debug!(?owner, "Failed to get all balance with error: {:?}", e); - })?; - Ok(all_balance - .iter() - .map(|(coin_type, balance)| { - Balance { - coin_type: coin_type.to_string(), - coin_object_count: balance.num_coins as usize, - total_balance: balance.balance as u128, - // note: LockedCoin is deprecated - locked_balance: Default::default(), - } - }) - .collect()) - }) + with_tracing( + async move { + let all_balance = self.internal.get_all_balance(owner).await.tap_err(|e| { + debug!(?owner, "Failed to get all balance with error: {:?}", e); + })?; + Ok(all_balance + .iter() + .map(|(coin_type, balance)| { + Balance { + coin_type: coin_type.to_string(), + coin_object_count: balance.num_coins as usize, + total_balance: balance.balance as u128, + // note: LockedCoin is deprecated + locked_balance: Default::default(), + } + }) + .collect()) + }, + None, + ) + .await } #[instrument(skip(self))] async fn get_coin_metadata(&self, coin_type: String) -> RpcResult> { - with_tracing!(async move { - let coin_struct = parse_to_struct_tag(&coin_type)?; - let metadata_object = self - .internal - .find_package_object( - &coin_struct.address.into(), - CoinMetadata::type_(coin_struct), - ) - .await - .ok(); - Ok(metadata_object.and_then(|v: Object| v.try_into().ok())) - }) + with_tracing( + async move { + let coin_struct = parse_to_struct_tag(&coin_type)?; + let metadata_object = self + .internal + .find_package_object( + &coin_struct.address.into(), + CoinMetadata::type_(coin_struct), + ) + .await + .ok(); + Ok(metadata_object.and_then(|v: Object| v.try_into().ok())) + }, + None, + ) + .await } #[instrument(skip(self))] async fn get_total_supply(&self, coin_type: String) -> RpcResult { - with_tracing!(async move { - let coin_struct = parse_to_struct_tag(&coin_type)?; - Ok(if GAS::is_gas(&coin_struct) { - let system_state_summary = self - .internal - .get_state() - .get_system_state()? - .into_iota_system_state_summary(); - Supply { - value: system_state_summary.iota_total_supply, - } - } else { - let treasury_cap_object = self - .internal - .find_package_object( - &coin_struct.address.into(), - TreasuryCap::type_(coin_struct), + with_tracing( + async move { + let coin_struct = parse_to_struct_tag(&coin_type)?; + Ok(if GAS::is_gas(&coin_struct) { + let system_state_summary = self + .internal + .get_state() + .get_system_state()? + .into_iota_system_state_summary(); + Supply { + value: system_state_summary.iota_total_supply, + } + } else { + let treasury_cap_object = self + .internal + .find_package_object( + &coin_struct.address.into(), + TreasuryCap::type_(coin_struct), + ) + .await?; + let treasury_cap = TreasuryCap::from_bcs_bytes( + treasury_cap_object.data.try_as_move().unwrap().contents(), ) - .await?; - let treasury_cap = TreasuryCap::from_bcs_bytes( - treasury_cap_object.data.try_as_move().unwrap().contents(), - ) - .map_err(Error::from)?; - treasury_cap.total_supply - }) - }) + .map_err(Error::from)?; + treasury_cap.total_supply + }) + }, + None, + ) + .await } } #[cached( - type = "SizedCache", + ty = "SizedCache", create = "{ SizedCache::with_size(10000) }", convert = r#"{ format!("{}{}", package_id, object_struct_tag) }"#, result = true @@ -428,7 +453,6 @@ mod tests { utils::create_fake_transaction, TypeTag, }; - use jsonrpsee::types::ErrorObjectOwned; use mockall::{mock, predicate}; use move_core_types::{account_address::AccountAddress, language_storage::StructTag}; @@ -567,7 +591,6 @@ mod tests { } mod get_coins_tests { - use jsonrpsee::types::ErrorObjectOwned; use super::{super::*, *}; @@ -735,13 +758,12 @@ mod tests { assert!(response.is_err()); let error_result = response.unwrap_err(); - let error_object: ErrorObjectOwned = error_result.into(); let expected = expect!["-32602"]; - expected.assert_eq(&error_object.code().to_string()); + expected.assert_eq(&error_result.code().to_string()); let expected = expect![ "Invalid struct type: 0x2::invalid::struct::tag. Got error: Expected end of token stream. Got: ::" ]; - expected.assert_eq(error_object.message()); + expected.assert_eq(error_result.message()); } #[tokio::test] @@ -756,12 +778,11 @@ mod tests { assert!(response.is_err()); let error_result = response.unwrap_err(); - let error_object: ErrorObjectOwned = error_result.into(); let expected = expect!["-32602"]; - expected.assert_eq(&error_object.code().to_string()); + expected.assert_eq(&error_result.code().to_string()); let expected = expect!["Invalid struct type: 0x2::iota:🤵. Got error: unrecognized token: :🤵"]; - expected.assert_eq(error_object.message()); + expected.assert_eq(error_result.message()); } // Unexpected error scenarios @@ -784,13 +805,12 @@ mod tests { assert!(response.is_err()); let error_result = response.unwrap_err(); - let error_object: ErrorObjectOwned = error_result.into(); assert_eq!( - error_object.code(), + error_result.code(), jsonrpsee::types::error::INVALID_PARAMS_CODE ); let expected = expect!["Index store not available on this Fullnode."]; - expected.assert_eq(error_object.message()); + expected.assert_eq(error_result.message()); } #[tokio::test] @@ -810,13 +830,12 @@ mod tests { assert!(response.is_err()); let error_result = response.unwrap_err(); - let error_object: ErrorObjectOwned = error_result.into(); assert_eq!( - error_object.code(), + error_result.code(), jsonrpsee::types::error::INTERNAL_ERROR_CODE ); let expected = expect!["Storage error: mock rocksdb error"]; - expected.assert_eq(error_object.message()); + expected.assert_eq(error_result.message()); } } @@ -913,12 +932,11 @@ mod tests { assert!(response.is_err()); let error_result = response.unwrap_err(); - let error_object: ErrorObjectOwned = error_result.into(); - assert_eq!(error_object.code(), -32602); + assert_eq!(error_result.code(), -32602); let expected = expect!["-32602"]; - expected.assert_eq(&error_object.code().to_string()); + expected.assert_eq(&error_result.code().to_string()); let expected = expect!["cursor is not a coin"]; - expected.assert_eq(error_object.message()); + expected.assert_eq(error_result.message()); } #[tokio::test] @@ -935,16 +953,14 @@ mod tests { assert!(response.is_err()); let error_result = response.unwrap_err(); - let error_object: ErrorObjectOwned = error_result.into(); let expected = expect!["-32602"]; - expected.assert_eq(&error_object.code().to_string()); + expected.assert_eq(&error_result.code().to_string()); let expected = expect!["cursor not found"]; - expected.assert_eq(error_object.message()); + expected.assert_eq(error_result.message()); } } mod get_balance_tests { - use jsonrpsee::types::ErrorObjectOwned; use super::{super::*, *}; // Success scenarios @@ -1031,13 +1047,12 @@ mod tests { assert!(response.is_err()); let error_result = response.unwrap_err(); - let error_object: ErrorObjectOwned = error_result.into(); let expected = expect!["-32602"]; - expected.assert_eq(&error_object.code().to_string()); + expected.assert_eq(&error_result.code().to_string()); let expected = expect![ "Invalid struct type: 0x2::invalid::struct::tag. Got error: Expected end of token stream. Got: ::" ]; - expected.assert_eq(error_object.message()); + expected.assert_eq(error_result.message()); } // Unexpected error scenarios @@ -1058,13 +1073,12 @@ mod tests { assert!(response.is_err()); let error_result = response.unwrap_err(); - let error_object: ErrorObjectOwned = error_result.into(); assert_eq!( - error_object.code(), + error_result.code(), jsonrpsee::types::error::INVALID_PARAMS_CODE ); let expected = expect!["Index store not available on this Fullnode."]; - expected.assert_eq(error_object.message()); + expected.assert_eq(error_result.message()); } #[tokio::test] @@ -1084,19 +1098,17 @@ mod tests { assert!(response.is_err()); let error_result = response.unwrap_err(); - let error_object: ErrorObjectOwned = error_result.into(); assert_eq!( - error_object.code(), + error_result.code(), jsonrpsee::types::error::INTERNAL_ERROR_CODE ); let expected = expect!["Error executing mock db error"]; - expected.assert_eq(error_object.message()); + expected.assert_eq(error_result.message()); } } mod get_all_balances_tests { - use jsonrpsee::types::ErrorObjectOwned; use super::{super::*, *}; @@ -1176,13 +1188,12 @@ mod tests { assert!(response.is_err()); let error_result = response.unwrap_err(); - let error_object: ErrorObjectOwned = error_result.into(); assert_eq!( - error_object.code(), + error_result.code(), jsonrpsee::types::error::INVALID_PARAMS_CODE ); let expected = expect!["Index store not available on this Fullnode."]; - expected.assert_eq(error_object.message()); + expected.assert_eq(error_result.message()); } } @@ -1377,13 +1388,12 @@ mod tests { assert!(response.is_err()); let error_result = response.unwrap_err(); - let error_object: ErrorObjectOwned = error_result.into(); let expected = expect!["-32602"]; - expected.assert_eq(&error_object.code().to_string()); + expected.assert_eq(&error_result.code().to_string()); let expected = expect![ "Cannot find object [0x2::coin::TreasuryCap<0xf::test_coin::TEST_COIN>] from [0x000000000000000000000000000000000000000000000000000000000000000f] package event." ]; - expected.assert_eq(error_object.message()); + expected.assert_eq(error_result.message()); } #[tokio::test] @@ -1419,15 +1429,14 @@ mod tests { let response = coin_read_api.get_total_supply(coin_name.clone()).await; let error_result = response.unwrap_err(); - let error_object: ErrorObjectOwned = error_result.into(); assert_eq!( - error_object.code(), + error_result.code(), jsonrpsee::types::error::CALL_EXECUTION_FAILED_CODE ); let expected = expect![ "Failure deserializing object in the requested format: \"Unable to deserialize TreasuryCap object: remaining input\"" ]; - expected.assert_eq(error_object.message()); + expected.assert_eq(error_result.message()); } fn default_system_state() -> IotaSystemStateInnerV1 { diff --git a/crates/iota-json-rpc/src/error.rs b/crates/iota-json-rpc/src/error.rs index c5ed40942fc..80b3235a5e2 100644 --- a/crates/iota-json-rpc/src/error.rs +++ b/crates/iota-json-rpc/src/error.rs @@ -6,17 +6,19 @@ use std::collections::BTreeMap; use fastcrypto::error::FastCryptoError; use hyper::header::InvalidHeaderValue; -use iota_json_rpc_api::{TRANSACTION_EXECUTION_CLIENT_ERROR_CODE, TRANSIENT_ERROR_CODE}; +use iota_json_rpc_api::{ + error_object_from_rpc, TRANSACTION_EXECUTION_CLIENT_ERROR_CODE, TRANSIENT_ERROR_CODE, +}; use iota_types::{ error::{IotaError, IotaObjectResponseError, UserInputError}, quorum_driver_types::QuorumDriverError, }; use itertools::Itertools; use jsonrpsee::{ - core::Error as RpcError, + core::{ClientError as RpcError, RegisterMethodError}, types::{ - error::{CallError, INTERNAL_ERROR_CODE}, - ErrorObject, + error::{ErrorCode, CALL_EXECUTION_FAILED_CODE, INTERNAL_ERROR_CODE}, + ErrorObject, ErrorObjectOwned, }, }; use thiserror::Error; @@ -40,7 +42,9 @@ pub enum Error { UnexpectedError(String), #[error(transparent)] - RPCServerError(#[from] jsonrpsee::core::Error), + RPCServerError(#[from] RpcError), + #[error(transparent)] + RPCRegisterMethodError(#[from] RegisterMethodError), #[error(transparent)] InvalidHeaderValue(#[from] InvalidHeaderValue), @@ -95,16 +99,25 @@ impl From for RpcError { /// `InvalidParams`/`INVALID_PARAMS_CODE` for client errors. fn from(e: Error) -> RpcError { match e { - Error::UserInputError(_) => RpcError::Call(CallError::InvalidParams(e.into())), - Error::UnsupportedFeature(_) => RpcError::Call(CallError::InvalidParams(e.into())), + Error::UserInputError(_) | Error::UnsupportedFeature(_) => RpcError::Call( + ErrorObject::owned::<()>(ErrorCode::InvalidRequest.code(), e.to_string(), None), + ), Error::IotaObjectResponseError(err) => match err { IotaObjectResponseError::NotExists { .. } | IotaObjectResponseError::DynamicFieldNotFound { .. } | IotaObjectResponseError::Deleted { .. } | IotaObjectResponseError::DisplayError { .. } => { - RpcError::Call(CallError::InvalidParams(err.into())) + RpcError::Call(ErrorObject::owned::<()>( + ErrorCode::InvalidParams.code(), + err.to_string(), + None, + )) } - _ => RpcError::Call(CallError::Failed(err.into())), + _ => RpcError::Call(ErrorObject::owned::<()>( + CALL_EXECUTION_FAILED_CODE, + err.to_string(), + None, + )), }, Error::NameServiceError(err) => match err { NameServiceError::ExceedsMaxLength { .. } @@ -113,28 +126,52 @@ impl From for RpcError { | NameServiceError::InvalidUnderscore { .. } | NameServiceError::LabelsEmpty { .. } | NameServiceError::InvalidSeparator { .. } => { - RpcError::Call(CallError::InvalidParams(err.into())) + RpcError::Call(ErrorObject::owned::<()>( + ErrorCode::InvalidParams.code(), + err.to_string(), + None, + )) } - _ => RpcError::Call(CallError::Failed(err.into())), + _ => RpcError::Call(ErrorObject::owned::<()>( + CALL_EXECUTION_FAILED_CODE, + err.to_string(), + None, + )), }, - Error::IotaRpcInputError(err) => RpcError::Call(CallError::InvalidParams(err.into())), + Error::IotaRpcInputError(err) => RpcError::Call(ErrorObject::owned::<()>( + ErrorCode::InvalidParams.code(), + err.to_string(), + None, + )), Error::IotaError(iota_error) => match iota_error { IotaError::TransactionNotFound { .. } | IotaError::TransactionsNotFound { .. } | IotaError::TransactionEventsNotFound { .. } => { - RpcError::Call(CallError::InvalidParams(iota_error.into())) + RpcError::Call(ErrorObject::owned::<()>( + ErrorCode::InvalidParams.code(), + iota_error.to_string(), + None, + )) } - _ => RpcError::Call(CallError::Failed(iota_error.into())), + _ => RpcError::Call(ErrorObject::owned::<()>( + CALL_EXECUTION_FAILED_CODE, + iota_error.to_string(), + None, + )), }, Error::StateReadError(err) => match err { - StateReadError::Client(_) => RpcError::Call(CallError::InvalidParams(err.into())), + StateReadError::Client(_) => RpcError::Call(ErrorObject::owned::<()>( + ErrorCode::InvalidParams.code(), + err.to_string(), + None, + )), _ => { - let error_object = ErrorObject::owned( + let error_object = ErrorObject::owned::<()>( jsonrpsee::types::error::INTERNAL_ERROR_CODE, err.to_string(), - None::<()>, + None, ); - RpcError::Call(CallError::Custom(error_object)) + RpcError::Call(error_object) } }, Error::QuorumDriverError(err) => { @@ -149,26 +186,26 @@ impl From for RpcError { let error_message = format!("Invalid user signature: {inner_error_str}"); - let error_object = ErrorObject::owned( + let error_object = ErrorObject::owned::<()>( TRANSACTION_EXECUTION_CLIENT_ERROR_CODE, error_message, - None::<()>, + None, ); - RpcError::Call(CallError::Custom(error_object)) + RpcError::Call(error_object) } QuorumDriverError::TxAlreadyFinalizedWithDifferentUserSignatures => { - let error_object = ErrorObject::owned( + let error_object = ErrorObject::owned::<()>( TRANSACTION_EXECUTION_CLIENT_ERROR_CODE, "The transaction is already finalized but with different user signatures", - None::<()>, + None, ); - RpcError::Call(CallError::Custom(error_object)) + RpcError::Call(error_object) } QuorumDriverError::TimeoutBeforeFinality | QuorumDriverError::FailedWithTransientErrorAfterMaximumAttempts { .. } => { let error_object = - ErrorObject::owned(TRANSIENT_ERROR_CODE, err.to_string(), None::<()>); - RpcError::Call(CallError::Custom(error_object)) + ErrorObject::owned::<()>(TRANSIENT_ERROR_CODE, err.to_string(), None); + RpcError::Call(error_object) } QuorumDriverError::ObjectsDoubleUsed { conflicting_txes, @@ -195,7 +232,7 @@ impl From for RpcError { error_message, Some(new_map), ); - RpcError::Call(CallError::Custom(error_object)) + RpcError::Call(error_object) } QuorumDriverError::NonRecoverableTransactionError { errors } => { let new_errors: Vec = errors @@ -238,30 +275,34 @@ impl From for RpcError { error_list ); - let error_object = ErrorObject::owned( + let error_object = ErrorObject::owned::<()>( TRANSACTION_EXECUTION_CLIENT_ERROR_CODE, error_msg, - None::<()>, + None, ); - RpcError::Call(CallError::Custom(error_object)) + RpcError::Call(error_object) } QuorumDriverError::QuorumDriverInternalError(_) => { - let error_object = ErrorObject::owned( + let error_object = ErrorObject::owned::<()>( INTERNAL_ERROR_CODE, "Internal error occurred while executing transaction.", - None::<()>, + None, ); - RpcError::Call(CallError::Custom(error_object)) + RpcError::Call(error_object) } QuorumDriverError::SystemOverload { .. } | QuorumDriverError::SystemOverloadRetryAfter { .. } => { let error_object = - ErrorObject::owned(TRANSIENT_ERROR_CODE, err.to_string(), None::<()>); - RpcError::Call(CallError::Custom(error_object)) + ErrorObject::owned::<()>(TRANSIENT_ERROR_CODE, err.to_string(), None); + RpcError::Call(error_object) } } } - _ => RpcError::Call(CallError::Failed(e.into())), + _ => RpcError::Call(ErrorObject::owned::<()>( + CALL_EXECUTION_FAILED_CODE, + e.to_string(), + None, + )), } } } @@ -309,7 +350,17 @@ pub enum IotaRpcInputError { impl From for RpcError { fn from(e: IotaRpcInputError) -> Self { - RpcError::Call(CallError::InvalidParams(e.into())) + RpcError::Call(ErrorObject::owned::<()>( + ErrorCode::InvalidParams.code(), + e.to_string(), + None, + )) + } +} + +impl From for ErrorObjectOwned { + fn from(value: IotaRpcInputError) -> Self { + error_object_from_rpc(value.into()) } } @@ -322,7 +373,6 @@ mod tests { crypto::{AuthorityPublicKey, AuthorityPublicKeyBytes}, digests::{ObjectDigest, TransactionDigest}, }; - use jsonrpsee::types::ErrorObjectOwned; use super::*; @@ -346,7 +396,7 @@ mod tests { let rpc_error: RpcError = Error::QuorumDriverError(quorum_driver_error).into(); - let error_object: ErrorObjectOwned = rpc_error.into(); + let error_object = error_object_from_rpc(rpc_error); let expected_code = expect!["-32002"]; expected_code.assert_eq(&error_object.code().to_string()); let expected_message = expect![ @@ -361,7 +411,7 @@ mod tests { let rpc_error: RpcError = Error::QuorumDriverError(quorum_driver_error).into(); - let error_object: ErrorObjectOwned = rpc_error.into(); + let error_object = error_object_from_rpc(rpc_error); let expected_code = expect!["-32050"]; expected_code.assert_eq(&error_object.code().to_string()); let expected_message = expect!["Transaction timed out before reaching finality"]; @@ -377,7 +427,7 @@ mod tests { let rpc_error: RpcError = Error::QuorumDriverError(quorum_driver_error).into(); - let error_object: ErrorObjectOwned = rpc_error.into(); + let error_object = error_object_from_rpc(rpc_error); let expected_code = expect!["-32050"]; expected_code.assert_eq(&error_object.code().to_string()); let expected_message = expect![ @@ -407,7 +457,7 @@ mod tests { let rpc_error: RpcError = Error::QuorumDriverError(quorum_driver_error).into(); - let error_object: ErrorObjectOwned = rpc_error.into(); + let error_object = error_object_from_rpc(rpc_error); let expected_code = expect!["-32002"]; expected_code.assert_eq(&error_object.code().to_string()); let expected_message = expect![ @@ -450,7 +500,7 @@ mod tests { let rpc_error: RpcError = Error::QuorumDriverError(quorum_driver_error).into(); - let error_object: ErrorObjectOwned = rpc_error.into(); + let error_object = error_object_from_rpc(rpc_error); let expected_code = expect!["-32002"]; expected_code.assert_eq(&error_object.code().to_string()); let expected_message = expect![ @@ -483,7 +533,7 @@ mod tests { let rpc_error: RpcError = Error::QuorumDriverError(quorum_driver_error).into(); - let error_object: ErrorObjectOwned = rpc_error.into(); + let error_object = error_object_from_rpc(rpc_error); let expected_code = expect!["-32002"]; expected_code.assert_eq(&error_object.code().to_string()); let expected_message = expect![ @@ -499,7 +549,7 @@ mod tests { let rpc_error: RpcError = Error::QuorumDriverError(quorum_driver_error).into(); - let error_object: ErrorObjectOwned = rpc_error.into(); + let error_object = error_object_from_rpc(rpc_error); let expected_code = expect!["-32603"]; expected_code.assert_eq(&error_object.code().to_string()); let expected_message = expect!["Internal error occurred while executing transaction."]; @@ -515,7 +565,7 @@ mod tests { let rpc_error: RpcError = Error::QuorumDriverError(quorum_driver_error).into(); - let error_object: ErrorObjectOwned = rpc_error.into(); + let error_object = error_object_from_rpc(rpc_error); let expected_code = expect!["-32050"]; expected_code.assert_eq(&error_object.code().to_string()); let expected_message = expect![ diff --git a/crates/iota-json-rpc/src/governance_api.rs b/crates/iota-json-rpc/src/governance_api.rs index a442fd95911..81a6e319326 100644 --- a/crates/iota-json-rpc/src/governance_api.rs +++ b/crates/iota-json-rpc/src/governance_api.rs @@ -7,7 +7,9 @@ use std::{cmp::max, collections::BTreeMap, sync::Arc}; use async_trait::async_trait; use cached::{proc_macro::cached, SizedCache}; use iota_core::authority::AuthorityState; -use iota_json_rpc_api::{GovernanceReadApiOpenRpc, GovernanceReadApiServer, JsonRpcMetrics}; +use iota_json_rpc_api::{ + error_object_from_rpc, GovernanceReadApiOpenRpc, GovernanceReadApiServer, JsonRpcMetrics, +}; use iota_json_rpc_types::{ DelegatedStake, DelegatedTimelockedStake, IotaCommittee, Stake, StakeStatus, TimelockedStake, ValidatorApy, ValidatorApys, @@ -36,7 +38,8 @@ use tracing::{info, instrument}; use crate::{ authority_state::StateRead, error::{Error, IotaRpcInputError, RpcInterimResult}, - with_tracing, IotaRpcModule, ObjectProvider, + logger::with_tracing, + IotaRpcModule, ObjectProvider, }; #[derive(Clone)] @@ -350,12 +353,16 @@ impl GovernanceReadApiServer for GovernanceReadApi { &self, staked_iota_ids: Vec, ) -> RpcResult> { - with_tracing!(async move { self.get_stakes_by_ids(staked_iota_ids).await }) + with_tracing( + async move { self.get_stakes_by_ids(staked_iota_ids).await }, + None, + ) + .await } #[instrument(skip(self))] async fn get_stakes(&self, owner: IotaAddress) -> RpcResult> { - with_tracing!(async move { self.get_stakes(owner).await }) + with_tracing(async move { self.get_stakes(owner).await }, None).await } #[instrument(skip(self))] @@ -363,10 +370,14 @@ impl GovernanceReadApiServer for GovernanceReadApi { &self, timelocked_staked_iota_ids: Vec, ) -> RpcResult> { - with_tracing!(async move { - self.get_timelocked_stakes_by_ids(timelocked_staked_iota_ids) - .await - }) + with_tracing( + async move { + self.get_timelocked_stakes_by_ids(timelocked_staked_iota_ids) + .await + }, + None, + ) + .await } #[instrument(skip(self))] @@ -374,36 +385,48 @@ impl GovernanceReadApiServer for GovernanceReadApi { &self, owner: IotaAddress, ) -> RpcResult> { - with_tracing!(async move { self.get_timelocked_stakes(owner).await }) + with_tracing(async move { self.get_timelocked_stakes(owner).await }, None).await } #[instrument(skip(self))] async fn get_committee_info(&self, epoch: Option>) -> RpcResult { - with_tracing!(async move { - self.state - .get_or_latest_committee(epoch) - .map(|committee| committee.into()) - .map_err(Error::from) - }) + with_tracing( + async move { + self.state + .get_or_latest_committee(epoch) + .map(|committee| committee.into()) + .map_err(Error::from) + }, + None, + ) + .await } #[instrument(skip(self))] async fn get_latest_iota_system_state(&self) -> RpcResult { - with_tracing!(async move { - Ok(self - .state - .get_system_state() - .map_err(Error::from)? - .into_iota_system_state_summary()) - }) + with_tracing( + async move { + Ok(self + .state + .get_system_state() + .map_err(Error::from)? + .into_iota_system_state_summary()) + }, + None, + ) + .await } #[instrument(skip(self))] async fn get_reference_gas_price(&self) -> RpcResult> { - with_tracing!(async move { - let epoch_store = self.state.load_epoch_store_one_call_per_task(); - Ok(epoch_store.reference_gas_price().into()) - }) + with_tracing( + async move { + let epoch_store = self.state.load_epoch_store_one_call_per_task(); + Ok(epoch_store.reference_gas_price().into()) + }, + None, + ) + .await } #[instrument(skip(self))] @@ -414,7 +437,7 @@ impl GovernanceReadApiServer for GovernanceReadApi { let exchange_rate_table = exchange_rates(&self.state, system_state_summary.epoch) .await - .map_err(Error::from)?; + .map_err(|e| error_object_from_rpc(e.into()))?; let apys = calculate_apys( system_state_summary.stake_subsidy_start_epoch, @@ -538,7 +561,7 @@ fn stake_status( /// 1, it will be cleared when the epoch changes. rates are in descending order /// by epoch. #[cached( - type = "SizedCache>", + ty = "SizedCache>", create = "{ SizedCache::with_size(1) }", convert = "{ _current_epoch }", result = true diff --git a/crates/iota-json-rpc/src/indexer_api.rs b/crates/iota-json-rpc/src/indexer_api.rs index 8af5adb7f11..d6e8d41cbdf 100644 --- a/crates/iota-json-rpc/src/indexer_api.rs +++ b/crates/iota-json-rpc/src/indexer_api.rs @@ -2,11 +2,11 @@ // Modifications Copyright (c) 2024 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -use std::sync::Arc; +use std::{sync::Arc, time::Duration}; -use anyhow::bail; +use anyhow::{anyhow, bail}; use async_trait::async_trait; -use futures::{future, Stream}; +use futures::{future, Stream, StreamExt}; use iota_core::authority::AuthorityState; use iota_json::IotaJsonValue; use iota_json_rpc_api::{ @@ -28,48 +28,72 @@ use iota_types::{ event::EventID, }; use jsonrpsee::{ - core::{error::SubscriptionClosed, RpcResult}, - types::SubscriptionResult, - RpcModule, SubscriptionSink, + core::RpcResult, PendingSubscriptionSink, RpcModule, SendTimeoutError, SubscriptionMessage, }; use move_bytecode_utils::layout::TypeLayoutBuilder; use move_core_types::language_storage::TypeTag; use mysten_metrics::spawn_monitored_task; use serde::Serialize; use tokio::sync::{OwnedSemaphorePermit, Semaphore}; -use tracing::{debug, instrument, warn}; +use tracing::{debug, instrument}; use crate::{ authority_state::{StateRead, StateReadResult}, error::{Error, IotaRpcInputError}, + logger::with_tracing, name_service::{Domain, NameRecord, NameServiceConfig, NameServiceError}, - with_tracing, IotaRpcModule, + IotaRpcModule, }; +async fn pipe_from_stream( + pending: PendingSubscriptionSink, + mut stream: impl Stream + Unpin, +) -> Result<(), anyhow::Error> { + let sink = pending.accept().await?; + + loop { + tokio::select! { + _ = sink.closed() => break Ok(()), + maybe_item = stream.next() => { + let Some(item) = maybe_item else { + break Ok(()); + }; + + let msg = SubscriptionMessage::from_json(&item)?; + + if let Err(e) = sink.send_timeout(msg, Duration::from_secs(60)).await { + match e { + // The subscription or connection was closed. + SendTimeoutError::Closed(_) => break Ok(()), + // The subscription send timeout expired + // the message is returned and you could save that message + // and retry again later. + SendTimeoutError::Timeout(_) => break Err(anyhow::anyhow!("Subscription timeout expired")), + } + } + } + } + } +} + pub fn spawn_subscription( - mut sink: SubscriptionSink, + pending: PendingSubscriptionSink, rx: S, permit: Option, ) where S: Stream + Unpin + Send + 'static, - T: Serialize, + T: Serialize + Send, { spawn_monitored_task!(async move { let _permit = permit; - match sink.pipe_from_stream(rx).await { - SubscriptionClosed::Success => { + match pipe_from_stream(pending, rx).await { + Ok(_) => { debug!("Subscription completed."); - sink.close(SubscriptionClosed::Success); - } - SubscriptionClosed::RemotePeerAborted => { - debug!("Subscription aborted by remote peer."); - sink.close(SubscriptionClosed::RemotePeerAborted); } - SubscriptionClosed::Failed(err) => { + Err(err) => { debug!("Subscription failed: {err:?}"); - sink.close(err); } - }; + } }); } const DEFAULT_MAX_SUBSCRIPTIONS: usize = 100; @@ -146,51 +170,55 @@ impl IndexerApiServer for IndexerApi { cursor: Option, limit: Option, ) -> RpcResult { - with_tracing!(async move { - let limit = - validate_limit(limit, *QUERY_MAX_RESULT_LIMIT).map_err(IotaRpcInputError::from)?; - self.metrics.get_owned_objects_limit.report(limit as u64); - let IotaObjectResponseQuery { filter, options } = query.unwrap_or_default(); - let options = options.unwrap_or_default(); - let mut objects = self - .state - .get_owner_objects_with_limit(address, cursor, limit + 1, filter) - .map_err(Error::from)?; - - // objects here are of size (limit + 1), where the last one is the cursor for - // the next page - let has_next_page = objects.len() > limit; - objects.truncate(limit); - let next_cursor = objects - .last() - .cloned() - .map_or(cursor, |o_info| Some(o_info.object_id)); - - let data = match options.is_not_in_object_info() { - true => { - let object_ids = objects.iter().map(|obj| obj.object_id).collect(); - self.read_api - .multi_get_objects(object_ids, Some(options)) - .await? - } - false => objects - .into_iter() - .map(|o_info| IotaObjectResponse::try_from((o_info, options.clone()))) - .collect::, _>>()?, - }; - - self.metrics - .get_owned_objects_result_size - .report(data.len() as u64); - self.metrics - .get_owned_objects_result_size_total - .inc_by(data.len() as u64); - Ok(Page { - data, - next_cursor, - has_next_page, - }) - }) + with_tracing( + async move { + let limit = validate_limit(limit, *QUERY_MAX_RESULT_LIMIT) + .map_err(IotaRpcInputError::from)?; + self.metrics.get_owned_objects_limit.report(limit as u64); + let IotaObjectResponseQuery { filter, options } = query.unwrap_or_default(); + let options = options.unwrap_or_default(); + let mut objects = + self.state + .get_owner_objects_with_limit(address, cursor, limit + 1, filter)?; + + // objects here are of size (limit + 1), where the last one is the cursor for + // the next page + let has_next_page = objects.len() > limit; + objects.truncate(limit); + let next_cursor = objects + .last() + .cloned() + .map_or(cursor, |o_info| Some(o_info.object_id)); + + let data = match options.is_not_in_object_info() { + true => { + let object_ids = objects.iter().map(|obj| obj.object_id).collect(); + self.read_api + .multi_get_objects(object_ids, Some(options)) + .await + .map_err(|e| Error::InternalError(anyhow!(e)))? + } + false => objects + .into_iter() + .map(|o_info| IotaObjectResponse::try_from((o_info, options.clone()))) + .collect::, _>>()?, + }; + + self.metrics + .get_owned_objects_result_size + .report(data.len() as u64); + self.metrics + .get_owned_objects_result_size_total + .inc_by(data.len() as u64); + Ok(Page { + data, + next_cursor, + has_next_page, + }) + }, + None, + ) + .await } #[instrument(skip(self))] @@ -202,53 +230,58 @@ impl IndexerApiServer for IndexerApi { limit: Option, descending_order: Option, ) -> RpcResult { - with_tracing!(async move { - let limit = cap_page_limit(limit); - self.metrics.query_tx_blocks_limit.report(limit as u64); - let descending = descending_order.unwrap_or_default(); - let opts = query.options.unwrap_or_default(); - - // Retrieve 1 extra item for next cursor - let mut digests = self - .state - .get_transactions( - &self.transaction_kv_store, - query.filter, - cursor, - Some(limit + 1), - descending, - ) - .await - .map_err(Error::from)?; - - // extract next cursor - let has_next_page = digests.len() > limit; - digests.truncate(limit); - let next_cursor = digests.last().cloned().map_or(cursor, Some); - - let data: Vec = if opts.only_digest() { - digests - .into_iter() - .map(IotaTransactionBlockResponse::new) - .collect() - } else { - self.read_api - .multi_get_transaction_blocks(digests, Some(opts)) - .await? - }; - - self.metrics - .query_tx_blocks_result_size - .report(data.len() as u64); - self.metrics - .query_tx_blocks_result_size_total - .inc_by(data.len() as u64); - Ok(Page { - data, - next_cursor, - has_next_page, - }) - }) + with_tracing( + async move { + let limit = cap_page_limit(limit); + self.metrics.query_tx_blocks_limit.report(limit as u64); + let descending = descending_order.unwrap_or_default(); + let opts = query.options.unwrap_or_default(); + + // Retrieve 1 extra item for next cursor + let mut digests = self + .state + .get_transactions( + &self.transaction_kv_store, + query.filter, + cursor, + Some(limit + 1), + descending, + ) + .await + .map_err(Error::from)?; + + // extract next cursor + let has_next_page = digests.len() > limit; + digests.truncate(limit); + let next_cursor = digests.last().cloned().map_or(cursor, Some); + + let data: Vec = if opts.only_digest() { + digests + .into_iter() + .map(IotaTransactionBlockResponse::new) + .collect() + } else { + self.read_api + .multi_get_transaction_blocks(digests, Some(opts)) + .await + .map_err(|e| Error::InternalError(anyhow!(e)))? + }; + + self.metrics + .query_tx_blocks_result_size + .report(data.len() as u64); + self.metrics + .query_tx_blocks_result_size_total + .inc_by(data.len() as u64); + Ok(Page { + data, + next_cursor, + has_next_page, + }) + }, + None, + ) + .await } #[instrument(skip(self))] async fn query_events( @@ -259,66 +292,68 @@ impl IndexerApiServer for IndexerApi { limit: Option, descending_order: Option, ) -> RpcResult { - with_tracing!(async move { - let descending = descending_order.unwrap_or_default(); - let limit = cap_page_limit(limit); - self.metrics.query_events_limit.report(limit as u64); - // Retrieve 1 extra item for next cursor - let mut data = self - .state - .query_events( - &self.transaction_kv_store, - query, - cursor, - limit + 1, - descending, - ) - .await - .map_err(Error::from)?; - let has_next_page = data.len() > limit; - data.truncate(limit); - let next_cursor = data.last().map_or(cursor, |e| Some(e.id)); - self.metrics - .query_events_result_size - .report(data.len() as u64); - self.metrics - .query_events_result_size_total - .inc_by(data.len() as u64); - Ok(EventPage { - data, - next_cursor, - has_next_page, - }) - }) + with_tracing( + async move { + let descending = descending_order.unwrap_or_default(); + let limit = cap_page_limit(limit); + self.metrics.query_events_limit.report(limit as u64); + // Retrieve 1 extra item for next cursor + let mut data = self + .state + .query_events( + &self.transaction_kv_store, + query, + cursor, + limit + 1, + descending, + ) + .await + .map_err(Error::from)?; + let has_next_page = data.len() > limit; + data.truncate(limit); + let next_cursor = data.last().map_or(cursor, |e| Some(e.id)); + self.metrics + .query_events_result_size + .report(data.len() as u64); + self.metrics + .query_events_result_size_total + .inc_by(data.len() as u64); + Ok(EventPage { + data, + next_cursor, + has_next_page, + }) + }, + None, + ) + .await } #[instrument(skip(self))] - fn subscribe_event(&self, sink: SubscriptionSink, filter: EventFilter) -> SubscriptionResult { - let permit = self.acquire_subscribe_permit()?; + async fn subscribe_event(&self, sink: PendingSubscriptionSink, filter: EventFilter) { + let permit = self.acquire_subscribe_permit().ok(); spawn_subscription( sink, self.state .get_subscription_handler() .subscribe_events(filter), - Some(permit), + permit, ); - Ok(()) } - fn subscribe_transaction( + async fn subscribe_transaction( &self, - sink: SubscriptionSink, + sink: PendingSubscriptionSink, filter: TransactionFilter, - ) -> SubscriptionResult { - let permit = self.acquire_subscribe_permit()?; + ) { + let permit = self.acquire_subscribe_permit().ok(); spawn_subscription( sink, self.state .get_subscription_handler() .subscribe_transactions(filter), - Some(permit), + permit, ); - Ok(()) } #[instrument(skip(self))] @@ -329,28 +364,32 @@ impl IndexerApiServer for IndexerApi { cursor: Option, limit: Option, ) -> RpcResult { - with_tracing!(async move { - let limit = cap_page_limit(limit); - self.metrics.get_dynamic_fields_limit.report(limit as u64); - let mut data = self - .state - .get_dynamic_fields(parent_object_id, cursor, limit + 1) - .map_err(Error::from)?; - let has_next_page = data.len() > limit; - data.truncate(limit); - let next_cursor = data.last().cloned().map_or(cursor, |c| Some(c.0)); - self.metrics - .get_dynamic_fields_result_size - .report(data.len() as u64); - self.metrics - .get_dynamic_fields_result_size_total - .inc_by(data.len() as u64); - Ok(DynamicFieldPage { - data: data.into_iter().map(|(_, w)| w).collect(), - next_cursor, - has_next_page, - }) - }) + with_tracing( + async move { + let limit = cap_page_limit(limit); + self.metrics.get_dynamic_fields_limit.report(limit as u64); + let mut data = self + .state + .get_dynamic_fields(parent_object_id, cursor, limit + 1) + .map_err(Error::from)?; + let has_next_page = data.len() > limit; + data.truncate(limit); + let next_cursor = data.last().cloned().map_or(cursor, |c| Some(c.0)); + self.metrics + .get_dynamic_fields_result_size + .report(data.len() as u64); + self.metrics + .get_dynamic_fields_result_size_total + .inc_by(data.len() as u64); + Ok(DynamicFieldPage { + data: data.into_iter().map(|(_, w)| w).collect(), + next_cursor, + has_next_page, + }) + }, + None, + ) + .await } #[instrument(skip(self))] @@ -359,94 +398,103 @@ impl IndexerApiServer for IndexerApi { parent_object_id: ObjectID, name: DynamicFieldName, ) -> RpcResult { - with_tracing!(async move { - let (name_type, name_bcs_value) = self.extract_values_from_dynamic_field_name(name)?; - - let id = self - .state - .get_dynamic_field_object_id(parent_object_id, name_type, &name_bcs_value) - .map_err(Error::from)?; - // TODO(chris): add options to `get_dynamic_field_object` API as well - if let Some(id) = id { - self.read_api - .get_object(id, Some(IotaObjectDataOptions::full_content())) - .await - .map_err(Error::from) - } else { - Ok(IotaObjectResponse::new_with_error( - IotaObjectResponseError::DynamicFieldNotFound { parent_object_id }, - )) - } - }) + with_tracing( + async move { + let (name_type, name_bcs_value) = + self.extract_values_from_dynamic_field_name(name)?; + + let id = self + .state + .get_dynamic_field_object_id(parent_object_id, name_type, &name_bcs_value) + .map_err(Error::from)?; + // TODO(chris): add options to `get_dynamic_field_object` API as well + if let Some(id) = id { + self.read_api + .get_object(id, Some(IotaObjectDataOptions::full_content())) + .await + .map_err(|e| Error::InternalError(anyhow!(e))) + } else { + Ok(IotaObjectResponse::new_with_error( + IotaObjectResponseError::DynamicFieldNotFound { parent_object_id }, + )) + } + }, + None, + ) + .await } #[instrument(skip(self))] async fn resolve_name_service_address(&self, name: String) -> RpcResult> { - with_tracing!(async move { - // prepare the requested domain's field id. - let domain = name.parse::().map_err(Error::from)?; - let record_id = self.name_service_config.record_field_id(&domain); + with_tracing( + async move { + // prepare the requested domain's field id. + let domain = name.parse::().map_err(Error::from)?; + let record_id = self.name_service_config.record_field_id(&domain); - // prepare the parent's field id. - let parent_domain = domain.parent(); - let parent_record_id = self.name_service_config.record_field_id(&parent_domain); + // prepare the parent's field id. + let parent_domain = domain.parent(); + let parent_record_id = self.name_service_config.record_field_id(&parent_domain); - let current_timestamp_ms = self.get_latest_checkpoint_timestamp_ms()?; + let current_timestamp_ms = self.get_latest_checkpoint_timestamp_ms()?; - // Do these two reads in parallel. - let mut requests = vec![self.state.get_object(&record_id)]; + // Do these two reads in parallel. + let mut requests = vec![self.state.get_object(&record_id)]; - // Also add the parent in the DB reads if the requested domain is a subdomain. - if domain.is_subdomain() { - requests.push(self.state.get_object(&parent_record_id)); - } + // Also add the parent in the DB reads if the requested domain is a subdomain. + if domain.is_subdomain() { + requests.push(self.state.get_object(&parent_record_id)); + } + + // Couldn't find a `multi_get_object` for this crate (looks like it uses a k,v + // db) Always fetching both parent + child at the same time (even + // for node subdomains), to avoid sequential db reads. We do this + // because we do not know if the requested domain is a node + // subdomain or a leaf subdomain, and we can save a trip to the db. + let mut results = future::try_join_all(requests).await?; + + // Removing without checking vector len, since it is known (== 1 or 2 depending + // on whether it is a subdomain or not). + let Some(object) = results.remove(0) else { + return Ok(None); + }; + + let name_record = NameRecord::try_from(object)?; + + // Handling SLD names & node subdomains is the same (we handle them as `node` + // records) We check their expiration, and and if not expired, + // return the target address. + if !name_record.is_leaf_record() { + return if !name_record.is_node_expired(current_timestamp_ms) { + Ok(name_record.target_address) + } else { + Err(Error::from(NameServiceError::NameExpired)) + }; + } - // Couldn't find a `multi_get_object` for this crate (looks like it uses a k,v - // db) Always fetching both parent + child at the same time (even - // for node subdomains), to avoid sequential db reads. We do this - // because we do not know if the requested domain is a node - // subdomain or a leaf subdomain, and we can save a trip to the db. - let mut results = future::try_join_all(requests).await?; - - // Removing without checking vector len, since it is known (== 1 or 2 depending - // on whether it is a subdomain or not). - let Some(object) = results.remove(0) else { - return Ok(None); - }; - - let name_record = NameRecord::try_from(object)?; - - // Handling SLD names & node subdomains is the same (we handle them as `node` - // records) We check their expiration, and and if not expired, - // return the target address. - if !name_record.is_leaf_record() { - return if !name_record.is_node_expired(current_timestamp_ms) { + // == Handle leaf subdomains case == + // We can remove since we know that if we're here, we have a parent + // (which also means we queried it in the future above). + let Some(parent_object) = results.remove(0) else { + return Err(Error::from(NameServiceError::NameExpired)); + }; + + let parent_name_record = NameRecord::try_from(parent_object)?; + + // For a leaf record, we check that: + // 1. The parent is a valid parent for that leaf record + // 2. The parent is not expired + if parent_name_record.is_valid_leaf_parent(&name_record) + && !parent_name_record.is_node_expired(current_timestamp_ms) + { Ok(name_record.target_address) } else { Err(Error::from(NameServiceError::NameExpired)) - }; - } - - // == Handle leaf subdomains case == - // We can remove since we know that if we're here, we have a parent - // (which also means we queried it in the future above). - let Some(parent_object) = results.remove(0) else { - return Err(Error::from(NameServiceError::NameExpired)); - }; - - let parent_name_record = NameRecord::try_from(parent_object)?; - - // For a leaf record, we check that: - // 1. The parent is a valid parent for that leaf record - // 2. The parent is not expired - if parent_name_record.is_valid_leaf_parent(&name_record) - && !parent_name_record.is_node_expired(current_timestamp_ms) - { - Ok(name_record.target_address) - } else { - Err(Error::from(NameServiceError::NameExpired)) - } - }) + } + }, + None, + ) + .await } #[instrument(skip(self))] @@ -456,47 +504,52 @@ impl IndexerApiServer for IndexerApi { _cursor: Option, _limit: Option, ) -> RpcResult> { - with_tracing!(async move { - let reverse_record_id = self - .name_service_config - .reverse_record_field_id(address.as_ref()); - - let mut result = Page { - data: vec![], - next_cursor: None, - has_next_page: false, - }; - - let Some(field_reverse_record_object) = - self.state.get_object(&reverse_record_id).await? - else { - return Ok(result); - }; - - let domain = field_reverse_record_object - .to_rust::>() - .ok_or_else(|| { - Error::UnexpectedError(format!("Malformed Object {reverse_record_id}")) - })? - .value; - - let domain_name = domain.to_string(); - - let resolved_address = self - .resolve_name_service_address(domain_name.clone()) - .await?; - - // If looking up the domain returns an empty result, we return an empty result. - if resolved_address.is_none() { - return Ok(result); - } + with_tracing( + async move { + let reverse_record_id = self + .name_service_config + .reverse_record_field_id(address.as_ref()); + + let mut result = Page { + data: vec![], + next_cursor: None, + has_next_page: false, + }; + + let Some(field_reverse_record_object) = + self.state.get_object(&reverse_record_id).await? + else { + return Ok(result); + }; + + let domain = field_reverse_record_object + .to_rust::>() + .ok_or_else(|| { + Error::UnexpectedError(format!("Malformed Object {reverse_record_id}")) + })? + .value; + + let domain_name = domain.to_string(); + + let resolved_address = self + .resolve_name_service_address(domain_name.clone()) + .await + .map_err(|e| Error::InternalError(anyhow!(e)))?; + + // If looking up the domain returns an empty result, we return an empty result. + if resolved_address.is_none() { + return Ok(result); + } - // TODO(manos): Discuss why is this even a paginated response. - // This API is always going to return a single domain name. - result.data.push(domain_name); + // TODO(manos): Discuss why is this even a paginated response. + // This API is always going to return a single domain name. + result.data.push(domain_name); - Ok(result) - }) + Ok(result) + }, + None, + ) + .await } } diff --git a/crates/iota-json-rpc/src/lib.rs b/crates/iota-json-rpc/src/lib.rs index b711c9505e5..5cf6b40810a 100644 --- a/crates/iota-json-rpc/src/lib.rs +++ b/crates/iota-json-rpc/src/lib.rs @@ -4,17 +4,20 @@ use std::{env, net::SocketAddr, str::FromStr}; -use axum::routing::{get, post}; +use axum::{ + body::Body, + routing::{get, post}, +}; pub use balance_changes::*; use hyper::{ header::{HeaderName, HeaderValue}, - Body, Method, Request, + Method, Request, }; use iota_json_rpc_api::{ CLIENT_SDK_TYPE_HEADER, CLIENT_SDK_VERSION_HEADER, CLIENT_TARGET_API_VERSION_HEADER, }; use iota_open_rpc::{Module, Project}; -use jsonrpsee::RpcModule; +use jsonrpsee::{types::ErrorObjectOwned, Extensions, RpcModule}; pub use object_changes::*; use prometheus::Registry; use tokio::runtime::Handle; @@ -120,7 +123,7 @@ impl JsonRpcServerBuilder { fn trace_layer() -> TraceLayer< tower_http::classify::SharedClassifier, - impl tower_http::trace::MakeSpan + Clone, + impl tower_http::trace::MakeSpan + Clone, (), (), (), @@ -163,7 +166,9 @@ impl JsonRpcServerBuilder { let rpc_docs = self.rpc_doc.clone(); let mut module = self.module.clone(); - module.register_method("rpc.discover", move |_, _| Ok(rpc_docs.clone()))?; + module.register_method("rpc.discover", move |_, _, _| { + Result::<_, ErrorObjectOwned>::Ok(rpc_docs.clone()) + })?; let methods_names = module.method_names().collect::>(); let metrics_logger = MetricsLogger::new(&self.registry, &methods_names); @@ -172,8 +177,12 @@ impl JsonRpcServerBuilder { .layer(Self::trace_layer()) .layer(Self::cors()?); - let service = - crate::axum_router::JsonRpcService::new(module.into(), rpc_router, metrics_logger); + let service = crate::axum_router::JsonRpcService::new( + module.into(), + rpc_router, + metrics_logger, + Extensions::new(), + ); let mut router = axum::Router::new(); @@ -214,10 +223,20 @@ impl JsonRpcServerBuilder { ) -> Result { let app = self.to_router(server_type)?; - let server = axum::Server::bind(&listen_address).serve(app.into_make_service()); - - let addr = server.local_addr(); - let handle = tokio::spawn(async move { server.await.unwrap() }); + let listener = tokio::net::TcpListener::bind(listen_address) + .await + .map_err(|e| { + Error::UnexpectedError(format!("invalid listen address {listen_address}: {e}")) + })?; + + let addr = listener.local_addr().map_err(|e| { + Error::UnexpectedError(format!("invalid listen address {listen_address}: {e}")) + })?; + let handle = tokio::spawn(async move { + axum::serve(listener, app.into_make_service()) + .await + .unwrap() + }); let handle = ServerHandle { handle: ServerHandleInner::Axum(handle), diff --git a/crates/iota-json-rpc/src/logger.rs b/crates/iota-json-rpc/src/logger.rs index c402cf7a44e..38975bbdd7c 100644 --- a/crates/iota-json-rpc/src/logger.rs +++ b/crates/iota-json-rpc/src/logger.rs @@ -2,39 +2,183 @@ // Modifications Copyright (c) 2024 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -#[macro_export] -macro_rules! with_tracing { - ($time_spent_threshold:expr, $future:expr) => {{ - use tracing::{info, error, Instrument, Span}; - use jsonrpsee::core::{RpcResult, Error as RpcError}; - use jsonrpsee::types::error::{CallError}; - use $crate::error::RpcInterimResult; - use anyhow::anyhow; - - async move { - let start = std::time::Instant::now(); - let interim_result: RpcInterimResult<_> = $future.await; - let elapsed = start.elapsed(); - let result: RpcResult<_> = interim_result.map_err(|e: Error| { - let anyhow_error = anyhow!("{:?}", e); - - let rpc_error: RpcError = e.into(); - if !matches!(rpc_error, RpcError::Call(CallError::InvalidParams(_))) { - error!(error=?anyhow_error); - } - rpc_error - }); - - if elapsed > $time_spent_threshold { - info!(?elapsed, "RPC took longer than threshold to complete."); +use std::{net::SocketAddr, time::Duration}; + +use anyhow::anyhow; +use futures::Future; +use iota_json_rpc_api::error_object_from_rpc; +use jsonrpsee::{ + core::{ClientError as RpcError, RpcResult}, + server::HttpRequest, + types::Params, + MethodKind, +}; +use tracing::{error, info, Instrument, Span}; + +use crate::error::RpcInterimResult; + +/// The transport protocol used to send or receive a call or request. +#[derive(Debug, Copy, Clone)] +pub enum TransportProtocol { + /// HTTP transport. + Http, + /// WebSocket transport. + WebSocket, +} + +impl std::fmt::Display for TransportProtocol { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let s = match self { + Self::Http => "http", + Self::WebSocket => "websocket", + }; + + write!(f, "{s}") + } +} + +/// Defines a logger specifically for WebSocket connections with callbacks +/// during the RPC request life-cycle. The primary use case for this is to +/// collect timings for a larger metrics collection solution. +pub trait Logger: Send + Sync + Clone + 'static { + /// Intended to carry timestamp of a request, for example + /// `std::time::Instant`. How the trait measures time, if at all, is + /// entirely up to the implementation. + type Instant: std::fmt::Debug + Send + Sync + Copy; + + /// Called when a new client connects + fn on_connect(&self, _remote_addr: SocketAddr, _request: &HttpRequest, _t: TransportProtocol); + + /// Called when a new JSON-RPC request comes to the server. + fn on_request(&self, transport: TransportProtocol) -> Self::Instant; + + /// Called on each JSON-RPC method call, batch requests will trigger + /// `on_call` multiple times. + fn on_call( + &self, + method_name: &str, + params: Params, + kind: MethodKind, + transport: TransportProtocol, + ); + + /// Called on each JSON-RPC method completion, batch requests will trigger + /// `on_result` multiple times. + fn on_result( + &self, + method_name: &str, + success: bool, + error_code: Option, + started_at: Self::Instant, + transport: TransportProtocol, + ); + + /// Called once the JSON-RPC request is finished and response is sent to the + /// output buffer. + fn on_response(&self, result: &str, started_at: Self::Instant, transport: TransportProtocol); + + /// Called when a client disconnects + fn on_disconnect(&self, _remote_addr: SocketAddr, transport: TransportProtocol); +} + +impl Logger for () { + type Instant = (); + + fn on_connect(&self, _: SocketAddr, _: &HttpRequest, _p: TransportProtocol) -> Self::Instant {} + + fn on_request(&self, _p: TransportProtocol) -> Self::Instant {} + + fn on_call(&self, _: &str, _: Params, _: MethodKind, _p: TransportProtocol) {} + + fn on_result(&self, _: &str, _: bool, _: Option, _: Self::Instant, _p: TransportProtocol) { + } + + fn on_response(&self, _: &str, _: Self::Instant, _p: TransportProtocol) {} + + fn on_disconnect(&self, _: SocketAddr, _p: TransportProtocol) {} +} + +impl Logger for (A, B) +where + A: Logger, + B: Logger, +{ + type Instant = (A::Instant, B::Instant); + + fn on_connect( + &self, + remote_addr: std::net::SocketAddr, + request: &HttpRequest, + transport: TransportProtocol, + ) { + self.0.on_connect(remote_addr, request, transport); + self.1.on_connect(remote_addr, request, transport); + } + + fn on_request(&self, transport: TransportProtocol) -> Self::Instant { + (self.0.on_request(transport), self.1.on_request(transport)) + } + + fn on_call( + &self, + method_name: &str, + params: Params, + kind: MethodKind, + transport: TransportProtocol, + ) { + self.0.on_call(method_name, params.clone(), kind, transport); + self.1.on_call(method_name, params, kind, transport); + } + + fn on_result( + &self, + method_name: &str, + success: bool, + error_code: Option, + started_at: Self::Instant, + transport: TransportProtocol, + ) { + self.0 + .on_result(method_name, success, error_code, started_at.0, transport); + self.1 + .on_result(method_name, success, error_code, started_at.1, transport); + } + + fn on_response(&self, result: &str, started_at: Self::Instant, transport: TransportProtocol) { + self.0.on_response(result, started_at.0, transport); + self.1.on_response(result, started_at.1, transport); + } + + fn on_disconnect(&self, remote_addr: SocketAddr, transport: TransportProtocol) { + self.0.on_disconnect(remote_addr, transport); + self.1.on_disconnect(remote_addr, transport); + } +} + +pub async fn with_tracing>>( + future: F, + timeout: impl Into>, +) -> RpcResult { + let timeout = timeout.into().unwrap_or(Duration::from_secs(1)); + async move { + let start = std::time::Instant::now(); + let interim_result: RpcInterimResult<_> = future.await; + let elapsed = start.elapsed(); + let result = interim_result.map_err(|e| { + let anyhow_error = anyhow!("{:?}", e); + + let rpc_error: RpcError = e.into(); + if !matches!(rpc_error, RpcError::Call(_)) { + error!(error=?anyhow_error); } - result - } - .instrument(Span::current()) - .await - }}; + error_object_from_rpc(rpc_error) + }); - ($future:expr) => {{ - with_tracing!(std::time::Duration::from_secs(1), $future) - }}; + if elapsed > timeout { + info!(?elapsed, "RPC took longer than threshold to complete."); + } + result + } + .instrument(Span::current()) + .await } diff --git a/crates/iota-json-rpc/src/metrics.rs b/crates/iota-json-rpc/src/metrics.rs index c19616a5538..5a2017eeb0d 100644 --- a/crates/iota-json-rpc/src/metrics.rs +++ b/crates/iota-json-rpc/src/metrics.rs @@ -4,20 +4,19 @@ use std::{collections::HashSet, net::SocketAddr}; -use hyper::body::HttpBody; +use http_body::Body; use iota_json_rpc_api::{ CLIENT_SDK_TYPE_HEADER, CLIENT_TARGET_API_VERSION_HEADER, TRANSIENT_ERROR_CODE, }; -use jsonrpsee::{ - server::logger::{HttpRequest, Logger, MethodKind, TransportProtocol}, - types::Params, -}; +use jsonrpsee::{server::HttpRequest, types::Params, MethodKind}; use prometheus::{ register_histogram_vec_with_registry, register_int_counter_vec_with_registry, register_int_gauge_vec_with_registry, HistogramVec, IntCounterVec, IntGaugeVec, }; use tokio::time::Instant; +use crate::logger::{Logger, TransportProtocol}; + const SPAM_LABEL: &str = "SPAM"; const LATENCY_SEC_BUCKETS: &[f64] = &[ 0.001, 0.005, 0.01, 0.05, 0.1, 0.25, 0.5, 1., 2.5, 5., 10., 20., 30., 60., 90., diff --git a/crates/iota-json-rpc/src/move_utils.rs b/crates/iota-json-rpc/src/move_utils.rs index b65a40e9a1e..fb39c4bcb3a 100644 --- a/crates/iota-json-rpc/src/move_utils.rs +++ b/crates/iota-json-rpc/src/move_utils.rs @@ -31,7 +31,8 @@ use tracing::{error, instrument, warn}; use crate::{ authority_state::StateRead, error::{Error, IotaRpcInputError}, - with_tracing, IotaRpcModule, + logger::with_tracing, + IotaRpcModule, }; #[cfg_attr(test, automock)] @@ -156,13 +157,17 @@ impl MoveUtilsServer for MoveUtils { &self, package: ObjectID, ) -> RpcResult> { - with_tracing!(async move { - let modules = self.internal.get_move_modules_by_package(package).await?; - Ok(modules - .into_iter() - .map(|(name, module)| (name, module.into())) - .collect::>()) - }) + with_tracing( + async move { + let modules = self.internal.get_move_modules_by_package(package).await?; + Ok(modules + .into_iter() + .map(|(name, module)| (name, module.into())) + .collect::>()) + }, + None, + ) + .await } #[instrument(skip(self))] @@ -171,10 +176,14 @@ impl MoveUtilsServer for MoveUtils { package: ObjectID, module_name: String, ) -> RpcResult { - with_tracing!(async move { - let module = self.internal.get_move_module(package, module_name).await?; - Ok(module.into()) - }) + with_tracing( + async move { + let module = self.internal.get_move_module(package, module_name).await?; + Ok(module.into()) + }, + None, + ) + .await } #[instrument(skip(self))] @@ -184,19 +193,23 @@ impl MoveUtilsServer for MoveUtils { module_name: String, struct_name: String, ) -> RpcResult { - with_tracing!(async move { - let module = self.internal.get_move_module(package, module_name).await?; - let structs = module.structs; - let identifier = Identifier::new(struct_name.as_str()) - .map_err(|e| IotaRpcInputError::GenericInvalid(format!("{e}")))?; - match structs.get(&identifier) { - Some(struct_) => Ok(struct_.clone().into()), - None => Err(IotaRpcInputError::GenericNotFound(format!( - "No struct was found with struct name {}", - struct_name - )))?, - } - }) + with_tracing( + async move { + let module = self.internal.get_move_module(package, module_name).await?; + let structs = module.structs; + let identifier = Identifier::new(struct_name.as_str()) + .map_err(|e| IotaRpcInputError::GenericInvalid(format!("{e}")))?; + match structs.get(&identifier) { + Some(struct_) => Ok(struct_.clone().into()), + None => Err(IotaRpcInputError::GenericNotFound(format!( + "No struct was found with struct name {}", + struct_name + )))?, + } + }, + None, + ) + .await } #[instrument(skip(self))] @@ -206,18 +219,22 @@ impl MoveUtilsServer for MoveUtils { module_name: String, function_name: String, ) -> RpcResult { - with_tracing!(async move { - let module = self.internal.get_move_module(package, module_name).await?; - let functions = module.functions; - let identifier = Identifier::new(function_name.as_str()) - .map_err(|e| IotaRpcInputError::GenericInvalid(format!("{e}")))?; - match functions.get(&identifier) { - Some(function) => Ok(function.clone().into()), - None => Err(IotaRpcInputError::GenericNotFound(format!( - "No function was found with function name {function_name}" - )))?, - } - }) + with_tracing( + async move { + let module = self.internal.get_move_module(package, module_name).await?; + let functions = module.functions; + let identifier = Identifier::new(function_name.as_str()) + .map_err(|e| IotaRpcInputError::GenericInvalid(format!("{e}")))?; + match functions.get(&identifier) { + Some(function) => Ok(function.clone().into()), + None => Err(IotaRpcInputError::GenericNotFound(format!( + "No function was found with function name {function_name}", + )))?, + } + }, + None, + ) + .await } #[instrument(skip(self))] @@ -227,57 +244,62 @@ impl MoveUtilsServer for MoveUtils { module: String, function: String, ) -> RpcResult> { - with_tracing!(async move { - let object_read = self.internal.get_object_read(package)?; - - let normalized = match object_read { - ObjectRead::Exists(_obj_ref, object, _layout) => match object.into_inner().data { - Data::Package(p) => { - // we are on the read path - it's OK to use VERSION_MAX of the supported - // Move binary format - let binary_config = BinaryConfig::with_extraneous_bytes_check(false); - normalize_modules(p.serialized_module_map().values(), &binary_config) - .map_err(Error::from) - } - _ => Err(IotaRpcInputError::GenericInvalid(format!( - "Object is not a package with ID {package}" - )))?, - }, - _ => Err(IotaRpcInputError::GenericNotFound(format!( - "Package object does not exist with ID {package}" - )))?, - }?; - - let identifier = Identifier::new(function.as_str()) - .map_err(|e| IotaRpcInputError::GenericInvalid(format!("{e}")))?; - let parameters = normalized - .get(&module) - .and_then(|m| m.functions.get(&identifier).map(|f| f.parameters.clone())); - - match parameters { - Some(parameters) => Ok(parameters - .iter() - .map(|p| match p { - Type::Struct { - address: _, - module: _, - name: _, - type_arguments: _, - } => MoveFunctionArgType::Object(ObjectValueKind::ByValue), - Type::Reference(_) => { - MoveFunctionArgType::Object(ObjectValueKind::ByImmutableReference) - } - Type::MutableReference(_) => { - MoveFunctionArgType::Object(ObjectValueKind::ByMutableReference) + with_tracing( + async move { + let object_read = self.internal.get_object_read(package)?; + + let normalized = match object_read { + ObjectRead::Exists(_obj_ref, object, _layout) => match object.into_inner().data + { + Data::Package(p) => { + // we are on the read path - it's OK to use VERSION_MAX of the supported + // Move binary format + let binary_config = BinaryConfig::with_extraneous_bytes_check(false); + normalize_modules(p.serialized_module_map().values(), &binary_config) + .map_err(Error::from) } - _ => MoveFunctionArgType::Pure, - }) - .collect::>()), - None => Err(IotaRpcInputError::GenericNotFound(format!( - "No parameters found for function {function}" - )))?, - } - }) + _ => Err(IotaRpcInputError::GenericInvalid(format!( + "Object is not a package with ID {package}", + )))?, + }, + _ => Err(IotaRpcInputError::GenericNotFound(format!( + "Package object does not exist with ID {package}", + )))?, + }?; + + let identifier = Identifier::new(function.as_str()) + .map_err(|e| IotaRpcInputError::GenericInvalid(format!("{e}")))?; + let parameters = normalized + .get(&module) + .and_then(|m| m.functions.get(&identifier).map(|f| f.parameters.clone())); + + match parameters { + Some(parameters) => Ok(parameters + .iter() + .map(|p| match p { + Type::Struct { + address: _, + module: _, + name: _, + type_arguments: _, + } => MoveFunctionArgType::Object(ObjectValueKind::ByValue), + Type::Reference(_) => { + MoveFunctionArgType::Object(ObjectValueKind::ByImmutableReference) + } + Type::MutableReference(_) => { + MoveFunctionArgType::Object(ObjectValueKind::ByMutableReference) + } + _ => MoveFunctionArgType::Pure, + }) + .collect::>()), + None => Err(IotaRpcInputError::GenericNotFound(format!( + "No parameters found for function {function}", + )))?, + } + }, + None, + ) + .await } } @@ -285,7 +307,6 @@ impl MoveUtilsServer for MoveUtils { mod tests { mod get_normalized_move_module_tests { - use jsonrpsee::types::ErrorObjectOwned; use move_binary_format::file_format::basic_test_module; use super::super::*; @@ -338,10 +359,9 @@ mod tests { .get_normalized_move_module(package, module_name) .await; let error_result = response.unwrap_err(); - let error_object: ErrorObjectOwned = error_result.into(); - assert_eq!(error_object.code(), -32602); - assert_eq!(error_object.message(), &error_string); + assert_eq!(error_result.code(), -32602); + assert_eq!(error_result.message(), &error_string); } } } diff --git a/crates/iota-json-rpc/src/read_api.rs b/crates/iota-json-rpc/src/read_api.rs index dbe40ea3c7d..d1b15ab1a18 100644 --- a/crates/iota-json-rpc/src/read_api.rs +++ b/crates/iota-json-rpc/src/read_api.rs @@ -16,7 +16,7 @@ use iota_json_rpc_api::{ use iota_json_rpc_types::{ BalanceChange, Checkpoint, CheckpointId, CheckpointPage, DisplayFieldsResponse, EventFilter, IotaEvent, IotaGetPastObjectRequest, IotaLoadedChildObject, IotaLoadedChildObjectsResponse, - IotaMoveStruct, IotaMoveValue, IotaObjectDataOptions, IotaObjectResponse, + IotaMoveStruct, IotaMoveValue, IotaObjectData, IotaObjectDataOptions, IotaObjectResponse, IotaPastObjectResponse, IotaTransactionBlock, IotaTransactionBlockEvents, IotaTransactionBlockResponse, IotaTransactionBlockResponseOptions, ObjectChange, ProtocolConfigResponse, @@ -49,13 +49,14 @@ use move_core_types::{ }; use mysten_metrics::spawn_monitored_task; use tap::TapFallible; -use tracing::{debug, error, info, instrument, trace, warn}; +use tracing::{debug, error, instrument, trace, warn}; use crate::{ authority_state::{StateRead, StateReadError, StateReadResult}, error::{Error, IotaRpcInputError, RpcInterimResult}, - get_balance_changes_from_effect, get_object_changes, with_tracing, IotaRpcModule, - ObjectProviderCache, + get_balance_changes_from_effect, get_object_changes, + logger::with_tracing, + IotaRpcModule, ObjectProviderCache, }; const MAX_DISPLAY_NESTED_LEVEL: usize = 10; @@ -489,52 +490,62 @@ impl ReadApiServer for ReadApi { object_id: ObjectID, options: Option, ) -> RpcResult { - with_tracing!(async move { - let state = self.state.clone(); - let object_read = spawn_monitored_task!(async move { - state.get_object_read(&object_id).map_err(|e| { - warn!(?object_id, "Failed to get object: {:?}", e); - Error::from(e) + with_tracing( + async move { + let state = self.state.clone(); + let object_read = spawn_monitored_task!(async move { + state.get_object_read(&object_id).map_err(|e| { + warn!(?object_id, "Failed to get object: {:?}", e); + Error::from(e) + }) }) - }) - .await - .map_err(Error::from)??; - let options = options.unwrap_or_default(); - - match object_read { - ObjectRead::NotExists(id) => Ok(IotaObjectResponse::new_with_error( - IotaObjectResponseError::NotExists { object_id: id }, - )), - ObjectRead::Exists(object_ref, o, layout) => { - let mut display_fields = None; - if options.show_display { - match get_display_fields(self, &self.transaction_kv_store, &o, &layout) - .await - { - Ok(rendered_fields) => display_fields = Some(rendered_fields), - Err(e) => { - return Ok(IotaObjectResponse::new( - Some((object_ref, o, layout, options, None).try_into()?), - Some(IotaObjectResponseError::DisplayError { - error: e.to_string(), - }), - )); + .await + .map_err(Error::from)??; + let options = options.unwrap_or_default(); + + match object_read { + ObjectRead::NotExists(id) => Ok(IotaObjectResponse::new_with_error( + IotaObjectResponseError::NotExists { object_id: id }, + )), + ObjectRead::Exists(object_ref, o, layout) => { + let mut display_fields = None; + if options.show_display { + match get_display_fields(self, &self.transaction_kv_store, &o, &layout) + .await + { + Ok(rendered_fields) => display_fields = Some(rendered_fields), + Err(e) => { + return Ok(IotaObjectResponse::new( + Some(IotaObjectData::new( + object_ref, o, layout, options, None, + )?), + Some(IotaObjectResponseError::DisplayError { + error: e.to_string(), + }), + )); + } } } + Ok(IotaObjectResponse::new_with_data(IotaObjectData::new( + object_ref, + o, + layout, + options, + display_fields, + )?)) } - Ok(IotaObjectResponse::new_with_data( - (object_ref, o, layout, options, display_fields).try_into()?, - )) + ObjectRead::Deleted((object_id, version, digest)) => Ok( + IotaObjectResponse::new_with_error(IotaObjectResponseError::Deleted { + object_id, + version, + digest, + }), + ), } - ObjectRead::Deleted((object_id, version, digest)) => Ok( - IotaObjectResponse::new_with_error(IotaObjectResponseError::Deleted { - object_id, - version, - digest, - }), - ), - } - }) + }, + None, + ) + .await } #[instrument(skip(self))] @@ -543,45 +554,52 @@ impl ReadApiServer for ReadApi { object_ids: Vec, options: Option, ) -> RpcResult> { - with_tracing!(async move { - if object_ids.len() <= *QUERY_MAX_RESULT_LIMIT { - self.metrics - .get_objects_limit - .report(object_ids.len() as u64); - let mut futures = vec![]; - for object_id in object_ids { - futures.push(self.get_object(object_id, options.clone())); - } - let results = join_all(futures).await; - - let objects_result: Result, String> = results - .into_iter() - .map(|result| match result { - Ok(response) => Ok(response), - Err(error) => { - error!("Failed to fetch object with error: {error:?}"); - Err(format!("Error: {}", error)) - } - }) - .collect(); - - let objects = objects_result.map_err(|err| { - Error::UnexpectedError(format!("Failed to fetch objects with error: {}", err)) - })?; + with_tracing( + async move { + if object_ids.len() <= *QUERY_MAX_RESULT_LIMIT { + self.metrics + .get_objects_limit + .report(object_ids.len() as u64); + let mut futures = vec![]; + for object_id in object_ids { + futures.push(self.get_object(object_id, options.clone())); + } + let results = join_all(futures).await; - self.metrics - .get_objects_result_size - .report(objects.len() as u64); - self.metrics - .get_objects_result_size_total - .inc_by(objects.len() as u64); - Ok(objects) - } else { - Err(IotaRpcInputError::SizeLimitExceeded( - QUERY_MAX_RESULT_LIMIT.to_string(), - ))? - } - }) + let objects_result: Result, String> = results + .into_iter() + .map(|result| match result { + Ok(response) => Ok(response), + Err(error) => { + error!("Failed to fetch object with error: {error:?}"); + Err(format!("Error: {}", error)) + } + }) + .collect(); + + let objects = objects_result.map_err(|err| { + Error::UnexpectedError(format!( + "Failed to fetch objects with error: {}", + err + )) + })?; + + self.metrics + .get_objects_result_size + .report(objects.len() as u64); + self.metrics + .get_objects_result_size_total + .inc_by(objects.len() as u64); + Ok(objects) + } else { + Err(IotaRpcInputError::SizeLimitExceeded( + QUERY_MAX_RESULT_LIMIT.to_string(), + ))? + } + }, + None, + ) + .await } #[instrument(skip(self))] @@ -591,7 +609,7 @@ impl ReadApiServer for ReadApi { version: SequenceNumber, options: Option, ) -> RpcResult { - with_tracing!(async move { + with_tracing(async move { let state = self.state.clone(); let past_read = spawn_monitored_task!(async move { state.get_past_object_read(&object_id, version) @@ -620,7 +638,7 @@ impl ReadApiServer for ReadApi { None }; Ok(IotaPastObjectResponse::VersionFound( - (object_ref, o, layout, options, display_fields).try_into()?, + IotaObjectData::new(object_ref, o, layout, options, display_fields)?, )) } PastObjectRead::ObjectDeleted(oref) => { @@ -639,7 +657,10 @@ impl ReadApiServer for ReadApi { latest_version, }), } - }) + }, + None, + ) + .await } #[instrument(skip(self))] @@ -648,48 +669,57 @@ impl ReadApiServer for ReadApi { past_objects: Vec, options: Option, ) -> RpcResult> { - with_tracing!(async move { - if past_objects.len() <= *QUERY_MAX_RESULT_LIMIT { - let mut futures = vec![]; - for past_object in past_objects { - futures.push(self.try_get_past_object( - past_object.object_id, - past_object.version, - options.clone(), - )); - } - let results = join_all(futures).await; - - let (oks, errs): (Vec<_>, Vec<_>) = results.into_iter().partition(Result::is_ok); - let success = oks.into_iter().filter_map(Result::ok).collect(); - let errors: Vec<_> = errs.into_iter().filter_map(Result::err).collect(); - if !errors.is_empty() { - let error_string = errors - .iter() - .map(|e| e.to_string()) - .collect::>() - .join("; "); - Err(anyhow!("{error_string}").into()) // Collects errors not related to IotaPastObjectResponse variants + with_tracing( + async move { + if past_objects.len() <= *QUERY_MAX_RESULT_LIMIT { + let mut futures = vec![]; + for past_object in past_objects { + futures.push(self.try_get_past_object( + past_object.object_id, + past_object.version, + options.clone(), + )); + } + let results = join_all(futures).await; + + let (oks, errs): (Vec<_>, Vec<_>) = + results.into_iter().partition(Result::is_ok); + let success = oks.into_iter().filter_map(Result::ok).collect(); + let errors: Vec<_> = errs.into_iter().filter_map(Result::err).collect(); + if !errors.is_empty() { + let error_string = errors + .iter() + .map(|e| e.to_string()) + .collect::>() + .join("; "); + Err(anyhow!("{error_string}").into()) // Collects errors not related to IotaPastObjectResponse variants + } else { + Ok(success) + } } else { - Ok(success) + Err(IotaRpcInputError::SizeLimitExceeded( + QUERY_MAX_RESULT_LIMIT.to_string(), + ))? } - } else { - Err(IotaRpcInputError::SizeLimitExceeded( - QUERY_MAX_RESULT_LIMIT.to_string(), - ))? - } - }) + }, + None, + ) + .await } #[instrument(skip(self))] async fn get_total_transaction_blocks(&self) -> RpcResult> { - with_tracing!(async move { - Ok(self - .state - .get_total_transaction_blocks() - .map_err(Error::from)? - .into()) // converts into BigInt - }) + with_tracing( + async move { + Ok(self + .state + .get_total_transaction_blocks() + .map_err(Error::from)? + .into()) // converts into BigInt + }, + None, + ) + .await } #[instrument(skip(self))] @@ -698,7 +728,7 @@ impl ReadApiServer for ReadApi { digest: TransactionDigest, opts: Option, ) -> RpcResult { - with_tracing!(async move { + with_tracing(async move { let opts = opts.unwrap_or_default(); let mut temp_response = IntermediateTransactionResponse::new(digest); @@ -846,7 +876,10 @@ impl ReadApiServer for ReadApi { } let epoch_store = self.state.load_epoch_store_one_call_per_task(); convert_to_response(temp_response, &opts, epoch_store.module_cache()) - }) + }, + None, + ) + .await } #[instrument(skip(self))] @@ -855,21 +888,25 @@ impl ReadApiServer for ReadApi { digests: Vec, opts: Option, ) -> RpcResult> { - with_tracing!(async move { - let cloned_self = self.clone(); - spawn_monitored_task!(async move { - cloned_self - .multi_get_transaction_blocks_internal(digests, opts) - .await - }) - .await - .map_err(Error::from)? - }) + with_tracing( + async move { + let cloned_self = self.clone(); + spawn_monitored_task!(async move { + cloned_self + .multi_get_transaction_blocks_internal(digests, opts) + .await + }) + .await + .map_err(Error::from)? + }, + None, + ) + .await } #[instrument(skip(self))] async fn get_events(&self, transaction_digest: TransactionDigest) -> RpcResult> { - with_tracing!(async move { + with_tracing(async move { let state = self.state.clone(); let transaction_kv_store = self.transaction_kv_store.clone(); spawn_monitored_task!(async move{ @@ -879,55 +916,64 @@ impl ReadApiServer for ReadApi { .await .map_err(Error::from)?; let events = if let Some(event_digest) = effect.events_digest() { - transaction_kv_store - .get_events(*event_digest) - .await - .map_err( - |e| { - error!("Failed to get transaction events for event digest {event_digest:?} with error: {e:?}"); - Error::StateReadError(e.into()) - })? - .data - .into_iter() - .enumerate() - .map(|(seq, e)| { - let layout = store.executor().type_layout_resolver(Box::new(&state.get_backing_package_store().as_ref())).get_annotated_layout(&e.type_)?; - IotaEvent::try_from( - e, - *effect.transaction_digest(), - seq as u64, - None, - layout, - ) - }) - .collect::, _>>() - .map_err(Error::IotaError)? - } else { - vec![] - }; - Ok(events) - }).await.map_err(Error::from)? - }) + transaction_kv_store + .get_events(*event_digest) + .await + .map_err( + |e| { + error!("Failed to get transaction events for event digest {event_digest:?} with error: {e:?}"); + Error::StateReadError(e.into()) + })? + .data + .into_iter() + .enumerate() + .map(|(seq, e)| { + let layout = store.executor().type_layout_resolver(Box::new(&state.get_backing_package_store().as_ref())).get_annotated_layout(&e.type_)?; + IotaEvent::try_from( + e, + *effect.transaction_digest(), + seq as u64, + None, + layout, + ) + }) + .collect::, _>>() + .map_err(Error::IotaError)? + } else { + Vec::new() + }; + Ok(events) + }) + .await + .map_err(Error::from)? + }, + None, + ) + .await } #[instrument(skip(self))] async fn get_latest_checkpoint_sequence_number(&self) -> RpcResult> { - with_tracing!(async move { - Ok(self - .state - .get_latest_checkpoint_sequence_number() - .map_err(|e| { - IotaRpcInputError::GenericNotFound(format!( - "Latest checkpoint sequence number was not found with error :{e}" - )) - })? - .into()) - }) + with_tracing( + async move { + Ok(self + .state + .get_latest_checkpoint_sequence_number() + .map_err(|e| { + IotaRpcInputError::GenericNotFound(format!( + "Latest checkpoint sequence number was not found with error :{e}" + )) + })? + .into()) + }, + None, + ) + .await } #[instrument(skip(self))] async fn get_checkpoint(&self, id: CheckpointId) -> RpcResult { - with_tracing!(self.get_checkpoint_internal(id)) + with_tracing(self.get_checkpoint_internal(id), None).await } #[instrument(skip(self))] @@ -938,48 +984,52 @@ impl ReadApiServer for ReadApi { limit: Option, descending_order: bool, ) -> RpcResult { - with_tracing!(async move { - let limit = validate_limit(limit, QUERY_MAX_RESULT_LIMIT_CHECKPOINTS) - .map_err(IotaRpcInputError::from)?; + with_tracing( + async move { + let limit = validate_limit(limit, QUERY_MAX_RESULT_LIMIT_CHECKPOINTS) + .map_err(IotaRpcInputError::from)?; - let state = self.state.clone(); - let kv_store = self.transaction_kv_store.clone(); + let state = self.state.clone(); + let kv_store = self.transaction_kv_store.clone(); - self.metrics.get_checkpoints_limit.report(limit as u64); + self.metrics.get_checkpoints_limit.report(limit as u64); - let mut data = spawn_monitored_task!(Self::get_checkpoints_internal( - state, - kv_store, - cursor.map(|s| *s), - limit as u64 + 1, - descending_order, - )) - .await - .map_err(Error::from)? - .map_err(Error::from)?; + let mut data = spawn_monitored_task!(Self::get_checkpoints_internal( + state, + kv_store, + cursor.map(|s| *s), + limit as u64 + 1, + descending_order, + )) + .await + .map_err(Error::from)? + .map_err(Error::from)?; - let has_next_page = data.len() > limit; - data.truncate(limit); + let has_next_page = data.len() > limit; + data.truncate(limit); - let next_cursor = if has_next_page { - data.last().cloned().map(|d| d.sequence_number.into()) - } else { - None - }; - - self.metrics - .get_checkpoints_result_size - .report(data.len() as u64); - self.metrics - .get_checkpoints_result_size_total - .inc_by(data.len() as u64); - - Ok(CheckpointPage { - data, - next_cursor, - has_next_page, - }) - }) + let next_cursor = if has_next_page { + data.last().cloned().map(|d| d.sequence_number.into()) + } else { + None + }; + + self.metrics + .get_checkpoints_result_size + .report(data.len() as u64); + self.metrics + .get_checkpoints_result_size_total + .inc_by(data.len() as u64); + + Ok(CheckpointPage { + data, + next_cursor, + has_next_page, + }) + }, + None, + ) + .await } #[instrument(skip(self))] @@ -989,11 +1039,8 @@ impl ReadApiServer for ReadApi { limit: Option>, descending_order: bool, ) -> RpcResult { - with_tracing!(async move { - self.get_checkpoints(cursor, limit.map(|l| *l as usize), descending_order) - .await - .map_err(Error::from) - }) + self.get_checkpoints(cursor, limit.map(|l| *l as usize), descending_order) + .await } #[instrument(skip(self))] @@ -1001,24 +1048,30 @@ impl ReadApiServer for ReadApi { &self, digest: TransactionDigest, ) -> RpcResult { - with_tracing!(async move { - let res = self - .state - .loaded_child_object_versions(&digest) - .map_err(|e| { - error!("Failed to get loaded child objects at {digest:?} with error: {e:?}"); - Error::StateReadError(e) - })?; - Ok(IotaLoadedChildObjectsResponse { - loaded_child_objects: match res { - Some(v) => v - .into_iter() - .map(|q| IotaLoadedChildObject::new(q.0, q.1)) - .collect::>(), - None => vec![], - }, - }) - }) + with_tracing( + async move { + let res = self + .state + .loaded_child_object_versions(&digest) + .map_err(|e| { + error!( + "Failed to get loaded child objects at {digest:?} with error: {e:?}" + ); + Error::StateReadError(e) + })?; + Ok(IotaLoadedChildObjectsResponse { + loaded_child_objects: match res { + Some(v) => v + .into_iter() + .map(|q| IotaLoadedChildObject::new(q.0, q.1)) + .collect::>(), + None => vec![], + }, + }) + }, + None, + ) + .await } #[instrument(skip(self))] @@ -1026,34 +1079,42 @@ impl ReadApiServer for ReadApi { &self, version: Option>, ) -> RpcResult { - with_tracing!(async move { - version - .map(|v| { - ProtocolConfig::get_for_version_if_supported( - (*v).into(), - self.state.get_chain_identifier()?.chain(), - ) - .ok_or(IotaRpcInputError::ProtocolVersionUnsupported( - ProtocolVersion::MIN.as_u64(), - ProtocolVersion::MAX.as_u64(), - )) - .map_err(Error::from) - }) - .unwrap_or(Ok(self - .state - .load_epoch_store_one_call_per_task() - .protocol_config() - .clone())) - .map(ProtocolConfigResponse::from) - }) + with_tracing( + async move { + version + .map(|v| { + ProtocolConfig::get_for_version_if_supported( + (*v).into(), + self.state.get_chain_identifier()?.chain(), + ) + .ok_or(IotaRpcInputError::ProtocolVersionUnsupported( + ProtocolVersion::MIN.as_u64(), + ProtocolVersion::MAX.as_u64(), + )) + .map_err(Error::from) + }) + .unwrap_or(Ok(self + .state + .load_epoch_store_one_call_per_task() + .protocol_config() + .clone())) + .map(ProtocolConfigResponse::from) + }, + None, + ) + .await } #[instrument(skip(self))] async fn get_chain_identifier(&self) -> RpcResult { - with_tracing!(async move { - let ci = self.state.get_chain_identifier()?; - Ok(ci.to_string()) - }) + with_tracing( + async move { + let ci = self.state.get_chain_identifier()?; + Ok(ci.to_string()) + }, + None, + ) + .await } } diff --git a/crates/iota-json-rpc/src/transaction_builder_api.rs b/crates/iota-json-rpc/src/transaction_builder_api.rs index 8181cf0eb5e..2c034f7d2f3 100644 --- a/crates/iota-json-rpc/src/transaction_builder_api.rs +++ b/crates/iota-json-rpc/src/transaction_builder_api.rs @@ -8,7 +8,7 @@ use async_trait::async_trait; use fastcrypto::encoding::Base64; use iota_core::authority::AuthorityState; use iota_json::IotaJsonValue; -use iota_json_rpc_api::{TransactionBuilderOpenRpc, TransactionBuilderServer}; +use iota_json_rpc_api::{internal_error, TransactionBuilderOpenRpc, TransactionBuilderServer}; use iota_json_rpc_types::{ IotaObjectDataFilter, IotaObjectDataOptions, IotaObjectResponse, IotaTransactionBlockBuilderMode, IotaTypeTag, RPCTransactionRequestParams, @@ -91,8 +91,9 @@ impl TransactionBuilderServer for TransactionBuilderApi { let data = self .0 .transfer_object(signer, object_id, gas, *gas_budget, recipient) - .await?; - Ok(TransactionBlockBytes::from_data(data)?) + .await + .map_err(internal_error)?; + Ok(TransactionBlockBytes::from_data(data).map_err(internal_error)?) } async fn transfer_iota( @@ -112,8 +113,9 @@ impl TransactionBuilderServer for TransactionBuilderApi { recipient, amount.map(|a| *a), ) - .await?; - Ok(TransactionBlockBytes::from_data(data)?) + .await + .map_err(internal_error)?; + Ok(TransactionBlockBytes::from_data(data).map_err(internal_error)?) } async fn pay( @@ -135,8 +137,9 @@ impl TransactionBuilderServer for TransactionBuilderApi { gas, *gas_budget, ) - .await?; - Ok(TransactionBlockBytes::from_data(data)?) + .await + .map_err(internal_error)?; + Ok(TransactionBlockBytes::from_data(data).map_err(internal_error)?) } async fn pay_iota( @@ -156,8 +159,9 @@ impl TransactionBuilderServer for TransactionBuilderApi { amounts.into_iter().map(|a| *a).collect(), *gas_budget, ) - .await?; - Ok(TransactionBlockBytes::from_data(data)?) + .await + .map_err(internal_error)?; + Ok(TransactionBlockBytes::from_data(data).map_err(internal_error)?) } async fn pay_all_iota( @@ -170,8 +174,9 @@ impl TransactionBuilderServer for TransactionBuilderApi { let data = self .0 .pay_all_iota(signer, input_coins, recipient, *gas_budget) - .await?; - Ok(TransactionBlockBytes::from_data(data)?) + .await + .map_err(internal_error)?; + Ok(TransactionBlockBytes::from_data(data).map_err(internal_error)?) } async fn publish( @@ -185,12 +190,14 @@ impl TransactionBuilderServer for TransactionBuilderApi { let compiled_modules = compiled_modules .into_iter() .map(|data| data.to_vec().map_err(|e| anyhow::anyhow!(e))) - .collect::, _>>()?; + .collect::, _>>() + .map_err(internal_error)?; let data = self .0 .publish(sender, compiled_modules, dependencies, gas, *gas_budget) - .await?; - Ok(TransactionBlockBytes::from_data(data)?) + .await + .map_err(internal_error)?; + Ok(TransactionBlockBytes::from_data(data).map_err(internal_error)?) } async fn split_coin( @@ -205,8 +212,9 @@ impl TransactionBuilderServer for TransactionBuilderApi { let data = self .0 .split_coin(signer, coin_object_id, split_amounts, gas, *gas_budget) - .await?; - Ok(TransactionBlockBytes::from_data(data)?) + .await + .map_err(internal_error)?; + Ok(TransactionBlockBytes::from_data(data).map_err(internal_error)?) } async fn split_coin_equal( @@ -220,8 +228,9 @@ impl TransactionBuilderServer for TransactionBuilderApi { let data = self .0 .split_coin_equal(signer, coin_object_id, *split_count, gas, *gas_budget) - .await?; - Ok(TransactionBlockBytes::from_data(data)?) + .await + .map_err(internal_error)?; + Ok(TransactionBlockBytes::from_data(data).map_err(internal_error)?) } async fn merge_coin( @@ -235,8 +244,9 @@ impl TransactionBuilderServer for TransactionBuilderApi { let data = self .0 .merge_coins(signer, primary_coin, coin_to_merge, gas, *gas_budget) - .await?; - Ok(TransactionBlockBytes::from_data(data)?) + .await + .map_err(internal_error)?; + Ok(TransactionBlockBytes::from_data(data).map_err(internal_error)?) } async fn move_call( @@ -264,8 +274,10 @@ impl TransactionBuilderServer for TransactionBuilderApi { *gas_budget, None, ) - .await?, - )?) + .await + .map_err(internal_error)?, + ) + .map_err(internal_error)?) } async fn batch_transaction( @@ -279,8 +291,10 @@ impl TransactionBuilderServer for TransactionBuilderApi { Ok(TransactionBlockBytes::from_data( self.0 .batch_transaction(signer, params, gas, *gas_budget) - .await?, - )?) + .await + .map_err(internal_error)?, + ) + .map_err(internal_error)?) } async fn request_add_stake( @@ -296,8 +310,10 @@ impl TransactionBuilderServer for TransactionBuilderApi { Ok(TransactionBlockBytes::from_data( self.0 .request_add_stake(signer, coins, amount, validator, gas, *gas_budget) - .await?, - )?) + .await + .map_err(internal_error)?, + ) + .map_err(internal_error)?) } async fn request_withdraw_stake( @@ -310,8 +326,10 @@ impl TransactionBuilderServer for TransactionBuilderApi { Ok(TransactionBlockBytes::from_data( self.0 .request_withdraw_stake(signer, staked_iota, gas, *gas_budget) - .await?, - )?) + .await + .map_err(internal_error)?, + ) + .map_err(internal_error)?) } async fn request_add_timelocked_stake( @@ -325,8 +343,10 @@ impl TransactionBuilderServer for TransactionBuilderApi { Ok(TransactionBlockBytes::from_data( self.0 .request_add_timelocked_stake(signer, locked_balance, validator, gas, *gas_budget) - .await?, - )?) + .await + .map_err(internal_error)?, + ) + .map_err(internal_error)?) } async fn request_withdraw_timelocked_stake( @@ -339,8 +359,10 @@ impl TransactionBuilderServer for TransactionBuilderApi { Ok(TransactionBlockBytes::from_data( self.0 .request_withdraw_timelocked_stake(signer, timelocked_staked_iota, gas, *gas_budget) - .await?, - )?) + .await + .map_err(internal_error)?, + ) + .map_err(internal_error)?) } } diff --git a/crates/iota-json-rpc/src/transaction_execution_api.rs b/crates/iota-json-rpc/src/transaction_execution_api.rs index b5588fdc2f7..8767f2477e0 100644 --- a/crates/iota-json-rpc/src/transaction_execution_api.rs +++ b/crates/iota-json-rpc/src/transaction_execution_api.rs @@ -38,8 +38,9 @@ use tracing::instrument; use crate::{ authority_state::StateRead, error::{Error, IotaRpcInputError}, - get_balance_changes_from_effect, get_object_changes, with_tracing, IotaRpcModule, - ObjectProviderCache, + get_balance_changes_from_effect, get_object_changes, + logger::with_tracing, + IotaRpcModule, ObjectProviderCache, }; pub struct TransactionExecutionApi { @@ -282,10 +283,11 @@ impl WriteApiServer for TransactionExecutionApi { opts: Option, request_type: Option, ) -> RpcResult { - with_tracing!(Duration::from_secs(10), async move { - self.execute_transaction_block(tx_bytes, signatures, opts, request_type) - .await - }) + with_tracing( + self.execute_transaction_block(tx_bytes, signatures, opts, request_type), + Duration::from_secs(10), + ) + .await } #[instrument(skip(self))] @@ -297,29 +299,33 @@ impl WriteApiServer for TransactionExecutionApi { _epoch: Option>, additional_args: Option, ) -> RpcResult { - with_tracing!(async move { - let DevInspectArgs { - gas_sponsor, - gas_budget, - gas_objects, - show_raw_txn_data_and_effects, - skip_checks, - } = additional_args.unwrap_or_default(); - let tx_kind: TransactionKind = self.convert_bytes(tx_bytes)?; - self.state - .dev_inspect_transaction_block( - sender_address, - tx_kind, - gas_price.map(|i| *i), - gas_budget.map(|i| *i), + with_tracing( + async move { + let DevInspectArgs { gas_sponsor, + gas_budget, gas_objects, show_raw_txn_data_and_effects, skip_checks, - ) - .await - .map_err(Error::from) - }) + } = additional_args.unwrap_or_default(); + let tx_kind: TransactionKind = self.convert_bytes(tx_bytes)?; + self.state + .dev_inspect_transaction_block( + sender_address, + tx_kind, + gas_price.map(|i| *i), + gas_budget.map(|i| *i), + gas_sponsor, + gas_objects, + show_raw_txn_data_and_effects, + skip_checks, + ) + .await + .map_err(Error::from) + }, + None, + ) + .await } #[instrument(skip(self))] @@ -327,7 +333,7 @@ impl WriteApiServer for TransactionExecutionApi { &self, tx_bytes: Base64, ) -> RpcResult { - with_tracing!(async move { self.dry_run_transaction_block(tx_bytes).await }) + with_tracing(self.dry_run_transaction_block(tx_bytes), None).await } } diff --git a/crates/iota-light-client/src/main.rs b/crates/iota-light-client/src/main.rs index 6786e113c95..c76ecfad0ad 100644 --- a/crates/iota-light-client/src/main.rs +++ b/crates/iota-light-client/src/main.rs @@ -182,7 +182,8 @@ fn write_checkpoint_list( let mut checkpoints_path = config.checkpoint_summary_dir.clone(); checkpoints_path.push("checkpoints.yaml"); let mut writer = fs::File::create(checkpoints_path.clone())?; - let bytes = serde_yaml::to_vec(&checkpoints_list)?; + let mut bytes = Vec::new(); + serde_yaml::to_writer(&mut bytes, &checkpoints_list)?; writer .write_all(&bytes) .map_err(|_| anyhow!("Unable to serialize checkpoint list")) diff --git a/crates/iota-metric-checker/Cargo.toml b/crates/iota-metric-checker/Cargo.toml index 6882d28c4d1..0ec62202954 100644 --- a/crates/iota-metric-checker/Cargo.toml +++ b/crates/iota-metric-checker/Cargo.toml @@ -18,7 +18,7 @@ prometheus-http-query.workspace = true reqwest.workspace = true serde.workspace = true serde_yaml = "0.9.21" -strum_macros.workspace = true +strum.workspace = true telemetry-subscribers.workspace = true tokio = { workspace = true, features = ["full"] } tracing.workspace = true diff --git a/crates/iota-metric-checker/src/lib.rs b/crates/iota-metric-checker/src/lib.rs index ced987028ca..62623719ace 100644 --- a/crates/iota-metric-checker/src/lib.rs +++ b/crates/iota-metric-checker/src/lib.rs @@ -5,7 +5,7 @@ use anyhow::anyhow; use chrono::{DateTime, Duration, NaiveDateTime, Utc}; use humantime::parse_duration; use serde::Deserialize; -use strum_macros::Display; +use strum::Display; pub mod query; @@ -129,9 +129,9 @@ pub fn fails_threshold_condition( } fn unix_seconds_to_timestamp_string(unix_seconds: i64) -> String { - let datetime = NaiveDateTime::from_timestamp_opt(unix_seconds, 0); - let timestamp: DateTime = DateTime::from_naive_utc_and_offset(datetime.unwrap(), Utc); - timestamp.to_string() + DateTime::::from_timestamp(unix_seconds, 0) + .unwrap() + .to_string() } #[cfg(test)] diff --git a/crates/iota-move-build/Cargo.toml b/crates/iota-move-build/Cargo.toml index 3d2b92f1125..9ddb6783df9 100644 --- a/crates/iota-move-build/Cargo.toml +++ b/crates/iota-move-build/Cargo.toml @@ -17,7 +17,6 @@ move-bytecode-verifier = { path = "../../external-crates/move/crates/move-byteco iota-protocol-config.workspace = true iota-types.workspace = true -serde-reflection.workspace = true move-binary-format.workspace = true move-bytecode-utils.workspace = true diff --git a/crates/iota-move-build/src/lib.rs b/crates/iota-move-build/src/lib.rs index 1c2f7a0e1df..7ec2f15ebf9 100644 --- a/crates/iota-move-build/src/lib.rs +++ b/crates/iota-move-build/src/lib.rs @@ -27,7 +27,10 @@ use move_binary_format::{ normalized::{self, Type}, CompiledModule, }; -use move_bytecode_utils::{layout::SerdeLayoutBuilder, module_cache::GetModule}; +use move_bytecode_utils::{ + layout::{SerdeLayoutBuilder, YamlRegistry}, + module_cache::GetModule, +}; use move_compiler::{ compiled_unit::AnnotatedCompiledModule, diagnostics::{report_diagnostics_to_buffer, report_warnings, Diagnostics, FilesSourceText}, @@ -48,7 +51,6 @@ use move_package::{ BuildConfig as MoveBuildConfig, }; use move_symbol_pool::Symbol; -use serde_reflection::Registry; #[cfg(test)] #[path = "unit_tests/build_tests.rs"] @@ -456,7 +458,7 @@ impl CompiledPackage { /// These layout schemas can be consumed by clients (e.g., the TypeScript /// SDK) to enable BCS serialization/deserialization of the package's /// objects, tx arguments, and events. - pub fn generate_struct_layouts(&self) -> Registry { + pub fn generate_struct_layouts(&self) -> YamlRegistry { let mut package_types = BTreeSet::new(); for m in self.get_modules() { let normalized_m = normalized::Module::new(m); diff --git a/crates/iota-node/src/admin.rs b/crates/iota-node/src/admin.rs index 647d7c359d0..d7f917c1c38 100644 --- a/crates/iota-node/src/admin.rs +++ b/crates/iota-node/src/admin.rs @@ -101,10 +101,10 @@ pub async fn run_admin_server(node: Arc, port: u16, tracing_handle: Tr "starting admin server" ); - axum::Server::bind(&socket_address) - .serve(app.into_make_service()) + let listener = tokio::net::TcpListener::bind(socket_address).await.unwrap(); + axum::serve(listener, app.into_make_service()) .await - .unwrap() + .unwrap(); } #[derive(Deserialize)] diff --git a/crates/iota-node/src/lib.rs b/crates/iota-node/src/lib.rs index 16e1997d7a9..7d95b392643 100644 --- a/crates/iota-node/src/lib.rs +++ b/crates/iota-node/src/lib.rs @@ -20,6 +20,7 @@ use anemo_tower::{ }; use anyhow::{anyhow, Result}; use arc_swap::ArcSwap; +use fastcrypto::error::FastCryptoError; use fastcrypto_zkp::bn254::zk_login::{JwkId, OIDCProvider, JWK}; use futures::TryFutureExt; pub use handle::IotaNodeHandle; @@ -674,7 +675,8 @@ impl IotaNode { &prometheus_registry, custom_rpc_runtime, software_version, - )?; + ) + .await?; let accumulator = Arc::new(StateAccumulator::new(store)); @@ -1762,7 +1764,6 @@ impl IotaNode { _authority: AuthorityName, provider: &OIDCProvider, ) -> IotaResult> { - use fastcrypto_zkp::bn254::zk_login::fetch_jwks; let client = reqwest::Client::new(); fetch_jwks(provider, &client) .await @@ -1770,6 +1771,31 @@ impl IotaNode { } } +pub async fn fetch_jwks( + provider: &OIDCProvider, + client: &reqwest::Client, +) -> Result, FastCryptoError> { + let response = client + .get(provider.get_config().jwk_endpoint) + .send() + .await + .map_err(|e| { + FastCryptoError::GeneralError(format!( + "Failed to get JWK {:?} {:?}", + e.to_string(), + provider + )) + })?; + let bytes = response.bytes().await.map_err(|e| { + FastCryptoError::GeneralError(format!( + "Failed to get bytes {:?} {:?}", + e.to_string(), + provider + )) + })?; + fastcrypto_zkp::bn254::zk_login::parse_jwks(&bytes, provider) +} + #[cfg(msim)] impl IotaNode { pub fn get_sim_node_id(&self) -> iota_simulator::task::NodeId { @@ -1852,7 +1878,7 @@ fn build_kv_store( ))) } -pub fn build_http_server( +pub async fn build_http_server( state: Arc, store: RocksDbStore, transaction_orchestrator: &Option>>, @@ -1944,10 +1970,14 @@ pub fn build_http_server( router = router.nest("/rest", rest_router); } - let server = axum::Server::bind(&config.json_rpc_address).serve(router.into_make_service()); + let listener = tokio::net::TcpListener::bind(&config.json_rpc_address).await?; - let addr = server.local_addr(); - let handle = tokio::spawn(async move { server.await.unwrap() }); + let addr = listener.local_addr()?; + let handle = tokio::spawn(async move { + axum::serve(listener, router.into_make_service()) + .await + .unwrap() + }); info!(local_addr =? addr, "Iota JSON-RPC server listening on {addr}"); diff --git a/crates/iota-package-resolver/src/lib.rs b/crates/iota-package-resolver/src/lib.rs index cd3db14c195..67194bee66f 100644 --- a/crates/iota-package-resolver/src/lib.rs +++ b/crates/iota-package-resolver/src/lib.rs @@ -1918,7 +1918,7 @@ mod tests { ], ); - insta::assert_display_snapshot!( + insta::assert_snapshot!( sig.instantiate(&[T::U64, T::Bool]).unwrap_err(), @"Type Parameter 99 out of bounds (2)" ); @@ -2304,7 +2304,7 @@ mod tests { ], }; - insta::assert_display_snapshot!( + insta::assert_snapshot!( resolver.pure_input_layouts(&ptb).await.unwrap_err(), @"Conflicting types for input 3: u64 and u32" ); diff --git a/crates/iota-replay/src/types.rs b/crates/iota-replay/src/types.rs index d7288783e69..904b9b9d44a 100644 --- a/crates/iota-replay/src/types.rs +++ b/crates/iota-replay/src/types.rs @@ -14,7 +14,7 @@ use iota_types::{ object::Object, transaction::{InputObjectKind, SenderSignedData, TransactionKind}, }; -use jsonrpsee::core::Error as JsonRpseeError; +use jsonrpsee::core::ClientError as JsonRpseeError; use move_binary_format::CompiledModule; use move_core_types::{ account_address::AccountAddress, diff --git a/crates/iota-rest-api/Cargo.toml b/crates/iota-rest-api/Cargo.toml index ccef523f406..eb1d7adbb42 100644 --- a/crates/iota-rest-api/Cargo.toml +++ b/crates/iota-rest-api/Cargo.toml @@ -17,6 +17,7 @@ serde_json.workspace = true serde_with.workspace = true tap.workspace = true thiserror.workspace = true +tokio.workspace = true fastcrypto.workspace = true iota-types.workspace = true diff --git a/crates/iota-rest-api/src/accept.rs b/crates/iota-rest-api/src/accept.rs index b535a09ee65..7af070ce8d8 100644 --- a/crates/iota-rest-api/src/accept.rs +++ b/crates/iota-rest-api/src/accept.rs @@ -78,7 +78,10 @@ where mod tests { use std::str::FromStr; - use axum::{extract::FromRequest, http::Request}; + use axum::{ + body::Body, + extract::{FromRequest, Request}, + }; use http::header; use super::*; @@ -90,7 +93,7 @@ mod tests { header::ACCEPT, "text/html, text/yaml;q=0.5, application/xhtml+xml, application/xml;q=0.9, */*;q=0.1", ) - .body(()) + .body(Body::empty()) .unwrap(); let accept = Accept::from_request(req, &()).await.unwrap(); assert_eq!( @@ -109,14 +112,14 @@ mod tests { async fn test_accept_format() { let req = Request::builder() .header(header::ACCEPT, "*/*, application/bcs") - .body(()) + .body(Body::empty()) .unwrap(); let accept = AcceptFormat::from_request(req, &()).await.unwrap(); assert_eq!(accept, AcceptFormat::Bcs); let req = Request::builder() .header(header::ACCEPT, "*/*") - .body(()) + .body(Body::empty()) .unwrap(); let accept = AcceptFormat::from_request(req, &()).await.unwrap(); assert_eq!(accept, AcceptFormat::Json); diff --git a/crates/iota-rest-api/src/lib.rs b/crates/iota-rest-api/src/lib.rs index 4dca060ff62..8dfb810dd27 100644 --- a/crates/iota-rest-api/src/lib.rs +++ b/crates/iota-rest-api/src/lib.rs @@ -78,8 +78,8 @@ impl RestService { app = Router::new().nest(&base, app); } - axum::Server::bind(&socket_address) - .serve(app.into_make_service()) + let listener = tokio::net::TcpListener::bind(socket_address).await.unwrap(); + axum::serve(listener, app.into_make_service()) .await .unwrap(); } diff --git a/crates/iota-rosetta/Cargo.toml b/crates/iota-rosetta/Cargo.toml index 459562436dc..847bcbceff1 100644 --- a/crates/iota-rosetta/Cargo.toml +++ b/crates/iota-rosetta/Cargo.toml @@ -10,7 +10,7 @@ publish = false anyhow.workspace = true async-trait.workspace = true axum.workspace = true -axum-extra.workspace = true +axum-extra = { workspace = true, features = ["typed-header"] } bcs.workspace = true clap.workspace = true eyre.workspace = true @@ -31,7 +31,6 @@ serde_json.workspace = true shared-crypto.workspace = true signature.workspace = true strum.workspace = true -strum_macros.workspace = true tempfile.workspace = true thiserror.workspace = true tokio.workspace = true @@ -47,5 +46,6 @@ iota-move-build.workspace = true iota-sdk.workspace = true rand.workspace = true reqwest.workspace = true +signature = { workspace = true, features = ["rand_core"] } tempfile.workspace = true test-cluster.workspace = true diff --git a/crates/iota-rosetta/src/errors.rs b/crates/iota-rosetta/src/errors.rs index 373662a1de2..941b4221df6 100644 --- a/crates/iota-rosetta/src/errors.rs +++ b/crates/iota-rosetta/src/errors.rs @@ -14,8 +14,7 @@ use fastcrypto::error::FastCryptoError; use iota_types::error::IotaError; use serde::{Serialize, Serializer}; use serde_json::{json, Value}; -use strum::{EnumProperty, IntoEnumIterator}; -use strum_macros::{Display, EnumDiscriminants, EnumIter}; +use strum::{Display, EnumDiscriminants, EnumIter, EnumProperty, IntoEnumIterator}; use thiserror::Error; use typed_store::TypedStoreError; diff --git a/crates/iota-rosetta/src/lib.rs b/crates/iota-rosetta/src/lib.rs index 6d42c649e7e..ec33d8fe468 100644 --- a/crates/iota-rosetta/src/lib.rs +++ b/crates/iota-rosetta/src/lib.rs @@ -46,7 +46,7 @@ impl RosettaOnlineServer { } } - pub fn serve(self, addr: SocketAddr) -> JoinHandle> { + pub async fn serve(self, addr: SocketAddr) -> anyhow::Result>> { // Online endpoints let app = Router::new() .route("/account/balance", post(account::balance)) @@ -60,12 +60,14 @@ impl RosettaOnlineServer { .route("/network/options", post(network::options)) .layer(Extension(self.env)) .with_state(self.context); - let server = axum::Server::bind(&addr).serve(app.into_make_service()); + let listener = tokio::net::TcpListener::bind(addr).await?; info!( "Iota Rosetta online server listening on {}", - server.local_addr() + listener.local_addr()? ); - spawn_monitored_task!(server) + Ok(spawn_monitored_task!(async { + axum::serve(listener, app.into_make_service()).await + })) } } @@ -78,7 +80,7 @@ impl RosettaOfflineServer { Self { env } } - pub fn serve(self, addr: SocketAddr) -> JoinHandle> { + pub async fn serve(self, addr: SocketAddr) -> anyhow::Result>> { // Online endpoints let app = Router::new() .route("/construction/derive", post(construction::derive)) @@ -90,11 +92,13 @@ impl RosettaOfflineServer { .route("/network/list", post(network::list)) .route("/network/options", post(network::options)) .layer(Extension(self.env)); - let server = axum::Server::bind(&addr).serve(app.into_make_service()); + let listener = tokio::net::TcpListener::bind(addr).await?; info!( "Iota Rosetta offline server listening on {}", - server.local_addr() + listener.local_addr()? ); - spawn_monitored_task!(server) + Ok(spawn_monitored_task!(async { + axum::serve(listener, app.into_make_service()).await + })) } } diff --git a/crates/iota-rosetta/src/main.rs b/crates/iota-rosetta/src/main.rs index 250e6564240..44cd6086eaa 100644 --- a/crates/iota-rosetta/src/main.rs +++ b/crates/iota-rosetta/src/main.rs @@ -139,7 +139,7 @@ impl RosettaServerCommand { RosettaServerCommand::StartOfflineServer { env, addr } => { info!("Starting Rosetta Offline Server."); let server = RosettaOfflineServer::new(env); - server.serve(addr).await??; + server.serve(addr).await?.await??; } RosettaServerCommand::StartOnlineRemoteServer { env, @@ -154,7 +154,7 @@ impl RosettaServerCommand { let rosetta_path = data_path.join("rosetta_db"); info!("Rosetta db path : {rosetta_path:?}"); let rosetta = RosettaOnlineServer::new(env, iota_client); - rosetta.serve(addr).await??; + rosetta.serve(addr).await?.await??; } RosettaServerCommand::StartOnlineServer { @@ -187,7 +187,7 @@ impl RosettaServerCommand { let rosetta_path = data_path.join("rosetta_db"); info!("Rosetta db path : {rosetta_path:?}"); let rosetta = RosettaOnlineServer::new(env, iota_client); - rosetta.serve(addr).await??; + rosetta.serve(addr).await?.await??; } }; Ok(()) diff --git a/crates/iota-rosetta/src/types.rs b/crates/iota-rosetta/src/types.rs index 96afb99a4ff..f19deba2832 100644 --- a/crates/iota-rosetta/src/types.rs +++ b/crates/iota-rosetta/src/types.rs @@ -22,7 +22,7 @@ use iota_types::{ }; use serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializer}; use serde_json::Value; -use strum_macros::{EnumIter, EnumString}; +use strum::{EnumIter, EnumString}; use crate::{ errors::{Error, ErrorType}, diff --git a/crates/iota-rosetta/tests/rosetta_client.rs b/crates/iota-rosetta/tests/rosetta_client.rs index b9aa14b4c60..1b20c818170 100644 --- a/crates/iota-rosetta/tests/rosetta_client.rs +++ b/crates/iota-rosetta/tests/rosetta_client.rs @@ -32,16 +32,22 @@ use tokio::task::JoinHandle; pub async fn start_rosetta_test_server( client: IotaClient, -) -> (RosettaClient, Vec>>) { +) -> (RosettaClient, Vec>>) { let online_server = RosettaOnlineServer::new(IotaEnv::LocalNet, client); let offline_server = RosettaOfflineServer::new(IotaEnv::LocalNet); let local_ip = local_ip_utils::localhost_for_testing(); let port = local_ip_utils::get_available_port(&local_ip); let rosetta_address = format!("{}:{}", local_ip, port); - let online_handle = online_server.serve(SocketAddr::from_str(&rosetta_address).unwrap()); + let online_handle = online_server + .serve(SocketAddr::from_str(&rosetta_address).unwrap()) + .await + .unwrap(); let offline_port = local_ip_utils::get_available_port(&local_ip); let offline_address = format!("{}:{}", local_ip, offline_port); - let offline_handle = offline_server.serve(SocketAddr::from_str(&offline_address).unwrap()); + let offline_handle = offline_server + .serve(SocketAddr::from_str(&offline_address).unwrap()) + .await + .unwrap(); // allow rosetta to process the genesis block. tokio::task::yield_now().await; diff --git a/crates/iota-rpc-loadgen/Cargo.toml b/crates/iota-rpc-loadgen/Cargo.toml index 8a205a821c0..b3bc5a6fb1a 100644 --- a/crates/iota-rpc-loadgen/Cargo.toml +++ b/crates/iota-rpc-loadgen/Cargo.toml @@ -28,7 +28,6 @@ iota-types = { workspace = true, features = ["test-utils"] } serde_json.workspace = true shared-crypto.workspace = true strum.workspace = true -strum_macros.workspace = true telemetry-subscribers.workspace = true [[bin]] diff --git a/crates/iota-rpc-loadgen/src/payload/mod.rs b/crates/iota-rpc-loadgen/src/payload/mod.rs index 984db2417c7..a2a54ade2d0 100644 --- a/crates/iota-rpc-loadgen/src/payload/mod.rs +++ b/crates/iota-rpc-loadgen/src/payload/mod.rs @@ -26,7 +26,7 @@ use iota_types::{ pub use rpc_command_processor::{ load_addresses_from_file, load_digests_from_file, load_objects_from_file, RpcCommandProcessor, }; -use strum_macros::EnumString; +use strum::EnumString; use crate::load_test::LoadTestConfig; diff --git a/crates/iota-sdk/src/error.rs b/crates/iota-sdk/src/error.rs index f2aabf86550..809973f33d0 100644 --- a/crates/iota-sdk/src/error.rs +++ b/crates/iota-sdk/src/error.rs @@ -12,7 +12,7 @@ pub type IotaRpcResult = Result; #[derive(Error, Debug)] pub enum Error { #[error(transparent)] - Rpc(#[from] jsonrpsee::core::Error), + Rpc(#[from] jsonrpsee::core::ClientError), #[error(transparent)] BcsSerialization(#[from] bcs::Error), #[error("Subscription error : {0}")] @@ -30,4 +30,6 @@ pub enum Error { }, #[error("Insufficient fund for address [{address}], requested amount: {amount}")] InsufficientFund { address: IotaAddress, amount: u128 }, + #[error(transparent)] + Json(#[from] serde_json::Error), } diff --git a/crates/iota-sdk/src/json_rpc_error.rs b/crates/iota-sdk/src/json_rpc_error.rs index e6bdf3b549e..4fb8aa49a37 100644 --- a/crates/iota-sdk/src/json_rpc_error.rs +++ b/crates/iota-sdk/src/json_rpc_error.rs @@ -1,8 +1,10 @@ // Copyright (c) Mysten Labs, Inc. // Modifications Copyright (c) 2024 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 + +use iota_json_rpc_api::error_object_from_rpc; pub use iota_json_rpc_api::{TRANSACTION_EXECUTION_CLIENT_ERROR_CODE, TRANSIENT_ERROR_CODE}; -use jsonrpsee::types::{error::UNKNOWN_ERROR_CODE, ErrorObjectOwned}; +use jsonrpsee::types::error::UNKNOWN_ERROR_CODE; use thiserror::Error; #[derive(Error, Debug, Clone)] @@ -51,16 +53,17 @@ impl Error { } } -impl From for Error { - fn from(err: jsonrpsee::core::Error) -> Self { - // The following code relies on jsonrpsee's From for ErrorObjectOwned - // implementation It converts any variant that is not Error::Call into +impl From for Error { + fn from(err: jsonrpsee::core::ClientError) -> Self { + // The following code converts any variant that is not Error::Call into // an ErrorObject with UNKNOWN_ERROR_CODE - let error_object_owned: ErrorObjectOwned = err.into(); + let error_object_owned = error_object_from_rpc(err); Error { code: error_object_owned.code(), message: error_object_owned.message().to_string(), - data: None, + data: error_object_owned + .data() + .map(|v| serde_json::from_str(v.get()).expect("raw json is always valid")), } } } diff --git a/crates/iota-sdk/src/lib.rs b/crates/iota-sdk/src/lib.rs index 202581ff8eb..53ec9d70418 100644 --- a/crates/iota-sdk/src/lib.rs +++ b/crates/iota-sdk/src/lib.rs @@ -96,7 +96,7 @@ use jsonrpsee::{ core::client::ClientT, http_client::{HeaderMap, HeaderValue, HttpClient, HttpClientBuilder}, rpc_params, - ws_client::{WsClient, WsClientBuilder}, + ws_client::{PingConfig, WsClient, WsClientBuilder}, }; use move_core_types::language_storage::StructTag; use serde_json::Value; @@ -218,13 +218,13 @@ impl IotaClientBuilder { let ws = if let Some(url) = self.ws_url { let mut builder = WsClientBuilder::default() - .max_request_body_size(2 << 30) + .max_request_size(2 << 30) .max_concurrent_requests(self.max_concurrent_requests) .set_headers(headers.clone()) .request_timeout(self.request_timeout); if let Some(duration) = self.ws_ping_interval { - builder = builder.ping_interval(duration) + builder = builder.enable_ws_ping(PingConfig::new().ping_interval(duration)) } Some(builder.build(url).await?) @@ -233,8 +233,7 @@ impl IotaClientBuilder { }; let http = HttpClientBuilder::default() - .max_request_body_size(2 << 30) - .max_concurrent_requests(self.max_concurrent_requests) + .max_request_size(2 << 30) .set_headers(headers.clone()) .request_timeout(self.request_timeout) .build(http)?; diff --git a/crates/iota-single-node-benchmark/Cargo.toml b/crates/iota-single-node-benchmark/Cargo.toml index 946abffb50f..471045f39d9 100644 --- a/crates/iota-single-node-benchmark/Cargo.toml +++ b/crates/iota-single-node-benchmark/Cargo.toml @@ -28,7 +28,6 @@ prometheus.workspace = true serde = { version = "1.0.190", features = ["derive"] } serde_json.workspace = true strum.workspace = true -strum_macros.workspace = true telemetry-subscribers.workspace = true tokio = { workspace = true, features = ["full", "tracing", "test-util"] } tracing.workspace = true diff --git a/crates/iota-single-node-benchmark/src/command.rs b/crates/iota-single-node-benchmark/src/command.rs index fb2e31f4524..f9d76b82013 100644 --- a/crates/iota-single-node-benchmark/src/command.rs +++ b/crates/iota-single-node-benchmark/src/command.rs @@ -5,7 +5,7 @@ use std::path::PathBuf; use clap::{Parser, Subcommand, ValueEnum}; -use strum_macros::EnumIter; +use strum::EnumIter; #[derive(Parser)] #[clap( diff --git a/crates/iota-source-validation-service/Cargo.toml b/crates/iota-source-validation-service/Cargo.toml index 37dfd95bed0..93089b72df3 100644 --- a/crates/iota-source-validation-service/Cargo.toml +++ b/crates/iota-source-validation-service/Cargo.toml @@ -16,12 +16,12 @@ name = "iota-source-validation-service" [dependencies] anyhow = { version = "1.0.64", features = ["backtrace"] } clap.workspace = true -hyper = "0.14" +hyper.workspace = true jsonrpsee.workspace = true serde = { version = "1.0.144", features = ["derive"] } tempfile = "3.3.0" tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } -toml = { version = "0.7.4", features = ["preserve_order"] } +toml = { version = "0.8.14", features = ["preserve_order"] } tracing = "0.1.36" url = "2.3.1" @@ -46,7 +46,7 @@ tower-http.workspace = true [dev-dependencies] expect-test = "1.4.0" fs_extra = "1.3.0" -reqwest = { version = "0.11", default-features = false, features = ["rustls-tls"] } +reqwest.workspace = true iota.workspace = true iota-json-rpc-types.workspace = true diff --git a/crates/iota-source-validation-service/src/lib.rs b/crates/iota-source-validation-service/src/lib.rs index 5845379cade..c825df46d92 100644 --- a/crates/iota-source-validation-service/src/lib.rs +++ b/crates/iota-source-validation-service/src/lib.rs @@ -6,7 +6,6 @@ use std::{ collections::BTreeMap, ffi::OsString, fmt, fs, - net::TcpListener, path::{Path, PathBuf}, process::Command, sync::{Arc, RwLock}, @@ -18,12 +17,11 @@ use axum::{ extract::{Query, State}, middleware::{self, Next}, response::{IntoResponse, Response}, - routing::{get, IntoMakeService}, - Extension, Json, Router, Server, + routing::get, + Extension, Json, Router, }; use hyper::{ http::{HeaderName, HeaderValue, Method}, - server::conn::AddrIncoming, HeaderMap, StatusCode, }; use iota_move::build::resolve_lock_file_path; @@ -39,7 +37,7 @@ use jsonrpsee::{ client::{Subscription, SubscriptionClientT}, params::ArrayParams, }, - ws_client::{WsClient, WsClientBuilder}, + ws_client::{PingConfig, WsClient, WsClientBuilder}, }; use move_core_types::account_address::AccountAddress; use move_package::{BuildConfig as MoveBuildConfig, LintFlag}; @@ -47,7 +45,7 @@ use move_symbol_pool::Symbol; use mysten_metrics::RegistryService; use prometheus::{register_int_counter_with_registry, IntCounter, Registry}; use serde::{Deserialize, Serialize}; -use tokio::sync::oneshot::Sender; +use tokio::{net::TcpListener, sync::oneshot::Sender}; use tower::ServiceBuilder; use tracing::{debug, error, info}; use url::Url; @@ -485,7 +483,7 @@ pub async fn watch_for_upgrades( }; let client: WsClient = WsClientBuilder::default() - .ping_interval(WS_PING_INTERVAL) + .enable_ws_ping(PingConfig::new().ping_interval(WS_PING_INTERVAL)) .build(websocket_url) .await?; let mut subscription: Subscription = client @@ -541,9 +539,9 @@ pub struct AppState { pub sources_list: NetworkLookup, } -pub fn serve( +pub async fn serve( app_state: Arc>, -) -> anyhow::Result>> { +) -> anyhow::Result>> { let app = Router::new() .route("/api", get(api_route)) .route("/api/list", get(list_route)) @@ -557,8 +555,10 @@ pub fn serve( .layer(middleware::from_fn(check_version_header)), ) .with_state(app_state); - let listener = TcpListener::bind(host_port())?; - Ok(Server::from_tcp(listener)?.serve(app.into_make_service())) + let listener = TcpListener::bind(host_port()).await?; + Ok(tokio::spawn(async { + Ok(axum::serve(listener, app.into_make_service()).await?) + })) } #[derive(Deserialize)] @@ -631,10 +631,10 @@ async fn api_route( } } -async fn check_version_header( +async fn check_version_header( headers: HeaderMap, - req: hyper::Request, - next: Next, + req: axum::extract::Request, + next: Next, ) -> Response { let version = headers .get(IOTA_SOURCE_VALIDATION_VERSION_HEADER) @@ -645,8 +645,7 @@ async fn check_version_header( match version { Some(v) if v != IOTA_SOURCE_VALIDATION_VERSION => { let error = format!( - "Unsupported version '{v}' specified in header \ - {IOTA_SOURCE_VALIDATION_VERSION_HEADER}" + "Unsupported version '{v}' specified in header {IOTA_SOURCE_VALIDATION_VERSION_HEADER}", ); let mut headers = HeaderMap::new(); headers.insert( @@ -695,7 +694,7 @@ impl SourceServiceMetrics { } } -pub fn start_prometheus_server(addr: TcpListener) -> RegistryService { +pub fn start_prometheus_server(listener: TcpListener) -> RegistryService { let registry = Registry::new(); let registry_service = RegistryService::new(registry); @@ -705,9 +704,7 @@ pub fn start_prometheus_server(addr: TcpListener) -> RegistryService { .layer(Extension(registry_service.clone())); tokio::spawn(async move { - axum::Server::from_tcp(addr) - .unwrap() - .serve(app.into_make_service()) + axum::serve(listener, app.into_make_service()) .await .unwrap(); }); diff --git a/crates/iota-source-validation-service/src/main.rs b/crates/iota-source-validation-service/src/main.rs index fd6899bfc2f..cb9c5d6c11f 100644 --- a/crates/iota-source-validation-service/src/main.rs +++ b/crates/iota-source-validation-service/src/main.rs @@ -44,7 +44,7 @@ pub async fn main() -> anyhow::Result<()> { let (sources, sources_list) = initialize(&package_config, tmp_dir.path()).await?; info!("verification complete in {:?}", start.elapsed()); - let metrics_listener = std::net::TcpListener::bind(METRICS_HOST_PORT)?; + let metrics_listener = tokio::net::TcpListener::bind(METRICS_HOST_PORT).await?; let registry_service = start_prometheus_server(metrics_listener); let prometheus_registry = registry_service.default_registry(); let metrics = SourceServiceMetrics::new(&prometheus_registry); @@ -91,7 +91,7 @@ pub async fn main() -> anyhow::Result<()> { } let app_state_copy = app_state.clone(); - let server = tokio::spawn(async { serve(app_state_copy)?.await.map_err(anyhow::Error::from) }); + let server = serve(app_state_copy).await?; threads.push(server); info!("serving on {}", host_port()); for t in threads { diff --git a/crates/iota-source-validation-service/tests/tests.rs b/crates/iota-source-validation-service/tests/tests.rs index fe8a987bbc8..6e4e6595497 100644 --- a/crates/iota-source-validation-service/tests/tests.rs +++ b/crates/iota-source-validation-service/tests/tests.rs @@ -317,7 +317,8 @@ async fn test_api_route() -> anyhow::Result<()> { metrics: None, sources_list, })); - tokio::spawn(serve(app_state).expect("Cannot start service.")); + + serve(app_state).await.expect("Cannot start service"); let client = Client::new(); @@ -329,7 +330,7 @@ async fn test_api_route() -> anyhow::Result<()> { )) .send() .await - .expect("Request failed.") + .expect("Request failed") .json::() .await?; @@ -370,7 +371,7 @@ async fn test_api_route() -> anyhow::Result<()> { #[tokio::test] async fn test_metrics_route() -> anyhow::Result<()> { // Start metrics server - let metrics_listener = std::net::TcpListener::bind(METRICS_HOST_PORT)?; + let metrics_listener = tokio::net::TcpListener::bind(METRICS_HOST_PORT).await?; let registry_service = start_prometheus_server(metrics_listener); let prometheus_registry = registry_service.default_registry(); SourceServiceMetrics::new(&prometheus_registry); diff --git a/crates/iota-storage/Cargo.toml b/crates/iota-storage/Cargo.toml index acef2214da3..c573f7a209b 100644 --- a/crates/iota-storage/Cargo.toml +++ b/crates/iota-storage/Cargo.toml @@ -15,11 +15,13 @@ bcs.workspace = true byteorder.workspace = true bytes.workspace = true chrono.workspace = true -clap = "4.3.2" +clap.workspace = true fastcrypto.workspace = true futures.workspace = true +http-body-util.workspace = true hyper.workspace = true hyper-rustls.workspace = true +hyper-util = { workspace = true, features = ["http2", "client-legacy", "tokio"] } indicatif.workspace = true integer-encoding.workspace = true itertools.workspace = true diff --git a/crates/iota-storage/src/http_key_value_store.rs b/crates/iota-storage/src/http_key_value_store.rs index f5eebdb174d..e05be69cef7 100644 --- a/crates/iota-storage/src/http_key_value_store.rs +++ b/crates/iota-storage/src/http_key_value_store.rs @@ -7,12 +7,16 @@ use std::{str::FromStr, sync::Arc}; use async_trait::async_trait; use bytes::Bytes; use futures::stream::{self, StreamExt}; +use http_body_util::BodyExt; use hyper::{ - client::HttpConnector, header::{HeaderValue, CONTENT_LENGTH}, - Client, Uri, + Uri, }; use hyper_rustls::{HttpsConnector, HttpsConnectorBuilder}; +use hyper_util::{ + client::legacy::{connect::HttpConnector, Client}, + rt::TokioExecutor, +}; use iota_types::{ base_types::{ObjectID, SequenceNumber, VersionNumber}, digests::{ @@ -39,7 +43,7 @@ use crate::{ pub struct HttpKVStore { base_url: Url, - client: Arc>>, + client: Arc, reqwest::Body>>, } pub fn encode_digest>(digest: &T) -> String { @@ -136,9 +140,9 @@ impl HttpKVStore { .enable_http2() .build(); - let client = Client::builder() + let client = Client::builder(TokioExecutor::new()) .http2_only(true) - .build::<_, hyper::Body>(http); + .build::<_, reqwest::Body>(http); let base_url = if base_url.ends_with('/') { base_url.to_string() @@ -183,8 +187,10 @@ impl HttpKVStore { ); // return None if 400 if resp.status().is_success() { - hyper::body::to_bytes(resp.into_body()) + resp.into_body() + .collect() .await + .map(|c| c.to_bytes()) .map(Some) .into_iota_result() } else { diff --git a/crates/iota-storage/src/indexes.rs b/crates/iota-storage/src/indexes.rs index 60e91bcbbc6..07aa64dabe3 100644 --- a/crates/iota-storage/src/indexes.rs +++ b/crates/iota-storage/src/indexes.rs @@ -1486,7 +1486,7 @@ impl IndexStore { metrics.all_balance_lookup_from_db.inc(); let mut balances: HashMap = HashMap::new(); let coins = Self::get_owned_coins_iterator(&coin_index, owner, None)? - .group_by(|(coin_type, _obj_id, _coin)| coin_type.clone()); + .chunk_by(|(coin_type, _obj_id, _coin)| coin_type.clone()); for (coin_type, coins) in &coins { let mut total_balance = 0i128; let mut coin_object_count = 0; diff --git a/crates/iota-storage/src/object_store/http/mod.rs b/crates/iota-storage/src/object_store/http/mod.rs index 5bad654fe19..dd9aa2fbf2a 100644 --- a/crates/iota-storage/src/object_store/http/mod.rs +++ b/crates/iota-storage/src/object_store/http/mod.rs @@ -12,7 +12,7 @@ use anyhow::{anyhow, Context, Result}; use chrono::{DateTime, Utc}; use futures::{StreamExt, TryStreamExt}; use iota_config::object_storage_config::{ObjectStoreConfig, ObjectStoreType}; -use object_store::{path::Path, Error, GetResult, GetResultPayload, ObjectMeta}; +use object_store::{path::Path, Attributes, Error, GetResult, GetResultPayload, ObjectMeta}; use reqwest::{ header::{HeaderMap, CONTENT_LENGTH, ETAG, LAST_MODIFIED}, Client, Method, @@ -92,6 +92,7 @@ async fn get( range: 0..meta.size, payload: GetResultPayload::Stream(stream), meta, + attributes: Attributes::new(), }) } @@ -120,6 +121,7 @@ fn header_meta(location: &Path, headers: &HeaderMap) -> Result { last_modified, size: content_length, e_tag: Some(e_tag.to_string()), + version: None, }) } diff --git a/crates/iota-storage/src/object_store/mod.rs b/crates/iota-storage/src/object_store/mod.rs index 317ba0637f1..370d16678ae 100644 --- a/crates/iota-storage/src/object_store/mod.rs +++ b/crates/iota-storage/src/object_store/mod.rs @@ -76,7 +76,7 @@ impl ObjectStoreListExt for Arc { &self, src: Option<&Path>, ) -> object_store::Result>> { - self.list(src).await + Ok(self.list(src)) } } @@ -103,7 +103,7 @@ as_ref_put_ext_impl!(Box); #[async_trait] impl ObjectStorePutExt for Arc { async fn put_bytes(&self, src: &Path, bytes: Bytes) -> Result<()> { - self.put(src, bytes).await?; + self.put(src, bytes.into()).await?; Ok(()) } } diff --git a/crates/iota-test-validator/src/main.rs b/crates/iota-test-validator/src/main.rs index a2810000861..a1eb5b3cd8e 100644 --- a/crates/iota-test-validator/src/main.rs +++ b/crates/iota-test-validator/src/main.rs @@ -212,9 +212,8 @@ async fn start_faucet(cluster: &LocalNewCluster, port: u16) -> Result<()> { println!("Faucet URL: http://{}", addr); - axum::Server::bind(&addr) - .serve(app.into_make_service()) - .await?; + let listener = tokio::net::TcpListener::bind(addr).await?; + axum::serve(listener, app.into_make_service()).await?; Ok(()) } diff --git a/crates/iota-tool/Cargo.toml b/crates/iota-tool/Cargo.toml index 22f3f874cb5..1edfa6b128d 100644 --- a/crates/iota-tool/Cargo.toml +++ b/crates/iota-tool/Cargo.toml @@ -27,7 +27,6 @@ ron.workspace = true serde.workspace = true serde_json.workspace = true strum.workspace = true -strum_macros.workspace = true tempfile.workspace = true tracing.workspace = true diff --git a/crates/iota-tool/src/db_tool/db_dump.rs b/crates/iota-tool/src/db_tool/db_dump.rs index 95608625328..9761abb91a8 100644 --- a/crates/iota-tool/src/db_tool/db_dump.rs +++ b/crates/iota-tool/src/db_tool/db_dump.rs @@ -30,7 +30,7 @@ use iota_storage::{mutex_table::RwLockTable, IndexStoreTables}; use iota_types::base_types::{EpochId, ObjectID}; use prometheus::Registry; use rocksdb::MultiThreaded; -use strum_macros::EnumString; +use strum::EnumString; use tracing::info; use typed_store::{ rocks::{default_db_options, MetricConf}, diff --git a/crates/iota-tool/src/lib.rs b/crates/iota-tool/src/lib.rs index a24aa779f50..a4451c21114 100644 --- a/crates/iota-tool/src/lib.rs +++ b/crates/iota-tool/src/lib.rs @@ -170,10 +170,10 @@ impl std::fmt::Display for GroupedObjectOutput { Ord::cmp(&b.2, &a.2) .then_with(|| Ord::cmp(&format!("{:?}", &b.5), &format!("{:?}", &a.5))) }) - .group_by(|(_, _, seq_num, _r, _ts, _)| **seq_num); + .chunk_by(|(_, _, seq_num, _r, _ts, _)| **seq_num); for (seq_num, group) in &responses { writeln!(f, "seq num: {}", seq_num.opt_debug("latest-seq-num"))?; - let cur_version_resp = group.group_by(|(_, _, _, r, _, _)| match r { + let cur_version_resp = group.chunk_by(|(_, _, _, r, _, _)| match r { Ok(result) => { let parent_tx_digest = result.object.previous_transaction; let obj_digest = result.object.compute_object_reference().2; @@ -395,7 +395,7 @@ pub async fn get_transaction_block( .sorted_by(|(k1, err1, _), (k2, err2, _)| { Ord::cmp(k1, k2).then_with(|| Ord::cmp(err1, err2)) }) - .group_by(|(_, _err, r)| { + .chunk_by(|(_, _err, r)| { r.2.as_ref().map(|ok_result| match &ok_result.status { TransactionStatus::Signed(_) => None, TransactionStatus::Executed(_, effects, _) => Some(( diff --git a/crates/iota-types/Cargo.toml b/crates/iota-types/Cargo.toml index 2d64e8b49df..a30b605c2d8 100644 --- a/crates/iota-types/Cargo.toml +++ b/crates/iota-types/Cargo.toml @@ -30,7 +30,6 @@ move-ir-types.workspace = true move-vm-profiler.workspace = true move-vm-test-utils.workspace = true move-vm-types.workspace = true -nonempty.workspace = true num-bigint = { version = "0.4", default-features = false, features = ["rand"] } num-rational = "0.4" num-traits = "0.2.18" @@ -47,7 +46,6 @@ serde_with.workspace = true signature.workspace = true static_assertions.workspace = true strum.workspace = true -strum_macros.workspace = true tap.workspace = true thiserror.workspace = true tonic.workspace = true diff --git a/crates/iota-types/src/crypto.rs b/crates/iota-types/src/crypto.rs index 2eeac54c787..eaea95aace4 100644 --- a/crates/iota-types/src/crypto.rs +++ b/crates/iota-types/src/crypto.rs @@ -1620,9 +1620,7 @@ pub mod bcs_signable_test { } } -#[derive( - Clone, Copy, Deserialize, Serialize, JsonSchema, Debug, EnumString, strum_macros::Display, -)] +#[derive(Clone, Copy, Deserialize, Serialize, JsonSchema, Debug, EnumString, strum::Display)] #[strum(serialize_all = "lowercase")] pub enum SignatureScheme { ED25519, diff --git a/crates/iota-types/src/error.rs b/crates/iota-types/src/error.rs index c00be815963..a23d88ad662 100644 --- a/crates/iota-types/src/error.rs +++ b/crates/iota-types/src/error.rs @@ -7,7 +7,7 @@ use std::{collections::BTreeMap, fmt::Debug}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use strum_macros::{AsRefStr, IntoStaticStr}; +use strum::{AsRefStr, IntoStaticStr}; use thiserror::Error; use tonic::Status; use typed_store_error::TypedStoreError; diff --git a/crates/iota-types/src/transaction.rs b/crates/iota-types/src/transaction.rs index 6f31b27db3e..5ed77d6596c 100644 --- a/crates/iota-types/src/transaction.rs +++ b/crates/iota-types/src/transaction.rs @@ -20,7 +20,6 @@ use move_core_types::{ identifier::{IdentStr, Identifier}, language_storage::TypeTag, }; -use nonempty::{nonempty, NonEmpty}; use serde::{Deserialize, Serialize}; use shared_crypto::intent::{Intent, IntentMessage, IntentScope}; use strum::IntoStaticStr; @@ -1914,7 +1913,7 @@ pub trait TransactionDataAPI { fn into_kind(self) -> TransactionKind; /// Transaction signer and Gas owner - fn signers(&self) -> NonEmpty; + fn signers(&self) -> Vec; fn gas_data(&self) -> &GasData; @@ -1981,8 +1980,8 @@ impl TransactionDataAPI for TransactionDataV1 { } /// Transaction signer and Gas owner - fn signers(&self) -> NonEmpty { - let mut signers = nonempty![self.sender]; + fn signers(&self) -> Vec { + let mut signers = vec![self.sender]; if self.gas_owner() != self.sender { signers.push(self.gas_owner()); } diff --git a/crates/iota-upgrade-compatibility-transactional-tests/tests/tests.rs b/crates/iota-upgrade-compatibility-transactional-tests/tests/tests.rs index 7708029680e..38bec190bee 100644 --- a/crates/iota-upgrade-compatibility-transactional-tests/tests/tests.rs +++ b/crates/iota-upgrade-compatibility-transactional-tests/tests/tests.rs @@ -140,7 +140,7 @@ fn check_all_compatibilities( .join("\n"); results.push_str(&inclusion_results); - insta::assert_display_snapshot!(name, results); + insta::assert_snapshot!(name, results); Ok(()) } diff --git a/crates/iota/Cargo.toml b/crates/iota/Cargo.toml index 25ced83cfac..7e99e716c24 100644 --- a/crates/iota/Cargo.toml +++ b/crates/iota/Cargo.toml @@ -11,6 +11,8 @@ anemo.workspace = true anyhow.workspace = true async-recursion.workspace = true async-trait.workspace = true +aws-config.workspace = true +aws-sdk-kms.workspace = true bcs.workspace = true bip32.workspace = true camino.workspace = true @@ -28,8 +30,6 @@ prometheus.workspace = true rand.workspace = true regex.workspace = true reqwest.workspace = true -rusoto_core.workspace = true -rusoto_kms.workspace = true serde.workspace = true serde_json.workspace = true serde_yaml.workspace = true diff --git a/crates/iota/src/keytool.rs b/crates/iota/src/keytool.rs index edbc8e12312..f1b1156b919 100644 --- a/crates/iota/src/keytool.rs +++ b/crates/iota/src/keytool.rs @@ -8,18 +8,24 @@ use std::{ }; use anyhow::anyhow; +use aws_sdk_kms::{ + primitives::Blob, + types::{MessageType, SigningAlgorithmSpec}, + Client as KmsClient, +}; use bip32::DerivationPath; use clap::*; use fastcrypto::{ ed25519::Ed25519KeyPair, encoding::{Base64, Encoding, Hex}, + error::FastCryptoError, hash::HashFunction, secp256k1::recoverable::Secp256k1Sig, traits::{KeyPair, ToFromBytes}, }; use fastcrypto_zkp::bn254::{ utils::{get_oidc_url, get_token_exchange_url}, - zk_login::{fetch_jwks, JwkId, OIDCProvider, JWK}, + zk_login::{JwkId, OIDCProvider, JWK}, zk_login_api::ZkLoginEnv, }; use im::hashmap::HashMap as ImHashMap; @@ -49,8 +55,6 @@ use iota_types::{ use json_to_table::{json_to_table, Orientation}; use num_bigint::BigUint; use rand::{rngs::StdRng, Rng, SeedableRng}; -use rusoto_core::Region; -use rusoto_kms::{Kms, KmsClient, SignRequest}; use serde::Serialize; use serde_json::json; use shared_crypto::intent::{Intent, IntentMessage, IntentScope, PersonalMessage}; @@ -870,27 +874,24 @@ impl KeyToolCommand { info!("Digest to sign: {:?}", Base64::encode(digest)); // Set up the KMS client in default region. - let region: Region = Region::default(); - let kms: KmsClient = KmsClient::new(region); - - // Construct the signing request. - let request: SignRequest = SignRequest { - key_id: keyid.to_string(), - message: digest.to_vec().into(), - message_type: Some("RAW".to_string()), - signing_algorithm: "ECDSA_SHA_256".to_string(), - ..Default::default() - }; + let config = aws_config::from_env().load().await; + let kms = KmsClient::new(&config); // Sign the message, normalize the signature and then compacts it // serialize_compact is loaded as bytes for Secp256k1Sinaturere - let response = kms.sign(request).await?; + let response = kms + .sign() + .key_id(keyid) + .message_type(MessageType::Raw) + .message(Blob::new(digest)) + .signing_algorithm(SigningAlgorithmSpec::EcdsaSha256) + .send() + .await?; let sig_bytes_der = response .signature - .map(|b| b.to_vec()) .expect("Requires Asymmetric Key Generated in KMS"); - let mut external_sig = Secp256k1Sig::from_der(&sig_bytes_der)?; + let mut external_sig = Secp256k1Sig::from_der(sig_bytes_der.as_ref())?; external_sig.normalize_s(); let sig_compact = external_sig.serialize_compact(); @@ -1173,6 +1174,31 @@ impl KeyToolCommand { } } +pub async fn fetch_jwks( + provider: &OIDCProvider, + client: &reqwest::Client, +) -> Result, FastCryptoError> { + let response = client + .get(provider.get_config().jwk_endpoint) + .send() + .await + .map_err(|e| { + FastCryptoError::GeneralError(format!( + "Failed to get JWK {:?} {:?}", + e.to_string(), + provider + )) + })?; + let bytes = response.bytes().await.map_err(|e| { + FastCryptoError::GeneralError(format!( + "Failed to get bytes {:?} {:?}", + e.to_string(), + provider + )) + })?; + fastcrypto_zkp::bn254::zk_login::parse_jwks(&bytes, provider) +} + impl From<&IotaKeyPair> for Key { fn from(skp: &IotaKeyPair) -> Self { Key::from(skp.public()) diff --git a/crates/iota/tests/ptb_files_tests.rs b/crates/iota/tests/ptb_files_tests.rs index 2e5c28512ae..78b130b9b8f 100644 --- a/crates/iota/tests/ptb_files_tests.rs +++ b/crates/iota/tests/ptb_files_tests.rs @@ -45,7 +45,7 @@ async fn test_ptb_files(path: &Path) -> datatest_stable::Result<()> { for e in rendered.iter() { results.push(format!("{:?}", e)); } - insta::assert_display_snapshot!(fname(), results.join("\n")); + insta::assert_snapshot!(fname(), results.join("\n")); return Ok(()); } }; @@ -98,7 +98,7 @@ async fn test_ptb_files(path: &Path) -> datatest_stable::Result<()> { } // === FINALLY DO THE ASSERTION === - insta::assert_display_snapshot!(fname(), results.join("\n")); + insta::assert_snapshot!(fname(), results.join("\n")); Ok(()) } diff --git a/crates/mysten-metrics/src/lib.rs b/crates/mysten-metrics/src/lib.rs index 209f9a0863a..a3426f1ed2f 100644 --- a/crates/mysten-metrics/src/lib.rs +++ b/crates/mysten-metrics/src/lib.rs @@ -375,10 +375,8 @@ pub fn start_prometheus_server(addr: SocketAddr) -> RegistryService { .layer(Extension(registry_service.clone())); tokio::spawn(async move { - axum::Server::bind(&addr) - .serve(app.into_make_service()) - .await - .unwrap(); + let listener = tokio::net::TcpListener::bind(addr).await?; + axum::serve(listener, app.into_make_service()).await }); registry_service @@ -462,12 +460,12 @@ mod tests { assert_eq!(metric_default.get_help(), "counter_desc"); let metric_1 = metrics.remove(0); - assert_eq!(metric_1.get_name(), "narwhal_counter_1"); - assert_eq!(metric_1.get_help(), "counter_1_desc"); + assert_eq!(metric_1.get_name(), "iota_counter_2"); + assert_eq!(metric_1.get_help(), "counter_2_desc"); let metric_2 = metrics.remove(0); - assert_eq!(metric_2.get_name(), "iota_counter_2"); - assert_eq!(metric_2.get_help(), "counter_2_desc"); + assert_eq!(metric_2.get_name(), "narwhal_counter_1"); + assert_eq!(metric_2.get_help(), "counter_1_desc"); // AND remove first registry assert!(registry_service.remove(registry_1_id)); diff --git a/crates/mysten-network/Cargo.toml b/crates/mysten-network/Cargo.toml index 1b92ccf8c69..829c02fc401 100644 --- a/crates/mysten-network/Cargo.toml +++ b/crates/mysten-network/Cargo.toml @@ -14,8 +14,9 @@ bytes.workspace = true eyre.workspace = true futures.workspace = true http.workspace = true +hyper-util = { workspace = true, features = ["tokio"] } multiaddr.workspace = true -pin-project-lite = "0.2.13" +pin-project-lite = "0.2.14" serde.workspace = true snap.workspace = true tokio = { workspace = true, features = ["sync", "rt", "macros"] } diff --git a/crates/mysten-network/src/client.rs b/crates/mysten-network/src/client.rs index 7c7507b412a..80dc83f831d 100644 --- a/crates/mysten-network/src/client.rs +++ b/crates/mysten-network/src/client.rs @@ -3,6 +3,7 @@ // SPDX-License-Identifier: Apache-2.0 use eyre::{eyre, Context, Result}; +use hyper_util::rt::TokioIo; use tonic::transport::{Channel, Endpoint, Uri}; use crate::{ @@ -112,7 +113,11 @@ impl MyEndpoint { let path = path.clone(); // Connect to a Uds socket - tokio::net::UnixStream::connect(path) + async { + Ok::<_, std::io::Error>(TokioIo::new( + tokio::net::UnixStream::connect(path).await?, + )) + } })); } @@ -128,7 +133,11 @@ impl MyEndpoint { let path = path.clone(); // Connect to a Uds socket - tokio::net::UnixStream::connect(path) + async { + Ok::<_, std::io::Error>(TokioIo::new( + tokio::net::UnixStream::connect(path).await?, + )) + } })) .await .map_err(Into::into); diff --git a/crates/mysten-network/src/metrics.rs b/crates/mysten-network/src/metrics.rs index 246e00fc7f8..ca91be8f0e2 100644 --- a/crates/mysten-network/src/metrics.rs +++ b/crates/mysten-network/src/metrics.rs @@ -3,10 +3,8 @@ // SPDX-License-Identifier: Apache-2.0 use std::time::Duration; -use tonic::{ - codegen::http::{header::HeaderName, HeaderValue, Request, Response}, - Code, Status, -}; +use http::{HeaderName, HeaderValue, Request, Response}; +use tonic::{Code, Status}; use tower_http::{ classify::GrpcFailureClass, trace::{OnFailure, OnRequest, OnResponse}, diff --git a/crates/mysten-network/src/server.rs b/crates/mysten-network/src/server.rs index 013efc4ea21..7c69adb0dce 100644 --- a/crates/mysten-network/src/server.rs +++ b/crates/mysten-network/src/server.rs @@ -48,7 +48,7 @@ pub struct ServerBuilder) -> Option; +type AddPathToHeaderFunction = fn(&Request) -> Option; type WrapperService = Stack< Stack< @@ -110,7 +110,7 @@ impl ServerBuilder { .global_concurrency_limit .map(tower::limit::GlobalConcurrencyLimitLayer::new); - fn add_path_to_request_header(request: &Request) -> Option { + fn add_path_to_request_header(request: &Request) -> Option { let path = request.uri().path(); Some(HeaderValue::from_str(path).unwrap()) } @@ -151,7 +151,7 @@ impl ServerBuilder { /// Add a new service to this Server. pub fn add_service(mut self, svc: S) -> Self where - S: Service, Response = Response, Error = Infallible> + S: Service, Response = Response, Error = Infallible> + NamedService + Clone + Send diff --git a/crates/telemetry-subscribers/Cargo.toml b/crates/telemetry-subscribers/Cargo.toml index e8cabfeb2bb..ef1e8b5b3cb 100644 --- a/crates/telemetry-subscribers/Cargo.toml +++ b/crates/telemetry-subscribers/Cargo.toml @@ -17,21 +17,21 @@ console-subscriber = { workspace = true, optional = true } crossterm.workspace = true futures.workspace = true once_cell.workspace = true -opentelemetry = { version = "0.20.0", features = ["rt-tokio"], optional = true } -opentelemetry-otlp = { version = "0.13.0", features = ["grpc-tonic"], optional = true } -opentelemetry-proto = { version = "0.3", optional = true } -opentelemetry_api = { version = "0.20.0", optional = true } +opentelemetry = { version = "0.23.0", optional = true } +opentelemetry-otlp = { version = "0.16.0", features = ["grpc-tonic"], optional = true } +opentelemetry-proto = { version = "0.6.0", optional = true } +opentelemetry_sdk = { version = "0.23.0", features = ["rt-tokio"], optional = true } prometheus.workspace = true tokio = { workspace = true, features = ["full"] } tracing.workspace = true tracing-appender.workspace = true -tracing-opentelemetry = { version = "0.21.0", optional = true } +tracing-opentelemetry = { version = "0.24.0", optional = true } tracing-subscriber.workspace = true # must use same version as opentelemetry for tonic and prost, so we can't use from # workspace -prost = "0.11.9" -tonic = { version = "0.9" } +prost = "0.12" +tonic = "0.11" [features] default = ["otlp"] @@ -39,9 +39,9 @@ tokio-console = ["console-subscriber"] otlp = [ "tracing-opentelemetry", "opentelemetry", + "opentelemetry_sdk", "opentelemetry-otlp", "opentelemetry-proto", - "opentelemetry_api", ] [dev-dependencies] diff --git a/crates/telemetry-subscribers/src/file_exporter.rs b/crates/telemetry-subscribers/src/file_exporter.rs index 5cf343fb157..e61696c26da 100644 --- a/crates/telemetry-subscribers/src/file_exporter.rs +++ b/crates/telemetry-subscribers/src/file_exporter.rs @@ -10,11 +10,9 @@ use std::{ }; use futures::{future::BoxFuture, FutureExt}; -use opentelemetry::{ - sdk::export::trace::{ExportResult, SpanData, SpanExporter}, - trace::TraceError, -}; +use opentelemetry::trace::TraceError; use opentelemetry_proto::tonic::collector::trace::v1::ExportTraceServiceRequest; +use opentelemetry_sdk::export::trace::{ExportResult, SpanData, SpanExporter}; use prost::Message; #[derive(Clone)] diff --git a/crates/telemetry-subscribers/src/lib.rs b/crates/telemetry-subscribers/src/lib.rs index b1b954facf0..501dbc37bcf 100644 --- a/crates/telemetry-subscribers/src/lib.rs +++ b/crates/telemetry-subscribers/src/lib.rs @@ -3,7 +3,6 @@ // SPDX-License-Identifier: Apache-2.0 use std::{ - collections::hash_map::RandomState, env, io::{stderr, Write}, path::PathBuf, @@ -16,18 +15,14 @@ use atomic_float::AtomicF64; use crossterm::tty::IsTty; use once_cell::sync::Lazy; use opentelemetry::{ - sdk::{ - self, runtime, - trace::{BatchSpanProcessor, Sampler, ShouldSample, TracerProvider}, - Resource, - }, - trace::TracerProvider as _, -}; -use opentelemetry_api::{ - trace::{Link, SamplingResult, SpanKind, TraceId}, - Context, Key, OrderMap, Value, + trace::{Link, SamplingResult, SpanKind, TraceId, TracerProvider as _}, + Context, KeyValue, }; use opentelemetry_otlp::WithExportConfig; +use opentelemetry_sdk::{ + trace::{BatchSpanProcessor, Sampler, ShouldSample, TracerProvider}, + Resource, +}; use span_latency_prom::PrometheusSpanLatencyLayer; use tracing::{error, info, metadata::LevelFilter, Level}; use tracing_appender::non_blocking::{NonBlocking, WorkerGuard}; @@ -389,7 +384,7 @@ impl TelemetryConfig { if config.enable_otlp_tracing { let trace_file = env::var("TRACE_FILE").ok(); - let config = sdk::trace::config() + let config = opentelemetry_sdk::trace::config() .with_resource(Resource::new(vec![opentelemetry::KeyValue::new( "service.name", "iota-node", @@ -402,7 +397,9 @@ impl TelemetryConfig { let exporter = FileExporter::new(Some(trace_file.into())).expect("Failed to create exporter"); file_output = exporter.cached_open_file.clone(); - let processor = BatchSpanProcessor::builder(exporter, runtime::Tokio).build(); + let processor = + BatchSpanProcessor::builder(exporter, opentelemetry_sdk::runtime::Tokio) + .build(); let p = TracerProvider::builder() .with_config(config) @@ -425,7 +422,7 @@ impl TelemetryConfig { .with_endpoint(endpoint), ) .with_trace_config(config) - .install_batch(sdk::runtime::Tokio) + .install_batch(opentelemetry_sdk::runtime::Tokio) .expect("Could not create async Tracer"); tracing_opentelemetry::layer().with_tracer(tracer) @@ -433,7 +430,7 @@ impl TelemetryConfig { // Enable Trace Contexts for tying spans together opentelemetry::global::set_text_map_propagator( - opentelemetry::sdk::propagation::TraceContextPropagator::new(), + opentelemetry_sdk::propagation::TraceContextPropagator::new(), ); let trace_env_filter = EnvFilter::try_from_env("TRACE_FILTER").unwrap(); @@ -522,7 +519,7 @@ impl ShouldSample for SamplingFilter { trace_id: TraceId, name: &str, span_kind: &SpanKind, - attributes: &OrderMap, + attributes: &[KeyValue], links: &[Link], ) -> SamplingResult { let sample_rate = self.sample_rate.load(Ordering::Relaxed); diff --git a/deny.toml b/deny.toml index d0cfbc3bf6f..a035064a222 100644 --- a/deny.toml +++ b/deny.toml @@ -44,12 +44,8 @@ yanked = "warn" ignore = [ # difference 2.0.0 is unmaintained "RUSTSEC-2020-0095", - # rusoto is unmaintained, use aws crates - "RUSTSEC-2022-0071", # `tui` is unmaintained; use `ratatui` instead "RUSTSEC-2023-0049", - # ansi_term is Unmaintained - "RUSTSEC-2021-0139", # we don't do RSA signing on Iota (only verifying for zklogin) "RUSTSEC-2023-0071", ] @@ -84,6 +80,7 @@ allow = [ "BSL-1.0", "Unicode-DFS-2016", "Unicode-3.0", + "OpenSSL", # "Apache-2.0 WITH LLVM-exception", ] # The confidence threshold for detecting a license from license text. @@ -233,7 +230,7 @@ allow-git = [ "https://github.com/mystenmark/tokio-madsim-fork.git", "https://github.com/nextest-rs/nexlint.git", "https://github.com/nextest-rs/datatest-stable.git", - "https://github.com/wlmyng/jsonrpsee.git", + "https://github.com/tokio-rs/prost", "https://github.com/zhiburt/tabled.git", ] diff --git a/external-crates/move/Cargo.lock b/external-crates/move/Cargo.lock index c96a5fe5639..1ff8f06540a 100644 --- a/external-crates/move/Cargo.lock +++ b/external-crates/move/Cargo.lock @@ -139,9 +139,9 @@ version = "0.1.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", - "syn 2.0.22", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.71", ] [[package]] @@ -179,9 +179,9 @@ dependencies = [ [[package]] name = "better_any" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b359aebd937c17c725e19efcb661200883f04c49c53e7132224dac26da39d4a0" +checksum = "1795ebc740ea791ffbe6685e0688ab1effec16c2864e0476db40bfdf0c02cb3d" dependencies = [ "better_typeid_derive", ] @@ -192,8 +192,8 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3deeecb812ca5300b7d3f66f730cc2ebd3511c3d36c691dd79c165d5b19a26e3" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "syn 1.0.109", ] @@ -229,9 +229,9 @@ dependencies = [ [[package]] name = "bitvec" -version = "0.20.4" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", @@ -415,7 +415,7 @@ dependencies = [ "bitflags", "clap_derive 3.2.18", "clap_lex 0.2.4", - "indexmap", + "indexmap 1.9.3", "once_cell", "strsim 0.10.0", "termcolor", @@ -453,8 +453,8 @@ checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" dependencies = [ "heck 0.4.1", "proc-macro-error", - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "syn 1.0.109", ] @@ -465,9 +465,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9fd1a5729c4548118d7d70ff234a44868d00489a4b6597b0b020918a0e91a1a" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.63", - "quote 1.0.28", - "syn 2.0.22", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.71", ] [[package]] @@ -523,16 +523,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "combine" -version = "4.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" -dependencies = [ - "bytes", - "memchr", -] - [[package]] name = "constant_time_eq" version = "0.1.5" @@ -565,7 +555,7 @@ dependencies = [ "clap 2.34.0", "criterion-plot", "csv", - "itertools", + "itertools 0.10.5", "lazy_static", "num-traits", "oorandom", @@ -597,7 +587,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" dependencies = [ "cast", - "itertools", + "itertools 0.10.5", ] [[package]] @@ -677,7 +667,7 @@ dependencies = [ "crossterm_winapi", "libc", "mio", - "parking_lot 0.12.1", + "parking_lot", "signal-hook", "signal-hook-mio", "winapi", @@ -753,10 +743,10 @@ dependencies = [ "cc", "codespan-reporting", "once_cell", - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "scratch", - "syn 2.0.22", + "syn 2.0.71", ] [[package]] @@ -771,9 +761,9 @@ version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", - "syn 2.0.22", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.71", ] [[package]] @@ -783,10 +773,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" dependencies = [ "cfg-if", - "hashbrown", + "hashbrown 0.12.3", "lock_api", "once_cell", - "parking_lot_core 0.9.7", + "parking_lot_core", ] [[package]] @@ -806,8 +796,8 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "syn 1.0.109", ] @@ -817,8 +807,8 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cdeb9ec472d588e539a818b2dee436825730da08ad0017c4b1a17676bdc8b7" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "syn 1.0.109", ] @@ -934,6 +924,12 @@ dependencies = [ "serde_yaml", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "errno" version = "0.3.0" @@ -999,9 +995,9 @@ checksum = "31a7a908b8f32538a2143e59a6e4e2508988832d5d4d6f7c156b3cbc762643a5" [[package]] name = "fixed-hash" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", "rand 0.8.5", @@ -1032,9 +1028,9 @@ dependencies = [ [[package]] name = "funty" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "generic-array" @@ -1085,6 +1081,12 @@ dependencies = [ "ahash", ] +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + [[package]] name = "heck" version = "0.3.3" @@ -1186,18 +1188,18 @@ dependencies = [ [[package]] name = "impl-codec" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" dependencies = [ "parity-scale-codec", ] [[package]] name = "impl-serde" -version = "0.3.2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" dependencies = [ "serde", ] @@ -1208,8 +1210,8 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "syn 1.0.109", ] @@ -1220,7 +1222,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", ] [[package]] @@ -1240,9 +1252,9 @@ checksum = "6ab388864246d58a276e60e7569a833d9cc4cd75c66e5ca77c177dad38e59996" dependencies = [ "ahash", "dashmap", - "hashbrown", + "hashbrown 0.12.3", "once_cell", - "parking_lot 0.12.1", + "parking_lot", ] [[package]] @@ -1274,6 +1286,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.6" @@ -1378,12 +1399,6 @@ dependencies = [ "cc", ] -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - [[package]] name = "linux-raw-sys" version = "0.3.1" @@ -1509,7 +1524,7 @@ dependencies = [ "derivative", "dunce", "im", - "itertools", + "itertools 0.13.0", "lsp-server", "lsp-types", "move-command-line-common", @@ -1567,7 +1582,9 @@ dependencies = [ "move-binary-format", "move-core-types", "petgraph", + "serde", "serde-reflection", + "serde_yaml", ] [[package]] @@ -1646,7 +1663,7 @@ dependencies = [ "move-vm-types", "serde_yaml", "tempfile", - "toml_edit 0.14.4", + "toml_edit 0.22.15", "walkdir", ] @@ -1780,7 +1797,7 @@ dependencies = [ "codespan", "codespan-reporting", "datatest-stable", - "itertools", + "itertools 0.13.0", "log", "move-compiler", "move-model", @@ -1890,7 +1907,7 @@ dependencies = [ "codespan-reporting", "datatest-stable", "internment", - "itertools", + "itertools 0.13.0", "log", "move-binary-format", "move-bytecode-source-map", @@ -1916,7 +1933,7 @@ dependencies = [ "colored", "datatest-stable", "expect-test", - "itertools", + "itertools 0.13.0", "move-binary-format", "move-bytecode-source-map", "move-bytecode-utils", @@ -1935,7 +1952,7 @@ dependencies = [ "sha2", "tempfile", "toml", - "toml_edit 0.14.4", + "toml_edit 0.22.15", "treeline", "walkdir", "whoami", @@ -1946,8 +1963,8 @@ name = "move-proc-macros" version = "0.1.0" dependencies = [ "enum-compat-util", - "quote 1.0.28", - "syn 2.0.22", + "quote 1.0.36", + "syn 2.0.71", ] [[package]] @@ -1958,7 +1975,7 @@ dependencies = [ "clap 4.4.1", "codespan-reporting", "datatest-stable", - "itertools", + "itertools 0.13.0", "log", "move-command-line-common", "move-compiler", @@ -2005,7 +2022,7 @@ dependencies = [ "datatest-stable", "ethnum", "im", - "itertools", + "itertools 0.13.0", "log", "move-binary-format", "move-command-line-common", @@ -2030,7 +2047,7 @@ dependencies = [ "clap 4.4.1", "codespan-reporting", "datatest-stable", - "itertools", + "itertools 0.13.0", "move-binary-format", "move-core-types", "move-model", @@ -2146,7 +2163,7 @@ dependencies = [ "colored", "datatest-stable", "difference", - "itertools", + "itertools 0.13.0", "move-binary-format", "move-bytecode-utils", "move-command-line-common", @@ -2222,7 +2239,7 @@ dependencies = [ "move-vm-profiler", "move-vm-types", "once_cell", - "parking_lot 0.11.2", + "parking_lot", "proptest", "sha3", "smallvec", @@ -2295,7 +2312,7 @@ checksum = "40a3eb6b7c682b65d1f631ec3176829d72ab450b3aacdd3f719bf220822e59ac" dependencies = [ "libc", "once_cell", - "parking_lot 0.12.1", + "parking_lot", "thiserror", "widestring", "winapi", @@ -2441,9 +2458,9 @@ checksum = "ec4c6225c69b4ca778c0aea097321a64c421cf4577b331c61b229267edabb6f8" dependencies = [ "heck 0.4.1", "proc-macro-error", - "proc-macro2 1.0.63", - "quote 1.0.28", - "syn 2.0.22", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.71", ] [[package]] @@ -2454,9 +2471,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parity-scale-codec" -version = "2.3.1" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" dependencies = [ "arrayvec 0.7.2", "bitvec", @@ -2468,49 +2485,24 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "2.3.1" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "syn 1.0.109", ] [[package]] name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - -[[package]] -name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", - "parking_lot_core 0.9.7", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -2551,7 +2543,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" dependencies = [ "fixedbitset", - "indexmap", + "indexmap 1.9.3", ] [[package]] @@ -2582,8 +2574,8 @@ checksum = "92aacdc5f16768709a569e913f7451034034178b05bdc8acda226659a3dccc66" dependencies = [ "phf_generator", "phf_shared", - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "syn 1.0.109", ] @@ -2663,9 +2655,9 @@ dependencies = [ [[package]] name = "primitive-types" -version = "0.10.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", @@ -2675,12 +2667,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.3.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ - "once_cell", - "toml_edit 0.19.8", + "toml_edit 0.21.1", ] [[package]] @@ -2690,8 +2681,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "syn 1.0.109", "version_check", ] @@ -2702,8 +2693,8 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "version_check", ] @@ -2718,9 +2709,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -2789,18 +2780,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.28" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ - "proc-macro2 1.0.63", + "proc-macro2 1.0.86", ] [[package]] name = "radium" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rand" @@ -2974,9 +2965,9 @@ version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d2275aab483050ab2a7364c1a46604865ee7d6906684e08db0f090acf74f9e7" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", - "syn 2.0.22", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.71", ] [[package]] @@ -3078,18 +3069,18 @@ checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" [[package]] name = "serde" -version = "1.0.159" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] [[package]] name = "serde-reflection" -version = "0.3.6" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05a5f801ac62a51a49d378fdb3884480041b99aced450b28990673e8ff99895" +checksum = "5b6798a64289ff550d8d79847467789a5fd30b42c9c406a4d6dc0bc9b567e55c" dependencies = [ "once_cell", "serde", @@ -3117,13 +3108,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.159" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", - "syn 2.0.22", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.71", ] [[package]] @@ -3143,21 +3134,31 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", - "syn 2.0.22", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.71", +] + +[[package]] +name = "serde_spanned" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +dependencies = [ + "serde", ] [[package]] name = "serde_yaml" -version = "0.8.26" +version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap", + "indexmap 2.2.6", + "itoa", "ryu", "serde", - "yaml-rust", + "unsafe-libyaml", ] [[package]] @@ -3370,19 +3371,19 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.22" +version = "2.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" +checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "unicode-ident", ] @@ -3433,7 +3434,7 @@ dependencies = [ "crossbeam-channel", "getrandom 0.2.9", "hex", - "itertools", + "itertools 0.13.0", "module-generation", "move-binary-format", "move-bytecode-verifier", @@ -3480,9 +3481,9 @@ version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", - "syn 2.0.22", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.71", ] [[package]] @@ -3551,7 +3552,7 @@ dependencies = [ "libc", "mio", "num_cpus", - "parking_lot 0.12.1", + "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", @@ -3565,47 +3566,54 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", - "syn 2.0.22", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.71", ] [[package]] name = "toml" -version = "0.5.11" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.15", ] [[package]] name = "toml_datetime" -version = "0.6.1" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" -version = "0.14.4" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5376256e44f2443f8896ac012507c19a012df0fe8758b55246ae51a2279db51f" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "combine", - "indexmap", - "itertools", - "serde", + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.19.8" +version = "0.22.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" +checksum = "d59a3a72298453f564e2b111fa896f8d07fabb36f51f06d7e875fc5e0b5a3ef1" dependencies = [ - "indexmap", + "indexmap 2.2.6", + "serde", + "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.6.13", ] [[package]] @@ -3626,8 +3634,8 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "syn 1.0.109", ] @@ -3752,6 +3760,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + [[package]] name = "url" version = "2.3.1" @@ -3782,7 +3796,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aae2faf80ac463422992abf4de234731279c058aaf33171ca70277c98406b124" dependencies = [ - "quote 1.0.28", + "quote 1.0.36", "syn 1.0.109", ] @@ -3860,8 +3874,8 @@ dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "syn 1.0.109", "wasm-bindgen-shared", ] @@ -3872,7 +3886,7 @@ version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" dependencies = [ - "quote 1.0.28", + "quote 1.0.36", "wasm-bindgen-macro-support", ] @@ -3882,8 +3896,8 @@ version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", + "proc-macro2 1.0.86", + "quote 1.0.36", "syn 1.0.109", "wasm-bindgen-backend", "wasm-bindgen-shared", @@ -4095,26 +4109,29 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winnow" -version = "0.4.1" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ "memchr", ] [[package]] -name = "wyz" -version = "0.2.0" +name = "winnow" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +dependencies = [ + "memchr", +] [[package]] -name = "yaml-rust" -version = "0.4.5" +name = "wyz" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" dependencies = [ - "linked-hash-map", + "tap", ] [[package]] @@ -4132,7 +4149,7 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.28", - "syn 2.0.22", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.71", ] diff --git a/external-crates/move/Cargo.toml b/external-crates/move/Cargo.toml index f03bca35238..07c4485b4ce 100644 --- a/external-crates/move/Cargo.toml +++ b/external-crates/move/Cargo.toml @@ -15,8 +15,8 @@ anyhow = "1.0.52" arbitrary = { version = "1.1.7", features = ["derive", "derive_arbitrary"] } async-trait = "0.1.42" bcs = "0.1.4" -better_any = "0.1.1" -bitvec = "0.19.4" +better_any = { version = "0.2.0", features = ["derive"] } +bitvec = "1.0.1" byteorder = "1.4.3" bytes = "1.0.1" chrono = "0.4.19" @@ -56,7 +56,7 @@ hex-literal = "0.3.4" hkdf = "0.10.0" im = "15.1.0" internment = { version = "0.5.0", features = ["arc"] } -itertools = "0.10.0" +itertools = "0.13.0" leb128 = "0.2.5" libfuzzer-sys = "0.4" log = { version = "0.4.14", features = ["serde"] } @@ -70,7 +70,7 @@ num-bigint = "0.4.0" num_cpus = "1.13.0" once_cell = "1.7.2" ouroboros = "0.17.2" -parking_lot = "0.11.1" +parking_lot = "0.12.3" paste = "1.0.5" pathdiff = "0.2.1" petgraph = "0.5.1" @@ -82,7 +82,7 @@ plotters = { version = "0.3.0", default-features = false, features = [ ] } pretty = "0.10.0" prettydiff = "0.4.0" -primitive-types = { version = "0.10.1", features = ["impl-serde"] } +primitive-types = { version = "0.12.2", features = ["impl-serde"] } proc-macro2 = "1.0.24" proptest = "1.0.0" proptest-derive = "0.3.0" @@ -93,11 +93,10 @@ ref-cast = "1.0.6" regex = "1.5.5" ripemd160 = "0.9.1" serde = { version = "1.0.124", features = ["derive"] } -serde-name = "0.1.1" -serde-reflection = "0.3.2" +serde-reflection = "0.4.0" serde_bytes = "0.11.5" serde_json = "1.0.64" -serde_yaml = "0.8.26" +serde_yaml = "0.9.34" sha2 = "0.9.3" sha3 = "0.9.1" shell-words = "1.0.0" @@ -112,8 +111,8 @@ tera = "1.16.0" thiserror = "1.0.24" tiny-keccak = { version = "2.0.2", features = ["sha3"] } tokio = { version = "1.18.2", features = ["full"] } -toml = "0.5.8" -toml_edit = { version = "0.14.3", features = ["easy"] } +toml = "0.8.14" +toml_edit = "0.22.15" tracing = "0.1.26" tracing-subscriber = { version = "0.3.15", features = ["env-filter"] } treeline = "0.1.0" diff --git a/external-crates/move/crates/move-binary-format/src/unit_tests/staged_enum_variant_order/type.yaml b/external-crates/move/crates/move-binary-format/src/unit_tests/staged_enum_variant_order/type.yaml index d36423d523b..f70ca15a963 100644 --- a/external-crates/move/crates/move-binary-format/src/unit_tests/staged_enum_variant_order/type.yaml +++ b/external-crates/move/crates/move-binary-format/src/unit_tests/staged_enum_variant_order/type.yaml @@ -1,4 +1,3 @@ ---- 0: Bool 1: U8 2: U64 diff --git a/external-crates/move/crates/move-bytecode-utils/Cargo.toml b/external-crates/move/crates/move-bytecode-utils/Cargo.toml index bcfe9488133..3a2e42fd699 100644 --- a/external-crates/move/crates/move-bytecode-utils/Cargo.toml +++ b/external-crates/move/crates/move-bytecode-utils/Cargo.toml @@ -14,4 +14,6 @@ anyhow.workspace = true move-binary-format.workspace = true move-core-types.workspace = true petgraph.workspace = true +serde.workspace = true +serde_yaml.workspace = true serde-reflection.workspace = true diff --git a/external-crates/move/crates/move-bytecode-utils/src/layout.rs b/external-crates/move/crates/move-bytecode-utils/src/layout.rs index e579aafbe31..fa5f997fada 100644 --- a/external-crates/move/crates/move-bytecode-utils/src/layout.rs +++ b/external-crates/move/crates/move-bytecode-utils/src/layout.rs @@ -18,6 +18,7 @@ use move_core_types::{ identifier::{IdentStr, Identifier}, language_storage::{ModuleId, StructTag, TypeTag}, }; +use serde::{Deserialize, Serialize}; use serde_reflection::{ContainerFormat, Format, Named, Registry}; use crate::module_cache::GetModule; @@ -47,11 +48,23 @@ macro_rules! check_depth { /// the serde-generate tool to create struct bindings for Move types in source /// languages that use Move-based services. pub struct SerdeLayoutBuilder<'a, T> { - registry: Registry, + registry: YamlRegistry, module_resolver: &'a T, config: SerdeLayoutConfig, } +#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)] +#[serde(transparent)] +pub struct YamlRegistry(#[serde(with = "serde_yaml::with::singleton_map_recursive")] pub Registry); + +impl core::ops::Deref for YamlRegistry { + type Target = Registry; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + #[derive(Default)] pub struct SerdeLayoutConfig { /// If separator is Some, replace all Move source syntax separators ("::" @@ -104,7 +117,7 @@ impl<'a, T: GetModule> SerdeLayoutBuilder<'a, T> { /// Return a registry containing layouts for all the Move ground types /// (e.g., address) - pub fn default_registry() -> Registry { + pub fn default_registry() -> YamlRegistry { let mut registry = BTreeMap::new(); // add Move ground types to registry (address, signer) let address_layout = Box::new(Format::TupleArray { @@ -120,16 +133,16 @@ impl<'a, T: GetModule> SerdeLayoutBuilder<'a, T> { ContainerFormat::NewTypeStruct(address_layout), ); - registry + YamlRegistry(registry) } /// Get the registry of layouts generated so far - pub fn registry(&self) -> &Registry { + pub fn registry(&self) -> &YamlRegistry { &self.registry } /// Get the registry of layouts generated so far - pub fn into_registry(self) -> Registry { + pub fn into_registry(self) -> YamlRegistry { self.registry } @@ -290,7 +303,7 @@ impl<'a, T: GetModule> SerdeLayoutBuilder<'a, T> { // not found--generate and update registry let serde_struct = self.generate_serde_struct(normalized_struct, type_arguments, depth)?; - self.registry.insert(struct_key.clone(), serde_struct); + self.registry.0.insert(struct_key.clone(), serde_struct); } Ok(Format::TypeName(struct_key)) diff --git a/external-crates/move/crates/move-cli/tests/sandbox_tests/generate_struct_layout/args.exp b/external-crates/move/crates/move-cli/tests/sandbox_tests/generate_struct_layout/args.exp index 7c4520eea83..05805ac6928 100644 --- a/external-crates/move/crates/move-cli/tests/sandbox_tests/generate_struct_layout/args.exp +++ b/external-crates/move/crates/move-cli/tests/sandbox_tests/generate_struct_layout/args.exp @@ -1,10 +1,9 @@ Command `sandbox publish`: Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/M2.mv --struct C --type-args u64`: ---- -"0000000000000000000000000000000000000000000000000000000000000001::M2::C": +0000000000000000000000000000000000000000000000000000000000000001::M2::C: STRUCT: - - t: U64 - - b: BOOL + - t: U64 + - b: BOOL AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -17,12 +16,11 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/M2.mv --struct C --type-args address`: ---- -"0000000000000000000000000000000000000000000000000000000000000001::M2::C": +0000000000000000000000000000000000000000000000000000000000000001::M2::C: STRUCT: - - t: - TYPENAME: AccountAddress - - b: BOOL + - t: + TYPENAME: AccountAddress + - b: BOOL AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -35,11 +33,10 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/M2.mv --struct C --type-args vector`: ---- -"0000000000000000000000000000000000000000000000000000000000000001::M2::C>": +0000000000000000000000000000000000000000000000000000000000000001::M2::C>: STRUCT: - - t: BYTES - - b: BOOL + - t: BYTES + - b: BOOL AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -52,18 +49,17 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/M1.mv --struct B --type-args bool`: ---- -"0000000000000000000000000000000000000000000000000000000000000001::M1::B": +0000000000000000000000000000000000000000000000000000000000000001::M1::B: STRUCT: - - a: - TYPENAME: AccountAddress - - c: - TYPENAME: "0000000000000000000000000000000000000000000000000000000000000001::M2::C" - - t: BOOL -"0000000000000000000000000000000000000000000000000000000000000001::M2::C": + - a: + TYPENAME: AccountAddress + - c: + TYPENAME: 0000000000000000000000000000000000000000000000000000000000000001::M2::C + - t: BOOL +0000000000000000000000000000000000000000000000000000000000000001::M2::C: STRUCT: - - t: BOOL - - b: BOOL + - t: BOOL + - b: BOOL AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -76,7 +72,6 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/M1.mv --struct B --type-args bool --shallow`: ---- AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -89,29 +84,28 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/M1.mv --struct A --type-args 0x1::M1::S`: ---- -"0000000000000000000000000000000000000000000000000000000000000001::M1::A<0000000000000000000000000000000000000000000000000000000000000001::M1::S>": +? 0000000000000000000000000000000000000000000000000000000000000001::M1::A<0000000000000000000000000000000000000000000000000000000000000001::M1::S> +: STRUCT: + - f: U64 + - v: BYTES + - b: + TYPENAME: 0000000000000000000000000000000000000000000000000000000000000001::M1::B<0000000000000000000000000000000000000000000000000000000000000001::M1::S> +? 0000000000000000000000000000000000000000000000000000000000000001::M1::B<0000000000000000000000000000000000000000000000000000000000000001::M1::S> +: STRUCT: + - a: + TYPENAME: AccountAddress + - c: + TYPENAME: 0000000000000000000000000000000000000000000000000000000000000001::M2::C<0000000000000000000000000000000000000000000000000000000000000001::M1::S> + - t: + TYPENAME: 0000000000000000000000000000000000000000000000000000000000000001::M1::S +0000000000000000000000000000000000000000000000000000000000000001::M1::S: STRUCT: - - f: U64 - - v: BYTES - - b: - TYPENAME: "0000000000000000000000000000000000000000000000000000000000000001::M1::B<0000000000000000000000000000000000000000000000000000000000000001::M1::S>" -"0000000000000000000000000000000000000000000000000000000000000001::M1::B<0000000000000000000000000000000000000000000000000000000000000001::M1::S>": - STRUCT: - - a: - TYPENAME: AccountAddress - - c: - TYPENAME: "0000000000000000000000000000000000000000000000000000000000000001::M2::C<0000000000000000000000000000000000000000000000000000000000000001::M1::S>" - - t: - TYPENAME: "0000000000000000000000000000000000000000000000000000000000000001::M1::S" -"0000000000000000000000000000000000000000000000000000000000000001::M1::S": - STRUCT: - - t: U64 -"0000000000000000000000000000000000000000000000000000000000000001::M2::C<0000000000000000000000000000000000000000000000000000000000000001::M1::S>": - STRUCT: - - t: - TYPENAME: "0000000000000000000000000000000000000000000000000000000000000001::M1::S" - - b: BOOL + - t: U64 +? 0000000000000000000000000000000000000000000000000000000000000001::M2::C<0000000000000000000000000000000000000000000000000000000000000001::M1::S> +: STRUCT: + - t: + TYPENAME: 0000000000000000000000000000000000000000000000000000000000000001::M1::S + - b: BOOL AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -124,31 +118,30 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/M1.mv --struct A --type-args vector<0x1::M1::S>`: ---- -"0000000000000000000000000000000000000000000000000000000000000001::M1::A>>": - STRUCT: - - f: U64 - - v: BYTES - - b: - TYPENAME: "0000000000000000000000000000000000000000000000000000000000000001::M1::B>>" -"0000000000000000000000000000000000000000000000000000000000000001::M1::B>>": +? 0000000000000000000000000000000000000000000000000000000000000001::M1::A>> +: STRUCT: + - f: U64 + - v: BYTES + - b: + TYPENAME: 0000000000000000000000000000000000000000000000000000000000000001::M1::B>> +? 0000000000000000000000000000000000000000000000000000000000000001::M1::B>> +: STRUCT: + - a: + TYPENAME: AccountAddress + - c: + TYPENAME: 0000000000000000000000000000000000000000000000000000000000000001::M2::C>> + - t: + SEQ: + TYPENAME: 0000000000000000000000000000000000000000000000000000000000000001::M1::S +0000000000000000000000000000000000000000000000000000000000000001::M1::S: STRUCT: - - a: - TYPENAME: AccountAddress - - c: - TYPENAME: "0000000000000000000000000000000000000000000000000000000000000001::M2::C>>" - - t: - SEQ: - TYPENAME: "0000000000000000000000000000000000000000000000000000000000000001::M1::S" -"0000000000000000000000000000000000000000000000000000000000000001::M1::S": - STRUCT: - - t: U64 -"0000000000000000000000000000000000000000000000000000000000000001::M2::C>>": - STRUCT: - - t: - SEQ: - TYPENAME: "0000000000000000000000000000000000000000000000000000000000000001::M1::S" - - b: BOOL + - t: U64 +? 0000000000000000000000000000000000000000000000000000000000000001::M2::C>> +: STRUCT: + - t: + SEQ: + TYPENAME: 0000000000000000000000000000000000000000000000000000000000000001::M1::S + - b: BOOL AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -161,7 +154,6 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/M1.mv --struct A --type-args 0x1::M1::S --shallow`: ---- AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -174,7 +166,6 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/M1.mv --struct A --type-args vector<0x1::M1::S> --shallow`: ---- AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -187,16 +178,15 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/M2.mv --struct C --type-args 0x1::M2::C`: ---- -"0000000000000000000000000000000000000000000000000000000000000001::M2::C<0000000000000000000000000000000000000000000000000000000000000001::M2::C>": - STRUCT: - - t: - TYPENAME: "0000000000000000000000000000000000000000000000000000000000000001::M2::C" - - b: BOOL -"0000000000000000000000000000000000000000000000000000000000000001::M2::C": +? 0000000000000000000000000000000000000000000000000000000000000001::M2::C<0000000000000000000000000000000000000000000000000000000000000001::M2::C> +: STRUCT: + - t: + TYPENAME: 0000000000000000000000000000000000000000000000000000000000000001::M2::C + - b: BOOL +0000000000000000000000000000000000000000000000000000000000000001::M2::C: STRUCT: - - t: U64 - - b: BOOL + - t: U64 + - b: BOOL AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -209,15 +199,14 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/M1.mv --struct G`: ---- -"0000000000000000000000000000000000000000000000000000000000000001::M1::G": +0000000000000000000000000000000000000000000000000000000000000001::M1::G: STRUCT: - - x: U64 - - s: - TYPENAME: "0000000000000000000000000000000000000000000000000000000000000001::M1::S" -"0000000000000000000000000000000000000000000000000000000000000001::M1::S": + - x: U64 + - s: + TYPENAME: 0000000000000000000000000000000000000000000000000000000000000001::M1::S +0000000000000000000000000000000000000000000000000000000000000001::M1::S: STRUCT: - - t: BOOL + - t: BOOL AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -230,10 +219,9 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/phantoms.mv --struct A --type-args bool --ignore-phantom-types`: ---- -"0000000000000000000000000000000000000000000000000000000000000001::phantoms::A": +0000000000000000000000000000000000000000000000000000000000000001::phantoms::A: STRUCT: - - dummy_field: BOOL + - dummy_field: BOOL AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -246,10 +234,9 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/phantoms.mv --struct A --type-args u64 --ignore-phantom-types`: ---- -"0000000000000000000000000000000000000000000000000000000000000001::phantoms::A": +0000000000000000000000000000000000000000000000000000000000000001::phantoms::A: STRUCT: - - dummy_field: BOOL + - dummy_field: BOOL AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -262,10 +249,9 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/phantoms.mv --struct B --type-args bool u8 --ignore-phantom-types`: ---- -"0000000000000000000000000000000000000000000000000000000000000001::phantoms::B": +0000000000000000000000000000000000000000000000000000000000000001::phantoms::B: STRUCT: - - dummy_field: BOOL + - dummy_field: BOOL AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -278,19 +264,18 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/phantoms.mv --struct C --type-args u8 u64 u128 --ignore-phantom-types`: ---- -"0000000000000000000000000000000000000000000000000000000000000001::phantoms::A": +0000000000000000000000000000000000000000000000000000000000000001::phantoms::A: STRUCT: - - dummy_field: BOOL -"0000000000000000000000000000000000000000000000000000000000000001::phantoms::B": + - dummy_field: BOOL +0000000000000000000000000000000000000000000000000000000000000001::phantoms::B: STRUCT: - - dummy_field: BOOL -"0000000000000000000000000000000000000000000000000000000000000001::phantoms::C": + - dummy_field: BOOL +0000000000000000000000000000000000000000000000000000000000000001::phantoms::C: STRUCT: - - a: - TYPENAME: "0000000000000000000000000000000000000000000000000000000000000001::phantoms::A" - - b: - TYPENAME: "0000000000000000000000000000000000000000000000000000000000000001::phantoms::B" + - a: + TYPENAME: 0000000000000000000000000000000000000000000000000000000000000001::phantoms::A + - b: + TYPENAME: 0000000000000000000000000000000000000000000000000000000000000001::phantoms::B AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -303,11 +288,10 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/phantoms.mv --struct D --type-args bool u64 --ignore-phantom-types`: ---- -"0000000000000000000000000000000000000000000000000000000000000001::phantoms::D": +0000000000000000000000000000000000000000000000000000000000000001::phantoms::D: STRUCT: - - v: - SEQ: U64 + - v: + SEQ: U64 AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -320,13 +304,12 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/phantoms.mv --struct E --type-args bool u64 u128 --ignore-phantom-types`: ---- -"0000000000000000000000000000000000000000000000000000000000000001::phantoms::E": +0000000000000000000000000000000000000000000000000000000000000001::phantoms::E: STRUCT: - - v1: - SEQ: BOOL - - v2: - SEQ: U128 + - v1: + SEQ: BOOL + - v2: + SEQ: U128 AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -339,7 +322,6 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/phantoms.mv --struct E --type-args bool u64 u128 --omit-addresses`: ---- AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -350,21 +332,20 @@ Signer: TUPLEARRAY: CONTENT: U8 SIZE: 32 -"phantoms::E": +phantoms::E: STRUCT: - - v1: - SEQ: BOOL - - v2: - SEQ: U128 + - v1: + SEQ: BOOL + - v2: + SEQ: U128 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/phantoms.mv --struct E --type-args bool u64 u128 --separator __`: ---- 0000000000000000000000000000000000000000000000000000000000000001__phantoms__E__bool__u64__u128__: STRUCT: - - v1: - SEQ: BOOL - - v2: - SEQ: U128 + - v1: + SEQ: BOOL + - v2: + SEQ: U128 AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -377,7 +358,6 @@ Signer: SIZE: 32 Command `sandbox generate struct-layouts --module storage/0x0000000000000000000000000000000000000000000000000000000000000001/modules/phantoms.mv --struct E --type-args bool u64 u128 --omit-addresses --separator __`: ---- AccountAddress: NEWTYPESTRUCT: TUPLEARRAY: @@ -390,8 +370,8 @@ Signer: SIZE: 32 phantoms__E__bool__u64__u128__: STRUCT: - - v1: - SEQ: BOOL - - v2: - SEQ: U128 + - v1: + SEQ: BOOL + - v2: + SEQ: U128 diff --git a/external-crates/move/crates/move-core-types/src/unit_tests/staged_enum_variant_order/move_type_layout.yaml b/external-crates/move/crates/move-core-types/src/unit_tests/staged_enum_variant_order/move_type_layout.yaml index ef64e6ce237..a8a5a4d2899 100644 --- a/external-crates/move/crates/move-core-types/src/unit_tests/staged_enum_variant_order/move_type_layout.yaml +++ b/external-crates/move/crates/move-core-types/src/unit_tests/staged_enum_variant_order/move_type_layout.yaml @@ -1,4 +1,3 @@ ---- 0: Bool 1: U8 2: U64 diff --git a/external-crates/move/crates/move-core-types/src/unit_tests/staged_enum_variant_order/transaction_argument.yaml b/external-crates/move/crates/move-core-types/src/unit_tests/staged_enum_variant_order/transaction_argument.yaml index c55f97d83b8..ca7cc23869d 100644 --- a/external-crates/move/crates/move-core-types/src/unit_tests/staged_enum_variant_order/transaction_argument.yaml +++ b/external-crates/move/crates/move-core-types/src/unit_tests/staged_enum_variant_order/transaction_argument.yaml @@ -1,4 +1,3 @@ ---- 0: U8 1: U64 2: U128 diff --git a/external-crates/move/crates/move-core-types/src/unit_tests/staged_enum_variant_order/type_tag.yaml b/external-crates/move/crates/move-core-types/src/unit_tests/staged_enum_variant_order/type_tag.yaml index 3f0bc006660..a6dce24b705 100644 --- a/external-crates/move/crates/move-core-types/src/unit_tests/staged_enum_variant_order/type_tag.yaml +++ b/external-crates/move/crates/move-core-types/src/unit_tests/staged_enum_variant_order/type_tag.yaml @@ -1,4 +1,3 @@ ---- 0: Bool 1: U8 2: U64 diff --git a/external-crates/move/crates/move-package/src/compilation/build_plan.rs b/external-crates/move/crates/move-package/src/compilation/build_plan.rs index f7f2ee644a1..5c0809a86e0 100644 --- a/external-crates/move/crates/move-package/src/compilation/build_plan.rs +++ b/external-crates/move/crates/move-package/src/compilation/build_plan.rs @@ -20,7 +20,7 @@ use move_compiler::{ Compiler, }; use move_symbol_pool::Symbol; -use toml_edit::{value, Document}; +use toml_edit::{value, DocumentMut}; use super::{ compiled_package::{DependencyInfo, ModuleFormat}, @@ -267,7 +267,7 @@ impl BuildPlan { pub fn record_package_edition(&self, edition: Edition) -> anyhow::Result<()> { let move_toml_path = resolve_move_manifest_path(&self.root_package_path()); let mut toml = std::fs::read_to_string(move_toml_path.clone())? - .parse::() + .parse::() .expect("Failed to read TOML file to update edition"); toml[PACKAGE_NAME][EDITION_NAME] = value(edition.to_string()); std::fs::write(move_toml_path, toml.to_string())?; diff --git a/external-crates/move/crates/move-package/src/lock_file/schema.rs b/external-crates/move/crates/move-package/src/lock_file/schema.rs index 76d7589d0be..637b5622430 100644 --- a/external-crates/move/crates/move-package/src/lock_file/schema.rs +++ b/external-crates/move/crates/move-package/src/lock_file/schema.rs @@ -219,7 +219,7 @@ pub fn update_dependency_graph( use toml_edit::value; let mut toml_string = String::new(); file.read_to_string(&mut toml_string)?; - let mut toml = toml_string.parse::()?; + let mut toml = toml_string.parse::()?; let move_table = toml .entry("move") .or_insert(Item::Table(toml_edit::Table::new())) @@ -266,7 +266,7 @@ pub fn update_compiler_toolchain( ) -> Result<()> { let mut toml_string = String::new(); file.read_to_string(&mut toml_string)?; - let mut toml = toml_string.parse::()?; + let mut toml = toml_string.parse::()?; let move_table = toml["move"].as_table_mut().ok_or(std::fmt::Error)?; let toolchain_version = toml::Value::try_from(ToolchainVersion { compiler_version, @@ -326,11 +326,11 @@ pub fn update_managed_address( environment: &str, managed_address_update: ManagedAddressUpdate, ) -> Result<()> { - use toml_edit::{value, Document, Table}; + use toml_edit::{value, DocumentMut, Table}; let mut toml_string = String::new(); file.read_to_string(&mut toml_string)?; - let mut toml = toml_string.parse::()?; + let mut toml = toml_string.parse::()?; let env_table = toml .entry(ENV_TABLE_NAME) diff --git a/external-crates/move/crates/move-package/src/resolution/dependency_graph.rs b/external-crates/move/crates/move-package/src/resolution/dependency_graph.rs index e49a1ecadd9..1a1743270a2 100644 --- a/external-crates/move/crates/move-package/src/resolution/dependency_graph.rs +++ b/external-crates/move/crates/move-package/src/resolution/dependency_graph.rs @@ -1269,10 +1269,10 @@ impl DependencyGraph { for (id, pkg) in &self.package_table { writeln!(writer, "\n[[move.package]]")?; - writeln!(writer, "name = {}", str_escape(id.as_str())?)?; + writeln!(writer, "name = {}", str_escape(id.as_str()))?; writeln!(writer, "source = {}", PackageTOML(pkg))?; if let Some(version) = &pkg.version { - writeln!(writer, "version = {}", str_escape(version.as_str())?)?; + writeln!(writer, "version = {}", str_escape(version.as_str()))?; } self.write_dependencies_to_lock(*id, &mut writer)?; @@ -1282,7 +1282,7 @@ impl DependencyGraph { let mut dev_dependencies = None; let mut packages = None; if !writer.is_empty() { - let toml = writer.parse::()?; + let toml = writer.parse::()?; if let Some(value) = toml.get("dependencies").and_then(|v| v.as_value()) { dependencies = Some(value.clone()); } @@ -1552,10 +1552,10 @@ impl fmt::Display for Package { subdir, }) => { write!(f, "git = ")?; - f.write_str(&str_escape(git_url.as_str())?)?; + f.write_str(&str_escape(git_url.as_str()))?; write!(f, ", rev = ")?; - f.write_str(&str_escape(git_rev.as_str())?)?; + f.write_str(&str_escape(git_rev.as_str()))?; write!(f, ", subdir = ")?; f.write_str(&path_escape(subdir)?)?; @@ -1571,10 +1571,10 @@ impl fmt::Display for Package { f.write_str(&custom_key)?; write!(f, " = ")?; - f.write_str(&str_escape(node_url.as_str())?)?; + f.write_str(&str_escape(node_url.as_str()))?; write!(f, ", address = ")?; - f.write_str(&str_escape(package_address.as_str())?)?; + f.write_str(&str_escape(package_address.as_str()))?; write!(f, ", subdir = ")?; f.write_str(&path_escape(subdir)?)?; @@ -1622,11 +1622,11 @@ impl<'a> fmt::Display for DependencyTOML<'a> { f.write_str("{ ")?; write!(f, "name = ")?; - f.write_str(&str_escape(name.as_str())?)?; + f.write_str(&str_escape(name.as_str()))?; if let Some(digest) = digest { write!(f, ", digest = ")?; - f.write_str(&str_escape(digest.as_str())?)?; + f.write_str(&str_escape(digest.as_str()))?; } if let Some(subst) = subst { @@ -1646,18 +1646,18 @@ impl<'a> fmt::Display for SubstTOML<'a> { addr: &PM::NamedAddress, subst: &PM::SubstOrRename, ) -> fmt::Result { - f.write_str(&str_escape(addr.as_str())?)?; + f.write_str(&str_escape(addr.as_str()))?; write!(f, " = ")?; match subst { PM::SubstOrRename::RenameFrom(named) => { - f.write_str(&str_escape(named.as_str())?)?; + f.write_str(&str_escape(named.as_str()))?; } PM::SubstOrRename::Assign(account) => { f.write_str(&str_escape( &account.to_canonical_string(/* with_prefix */ false), - )?)?; + ))?; } } @@ -1685,13 +1685,13 @@ impl<'a> fmt::Display for SubstTOML<'a> { } /// Escape a string to output in a TOML file. -fn str_escape(s: &str) -> Result { - toml::to_string(s).map_err(|_| fmt::Error) +fn str_escape(s: &str) -> String { + format!("\"{s}\"") } /// Escape a path to output in a TOML file. fn path_escape(p: &Path) -> Result { - str_escape(p.to_str().ok_or(fmt::Error)?) + p.to_str().map(str_escape).ok_or(fmt::Error) } fn format_deps( diff --git a/external-crates/move/crates/move-package/tests/test_sources/conflicting_dependencies/Move.resolved b/external-crates/move/crates/move-package/tests/test_sources/conflicting_dependencies/Move.resolved index 8697b06d13c..ce9461ff25c 100644 --- a/external-crates/move/crates/move-package/tests/test_sources/conflicting_dependencies/Move.resolved +++ b/external-crates/move/crates/move-package/tests/test_sources/conflicting_dependencies/Move.resolved @@ -1 +1,6 @@ -Unable to parse Move package manifest: duplicate key: `OtherDep` for key `dependencies` at line 4 column 1 +Unable to parse Move package manifest: TOML parse error at line 6, column 1 + | +6 | OtherDep = { local = "./deps_only/different_dep" } + | ^ +duplicate key `OtherDep` in table `dependencies` + diff --git a/external-crates/move/crates/move-package/tests/test_sources/external_broken/Move.resolved b/external-crates/move/crates/move-package/tests/test_sources/external_broken/Move.resolved index 4851b9cdb33..2db982dbcf3 100644 --- a/external-crates/move/crates/move-package/tests/test_sources/external_broken/Move.resolved +++ b/external-crates/move/crates/move-package/tests/test_sources/external_broken/Move.resolved @@ -1 +1,6 @@ -Failed to resolve dependencies for package 'Root': Parsing response from '../resolvers/broken.sh' for dependency 'A' of package 'Root': Deserializing packages: expected an equals, found an identifier at line 1 column 8 +Failed to resolve dependencies for package 'Root': Parsing response from '../resolvers/broken.sh' for dependency 'A' of package 'Root': Deserializing packages: TOML parse error at line 1, column 8 + | +1 | Broken response (not a lock file) from resolver for dependencies of A. + | ^ +expected `.`, `=` + diff --git a/external-crates/move/crates/move-package/tests/test_sources/nested_pruned_override/Move.resolved b/external-crates/move/crates/move-package/tests/test_sources/nested_pruned_override/Move.resolved index 396f985fe2b..89c07b51099 100644 --- a/external-crates/move/crates/move-package/tests/test_sources/nested_pruned_override/Move.resolved +++ b/external-crates/move/crates/move-package/tests/test_sources/nested_pruned_override/Move.resolved @@ -74,7 +74,7 @@ ResolvedGraph { "C", "Root", }, - manifest_digest: "0157AC19D24D39641693161A0A6A0A4E3C424C337419209BBCD31C7C8BC34D18", + manifest_digest: "88D80D8F394B4DA9DB2130BF23F2B93FBEFCB1039E8CFC1599DC7C653FC90879", deps_digest: "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600", }, build_options: BuildConfig { diff --git a/external-crates/move/crates/move-package/tests/test_sources/parsing_duplicate_address_names/Move.resolved b/external-crates/move/crates/move-package/tests/test_sources/parsing_duplicate_address_names/Move.resolved index 3f64a096beb..77fc70b336f 100644 --- a/external-crates/move/crates/move-package/tests/test_sources/parsing_duplicate_address_names/Move.resolved +++ b/external-crates/move/crates/move-package/tests/test_sources/parsing_duplicate_address_names/Move.resolved @@ -1 +1,6 @@ -Unable to parse Move package manifest: duplicate key: `a` for key `addresses` at line 4 column 1 +Unable to parse Move package manifest: TOML parse error at line 6, column 1 + | +6 | a = "0x2" + | ^ +duplicate key `a` in table `addresses` + diff --git a/external-crates/move/crates/move-package/tests/test_sources/parsing_duplicate_top_level_field/Move.resolved b/external-crates/move/crates/move-package/tests/test_sources/parsing_duplicate_top_level_field/Move.resolved index 6dda36c53c8..7ed66c1caeb 100644 --- a/external-crates/move/crates/move-package/tests/test_sources/parsing_duplicate_top_level_field/Move.resolved +++ b/external-crates/move/crates/move-package/tests/test_sources/parsing_duplicate_top_level_field/Move.resolved @@ -1 +1,7 @@ -Unable to parse Move package manifest: redefinition of table `package` for key `package` at line 4 column 1 +Unable to parse Move package manifest: TOML parse error at line 4, column 1 + | +4 | [package] + | ^ +invalid table header +duplicate key `package` in document root + diff --git a/external-crates/move/crates/move-package/tests/test_sources/parsing_non_string_address_name/Move.resolved b/external-crates/move/crates/move-package/tests/test_sources/parsing_non_string_address_name/Move.resolved index d84d0e1a68e..d254bd2a857 100644 --- a/external-crates/move/crates/move-package/tests/test_sources/parsing_non_string_address_name/Move.resolved +++ b/external-crates/move/crates/move-package/tests/test_sources/parsing_non_string_address_name/Move.resolved @@ -1,2 +1 @@ -Error parsing '[addresses]' section of manifest: Invalid address name b = "0x1" - encountered. Expected a string but found a table +Error parsing '[addresses]' section of manifest: Invalid address name { b = "0x1" } encountered. Expected a string but found a table diff --git a/external-crates/move/crates/move-package/tests/test_sources/parsing_too_many_entries_renaming_instantiation/Move.resolved b/external-crates/move/crates/move-package/tests/test_sources/parsing_too_many_entries_renaming_instantiation/Move.resolved index b6a6cc50d24..a704eef4a45 100644 --- a/external-crates/move/crates/move-package/tests/test_sources/parsing_too_many_entries_renaming_instantiation/Move.resolved +++ b/external-crates/move/crates/move-package/tests/test_sources/parsing_too_many_entries_renaming_instantiation/Move.resolved @@ -1,3 +1 @@ -Error parsing '[dependencies]' section of manifest: Malformed dependency substitution B = "0x1" -R = "0x2" -. Expected a string, but encountered a table +Error parsing '[dependencies]' section of manifest: Malformed dependency substitution { B = "0x1", R = "0x2" }. Expected a string, but encountered a table diff --git a/iota-execution/cut/src/plan.rs b/iota-execution/cut/src/plan.rs index 8c4b09fc620..86ae1d9f7f9 100644 --- a/iota-execution/cut/src/plan.rs +++ b/iota-execution/cut/src/plan.rs @@ -11,7 +11,7 @@ use std::{ use anyhow::{bail, Context, Result}; use thiserror::Error; use toml::value::Value; -use toml_edit::{self, Document, Item}; +use toml_edit::{self, DocumentMut, Item}; use crate::{ args::Args, @@ -321,7 +321,7 @@ impl CutPlan { /// information). fn update_package(&self, package: &CutPackage) -> Result<()> { let path = package.dst_path.join("Cargo.toml"); - let mut toml = fs::read_to_string(&path)?.parse::()?; + let mut toml = fs::read_to_string(&path)?.parse::()?; // Update the package name toml["package"]["name"] = toml_edit::value(&package.dst_name); @@ -422,7 +422,7 @@ impl CutPlan { bail!(Error::NoWorkspace(path)); } - let mut toml = fs::read_to_string(&path)?.parse::()?; + let mut toml = fs::read_to_string(&path)?.parse::()?; for package in self.packages.values() { match package.ws_state { WorkspaceState::Unknown => { @@ -853,12 +853,6 @@ mod tests { "$PATH/iota-execution/exec-cut", }, packages: { - "move-core-types": CutPackage { - dst_name: "move-core-types-feature", - src_path: "$PATH/external-crates/move/crates/move-core-types", - dst_path: "$PATH/iota-execution/cut-move-core-types", - ws_state: Exclude, - }, "iota-adapter-latest": CutPackage { dst_name: "iota-adapter-feature", src_path: "$PATH/iota-execution/latest/iota-adapter", @@ -877,6 +871,12 @@ mod tests { dst_path: "$PATH/iota-execution/exec-cut/iota-verifier", ws_state: Member, }, + "move-core-types": CutPackage { + dst_name: "move-core-types-feature", + src_path: "$PATH/external-crates/move/crates/move-core-types", + dst_path: "$PATH/iota-execution/cut-move-core-types", + ws_state: Exclude, + }, }, }"#]] .assert_eq(&debug_for_test(&plan)); @@ -954,12 +954,6 @@ mod tests { "$PATH/iota-execution/feature", }, packages: { - "move-core-types": CutPackage { - dst_name: "move-core-types-feature", - src_path: "$PATH/external-crates/move/crates/move-core-types", - dst_path: "$PATH/iota-execution/feature/move/crates/move-core-types", - ws_state: Exclude, - }, "iota-adapter-latest": CutPackage { dst_name: "iota-adapter-feature", src_path: "$PATH/iota-execution/latest/iota-adapter", @@ -978,6 +972,12 @@ mod tests { dst_path: "$PATH/iota-execution/feature/iota-verifier", ws_state: Member, }, + "move-core-types": CutPackage { + dst_name: "move-core-types-feature", + src_path: "$PATH/external-crates/move/crates/move-core-types", + dst_path: "$PATH/iota-execution/feature/move/crates/move-core-types", + ws_state: Exclude, + }, }, }"#]] .assert_eq(&debug_for_test(&plan)); @@ -1361,12 +1361,6 @@ mod tests { "$PATH/iota-execution/exec-cut", }, packages: { - "move-core-types": CutPackage { - dst_name: "move-core-types-feature", - src_path: "$PATH/external-crates/move/crates/move-core-types", - dst_path: "$PATH/iota-execution/cut-move-core-types", - ws_state: Unknown, - }, "iota-adapter-latest": CutPackage { dst_name: "iota-adapter-feature", src_path: "$PATH/iota-execution/latest/iota-adapter", @@ -1385,6 +1379,12 @@ mod tests { dst_path: "$PATH/iota-execution/exec-cut/iota-verifier", ws_state: Unknown, }, + "move-core-types": CutPackage { + dst_name: "move-core-types-feature", + src_path: "$PATH/external-crates/move/crates/move-core-types", + dst_path: "$PATH/iota-execution/cut-move-core-types", + ws_state: Unknown, + }, }, }"#]] .assert_eq(&debug_for_test(&plan)); diff --git a/narwhal/network/src/admin.rs b/narwhal/network/src/admin.rs index 3a982d8ab0b..c2bf95ea7b4 100644 --- a/narwhal/network/src/admin.rs +++ b/narwhal/network/src/admin.rs @@ -37,7 +37,7 @@ pub fn start_admin_server( // Spawn a task to shutdown server. handles.push(spawn_monitored_task!(async move { _ = tr_shutdown.receiver.recv().await; - handle.clone().shutdown(); + handle.shutdown(); })); handles.push(spawn_logged_monitored_task!( diff --git a/narwhal/node/Cargo.toml b/narwhal/node/Cargo.toml index b13c3e867e4..68d28d9aa44 100644 --- a/narwhal/node/Cargo.toml +++ b/narwhal/node/Cargo.toml @@ -46,7 +46,9 @@ anemo.workspace = true reqwest.workspace = true [dev-dependencies] +move-bytecode-utils.workspace = true pretty_assertions.workspace = true +serde.workspace = true serde-reflection.workspace = true serde_yaml.workspace = true test-utils = { path = "../test-utils", package = "narwhal-test-utils" } diff --git a/narwhal/node/src/generate_format.rs b/narwhal/node/src/generate_format.rs index 15a024756f4..bf9b4917784 100644 --- a/narwhal/node/src/generate_format.rs +++ b/narwhal/node/src/generate_format.rs @@ -10,9 +10,10 @@ use fastcrypto::{ hash::Hash, traits::{KeyPair as _, Signer}, }; +use move_bytecode_utils::layout::YamlRegistry; use mysten_network::Multiaddr; use rand::{prelude::StdRng, SeedableRng}; -use serde_reflection::{Registry, Result, Samples, Tracer, TracerConfig}; +use serde_reflection::{Result, Samples, Tracer, TracerConfig}; use types::{ Batch, BatchDigest, Certificate, CertificateDigest, Header, HeaderDigest, HeaderV1Builder, MetadataV1, VersionedMetadata, WorkerOthersBatchMessage, WorkerOwnBatchMessage, @@ -20,7 +21,7 @@ use types::{ }; #[allow(clippy::mutable_key_type)] -fn get_registry() -> Result { +fn get_registry() -> Result { let mut tracer = Tracer::new(TracerConfig::default()); let mut samples = Samples::new(); // 1. Record samples for types with custom deserializers. @@ -141,7 +142,7 @@ fn get_registry() -> Result { tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; - tracer.registry() + Ok(YamlRegistry(tracer.registry()?)) } #[derive(Debug, clap::ValueEnum, Clone, Copy)] @@ -181,7 +182,7 @@ fn main() { // cargo -q run --example narwhal-generate-format -- print > // tests/staged/narwhal.yaml let reference = std::fs::read_to_string(FILE_PATH).unwrap(); - let reference: Registry = serde_yaml::from_str(&reference).unwrap(); + let reference: YamlRegistry = serde_yaml::from_str(&reference).unwrap(); pretty_assertions::assert_eq!(reference, registry); } } diff --git a/narwhal/node/src/metrics.rs b/narwhal/node/src/metrics.rs index e2d88e82adf..36b10e39b6b 100644 --- a/narwhal/node/src/metrics.rs +++ b/narwhal/node/src/metrics.rs @@ -107,8 +107,8 @@ pub fn start_prometheus_server(addr: Multiaddr, registry: &Registry) -> JoinHand spawn_logged_monitored_task!( async move { - axum::Server::bind(&socket_addr) - .serve(app.into_make_service()) + let listener = tokio::net::TcpListener::bind(socket_addr).await.unwrap(); + axum::serve(listener, app.into_make_service()) .await .unwrap(); }, diff --git a/narwhal/node/tests/formats.rs b/narwhal/node/tests/formats.rs index a0efe399ef5..50caa3bd625 100644 --- a/narwhal/node/tests/formats.rs +++ b/narwhal/node/tests/formats.rs @@ -4,9 +4,10 @@ #[test] fn test_format() { + #[rustfmt::skip] // If this test breaks and you intended a format change, you need to run to get - // the fresh format: # cargo -q run --example narwhal-generate-format -- - // print > narwhal/node/tests/staged/narwhal.yaml + // the fresh format: + // # cargo -q run --example narwhal-generate-format -- print > narwhal/node/tests/staged/narwhal.yaml let status = std::process::Command::new("cargo") .current_dir("..") diff --git a/narwhal/node/tests/staged/narwhal.yaml b/narwhal/node/tests/staged/narwhal.yaml index 951b16ef56e..1e172f0fbac 100644 --- a/narwhal/node/tests/staged/narwhal.yaml +++ b/narwhal/node/tests/staged/narwhal.yaml @@ -1,21 +1,20 @@ ---- Authority: STRUCT: - - protocol_key: - TUPLEARRAY: - CONTENT: U8 - SIZE: 96 - - protocol_key_bytes: - TUPLEARRAY: - CONTENT: U8 - SIZE: 96 - - stake: U64 - - primary_address: STR - - network_key: - TUPLEARRAY: - CONTENT: U8 - SIZE: 32 - - hostname: STR + - protocol_key: + TUPLEARRAY: + CONTENT: U8 + SIZE: 96 + - protocol_key_bytes: + TUPLEARRAY: + CONTENT: U8 + SIZE: 96 + - stake: U64 + - primary_address: STR + - network_key: + TUPLEARRAY: + CONTENT: U8 + SIZE: 32 + - hostname: STR AuthorityIdentifier: NEWTYPESTRUCT: U16 Batch: @@ -31,11 +30,11 @@ BatchDigest: SIZE: 32 BatchV2: STRUCT: - - transactions: - SEQ: - SEQ: U8 - - versioned_metadata: - TYPENAME: VersionedMetadata + - transactions: + SEQ: + SEQ: U8 + - versioned_metadata: + TYPENAME: VersionedMetadata Certificate: ENUM: 0: @@ -49,24 +48,24 @@ CertificateDigest: SIZE: 32 CertificateV2: STRUCT: - - header: - TYPENAME: Header - - signature_verification_state: - TYPENAME: SignatureVerificationState - - signed_authorities: BYTES - - metadata: - TYPENAME: Metadata + - header: + TYPENAME: Header + - signature_verification_state: + TYPENAME: SignatureVerificationState + - signed_authorities: BYTES + - metadata: + TYPENAME: Metadata Committee: STRUCT: - - authorities: - MAP: - KEY: - TUPLEARRAY: - CONTENT: U8 - SIZE: 96 - VALUE: - TYPENAME: Authority - - epoch: U64 + - authorities: + MAP: + KEY: + TUPLEARRAY: + CONTENT: U8 + SIZE: 96 + VALUE: + TYPENAME: Authority + - epoch: U64 Header: ENUM: 0: @@ -80,29 +79,29 @@ HeaderDigest: SIZE: 32 HeaderV1: STRUCT: - - author: - TYPENAME: AuthorityIdentifier - - round: U64 - - epoch: U64 - - created_at: U64 - - payload: - SEQ: - TUPLE: - - TYPENAME: BatchDigest - - TUPLE: - - U32 - - U64 - - parents: - SEQ: - TYPENAME: CertificateDigest + - author: + TYPENAME: AuthorityIdentifier + - round: U64 + - epoch: U64 + - created_at: U64 + - payload: + SEQ: + TUPLE: + - TYPENAME: BatchDigest + - TUPLE: + - U32 + - U64 + - parents: + SEQ: + TYPENAME: CertificateDigest Metadata: STRUCT: - - created_at: U64 + - created_at: U64 MetadataV1: STRUCT: - - created_at: U64 - - received_at: - OPTION: U64 + - created_at: U64 + - received_at: + OPTION: U64 SignatureVerificationState: ENUM: 0: @@ -125,29 +124,30 @@ WorkerIndex: TYPENAME: WorkerInfo WorkerInfo: STRUCT: - - name: - TUPLEARRAY: - CONTENT: U8 - SIZE: 32 - - transactions: STR - - worker_address: STR + - name: + TUPLEARRAY: + CONTENT: U8 + SIZE: 32 + - transactions: STR + - worker_address: STR WorkerOthersBatchMessage: STRUCT: - - digest: - TYPENAME: BatchDigest - - worker_id: U32 + - digest: + TYPENAME: BatchDigest + - worker_id: U32 WorkerOwnBatchMessage: STRUCT: - - digest: - TYPENAME: BatchDigest - - worker_id: U32 - - metadata: - TYPENAME: VersionedMetadata + - digest: + TYPENAME: BatchDigest + - worker_id: U32 + - metadata: + TYPENAME: VersionedMetadata WorkerSynchronizeMessage: STRUCT: - - digests: - SEQ: - TYPENAME: BatchDigest - - target: - TYPENAME: AuthorityIdentifier - - is_certified: BOOL + - digests: + SEQ: + TYPENAME: BatchDigest + - target: + TYPENAME: AuthorityIdentifier + - is_certified: BOOL + diff --git a/nre/bpf/nodefw/nodefw/Cargo.toml b/nre/bpf/nodefw/nodefw/Cargo.toml index a5b1623488f..c2c409af4a4 100644 --- a/nre/bpf/nodefw/nodefw/Cargo.toml +++ b/nre/bpf/nodefw/nodefw/Cargo.toml @@ -6,8 +6,8 @@ publish = false [dependencies] anyhow = "1" -axum = { version = "0.6.6", default-features = false, features = ["headers", "tokio", "http1", "http2", "json", "matched-path", "original-uri", "form", "query"] } -axum-server = { version = "0.5.1", default-features = false, features = ["tls-rustls"] } +axum = { version = "0.7.5", default-features = false, features = ["headers", "tokio", "http1", "http2", "json", "matched-path", "original-uri", "form", "query"] } +axum-server = { version = "0.6.0", default-features = false } aya = { git = "https://github.com/aya-rs/aya", features = ["async_tokio"] } aya-log = { git = "https://github.com/aya-rs/aya" } clap = { version = "4.1", features = ["derive"] } @@ -21,8 +21,8 @@ serde = { version = "1.0.144", features = ["derive", "rc"] } serde_json = { version = "1.0.95", features = ["preserve_order", "arbitrary_precision"] } tokio = { version = "1.25", features = ["macros", "rt", "rt-multi-thread", "net", "signal", "time"] } tokio-util = "0.7.10" -tower = { version = "0.4.12", features = ["full", "util", "timeout", "load-shed", "limit"] } -tower-http = { version = "0.3.4", features = ["cors", "full", "trace", "set-header", "propagate-header"] } +tower = { version = "0.4.13", features = ["full", "util", "timeout", "load-shed", "limit"] } +tower-http = { version = "0.5.2", features = ["cors", "full", "trace", "set-header", "propagate-header"] } tracing = "0.1.37" [[bin]] diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 6d833ff5069..c6e4d7d5031 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.75" +channel = "1.79"