From 33a70c61cebac4af0a17ec447425ddaf82942a8d Mon Sep 17 00:00:00 2001 From: Matthew Orris <--help> Date: Mon, 13 Nov 2023 10:01:54 -0700 Subject: [PATCH] chore: Replace Currency->fungible: update pallet_capacity with fungible for time-release pallet Initial code changes Split from PR #1779 --- .cargo-deny.toml | 2 +- .github/workflows/common/codecov/action.yml | 57 +- .github/workflows/merge-pr.yml | 6 +- .github/workflows/release.yml | 6 +- .github/workflows/verify-pr-commit.yml | 6 +- .vscode/settings.json | 3 + Cargo.lock | 2616 +++---- README.md | 2 +- SECURITY.md | 91 + common/primitives/src/schema.rs | 16 + designdocs/capacity.md | 4 +- ...capacity_staking_rewards_implementation.md | 35 +- e2e/handles/handles.test.ts | 2 +- e2e/msa/msaKeyManagement.test.ts | 4 +- e2e/package-lock.json | 6967 +++++++++-------- e2e/scaffolding/extrinsicHelpers.ts | 47 + e2e/scaffolding/helpers.ts | 17 + e2e/scenarios/grantDelegation.test.ts | 10 +- e2e/schemas/createSchema.test.ts | 80 +- e2e/sudo/sudo.test.ts | 26 + js/api-augment/definitions/schemas.ts | 28 +- pallets/capacity/Cargo.toml | 1 + pallets/capacity/src/benchmarking.rs | 38 +- pallets/capacity/src/lib.rs | 178 +- pallets/capacity/src/migration/mod.rs | 4 + pallets/capacity/src/migration/v2.rs | 117 + pallets/capacity/src/migration/v3.rs | 208 + .../capacity/src/tests/migrate_v2_tests.rs | 56 + pallets/capacity/src/tests/mock.rs | 7 +- pallets/capacity/src/tests/mod.rs | 2 + pallets/capacity/src/tests/other_tests.rs | 24 +- .../src/tests/stake_and_deposit_tests.rs | 81 +- .../tests/staking_account_details_tests.rs | 112 +- .../capacity/src/tests/unlock_chunks_tests.rs | 38 + pallets/capacity/src/tests/unstaking_tests.rs | 57 +- .../src/tests/withdraw_unstaked_tests.rs | 131 +- pallets/capacity/src/types.rs | 146 +- pallets/capacity/src/weights.rs | 128 +- pallets/frequency-tx-payment/src/lib.rs | 2 +- pallets/frequency-tx-payment/src/payment.rs | 6 +- .../frequency-tx-payment/src/tests/mock.rs | 7 +- .../msa/src/tests/signed_extension_tests.rs | 27 + pallets/schemas/src/benchmarking.rs | 81 + pallets/schemas/src/lib.rs | 371 +- pallets/schemas/src/migration/mod.rs | 4 +- pallets/schemas/src/migration/v3.rs | 179 + pallets/schemas/src/rpc/src/lib.rs | 11 + pallets/schemas/src/rpc/src/tests/mod.rs | 37 + pallets/schemas/src/runtime-api/src/lib.rs | 5 +- pallets/schemas/src/tests/deprecated_tests.rs | 470 ++ pallets/schemas/src/tests/migrations_tests.rs | 52 + pallets/schemas/src/tests/mock.rs | 22 + pallets/schemas/src/tests/mod.rs | 2 + pallets/schemas/src/tests/other_tests.rs | 1348 ++-- pallets/schemas/src/types.rs | 161 +- pallets/schemas/src/weights.rs | 289 +- pallets/time-release/Cargo.toml | 4 +- pallets/time-release/src/benchmarking.rs | 10 +- pallets/time-release/src/lib.rs | 94 +- pallets/time-release/src/migration/mod.rs | 2 + pallets/time-release/src/migration/v2.rs | 263 + pallets/time-release/src/mock.rs | 16 +- pallets/time-release/src/tests.rs | 176 +- runtime/common/src/constants.rs | 4 +- runtime/common/src/extensions/check_nonce.rs | 11 +- runtime/frequency/src/lib.rs | 38 +- scripts/upgrade_accounts.py | 99 + 67 files changed, 8860 insertions(+), 6284 deletions(-) create mode 100644 SECURITY.md create mode 100644 pallets/capacity/src/migration/mod.rs create mode 100644 pallets/capacity/src/migration/v2.rs create mode 100644 pallets/capacity/src/migration/v3.rs create mode 100644 pallets/capacity/src/tests/migrate_v2_tests.rs create mode 100644 pallets/capacity/src/tests/unlock_chunks_tests.rs create mode 100644 pallets/schemas/src/migration/v3.rs create mode 100644 pallets/schemas/src/tests/deprecated_tests.rs create mode 100644 pallets/schemas/src/tests/migrations_tests.rs create mode 100644 pallets/time-release/src/migration/mod.rs create mode 100644 pallets/time-release/src/migration/v2.rs create mode 100644 scripts/upgrade_accounts.py diff --git a/.cargo-deny.toml b/.cargo-deny.toml index 563dc8e7ee..5795d9c0b6 100644 --- a/.cargo-deny.toml +++ b/.cargo-deny.toml @@ -273,7 +273,7 @@ allow-git = [] [sources.allow-org] # 1 or more github.com organizations to allow git sources for -github = ["paritytech", "w3f"] +github = ["paritytech", "w3f", "multiformats"] # 1 or more gitlab.com organizations to allow git sources for # gitlab = [""] # 1 or more bitbucket.org organizations to allow git sources for diff --git a/.github/workflows/common/codecov/action.yml b/.github/workflows/common/codecov/action.yml index 0f978122dd..264e144f7d 100644 --- a/.github/workflows/common/codecov/action.yml +++ b/.github/workflows/common/codecov/action.yml @@ -1,20 +1,59 @@ name: Run Generation of Code Coverage -description: Runs cargo llvm-cov +description: Runs cargo grcov +inputs: + code-cov-token: + description: "codecov token" + required: true runs: using: "composite" steps: - - name: Install cargo-llvm-cov - uses: taiki-e/install-action@cargo-llvm-cov + - name: Install grcov + shell: bash + run: cargo +nightly-2023-07-13 install grcov + - name: Build + shell: bash # Limited to 10 threads max + run: cargo +nightly-2023-07-13 build -j 10 --features frequency-lint-check + env: + CARGO_INCREMENTAL: '0' + RUSTFLAGS: "-Zprofile -Ccodegen-units=1 -Copt-level=0 -Clink-dead-code -Coverflow-checks=off -Zpanic_abort_tests -Cpanic=abort" + RUSTDOCFLAGS: "-Cpanic=abort" + - name: Test + shell: bash # Limited to 10 threads max + run: cargo +nightly-2023-07-13 test -j 10 --features frequency-lint-check + env: + CARGO_INCREMENTAL: '0' + RUSTFLAGS: "-Zprofile -Ccodegen-units=1 -Copt-level=0 -Clink-dead-code -Coverflow-checks=off -Zpanic_abort_tests -Cpanic=abort" + RUSTDOCFLAGS: "-Cpanic=abort" + # There are a lot of things ignored here to make it all work + # See the grcov docs for more information + # excl rpc traits, and error enums + # Only one of excl start and stop are allowed. - name: Generate code coverage shell: bash run: | - cargo llvm-cov -v --no-fail-fast --workspace --lcov --output-path lcov.info \ - --ignore-filename-regex "^.*\/(node\/|runtime\/|mock\.rs|weights(\.rs)?|benchmarking\.rs|runtime-api/src/lib\.rs).*$" \ - --exclude "frequency,frequency-cli,frequency-runtime,frequency-service" \ - --features frequency-lint-check + grcov . -s . --binary-path ./target/debug/ -t lcov \ + --ignore-not-existing \ + --excl-start '(pub enum Error \{|#\[rpc\()' \ + --excl-stop '\s*}$' \ + --ignore "target/*" \ + --ignore "node/*" \ + --ignore "runtime/*" \ + --ignore "**/*weights.rs" \ + --ignore "**/benchmark*.rs" \ + --ignore "**/*tests.rs" \ + --ignore "**/tests/*.rs" \ + --ignore "**/*mock.rs" \ + --ignore "**/*runtime-api/src/lib.rs" \ + --ignore "*github.com*" \ + --ignore "*libcore*" \ + --ignore "*rustc*" \ + --ignore "*liballoc*" \ + --ignore "*cargo*" \ + -o ./target/debug/lcov.info - name: Upload to codecov.io - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4.0.0-beta.3 with: - files: lcov.info + token: ${{inputs.code-cov-token}} + files: ./target/debug/lcov.info fail_ci_if_error: false # optional (default = false) verbose: true # optional (default = false) diff --git a/.github/workflows/merge-pr.yml b/.github/workflows/merge-pr.yml index 85a8599bc5..fa88897c75 100644 --- a/.github/workflows/merge-pr.yml +++ b/.github/workflows/merge-pr.yml @@ -64,9 +64,7 @@ jobs: calc-code-coverage: name: Merge - Calculate Code Coverage - # This job currently fails on EKS runners and must be run on standalone until - # https://www.pivotaltracker.com/story/show/185045668 is resolved. - runs-on: [self-hosted, Linux, X64, build, v1] + runs-on: [self-hosted, Linux, X64, build, v2] container: ghcr.io/libertydsnp/frequency/ci-base-image:1.0.0 steps: - name: Check Out Repo @@ -74,6 +72,8 @@ jobs: - name: Generate and Upload Code Coverage id: codecov uses: ./.github/workflows/common/codecov + with: + code-cov-token: ${{ secrets.CODECOV_TOKEN }} publish-ci-base-image: needs: changes diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5c0cfdb5dc..8474f5d8d7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -358,7 +358,7 @@ jobs: with: ref: ${{env.RELEASE_BRANCH_NAME}} - name: Setup Pages - uses: actions/configure-pages@v3 + uses: actions/configure-pages@v4 - name: Build Docs run: | rustup target add wasm32-unknown-unknown --toolchain nightly-2023-07-13 @@ -371,7 +371,7 @@ jobs: echo "::warning title=Invalid file permissions automatically fixed::$line" done - name: Upload Docs - uses: actions/upload-pages-artifact@v1 + uses: actions/upload-pages-artifact@v3 with: path: ./target/doc @@ -1005,7 +1005,7 @@ jobs: - name: Deploy to GitHub Pages if: env.TEST_RUN != 'true' id: deployment - uses: actions/deploy-pages@v2 + uses: actions/deploy-pages@v4 release-js-api-augment: needs: wait-for-all-builds diff --git a/.github/workflows/verify-pr-commit.yml b/.github/workflows/verify-pr-commit.yml index 8f93a6e204..04ab64f376 100644 --- a/.github/workflows/verify-pr-commit.yml +++ b/.github/workflows/verify-pr-commit.yml @@ -263,9 +263,7 @@ jobs: needs: changes if: needs.changes.outputs.rust == 'true' name: Calculate Code Coverage - # This job currently fails on EKS runners and must be run on standalone until - # https://www.pivotaltracker.com/story/show/185045668 is resolved. - runs-on: [self-hosted, Linux, X64, build, v1] + runs-on: [self-hosted, Linux, X64, build, v2] container: ghcr.io/libertydsnp/frequency/ci-base-image:1.0.0 steps: - name: Check Out Repo @@ -273,6 +271,8 @@ jobs: - name: Generate and Upload Code Coverage id: codecov uses: ./.github/workflows/common/codecov + with: + code-cov-token: ${{ secrets.CODECOV_TOKEN }} # Workaround to handle skipped required check inside matrix # https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks diff --git a/.vscode/settings.json b/.vscode/settings.json index dc8bb82b31..639f34b040 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -16,5 +16,8 @@ // Set the features to use for cargo commands "rust-analyzer.cargo.features": [ "frequency-no-relay" + ], + "lldb.launch.preRunCommands": [ + "script lldb.debugger.HandleCommand('settings set target.source-map /rustc/{} \"{}/lib/rustlib/src/rust\"'.format(os.popen('rustc --version --verbose').read().split('commit-hash: ')[1].split('\\n')[0].strip(), os.popen('rustc --print sysroot').readline().strip()))" ] } diff --git a/Cargo.lock b/Cargo.lock index e5ccfe2c8f..a25b3e2444 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -27,7 +27,7 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ - "gimli 0.28.0", + "gimli 0.28.1", ] [[package]] @@ -42,25 +42,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" -[[package]] -name = "aead" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" -dependencies = [ - "generic-array 0.14.7", -] - -[[package]] -name = "aead" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" -dependencies = [ - "generic-array 0.14.7", - "rand_core 0.6.4", -] - [[package]] name = "aead" version = "0.5.2" @@ -71,29 +52,6 @@ dependencies = [ "generic-array 0.14.7", ] -[[package]] -name = "aes" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" -dependencies = [ - "aes-soft", - "aesni", - "cipher 0.2.5", -] - -[[package]] -name = "aes" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" -dependencies = [ - "cfg-if", - "cipher 0.3.0", - "cpufeatures", - "opaque-debug 0.3.0", -] - [[package]] name = "aes" version = "0.8.3" @@ -101,65 +59,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ "cfg-if", - "cipher 0.4.4", + "cipher", "cpufeatures", ] -[[package]] -name = "aes-gcm" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" -dependencies = [ - "aead 0.4.3", - "aes 0.7.5", - "cipher 0.3.0", - "ctr 0.8.0", - "ghash 0.4.4", - "subtle", -] - [[package]] name = "aes-gcm" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ - "aead 0.5.2", - "aes 0.8.3", - "cipher 0.4.4", - "ctr 0.9.2", - "ghash 0.5.0", + "aead", + "aes", + "cipher", + "ctr", + "ghash", "subtle", ] -[[package]] -name = "aes-soft" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" -dependencies = [ - "cipher 0.2.5", - "opaque-debug 0.3.0", -] - -[[package]] -name = "aesni" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" -dependencies = [ - "cipher 0.2.5", - "opaque-debug 0.3.0", -] - [[package]] name = "ahash" version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.11", "once_cell", "version_check", ] @@ -171,10 +95,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" dependencies = [ "cfg-if", - "getrandom 0.2.10", + "getrandom 0.2.11", "once_cell", "version_check", - "zerocopy 0.7.21", + "zerocopy 0.7.31", ] [[package]] @@ -224,9 +148,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" dependencies = [ "anstyle", "anstyle-parse", @@ -244,30 +168,30 @@ checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -300,7 +224,7 @@ dependencies = [ "thiserror", "typed-builder", "uuid", - "zerocopy 0.6.5", + "zerocopy 0.6.6", ] [[package]] @@ -314,9 +238,9 @@ dependencies = [ [[package]] name = "aquamarine" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df752953c49ce90719c7bf1fc587bc8227aed04732ea0c0f85e5397d7fdbd1a1" +checksum = "d1da02abba9f9063d786eab1509833ebb2fac0f966862ca59439c76b9c566760" dependencies = [ "include_dir", "itertools 0.10.5", @@ -326,12 +250,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "arc-swap" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" - [[package]] name = "ark-bls12-381" version = "0.4.0" @@ -444,9 +362,9 @@ dependencies = [ [[package]] name = "ark-scale" -version = "0.0.11" +version = "0.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51bd73bb6ddb72630987d37fa963e99196896c0d0ea81b7c894567e74a2f83af" +checksum = "5f69c00b3b529be29528a6f2fd5fa7b1790f8bed81b9cdca17e326538545a179" dependencies = [ "ark-ec", "ark-ff", @@ -519,9 +437,9 @@ dependencies = [ [[package]] name = "array-bytes" -version = "6.1.0" +version = "6.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b1c5a481ec30a5abd8dfbd94ab5cf1bb4e9a66be7f1b3b322f2f1170c200fd" +checksum = "6f840fb7195bcfc5e17ea40c26e5ce6d5b9ce5d584466e17703209657e459ae0" [[package]] name = "arrayref" @@ -550,29 +468,13 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" -[[package]] -name = "asn1-rs" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ff05a702273012438132f449575dbc804e27b2f3cbe3069aa237d26c98fa33" -dependencies = [ - "asn1-rs-derive 0.1.0", - "asn1-rs-impl", - "displaydoc", - "nom", - "num-traits", - "rusticata-macros", - "thiserror", - "time", -] - [[package]] name = "asn1-rs" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" dependencies = [ - "asn1-rs-derive 0.4.0", + "asn1-rs-derive", "asn1-rs-impl", "displaydoc", "nom", @@ -582,18 +484,6 @@ dependencies = [ "time", ] -[[package]] -name = "asn1-rs-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8b7511298d5b7784b40b092d9e9dcd3a627a5707e4b5e507931ab0d44eeebf" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure", -] - [[package]] name = "asn1-rs-derive" version = "0.4.0" @@ -634,17 +524,30 @@ dependencies = [ "futures-core", ] +[[package]] +name = "async-channel" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" +dependencies = [ + "concurrent-queue", + "event-listener 4.0.0", + "event-listener-strategy", + "futures-core", + "pin-project-lite 0.2.13", +] + [[package]] name = "async-executor" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0c4a4f319e45986f347ee47fef8bf5e81c9abc3f6f58dc2391439f30df65f0" +checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" dependencies = [ - "async-lock", + "async-lock 3.2.0", "async-task", "concurrent-queue", "fastrand 2.0.1", - "futures-lite", + "futures-lite 2.1.0", "slab", ] @@ -654,10 +557,10 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" dependencies = [ - "async-lock", + "async-lock 2.8.0", "autocfg", "blocking", - "futures-lite", + "futures-lite 1.13.0", ] [[package]] @@ -666,11 +569,11 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" dependencies = [ - "async-lock", + "async-lock 2.8.0", "autocfg", "cfg-if", "concurrent-queue", - "futures-lite", + "futures-lite 1.13.0", "log", "parking", "polling 2.8.0", @@ -682,22 +585,21 @@ dependencies = [ [[package]] name = "async-io" -version = "2.1.0" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10da8f3146014722c89e7859e1d7bb97873125d7346d10ca642ffab794355828" +checksum = "6afaa937395a620e33dc6a742c593c01aced20aa376ffb0f628121198578ccc7" dependencies = [ - "async-lock", + "async-lock 3.2.0", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite", + "futures-lite 2.1.0", "parking", - "polling 3.3.0", - "rustix 0.38.21", + "polling 3.3.1", + "rustix 0.38.28", "slab", "tracing", - "waker-fn", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -709,6 +611,17 @@ dependencies = [ "event-listener 2.5.3", ] +[[package]] +name = "async-lock" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7125e42787d53db9dd54261812ef17e937c95a51e4d291373b670342fa44310c" +dependencies = [ + "event-listener 4.0.0", + "event-listener-strategy", + "pin-project-lite 0.2.13", +] + [[package]] name = "async-net" version = "1.8.0" @@ -717,7 +630,7 @@ checksum = "0434b1ed18ce1cf5769b8ac540e33f01fa9471058b5e89da9e06f3c882a8c12f" dependencies = [ "async-io 1.13.0", "blocking", - "futures-lite", + "futures-lite 1.13.0", ] [[package]] @@ -727,13 +640,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" dependencies = [ "async-io 1.13.0", - "async-lock", + "async-lock 2.8.0", "async-signal", "blocking", "cfg-if", - "event-listener 3.0.1", - "futures-lite", - "rustix 0.38.21", + "event-listener 3.1.0", + "futures-lite 1.13.0", + "rustix 0.38.28", "windows-sys 0.48.0", ] @@ -745,7 +658,7 @@ checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -754,13 +667,13 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" dependencies = [ - "async-io 2.1.0", - "async-lock", + "async-io 2.2.2", + "async-lock 2.8.0", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.21", + "rustix 0.38.28", "signal-hook-registry", "slab", "windows-sys 0.48.0", @@ -768,9 +681,9 @@ dependencies = [ [[package]] name = "async-task" -version = "4.5.0" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" +checksum = "e1d90cd0b264dfdd8eb5bad0a2c217c1f88fa96a8573f40e7b12de23fb468f46" [[package]] name = "async-trait" @@ -780,7 +693,7 @@ checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -849,7 +762,7 @@ dependencies = [ "ark-ec", "ark-ed-on-bls12-381-bandersnatch", "ark-ff", - "ark-scale 0.0.11", + "ark-scale 0.0.12", "ark-serialize", "ark-std", "dleq_vrf", @@ -868,12 +781,6 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" -[[package]] -name = "base16ct" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" - [[package]] name = "base16ct" version = "0.2.0" @@ -910,7 +817,7 @@ dependencies = [ [[package]] name = "binary-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "hash-db", "log", @@ -943,7 +850,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -1045,7 +952,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" dependencies = [ - "block-padding 0.1.5", + "block-padding", "byte-tools", "byteorder", "generic-array 0.12.4", @@ -1069,16 +976,6 @@ dependencies = [ "generic-array 0.14.7", ] -[[package]] -name = "block-modes" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a0e8073e8baa88212fb5823574c02ebccb395136ba9a164ab89379ec6072f0" -dependencies = [ - "block-padding 0.2.1", - "cipher 0.2.5", -] - [[package]] name = "block-padding" version = "0.1.5" @@ -1088,24 +985,18 @@ dependencies = [ "byte-tools", ] -[[package]] -name = "block-padding" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" - [[package]] name = "blocking" -version = "1.4.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c36a4d0d48574b3dd360b4b7d95cc651d2b6557b6402848a27d4b228a473e2a" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" dependencies = [ - "async-channel", - "async-lock", + "async-channel 2.1.1", + "async-lock 3.2.0", "async-task", "fastrand 2.0.1", "futures-io", - "futures-lite", + "futures-lite 2.1.0", "piper", "tracing", ] @@ -1148,9 +1039,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c79ad7fb2dd38f3dabd76b09c6a5a20c038fc0213ef1e9afd30eb777f120f019" +checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" dependencies = [ "memchr", "serde", @@ -1223,9 +1114,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36" +checksum = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff" dependencies = [ "serde", ] @@ -1254,17 +1145,6 @@ dependencies = [ "libc", ] -[[package]] -name = "ccm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aca1a8fbc20b50ac9673ff014abfb2b5f4085ee1a850d408f14a159c5853ac7" -dependencies = [ - "aead 0.3.2", - "cipher 0.2.5", - "subtle", -] - [[package]] name = "cexpr" version = "0.6.0" @@ -1295,18 +1175,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" -[[package]] -name = "chacha20" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c80e5460aa66fe3b91d40bcbdab953a597b60053e34d684ac6903f863b680a6" -dependencies = [ - "cfg-if", - "cipher 0.3.0", - "cpufeatures", - "zeroize", -] - [[package]] name = "chacha20" version = "0.9.1" @@ -1314,20 +1182,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" dependencies = [ "cfg-if", - "cipher 0.4.4", + "cipher", "cpufeatures", ] [[package]] name = "chacha20poly1305" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18446b09be63d457bbec447509e85f662f32952b035ce892290396bc0b0cff5" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" dependencies = [ - "aead 0.4.3", - "chacha20 0.8.2", - "cipher 0.3.0", - "poly1305 0.7.2", + "aead", + "chacha20", + "cipher", + "poly1305", "zeroize", ] @@ -1368,24 +1236,6 @@ dependencies = [ "unsigned-varint", ] -[[package]] -name = "cipher" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" -dependencies = [ - "generic-array 0.14.7", -] - -[[package]] -name = "cipher" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" -dependencies = [ - "generic-array 0.14.7", -] - [[package]] name = "cipher" version = "0.4.4" @@ -1394,6 +1244,7 @@ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", + "zeroize", ] [[package]] @@ -1418,9 +1269,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.7" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" +checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" dependencies = [ "clap_builder", "clap_derive", @@ -1428,9 +1279,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.7" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" +checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" dependencies = [ "anstream", "anstyle", @@ -1447,7 +1298,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -1465,9 +1316,9 @@ dependencies = [ [[package]] name = "coarsetime" -version = "0.1.29" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a73ef0d00d14301df35d0f13f5ea32344de6b00837485c358458f1e7f2d27db4" +checksum = "71367d3385c716342014ad17e3d19f7788ae514885a1f4c24f500260fb365e1a" dependencies = [ "libc", "once_cell", @@ -1585,9 +1436,9 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" dependencies = [ "crossbeam-utils", ] @@ -1607,9 +1458,9 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "const-random" @@ -1626,7 +1477,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.11", "once_cell", "tiny-keccak", ] @@ -1651,9 +1502,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", @@ -1661,9 +1512,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core2" @@ -1800,21 +1651,6 @@ dependencies = [ "wasmtime-types", ] -[[package]] -name = "crc" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484" - [[package]] name = "crc32fast" version = "1.3.2" @@ -1826,9 +1662,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -1837,22 +1673,21 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "2d2fe95351b870527a5d09bf563ed3c97c0cffb87cf1c78a591bf48bb218d9aa" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", "memoffset 0.9.0", - "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +checksum = "b9bcf5bdbfdd6030fb4a1c497b5d5fc5921aa2f60d359a17e249c0e6df3de153" dependencies = [ "cfg-if", "crossbeam-utils", @@ -1860,9 +1695,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f" dependencies = [ "cfg-if", ] @@ -1875,21 +1710,9 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-bigint" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" -dependencies = [ - "generic-array 0.14.7", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-bigint" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array 0.14.7", "rand_core 0.6.4", @@ -1928,28 +1751,19 @@ dependencies = [ "subtle", ] -[[package]] -name = "ctr" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" -dependencies = [ - "cipher 0.3.0", -] - [[package]] name = "ctr" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ - "cipher 0.4.4", + "cipher", ] [[package]] name = "cumulus-client-cli" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "clap", "parity-scale-codec", @@ -1965,7 +1779,7 @@ dependencies = [ [[package]] name = "cumulus-client-collator" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "cumulus-client-consensus-common", "cumulus-client-network", @@ -1988,7 +1802,7 @@ dependencies = [ [[package]] name = "cumulus-client-consensus-aura" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "cumulus-client-collator", @@ -2030,7 +1844,7 @@ dependencies = [ [[package]] name = "cumulus-client-consensus-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "cumulus-client-pov-recovery", @@ -2059,7 +1873,7 @@ dependencies = [ [[package]] name = "cumulus-client-consensus-proposer" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "anyhow", "async-trait", @@ -2074,7 +1888,7 @@ dependencies = [ [[package]] name = "cumulus-client-network" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "cumulus-relay-chain-interface", @@ -2097,7 +1911,7 @@ dependencies = [ [[package]] name = "cumulus-client-pov-recovery" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2121,7 +1935,7 @@ dependencies = [ [[package]] name = "cumulus-client-service" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "cumulus-client-cli", "cumulus-client-collator", @@ -2156,7 +1970,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-aura-ext" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "cumulus-pallet-parachain-system", "frame-support", @@ -2174,7 +1988,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-parachain-system" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bytes", "cumulus-pallet-parachain-system-proc-macro", @@ -2204,18 +2018,18 @@ dependencies = [ [[package]] name = "cumulus-pallet-parachain-system-proc-macro" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "cumulus-pallet-session-benchmarking" version = "3.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -2229,7 +2043,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-aura" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "polkadot-core-primitives", @@ -2243,7 +2057,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "polkadot-core-primitives", @@ -2260,7 +2074,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-parachain-inherent" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2283,7 +2097,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-timestamp" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "cumulus-primitives-core", "futures", @@ -2296,7 +2110,7 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-inprocess-interface" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2320,7 +2134,7 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-interface" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2338,7 +2152,7 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-minimal-node" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes", "async-trait", @@ -2373,7 +2187,7 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-rpc-interface" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2411,7 +2225,7 @@ dependencies = [ [[package]] name = "cumulus-test-relay-sproof-builder" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "cumulus-primitives-core", "parity-scale-codec", @@ -2473,7 +2287,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -2491,9 +2305,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.110" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7129e341034ecb940c9072817cd9007974ea696844fc4dd582dc1653a7fbe2e8" +checksum = "e9fc0c733f71e58dedf4f034cd2a266f80b94cc9ed512729e1798651b68c2cba" dependencies = [ "cc", "cxxbridge-flags", @@ -2503,9 +2317,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.110" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a24f3f5f8eed71936f21e570436f024f5c2e25628f7496aa7ccd03b90109d5" +checksum = "51bc81d2664db24cf1d35405f66e18a85cffd4d49ab930c71a5c6342a410f38c" dependencies = [ "cc", "codespan-reporting", @@ -2513,59 +2327,24 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "cxxbridge-flags" -version = "1.0.110" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06fdd177fc61050d63f67f5bd6351fac6ab5526694ea8e359cd9cd3b75857f44" +checksum = "8511afbe34ea242697784da5cb2c5d4a0afb224ca8b136bdf93bfe180cbe5884" [[package]] name = "cxxbridge-macro" -version = "1.0.110" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "587663dd5fb3d10932c8aecfe7c844db1bcf0aee93eeab08fac13dc1212c2e7f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "darling" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.14.4" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +checksum = "5c6888cd161769d65134846d4d4981d5a6654307cc46ec83fb917e530aea5f84" dependencies = [ - "fnv", - "ident_case", "proc-macro2", "quote", - "strsim", - "syn 1.0.109", -] - -[[package]] -name = "darling_macro" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" -dependencies = [ - "darling_core", - "quote", - "syn 1.0.109", + "syn 2.0.41", ] [[package]] @@ -2575,7 +2354,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.2", + "hashbrown 0.14.3", "lock_api", "once_cell", "parking_lot_core 0.9.9", @@ -2583,15 +2362,15 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" [[package]] name = "data-encoding-macro" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c904b33cc60130e1aeea4956ab803d08a3f4a0ca82d64ed757afac3891f2bb99" +checksum = "20c01c06f5f429efdf2bae21eb67c28b3df3cf85b7dd2d8ef09c0838dac5d33e" dependencies = [ "data-encoding", "data-encoding-macro-internal", @@ -2599,25 +2378,14 @@ dependencies = [ [[package]] name = "data-encoding-macro-internal" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fdf3fce3ce863539ec1d7fd1b6dcc3c645663376b43ed376bbf887733e4f772" +checksum = "0047d07f2c89b17dd631c80450d69841a6b5d7fb17278cbc43d7e4cfcf2576f3" dependencies = [ "data-encoding", "syn 1.0.109", ] -[[package]] -name = "der" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" -dependencies = [ - "const-oid", - "pem-rfc7468", - "zeroize", -] - [[package]] name = "der" version = "0.7.8" @@ -2628,27 +2396,13 @@ dependencies = [ "zeroize", ] -[[package]] -name = "der-parser" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe398ac75057914d7d07307bf67dc7f3f574a26783b4fc7805a20ffa9f506e82" -dependencies = [ - "asn1-rs 0.3.1", - "displaydoc", - "nom", - "num-bigint", - "num-traits", - "rusticata-macros", -] - [[package]] name = "der-parser" version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" dependencies = [ - "asn1-rs 0.5.2", + "asn1-rs", "displaydoc", "nom", "num-bigint", @@ -2658,9 +2412,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" dependencies = [ "powerfmt", ] @@ -2687,37 +2441,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "derive_builder" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07adf7be193b71cc36b193d0f5fe60b918a3a9db4dad0449f57bcfd519704a3" -dependencies = [ - "derive_builder_macro", -] - -[[package]] -name = "derive_builder_core" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f91d4cfa921f1c05904dc3c57b4a32c38aed3340cce209f3a6fd1478babafc4" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "derive_builder_macro" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f0314b72bed045f3a68671b3c86328386762c93f82d98c65c3cb5e5f573dd68" -dependencies = [ - "derive_builder_core", - "syn 1.0.109", -] - [[package]] name = "derive_more" version = "0.99.17" @@ -2822,7 +2545,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -2844,18 +2567,18 @@ dependencies = [ [[package]] name = "docify" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4235e9b248e2ba4b92007fe9c646f3adf0ffde16dc74713eacc92b8bc58d8d2f" +checksum = "7cc4fd38aaa9fb98ac70794c82a00360d1e165a87fbf96a8a91f9dfc602aaee2" dependencies = [ "docify_macros", ] [[package]] name = "docify_macros" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47020e12d7c7505670d1363dd53d6c23724f71a90a3ae32ff8eba40de8404626" +checksum = "63fa215f3a0d40fb2a221b3aa90d8e1fbb8379785a990cb60d62ac71ebdc6460" dependencies = [ "common-path", "derive-syn-parse", @@ -2863,9 +2586,9 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.38", + "syn 2.0.41", "termcolor", - "toml 0.7.8", + "toml 0.8.2", "walkdir", ] @@ -2910,34 +2633,22 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" - -[[package]] -name = "ecdsa" -version = "0.14.8" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" -dependencies = [ - "der 0.6.1", - "elliptic-curve 0.12.3", - "rfc6979 0.3.1", - "signature 1.6.4", -] +checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" [[package]] name = "ecdsa" -version = "0.16.8" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ - "der 0.7.8", + "der", "digest 0.10.7", - "elliptic-curve 0.13.6", - "rfc6979 0.4.0", - "signature 2.1.0", - "spki 0.7.2", + "elliptic-curve", + "rfc6979", + "signature", + "spki", ] [[package]] @@ -2946,21 +2657,22 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8 0.10.2", - "signature 2.1.0", + "pkcs8", + "signature", ] [[package]] name = "ed25519-dalek" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" +checksum = "1f628eaec48bfd21b865dc2950cfa014450c01d2fa2b69a86c2fd5844ec523c0" dependencies = [ "curve25519-dalek 4.1.1", "ed25519", "rand_core 0.6.4", "serde", "sha2 0.10.8", + "subtle", "zeroize", ] @@ -2986,7 +2698,7 @@ checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" dependencies = [ "curve25519-dalek 4.1.1", "ed25519", - "hashbrown 0.14.2", + "hashbrown 0.14.3", "hex", "rand_core 0.6.4", "sha2 0.10.8", @@ -3001,41 +2713,19 @@ checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "elliptic-curve" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" -dependencies = [ - "base16ct 0.1.1", - "crypto-bigint 0.4.9", - "der 0.6.1", - "digest 0.10.7", - "ff 0.12.1", - "generic-array 0.14.7", - "group 0.12.1", - "hkdf", - "pem-rfc7468", - "pkcs8 0.9.0", - "rand_core 0.6.4", - "sec1 0.3.0", - "subtle", - "zeroize", -] - -[[package]] -name = "elliptic-curve" -version = "0.13.6" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ - "base16ct 0.2.0", - "crypto-bigint 0.5.3", + "base16ct", + "crypto-bigint", "digest 0.10.7", - "ff 0.13.0", + "ff", "generic-array 0.14.7", - "group 0.13.0", - "pkcs8 0.10.2", + "group", + "pkcs8", "rand_core 0.6.4", - "sec1 0.7.3", + "sec1", "subtle", "zeroize", ] @@ -3075,7 +2765,7 @@ checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -3086,7 +2776,7 @@ checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -3104,9 +2794,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" dependencies = [ "humantime", "is-terminal", @@ -3129,12 +2819,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3145,15 +2835,36 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "3.0.1" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite 0.2.13", +] + +[[package]] +name = "event-listener" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cec0252c2afff729ee6f00e903d479fba81784c8e2bd77447673471fdfaea1" +checksum = "770d968249b5d99410d61f5bf89057f3199a077a04d087092f58e7d10692baae" dependencies = [ "concurrent-queue", "parking", "pin-project-lite 0.2.13", ] +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.0", + "pin-project-lite 0.2.13", +] + [[package]] name = "exit-future" version = "0.2.0" @@ -3197,7 +2908,7 @@ dependencies = [ "fs-err", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -3245,7 +2956,7 @@ checksum = "f5aa1e3ae159e592ad222dc90c5acbad632b527779ba88486abe92782ab268bd" dependencies = [ "expander 0.0.4", "indexmap 1.9.3", - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -3261,16 +2972,6 @@ dependencies = [ "libc", ] -[[package]] -name = "ff" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "ff" version = "0.13.0" @@ -3284,7 +2985,7 @@ dependencies = [ [[package]] name = "fflonk" version = "0.1.0" -source = "git+https://github.com/w3f/fflonk#e141d4b6f42fb481aefe1b479788694945b6940d" +source = "git+https://github.com/w3f/fflonk#1e854f35e9a65d08b11a86291405cdc95baa0a35" dependencies = [ "ark-ec", "ark-ff", @@ -3296,9 +2997,9 @@ dependencies = [ [[package]] name = "fiat-crypto" -version = "0.2.2" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a481586acf778f1b1455424c343f71124b048ffa5f4fc3f8f6ae9dc432dcb3c7" +checksum = "27573eac26f4dd11e2b1916c3fe1baa56407c83c71a773a8ba17ec0bca03b6b7" [[package]] name = "file-per-thread-logger" @@ -3306,20 +3007,20 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866" dependencies = [ - "env_logger 0.10.0", + "env_logger 0.10.1", "log", ] [[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]] @@ -3385,16 +3086,16 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", ] [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -3408,7 +3109,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "frame-support-procedural", @@ -3433,7 +3134,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "Inflector", "array-bytes", @@ -3481,18 +3182,18 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -3509,7 +3210,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "frame-system", @@ -3539,7 +3240,7 @@ dependencies = [ [[package]] name = "frame-remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-recursion", "futures", @@ -3561,7 +3262,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "aquamarine", "bitflags 1.3.2", @@ -3601,7 +3302,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "Inflector", "cfg-expr", @@ -3613,35 +3314,35 @@ dependencies = [ "proc-macro-warning", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support-procedural-tools-derive", - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "cfg-if", "frame-support", @@ -3660,7 +3361,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -3675,7 +3376,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "sp-api", @@ -3684,7 +3385,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "parity-scale-codec", @@ -3923,9 +3624,12 @@ dependencies = [ [[package]] name = "fs-err" -version = "2.9.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0845fa252299212f0389d64ba26f34fa32cfe41588355f21ed507c59a0f64541" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +dependencies = [ + "autocfg", +] [[package]] name = "fs2" @@ -3943,7 +3647,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eeb4ed9e12f43b7fa0baae3f9cdda28352770132ef2e09a23760c29cae8bd47" dependencies = [ - "rustix 0.38.21", + "rustix 0.38.28", "windows-sys 0.48.0", ] @@ -4017,6 +3721,19 @@ dependencies = [ "waker-fn", ] +[[package]] +name = "futures-lite" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aeee267a1883f7ebef3700f262d2d54de95dfaf38189015a74fdc4e0c7ad8143" +dependencies = [ + "fastrand 2.0.1", + "futures-core", + "futures-io", + "parking", + "pin-project-lite 0.2.13", +] + [[package]] name = "futures-macro" version = "0.3.29" @@ -4025,7 +3742,7 @@ checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -4036,7 +3753,7 @@ checksum = "d2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bd" dependencies = [ "futures-io", "rustls 0.20.9", - "webpki 0.22.4", + "webpki", ] [[package]] @@ -4127,25 +3844,15 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", "libc", "wasi 0.11.0+wasi-snapshot-preview1", ] -[[package]] -name = "ghash" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" -dependencies = [ - "opaque-debug 0.3.0", - "polyval 0.5.3", -] - [[package]] name = "ghash" version = "0.5.0" @@ -4153,7 +3860,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" dependencies = [ "opaque-debug 0.3.0", - "polyval 0.6.1", + "polyval", ] [[package]] @@ -4169,9 +3876,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "glob" @@ -4181,26 +3888,15 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "globset" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d" +checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" dependencies = [ "aho-corasick", "bstr", - "fnv", "log", - "regex", -] - -[[package]] -name = "group" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" -dependencies = [ - "ff 0.12.1", - "rand_core 0.6.4", - "subtle", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", ] [[package]] @@ -4209,16 +3905,16 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "ff 0.13.0", + "ff", "rand_core 0.6.4", "subtle", ] [[package]] name = "h2" -version = "0.3.21" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ "bytes", "fnv", @@ -4226,7 +3922,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap 2.1.0", "slab", "tokio", "tokio-util", @@ -4235,9 +3931,9 @@ dependencies = [ [[package]] name = "handlebars" -version = "4.4.0" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39b3bc2a8f715298032cf5087e58573809374b08160aa7d750582bdb82d2683" +checksum = "faa67bab9ff362228eb3d00bd024a4965d8231bbb7921167f0cfa66c6626b225" dependencies = [ "log", "pest", @@ -4292,9 +3988,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ "ahash 0.8.6", "allocator-api2", @@ -4336,9 +4032,9 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "hkdf" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ "hmac 0.12.1", ] @@ -4385,11 +4081,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -4405,9 +4101,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes", "fnv", @@ -4416,9 +4112,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -4451,9 +4147,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.27" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", @@ -4466,7 +4162,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite 0.2.13", - "socket2 0.4.10", + "socket2 0.5.5", "tokio", "tower-service", "tracing", @@ -4483,11 +4179,11 @@ dependencies = [ "http", "hyper", "log", - "rustls 0.21.8", + "rustls 0.21.10", "rustls-native-certs", "tokio", "tokio-rustls", - "webpki-roots 0.25.2", + "webpki-roots 0.25.3", ] [[package]] @@ -4513,12 +4209,6 @@ dependencies = [ "cc", ] -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - [[package]] name = "idna" version = "0.2.3" @@ -4532,9 +4222,9 @@ dependencies = [ [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -4542,21 +4232,21 @@ dependencies = [ [[package]] name = "if-addrs" -version = "0.7.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9" +checksum = "cabb0019d51a643781ff15c9c8a3e5dedc365c47211270f4e8f82812fedd8f0a" dependencies = [ "libc", - "winapi", + "windows-sys 0.48.0", ] [[package]] name = "if-watch" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb892e5777fe09e16f3d44de7802f4daa7267ecbe8c466f19d94e25bb0c303e" +checksum = "d6b0422c86d7ce0e97169cc42e04ae643caf278874a7a3c87b8150a220dc7e1e" dependencies = [ - "async-io 1.13.0", + "async-io 2.2.2", "core-foundation", "fnv", "futures", @@ -4635,7 +4325,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.2", + "hashbrown 0.14.3", ] [[package]] @@ -4690,25 +4380,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "interceptor" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e8a11ae2da61704edada656798b61c94b35ecac2c58eb955156987d5e6be90b" -dependencies = [ - "async-trait", - "bytes", - "log", - "rand 0.8.5", - "rtcp", - "rtp", - "thiserror", - "tokio", - "waitgroup", - "webrtc-srtp", - "webrtc-util", -] - [[package]] name = "io-lifetimes" version = "1.0.11" @@ -4751,7 +4422,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ "hermit-abi 0.3.3", - "rustix 0.38.21", + "rustix 0.38.28", "windows-sys 0.48.0", ] @@ -4784,9 +4455,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jobserver" @@ -4799,9 +4470,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" dependencies = [ "wasm-bindgen", ] @@ -4839,7 +4510,7 @@ dependencies = [ "tokio-rustls", "tokio-util", "tracing", - "webpki-roots 0.25.2", + "webpki-roots 0.25.3", ] [[package]] @@ -4850,7 +4521,7 @@ checksum = "2b5dde66c53d6dcdc8caea1874a45632ec0fcf5b437789f1e45766a1512ce803" dependencies = [ "anyhow", "arrayvec 0.7.4", - "async-lock", + "async-lock 2.8.0", "async-trait", "beef", "futures-channel", @@ -4896,7 +4567,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44e8ab85614a08792b9bff6c8feee23be78c98d0182d4c622c05256ab553892a" dependencies = [ "heck", - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -4952,13 +4623,13 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +checksum = "3f01b677d82ef7a676aa37e099defd83a28e15687112cafdd112d60236b6115b" dependencies = [ "cfg-if", - "ecdsa 0.16.8", - "elliptic-curve 0.13.6", + "ecdsa", + "elliptic-curve", "once_cell", "sha2 0.10.8", ] @@ -4975,7 +4646,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "polkadot-primitives", @@ -5044,9 +4715,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.149" +version = "0.2.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" [[package]] name = "libflate" @@ -5086,14 +4757,14 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libp2p" -version = "0.51.3" +version = "0.51.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f210d259724eae82005b5c48078619b7745edb7b76de370b03f8ba59ea103097" +checksum = "f35eae38201a993ece6bdc823292d6abd1bffed1c4d0f4a3517d2bd8e1d917fe" dependencies = [ "bytes", "futures", "futures-timer", - "getrandom 0.2.10", + "getrandom 0.2.11", "instant", "libp2p-allow-block-list", "libp2p-connection-limits", @@ -5111,7 +4782,6 @@ dependencies = [ "libp2p-swarm", "libp2p-tcp", "libp2p-wasm-ext", - "libp2p-webrtc", "libp2p-websocket", "libp2p-yamux", "multiaddr", @@ -5423,12 +5093,12 @@ dependencies = [ "futures-rustls", "libp2p-core", "libp2p-identity", - "rcgen 0.10.0", + "rcgen", "ring 0.16.20", "rustls 0.20.9", "thiserror", - "webpki 0.22.4", - "x509-parser 0.14.0", + "webpki", + "x509-parser", "yasna", ] @@ -5446,37 +5116,6 @@ dependencies = [ "wasm-bindgen-futures", ] -[[package]] -name = "libp2p-webrtc" -version = "0.4.0-alpha.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dba48592edbc2f60b4bc7c10d65445b0c3964c07df26fdf493b6880d33be36f8" -dependencies = [ - "async-trait", - "asynchronous-codec", - "bytes", - "futures", - "futures-timer", - "hex", - "if-watch", - "libp2p-core", - "libp2p-identity", - "libp2p-noise", - "log", - "multihash 0.17.0", - "quick-protobuf", - "quick-protobuf-codec", - "rand 0.8.5", - "rcgen 0.9.3", - "serde", - "stun", - "thiserror", - "tinytemplate", - "tokio", - "tokio-util", - "webrtc", -] - [[package]] name = "libp2p-websocket" version = "0.41.0" @@ -5509,6 +5148,17 @@ dependencies = [ "yamux", ] +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall 0.4.1", +] + [[package]] name = "librocksdb-sys" version = "0.11.0+8.1.1" @@ -5630,9 +5280,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "lock_api" @@ -5712,7 +5362,7 @@ dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -5726,7 +5376,7 @@ dependencies = [ "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -5737,7 +5387,7 @@ checksum = "d710e1214dffbab3b5dacb21475dde7d6ed84c69ff722b3a47a782668d44fbac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -5748,7 +5398,7 @@ checksum = "b8fb85ec1620619edf2984a7693497d4ec88a9665d8b87e942856884c92dbf2a" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -5788,16 +5438,6 @@ dependencies = [ "rawpointer", ] -[[package]] -name = "md-5" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" -dependencies = [ - "cfg-if", - "digest 0.10.7", -] - [[package]] name = "memchr" version = "2.6.4" @@ -5810,7 +5450,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" dependencies = [ - "rustix 0.38.21", + "rustix 0.38.28", ] [[package]] @@ -5822,15 +5462,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.8.0" @@ -5910,9 +5541,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", @@ -5922,7 +5553,7 @@ dependencies = [ [[package]] name = "mmr-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "log", @@ -5941,7 +5572,7 @@ dependencies = [ [[package]] name = "mmr-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "anyhow", "jsonrpsee", @@ -6044,7 +5675,7 @@ 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", "quote", @@ -6189,7 +5820,6 @@ dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", - "memoffset 0.6.5", ] [[package]] @@ -6330,29 +5960,20 @@ dependencies = [ "memchr", ] -[[package]] -name = "oid-registry" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e20717fa0541f39bd146692035c37bedfa532b3e5071b35761082407546b2a" -dependencies = [ - "asn1-rs 0.3.1", -] - [[package]] name = "oid-registry" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" dependencies = [ - "asn1-rs 0.5.2", + "asn1-rs", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "oorandom" @@ -6404,7 +6025,7 @@ dependencies = [ "expander 0.0.6", "itertools 0.10.5", "petgraph", - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -6419,32 +6040,10 @@ dependencies = [ "num-traits", ] -[[package]] -name = "p256" -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 = "p384" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc8c5bf642dde52bb9e87c0ecd8ca5a76faac2eeed98dedb7c717997e1080aa" -dependencies = [ - "ecdsa 0.14.8", - "elliptic-curve 0.12.3", - "sha2 0.10.8", -] - [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "frame-system", @@ -6461,7 +6060,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "frame-system", @@ -6477,7 +6076,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "frame-system", @@ -6491,7 +6090,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -6515,7 +6114,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "aquamarine", "docify", @@ -6537,7 +6136,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -6552,7 +6151,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "frame-system", @@ -6572,7 +6171,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes", "binary-merkle-tree", @@ -6597,7 +6196,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -6635,7 +6234,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -6654,7 +6253,7 @@ dependencies = [ [[package]] name = "pallet-collator-selection" version = "3.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -6673,7 +6272,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -6690,7 +6289,7 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "assert_matches", "frame-benchmarking", @@ -6707,7 +6306,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -6725,7 +6324,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6748,7 +6347,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6762,7 +6361,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -6781,7 +6380,7 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "docify", "frame-benchmarking", @@ -6857,7 +6456,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -6882,7 +6481,7 @@ name = "pallet-handles" version = "0.0.0" dependencies = [ "common-primitives", - "env_logger 0.10.0", + "env_logger 0.10.1", "frame-benchmarking", "frame-support", "frame-system", @@ -6931,7 +6530,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6947,7 +6546,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -6967,7 +6566,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -6984,7 +6583,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7001,7 +6600,7 @@ dependencies = [ [[package]] name = "pallet-message-queue" version = "7.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7070,7 +6669,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7143,7 +6742,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7159,7 +6758,7 @@ dependencies = [ [[package]] name = "pallet-nis" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7175,7 +6774,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "frame-system", @@ -7194,7 +6793,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7214,7 +6813,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", @@ -7225,7 +6824,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "frame-system", @@ -7242,7 +6841,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7266,7 +6865,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7283,7 +6882,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7298,7 +6897,7 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7316,7 +6915,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7331,7 +6930,7 @@ dependencies = [ [[package]] name = "pallet-referenda" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "assert_matches", "frame-benchmarking", @@ -7350,7 +6949,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "docify", "frame-benchmarking", @@ -7424,7 +7023,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "frame-system", @@ -7446,7 +7045,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7463,7 +7062,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7481,7 +7080,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7504,18 +7103,18 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "log", "sp-arithmetic", @@ -7524,7 +7123,7 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "sp-api", @@ -7533,7 +7132,7 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7552,7 +7151,7 @@ name = "pallet-stateful-storage" version = "0.0.0" dependencies = [ "common-primitives", - "env_logger 0.10.0", + "env_logger 0.10.1", "frame-benchmarking", "frame-support", "frame-system", @@ -7601,7 +7200,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7634,7 +7233,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7653,7 +7252,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7672,7 +7271,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "frame-system", @@ -7688,7 +7287,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -7704,7 +7303,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -7716,7 +7315,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7733,7 +7332,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7749,7 +7348,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7764,7 +7363,7 @@ dependencies = [ [[package]] name = "pallet-whitelist" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7779,7 +7378,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bounded-collections", "frame-benchmarking", @@ -7800,7 +7399,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-benchmarking", "frame-support", @@ -7819,7 +7418,7 @@ dependencies = [ [[package]] name = "parachain-info" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -7852,9 +7451,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.5" +version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" +checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe" dependencies = [ "arrayvec 0.7.4", "bitvec", @@ -7867,11 +7466,11 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.6.5" +version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" +checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 2.0.1", "proc-macro2", "quote", "syn 1.0.109", @@ -7997,20 +7596,11 @@ dependencies = [ "base64 0.13.1", ] -[[package]] -name = "pem-rfc7468" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d159833a9105500e0398934e205e0773f0b27529557134ecfc51c27646adac" -dependencies = [ - "base64ct", -] - [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" @@ -8043,7 +7633,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -8097,7 +7687,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -8126,7 +7716,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -8160,22 +7750,12 @@ dependencies = [ [[package]] name = "pkcs8" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der 0.6.1", - "spki 0.6.0", -] - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der 0.7.8", - "spki 0.7.2", + "der", + "spki", ] [[package]] @@ -8186,14 +7766,14 @@ checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "platforms" -version = "3.1.2" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8" +checksum = "14e6ab3f592e6fb464fc9712d8d6e6912de6473954635fd76a589d832cffcbb0" [[package]] name = "polkadot-approval-distribution" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "futures-timer", @@ -8211,7 +7791,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "always-assert", "futures", @@ -8227,7 +7807,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "derive_more", "fatality", @@ -8250,7 +7830,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "fatality", "futures", @@ -8271,7 +7851,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "1.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "clap", "frame-benchmarking-cli", @@ -8298,7 +7878,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bitvec", "fatality", @@ -8320,7 +7900,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "scale-info", @@ -8332,7 +7912,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "derive_more", "fatality", @@ -8357,7 +7937,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -8371,7 +7951,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "futures-timer", @@ -8392,7 +7972,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "always-assert", "async-trait", @@ -8415,7 +7995,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "parity-scale-codec", @@ -8433,7 +8013,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bitvec", "derive_more", @@ -8462,7 +8042,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bitvec", "futures", @@ -8484,7 +8064,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bitvec", "fatality", @@ -8503,7 +8083,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "polkadot-node-subsystem", @@ -8518,7 +8098,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "futures", @@ -8539,7 +8119,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "polkadot-node-metrics", @@ -8554,7 +8134,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "futures-timer", @@ -8571,7 +8151,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "fatality", "futures", @@ -8590,7 +8170,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "futures", @@ -8607,7 +8187,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-prospective-parachains" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bitvec", "fatality", @@ -8624,7 +8204,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bitvec", "fatality", @@ -8641,7 +8221,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "always-assert", "futures", @@ -8669,7 +8249,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "polkadot-node-primitives", @@ -8685,7 +8265,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-common" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "cpu-time", "futures", @@ -8708,7 +8288,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-prepare-worker" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "libc", @@ -8731,7 +8311,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "polkadot-node-metrics", @@ -8746,7 +8326,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "lazy_static", "log", @@ -8764,7 +8344,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bs58 0.5.0", "futures", @@ -8783,9 +8363,9 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "async-channel", + "async-channel 1.9.0", "async-trait", "bitvec", "derive_more", @@ -8807,7 +8387,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bounded-vec", "futures", @@ -8829,7 +8409,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -8839,7 +8419,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "derive_more", @@ -8863,7 +8443,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "derive_more", @@ -8896,7 +8476,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "futures", @@ -8919,7 +8499,7 @@ dependencies = [ [[package]] name = "polkadot-parachain-primitives" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bounded-collections", "derive_more", @@ -8936,7 +8516,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "env_logger 0.9.3", "log", @@ -8954,7 +8534,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bitvec", "hex-literal", @@ -8980,7 +8560,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "jsonrpsee", "mmr-rpc", @@ -9012,7 +8592,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bitvec", "frame-benchmarking", @@ -9109,7 +8689,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bitvec", "frame-benchmarking", @@ -9155,7 +8735,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "polkadot-primitives", @@ -9169,7 +8749,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bs58 0.5.0", "frame-benchmarking", @@ -9182,7 +8762,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bitflags 1.3.2", "bitvec", @@ -9228,7 +8808,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "frame-benchmarking", @@ -9347,7 +8927,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "arrayvec 0.7.4", "bitvec", @@ -9371,7 +8951,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -9396,27 +8976,16 @@ dependencies = [ [[package]] name = "polling" -version = "3.3.0" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e53b6af1f60f36f8c2ac2aad5459d75a5a9b4be1e8cdd40264f315d78193e531" +checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e" dependencies = [ "cfg-if", "concurrent-queue", "pin-project-lite 0.2.13", - "rustix 0.38.21", + "rustix 0.38.28", "tracing", - "windows-sys 0.48.0", -] - -[[package]] -name = "poly1305" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" -dependencies = [ - "cpufeatures", - "opaque-debug 0.3.0", - "universal-hash 0.4.1", + "windows-sys 0.52.0", ] [[package]] @@ -9427,19 +8996,7 @@ checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ "cpufeatures", "opaque-debug 0.3.0", - "universal-hash 0.5.1", -] - -[[package]] -name = "polyval" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" -dependencies = [ - "cfg-if", - "cpufeatures", - "opaque-debug 0.3.0", - "universal-hash 0.4.1", + "universal-hash", ] [[package]] @@ -9451,14 +9008,14 @@ dependencies = [ "cfg-if", "cpufeatures", "opaque-debug 0.3.0", - "universal-hash 0.5.1", + "universal-hash", ] [[package]] name = "portable-atomic" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "powerfmt" @@ -9529,7 +9086,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" dependencies = [ "proc-macro2", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -9568,7 +9125,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a" +dependencies = [ + "toml_datetime", + "toml_edit 0.20.2", ] [[package]] @@ -9603,14 +9170,14 @@ checksum = "3d1eaa7fa0aa1929ffdf7eeb6eac234dde6268914a14ad44d23521ab6a9b258e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" dependencies = [ "unicode-ident", ] @@ -9649,7 +9216,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -9775,7 +9342,7 @@ dependencies = [ "thiserror", "tinyvec", "tracing", - "webpki 0.22.4", + "webpki", ] [[package]] @@ -9852,7 +9419,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.11", ] [[package]] @@ -9899,19 +9466,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "rcgen" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd" -dependencies = [ - "pem", - "ring 0.16.20", - "time", - "x509-parser 0.13.2", - "yasna", -] - [[package]] name = "rcgen" version = "0.10.0" @@ -9933,15 +9487,6 @@ dependencies = [ "bitflags 1.3.2", ] -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.4.1" @@ -9953,12 +9498,12 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ - "getrandom 0.2.10", - "redox_syscall 0.2.16", + "getrandom 0.2.11", + "libredox", "thiserror", ] @@ -9977,22 +9522,22 @@ dependencies = [ [[package]] name = "ref-cast" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acde58d073e9c79da00f2b5b84eed919c8326832648a5b109b3fce1bb1175280" +checksum = "53313ec9f12686aeeffb43462c3ac77aa25f590a5f630eb2cde0de59417b29c7" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925" +checksum = "2566c4bf6845f2c2e83b27043c3f5dfcd5ba8f2937d6c00dc009bfb51a079dc4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -10061,17 +9606,6 @@ dependencies = [ "quick-error", ] -[[package]] -name = "rfc6979" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" -dependencies = [ - "crypto-bigint 0.4.9", - "hmac 0.12.1", - "zeroize", -] - [[package]] name = "rfc6979" version = "0.4.0" @@ -10114,12 +9648,12 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.5" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ "cc", - "getrandom 0.2.10", + "getrandom 0.2.11", "libc", "spin 0.9.8", "untrusted 0.9.0", @@ -10145,7 +9679,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "binary-merkle-tree", "frame-benchmarking", @@ -10233,7 +9767,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "polkadot-primitives", @@ -10246,24 +9780,13 @@ dependencies = [ [[package]] name = "rpassword" -version = "7.2.0" +version = "7.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6678cf63ab3491898c0d021b493c94c9b221d91295294a2a5746eacbe5928322" +checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" dependencies = [ "libc", "rtoolbox", - "winapi", -] - -[[package]] -name = "rtcp" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1919efd6d4a6a85d13388f9487549bb8e359f17198cc03ffd72f79b553873691" -dependencies = [ - "bytes", - "thiserror", - "webrtc-util", + "windows-sys 0.48.0", ] [[package]] @@ -10283,26 +9806,12 @@ dependencies = [ [[package]] name = "rtoolbox" -version = "0.0.1" +version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034e22c514f5c0cb8a10ff341b9b048b5ceb21591f31c8f44c43b960f9b3524a" +checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" dependencies = [ "libc", - "winapi", -] - -[[package]] -name = "rtp" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a095411ff00eed7b12e4c6a118ba984d113e1079582570d56a5ee723f11f80" -dependencies = [ - "async-trait", - "bytes", - "rand 0.8.5", - "serde", - "thiserror", - "webrtc-util", + "windows-sys 0.48.0", ] [[package]] @@ -10371,28 +9880,15 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.21" +version = "0.38.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" +checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" dependencies = [ "bitflags 2.4.1", "errno", "libc", - "linux-raw-sys 0.4.10", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustls" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" -dependencies = [ - "base64 0.13.1", - "log", - "ring 0.16.20", - "sct 0.6.1", - "webpki 0.21.4", + "linux-raw-sys 0.4.12", + "windows-sys 0.52.0", ] [[package]] @@ -10403,20 +9899,20 @@ checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" dependencies = [ "log", "ring 0.16.20", - "sct 0.7.1", - "webpki 0.22.4", + "sct", + "webpki", ] [[package]] name = "rustls" -version = "0.21.8" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", - "ring 0.17.5", + "ring 0.17.7", "rustls-webpki", - "sct 0.7.1", + "sct", ] [[package]] @@ -10433,9 +9929,9 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ "base64 0.21.5", ] @@ -10446,7 +9942,7 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.5", + "ring 0.17.7", "untrusted 0.9.0", ] @@ -10480,9 +9976,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "safe_arch" @@ -10505,7 +10001,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "log", "sp-core", @@ -10516,7 +10012,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "futures", @@ -10544,7 +10040,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "futures-timer", @@ -10567,7 +10063,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -10582,7 +10078,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -10601,18 +10097,18 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes", "chrono", @@ -10651,7 +10147,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "fnv", "futures", @@ -10677,7 +10173,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "hash-db", "kvdb", @@ -10703,7 +10199,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "futures", @@ -10728,7 +10224,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "futures", @@ -10757,7 +10253,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "fork-tree", @@ -10793,7 +10289,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "jsonrpsee", @@ -10815,10 +10311,10 @@ dependencies = [ [[package]] name = "sc-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes", - "async-channel", + "async-channel 1.9.0", "async-trait", "fnv", "futures", @@ -10849,7 +10345,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "jsonrpsee", @@ -10868,7 +10364,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "fork-tree", "parity-scale-codec", @@ -10881,7 +10377,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "ahash 0.8.6", "array-bytes", @@ -10922,7 +10418,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "finality-grandpa", "futures", @@ -10942,7 +10438,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "assert_matches", "async-trait", @@ -10977,7 +10473,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "futures", @@ -11000,7 +10496,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "parking_lot 0.12.1", @@ -11022,7 +10518,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -11034,7 +10530,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "anyhow", "cfg-if", @@ -11051,7 +10547,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "ansi_term", "futures", @@ -11067,7 +10563,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes", "parking_lot 0.12.1", @@ -11081,10 +10577,10 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes", - "async-channel", + "async-channel 1.9.0", "async-trait", "asynchronous-codec", "bytes", @@ -11122,9 +10618,9 @@ dependencies = [ [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "async-channel", + "async-channel 1.9.0", "cid 0.9.0", "futures", "libp2p-identity", @@ -11142,7 +10638,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "bitflags 1.3.2", @@ -11159,7 +10655,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "ahash 0.8.6", "futures", @@ -11177,10 +10673,10 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes", - "async-channel", + "async-channel 1.9.0", "futures", "libp2p-identity", "log", @@ -11198,10 +10694,10 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes", - "async-channel", + "async-channel 1.9.0", "async-trait", "fork-tree", "futures", @@ -11232,7 +10728,7 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes", "futures", @@ -11250,7 +10746,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes", "bytes", @@ -11284,7 +10780,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -11293,7 +10789,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "jsonrpsee", @@ -11324,7 +10820,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -11343,7 +10839,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "http", "jsonrpsee", @@ -11358,7 +10854,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes", "futures", @@ -11386,7 +10882,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "directories", @@ -11450,7 +10946,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "log", "parity-scale-codec", @@ -11461,7 +10957,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "clap", "fs4", @@ -11475,7 +10971,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -11494,7 +10990,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "libc", @@ -11513,7 +11009,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "chrono", "futures", @@ -11532,7 +11028,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "ansi_term", "atty", @@ -11561,18 +11057,18 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "futures", @@ -11598,7 +11094,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "futures", @@ -11614,9 +11110,9 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "async-channel", + "async-channel 1.9.0", "futures", "futures-timer", "lazy_static", @@ -11646,7 +11142,7 @@ version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -11718,62 +11214,26 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" -[[package]] -name = "sct" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" -dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", -] - [[package]] name = "sct" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.5", + "ring 0.17.7", "untrusted 0.9.0", ] -[[package]] -name = "sdp" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d22a5ef407871893fd72b4562ee15e4742269b173959db4b8df6f538c414e13" -dependencies = [ - "rand 0.8.5", - "substring", - "thiserror", - "url", -] - -[[package]] -name = "sec1" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" -dependencies = [ - "base16ct 0.1.1", - "der 0.6.1", - "generic-array 0.14.7", - "pkcs8 0.9.0", - "subtle", - "zeroize", -] - [[package]] name = "sec1" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ - "base16ct 0.2.0", - "der 0.7.8", + "base16ct", + "der", "generic-array 0.14.7", - "pkcs8 0.10.2", + "pkcs8", "subtle", "zeroize", ] @@ -11854,22 +11314,22 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.190" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.190" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -11929,17 +11389,6 @@ dependencies = [ "opaque-debug 0.3.0", ] -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - [[package]] name = "sha2" version = "0.8.2" @@ -12012,19 +11461,9 @@ dependencies = [ [[package]] name = "signature" -version = "1.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] - -[[package]] -name = "signature" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", "rand_core 0.6.4", @@ -12067,7 +11506,7 @@ checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" [[package]] name = "slot-range-helper" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "enumn", "parity-scale-codec", @@ -12078,18 +11517,18 @@ dependencies = [ [[package]] name = "slotmap" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" dependencies = [ "version_check", ] [[package]] name = "smallvec" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "smol" @@ -12097,15 +11536,15 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13f2b548cd8447f8de0fdf1c592929f70f4fc7039a05e47404b0d096ec6987a1" dependencies = [ - "async-channel", + "async-channel 1.9.0", "async-executor", "async-fs", "async-io 1.13.0", - "async-lock", + "async-lock 2.8.0", "async-net", "async-process", "blocking", - "futures-lite", + "futures-lite 1.13.0", ] [[package]] @@ -12115,22 +11554,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0bb30cf57b7b5f6109ce17c3164445e2d6f270af2cb48f6e4d31c2967c9a9f5" dependencies = [ "arrayvec 0.7.4", - "async-lock", + "async-lock 2.8.0", "atomic-take", "base64 0.21.5", "bip39", "blake2-rfc", "bs58 0.5.0", - "chacha20 0.9.1", + "chacha20", "crossbeam-queue", "derive_more", "ed25519-zebra 4.0.3", "either", "event-listener 2.5.3", "fnv", - "futures-lite", + "futures-lite 1.13.0", "futures-util", - "hashbrown 0.14.2", + "hashbrown 0.14.3", "hex", "hmac 0.12.1", "itertools 0.11.0", @@ -12143,7 +11582,7 @@ dependencies = [ "num-traits", "pbkdf2 0.12.2", "pin-project", - "poly1305 0.8.0", + "poly1305", "rand 0.8.5", "rand_chacha 0.3.1", "ruzstd", @@ -12168,8 +11607,8 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "256b5bad1d6b49045e95fe87492ce73d5af81545d8b4d8318a872d2007024c33" dependencies = [ - "async-channel", - "async-lock", + "async-channel 1.9.0", + "async-lock 2.8.0", "base64 0.21.5", "blake2-rfc", "derive_more", @@ -12177,9 +11616,9 @@ dependencies = [ "event-listener 2.5.3", "fnv", "futures-channel", - "futures-lite", + "futures-lite 1.13.0", "futures-util", - "hashbrown 0.14.2", + "hashbrown 0.14.3", "hex", "itertools 0.11.0", "log", @@ -12200,22 +11639,22 @@ dependencies = [ [[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 = "snow" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c9d1425eb528a21de2755c75af4c9b5d57f50a0d4c3b7f1828a4cd03f8ba155" +checksum = "58021967fd0a5eeeb23b08df6cc244a4d4a5b4aec1d27c9e02fad1a58b4cd74e" dependencies = [ - "aes-gcm 0.9.4", + "aes-gcm", "blake2", "chacha20poly1305", "curve25519-dalek 4.1.1", "rand_core 0.6.4", - "ring 0.16.20", + "ring 0.17.7", "rustc_version", "sha2 0.10.8", "subtle", @@ -12261,7 +11700,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "hash-db", "log", @@ -12282,21 +11721,21 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "Inflector", "blake2", "expander 2.0.0", - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "sp-application-crypto" version = "23.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "scale-info", @@ -12309,7 +11748,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "integer-sqrt", "num-traits", @@ -12323,7 +11762,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "scale-info", @@ -12336,7 +11775,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "sp-api", "sp-inherents", @@ -12347,7 +11786,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "log", @@ -12365,7 +11804,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "futures", @@ -12380,7 +11819,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "parity-scale-codec", @@ -12397,7 +11836,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "parity-scale-codec", @@ -12416,7 +11855,7 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "lazy_static", "parity-scale-codec", @@ -12435,7 +11874,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "finality-grandpa", "log", @@ -12453,7 +11892,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "scale-info", @@ -12465,7 +11904,7 @@ dependencies = [ [[package]] name = "sp-core" version = "21.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes", "arrayvec 0.7.4", @@ -12512,7 +11951,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "9.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "blake2b_simd", "byteorder", @@ -12525,17 +11964,17 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "9.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "quote", "sp-core-hashing", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -12544,17 +11983,17 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "sp-externalities" version = "0.19.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "environmental", "parity-scale-codec", @@ -12565,7 +12004,7 @@ dependencies = [ [[package]] name = "sp-genesis-builder" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "serde_json", "sp-api", @@ -12576,7 +12015,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -12590,7 +12029,7 @@ dependencies = [ [[package]] name = "sp-io" version = "23.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bytes", "ed25519-dalek", @@ -12614,7 +12053,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "lazy_static", "sp-core", @@ -12625,7 +12064,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.27.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "parking_lot 0.12.1", @@ -12637,7 +12076,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "thiserror", "zstd 0.12.4", @@ -12646,7 +12085,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -12657,7 +12096,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "ckb-merkle-mountain-range", "log", @@ -12675,7 +12114,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "scale-info", @@ -12689,7 +12128,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "sp-api", "sp-core", @@ -12699,7 +12138,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "backtrace", "lazy_static", @@ -12709,7 +12148,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "rustc-hash", "serde", @@ -12719,7 +12158,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "either", "hash256-std-hasher", @@ -12741,7 +12180,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -12759,19 +12198,19 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "Inflector", - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "scale-info", @@ -12786,7 +12225,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -12800,7 +12239,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.28.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "hash-db", "log", @@ -12821,9 +12260,9 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "aes-gcm 0.10.3", + "aes-gcm", "curve25519-dalek 4.1.1", "ed25519-dalek", "hkdf", @@ -12845,12 +12284,12 @@ dependencies = [ [[package]] name = "sp-std" version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" [[package]] name = "sp-storage" version = "13.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "impl-serde", "parity-scale-codec", @@ -12863,7 +12302,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "parity-scale-codec", @@ -12876,7 +12315,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "10.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "sp-std", @@ -12888,7 +12327,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "sp-api", "sp-runtime", @@ -12897,7 +12336,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "parity-scale-codec", @@ -12912,7 +12351,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "ahash 0.8.6", "hash-db", @@ -12935,7 +12374,7 @@ dependencies = [ [[package]] name = "sp-version" version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "impl-serde", "parity-scale-codec", @@ -12952,18 +12391,18 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "sp-wasm-interface" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -12976,7 +12415,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "parity-scale-codec", "scale-info", @@ -13002,9 +12441,9 @@ checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "spinners" -version = "4.1.0" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08615eea740067d9899969bc2891c68a19c315cb1f66640af9a9ecb91b13bcab" +checksum = "a0ef947f358b9c238923f764c72a4a9d42f2d637c46e059dbd319d6e7cfb4f82" dependencies = [ "lazy_static", "maplit", @@ -13013,29 +12452,19 @@ dependencies = [ [[package]] name = "spki" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" -dependencies = [ - "base64ct", - "der 0.6.1", -] - -[[package]] -name = "spki" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", - "der 0.7.8", + "der", ] [[package]] name = "ss58-registry" -version = "1.43.0" +version = "1.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6915280e2d0db8911e5032a5c275571af6bdded2916abd691a659be25d3439" +checksum = "35935738370302d5e33963665b77541e4b990a3e919ec904c837a56cfc891de1" dependencies = [ "Inflector", "num-format", @@ -13055,7 +12484,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "staging-kusama-runtime" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "binary-merkle-tree", "bitvec", @@ -13161,7 +12590,7 @@ dependencies = [ [[package]] name = "staging-xcm" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "bounded-collections", "derivative", @@ -13178,7 +12607,7 @@ dependencies = [ [[package]] name = "staging-xcm-builder" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "frame-system", @@ -13200,7 +12629,7 @@ dependencies = [ [[package]] name = "staging-xcm-executor" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "environmental", "frame-benchmarking", @@ -13295,26 +12724,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.38", -] - -[[package]] -name = "stun" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7e94b1ec00bad60e6410e058b52f1c66de3dc5fe4d62d09b3e52bb7d3b73e25" -dependencies = [ - "base64 0.13.1", - "crc", - "lazy_static", - "md-5", - "rand 0.8.5", - "ring 0.16.20", - "subtle", - "thiserror", - "tokio", - "url", - "webrtc-util", + "syn 2.0.41", ] [[package]] @@ -13333,12 +12743,12 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -13357,7 +12767,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "hyper", "log", @@ -13369,7 +12779,7 @@ dependencies = [ [[package]] name = "substrate-rpc-client" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "jsonrpsee", @@ -13382,7 +12792,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -13399,7 +12809,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes", "async-trait", @@ -13425,7 +12835,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime" version = "2.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes", "frame-executive", @@ -13468,7 +12878,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime-client" version = "2.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "futures", "sc-block-builder", @@ -13486,7 +12896,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "ansi_term", "build-helper", @@ -13501,15 +12911,6 @@ dependencies = [ "wasm-opt", ] -[[package]] -name = "substring" -version = "1.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ee6433ecef213b2e72f587ef64a2f5943e7cd16fbd82dbe8bc07486c534c86" -dependencies = [ - "autocfg", -] - [[package]] name = "subtle" version = "2.4.1" @@ -13535,9 +12936,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.38" +version = "2.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" dependencies = [ "proc-macro2", "quote", @@ -13611,15 +13012,15 @@ dependencies = [ "cfg-if", "fastrand 2.0.1", "redox_syscall 0.4.1", - "rustix 0.38.21", + "rustix 0.38.28", "windows-sys 0.48.0", ] [[package]] name = "termcolor" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" dependencies = [ "winapi-util", ] @@ -13632,42 +13033,42 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-core" -version = "1.0.38" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d97345f6437bb2004cd58819d8a9ef8e36cdd7661c2abc4bbde0a7c40d9f497" +checksum = "c001ee18b7e5e3f62cbf58c7fe220119e68d902bb7443179c0c8aef30090e999" dependencies = [ "thiserror-core-impl", ] [[package]] name = "thiserror-core-impl" -version = "1.0.38" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10ac1c5050e43014d16b2f94d0d2ce79e65ffdd8b38d8048f9c8f6a8a6da62ac" +checksum = "e4c60d69f36615a077cc7663b9cb8e42275722d23e58a7fa3d2c7f2915d09d04" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.41", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -13786,16 +13187,6 @@ dependencies = [ "crunchy", ] -[[package]] -name = "tinytemplate" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" -dependencies = [ - "serde", - "serde_json", -] - [[package]] name = "tinyvec" version = "1.6.0" @@ -13813,9 +13204,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.33.0" +version = "1.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" +checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" dependencies = [ "backtrace", "bytes", @@ -13832,13 +13223,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -13858,7 +13249,7 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.8", + "rustls 0.21.10", "tokio", ] @@ -13907,14 +13298,26 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_edit 0.19.15", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.20.2", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ "serde", ] @@ -13932,6 +13335,19 @@ dependencies = [ "winnow", ] +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.1.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + [[package]] name = "tower" version = "0.4.13" @@ -13993,7 +13409,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -14019,7 +13435,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "coarsetime", "polkadot-node-jaeger", @@ -14031,13 +13447,13 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "expander 2.0.0", - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -14154,14 +13570,14 @@ dependencies = [ [[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 = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "async-trait", "clap", @@ -14200,25 +13616,6 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" -[[package]] -name = "turn" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4712ee30d123ec7ae26d1e1b218395a16c87cdbaf4b3925d170d684af62ea5e8" -dependencies = [ - "async-trait", - "base64 0.13.1", - "futures", - "log", - "md-5", - "rand 0.8.5", - "ring 0.16.20", - "stun", - "thiserror", - "tokio", - "webrtc-util", -] - [[package]] name = "twox-hash" version = "1.6.3" @@ -14268,9 +13665,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" [[package]] name = "unicode-ident" @@ -14299,16 +13696,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" -[[package]] -name = "universal-hash" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" -dependencies = [ - "generic-array 0.14.7", - "subtle", -] - [[package]] name = "universal-hash" version = "0.5.1" @@ -14345,12 +13732,12 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", - "idna 0.4.0", + "idna 0.5.0", "percent-encoding", ] @@ -14362,11 +13749,10 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" -version = "1.5.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc" +checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" dependencies = [ - "getrandom 0.2.10", "serde", ] @@ -14394,15 +13780,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -[[package]] -name = "waitgroup" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1f50000a783467e6c0200f9d10642f4bc424e39efc1b770203e88b488f79292" -dependencies = [ - "atomic-waker", -] - [[package]] name = "waker-fn" version = "1.1.1" @@ -14442,9 +13819,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -14452,24 +13829,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" dependencies = [ "cfg-if", "js-sys", @@ -14479,9 +13856,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -14489,22 +13866,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "wasm-instrument" @@ -14572,9 +13949,9 @@ dependencies = [ [[package]] name = "wasmi" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f341edb80021141d4ae6468cbeefc50798716a347d4085c3811900049ea8945" +checksum = "acfc1e384a36ca532d070a315925887247f3c7e23567e23e0ac9b1c5d6b8bf76" dependencies = [ "smallvec", "spin 0.9.8", @@ -14817,31 +14194,21 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" dependencies = [ "js-sys", "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" -dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", -] - [[package]] name = "webpki" version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" dependencies = [ - "ring 0.17.5", + "ring 0.17.7", "untrusted 0.9.0", ] @@ -14851,227 +14218,19 @@ version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" dependencies = [ - "webpki 0.22.4", + "webpki", ] [[package]] name = "webpki-roots" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" - -[[package]] -name = "webrtc" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3bc9049bdb2cea52f5fd4f6f728184225bdb867ed0dc2410eab6df5bdd67bb" -dependencies = [ - "arc-swap", - "async-trait", - "bytes", - "hex", - "interceptor", - "lazy_static", - "log", - "rand 0.8.5", - "rcgen 0.9.3", - "regex", - "ring 0.16.20", - "rtcp", - "rtp", - "rustls 0.19.1", - "sdp", - "serde", - "serde_json", - "sha2 0.10.8", - "stun", - "thiserror", - "time", - "tokio", - "turn", - "url", - "waitgroup", - "webrtc-data", - "webrtc-dtls", - "webrtc-ice", - "webrtc-mdns", - "webrtc-media", - "webrtc-sctp", - "webrtc-srtp", - "webrtc-util", -] - -[[package]] -name = "webrtc-data" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef36a4d12baa6e842582fe9ec16a57184ba35e1a09308307b67d43ec8883100" -dependencies = [ - "bytes", - "derive_builder", - "log", - "thiserror", - "tokio", - "webrtc-sctp", - "webrtc-util", -] - -[[package]] -name = "webrtc-dtls" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a00f4242f2db33307347bd5be53263c52a0331c96c14292118c9a6bb48d267" -dependencies = [ - "aes 0.6.0", - "aes-gcm 0.10.3", - "async-trait", - "bincode", - "block-modes", - "byteorder", - "ccm", - "curve25519-dalek 3.2.0", - "der-parser 8.2.0", - "elliptic-curve 0.12.3", - "hkdf", - "hmac 0.12.1", - "log", - "p256", - "p384", - "rand 0.8.5", - "rand_core 0.6.4", - "rcgen 0.10.0", - "ring 0.16.20", - "rustls 0.19.1", - "sec1 0.3.0", - "serde", - "sha1", - "sha2 0.10.8", - "signature 1.6.4", - "subtle", - "thiserror", - "tokio", - "webpki 0.21.4", - "webrtc-util", - "x25519-dalek 2.0.0", - "x509-parser 0.13.2", -] - -[[package]] -name = "webrtc-ice" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "465a03cc11e9a7d7b4f9f99870558fe37a102b65b93f8045392fef7c67b39e80" -dependencies = [ - "arc-swap", - "async-trait", - "crc", - "log", - "rand 0.8.5", - "serde", - "serde_json", - "stun", - "thiserror", - "tokio", - "turn", - "url", - "uuid", - "waitgroup", - "webrtc-mdns", - "webrtc-util", -] - -[[package]] -name = "webrtc-mdns" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f08dfd7a6e3987e255c4dbe710dde5d94d0f0574f8a21afa95d171376c143106" -dependencies = [ - "log", - "socket2 0.4.10", - "thiserror", - "tokio", - "webrtc-util", -] - -[[package]] -name = "webrtc-media" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f72e1650a8ae006017d1a5280efb49e2610c19ccc3c0905b03b648aee9554991" -dependencies = [ - "byteorder", - "bytes", - "rand 0.8.5", - "rtp", - "thiserror", -] - -[[package]] -name = "webrtc-sctp" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d47adcd9427eb3ede33d5a7f3424038f63c965491beafcc20bc650a2f6679c0" -dependencies = [ - "arc-swap", - "async-trait", - "bytes", - "crc", - "log", - "rand 0.8.5", - "thiserror", - "tokio", - "webrtc-util", -] - -[[package]] -name = "webrtc-srtp" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6183edc4c1c6c0175f8812eefdce84dfa0aea9c3ece71c2bf6ddd3c964de3da5" -dependencies = [ - "aead 0.4.3", - "aes 0.7.5", - "aes-gcm 0.9.4", - "async-trait", - "byteorder", - "bytes", - "ctr 0.8.0", - "hmac 0.11.0", - "log", - "rtcp", - "rtp", - "sha-1", - "subtle", - "thiserror", - "tokio", - "webrtc-util", -] - -[[package]] -name = "webrtc-util" -version = "0.7.0" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f1db1727772c05cf7a2cfece52c3aca8045ca1e176cd517d323489aa3c6d87" -dependencies = [ - "async-trait", - "bitflags 1.3.2", - "bytes", - "cc", - "ipnet", - "lazy_static", - "libc", - "log", - "nix", - "rand 0.8.5", - "thiserror", - "tokio", - "winapi", -] +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" [[package]] name = "westend-runtime" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "binary-merkle-tree", "bitvec", @@ -15170,7 +14329,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "polkadot-primitives", @@ -15190,7 +14349,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.21", + "rustix 0.38.28", ] [[package]] @@ -15277,6 +14436,15 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -15307,6 +14475,21 @@ dependencies = [ "windows_x86_64_msvc 0.48.5", ] +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -15319,6 +14502,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -15331,6 +14520,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -15343,6 +14538,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -15355,6 +14556,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -15367,6 +14574,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[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" @@ -15379,6 +14592,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -15391,11 +14610,17 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + [[package]] name = "winnow" -version = "0.5.18" +version = "0.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "176b6138793677221d420fd2f0aeeced263f197688b36484660da767bca2fa32" +checksum = "6c830786f7720c2fd27a1a0e27a709dbd3c4d009b56d098fc742d4f4eab91fe2" dependencies = [ "memchr", ] @@ -15442,38 +14667,19 @@ dependencies = [ "zeroize", ] -[[package]] -name = "x509-parser" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb9bace5b5589ffead1afb76e43e34cff39cd0f3ce7e170ae0c29e53b88eb1c" -dependencies = [ - "asn1-rs 0.3.1", - "base64 0.13.1", - "data-encoding", - "der-parser 7.0.0", - "lazy_static", - "nom", - "oid-registry 0.4.0", - "ring 0.16.20", - "rusticata-macros", - "thiserror", - "time", -] - [[package]] name = "x509-parser" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" dependencies = [ - "asn1-rs 0.5.2", + "asn1-rs", "base64 0.13.1", "data-encoding", - "der-parser 8.2.0", + "der-parser", "lazy_static", "nom", - "oid-registry 0.6.1", + "oid-registry", "rusticata-macros", "thiserror", "time", @@ -15482,12 +14688,12 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] @@ -15521,50 +14727,50 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96f8f25c15a0edc9b07eb66e7e6e97d124c0505435c382fde1ab7ceb188aa956" +checksum = "854e949ac82d619ee9a14c66a1b674ac730422372ccb759ce0c39cabcf2bf8e6" dependencies = [ "byteorder", - "zerocopy-derive 0.6.5", + "zerocopy-derive 0.6.6", ] [[package]] name = "zerocopy" -version = "0.7.21" +version = "0.7.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686b7e407015242119c33dab17b8f61ba6843534de936d94368856528eae4dcc" +checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" dependencies = [ - "zerocopy-derive 0.7.21", + "zerocopy-derive 0.7.31", ] [[package]] name = "zerocopy-derive" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "855e0f6af9cd72b87d8a6c586f3cb583f5cdcc62c2c80869d8cd7e96fdf7ee20" +checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "zerocopy-derive" -version = "0.7.21" +version = "0.7.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020f3dfe25dfc38dfea49ce62d5d45ecdd7f0d8a724fa63eb36b6eba4ec76806" +checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] name = "zeroize" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" dependencies = [ "zeroize_derive", ] @@ -15577,7 +14783,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.41", ] [[package]] diff --git a/README.md b/README.md index 71ee26c963..3ebdf8cb27 100644 --- a/README.md +++ b/README.md @@ -334,7 +334,7 @@ Please check out [the information here](./CONTRIBUTING.md). # Security Issue Reporting Do you know of an on-chain vulnerability (or possible one) that can lead to economic loss, privacy loss, or instability of the network? -Please report it to [security@frequency.xyz](mailto:security@frequency.xyz) +Please report it by following the steps mentioned in [here](./SECURITY.md). # Additional Resources diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000000..f64fd8a6a1 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,91 @@ +# Security Policy + +We appreciate the efforts of security researchers and the broader community in helping us maintain a +secure environment for our users. If you discover a security vulnerability, we kindly request that +you report it to us privately before disclosing it publicly. This allows us to address the issue +promptly and protect our users. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please report the vulnerability via [https://github.com/LibertyDSNP/frequency/security/advisories/new](https://github.com/LibertyDSNP/frequency/security/advisories/new). + +Alternatively, you can send email to [security@frequency.xyz](mailto:security@frequency.xyz). If +possible, encrypt your message with our PGP key; you can download it from [OpenGPG key server](https://keys.openpgp.org/vks/v1/by-fingerprint/0E50AE7CFD8195999CF45370B766E94411B9B734) +or copy from below. + +You should receive a response within 48 hours. If for some reason you do not, please follow up via +email to ensure we received your original message. + +## Report details +Please include the requested information listed below (as much as you can provide) to help us better +understand the nature and scope of the possible issue: + +- Your name and contact information +- Description of the vulnerability +- Attack scenario (if any) +- Step-by-step instructions to reproduce the issue +- Any other details + +**Reminder: This process is only for security related vulnerabilities and if this is a generic issue +(no security implications) with Frequency or Polkadot-sdk or any other dependencies please open a +regular GitHub issue.** + + +## Plaintext PGP Key + +``` +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBGVt5AsBEADN7Hu5MDzC+J2omxN2cJXiQlgtxyMet6eUcUvtvtmF8viVYLaG +Bf3pGFvsSX3oQEGVMj0Xwby9PdyA7y4eIgIZfAG6qBELpeOvum7LL2N6qbU0GPsY +8fl+aejxAPiWbg8jJRDVmIPi18FOV3xhU6D8VWSToYLEt/Gqw7hAAiW3pRNJIJX5 +0VpR7N6ZNZwY+yj/Dwx7g9YaWyVDiRYxhQ5zRK7OhdaH6BV6YWeY0QmTmaeJBFrb +WGBU7ub+/LmOGw7JG3Aqi3seyD39SpE3sae2rFpXrX4bNfkKi4nTTNm3P4+2Zr42 +uMKFlmCLiFna01/DD+yT6FOF4ovCyCQF+Vzezz593Phj8Cl1vNOFWLc8b77tNZjk +UnXGwdCXKC/FLWng0ASy4zHcJiPrC/i+8Yhr+o+jJIraG+yDaO1T1VWFOlFu7JBl +QZb+rSnnonfxzWSx7I6ug3nO4y0DKRgOt8tzKvMJPVkhLEIZibPzYMBM7hpycqfo +Cb4EvWUkEuK7VhSqZ56MsQ+ziF4VYDZn4t+7uB8WuJ9xo3Xd1R2Cl2gUTP7aEBCj +N6KGiddXbNFDN4UsVveKHrRwPHpjEiOy+e32CafoyG7+dJWX3klg/Os1hCkjw3hj +iOKBUUGdtELiMPqt84qmaGrQRaIy0p/2JEn7PSjJ2HAwzCL6CMwiMy1eAwARAQAB +tDVGcmVxdWVuY3kgU2VjdXJpdHkgUmVwb3J0aW5nIDxzZWN1cml0eUBmcmVxdWVu +Y3kueHl6PokCVAQTAQgAPhYhBA5Qrnz9gZWZnPRTcLdm6UQRubc0BQJlbeQLAhsD +BQkH0pYMBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJELdm6UQRubc0nmoP/2Dt +eDthwWTXVwoExxOJZ/035aq+wgIQ9Z04S2GyOgV8eNYIxSRiDfvhoyezJmtVsJNW +f4dyHYdhpC2yMlcT3jWFXJEQc4y72enhiyUzRHHrKuNLNioquV+3l614v5zhuROS +Yx/lUMHCgyg5viUe2EUyyhss/OkxLUrLT8S9Ggn4Aaf6eGUixag4DvLf7XWP8JhF +4trX5BSiCYwVhmKPu8HnxNa2TXBdprm/SnRTDmyYXsF/1MVbmaIaNzvTi0Tt+5iQ +tIjfxoCV5mX6eNPogQdkvpdBk2SSAO0CTLMP/qFVI2nsuTmyPuCO6dx+Sr8eaG2u +Aumk/tU2Rra5V9Mc0SSwYQj8nTMcgBh2PeIuVmOdznh18s/4/2Fp0teizjnqzbU0 +dreRNsqooVPqifumh2BoaNZcKOnuBp+/2xZid2B6VEjLFYHlrKmajQK8V1P0AHV+ +HFi6+z1Ahge6JCCl0MfhoO13wepmgBkyyhPnUR8pbSeUGqA9iYkJ8q+LeXztxiIO +rJ0f7Y0lpJBWkU6nu4LNdL8qOUDLZx2BKZZGjzemGV05vKh/aS2cv0Z6z/YWY97e +M0wGWp9LELxzGBpp0F9HkJ84rFEyW/fZ3f4yDSrwaRsb7eCrrWpBiqKsVj4vKfZz +XE5oWhk0eAFFMAcPCcRemlMTKEW1lt6kfF/8xLYBuQINBGVt5AsBEAC/mB66pftw +YCW4/PXAWI+TQk5/iR9DPX0RHNd8d7B41qo5KOnu8FGdGJuk60fR26C9qyMJOBxz +HhbEPlE5UHyaUn/QiDOyzB1eZmwSUH38Y5PTgXM1ZvB0taLjkCaNIe+AeEqMx6NT +xK989a3+1fiC1nro797urZ52JdzJvU1Krh6K8AsfEIfVqqmzSaNGee1jREL5HC3y +JpiN2h0/G0WX4s8mCOER5jOuu3vWa/qBV0qkwYBwgBV0n42DBE0/BHoQYXRNzpKV +unQ3wqqqln4XdyuQanfUEIGgZAgK0HYsO1/jG58yUhw8jw3VMjtqgzO9A0NA90RE +ZSimDD1RQuCJonDS2fZBewpDKgSNp9PqobkMEM60/uvrB7ZUGSAOkjnRLRbVGLyA +bHaMES0c6IP/FsRZUnJ9+0u7pp59Zvtqsn1pl46bN8s38EdZ/uyYN9P9C5cX/Tof +1fcPN6W45K1BVBvGhbRX6j/+J0CH0Ya9lGJmhVyb9My/YmusjjPRiEngyjcXN0lv +G9rrqFVwQLoGanF/YZE8VOPrC33NreocuF7ClK8Kkvwow71254inUYIw6VJVrwMW +97QYvDAJ8iRLh6fY2W1JaLNbJS89OcDfq8yaHhQlheT2moFONcx+IxrFQu/HEqGn +6DLCoYnNrHtVH2ZfRvE3T0dzJ/NtTr4QrQARAQABiQI8BBgBCAAmFiEEDlCufP2B +lZmc9FNwt2bpRBG5tzQFAmVt5AsCGwwFCQfSlgwACgkQt2bpRBG5tzQpWRAAirJZ +I1CQzk4+tYdFzPx9dWgvsO/J+y+tM3HJdeLKzBIeQGGJKvAmQC6RyMhhXwapznm8 +qS+KUj3/riBLuGRni1OJLABR0W+zilsVA9RMkAHdK8jGCCRjB7+HSAXKcN1k297j +mJwZstQuWlWOU315v2ebLSLW+SwBvHQVFnWRQZqu8oNm0uVWQBzZ0jAzoMXi/KDm +156L9CFowcHVwCHzkdgyQ6h5XxJfTwGlX5Kwed8SQD1eavRHiFstl6S4bqG9+xlB +YGFIKCMOSNO5DO+76NiqcgZb2huZ+9WHdcYB911j766uRHqPIAinWOARPYmtaLoT +kl96hi50EmtmFa0Roa5otbnw4TAXvlSsXXLqc30XoI3gKhnMLY846HVsU/PjCvgq +5WFDxT+fovLfd2IUfmSri8zGFdlAPSyRa1jPp9vtEeelKeMTTElRiz2e6LYMkhmF +YAfw4o1Gy+Io+Eu/Gu+CXfQuGRBU/sbIBwfe/mlk1e0NOO7u4sx5Q0QaRvl/XZ/P +oyjZstz48mfnFOTGbWRaX45rs/eBLYTggAFiNZXUrA0vH4iAxN1o+IsEzmnGFfRb +hVu9J6odTCsucHDKzqhPxbJdPP4rS9yKHwoYmilZq9NzwkX88raA7pWRX4tp6KPe +GK223m2Hg28/Y6p6JVrKZ/3w/Q8QFMkHFOeOSMs= +=oBQV +-----END PGP PUBLIC KEY BLOCK----- +``` diff --git a/common/primitives/src/schema.rs b/common/primitives/src/schema.rs index 6d765f5cb1..2516625368 100644 --- a/common/primitives/src/schema.rs +++ b/common/primitives/src/schema.rs @@ -14,6 +14,9 @@ use utils::*; /// Schema Id is the unique identifier for a Schema pub type SchemaId = u16; +/// Schema version number +pub type SchemaVersion = u8; + /// Types of modeling in which a message payload may be defined #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] #[derive(Copy, Clone, Encode, Decode, PartialEq, Debug, TypeInfo, Eq, MaxEncodedLen)] @@ -130,6 +133,19 @@ impl SchemaSettings { } impl_codec_bitflags!(SchemaSettings, u16, SchemaSetting); +/// RPC Response from a schema name query +#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] +#[derive(Clone, Encode, Decode, PartialEq, Debug, TypeInfo, Eq)] +pub struct SchemaVersionResponse { + /// Schema name in following format: namespace.descriptor + #[cfg_attr(feature = "std", serde(with = "as_string"))] + pub schema_name: Vec, + /// The version for this schema + pub schema_version: SchemaVersion, + /// The unique identifier for this Schema + pub schema_id: SchemaId, +} + #[cfg(test)] mod tests { use super::*; diff --git a/designdocs/capacity.md b/designdocs/capacity.md index 160fab6a86..8f0a911ce8 100644 --- a/designdocs/capacity.md +++ b/designdocs/capacity.md @@ -302,7 +302,7 @@ Storage for keeping records of staking accounting. /// Storage for keeping a ledger of staked token amounts for accounts. #[pallet::storage] pub type StakingAccountLedger = - StorageMap<_, Twox64Concat, T::AccountId, StakingAccountDetails>; + StorageMap<_, Twox64Concat, T::AccountId, StakingDetails>; ``` @@ -355,7 +355,7 @@ The type used for storing information about staking details. ```rust -pub struct StakingAccountDetails { +pub struct StakingDetails { /// The amount a Staker has staked, minus the sum of all tokens in `unlocking`. pub active: Balance, /// The total amount of tokens in `active` and `unlocking` diff --git a/designdocs/capacity_staking_rewards_implementation.md b/designdocs/capacity_staking_rewards_implementation.md index 24f8b02af5..0a7f0ac99d 100644 --- a/designdocs/capacity_staking_rewards_implementation.md +++ b/designdocs/capacity_staking_rewards_implementation.md @@ -1,11 +1,13 @@ # Capacity Staking Rewards Implementation ## Overview -Staking Capacity for rewards is a new feature which allows token holders to stake FRQCY and split the staking -rewards with a Provider they choose. The Provider receives a small reward in Capacity -(which is periodically replenished), and the staker receives a periodic return in FRQCY token. -The amount of Capacity that the Provider would receive in such case is a fraction of what they would get from a -`MaximumCapacity` stake. +This document describes a new type of staking which allows token holders to stake FRQCY and split staking rewards with a Provider the staker chooses. + +Currently, when staking token for Capacity, the only choice is to assign all the generated Capacity to the designated target. +The target, who must be a Provider, may then spend this Capacity to pay for specific transactions. This is called **Maximized Capacity** staking. + +In this new type of staking, called **Provider Boosting**, the Provider receives a reward in Capacity and the staker receives a periodic return in FRQCY token. +The amount of Capacity that the Provider would receive in such case is a less than what they would get from a `MaximumCapacity` stake. The period of Capacity replenishment - the `Epoch` - and the period of token reward - the `RewardEra`- are different. Epochs much necessarily be much shorter than rewards because Capacity replenishment needs to be multiple times a day to meet the needs of a high traffic network, and to allow Providers the ability to delay transactions to a time of day with lower network activity if necessary. @@ -13,12 +15,13 @@ Reward eras need to be on a much longer scale, such as every two weeks, because In addition, this lets the chain to store Reward history for much longer rather than forcing people to have to take steps to claim rewards. ### Diagram -This illustrates roughly (and not to scale) how Provider Boost staking works. Just like the current staking behavior, now called Maximized staking, The Capacity generated by staking is added to the Provider's Capacity ledger immediately so it can be used right away. The amount staked is locked in Alice's account, preventing transfer. +This illustrates roughly -- not to scale and **NOT reflecting actual reward amounts** -- how Provider Boost staking is expected to work. Just like the current staking behavior, now called Maximium staking, The Capacity generated by staking is added to the Provider's Capacity ledger immediately so it can be used right away. The amount staked is locked in Alice's account, preventing transfer. Provider Boost token rewards are earned only for token staked for a complete Reward Era. So Alice does not begin earning rewards until Reward Era 5 in the diagram, and this means Alice must wait until Reward Era 6 to claim rewards for Reward Era 5. Unclaimed reward amounts are actually not minted or transferred until they are claimed, and may also not be calculated until then, depending on the economic model. This process will be described in more detail in the Economic Model Design Document. +### NOTE: Actual reward amounts are TBD; amounts are for illustration purposes only ![Provider boosted staking](https://github.com/LibertyDSNP/frequency/assets/502640/ffb632f2-79c2-4a09-a906-e4de02e4f348) The proposed feature is a design for staking FRQCY token in exchange for Capacity and/or FRQCY. @@ -50,23 +53,15 @@ It does not give regard to what the economic model actually is, since that is ye ## Staking Token Rewards -### StakingAccountDetails updates +### StakingAccountDetails --> StakingDetails New fields are added. The field **`last_rewarded_at`** is to keep track of the last time rewards were claimed for this Staking Account. MaximumCapacity staking accounts MUST always have the value `None` for `last_rewarded_at`. -Finally, `stake_change_unlocking`, is added, which stores an `UnlockChunk` when a staking account has changed. -targets for some amount of funds. This is to prevent retarget spamming. -This will be a V2 of this storage and original StakingAccountDetails will need to be migrated. +This is a second version of this storage, to replace StakingAccountDetails, and StakingAccountDetails data will need to be migrated. ```rust -pub struct StakingAccountDetailsV2 { +pub struct StakingDetails { pub active: BalanceOf, - pub total: BalanceOf, - pub unlocking: BoundedVec, T::EpochNumber>, T::MaxUnlockingChunks>, - /// The number of the last StakingEra that this account's rewards were claimed. pub last_rewards_claimed_at: Option, // NEW None means never rewarded, Some(RewardEra) means last rewarded RewardEra. - /// staking amounts that have been retargeted are prevented from being retargeted again for the - /// configured Thawing Period number of blocks. - pub stake_change_unlocking: BoundedVec, T::RewardEra>, T::MaxUnlockingChunks>, // NEW } ``` @@ -150,7 +145,7 @@ pub struct StakingRewardClaim { /// How much is claimed, in token pub claimed_reward: Balance, /// The end state of the staking account if the operations are valid - pub staking_account_end_state: StakingAccountDetails, + pub staking_account_end_state: StakingDetails, /// The starting era for the claimed reward period, inclusive pub from_era: T::RewardEra, /// The ending era for the claimed reward period, inclusive @@ -264,7 +259,7 @@ calculate rewards on chain at all. Regardless, on success, the claimed rewards are minted and transferred as locked token to the origin, with the existing unstaking thaw period for withdrawal (which simply unlocks thawed token amounts as before). -There is no chunk added; instead the existing unstaking thaw period is applied to last_rewards_claimed_at in StakingAccountDetails. +There is no chunk added; instead the existing unstaking thaw period is applied to last_rewards_claimed_at in StakingDetails. Forcing stakers to wait a thaw period for every claim is an incentive to claim rewards sooner than later, leveling out possible inflationary effects and helping prevent unclaimed rewards from expiring. @@ -336,7 +331,7 @@ No more than `T::MaxUnlockingChunks` staking amounts may be retargeted within th Each call creates one chunk. Emits a `StakingTargetChanged` event with the parameters of the extrinsic. ```rust /// Sets the target of the staking capacity to a new target. -/// This adds a chunk to `StakingAccountDetails.stake_change_unlocking chunks`, up to `T::MaxUnlockingChunks`. +/// This adds a chunk to `StakingDetails.stake_change_unlocking chunks`, up to `T::MaxUnlockingChunks`. /// The staked amount and Capacity generated by `amount` originally targeted to the `from` MSA Id is reassigned to the `to` MSA Id. /// Does not affect unstaking process or additional stake amounts. /// Changing a staking target to a Provider when Origin has nothing staked them will retain the staking type. diff --git a/e2e/handles/handles.test.ts b/e2e/handles/handles.test.ts index 805d16dc93..249b234de6 100644 --- a/e2e/handles/handles.test.ts +++ b/e2e/handles/handles.test.ts @@ -58,7 +58,7 @@ describe('🤝 Handles', function () { await ExtrinsicHelper.runToBlock(currentBlock + expirationOffset + 1); // Must be at least 1 > original expiration const retireHandle = ExtrinsicHelper.retireHandle(msaOwnerKeys); - const { target: event } = await retireHandle.signAndSend('current'); + const { target: event } = await retireHandle.signAndSend(); assert.notEqual(event, undefined, 'retireHandle should return an event'); const handle = event!.data.handle.toString(); assert.notEqual(handle, '', 'retireHandle should return the correct handle'); diff --git a/e2e/msa/msaKeyManagement.test.ts b/e2e/msa/msaKeyManagement.test.ts index 80a877be34..5bbab5dd8e 100644 --- a/e2e/msa/msaKeyManagement.test.ts +++ b/e2e/msa/msaKeyManagement.test.ts @@ -167,7 +167,7 @@ describe('MSA Key management', function () { assert.notEqual(event, undefined, 'should have added public key'); // Cleanup - await assert.doesNotReject(ExtrinsicHelper.deletePublicKey(keys, thirdKey.publicKey).signAndSend('current')); + await assert.doesNotReject(ExtrinsicHelper.deletePublicKey(keys, thirdKey.publicKey).signAndSend()); }); }); @@ -245,7 +245,7 @@ describe('MSA Key management', function () { it('should delete secondary key', async function () { const op = ExtrinsicHelper.deletePublicKey(keys, secondaryKey.publicKey); - const { target: event } = await op.signAndSend('current'); + const { target: event } = await op.signAndSend(); assert.notEqual(event, undefined, 'should have returned PublicKeyDeleted event'); }); diff --git a/e2e/package-lock.json b/e2e/package-lock.json index f2b313a7ce..f7ffbdae0c 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -45,49 +45,53 @@ } }, "node_modules/@achingbrain/nat-port-mapper": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@achingbrain/nat-port-mapper/-/nat-port-mapper-1.0.11.tgz", - "integrity": "sha512-Y2lwx0zmrwEl+IGu+V/QiVBdcdsWscYq1PMMEjvyuuaXnmnppbLWilO8LK1yoLdncxwJBuS0zZtHbpFeWBusRg==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@achingbrain/nat-port-mapper/-/nat-port-mapper-1.0.13.tgz", + "integrity": "sha512-B5GL6ILDek72OjoEyFGEuuNYaEOYxO06Ulhcaf/5iQ4EO8uaZWS+OkolYST7L+ecJrkjfaSNmSAsWRRuh+1Z5A==", "dependencies": { "@achingbrain/ssdp": "^4.0.1", - "@libp2p/logger": "^3.0.0", + "@libp2p/logger": "^4.0.1", "default-gateway": "^7.2.2", "err-code": "^3.0.1", "it-first": "^3.0.1", "p-defer": "^4.0.0", "p-timeout": "^6.1.1", "xml2js": "^0.6.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + } + }, + "node_modules/@achingbrain/nat-port-mapper/node_modules/@libp2p/interface": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.0.2.tgz", + "integrity": "sha512-z/3Yyg+7cVyzRXwzdrDkJd7YmNaLE9iZjQaixo5luI/n9uk5OFFjb9ulAsNqpq8V1xylCo2DXIC7f94KClwzVw==", + "dependencies": { + "@multiformats/multiaddr": "^12.1.10", + "it-pushable": "^3.2.1", + "it-stream-types": "^2.0.1", + "multiformats": "^12.1.3", + "uint8arraylist": "^2.4.3" + } + }, + "node_modules/@achingbrain/nat-port-mapper/node_modules/@libp2p/logger": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.2.tgz", + "integrity": "sha512-J9UMtMU9BKXNp+3c5kcI7HyWOPYg2B2E6sn1gEQckiSexTaz0wKJSlgTZ89f9F8bkC3AaC8ybXYuHbFQhwpTIg==", + "dependencies": { + "@libp2p/interface": "^1.0.2", + "@multiformats/multiaddr": "^12.1.10", + "debug": "^4.3.4", + "interface-datastore": "^8.2.0", + "multiformats": "^12.1.3" } }, "node_modules/@achingbrain/ssdp": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@achingbrain/ssdp/-/ssdp-4.0.4.tgz", - "integrity": "sha512-fY/ShiYJmhLdr45Vn2+f88xTqZjBSH3X3F+EJu/89cjB1JIkMCVtD5CQaaS38YknIL8cEcNhjMZM4cdE3ckSSQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@achingbrain/ssdp/-/ssdp-4.0.6.tgz", + "integrity": "sha512-Y4JE2L9150i50V6lg/Y8+ilhxRpUZKKv+PKo68Aj7MjPfaUAar6ZHilF9h4/Zb3q0fqGMXNc9o11cQLNI8J8bA==", "dependencies": { "event-iterator": "^2.0.0", "freeport-promise": "^2.0.0", "merge-options": "^3.0.4", - "xml2js": "^0.5.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@achingbrain/ssdp/node_modules/xml2js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" + "xml2js": "^0.6.2" } }, "node_modules/@assemblyscript/loader": { @@ -95,18 +99,28 @@ "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.9.4.tgz", "integrity": "sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA==" }, + "node_modules/@chainsafe/as-chacha20poly1305": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@chainsafe/as-chacha20poly1305/-/as-chacha20poly1305-0.1.0.tgz", + "integrity": "sha512-BpNcL8/lji/GM3+vZ/bgRWqJ1q5kwvTFmGPk7pxm/QQZDbaMI98waOHjEymTjq2JmdD/INdNBFOVSyJofXg7ew==" + }, + "node_modules/@chainsafe/as-sha256": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.4.1.tgz", + "integrity": "sha512-IqeeGwQihK6Y2EYLFofqs2eY2ep1I2MvQXHzOAI+5iQN51OZlUkrLgyAugu2x86xZewDk5xas7lNczkzFzF62w==" + }, "node_modules/@chainsafe/is-ip": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@chainsafe/is-ip/-/is-ip-2.0.2.tgz", "integrity": "sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==" }, "node_modules/@chainsafe/libp2p-gossipsub": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-gossipsub/-/libp2p-gossipsub-10.1.0.tgz", - "integrity": "sha512-mOVYJAvxYRkh2HeggNFW/7ukEccQDVEI9LPhvlnJk7gnJhyJJ6mhZxUAaytfp3v3qTkmeBRnEL0eJOQBm+MoOA==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-gossipsub/-/libp2p-gossipsub-10.1.1.tgz", + "integrity": "sha512-nou65zlGaUIPwlUq7ceEVpszJX4tBWRRanppYaKsJk7rbDeIKRJQla2duATGOI3fwj1+pGSlDQuF2zG7P0VJQw==", "dependencies": { "@libp2p/crypto": "^2.0.0", - "@libp2p/interface": "^0.1.0", + "@libp2p/interface": "^0.1.4", "@libp2p/interface-internal": "^0.1.0", "@libp2p/logger": "^3.0.0", "@libp2p/peer-id": "^3.0.0", @@ -127,15 +141,17 @@ } }, "node_modules/@chainsafe/libp2p-noise": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-13.0.1.tgz", - "integrity": "sha512-eeOFubXyS9sK0oBg/qRfve6LVGzZX1vyULVidaKGTJr8Y4dtyU4+Btqw/aVo3o1lhdvb/qoY+p/Ep2pUsvJKhg==", + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-13.0.5.tgz", + "integrity": "sha512-xXqwrkH4nXlv3cYENHtqOgmIT2M4irPDwi548UvpmxzeC9hqa0kmiqbtAFYMV3v+gJ9pqVBVWFRk2hjs83GNrw==", "dependencies": { + "@chainsafe/as-chacha20poly1305": "^0.1.0", + "@chainsafe/as-sha256": "^0.4.1", "@libp2p/crypto": "^2.0.0", "@libp2p/interface": "^0.1.0", "@libp2p/logger": "^3.0.0", "@libp2p/peer-id": "^3.0.0", - "@noble/ciphers": "^0.3.0", + "@noble/ciphers": "^0.4.0", "@noble/curves": "^1.1.0", "@noble/hashes": "^1.3.1", "it-byte-stream": "^1.0.0", @@ -146,7 +162,8 @@ "it-stream-types": "^2.0.1", "protons-runtime": "^5.0.0", "uint8arraylist": "^2.4.3", - "uint8arrays": "^4.0.4" + "uint8arrays": "^4.0.4", + "wherearewe": "^2.0.1" }, "engines": { "node": ">=16.0.0", @@ -154,21 +171,17 @@ } }, "node_modules/@chainsafe/libp2p-yamux": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-yamux/-/libp2p-yamux-5.0.0.tgz", - "integrity": "sha512-aWTnBPR2hJt0A2y579sMtZVB6IqgSSHlZ6Eg+WDxNZQ0zcexafuruZQDj+z3FUTNPz+E8IeuyCi7tjI4IEehjw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-yamux/-/libp2p-yamux-5.0.4.tgz", + "integrity": "sha512-3cfOjomFde7+6sscoM0gK7cgA5aEm20oYeVXSSonVzaas/UZzNsGP+FnF/bjLATjdyTB+YqhBHJs/KKk1PAy/Q==", "dependencies": { "@libp2p/interface": "^0.1.0", "@libp2p/logger": "^3.0.0", - "abortable-iterator": "^5.0.1", + "get-iterator": "^2.0.1", "it-foreach": "^2.0.3", "it-pipe": "^3.0.1", "it-pushable": "^3.2.0", "uint8arraylist": "^2.4.3" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" } }, "node_modules/@chainsafe/netmask": { @@ -191,16 +204,6 @@ "node": ">=12" } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -217,18 +220,18 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -249,9 +252,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", - "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -260,7 +263,7 @@ "node_modules/@frequency-chain/api-augment": { "version": "0.0.0", "resolved": "file:../js/api-augment/dist/frequency-chain-api-augment-0.0.0.tgz", - "integrity": "sha512-SjELGw36ccBPvWV19CU73HAOU1hiYJfQGqY1G3Qd7MJUuH3EaaB7Qr85dqjKcwIt37L7hYZ29LjddBw9//jRkw==", + "integrity": "sha512-APYNkdACbNLXSluVIML0V2rrQKlDTAh7bWNlKyZ6VuMXL8MY9wTQPHfTrdktccpYxkjZ8G4yD6i5rWjr9FB2ow==", "license": "Apache-2.0", "dependencies": { "@polkadot/api": "^10.9.1", @@ -268,10 +271,31 @@ "@polkadot/types": "^10.9.1" } }, + "node_modules/@helia/delegated-routing-v1-http-api-client": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@helia/delegated-routing-v1-http-api-client/-/delegated-routing-v1-http-api-client-1.1.2.tgz", + "integrity": "sha512-u+sVdOxFieusZh/AxC8c0lU1micWfAosju7A80n62rdJ1fr1lclkhhrlfaKWIgVOq+pwonEzoOE7QgnTL22tYw==", + "dependencies": { + "@libp2p/interface": "^0.1.2", + "@libp2p/logger": "^3.0.2", + "@libp2p/peer-id": "^3.0.3", + "@multiformats/multiaddr": "^12.1.3", + "any-signal": "^4.1.1", + "browser-readablestream-to-it": "^2.0.3", + "ipns": "^7.0.1", + "it-first": "^3.0.3", + "it-map": "^3.0.4", + "it-ndjson": "^1.0.4", + "multiformats": "^12.1.1", + "p-defer": "^4.0.0", + "p-queue": "^7.3.4", + "uint8arrays": "^4.0.6" + } + }, "node_modules/@helia/interface": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@helia/interface/-/interface-2.0.0.tgz", - "integrity": "sha512-LW8iRyits8/Tyi6KkZy6I8VydJZvdmeI5kxLanbLNgcCKrgE9bgrlUjR1cQXV5N+CDV8Rn9FRp6I7tYEYnTC0Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@helia/interface/-/interface-2.1.0.tgz", + "integrity": "sha512-Z7PwuDIR0BODfSMzYcdzgdTYLsshCawAoPvGuuazvBddWSD9y82/QBmsWp6CTkyM/ziEaWbz5wERmRS+wejDLg==", "dependencies": { "@libp2p/interface": "^0.1.1", "interface-blockstore": "^5.0.0", @@ -283,9 +307,9 @@ } }, "node_modules/@helia/unixfs": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@helia/unixfs/-/unixfs-1.4.2.tgz", - "integrity": "sha512-wH/xg++d2fH16aaUJPmB08snPXTgEDwD13uRXQsYqL1A3lgS32RgSQN64Xtb7qfzZ0SzDBtJLeoZDXNJuXDzoQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@helia/unixfs/-/unixfs-1.4.3.tgz", + "integrity": "sha512-jS0En8fGhb01XH+nnxo3kQsmc1lwBEdlttAZFvTo7HCjBGPNFuaYdwTqF9S1wMVWV2fWqj7eS2zBZZa0MDsi1Q==", "dependencies": { "@helia/interface": "^2.0.0", "@ipld/dag-pb": "^4.0.0", @@ -340,53 +364,35 @@ "dev": true }, "node_modules/@ipld/dag-cbor": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-9.0.0.tgz", - "integrity": "sha512-zdsiSiYDEOIDW7mmWOYWC9gukjXO+F8wqxz/LfN7iSwTfIyipC8+UQrCbPupFMRb/33XQTZk8yl3My8vUQBRoA==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-9.0.6.tgz", + "integrity": "sha512-3kNab5xMppgWw6DVYx2BzmFq8t7I56AGWfp5kaU1fIPkwHVpBRglJJTYsGtbVluCi/s/q97HZM3bC+aDW4sxbQ==", "dependencies": { - "cborg": "^1.10.0", - "multiformats": "^11.0.0" + "cborg": "^4.0.0", + "multiformats": "^12.0.1" }, "engines": { "node": ">=16.0.0", "npm": ">=7.0.0" } }, - "node_modules/@ipld/dag-cbor/node_modules/multiformats": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-11.0.2.tgz", - "integrity": "sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg==", - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/@ipld/dag-json": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-10.0.1.tgz", - "integrity": "sha512-XE1Eqw3eNVrSfOhtqCM/gwCxEgYFBzkDlkwhEeMmMvhd0rLBfSyVzXbahZSlv97tiTPEIx5rt41gcFAda3W8zg==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-10.1.5.tgz", + "integrity": "sha512-AIIDRGPgIqVG2K1O42dPDzNOfP0YWV/suGApzpF+YWZLwkwdGVsxjmXcJ/+rwOhRGdjpuq/xQBKPCu1Ao6rdOQ==", "dependencies": { - "cborg": "^1.10.0", - "multiformats": "^11.0.0" + "cborg": "^4.0.0", + "multiformats": "^12.0.1" }, "engines": { "node": ">=16.0.0", "npm": ">=7.0.0" } }, - "node_modules/@ipld/dag-json/node_modules/multiformats": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-11.0.2.tgz", - "integrity": "sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg==", - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/@ipld/dag-pb": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-4.0.5.tgz", - "integrity": "sha512-El2Jhmv6bWuakhvnw1dl6xOhqLeVhlY8DIAJ06NtZRAoDcOzeGzvOtPzMCszVgCT0EQz+LOctyfgQ5Oszba19A==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-4.0.6.tgz", + "integrity": "sha512-wOij3jfDKZsb9yjhQeHp+TQy0pu1vmUkGv324xciFFZ7xGbDfAGTQW03lSA5aJ/7HBBNYgjEE0nvHmNW1Qjfag==", "dependencies": { "multiformats": "^12.0.1" }, @@ -396,43 +402,53 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, "node_modules/@libp2p/bootstrap": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-9.0.6.tgz", - "integrity": "sha512-YvPQT0jkRpW1meVZQMMaJkQFgRgdJjqpT9dD6GcacOc+EbByAUi+sLB1l0VOA5uNa0UoKUNdv50XHfEsD6BFhg==", + "version": "9.0.12", + "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-9.0.12.tgz", + "integrity": "sha512-w/Mzq8tNBy4DQJXlIN4mwged/6ZHltsAr/J2Wpv0mijrKrr3PLEF1XWfQtdvNUb/exOlXOMCNwVRcXfeAha1qg==", "dependencies": { - "@libp2p/interface": "^0.1.2", - "@libp2p/logger": "^3.0.2", - "@libp2p/peer-id": "^3.0.2", + "@libp2p/interface": "^0.1.6", + "@libp2p/logger": "^3.1.0", + "@libp2p/peer-id": "^3.0.6", "@multiformats/mafmt": "^12.1.2", "@multiformats/multiaddr": "^12.1.5" } }, "node_modules/@libp2p/crypto": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-2.0.4.tgz", - "integrity": "sha512-1/PDtJC+k64Sd0bzK4DvGflk8Brj5fGskRCfBOndhNmitjHe8+ewbuA9lldTOerfkVgMn7Zb+sjNsytyr6BqlA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-2.0.8.tgz", + "integrity": "sha512-8e5fh6bsJNpSjhrggtlm8QF+BERjelJswIjRS69aKgxp24R4z2kDM4pRYPkfQjXJDLNDtqWtKNmePgX23+QJsA==", "dependencies": { - "@libp2p/interface": "^0.1.2", + "@libp2p/interface": "^0.1.6", "@noble/curves": "^1.1.0", "@noble/hashes": "^1.3.1", "multiformats": "^12.0.1", @@ -443,9 +459,9 @@ } }, "node_modules/@libp2p/interface": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-0.1.2.tgz", - "integrity": "sha512-Q5t27434Mvn+R6AUJlRH+q/jSXarDpP+KXVkyGY7S1fKPI2berqoFPqT61bRRBYsCH2OPZiKBB53VUzxL9uEvg==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-0.1.6.tgz", + "integrity": "sha512-Lzc5cS/hXuoXhuAbVIxJIHLCYmfPcbU0vVgrpMoiP1Qb2Q3ETU4A46GB8s8mWXgSU6tr9RcqerUqzFYD6+OAag==", "dependencies": { "@multiformats/multiaddr": "^12.1.5", "abortable-iterator": "^5.0.1", @@ -453,58 +469,37 @@ "it-stream-types": "^2.0.1", "multiformats": "^12.0.1", "p-defer": "^4.0.0", + "race-signal": "^1.0.0", "uint8arraylist": "^2.4.3" } }, "node_modules/@libp2p/interface-internal": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-0.1.5.tgz", - "integrity": "sha512-h6f1fk2M6BhqjooE4I1iODmY/jorCvJ1bX1IOMHOMNkrbwsMS2BOpDkBJD+u+QlKMoRIA2zEfWezXB4Pa8GASw==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-0.1.12.tgz", + "integrity": "sha512-tUZ4hxU8fO4397p/GtXNvAANHiLA/Uxdil90TuNNCnlb+GZijDYEEJiqBfnk2zYAdwm7Q9iO0fVxZCpfoW8B7Q==", "dependencies": { - "@libp2p/interface": "^0.1.2", - "@libp2p/peer-collections": "^4.0.4", + "@libp2p/interface": "^0.1.6", + "@libp2p/peer-collections": "^4.0.8", "@multiformats/multiaddr": "^12.1.5", "uint8arraylist": "^2.4.3" } }, - "node_modules/@libp2p/ipni-content-routing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@libp2p/ipni-content-routing/-/ipni-content-routing-2.0.0.tgz", - "integrity": "sha512-6YY7FUJ4KJ8UcrBosEcaRAaB1n/6iJuQ+etdx/8ON49oYIRoqXfTEUGNDORZweStEoktgS8oT8DLKUuAystm0g==", - "dependencies": { - "@libp2p/interface": "^0.1.1", - "@libp2p/logger": "^3.0.1", - "@libp2p/peer-id": "^3.0.1", - "@multiformats/multiaddr": "^12.1.2", - "any-signal": "^4.1.1", - "browser-readablestream-to-it": "^2.0.2", - "iterable-ndjson": "^1.1.0", - "multiformats": "^12.0.1", - "p-defer": "^4.0.0", - "p-queue": "^7.3.4" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/@libp2p/kad-dht": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-10.0.7.tgz", - "integrity": "sha512-ohwae4w62Y0zqFAwK+74oCLxWVpVdqO7sEwEACfuXuzz93lo/SR1Ynnm2WVGSarrBuBcPh+3nPs9GawakcsrPw==", - "dependencies": { - "@libp2p/crypto": "^2.0.4", - "@libp2p/interface": "^0.1.2", - "@libp2p/interface-internal": "^0.1.5", - "@libp2p/logger": "^3.0.2", - "@libp2p/peer-collections": "^4.0.4", - "@libp2p/peer-id": "^3.0.2", + "version": "10.0.15", + "resolved": "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-10.0.15.tgz", + "integrity": "sha512-S4pQY8t4lXBlicBREThtOHnLn79e07sVgKZPa9SmJ4hC1+i0HFD8XLzrHm3cnKSO/4RhoaF5YdlnZMMjbb7q0w==", + "dependencies": { + "@libp2p/crypto": "^2.0.8", + "@libp2p/interface": "^0.1.6", + "@libp2p/interface-internal": "^0.1.9", + "@libp2p/logger": "^3.1.0", + "@libp2p/peer-collections": "^4.0.8", + "@libp2p/peer-id": "^3.0.6", "@multiformats/multiaddr": "^12.1.5", - "@types/sinon": "^10.0.15", + "@types/sinon": "^17.0.0", "abortable-iterator": "^5.0.1", "any-signal": "^4.1.1", "datastore-core": "^9.0.1", - "events": "^3.3.0", "hashlru": "^2.3.0", "interface-datastore": "^8.2.0", "it-all": "^3.0.2", @@ -516,6 +511,7 @@ "it-merge": "^3.0.0", "it-parallel": "^3.0.0", "it-pipe": "^3.0.1", + "it-pushable": "^3.2.1", "it-stream-types": "^2.0.1", "it-take": "^3.0.1", "multiformats": "^12.0.1", @@ -531,14 +527,14 @@ } }, "node_modules/@libp2p/keychain": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@libp2p/keychain/-/keychain-3.0.4.tgz", - "integrity": "sha512-qt9Ttv2lczOpxkbe5YmqwqJx9nty4pWEE9sJ4rY2Ci2k1K+Bt2vMla610BFBzcYq0QqYYqNN4pawFZ33sc3iLg==", - "dependencies": { - "@libp2p/crypto": "^2.0.4", - "@libp2p/interface": "^0.1.2", - "@libp2p/logger": "^3.0.2", - "@libp2p/peer-id": "^3.0.2", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@libp2p/keychain/-/keychain-3.0.8.tgz", + "integrity": "sha512-+WmW9bN9WE0uKqTG3DVk+zsd9Np63lLS+uYRhncwCGTvg0HKXq1t+i4Xd8KbZvUv7UVakE8aae1oMezW3nS+2g==", + "dependencies": { + "@libp2p/crypto": "^2.0.8", + "@libp2p/interface": "^0.1.6", + "@libp2p/logger": "^3.1.0", + "@libp2p/peer-id": "^3.0.6", "interface-datastore": "^8.2.0", "merge-options": "^3.0.4", "sanitize-filename": "^1.6.3", @@ -546,11 +542,11 @@ } }, "node_modules/@libp2p/logger": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-3.0.2.tgz", - "integrity": "sha512-2JtRGBXiGfm1t5XneUIXQ2JusW7QwyYmxsW7hSAYS5J73RQJUicpt5le5obVRt7+OM39ei+nWEuC6Xvm1ugHkw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-3.1.0.tgz", + "integrity": "sha512-qJbJBAhxHVsRBtQSOIkSLi0lskUSFjzE+zm0QvoyxzZKSz+mX41mZLbnofPIVOVauoDQ40dXpe7WDUOq8AbiQQ==", "dependencies": { - "@libp2p/interface": "^0.1.2", + "@libp2p/interface": "^0.1.6", "@multiformats/multiaddr": "^12.1.5", "debug": "^4.3.4", "interface-datastore": "^8.2.0", @@ -558,14 +554,14 @@ } }, "node_modules/@libp2p/mdns": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@libp2p/mdns/-/mdns-9.0.8.tgz", - "integrity": "sha512-RRuMDed11kAeszvSxESFOfMVKwoNOrbm1bLIkaZt/epaLOIXfeyynnQhK5I3vPQc6FHzh+NiGBCtjzKlDj0J3g==", - "dependencies": { - "@libp2p/interface": "^0.1.2", - "@libp2p/logger": "^3.0.2", - "@libp2p/peer-id": "^3.0.2", - "@libp2p/utils": "^4.0.3", + "version": "9.0.14", + "resolved": "https://registry.npmjs.org/@libp2p/mdns/-/mdns-9.0.14.tgz", + "integrity": "sha512-kS+hEGnA4X3AUknn6N/RiUu72AomiYyD0mwHtyPdcTmYYI6VNKWkniS95wQKXMSaHk+pEN7NAugTXJf478jkRg==", + "dependencies": { + "@libp2p/interface": "^0.1.6", + "@libp2p/logger": "^3.1.0", + "@libp2p/peer-id": "^3.0.6", + "@libp2p/utils": "^4.0.7", "@multiformats/multiaddr": "^12.1.5", "@types/multicast-dns": "^7.2.1", "dns-packet": "^5.4.0", @@ -573,12 +569,12 @@ } }, "node_modules/@libp2p/mplex": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@libp2p/mplex/-/mplex-9.0.6.tgz", - "integrity": "sha512-MlfJ7V/mQwLKQtVZJrnWHcPsvvYnY5sUSiO1+rRuYQvmXxy2iFdtm7peAhlsL6a5hTdIAJjPdURBlNSVBxaF4A==", + "version": "9.0.12", + "resolved": "https://registry.npmjs.org/@libp2p/mplex/-/mplex-9.0.12.tgz", + "integrity": "sha512-ll+fsz9zJ9OW3Z14hN4uh5JDQWIfudp2HTsSKoBiiFnKNY58tMH01iijNtHXGyGiVPmFCPeJf01oPlx0j9OgDQ==", "dependencies": { - "@libp2p/interface": "^0.1.2", - "@libp2p/logger": "^3.0.2", + "@libp2p/interface": "^0.1.6", + "@libp2p/logger": "^3.1.0", "abortable-iterator": "^5.0.1", "benchmark": "^2.1.4", "it-batched-bytes": "^2.0.2", @@ -591,12 +587,12 @@ } }, "node_modules/@libp2p/multistream-select": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-4.0.2.tgz", - "integrity": "sha512-Ss3kPD+1Z8RFLUT+oN9I2ynEtp/Yj2+rOngU1XjIxustg1nt5lq0kk9hvWJyBexzmuML0xCknNjUXovpRbFPgQ==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-4.0.10.tgz", + "integrity": "sha512-f0BDv96L2yF9SZ0YXdg41JcGWwPBGZNAoeFGkna38SMFtj00NQWBOwAjqVdhrYVF58ymB0Ci6OfMzYv1XHVj/A==", "dependencies": { - "@libp2p/interface": "^0.1.2", - "@libp2p/logger": "^3.0.2", + "@libp2p/interface": "^0.1.6", + "@libp2p/logger": "^3.1.0", "abortable-iterator": "^5.0.1", "it-first": "^3.0.1", "it-handshake": "^4.1.3", @@ -606,38 +602,53 @@ "it-pushable": "^3.2.0", "it-reader": "^6.0.1", "it-stream-types": "^2.0.1", + "uint8-varint": "^2.0.0", "uint8arraylist": "^2.4.3", "uint8arrays": "^4.0.6" } }, "node_modules/@libp2p/peer-collections": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-4.0.4.tgz", - "integrity": "sha512-MGuTtt6a2TLUlr4b1dUAOd43SAe/lxLZX3E9iYeRqI9IWzw6cwvvOzGNTYwAlkBpASCmm0aJpGXDA/r6lpIzMQ==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-4.0.11.tgz", + "integrity": "sha512-4bHtIm3VfYMm2laRuebkswQukgQmWTUbExnu1sD5vcbI186aCZ7P56QjWyOIMn3XflIoZ0cx9AXX/WuDQSolDA==", "dependencies": { - "@libp2p/interface": "^0.1.2", - "@libp2p/peer-id": "^3.0.2" + "@libp2p/interface": "^0.1.6", + "@libp2p/peer-id": "^3.0.6" } }, "node_modules/@libp2p/peer-id": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-3.0.2.tgz", - "integrity": "sha512-133qGXu9UBiqsYm7nBDJaAh4eiKe79DPLKF+/aRu0Z7gKcX7I0+LewEky4kBt3olhYQSF1CAnJIzD8Dmsn40Yw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-3.0.6.tgz", + "integrity": "sha512-iN1Ia5gH2U1V/GOVRmLHmVY6fblxzrOPUoZrMYjHl/K4s+AiI7ym/527WDeQvhQpD7j3TfDwcAYforD2dLGpLw==", "dependencies": { - "@libp2p/interface": "^0.1.2", + "@libp2p/interface": "^0.1.6", "multiformats": "^12.0.1", "uint8arrays": "^4.0.6" } }, - "node_modules/@libp2p/peer-record": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-6.0.5.tgz", - "integrity": "sha512-+nJpi9L6X+cYdu1UWL/W36+3pmL0Ev7/HpX9J/bESsICP8rSN2N1aFlekqJq2v7TW4dJ3VJO7TcMZCcKcLhZCQ==", + "node_modules/@libp2p/peer-id-factory": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-3.0.11.tgz", + "integrity": "sha512-BmXKgeyAGezPyoY/uni95t439+AE0eqEKMxjfkfy2Hv/LcJ9gdR3zjRl7Hzci1O12b+yeVFtYVU8DZtBCcsZjQ==", "dependencies": { - "@libp2p/crypto": "^2.0.4", - "@libp2p/interface": "^0.1.2", - "@libp2p/peer-id": "^3.0.2", - "@libp2p/utils": "^4.0.3", + "@libp2p/crypto": "^2.0.8", + "@libp2p/interface": "^0.1.6", + "@libp2p/peer-id": "^3.0.6", + "multiformats": "^12.0.1", + "protons-runtime": "^5.0.0", + "uint8arraylist": "^2.4.3", + "uint8arrays": "^4.0.6" + } + }, + "node_modules/@libp2p/peer-record": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-6.0.12.tgz", + "integrity": "sha512-8IItsbcPeIaFC5QMZD+gGl/dDbwLjE9nrmL7ZAOvMwcfZx+2AVZPN/6nubahO/wQrchpvBYiK3TxaWGnOH8sIA==", + "dependencies": { + "@libp2p/crypto": "^2.0.8", + "@libp2p/interface": "^0.1.6", + "@libp2p/peer-id": "^3.0.6", + "@libp2p/utils": "^4.0.7", "@multiformats/multiaddr": "^12.1.5", "protons-runtime": "^5.0.0", "uint8-varint": "^2.0.0", @@ -646,16 +657,16 @@ } }, "node_modules/@libp2p/peer-store": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-9.0.5.tgz", - "integrity": "sha512-LUYN2i58F/eVvrFEYCIfArMNZaCGy2J2xSG9kd3/iHZqHAyLkuQHnYfHdoJLSUJFcS2pZsFo+c9atVvlOD7w5A==", - "dependencies": { - "@libp2p/interface": "^0.1.2", - "@libp2p/logger": "^3.0.2", - "@libp2p/peer-collections": "^4.0.4", - "@libp2p/peer-id": "^3.0.2", - "@libp2p/peer-id-factory": "^3.0.4", - "@libp2p/peer-record": "^6.0.5", + "version": "9.0.12", + "resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-9.0.12.tgz", + "integrity": "sha512-rYpUUhvDI7GTfMFWNJ+HQoEOAVOxfp3t0bgJWLvUFKNtULojEk0znKHa6da7hX2KE06wM7ZEMfF23jZCmrwk1g==", + "dependencies": { + "@libp2p/interface": "^0.1.6", + "@libp2p/logger": "^3.1.0", + "@libp2p/peer-collections": "^4.0.8", + "@libp2p/peer-id": "^3.0.6", + "@libp2p/peer-id-factory": "^3.0.8", + "@libp2p/peer-record": "^6.0.9", "@multiformats/multiaddr": "^12.1.5", "interface-datastore": "^8.2.0", "it-all": "^3.0.2", @@ -666,31 +677,17 @@ "uint8arrays": "^4.0.6" } }, - "node_modules/@libp2p/peer-store/node_modules/@libp2p/peer-id-factory": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-3.0.4.tgz", - "integrity": "sha512-9xpKb1UdAhKVmPHy/jssOnyJkuyyyIeP5tO3HlaiBQNtDZU66UMQORnEUD6HdYHKfBRInah2JHxTCtm2nUhGcw==", - "dependencies": { - "@libp2p/crypto": "^2.0.4", - "@libp2p/interface": "^0.1.2", - "@libp2p/peer-id": "^3.0.2", - "multiformats": "^12.0.1", - "protons-runtime": "^5.0.0", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^4.0.6" - } - }, "node_modules/@libp2p/pubsub": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@libp2p/pubsub/-/pubsub-8.0.6.tgz", - "integrity": "sha512-0M53aqvSNHVkMgiyZwyvyrOKP95mJx2ddDedGNYSK8tkvd8Ap98qT1feyI9iT13ihFadkSVJPK5urOLSGLX+3Q==", - "dependencies": { - "@libp2p/crypto": "^2.0.4", - "@libp2p/interface": "^0.1.2", - "@libp2p/interface-internal": "^0.1.5", - "@libp2p/logger": "^3.0.2", - "@libp2p/peer-collections": "^4.0.4", - "@libp2p/peer-id": "^3.0.2", + "version": "8.0.14", + "resolved": "https://registry.npmjs.org/@libp2p/pubsub/-/pubsub-8.0.14.tgz", + "integrity": "sha512-hkNqUC6ef96WxqYFnmG0CKy9Vvb0mum5IrllUypwWiV0iK1zj8PcqO8oyTjLl/waLG56Kuy8CAjahnMov+U3dw==", + "dependencies": { + "@libp2p/crypto": "^2.0.8", + "@libp2p/interface": "^0.1.6", + "@libp2p/interface-internal": "^0.1.9", + "@libp2p/logger": "^3.1.0", + "@libp2p/peer-collections": "^4.0.8", + "@libp2p/peer-id": "^3.0.6", "abortable-iterator": "^5.0.1", "it-length-prefixed": "^9.0.1", "it-pipe": "^3.0.1", @@ -702,27 +699,27 @@ } }, "node_modules/@libp2p/tcp": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/@libp2p/tcp/-/tcp-8.0.7.tgz", - "integrity": "sha512-VYfIlxxLr7my8qi/vMenMfYQFNCGT63m5/PnM2lMG1THxswT8uKov3XMEWRHFnOCem6WkVBZgw+OrGyEetPcrw==", + "version": "8.0.13", + "resolved": "https://registry.npmjs.org/@libp2p/tcp/-/tcp-8.0.13.tgz", + "integrity": "sha512-uN8p1gONoD7z8NteDE3a7F8yy9HblC3b9zX39L2/ztrqeAPiqRfGpBhXK+osXXj07jjnjhSNLBSVNHJNSmADRg==", "dependencies": { - "@libp2p/interface": "^0.1.2", - "@libp2p/logger": "^3.0.2", - "@libp2p/utils": "^4.0.3", + "@libp2p/interface": "^0.1.6", + "@libp2p/logger": "^3.1.0", + "@libp2p/utils": "^4.0.7", "@multiformats/mafmt": "^12.1.2", "@multiformats/multiaddr": "^12.1.5", - "@types/sinon": "^10.0.15", + "@types/sinon": "^17.0.0", "stream-to-it": "^0.2.2" } }, "node_modules/@libp2p/utils": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-4.0.3.tgz", - "integrity": "sha512-jusH8y4G9YluKRm63EPIiN9fNv0hVtfKY7O0nsLI14o0/W/WJhTsQWm+kPOfvoAgCIqAVrxefBqAmFGiiYPnvg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-4.0.7.tgz", + "integrity": "sha512-xA6mS4II14870/DmmI3GFRWdNwHeOd2QV3ltatpdVmeEQpdn82jjtCzqn45AChjCugFOskOthXnQiWp+FvdKZg==", "dependencies": { "@chainsafe/is-ip": "^2.0.2", - "@libp2p/interface": "^0.1.2", - "@libp2p/logger": "^3.0.2", + "@libp2p/interface": "^0.1.6", + "@libp2p/logger": "^3.1.0", "@multiformats/multiaddr": "^12.1.5", "@multiformats/multiaddr-matcher": "^1.0.1", "is-loopback-addr": "^2.0.1", @@ -732,18 +729,20 @@ } }, "node_modules/@libp2p/webrtc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@libp2p/webrtc/-/webrtc-3.2.0.tgz", - "integrity": "sha512-hV2lqEVpinIgXcsRjTmn4lYsx7BjzH3kS8V4YQF4Vqyih0xQNxjNNkayiLAXDBsHOSbU1KsQsu8eUhyAdJyciw==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/@libp2p/webrtc/-/webrtc-3.2.11.tgz", + "integrity": "sha512-djp1pgtmIT3zeRaTGMbr6Jl3N7qwcaYlgaNqU3hH5ys/+2SVRIDMwBcsSOuv3414fCM7n0SCRjk3QBYxk0WKNg==", "dependencies": { "@chainsafe/libp2p-noise": "^13.0.0", - "@libp2p/interface": "^0.1.2", - "@libp2p/interface-internal": "^0.1.5", - "@libp2p/logger": "^3.0.2", - "@libp2p/peer-id": "^3.0.2", + "@libp2p/interface": "^0.1.6", + "@libp2p/interface-internal": "^0.1.9", + "@libp2p/logger": "^3.1.0", + "@libp2p/peer-id": "^3.0.6", "@multiformats/mafmt": "^12.1.2", "@multiformats/multiaddr": "^12.1.5", + "@multiformats/multiaddr-matcher": "^1.0.1", "abortable-iterator": "^5.0.1", + "any-signal": "^4.1.1", "detect-browser": "^5.3.0", "it-length-prefixed": "^9.0.1", "it-pipe": "^3.0.1", @@ -753,22 +752,24 @@ "it-to-buffer": "^4.0.2", "multiformats": "^12.0.1", "multihashes": "^4.0.3", - "node-datachannel": "^0.4.3", + "node-datachannel": "^0.5.0-dev", "p-defer": "^4.0.0", "p-event": "^6.0.0", + "p-timeout": "^6.1.2", "protons-runtime": "^5.0.0", + "race-signal": "^1.0.0", "uint8arraylist": "^2.4.3", "uint8arrays": "^4.0.6" } }, "node_modules/@libp2p/websockets": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-7.0.7.tgz", - "integrity": "sha512-DQvxq9V2Q7VoF5S4j9zZ0VX8QdzdjnLmUNCZ0Ux4IIQ5TU9RAZAvgbYBeIlQEQwL1iK9vFzjMhcSfYZTpTVKFA==", + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-7.0.13.tgz", + "integrity": "sha512-frRvTtk7++bJ/JLEX8iulpHAMMkEfroWDn2RhiY24SMPwkHWs3CZwm0P6nQ6p0YHft3OQfwPZaqBu0KItxnVHQ==", "dependencies": { - "@libp2p/interface": "^0.1.2", - "@libp2p/logger": "^3.0.2", - "@libp2p/utils": "^4.0.3", + "@libp2p/interface": "^0.1.6", + "@libp2p/logger": "^3.1.0", + "@libp2p/utils": "^4.0.7", "@multiformats/mafmt": "^12.1.2", "@multiformats/multiaddr": "^12.1.5", "@multiformats/multiaddr-to-uri": "^9.0.2", @@ -781,14 +782,14 @@ } }, "node_modules/@libp2p/webtransport": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@libp2p/webtransport/-/webtransport-3.1.0.tgz", - "integrity": "sha512-Au4gEnAM3BaS8e8/Gt6IR/lXEWIU4OxFXGXCfAK6NSTFGw8W0//DcjSXrjg+eDsfBCYdhZL49gvgvo7Lh75YFA==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@libp2p/webtransport/-/webtransport-3.1.10.tgz", + "integrity": "sha512-8bdnqs9Jz1D5Wy+VDMluW9HsD2A712PZMmYTbBXEG4BabDWHI6l2UdJDt4zkaP1rqn+o9YooipA0wZU34MuiSA==", "dependencies": { "@chainsafe/libp2p-noise": "^13.0.0", - "@libp2p/interface": "^0.1.2", - "@libp2p/logger": "^3.0.2", - "@libp2p/peer-id": "^3.0.2", + "@libp2p/interface": "^0.1.6", + "@libp2p/logger": "^3.1.0", + "@libp2p/peer-id": "^3.0.6", "@multiformats/multiaddr": "^12.1.5", "@multiformats/multiaddr-matcher": "^1.0.1", "it-stream-types": "^2.0.1", @@ -811,27 +812,23 @@ } }, "node_modules/@multiformats/multiaddr": { - "version": "12.1.7", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.7.tgz", - "integrity": "sha512-MZRj+uUrtF2WqgByrsPolrdyPDSFstw7Fe0ewabWgWl27fcOmfDOSrEt2aUVkSzapXbyCG7JQh0QvimmTF4aMA==", + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.11.tgz", + "integrity": "sha512-CWG9kETEGTTMdr1T+/JEuMwFld3r3fHNP8LkLoUcLvHRy6yr8sWdotVGEDNEdDO/vrKhuD7bQBws3xMSMMyylg==", "dependencies": { "@chainsafe/is-ip": "^2.0.1", "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^0.1.1", - "dns-over-http-resolver": "^2.1.0", + "@libp2p/interface": "^1.0.0", + "dns-over-http-resolver": "3.0.0", "multiformats": "^12.0.1", "uint8-varint": "^2.0.1", "uint8arrays": "^4.0.2" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.6.0" } }, "node_modules/@multiformats/multiaddr-matcher": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-1.0.2.tgz", - "integrity": "sha512-YzviFV31TsDbatWhEmkNnpWC82F/Wfc+alaOBT94Lk6KJeKKfzsaLhYPsjyhElXiUtCKvB3p5e4+WsE5ZYy1kg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-1.1.0.tgz", + "integrity": "sha512-B/QbKpAxaHYVXFnbTdTgYqPDxmqoF2RYffwYoOv1MWfi2vBCZLdzmEKUBKv6fQr6s+LJFSHn2j2vczmwMFCQIA==", "dependencies": { "@chainsafe/is-ip": "^2.0.1", "@multiformats/multiaddr": "^12.0.0", @@ -850,10 +847,22 @@ "npm": ">=7.0.0" } }, + "node_modules/@multiformats/multiaddr/node_modules/@libp2p/interface": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.0.2.tgz", + "integrity": "sha512-z/3Yyg+7cVyzRXwzdrDkJd7YmNaLE9iZjQaixo5luI/n9uk5OFFjb9ulAsNqpq8V1xylCo2DXIC7f94KClwzVw==", + "dependencies": { + "@multiformats/multiaddr": "^12.1.10", + "it-pushable": "^3.2.1", + "it-stream-types": "^2.0.1", + "multiformats": "^12.1.3", + "uint8arraylist": "^2.4.3" + } + }, "node_modules/@multiformats/murmur3": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@multiformats/murmur3/-/murmur3-2.1.6.tgz", - "integrity": "sha512-kpJDN+o8B0gJaaqbdV/spIVPj35hqew4rEw8VzPmcITsLpHSgP8pJDeaVaGGVeX/UM8n4IGctLCxw7PBfVks+A==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@multiformats/murmur3/-/murmur3-2.1.7.tgz", + "integrity": "sha512-Yf0UpAaONjed+8PTt5NM/GG4Z4Ai4m1qfT7bqevjnkwRQ12K+0jxtRomirz+VJx4PokpA2St1ZSD1iMkZTqPRQ==", "dependencies": { "multiformats": "^12.0.1", "murmurhash3js-revisited": "^3.0.0" @@ -864,28 +873,28 @@ } }, "node_modules/@noble/ciphers": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.3.0.tgz", - "integrity": "sha512-ldbrnOjmNRwFdXcTM6uXDcxpMIFrbzAWNnpBPp4oTJTFF0XByGD6vf45WrehZGXRQTRVV+Zm8YP+EgEf+e4cWA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.4.1.tgz", + "integrity": "sha512-QCOA9cgf3Rc33owG0AYBB9wszz+Ul2kramWN8tXG44Gyciud/tbkEqvxRF/IpqQaBpRBNi9f4jdNxqB2CQCIXg==", "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", "dependencies": { - "@noble/hashes": "1.3.2" + "@noble/hashes": "1.3.3" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", "engines": { "node": ">= 16" }, @@ -1007,200 +1016,239 @@ "node": ">=16" } }, - "node_modules/@polkadot/keyring": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-12.5.1.tgz", - "integrity": "sha512-u6b+Q7wI6WY/vwmJS9uUHy/5hKZ226nTlVNmxjkj9GvrRsQvUSwS94163yHPJwiZJiIv5xK5m0rwCMyoYu+wjA==", - "dependencies": { - "@polkadot/util": "12.5.1", - "@polkadot/util-crypto": "12.5.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@polkadot/util": "12.5.1", - "@polkadot/util-crypto": "12.5.1" - } - }, - "node_modules/@polkadot/networks": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-12.5.1.tgz", - "integrity": "sha512-PP6UUdzz6iHHZH4q96cUEhTcydHj16+61sqeaYEJSF6Q9iY+5WVWQ26+rdjmre/EBdrMQkSS/CKy73mO5z/JkQ==", - "dependencies": { - "@polkadot/util": "12.5.1", - "@substrate/ss58-registry": "^1.43.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@polkadot/rpc-augment": { + "node_modules/@polkadot/api/node_modules/@polkadot/rpc-provider": { "version": "10.9.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-10.9.1.tgz", - "integrity": "sha512-MaLHkNlyqN20ZRYr6uNd1BZr1OsrnX9qLAmsl0mcrri1vPGRH6VHjfFH1RBLkikpWD82v17g0l2hLwdV1ZHMcw==", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-10.9.1.tgz", + "integrity": "sha512-4QzT2QzD+320+eT6b79sGAA85Tt3Bb8fQvse4r5Mom2iiBd2SO81vOhxSAOaIe4GUsw25VzFJmsbe7+OObItdg==", "dependencies": { - "@polkadot/rpc-core": "10.9.1", + "@polkadot/keyring": "^12.3.1", "@polkadot/types": "10.9.1", - "@polkadot/types-codec": "10.9.1", + "@polkadot/types-support": "10.9.1", "@polkadot/util": "^12.3.1", + "@polkadot/util-crypto": "^12.3.1", + "@polkadot/x-fetch": "^12.3.1", + "@polkadot/x-global": "^12.3.1", + "@polkadot/x-ws": "^12.3.1", + "eventemitter3": "^5.0.1", + "mock-socket": "^9.2.1", + "nock": "^13.3.1", "tslib": "^2.5.3" }, "engines": { "node": ">=16" + }, + "optionalDependencies": { + "@substrate/connect": "0.7.26" } }, - "node_modules/@polkadot/rpc-core": { + "node_modules/@polkadot/api/node_modules/@polkadot/types-support": { "version": "10.9.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-10.9.1.tgz", - "integrity": "sha512-ZtA8B8SfXSAwVkBlCcKRHw0eSM7ec/sbiNOM5GasXPeRujUgT7lOwSH2GbUZSqe9RfRDMp6DvO9c2JoGc3LLWw==", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-10.9.1.tgz", + "integrity": "sha512-XsieuLDsszvMZQlleacQBfx07i/JkwQV/UxH9q8Hz7Okmaz9pEVEW1h3ka2/cPuC7a4l32JhaORBUYshBZNdJg==", "dependencies": { - "@polkadot/rpc-augment": "10.9.1", - "@polkadot/rpc-provider": "10.9.1", - "@polkadot/types": "10.9.1", "@polkadot/util": "^12.3.1", - "rxjs": "^7.8.1", "tslib": "^2.5.3" }, "engines": { "node": ">=16" } }, - "node_modules/@polkadot/rpc-provider": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-10.9.1.tgz", - "integrity": "sha512-4QzT2QzD+320+eT6b79sGAA85Tt3Bb8fQvse4r5Mom2iiBd2SO81vOhxSAOaIe4GUsw25VzFJmsbe7+OObItdg==", + "node_modules/@polkadot/api/node_modules/@substrate/connect": { + "version": "0.7.26", + "resolved": "https://registry.npmjs.org/@substrate/connect/-/connect-0.7.26.tgz", + "integrity": "sha512-uuGSiroGuKWj1+38n1kY5HReer5iL9bRwPCzuoLtqAOmI1fGI0hsSI2LlNQMAbfRgr7VRHXOk5MTuQf5ulsFRw==", + "optional": true, "dependencies": { - "@polkadot/keyring": "^12.3.1", - "@polkadot/types": "10.9.1", - "@polkadot/types-support": "10.9.1", - "@polkadot/util": "^12.3.1", - "@polkadot/util-crypto": "^12.3.1", - "@polkadot/x-fetch": "^12.3.1", - "@polkadot/x-global": "^12.3.1", - "@polkadot/x-ws": "^12.3.1", - "eventemitter3": "^5.0.1", - "mock-socket": "^9.2.1", - "nock": "^13.3.1", - "tslib": "^2.5.3" + "@substrate/connect-extension-protocol": "^1.0.1", + "eventemitter3": "^4.0.7", + "smoldot": "1.0.4" + } + }, + "node_modules/@polkadot/api/node_modules/@substrate/connect/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "optional": true + }, + "node_modules/@polkadot/api/node_modules/smoldot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-1.0.4.tgz", + "integrity": "sha512-N3TazI1C4GGrseFH/piWyZCCCRJTRx2QhDfrUKRT4SzILlW5m8ayZ3QTKICcz1C/536T9cbHHJyP7afxI6Mi1A==", + "optional": true, + "dependencies": { + "pako": "^2.0.4", + "ws": "^8.8.1" + } + }, + "node_modules/@polkadot/keyring": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-12.6.1.tgz", + "integrity": "sha512-cicTctZr5Jy5vgNT2FsNiKoTZnz6zQkgDoIYv79NI+p1Fhwc9C+DN/iMCnk3Cm9vR2gSAd2fSV+Y5iKVDhAmUw==", + "dependencies": { + "@polkadot/util": "12.6.1", + "@polkadot/util-crypto": "12.6.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=16" + "node": ">=18" }, - "optionalDependencies": { - "@substrate/connect": "0.7.26" + "peerDependencies": { + "@polkadot/util": "12.6.1", + "@polkadot/util-crypto": "12.6.1" } }, - "node_modules/@polkadot/typegen": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-10.9.1.tgz", - "integrity": "sha512-SbG9U8/POyY8QwQUp70qzTnYsRxc6Rrjt4wzIWsBKmzVRy0i19O23EXSUo+81ukOBiLZj551GAJwRa3YBpdR+A==", - "dev": true, + "node_modules/@polkadot/keyring/node_modules/@polkadot/util": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", + "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", "dependencies": { - "@polkadot/api": "10.9.1", - "@polkadot/api-augment": "10.9.1", - "@polkadot/rpc-augment": "10.9.1", - "@polkadot/rpc-provider": "10.9.1", - "@polkadot/types": "10.9.1", - "@polkadot/types-augment": "10.9.1", - "@polkadot/types-codec": "10.9.1", - "@polkadot/types-create": "10.9.1", - "@polkadot/types-support": "10.9.1", - "@polkadot/util": "^12.3.1", - "@polkadot/util-crypto": "^12.3.1", - "@polkadot/x-ws": "^12.3.1", - "handlebars": "^4.7.7", - "tslib": "^2.5.3", - "yargs": "^17.7.2" + "@polkadot/x-bigint": "12.6.1", + "@polkadot/x-global": "12.6.1", + "@polkadot/x-textdecoder": "12.6.1", + "@polkadot/x-textencoder": "12.6.1", + "@types/bn.js": "^5.1.5", + "bn.js": "^5.2.1", + "tslib": "^2.6.2" }, - "bin": { - "polkadot-types-chain-info": "scripts/polkadot-types-chain-info.mjs", - "polkadot-types-from-chain": "scripts/polkadot-types-from-chain.mjs", - "polkadot-types-from-defs": "scripts/polkadot-types-from-defs.mjs", - "polkadot-types-internal-interfaces": "scripts/polkadot-types-internal-interfaces.mjs", - "polkadot-types-internal-metadata": "scripts/polkadot-types-internal-metadata.mjs" + "engines": { + "node": ">=18" + } + }, + "node_modules/@polkadot/keyring/node_modules/@polkadot/x-textdecoder": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", + "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "dependencies": { + "@polkadot/x-global": "12.6.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=16" + "node": ">=18" } }, - "node_modules/@polkadot/types": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-10.9.1.tgz", - "integrity": "sha512-AG33i2ZGGfq7u+5rkAdGrXAQHHl844/Yv+junH5ZzX69xiCoWO1bH/yzDUNBdpki2GlACWvF9nLYh3F2tVF93w==", + "node_modules/@polkadot/keyring/node_modules/@polkadot/x-textencoder": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", + "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", "dependencies": { - "@polkadot/keyring": "^12.3.1", - "@polkadot/types-augment": "10.9.1", - "@polkadot/types-codec": "10.9.1", - "@polkadot/types-create": "10.9.1", - "@polkadot/util": "^12.3.1", - "@polkadot/util-crypto": "^12.3.1", - "rxjs": "^7.8.1", - "tslib": "^2.5.3" + "@polkadot/x-global": "12.6.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=16" + "node": ">=18" } }, - "node_modules/@polkadot/types-augment": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-10.9.1.tgz", - "integrity": "sha512-OY9/jTMFRFqYdkUnfcGwqMLC64A0Q25bjvCuVQCVjsPFKE3wl0Kt5rNT01eV2UmLXrR6fY0xWbR2w80bLA7CIQ==", + "node_modules/@polkadot/networks": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-12.6.1.tgz", + "integrity": "sha512-pzyirxTYAnsx+6kyLYcUk26e4TLz3cX6p2KhTgAVW77YnpGX5VTKTbYykyXC8fXFd/migeQsLaa2raFN47mwoA==", "dependencies": { - "@polkadot/types": "10.9.1", - "@polkadot/types-codec": "10.9.1", - "@polkadot/util": "^12.3.1", - "tslib": "^2.5.3" + "@polkadot/util": "12.6.1", + "@substrate/ss58-registry": "^1.44.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=16" + "node": ">=18" } }, - "node_modules/@polkadot/types-codec": { + "node_modules/@polkadot/networks/node_modules/@polkadot/util": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", + "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "dependencies": { + "@polkadot/x-bigint": "12.6.1", + "@polkadot/x-global": "12.6.1", + "@polkadot/x-textdecoder": "12.6.1", + "@polkadot/x-textencoder": "12.6.1", + "@types/bn.js": "^5.1.5", + "bn.js": "^5.2.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@polkadot/networks/node_modules/@polkadot/x-textdecoder": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", + "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "dependencies": { + "@polkadot/x-global": "12.6.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@polkadot/networks/node_modules/@polkadot/x-textencoder": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", + "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "dependencies": { + "@polkadot/x-global": "12.6.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@polkadot/rpc-augment": { "version": "10.9.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-10.9.1.tgz", - "integrity": "sha512-mJ5OegKGraY1FLvEa8FopRCr3pQrhDkcn5RNOjmgJQozENVeRaxhk0NwxYz7IojFvSDnKnc6lNQfKaaSe5pLHg==", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-10.9.1.tgz", + "integrity": "sha512-MaLHkNlyqN20ZRYr6uNd1BZr1OsrnX9qLAmsl0mcrri1vPGRH6VHjfFH1RBLkikpWD82v17g0l2hLwdV1ZHMcw==", "dependencies": { + "@polkadot/rpc-core": "10.9.1", + "@polkadot/types": "10.9.1", + "@polkadot/types-codec": "10.9.1", "@polkadot/util": "^12.3.1", - "@polkadot/x-bigint": "^12.3.1", "tslib": "^2.5.3" }, "engines": { "node": ">=16" } }, - "node_modules/@polkadot/types-create": { + "node_modules/@polkadot/rpc-core": { "version": "10.9.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-10.9.1.tgz", - "integrity": "sha512-OVz50MGTTuiuVnRP/zAx4CTuLioc0hsiwNwqN2lNhmIJGtnQ4Vy/7mQRsIWehiYz6g0Vzzm5B3qWkTXO1NSN5w==", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-10.9.1.tgz", + "integrity": "sha512-ZtA8B8SfXSAwVkBlCcKRHw0eSM7ec/sbiNOM5GasXPeRujUgT7lOwSH2GbUZSqe9RfRDMp6DvO9c2JoGc3LLWw==", "dependencies": { - "@polkadot/types-codec": "10.9.1", + "@polkadot/rpc-augment": "10.9.1", + "@polkadot/rpc-provider": "10.9.1", + "@polkadot/types": "10.9.1", "@polkadot/util": "^12.3.1", + "rxjs": "^7.8.1", "tslib": "^2.5.3" }, "engines": { "node": ">=16" } }, - "node_modules/@polkadot/types-known": { + "node_modules/@polkadot/rpc-core/node_modules/@polkadot/rpc-provider": { "version": "10.9.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-10.9.1.tgz", - "integrity": "sha512-zCMVWc4pJtkbMFPu72bD4IhvV/gkHXPX3C5uu92WdmCfnn0vEIEsMKWlVXVVvQQZKAqvs/awpqIfrUtEViOGEA==", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-10.9.1.tgz", + "integrity": "sha512-4QzT2QzD+320+eT6b79sGAA85Tt3Bb8fQvse4r5Mom2iiBd2SO81vOhxSAOaIe4GUsw25VzFJmsbe7+OObItdg==", "dependencies": { - "@polkadot/networks": "^12.3.1", + "@polkadot/keyring": "^12.3.1", "@polkadot/types": "10.9.1", - "@polkadot/types-codec": "10.9.1", - "@polkadot/types-create": "10.9.1", + "@polkadot/types-support": "10.9.1", "@polkadot/util": "^12.3.1", + "@polkadot/util-crypto": "^12.3.1", + "@polkadot/x-fetch": "^12.3.1", + "@polkadot/x-global": "^12.3.1", + "@polkadot/x-ws": "^12.3.1", + "eventemitter3": "^5.0.1", + "mock-socket": "^9.2.1", + "nock": "^13.3.1", "tslib": "^2.5.3" }, "engines": { "node": ">=16" + }, + "optionalDependencies": { + "@substrate/connect": "0.7.26" } }, - "node_modules/@polkadot/types-support": { + "node_modules/@polkadot/rpc-core/node_modules/@polkadot/types-support": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-10.9.1.tgz", "integrity": "sha512-XsieuLDsszvMZQlleacQBfx07i/JkwQV/UxH9q8Hz7Okmaz9pEVEW1h3ka2/cPuC7a4l32JhaORBUYshBZNdJg==", @@ -1212,1526 +1260,1507 @@ "node": ">=16" } }, - "node_modules/@polkadot/util": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.5.1.tgz", - "integrity": "sha512-fDBZL7D4/baMG09Qowseo884m3QBzErGkRWNBId1UjWR99kyex+cIY9fOSzmuQxo6nLdJlLHw1Nz2caN3+Bq0A==", + "node_modules/@polkadot/rpc-core/node_modules/@substrate/connect": { + "version": "0.7.26", + "resolved": "https://registry.npmjs.org/@substrate/connect/-/connect-0.7.26.tgz", + "integrity": "sha512-uuGSiroGuKWj1+38n1kY5HReer5iL9bRwPCzuoLtqAOmI1fGI0hsSI2LlNQMAbfRgr7VRHXOk5MTuQf5ulsFRw==", + "optional": true, "dependencies": { - "@polkadot/x-bigint": "12.5.1", - "@polkadot/x-global": "12.5.1", - "@polkadot/x-textdecoder": "12.5.1", - "@polkadot/x-textencoder": "12.5.1", - "@types/bn.js": "^5.1.1", - "bn.js": "^5.2.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16" + "@substrate/connect-extension-protocol": "^1.0.1", + "eventemitter3": "^4.0.7", + "smoldot": "1.0.4" } }, - "node_modules/@polkadot/util-crypto": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-12.5.1.tgz", - "integrity": "sha512-Y8ORbMcsM/VOqSG3DgqutRGQ8XXK+X9M3C8oOEI2Tji65ZsXbh9Yh+ryPLM0oBp/9vqOXjkLgZJbbVuQceOw0A==", + "node_modules/@polkadot/rpc-core/node_modules/@substrate/connect/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "optional": true + }, + "node_modules/@polkadot/rpc-core/node_modules/smoldot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-1.0.4.tgz", + "integrity": "sha512-N3TazI1C4GGrseFH/piWyZCCCRJTRx2QhDfrUKRT4SzILlW5m8ayZ3QTKICcz1C/536T9cbHHJyP7afxI6Mi1A==", + "optional": true, "dependencies": { - "@noble/curves": "^1.2.0", - "@noble/hashes": "^1.3.2", - "@polkadot/networks": "12.5.1", - "@polkadot/util": "12.5.1", - "@polkadot/wasm-crypto": "^7.2.2", - "@polkadot/wasm-util": "^7.2.2", - "@polkadot/x-bigint": "12.5.1", - "@polkadot/x-randomvalues": "12.5.1", - "@scure/base": "^1.1.3", + "pako": "^2.0.4", + "ws": "^8.8.1" + } + }, + "node_modules/@polkadot/rpc-provider": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-10.11.1.tgz", + "integrity": "sha512-86aDUOnaG42si0jSOAgn6Fs3F3rz57x+iNBK1JpM0PLL2XvmPuoMZL5dZwzqSIey3nVdGJqRYfnFquWuyQpnOQ==", + "dependencies": { + "@polkadot/keyring": "^12.6.1", + "@polkadot/types": "10.11.1", + "@polkadot/types-support": "10.11.1", + "@polkadot/util": "^12.6.1", + "@polkadot/util-crypto": "^12.6.1", + "@polkadot/x-fetch": "^12.6.1", + "@polkadot/x-global": "^12.6.1", + "@polkadot/x-ws": "^12.6.1", + "eventemitter3": "^5.0.1", + "mock-socket": "^9.3.1", + "nock": "^13.3.8", "tslib": "^2.6.2" }, "engines": { - "node": ">=16" + "node": ">=18" }, - "peerDependencies": { - "@polkadot/util": "12.5.1" + "optionalDependencies": { + "@substrate/connect": "0.7.35" } }, - "node_modules/@polkadot/wasm-bridge": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.2.2.tgz", - "integrity": "sha512-CgNENd65DVYtackOVXXRA0D1RPoCv5+77IdBCf7kNqu6LeAnR4nfTI6qjaApUdN1xRweUsQjSH7tu7VjkMOA0A==", + "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/types": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-10.11.1.tgz", + "integrity": "sha512-4uKnzW2GZqNA5qRZpTPJ7z+G/ARTvXI89etv9xXXVttUdfTaYZsMf4rMuMThOAE/mAUn70LoH0JKthZLwzVgNQ==", "dependencies": { - "@polkadot/wasm-util": "7.2.2", - "tslib": "^2.6.1" + "@polkadot/keyring": "^12.6.1", + "@polkadot/types-augment": "10.11.1", + "@polkadot/types-codec": "10.11.1", + "@polkadot/types-create": "10.11.1", + "@polkadot/util": "^12.6.1", + "@polkadot/util-crypto": "^12.6.1", + "rxjs": "^7.8.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@polkadot/util": "*", - "@polkadot/x-randomvalues": "*" + "node": ">=18" } }, - "node_modules/@polkadot/wasm-crypto": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.2.2.tgz", - "integrity": "sha512-1ZY1rxUTawYm0m1zylvBMFovNIHYgG2v/XoASNp/EMG5c8FQIxCbhJRaTBA983GVq4lN/IAKREKEp9ZbLLqssA==", + "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/types-augment": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-10.11.1.tgz", + "integrity": "sha512-Exd5mMCuSOXXz73iWqy8ocScWTrwAPqHz0Kxpz5OWlAu+5usipMuhjoeaZA803FHQntZh9lHUN31fuc50Exhew==", "dependencies": { - "@polkadot/wasm-bridge": "7.2.2", - "@polkadot/wasm-crypto-asmjs": "7.2.2", - "@polkadot/wasm-crypto-init": "7.2.2", - "@polkadot/wasm-crypto-wasm": "7.2.2", - "@polkadot/wasm-util": "7.2.2", - "tslib": "^2.6.1" + "@polkadot/types": "10.11.1", + "@polkadot/types-codec": "10.11.1", + "@polkadot/util": "^12.6.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@polkadot/util": "*", - "@polkadot/x-randomvalues": "*" + "node": ">=18" } }, - "node_modules/@polkadot/wasm-crypto-asmjs": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.2.2.tgz", - "integrity": "sha512-wKg+cpsWQCTSVhjlHuNeB/184rxKqY3vaklacbLOMbUXieIfuDBav5PJdzS3yeiVE60TpYaHW4iX/5OYHS82gg==", + "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/types-codec": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-10.11.1.tgz", + "integrity": "sha512-B9Fu2hq3cRpJpGPcgfZ8Qi1OSX9u82J46adlbIG95ktoA+70eZ83VS3Zvtt9ACsdLVGETCJfDjSO25XptjhZKQ==", "dependencies": { - "tslib": "^2.6.1" + "@polkadot/util": "^12.6.1", + "@polkadot/x-bigint": "^12.6.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@polkadot/util": "*" + "node": ">=18" } }, - "node_modules/@polkadot/wasm-crypto-init": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.2.2.tgz", - "integrity": "sha512-vD4iPIp9x+SssUIWUenxWLPw4BVIwhXHNMpsV81egK990tvpyIxL205/EF5QRb1mKn8WfWcNFm5tYwwh9NdnnA==", + "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/types-create": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-10.11.1.tgz", + "integrity": "sha512-oeaI185F3XeWSz9/fe//qZ0KsQyE6C6c13WuOa+5cX/Yuz7cSAXawrhl58HRaU+fueaE/ijEHLcuK1sdM6e1JQ==", "dependencies": { - "@polkadot/wasm-bridge": "7.2.2", - "@polkadot/wasm-crypto-asmjs": "7.2.2", - "@polkadot/wasm-crypto-wasm": "7.2.2", - "@polkadot/wasm-util": "7.2.2", - "tslib": "^2.6.1" + "@polkadot/types-codec": "10.11.1", + "@polkadot/util": "^12.6.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@polkadot/util": "*", - "@polkadot/x-randomvalues": "*" + "node": ">=18" } }, - "node_modules/@polkadot/wasm-crypto-wasm": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.2.2.tgz", - "integrity": "sha512-3efoIB6jA3Hhv6k0YIBwCtlC8gCSWCk+R296yIXRLLr3cGN415KM/PO/d1JIXYI64lbrRzWRmZRhllw3jf6Atg==", + "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/util": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", + "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", "dependencies": { - "@polkadot/wasm-util": "7.2.2", - "tslib": "^2.6.1" + "@polkadot/x-bigint": "12.6.1", + "@polkadot/x-global": "12.6.1", + "@polkadot/x-textdecoder": "12.6.1", + "@polkadot/x-textencoder": "12.6.1", + "@types/bn.js": "^5.1.5", + "bn.js": "^5.2.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@polkadot/util": "*" + "node": ">=18" } }, - "node_modules/@polkadot/wasm-util": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.2.2.tgz", - "integrity": "sha512-N/25960ifCc56sBlJZ2h5UBpEPvxBmMLgwYsl7CUuT+ea2LuJW9Xh8VHDN/guYXwmm92/KvuendYkEUykpm/JQ==", + "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/x-textdecoder": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", + "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", "dependencies": { - "tslib": "^2.6.1" + "@polkadot/x-global": "12.6.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@polkadot/util": "*" + "node": ">=18" } }, - "node_modules/@polkadot/x-bigint": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-12.5.1.tgz", - "integrity": "sha512-Fw39eoN9v0sqxSzfSC5awaDVdzojIiE7d1hRSQgVSrES+8whWvtbYMR0qwbVhTuW7DvogHmye41P9xKMlXZysg==", + "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/x-textencoder": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", + "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", "dependencies": { - "@polkadot/x-global": "12.5.1", + "@polkadot/x-global": "12.6.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=16" + "node": ">=18" } }, - "node_modules/@polkadot/x-fetch": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-12.5.1.tgz", - "integrity": "sha512-Bc019lOKCoQJrthiS+H3LwCahGtl5tNnb2HK7xe3DBQIUx9r2HsF/uEngNfMRUFkUYg5TPCLFbEWU8NIREBS1A==", + "node_modules/@polkadot/typegen": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@polkadot/typegen/-/typegen-10.9.1.tgz", + "integrity": "sha512-SbG9U8/POyY8QwQUp70qzTnYsRxc6Rrjt4wzIWsBKmzVRy0i19O23EXSUo+81ukOBiLZj551GAJwRa3YBpdR+A==", + "dev": true, "dependencies": { - "@polkadot/x-global": "12.5.1", - "node-fetch": "^3.3.2", - "tslib": "^2.6.2" + "@polkadot/api": "10.9.1", + "@polkadot/api-augment": "10.9.1", + "@polkadot/rpc-augment": "10.9.1", + "@polkadot/rpc-provider": "10.9.1", + "@polkadot/types": "10.9.1", + "@polkadot/types-augment": "10.9.1", + "@polkadot/types-codec": "10.9.1", + "@polkadot/types-create": "10.9.1", + "@polkadot/types-support": "10.9.1", + "@polkadot/util": "^12.3.1", + "@polkadot/util-crypto": "^12.3.1", + "@polkadot/x-ws": "^12.3.1", + "handlebars": "^4.7.7", + "tslib": "^2.5.3", + "yargs": "^17.7.2" + }, + "bin": { + "polkadot-types-chain-info": "scripts/polkadot-types-chain-info.mjs", + "polkadot-types-from-chain": "scripts/polkadot-types-from-chain.mjs", + "polkadot-types-from-defs": "scripts/polkadot-types-from-defs.mjs", + "polkadot-types-internal-interfaces": "scripts/polkadot-types-internal-interfaces.mjs", + "polkadot-types-internal-metadata": "scripts/polkadot-types-internal-metadata.mjs" }, "engines": { "node": ">=16" } }, - "node_modules/@polkadot/x-global": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.5.1.tgz", - "integrity": "sha512-6K0YtWEg0eXInDOihU5aSzeb1t9TiDdX9ZuRly+58ALSqw5kPZYmQLbzE1d8HWzyXRXK+YH65GtLzfMGqfYHmw==", + "node_modules/@polkadot/typegen/node_modules/@polkadot/rpc-provider": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-10.9.1.tgz", + "integrity": "sha512-4QzT2QzD+320+eT6b79sGAA85Tt3Bb8fQvse4r5Mom2iiBd2SO81vOhxSAOaIe4GUsw25VzFJmsbe7+OObItdg==", + "dev": true, "dependencies": { - "tslib": "^2.6.2" + "@polkadot/keyring": "^12.3.1", + "@polkadot/types": "10.9.1", + "@polkadot/types-support": "10.9.1", + "@polkadot/util": "^12.3.1", + "@polkadot/util-crypto": "^12.3.1", + "@polkadot/x-fetch": "^12.3.1", + "@polkadot/x-global": "^12.3.1", + "@polkadot/x-ws": "^12.3.1", + "eventemitter3": "^5.0.1", + "mock-socket": "^9.2.1", + "nock": "^13.3.1", + "tslib": "^2.5.3" }, "engines": { "node": ">=16" + }, + "optionalDependencies": { + "@substrate/connect": "0.7.26" } }, - "node_modules/@polkadot/x-randomvalues": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-12.5.1.tgz", - "integrity": "sha512-UsMb1d+77EPNjW78BpHjZLIm4TaIpfqq89OhZP/6gDIoS2V9iE/AK3jOWKm1G7Y2F8XIoX1qzQpuMakjfagFoQ==", + "node_modules/@polkadot/typegen/node_modules/@polkadot/types-support": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-10.9.1.tgz", + "integrity": "sha512-XsieuLDsszvMZQlleacQBfx07i/JkwQV/UxH9q8Hz7Okmaz9pEVEW1h3ka2/cPuC7a4l32JhaORBUYshBZNdJg==", + "dev": true, "dependencies": { - "@polkadot/x-global": "12.5.1", - "tslib": "^2.6.2" + "@polkadot/util": "^12.3.1", + "tslib": "^2.5.3" }, "engines": { "node": ">=16" - }, - "peerDependencies": { - "@polkadot/util": "12.5.1", - "@polkadot/wasm-util": "*" } }, - "node_modules/@polkadot/x-textdecoder": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.5.1.tgz", - "integrity": "sha512-j2YZGWfwhMC8nHW3BXq10fAPY02ObLL/qoTjCMJ1Cmc/OGq18Ep7k9cXXbjFAq3wf3tUUewt/u/hStKCk3IvfQ==", + "node_modules/@polkadot/typegen/node_modules/@substrate/connect": { + "version": "0.7.26", + "resolved": "https://registry.npmjs.org/@substrate/connect/-/connect-0.7.26.tgz", + "integrity": "sha512-uuGSiroGuKWj1+38n1kY5HReer5iL9bRwPCzuoLtqAOmI1fGI0hsSI2LlNQMAbfRgr7VRHXOk5MTuQf5ulsFRw==", + "dev": true, + "optional": true, "dependencies": { - "@polkadot/x-global": "12.5.1", - "tslib": "^2.6.2" + "@substrate/connect-extension-protocol": "^1.0.1", + "eventemitter3": "^4.0.7", + "smoldot": "1.0.4" + } + }, + "node_modules/@polkadot/typegen/node_modules/@substrate/connect/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "optional": true + }, + "node_modules/@polkadot/typegen/node_modules/smoldot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-1.0.4.tgz", + "integrity": "sha512-N3TazI1C4GGrseFH/piWyZCCCRJTRx2QhDfrUKRT4SzILlW5m8ayZ3QTKICcz1C/536T9cbHHJyP7afxI6Mi1A==", + "dev": true, + "optional": true, + "dependencies": { + "pako": "^2.0.4", + "ws": "^8.8.1" + } + }, + "node_modules/@polkadot/types": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-10.9.1.tgz", + "integrity": "sha512-AG33i2ZGGfq7u+5rkAdGrXAQHHl844/Yv+junH5ZzX69xiCoWO1bH/yzDUNBdpki2GlACWvF9nLYh3F2tVF93w==", + "dependencies": { + "@polkadot/keyring": "^12.3.1", + "@polkadot/types-augment": "10.9.1", + "@polkadot/types-codec": "10.9.1", + "@polkadot/types-create": "10.9.1", + "@polkadot/util": "^12.3.1", + "@polkadot/util-crypto": "^12.3.1", + "rxjs": "^7.8.1", + "tslib": "^2.5.3" }, "engines": { "node": ">=16" } }, - "node_modules/@polkadot/x-textencoder": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.5.1.tgz", - "integrity": "sha512-1JNNpOGb4wD+c7zFuOqjibl49LPnHNr4rj4s3WflLUIZvOMY6euoDuN3ISjQSHCLlVSoH0sOCWA3qXZU4bCTDQ==", + "node_modules/@polkadot/types-augment": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-10.9.1.tgz", + "integrity": "sha512-OY9/jTMFRFqYdkUnfcGwqMLC64A0Q25bjvCuVQCVjsPFKE3wl0Kt5rNT01eV2UmLXrR6fY0xWbR2w80bLA7CIQ==", "dependencies": { - "@polkadot/x-global": "12.5.1", - "tslib": "^2.6.2" + "@polkadot/types": "10.9.1", + "@polkadot/types-codec": "10.9.1", + "@polkadot/util": "^12.3.1", + "tslib": "^2.5.3" }, "engines": { "node": ">=16" } }, - "node_modules/@polkadot/x-ws": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-12.5.1.tgz", - "integrity": "sha512-efNMhB3Lh6pW2iTipMkqwrjpuUtb3EwR/jYZftiIGo5tDPB7rqoMOp9s6KRFJEIUfZkLnMUtbkZ5fHzUJaCjmQ==", + "node_modules/@polkadot/types-codec": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-10.9.1.tgz", + "integrity": "sha512-mJ5OegKGraY1FLvEa8FopRCr3pQrhDkcn5RNOjmgJQozENVeRaxhk0NwxYz7IojFvSDnKnc6lNQfKaaSe5pLHg==", "dependencies": { - "@polkadot/x-global": "12.5.1", - "tslib": "^2.6.2", - "ws": "^8.14.1" + "@polkadot/util": "^12.3.1", + "@polkadot/x-bigint": "^12.3.1", + "tslib": "^2.5.3" }, "engines": { "node": ">=16" } }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "node_modules/@polkadot/types-create": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-10.9.1.tgz", + "integrity": "sha512-OVz50MGTTuiuVnRP/zAx4CTuLioc0hsiwNwqN2lNhmIJGtnQ4Vy/7mQRsIWehiYz6g0Vzzm5B3qWkTXO1NSN5w==", "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" + "@polkadot/types-codec": "10.9.1", + "@polkadot/util": "^12.3.1", + "tslib": "^2.5.3" + }, + "engines": { + "node": ">=16" } }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@scure/base": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.3.tgz", - "integrity": "sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==", - "funding": { - "url": "https://paulmillr.com/funding/" + "node_modules/@polkadot/types-known": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-10.9.1.tgz", + "integrity": "sha512-zCMVWc4pJtkbMFPu72bD4IhvV/gkHXPX3C5uu92WdmCfnn0vEIEsMKWlVXVVvQQZKAqvs/awpqIfrUtEViOGEA==", + "dependencies": { + "@polkadot/networks": "^12.3.1", + "@polkadot/types": "10.9.1", + "@polkadot/types-codec": "10.9.1", + "@polkadot/types-create": "10.9.1", + "@polkadot/util": "^12.3.1", + "tslib": "^2.5.3" + }, + "engines": { + "node": ">=16" } }, - "node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, + "node_modules/@polkadot/types-support": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-10.11.1.tgz", + "integrity": "sha512-eCvWjdpELsHvXiTq201DdbIeOIaEr53zTD7HqC2wR/Z1bkQuw79Z+CyIU4sp79GL1vZ1PxS7vUH9M3FKNaTl1Q==", "dependencies": { - "type-detect": "4.0.8" + "@polkadot/util": "^12.6.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, + "node_modules/@polkadot/types-support/node_modules/@polkadot/util": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", + "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", "dependencies": { - "@sinonjs/commons": "^3.0.0" + "@polkadot/x-bigint": "12.6.1", + "@polkadot/x-global": "12.6.1", + "@polkadot/x-textdecoder": "12.6.1", + "@polkadot/x-textencoder": "12.6.1", + "@types/bn.js": "^5.1.5", + "bn.js": "^5.2.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@sinonjs/fake-timers/node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dev": true, + "node_modules/@polkadot/types-support/node_modules/@polkadot/x-textdecoder": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", + "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", "dependencies": { - "type-detect": "4.0.8" + "@polkadot/x-global": "12.6.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@sinonjs/samsam": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", - "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", - "dev": true, + "node_modules/@polkadot/types-support/node_modules/@polkadot/x-textencoder": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", + "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", "dependencies": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" + "@polkadot/x-global": "12.6.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", - "dev": true - }, - "node_modules/@substrate/connect": { - "version": "0.7.26", - "resolved": "https://registry.npmjs.org/@substrate/connect/-/connect-0.7.26.tgz", - "integrity": "sha512-uuGSiroGuKWj1+38n1kY5HReer5iL9bRwPCzuoLtqAOmI1fGI0hsSI2LlNQMAbfRgr7VRHXOk5MTuQf5ulsFRw==", - "optional": true, + "node_modules/@polkadot/util": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.5.1.tgz", + "integrity": "sha512-fDBZL7D4/baMG09Qowseo884m3QBzErGkRWNBId1UjWR99kyex+cIY9fOSzmuQxo6nLdJlLHw1Nz2caN3+Bq0A==", "dependencies": { - "@substrate/connect-extension-protocol": "^1.0.1", - "eventemitter3": "^4.0.7", - "smoldot": "1.0.4" + "@polkadot/x-bigint": "12.5.1", + "@polkadot/x-global": "12.5.1", + "@polkadot/x-textdecoder": "12.5.1", + "@polkadot/x-textencoder": "12.5.1", + "@types/bn.js": "^5.1.1", + "bn.js": "^5.2.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16" } }, - "node_modules/@substrate/connect-extension-protocol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@substrate/connect-extension-protocol/-/connect-extension-protocol-1.0.1.tgz", - "integrity": "sha512-161JhCC1csjH3GE5mPLEd7HbWtwNSPJBg3p1Ksz9SFlTzj/bgEwudiRN2y5i0MoLGCIJRYKyKGMxVnd29PzNjg==", - "optional": true - }, - "node_modules/@substrate/connect/node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "optional": true - }, - "node_modules/@substrate/ss58-registry": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.43.0.tgz", - "integrity": "sha512-USEkXA46P9sqClL7PZv0QFsit4S8Im97wchKG0/H/9q3AT/S76r40UHfCr4Un7eBJPE23f7fU9BZ0ITpP9MCsA==" - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "node_modules/@polkadot/util-crypto": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-12.6.1.tgz", + "integrity": "sha512-2ezWFLmdgeDXqB9NAUdgpp3s2rQztNrZLY+y0SJYNOG4ch+PyodTW/qSksnOrVGVdRhZ5OESRE9xvo9LYV5UAw==", "dependencies": { - "@types/node": "*" + "@noble/curves": "^1.2.0", + "@noble/hashes": "^1.3.2", + "@polkadot/networks": "12.6.1", + "@polkadot/util": "12.6.1", + "@polkadot/wasm-crypto": "^7.3.1", + "@polkadot/wasm-util": "^7.3.1", + "@polkadot/x-bigint": "12.6.1", + "@polkadot/x-randomvalues": "12.6.1", + "@scure/base": "^1.1.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@polkadot/util": "12.6.1" } }, - "node_modules/@types/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@types/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-F8X3srlDYXQSVGfjAWl0lxd9mGfYtkneMA0QFQ3BFBw/BUmBlhlAbpRjmvE7LbW3wIxf01KHi20/bPstYK6ssA==", + "node_modules/@polkadot/util-crypto/node_modules/@polkadot/util": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", + "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", "dependencies": { - "@types/node": "*" + "@polkadot/x-bigint": "12.6.1", + "@polkadot/x-global": "12.6.1", + "@polkadot/x-textdecoder": "12.6.1", + "@polkadot/x-textencoder": "12.6.1", + "@types/bn.js": "^5.1.5", + "bn.js": "^5.2.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@types/json-schema": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", - "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", - "dev": true - }, - "node_modules/@types/mocha": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.2.tgz", - "integrity": "sha512-NaHL0+0lLNhX6d9rs+NSt97WH/gIlRHmszXbQ/8/MV/eVcFNdeJ/GYhrFuUc8K7WuPhRhTSdMkCp8VMzhUq85w==", - "dev": true - }, - "node_modules/@types/multicast-dns": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@types/multicast-dns/-/multicast-dns-7.2.1.tgz", - "integrity": "sha512-A2PmB8MRcNVEkw6wzGT5rtBHqyHOVjiRMkJH+zpJKXipSi+GGkHg6JjNFApDiYK9WefJqkVG0taln1VMl4TGfw==", + "node_modules/@polkadot/util-crypto/node_modules/@polkadot/wasm-bridge": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.3.2.tgz", + "integrity": "sha512-AJEXChcf/nKXd5Q/YLEV5dXQMle3UNT7jcXYmIffZAo/KI394a+/24PaISyQjoNC0fkzS1Q8T5pnGGHmXiVz2g==", "dependencies": { - "@types/dns-packet": "*", - "@types/node": "*" + "@polkadot/wasm-util": "7.3.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@polkadot/util": "*", + "@polkadot/x-randomvalues": "*" } }, - "node_modules/@types/node": { - "version": "18.15.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", - "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==" - }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" - }, - "node_modules/@types/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", - "dev": true - }, - "node_modules/@types/sinon": { - "version": "10.0.17", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.17.tgz", - "integrity": "sha512-+6ILpcixQ0Ma3dHMTLv4rSycbDXkDljgKL+E0nI2RUxxhYTFyPSjt6RVMxh7jUshvyVcBvicb0Ktj+lAJcjgeA==", + "node_modules/@polkadot/util-crypto/node_modules/@polkadot/wasm-crypto": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.3.2.tgz", + "integrity": "sha512-+neIDLSJ6jjVXsjyZ5oLSv16oIpwp+PxFqTUaZdZDoA2EyFRQB8pP7+qLsMNk+WJuhuJ4qXil/7XiOnZYZ+wxw==", "dependencies": { - "@types/sinonjs__fake-timers": "*" + "@polkadot/wasm-bridge": "7.3.2", + "@polkadot/wasm-crypto-asmjs": "7.3.2", + "@polkadot/wasm-crypto-init": "7.3.2", + "@polkadot/wasm-crypto-wasm": "7.3.2", + "@polkadot/wasm-util": "7.3.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@polkadot/util": "*", + "@polkadot/x-randomvalues": "*" } }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.3.tgz", - "integrity": "sha512-4g+2YyWe0Ve+LBh+WUm1697PD0Kdi6coG1eU0YjQbwx61AZ8XbEpL1zIT6WjuUKrCMCROpEaYQPDjBnDouBVAQ==" - }, - "node_modules/@types/workerpool": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/@types/workerpool/-/workerpool-6.4.5.tgz", - "integrity": "sha512-HO5cN6S9DBWBx0/C6oGJaYZPjmfSCZxoRbbmnkMYTTbIHrzR6iHZ4aHopAvd/IAJBGFUKD7LCPg9aXCBba9GmQ==", - "dev": true, + "node_modules/@polkadot/util-crypto/node_modules/@polkadot/wasm-crypto-init": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.3.2.tgz", + "integrity": "sha512-FPq73zGmvZtnuJaFV44brze3Lkrki3b4PebxCy9Fplw8nTmisKo9Xxtfew08r0njyYh+uiJRAxPCXadkC9sc8g==", "dependencies": { - "@types/node": "*" + "@polkadot/wasm-bridge": "7.3.2", + "@polkadot/wasm-crypto-asmjs": "7.3.2", + "@polkadot/wasm-crypto-wasm": "7.3.2", + "@polkadot/wasm-util": "7.3.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@polkadot/util": "*", + "@polkadot/x-randomvalues": "*" } }, - "node_modules/@types/ws": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.6.tgz", - "integrity": "sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg==", + "node_modules/@polkadot/util-crypto/node_modules/@polkadot/x-randomvalues": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-12.6.1.tgz", + "integrity": "sha512-1uVKlfYYbgIgGV5v1Dgn960cGovenWm5pmg+aTMeUGXVYiJwRD2zOpLyC1i/tP454iA74j74pmWb8Nkn0tJZUQ==", "dependencies": { - "@types/node": "*" + "@polkadot/x-global": "12.6.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@polkadot/util": "12.6.1", + "@polkadot/wasm-util": "*" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.10.0.tgz", - "integrity": "sha512-uoLj4g2OTL8rfUQVx2AFO1hp/zja1wABJq77P6IclQs6I/m9GLrm7jCdgzZkvWdDCQf1uEvoa8s8CupsgWQgVg==", - "dev": true, + "node_modules/@polkadot/util-crypto/node_modules/@polkadot/x-textdecoder": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", + "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.10.0", - "@typescript-eslint/type-utils": "6.10.0", - "@typescript-eslint/utils": "6.10.0", - "@typescript-eslint/visitor-keys": "6.10.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "@polkadot/x-global": "12.6.1", + "tslib": "^2.6.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=18" + } + }, + "node_modules/@polkadot/util-crypto/node_modules/@polkadot/x-textencoder": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", + "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "dependencies": { + "@polkadot/x-global": "12.6.1", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" + "engines": { + "node": ">=18" + } + }, + "node_modules/@polkadot/util/node_modules/@polkadot/x-bigint": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-12.5.1.tgz", + "integrity": "sha512-Fw39eoN9v0sqxSzfSC5awaDVdzojIiE7d1hRSQgVSrES+8whWvtbYMR0qwbVhTuW7DvogHmye41P9xKMlXZysg==", + "dependencies": { + "@polkadot/x-global": "12.5.1", + "tslib": "^2.6.2" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": ">=16" } }, - "node_modules/@typescript-eslint/parser": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.10.0.tgz", - "integrity": "sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog==", - "dev": true, + "node_modules/@polkadot/util/node_modules/@polkadot/x-global": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.5.1.tgz", + "integrity": "sha512-6K0YtWEg0eXInDOihU5aSzeb1t9TiDdX9ZuRly+58ALSqw5kPZYmQLbzE1d8HWzyXRXK+YH65GtLzfMGqfYHmw==", "dependencies": { - "@typescript-eslint/scope-manager": "6.10.0", - "@typescript-eslint/types": "6.10.0", - "@typescript-eslint/typescript-estree": "6.10.0", - "@typescript-eslint/visitor-keys": "6.10.0", - "debug": "^4.3.4" + "tslib": "^2.6.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=16" + } + }, + "node_modules/@polkadot/wasm-crypto-asmjs": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.3.2.tgz", + "integrity": "sha512-QP5eiUqUFur/2UoF2KKKYJcesc71fXhQFLT3D4ZjG28Mfk2ZPI0QNRUfpcxVQmIUpV5USHg4geCBNuCYsMm20Q==", + "dependencies": { + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "engines": { + "node": ">=18" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@polkadot/util": "*" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.10.0.tgz", - "integrity": "sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==", - "dev": true, + "node_modules/@polkadot/wasm-crypto-wasm": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.3.2.tgz", + "integrity": "sha512-15wd0EMv9IXs5Abp1ZKpKKAVyZPhATIAHfKsyoWCEFDLSOA0/K0QGOxzrAlsrdUkiKZOq7uzSIgIDgW8okx2Mw==", "dependencies": { - "@typescript-eslint/types": "6.10.0", - "@typescript-eslint/visitor-keys": "6.10.0" + "@polkadot/wasm-util": "7.3.2", + "tslib": "^2.6.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=18" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "@polkadot/util": "*" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.10.0.tgz", - "integrity": "sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg==", - "dev": true, + "node_modules/@polkadot/wasm-util": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.3.2.tgz", + "integrity": "sha512-bmD+Dxo1lTZyZNxbyPE380wd82QsX+43mgCm40boyKrRppXEyQmWT98v/Poc7chLuskYb6X8IQ6lvvK2bGR4Tg==", "dependencies": { - "@typescript-eslint/typescript-estree": "6.10.0", - "@typescript-eslint/utils": "6.10.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "tslib": "^2.6.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=18" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@polkadot/util": "*" } }, - "node_modules/@typescript-eslint/types": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.10.0.tgz", - "integrity": "sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "node_modules/@polkadot/x-bigint": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-12.6.1.tgz", + "integrity": "sha512-YlABeVIlgYQZJ4ZpW/+akFGGxw5jMGt4g5vaP7EumlORGneJHzzWJYDmI5v2y7j1zvC9ofOle7z4tRmtN/QDew==", + "dependencies": { + "@polkadot/x-global": "12.6.1", + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "engines": { + "node": ">=18" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz", - "integrity": "sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==", - "dev": true, + "node_modules/@polkadot/x-fetch": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-12.6.1.tgz", + "integrity": "sha512-iyBv0ecfCsqGSv26CPJk9vSoKtry/Fn7x549ysA4hlc9KboraMHxOHTpcNZYC/OdgvbFZl40zIXCY0SA1ai8aw==", "dependencies": { - "@typescript-eslint/types": "6.10.0", - "@typescript-eslint/visitor-keys": "6.10.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "@polkadot/x-global": "12.6.1", + "node-fetch": "^3.3.2", + "tslib": "^2.6.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@typescript-eslint/utils": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.10.0.tgz", - "integrity": "sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg==", - "dev": true, + "node_modules/@polkadot/x-global": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", + "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.10.0", - "@typescript-eslint/types": "6.10.0", - "@typescript-eslint/typescript-estree": "6.10.0", - "semver": "^7.5.4" + "tslib": "^2.6.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "node": ">=18" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.10.0.tgz", - "integrity": "sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==", - "dev": true, + "node_modules/@polkadot/x-textdecoder": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.5.1.tgz", + "integrity": "sha512-j2YZGWfwhMC8nHW3BXq10fAPY02ObLL/qoTjCMJ1Cmc/OGq18Ep7k9cXXbjFAq3wf3tUUewt/u/hStKCk3IvfQ==", "dependencies": { - "@typescript-eslint/types": "6.10.0", - "eslint-visitor-keys": "^3.4.1" + "@polkadot/x-global": "12.5.1", + "tslib": "^2.6.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=16" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@vascosantos/moving-average": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz", - "integrity": "sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w==" - }, - "node_modules/abortable-iterator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/abortable-iterator/-/abortable-iterator-5.0.1.tgz", - "integrity": "sha512-hlZ5Z8UwqrKsJcelVPEqDduZowJPBQJ9ZhBC2FXpja3lXy8X6MoI5uMzIgmrA8+3jcVnp8TF/tx+IBBqYJNUrg==", + "node_modules/@polkadot/x-textdecoder/node_modules/@polkadot/x-global": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.5.1.tgz", + "integrity": "sha512-6K0YtWEg0eXInDOihU5aSzeb1t9TiDdX9ZuRly+58ALSqw5kPZYmQLbzE1d8HWzyXRXK+YH65GtLzfMGqfYHmw==", "dependencies": { - "get-iterator": "^2.0.0", - "it-stream-types": "^2.0.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=16" } }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" + "node_modules/@polkadot/x-textencoder": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.5.1.tgz", + "integrity": "sha512-1JNNpOGb4wD+c7zFuOqjibl49LPnHNr4rj4s3WflLUIZvOMY6euoDuN3ISjQSHCLlVSoH0sOCWA3qXZU4bCTDQ==", + "dependencies": { + "@polkadot/x-global": "12.5.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=0.4.0" + "node": ">=16" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node_modules/@polkadot/x-textencoder/node_modules/@polkadot/x-global": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.5.1.tgz", + "integrity": "sha512-6K0YtWEg0eXInDOihU5aSzeb1t9TiDdX9ZuRly+58ALSqw5kPZYmQLbzE1d8HWzyXRXK+YH65GtLzfMGqfYHmw==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16" } }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, + "node_modules/@polkadot/x-ws": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-12.6.1.tgz", + "integrity": "sha512-fs9V+XekjJLpVLLwxnqq3llqSZu2T/b9brvld8anvzS/htDLPbi7+c5W3VGJ9Po8fS67IsU3HCt0Gu6F6mGrMA==", + "dependencies": { + "@polkadot/x-global": "12.6.1", + "tslib": "^2.6.2", + "ws": "^8.14.2" + }, "engines": { - "node": ">=0.4.0" + "node": ">=18" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@scure/base": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", + "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==", + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "type-detect": "4.0.8" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/any-signal": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-4.1.1.tgz", - "integrity": "sha512-iADenERppdC+A2YKbOXXB2WUeABLaM6qnpZ70kZbPZ1cZMMJ7eF+3CaYm+/PhBizgkzlvssC7QuHS30oOiQYWA==", - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", "dev": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" + "type-detect": "4.0.8" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/@substrate/connect": { + "version": "0.7.35", + "resolved": "https://registry.npmjs.org/@substrate/connect/-/connect-0.7.35.tgz", + "integrity": "sha512-Io8vkalbwaye+7yXfG1Nj52tOOoJln2bMlc7Q9Yy3vEWqZEVkgKmcPVzbwV0CWL3QD+KMPDA2Dnw/X7EdwgoLw==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@substrate/connect-extension-protocol": "^1.0.1", + "smoldot": "2.0.7" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/@substrate/connect-extension-protocol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@substrate/connect-extension-protocol/-/connect-extension-protocol-1.0.1.tgz", + "integrity": "sha512-161JhCC1csjH3GE5mPLEd7HbWtwNSPJBg3p1Ksz9SFlTzj/bgEwudiRN2y5i0MoLGCIJRYKyKGMxVnd29PzNjg==", + "optional": true }, - "node_modules/benchmark": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", - "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==", - "dependencies": { - "lodash": "^4.17.4", - "platform": "^1.3.3" - } + "node_modules/@substrate/ss58-registry": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.44.0.tgz", + "integrity": "sha512-7lQ/7mMCzVNSEfDS4BCqnRnKCFKpcOaPrxMeGTXHX1YQzM/m2BBHjbK2C3dJvjv7GYxMiaTq/HdWQj1xS6ss+A==" }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true }, - "node_modules/bl": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", - "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", - "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true }, - "node_modules/blockstore-core": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/blockstore-core/-/blockstore-core-4.3.4.tgz", - "integrity": "sha512-JecnNXiDPEdeS9AeFWO0PUKKmmRMW0D+ggUb4lgK0XMDOUAWmhkaiDPhgBjEKrlya0n60XOjcgBYhg18CUqOFw==", - "dependencies": { - "@libp2p/logger": "^3.0.0", - "err-code": "^3.0.1", - "interface-blockstore": "^5.0.0", - "interface-store": "^5.0.0", - "it-drain": "^3.0.1", - "it-filter": "^3.0.0", - "it-merge": "^3.0.1", - "it-pushable": "^3.0.0", - "multiformats": "^12.0.1", - "uint8arrays": "^4.0.2" - } + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, + "node_modules/@types/bn.js": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@types/node": "*" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, + "node_modules/@types/dns-packet": { + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@types/dns-packet/-/dns-packet-5.6.4.tgz", + "integrity": "sha512-R0ORTvCCeujG+upKfV4JlvozKLdQWlpsducXGd1L6ezBChwpjSj9K84F+KoMDsZQ9RhOLTR1hnNrwJHWagY24g==", "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" + "@types/node": "*" } }, - "node_modules/browser-readablestream-to-it": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.4.tgz", - "integrity": "sha512-EOjEEA+tJInvKg/Pml6QYxVY6gD8lka/ceLmkUbEeuWlzZx/a5k5ugupVFUUKSfI/88+v0VFs7JSFi5iYpp3IA==" + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "node_modules/@types/mocha": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", "dev": true }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/@types/multicast-dns": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/@types/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-ib5K4cIDR4Ro5SR3Sx/LROkMDa0BHz0OPaCBL/OSPDsAXEGZ3/KQeS6poBKYVN7BfjXDL9lWNwzyHVgt/wkyCw==", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "@types/dns-packet": "*", + "@types/node": "*" } }, - "node_modules/bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "hasInstallScript": true, - "optional": true, - "peer": true, + "node_modules/@types/node": { + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" + "undici-types": "~5.26.4" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "node_modules/@types/sinon": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.2.tgz", + "integrity": "sha512-Zt6heIGsdqERkxctIpvN5Pv3edgBrhoeb3yHyxffd4InN0AX2SVNKSrhdDZKGQICVOxWP/q4DyhpfPNMSrpIiA==", "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" + "@types/sinonjs__fake-timers": "*" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==" + }, + "node_modules/@types/workerpool": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/@types/workerpool/-/workerpool-6.4.7.tgz", + "integrity": "sha512-DI2U4obcMzFViyNjLw0xXspim++qkAJ4BWRdYPVMMFtOpTvMr6PAk3UTZEoSqnZnvgUkJ3ck97Ybk+iIfuJHMg==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "@types/node": "*" } }, - "node_modules/cborg": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.10.1.tgz", - "integrity": "sha512-et6Qm8MOUY2kCWa5GKk2MlBVoPjHv0hQBmlzI/Z7+5V3VJCeIkGehIB3vWknNsm2kOkAIs6wEKJFJo8luWQQ/w==", - "bin": { - "cborg": "cli.js" + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dependencies": { + "@types/node": "*" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz", + "integrity": "sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/type-utils": "6.14.0", + "@typescript-eslint/utils": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=10" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/@typescript-eslint/parser": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz", + "integrity": "sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/typescript-estree": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 8.10.0" + "node": "^16.0.0 || >=18.0.0" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz", + "integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0" }, "engines": { - "node": ">= 6" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/@typescript-eslint/type-utils": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz", + "integrity": "sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "@typescript-eslint/typescript-estree": "6.14.0", + "@typescript-eslint/utils": "6.14.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=12" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@typescript-eslint/types": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz", + "integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz", + "integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==", + "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/datastore-core": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-9.2.3.tgz", - "integrity": "sha512-jcvrVDt+jp7lUp2WhMXXgX/hoi3VcJebN+z/ZXbIRKOVfNOF4bl8cvr7sQ1y9qITikgC2coXFYd79Wzt/n13ZQ==", - "dependencies": { - "@libp2p/logger": "^3.0.0", - "err-code": "^3.0.1", - "interface-store": "^5.0.0", - "it-all": "^3.0.1", - "it-drain": "^3.0.1", - "it-filter": "^3.0.0", - "it-map": "^3.0.1", - "it-merge": "^3.0.1", - "it-pipe": "^3.0.0", - "it-pushable": "^3.0.0", - "it-sort": "^3.0.1", - "it-take": "^3.0.1", - "uint8arrays": "^4.0.2" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@typescript-eslint/utils": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.14.0.tgz", + "integrity": "sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==", + "dev": true, "dependencies": { - "ms": "2.1.2" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/typescript-estree": "6.14.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=6.0" + "node": "^16.0.0 || >=18.0.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz", + "integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==", "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.14.0", + "eslint-visitor-keys": "^3.4.1" + }, "engines": { - "node": ">=10" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, - "node_modules/default-gateway": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", - "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", + "node_modules/@vascosantos/moving-average": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz", + "integrity": "sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w==" + }, + "node_modules/abortable-iterator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/abortable-iterator/-/abortable-iterator-5.0.1.tgz", + "integrity": "sha512-hlZ5Z8UwqrKsJcelVPEqDduZowJPBQJ9ZhBC2FXpja3lXy8X6MoI5uMzIgmrA8+3jcVnp8TF/tx+IBBqYJNUrg==", "dependencies": { - "execa": "^7.1.1" + "get-iterator": "^2.0.0", + "it-stream-types": "^2.0.1" }, "engines": { - "node": ">= 16" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/default-gateway/node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=0.4.0" } }, - "node_modules/default-gateway/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "engines": { - "node": ">=14.18.0" + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/denque": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", - "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "node_modules/acorn-walk": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", + "dev": true, "engines": { - "node": ">=0.10" + "node": ">=0.4.0" } }, - "node_modules/detect-browser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", - "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, "engines": { - "node": ">=0.3.1" + "node": ">=6" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/dns-over-http-resolver": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-2.1.2.tgz", - "integrity": "sha512-Bjbf6aZjr3HMnwGslZnoW3MJVqgbTsh39EZWpikx2yLl9xEjw4eZhlOHCFhkOu89zoWaS4rqe2Go53TXW4Byiw==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "debug": "^4.3.1", - "native-fetch": "^4.0.2", - "receptacle": "^1.3.2", - "undici": "^5.12.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, + "node_modules/any-signal": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-4.1.1.tgz", + "integrity": "sha512-iADenERppdC+A2YKbOXXB2WUeABLaM6qnpZ70kZbPZ1cZMMJ7eF+3CaYm+/PhBizgkzlvssC7QuHS30oOiQYWA==", "engines": { - "node": ">=6" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=6.0.0" + "node": ">= 8" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, - "node_modules/err-code": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", - "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==" + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==", + "dependencies": { + "lodash": "^4.17.4", + "platform": "^1.3.3" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/eslint": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", - "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", - "dev": true, + "node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.53.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/eslint-plugin-mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.2.0.tgz", - "integrity": "sha512-ZhdxzSZnd1P9LqDPF0DBcFLpRIGdh1zkF2JHnQklKQOvrQtT73kdP5K9V2mzvbLR+cCAO9OI48NXK/Ax9/ciCQ==", - "dev": true, + "node_modules/blockstore-core": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/blockstore-core/-/blockstore-core-4.3.8.tgz", + "integrity": "sha512-Agunhjw9w0I1OoJn012OpzJwBRm3Nf+v64N2FaZSsF3UGhoQAu4RePLuIBsZrPh4XRqT5Yg1rHoBYJGDhDmkWQ==", "dependencies": { - "eslint-utils": "^3.0.0", - "rambda": "^7.4.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "@libp2p/logger": "^4.0.1", + "err-code": "^3.0.1", + "interface-blockstore": "^5.0.0", + "interface-store": "^5.0.0", + "it-drain": "^3.0.1", + "it-filter": "^3.0.0", + "it-merge": "^3.0.1", + "it-pushable": "^3.0.0", + "multiformats": "^12.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, + "node_modules/blockstore-core/node_modules/@libp2p/interface": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.0.2.tgz", + "integrity": "sha512-z/3Yyg+7cVyzRXwzdrDkJd7YmNaLE9iZjQaixo5luI/n9uk5OFFjb9ulAsNqpq8V1xylCo2DXIC7f94KClwzVw==", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "@multiformats/multiaddr": "^12.1.10", + "it-pushable": "^3.2.1", + "it-stream-types": "^2.0.1", + "multiformats": "^12.1.3", + "uint8arraylist": "^2.4.3" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, + "node_modules/blockstore-core/node_modules/@libp2p/logger": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.2.tgz", + "integrity": "sha512-J9UMtMU9BKXNp+3c5kcI7HyWOPYg2B2E6sn1gEQckiSexTaz0wKJSlgTZ89f9F8bkC3AaC8ybXYuHbFQhwpTIg==", "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "@libp2p/interface": "^1.0.2", + "@multiformats/multiaddr": "^12.1.10", + "debug": "^4.3.4", + "interface-datastore": "^8.2.0", + "multiformats": "^12.1.3" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" + "node_modules/blockstore-core/node_modules/uint8arrays": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.0.0.tgz", + "integrity": "sha512-RWO7gR4x6syxnKDfZO8mDCsaaYs1/BqZCxlHgrcRge50E9GTnLmtoA4kwFSGIL4s3dQkryeTkvtG6oEFEya3yg==", + "dependencies": { + "multiformats": "^12.0.1" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "fill-range": "^7.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8" } }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } + "node_modules/browser-readablestream-to-it": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.5.tgz", + "integrity": "sha512-obLCT9jnxAeZlbaRWluUiZrcSJEoi2JkM0eoiJqlIP7MFwZwZjcB6giZvD343PXfr96ilD91M/wFqFvyAZq+Gg==" }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "engines": { - "node": ">=4.0" + "node": ">=6" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/event-iterator": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", - "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==" - }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + "node_modules/cborg": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.5.tgz", + "integrity": "sha512-q8TAjprr8pn9Fp53rOIGp/UFDdFY6os2Nq62YogPSIzczJD9M6g2b6igxMkpCiZZKJ0kn/KzDLDvG+EqBIEeCg==", + "bin": { + "cborg": "lib/bin.js" + } }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.8.x" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=8.6.0" + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/fast-glob/node_modules/glob-parent": { + "node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", @@ -2743,176 +2772,149 @@ "node": ">= 6" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": "^12.20 || >= 14.13" + "node": ">=12" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "flat-cache": "^3.0.4" + "color-name": "~1.1.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=7.0.0" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dependencies": { - "to-regex-range": "^5.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 12" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" + "node_modules/datastore-core": { + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-9.2.6.tgz", + "integrity": "sha512-7Y79V6Iw5v8Ie2jCT6wiDBaWfZuTPzM3NcJxXOyEGRLJT0qgxa24Yxym83tTuu6rTOB+a+yZZWj0jB4F5lyg8w==", + "dependencies": { + "@libp2p/logger": "^4.0.1", + "err-code": "^3.0.1", + "interface-store": "^5.0.0", + "it-all": "^3.0.1", + "it-drain": "^3.0.1", + "it-filter": "^3.0.0", + "it-map": "^3.0.1", + "it-merge": "^3.0.1", + "it-pipe": "^3.0.0", + "it-pushable": "^3.0.0", + "it-sort": "^3.0.1", + "it-take": "^3.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", - "dev": true, + "node_modules/datastore-core/node_modules/@libp2p/interface": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.0.2.tgz", + "integrity": "sha512-z/3Yyg+7cVyzRXwzdrDkJd7YmNaLE9iZjQaixo5luI/n9uk5OFFjb9ulAsNqpq8V1xylCo2DXIC7f94KClwzVw==", "dependencies": { - "flatted": "^3.2.7", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=12.0.0" + "@multiformats/multiaddr": "^12.1.10", + "it-pushable": "^3.2.1", + "it-stream-types": "^2.0.1", + "multiformats": "^12.1.3", + "uint8arraylist": "^2.4.3" } }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "node_modules/datastore-core/node_modules/@libp2p/logger": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.2.tgz", + "integrity": "sha512-J9UMtMU9BKXNp+3c5kcI7HyWOPYg2B2E6sn1gEQckiSexTaz0wKJSlgTZ89f9F8bkC3AaC8ybXYuHbFQhwpTIg==", "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" + "@libp2p/interface": "^1.0.2", + "@multiformats/multiaddr": "^12.1.10", + "debug": "^4.3.4", + "interface-datastore": "^8.2.0", + "multiformats": "^12.1.3" } }, - "node_modules/freeport-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/freeport-promise/-/freeport-promise-2.0.0.tgz", - "integrity": "sha512-dwWpT1DdQcwrhmRwnDnPM/ZFny+FtzU+k50qF2eid3KxaQDsMiBrwo1i0G3qSugkN5db6Cb0zgfc68QeTOpEFg==", - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node_modules/datastore-core/node_modules/uint8arrays": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.0.0.tgz", + "integrity": "sha512-RWO7gR4x6syxnKDfZO8mDCsaaYs1/BqZCxlHgrcRge50E9GTnLmtoA4kwFSGIL4s3dQkryeTkvtG6oEFEya3yg==", + "dependencies": { + "multiformats": "^12.0.1" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-2.0.1.tgz", - "integrity": "sha512-7HuY/hebu4gryTDT7O/XY/fvY9wRByEGdK6QOa4of8npTcv0+NS6frFKABcf6S9EBAsveTuKTsZQQBFMMNILIg==" - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "engines": { "node": ">=10" }, @@ -2920,527 +2922,702 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "mimic-response": "^3.1.0" }, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "engines": { - "node": ">=10.13.0" + "node": ">=4.0.0" } }, - "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/default-gateway": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", + "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", "dependencies": { - "type-fest": "^0.20.2" + "execa": "^7.1.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 16" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, + "node_modules/delay": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", + "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "engines": { + "node": ">=0.10" + } }, - "node_modules/hamt-sharding": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/hamt-sharding/-/hamt-sharding-3.0.2.tgz", - "integrity": "sha512-f0DzBD2tSmLFdFsLAvOflIBqFPjerbA7BfmwO8mVho/5hXwgyyYhv+ijIzidQf/DpDX3bRjAQvhGoBFj+DBvPw==", - "dependencies": { - "sparse-array": "^1.3.1", - "uint8arrays": "^4.0.2" - }, + "node_modules/detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" + }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=8" } }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "node": ">=0.3.1" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/hashlru": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/hashlru/-/hashlru-2.3.0.tgz", - "integrity": "sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==" - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" + "node_modules/dns-over-http-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-3.0.0.tgz", + "integrity": "sha512-5+BI+B7n8LKhNaEZBYErr+CBd9t5nYtjunByLhrLGtZ+i3TRgiU8yE87pCjEBu2KOwNsD9ljpSXEbZ4S8xih5g==", + "dependencies": { + "debug": "^4.3.4", + "receptacle": "^1.3.2" } }, - "node_modules/helia": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/helia/-/helia-2.0.3.tgz", - "integrity": "sha512-8Uze/U48R9p3013+oh5Eg29RwkzRXpCHDYyKxf7yU1S5GGnVguaWrmEHYJ2pKMMYMCgNasmCvfouurKIQvM+cg==", + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dependencies": { - "@chainsafe/libp2p-gossipsub": "^10.0.0", - "@chainsafe/libp2p-noise": "^13.0.0", - "@chainsafe/libp2p-yamux": "^5.0.0", - "@helia/interface": "^2.0.0", - "@ipld/dag-cbor": "^9.0.0", - "@ipld/dag-json": "^10.0.1", - "@ipld/dag-pb": "^4.0.3", - "@libp2p/bootstrap": "^9.0.2", - "@libp2p/interface": "^0.1.1", - "@libp2p/ipni-content-routing": "^2.0.0", - "@libp2p/kad-dht": "^10.0.2", - "@libp2p/logger": "^3.0.1", - "@libp2p/mdns": "^9.0.2", - "@libp2p/mplex": "^9.0.2", - "@libp2p/tcp": "^8.0.2", - "@libp2p/webrtc": "^3.1.3", - "@libp2p/websockets": "^7.0.2", - "@libp2p/webtransport": "^3.0.3", - "blockstore-core": "^4.0.0", - "cborg": "^4.0.1", - "datastore-core": "^9.0.0", - "interface-blockstore": "^5.0.0", - "interface-datastore": "^8.0.0", - "interface-store": "^5.0.1", - "ipfs-bitswap": "^19.0.0", - "ipns": "^7.0.1", - "it-all": "^3.0.2", - "it-drain": "^3.0.1", - "it-filter": "^3.0.1", - "it-foreach": "^2.0.2", - "libp2p": "^0.46.6", - "mortice": "^3.0.1", - "multiformats": "^12.0.1", - "p-defer": "^4.0.0", - "p-queue": "^7.3.4", - "progress-events": "^1.0.0", - "uint8arrays": "^4.0.3" + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" } }, - "node_modules/helia/node_modules/cborg": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.3.tgz", - "integrity": "sha512-poLvpK30KT5KI8gzDx3J/IuVCbsLqMT2fEbOrOuX0H7Hyj8yg5LezeWhRh9aLa5Z6MfPC5sriW3HVJF328M8LQ==", - "bin": { - "cborg": "lib/bin.js" + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/err-code": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", + "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, "engines": { - "node": ">= 4" + "node": ">=6" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/eslint": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, "engines": { - "node": ">=0.8.19" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "node_modules/eslint-plugin-mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.2.0.tgz", + "integrity": "sha512-ZhdxzSZnd1P9LqDPF0DBcFLpRIGdh1zkF2JHnQklKQOvrQtT73kdP5K9V2mzvbLR+cCAO9OI48NXK/Ax9/ciCQ==", "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "eslint-utils": "^3.0.0", + "rambda": "^7.4.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/interface-blockstore": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/interface-blockstore/-/interface-blockstore-5.2.6.tgz", - "integrity": "sha512-Cp6+QPY81kunaxQV/j5BWk3uSW6kpos8dLveJ3P2lbmA/yX2XeMwVlNOnQyGg0evhp1qmMLhf6eCswNiSMW3CA==", + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, "dependencies": { - "interface-store": "^5.0.0", - "multiformats": "^12.0.1" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/interface-datastore": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.2.0.tgz", - "integrity": "sha512-rDMAcpCGxWMubRk2YQuSEHl11bc0xcZeBZzfLvqhoZJdByUWeo7YDJUdgyRKgD6liGXVYirtDkFU9nyn9xl2hg==", + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, "dependencies": { - "interface-store": "^5.0.0", - "nanoid": "^4.0.0", - "uint8arrays": "^4.0.2" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/interface-store": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-5.1.0.tgz", - "integrity": "sha512-mjUwX3XSoreoxCS3sXS3pSRsGnUjl9T06KBqt/T7AgE9Sgp4diH64ZyURJKnj2T5WmCvTbC0Dm+mwQV5hfLSBQ==", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=10" } }, - "node_modules/ip-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", - "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/ipaddr.js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", - "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, "engines": { - "node": ">= 10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/ipfs-bitswap": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/ipfs-bitswap/-/ipfs-bitswap-19.0.0.tgz", - "integrity": "sha512-X0u7Y9dnRlP57EGNOF+RUtm2UkB3Nrx/NLLeUZ/VEEMWBC5iOFpBDvTxSNdEK366khbG8mXk2NJ1ko8jcKXETw==", - "dependencies": { - "@libp2p/interface": "^0.1.1", - "@libp2p/logger": "^3.0.1", - "@multiformats/multiaddr": "^12.1.0", - "@vascosantos/moving-average": "^1.1.0", - "any-signal": "^4.1.1", - "blockstore-core": "^4.0.0", - "events": "^3.3.0", - "interface-blockstore": "^5.0.0", - "interface-store": "^5.1.0", - "it-foreach": "^2.0.2", - "it-length-prefixed": "^9.0.0", - "it-map": "^3.0.2", - "it-pipe": "^3.0.1", - "it-take": "^3.0.1", - "just-debounce-it": "^3.0.1", - "multiformats": "^12.0.1", - "progress-events": "^1.0.0", - "protons-runtime": "^5.0.0", - "timeout-abort-controller": "^3.0.0", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^4.0.2", - "varint": "^6.0.0", - "varint-decoder": "^1.0.0" - } - }, - "node_modules/ipfs-unixfs": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-11.1.0.tgz", - "integrity": "sha512-Lq37nKLJOpRFjx3rcg3y+ZwUxBX7jluKfIt5UPp6wb1L3dP0sj1yaLR0Yg2CdGYvHWyUpZD1iTnT8upL0ToDOw==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, "dependencies": { - "err-code": "^3.0.1", - "protons-runtime": "^5.0.0", - "uint8arraylist": "^2.4.3" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=0.10" } }, - "node_modules/ipfs-unixfs-exporter": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/ipfs-unixfs-exporter/-/ipfs-unixfs-exporter-13.2.2.tgz", - "integrity": "sha512-poCxSte+SdQzuPc/Sm+gx/86VJu+IEsW6/Cfkq29yEUZDG8QuCvTkvuqAysKAYuN40aR9SjYqwYFRW/hsvspSw==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "dependencies": { - "@ipld/dag-cbor": "^9.0.0", - "@ipld/dag-pb": "^4.0.0", - "@multiformats/murmur3": "^2.0.0", - "err-code": "^3.0.1", - "hamt-sharding": "^3.0.0", - "interface-blockstore": "^5.0.0", - "ipfs-unixfs": "^11.0.0", - "it-filter": "^3.0.2", - "it-last": "^3.0.2", - "it-map": "^3.0.3", - "it-parallel": "^3.0.0", - "it-pipe": "^3.0.1", - "it-pushable": "^3.1.0", - "multiformats": "^12.0.1", - "p-queue": "^7.3.0", - "progress-events": "^1.0.0", - "uint8arrays": "^4.0.2" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=4.0" } }, - "node_modules/ipfs-unixfs-importer": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/ipfs-unixfs-importer/-/ipfs-unixfs-importer-15.2.1.tgz", - "integrity": "sha512-9ArBh7Xfz8gUSe8pq9c9ilBOXd1bbT3L+4xnI6w/usWLwnNT14p8WbFZjDD0MO1/PrD0PTUZuHNDS2l4EO+wPg==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-iterator": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", + "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==" + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "dependencies": { - "@ipld/dag-pb": "^4.0.0", - "@multiformats/murmur3": "^2.0.0", - "err-code": "^3.0.1", - "hamt-sharding": "^3.0.0", - "interface-blockstore": "^5.0.0", - "interface-store": "^5.0.1", - "ipfs-unixfs": "^11.0.0", - "it-all": "^3.0.2", - "it-batch": "^3.0.2", - "it-first": "^3.0.2", - "it-parallel-batch": "^3.0.1", - "multiformats": "^12.0.1", - "progress-events": "^1.0.0", - "rabin-wasm": "^0.1.4", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^4.0.2" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/ipns": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ipns/-/ipns-7.0.1.tgz", - "integrity": "sha512-S74hlKNeAW9eExGmRwEfOLAk5l/lEL3HajcenbIc7PTeyeL6PkKE31qQmTi7qynn1ll32hMAo1OagbtnceCtXQ==", + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, "dependencies": { - "@libp2p/crypto": "^2.0.3", - "@libp2p/interface": "^0.1.2", - "@libp2p/logger": "^3.0.2", - "@libp2p/peer-id": "^3.0.2", - "cborg": "^4.0.1", - "err-code": "^3.0.1", - "interface-datastore": "^8.1.0", - "multiformats": "^12.0.1", - "protons-runtime": "^5.0.0", - "timestamp-nano": "^1.0.0", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^4.0.2" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" } }, - "node_modules/ipns/node_modules/cborg": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.3.tgz", - "integrity": "sha512-poLvpK30KT5KI8gzDx3J/IuVCbsLqMT2fEbOrOuX0H7Hyj8yg5LezeWhRh9aLa5Z6MfPC5sriW3HVJF328M8LQ==", - "bin": { - "cborg": "lib/bin.js" + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/is-binary-path": { + "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { - "binary-extensions": "^2.0.0" + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" }, "engines": { - "node": ">=8" + "node": "^12.20 || >= 14.13" } }, - "node_modules/is-electron": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", - "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==" + "node_modules/fetch-blob/node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-loopback-addr": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-loopback-addr/-/is-loopback-addr-2.0.2.tgz", - "integrity": "sha512-26POf2KRCno/KTNL5Q0b/9TYnL00xEsSaLfiFRmjM7m7Lw7ZMmFybzzuX4CcsLAluZGd+niLUiMRxEooVE3aqg==" + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, "engines": { - "node": ">=0.12.0" + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/freeport-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-promise/-/freeport-promise-2.0.0.tgz", + "integrity": "sha512-dwWpT1DdQcwrhmRwnDnPM/ZFny+FtzU+k50qF2eid3KxaQDsMiBrwo1i0G3qSugkN5db6Cb0zgfc68QeTOpEFg==", + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-2.0.1.tgz", + "integrity": "sha512-7HuY/hebu4gryTDT7O/XY/fvY9wRByEGdK6QOa4of8npTcv0+NS6frFKABcf6S9EBAsveTuKTsZQQBFMMNILIg==" + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { "node": ">=8" - } - }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, "engines": { "node": ">=10" }, @@ -3448,1014 +3625,917 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/iso-url": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-1.2.1.tgz", - "integrity": "sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==", - "engines": { - "node": ">=12" - } - }, - "node_modules/it-all": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/it-all/-/it-all-3.0.3.tgz", - "integrity": "sha512-LwEVD1d0b1O5mDwumnZk+80jSBn5sXDxQ41xiD6j6l2lRiWH6lBLdxXx1C6mlKrXQwRHzUQagOZUmqttDUwb0A==" - }, - "node_modules/it-batch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/it-batch/-/it-batch-3.0.3.tgz", - "integrity": "sha512-KdKVGOZgYhxiHTMphzPKaiNL99yyUgeDoqRmSedbKJr05nP5RxtiIPWX+i1dLCADRjExbGtKfFsrogNgH0h9SA==" - }, - "node_modules/it-batched-bytes": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/it-batched-bytes/-/it-batched-bytes-2.0.4.tgz", - "integrity": "sha512-n4V19XACvFG+b8lCkuvidYvwpyz3++DAolqZGI+9AcDvIPMAhVwwtFCe9SiDIz45OzQnnNYwBgBxbIinHPgraA==", - "dependencies": { - "p-defer": "^4.0.0", - "uint8arraylist": "^2.4.1" - } - }, - "node_modules/it-byte-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-1.0.1.tgz", - "integrity": "sha512-Nu1/y8ObmrEmpHfWBHrWKtla9xwTdnMceB7v1z7tM+H84VP5Ou59wyFiJHsyvuIETLfKFY+TfhEbOJy24FRGjQ==", + "node_modules/hamt-sharding": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/hamt-sharding/-/hamt-sharding-3.0.2.tgz", + "integrity": "sha512-f0DzBD2tSmLFdFsLAvOflIBqFPjerbA7BfmwO8mVho/5hXwgyyYhv+ijIzidQf/DpDX3bRjAQvhGoBFj+DBvPw==", "dependencies": { - "it-pushable": "^3.2.0", - "it-stream-types": "^2.0.1", - "uint8arraylist": "^2.4.1" + "sparse-array": "^1.3.1", + "uint8arrays": "^4.0.2" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/it-drain": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-3.0.3.tgz", - "integrity": "sha512-l4s+izxUpFAR2axprpFiCaq0EtxK1QMd0LWbEtau5b+OegiZ5xdRtz35iJyh6KZY9QtuwEiQxydiOfYJc7stoA==" - }, - "node_modules/it-filter": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-3.0.3.tgz", - "integrity": "sha512-2zXUrJuuV6QHM21ahc8NqVUUxkLMVDWXBoUBcj9GCQLQez2OXmddTHN0r0F5B+TkNTpeL618yIgXi1HNPJOxow==", + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, "dependencies": { - "it-peekable": "^3.0.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/it-filter/node_modules/it-peekable": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-3.0.2.tgz", - "integrity": "sha512-nWwUdhNQ1CfAuoJmsaUotNMYUrfNIlY9gBA1jwWfWSu1I0mLY2brwreKHGOUptXLJUiG5pR04He0xYZMWBRiGA==" - }, - "node_modules/it-first": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/it-first/-/it-first-3.0.3.tgz", - "integrity": "sha512-RC8tplctsDpoBUljwsp1viiyaR5fPvMe+FgbbcU0sFjKkJa7iwbB4CCPhHtVYSdjsrREfr0QEotfQrBoGyt7Dw==" - }, - "node_modules/it-foreach": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/it-foreach/-/it-foreach-2.0.4.tgz", - "integrity": "sha512-txxcoc09g+KdLyOapxAuB12H9zUb2FuZC/TqSXRT+YR0T5fHnvcDIhspgvx/e/HiPKlKjOR8onA0qtuiAtcXqg==", - "dependencies": { - "it-peekable": "^3.0.0" + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/it-foreach/node_modules/it-peekable": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-3.0.2.tgz", - "integrity": "sha512-nWwUdhNQ1CfAuoJmsaUotNMYUrfNIlY9gBA1jwWfWSu1I0mLY2brwreKHGOUptXLJUiG5pR04He0xYZMWBRiGA==" - }, - "node_modules/it-glob": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-2.0.5.tgz", - "integrity": "sha512-LMigc3F1ODHf8oNY05AcSsU2McT4ecqkmoDcJ93SEEZ3KgmFHzVwsszbyj8j1EFmXreR9gwWH6r53dUnGXboIA==", - "dependencies": { - "minimatch": "^9.0.0" - } + "node_modules/hashlru": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hashlru/-/hashlru-2.3.0.tgz", + "integrity": "sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==" }, - "node_modules/it-glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" } }, - "node_modules/it-glob/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/helia": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/helia/-/helia-2.1.0.tgz", + "integrity": "sha512-OJOm99WYZC7o3hGRhv2rbWK6nDw2cRWx2+g6uMDF5YL04yZ2vZcE/8xccM3ekhrZFSJhbUGPID4AKGULIaxHbg==", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@chainsafe/libp2p-gossipsub": "^10.0.0", + "@chainsafe/libp2p-noise": "^13.0.0", + "@chainsafe/libp2p-yamux": "^5.0.0", + "@helia/delegated-routing-v1-http-api-client": "^1.1.0", + "@helia/interface": "^2.1.0", + "@ipld/dag-cbor": "^9.0.0", + "@ipld/dag-json": "^10.0.1", + "@ipld/dag-pb": "^4.0.3", + "@libp2p/bootstrap": "^9.0.2", + "@libp2p/interface": "^0.1.1", + "@libp2p/kad-dht": "^10.0.2", + "@libp2p/logger": "^3.0.1", + "@libp2p/mdns": "^9.0.2", + "@libp2p/mplex": "^9.0.2", + "@libp2p/tcp": "^8.0.2", + "@libp2p/webrtc": "^3.1.3", + "@libp2p/websockets": "^7.0.2", + "@libp2p/webtransport": "^3.0.3", + "any-signal": "^4.1.1", + "blockstore-core": "^4.0.0", + "cborg": "^4.0.1", + "datastore-core": "^9.0.0", + "interface-blockstore": "^5.0.0", + "interface-datastore": "^8.0.0", + "interface-store": "^5.0.1", + "ipfs-bitswap": "^19.0.0", + "ipns": "^7.0.1", + "it-all": "^3.0.2", + "it-drain": "^3.0.1", + "it-filter": "^3.0.1", + "it-foreach": "^2.0.2", + "libp2p": "^0.46.6", + "mortice": "^3.0.1", + "multiformats": "^12.0.1", + "p-defer": "^4.0.0", + "p-queue": "^7.3.4", + "progress-events": "^1.0.0", + "uint8arrays": "^4.0.3" } }, - "node_modules/it-handshake": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/it-handshake/-/it-handshake-4.1.3.tgz", - "integrity": "sha512-V6Lt9A9usox9iduOX+edU1Vo94E6v9Lt9dOvg3ubFaw1qf5NCxXLi93Ao4fyCHWDYd8Y+DUhadwNtWVyn7qqLg==", - "dependencies": { - "it-pushable": "^3.1.0", - "it-reader": "^6.0.1", - "it-stream-types": "^2.0.1", - "p-defer": "^4.0.0", - "uint8arraylist": "^2.0.0" - }, + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=14.18.0" } }, - "node_modules/it-last": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/it-last/-/it-last-3.0.3.tgz", - "integrity": "sha512-veF0zWTMEJ466Otxz7jPbExiJGfJYTOiHYGfg8iGwKPIV558zIGZQJU1WNyjHfugFzAyfuFlIZKsXCCtCl8LgQ==" - }, - "node_modules/it-length": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/it-length/-/it-length-3.0.3.tgz", - "integrity": "sha512-aLoeonDJV6wMgT1ElEruc61c3FYxGa3yymujfZ0Uk4Up7mUJ15xl1ixxPnGbm+BnMkEQylJXjzp1vNYEY9blvg==" + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/it-length-prefixed": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.0.3.tgz", - "integrity": "sha512-YAu424ceYpXctxtjcLOqn7vJq082CaoP8J646ZusYISfQc3bpzQErgTUqMFj81V262KG2W9/YMBHsy6A/4yvmg==", - "dependencies": { - "err-code": "^3.0.1", - "it-reader": "^6.0.1", - "it-stream-types": "^2.0.1", - "uint8-varint": "^2.0.1", - "uint8arraylist": "^2.0.0", - "uint8arrays": "^4.0.2" - }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">= 4" } }, - "node_modules/it-length-prefixed-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-1.0.2.tgz", - "integrity": "sha512-gWevodoctgwWUaRJN9t+xEs1H1GQNYAjLCR7FO50fon9Ph4OJGgrxPKTc26QXKrC/cIQZLkHYClphUw0wl1k2A==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, "dependencies": { - "it-byte-stream": "^1.0.0", - "it-length-prefixed": "^9.0.1", - "it-stream-types": "^2.0.1", - "uint8-varint": "^2.0.1", - "uint8arraylist": "^2.4.1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/it-map": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/it-map/-/it-map-3.0.4.tgz", - "integrity": "sha512-h5zCxovJQ+mzJT75xP4GkJuFrJQ5l7IIdhZ6AOWaE02g5F7T1k1j4CB/uKSRR05LLLOi1LqG+7CrH9bi8GIXYA==", - "dependencies": { - "it-peekable": "^3.0.0" + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" } }, - "node_modules/it-map/node_modules/it-peekable": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-3.0.2.tgz", - "integrity": "sha512-nWwUdhNQ1CfAuoJmsaUotNMYUrfNIlY9gBA1jwWfWSu1I0mLY2brwreKHGOUptXLJUiG5pR04He0xYZMWBRiGA==" - }, - "node_modules/it-merge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-3.0.2.tgz", - "integrity": "sha512-bMk2km8lTz+Rwv30hzDUdGIcqQkOemFJqmGT2wqQZ6/zHKCsYqdRunPrteCqHLV/nIVhUK8nZZkDA2eJ4MJZiA==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, "dependencies": { - "it-pushable": "^3.2.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/it-pair": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/it-pair/-/it-pair-2.0.6.tgz", - "integrity": "sha512-5M0t5RAcYEQYNG5BV7d7cqbdwbCAp5yLdzvkxsZmkuZsLbTdZzah6MQySYfaAQjNDCq6PUnDt0hqBZ4NwMfW6g==", - "dependencies": { - "it-stream-types": "^2.0.1", - "p-defer": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/it-parallel": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.4.tgz", - "integrity": "sha512-fuA+SysGxbZc+Yl7EUvzQqZ8bNYQghZ0Mq9zA+fxMQ5eQYzatNg6oJk1y1PvPvNqLgKJMzEInpRO6PbLC3hGAg==", - "dependencies": { - "p-defer": "^4.0.0" - } + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, - "node_modules/it-parallel-batch": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/it-parallel-batch/-/it-parallel-batch-3.0.2.tgz", - "integrity": "sha512-8ci62F5gn5aS8/wEC0kvRKWCmenHlIi+R8waEF/SP1ImQhhkve9l4/DXEmoL7UeI5FqJktzkMzZwqDng0ZppKw==", + "node_modules/interface-blockstore": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/interface-blockstore/-/interface-blockstore-5.2.7.tgz", + "integrity": "sha512-B9UplmgUdQg15f/6xDJEbQYcjMm568cnqJsxSZYbDD0s6eQX5gKh58sd9H3aJEMosIy8T4vz9MwWWZuAOc3hQQ==", "dependencies": { - "it-batch": "^3.0.0" + "interface-store": "^5.0.0", + "multiformats": "^12.0.1" } }, - "node_modules/it-pipe": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/it-pipe/-/it-pipe-3.0.1.tgz", - "integrity": "sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA==", + "node_modules/interface-datastore": { + "version": "8.2.9", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.2.9.tgz", + "integrity": "sha512-J/8PN8TnB5xxCRtgu9Vx3zExdOzcTU5/DBF2dlU41deX1GW6/SPpbJo5DRNSnvzfjmwJ7YhUOIFXyccUp8nuAA==", "dependencies": { - "it-merge": "^3.0.0", - "it-pushable": "^3.1.2", - "it-stream-types": "^2.0.1" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "interface-store": "^5.0.0", + "uint8arrays": "^5.0.0" } }, - "node_modules/it-protobuf-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.0.2.tgz", - "integrity": "sha512-2lESJIeZS2ZlYJc/1SKs6LL4Y83rCCvZv750xV1e4uuP9114yNkw2MhIGCtSReg+qNWCvzGqOwjQbKV0LFE6wQ==", + "node_modules/interface-datastore/node_modules/uint8arrays": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.0.0.tgz", + "integrity": "sha512-RWO7gR4x6syxnKDfZO8mDCsaaYs1/BqZCxlHgrcRge50E9GTnLmtoA4kwFSGIL4s3dQkryeTkvtG6oEFEya3yg==", "dependencies": { - "it-length-prefixed-stream": "^1.0.0", - "it-stream-types": "^2.0.1", - "protons-runtime": "^5.0.0", - "uint8arraylist": "^2.4.1" + "multiformats": "^12.0.1" } }, - "node_modules/it-pushable": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/it-pushable/-/it-pushable-3.2.1.tgz", - "integrity": "sha512-sLFz2Q0oyDCJpTciZog7ipP4vSftfPy3e6JnH6YyztRa1XqkpGQaafK3Jw/JlfEBtCXfnX9uVfcpu3xpSAqCVQ==", - "dependencies": { - "p-defer": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } + "node_modules/interface-store": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-5.1.5.tgz", + "integrity": "sha512-X0KnJBk3o+YL13MxZBMwa88/b3Mdrpm0yPzkSTKDDVn9BSPH7UK6W+ZtIPO2bxKOQVmq7zqOwAnYnpfqWjb6/g==" }, - "node_modules/it-reader": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/it-reader/-/it-reader-6.0.4.tgz", - "integrity": "sha512-XCWifEcNFFjjBHtor4Sfaj8rcpt+FkY0L6WdhD578SCDhV4VUm7fCkF3dv5a+fTcfQqvN9BsxBTvWbYO6iCjTg==", - "dependencies": { - "it-stream-types": "^2.0.1", - "uint8arraylist": "^2.0.0" - }, + "node_modules/ip-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", + "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/it-sort": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/it-sort/-/it-sort-3.0.3.tgz", - "integrity": "sha512-9BuQc5Y2fmBUNhevQBUDHfItrQmzWoZcnzydJl91V6na6M+RkbNj71UtCPPNIpOt/SQG+va0pe1wMQJ9lP2Oew==", - "dependencies": { - "it-all": "^3.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/it-stream-types": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/it-stream-types/-/it-stream-types-2.0.1.tgz", - "integrity": "sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg==", + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">= 10" } }, - "node_modules/it-take": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/it-take/-/it-take-3.0.3.tgz", - "integrity": "sha512-Ay5SXEyrBKD0tO8PQif2QjrStImIsLIg0F50Uu4EeXOw8C9DfVIGfsGL3X9s65F2I9skDp9mLgBzl71IToMxNw==" - }, - "node_modules/it-to-buffer": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/it-to-buffer/-/it-to-buffer-4.0.3.tgz", - "integrity": "sha512-/xdI2hD/LvK7tzS/9DY9oKATmUZ9rg9uG7IfQRBAokM/LLujJ179fqRGneluqwKpXOtCpMRo43LJZXr8aibv6Q==", + "node_modules/ipfs-bitswap": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/ipfs-bitswap/-/ipfs-bitswap-19.0.2.tgz", + "integrity": "sha512-pm0EcnTAwMMkCmdXHw/a7uPXzQ4I/pxVFiQZ6Ebg/R64XxAky/bCOJRzmqsgqH0+prH2bXAOgzS0mOZdL+zFSw==", "dependencies": { - "uint8arrays": "^4.0.2" + "@libp2p/interface": "^0.1.1", + "@libp2p/logger": "^3.0.1", + "@multiformats/multiaddr": "^12.1.0", + "@vascosantos/moving-average": "^1.1.0", + "any-signal": "^4.1.1", + "blockstore-core": "^4.0.0", + "events": "^3.3.0", + "interface-blockstore": "^5.0.0", + "interface-store": "^5.1.0", + "it-foreach": "^2.0.2", + "it-length-prefixed": "^9.0.0", + "it-map": "^3.0.2", + "it-pipe": "^3.0.1", + "it-take": "^3.0.1", + "just-debounce-it": "^3.0.1", + "multiformats": "^12.0.1", + "progress-events": "^1.0.0", + "protons-runtime": "^5.0.0", + "timeout-abort-controller": "^3.0.0", + "uint8arraylist": "^2.4.3", + "uint8arrays": "^4.0.2", + "varint": "^6.0.0", + "varint-decoder": "^1.0.0" } }, - "node_modules/it-ws": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/it-ws/-/it-ws-6.0.5.tgz", - "integrity": "sha512-xp7tF4fHgx8+vN3Qy/8wGiWUKbC9E1U1g9PwtlbdxD7pY4zld71ZyWZVFHLxnxxg14T9mVNK5uO7U9HK11VQ5g==", + "node_modules/ipfs-unixfs": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-11.1.0.tgz", + "integrity": "sha512-Lq37nKLJOpRFjx3rcg3y+ZwUxBX7jluKfIt5UPp6wb1L3dP0sj1yaLR0Yg2CdGYvHWyUpZD1iTnT8upL0ToDOw==", "dependencies": { - "@types/ws": "^8.2.2", - "event-iterator": "^2.0.0", - "iso-url": "^1.1.2", - "it-stream-types": "^2.0.1", - "uint8arrays": "^4.0.2", - "ws": "^8.4.0" + "err-code": "^3.0.1", + "protons-runtime": "^5.0.0", + "uint8arraylist": "^2.4.3" }, "engines": { "node": ">=16.0.0", "npm": ">=7.0.0" } }, - "node_modules/iterable-ndjson": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/iterable-ndjson/-/iterable-ndjson-1.1.0.tgz", - "integrity": "sha512-OOp1Lb0o3k5MkXHx1YaIY5Z0ELosZfTnBaas9f8opJVcZGBIONA2zY/6CYE+LKkqrSDooIneZbrBGgOZnHPkrg==", - "dependencies": { - "string_decoder": "^1.2.0" - } - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "node_modules/just-debounce-it": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-3.2.0.tgz", - "integrity": "sha512-WXzwLL0745uNuedrCsCs3rpmfD6DBaf7uuVwaq98/8dafURfgQaBsSpjiPp5+CW6Vjltwy9cOGI6qE71b3T8iQ==" - }, - "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true - }, - "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", - "dev": true, + "node_modules/ipfs-unixfs-exporter": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/ipfs-unixfs-exporter/-/ipfs-unixfs-exporter-13.2.2.tgz", + "integrity": "sha512-poCxSte+SdQzuPc/Sm+gx/86VJu+IEsW6/Cfkq29yEUZDG8QuCvTkvuqAysKAYuN40aR9SjYqwYFRW/hsvspSw==", "dependencies": { - "json-buffer": "3.0.1" + "@ipld/dag-cbor": "^9.0.0", + "@ipld/dag-pb": "^4.0.0", + "@multiformats/murmur3": "^2.0.0", + "err-code": "^3.0.1", + "hamt-sharding": "^3.0.0", + "interface-blockstore": "^5.0.0", + "ipfs-unixfs": "^11.0.0", + "it-filter": "^3.0.2", + "it-last": "^3.0.2", + "it-map": "^3.0.3", + "it-parallel": "^3.0.0", + "it-pipe": "^3.0.1", + "it-pushable": "^3.1.0", + "multiformats": "^12.0.1", + "p-queue": "^7.3.0", + "progress-events": "^1.0.0", + "uint8arrays": "^4.0.2" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, + "node_modules/ipfs-unixfs-importer": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/ipfs-unixfs-importer/-/ipfs-unixfs-importer-15.2.1.tgz", + "integrity": "sha512-9ArBh7Xfz8gUSe8pq9c9ilBOXd1bbT3L+4xnI6w/usWLwnNT14p8WbFZjDD0MO1/PrD0PTUZuHNDS2l4EO+wPg==", "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "@ipld/dag-pb": "^4.0.0", + "@multiformats/murmur3": "^2.0.0", + "err-code": "^3.0.1", + "hamt-sharding": "^3.0.0", + "interface-blockstore": "^5.0.0", + "interface-store": "^5.0.1", + "ipfs-unixfs": "^11.0.0", + "it-all": "^3.0.2", + "it-batch": "^3.0.2", + "it-first": "^3.0.2", + "it-parallel-batch": "^3.0.1", + "multiformats": "^12.0.1", + "progress-events": "^1.0.0", + "rabin-wasm": "^0.1.4", + "uint8arraylist": "^2.4.3", + "uint8arrays": "^4.0.2" }, "engines": { - "node": ">= 0.8.0" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/libp2p": { - "version": "0.46.11", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-0.46.11.tgz", - "integrity": "sha512-8SHmYA3etA3EGMQ81URhs7z14U8TOT16zmGjivNa25Vj/UpV8O3yNE4gpk5Ybt37zMzHzI8IxVdai6Sn+jXYvw==", + "node_modules/ipns": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ipns/-/ipns-7.0.1.tgz", + "integrity": "sha512-S74hlKNeAW9eExGmRwEfOLAk5l/lEL3HajcenbIc7PTeyeL6PkKE31qQmTi7qynn1ll32hMAo1OagbtnceCtXQ==", "dependencies": { - "@achingbrain/nat-port-mapper": "^1.0.9", - "@libp2p/crypto": "^2.0.4", + "@libp2p/crypto": "^2.0.3", "@libp2p/interface": "^0.1.2", - "@libp2p/interface-internal": "^0.1.5", - "@libp2p/keychain": "^3.0.4", "@libp2p/logger": "^3.0.2", - "@libp2p/multistream-select": "^4.0.2", - "@libp2p/peer-collections": "^4.0.4", "@libp2p/peer-id": "^3.0.2", - "@libp2p/peer-id-factory": "^3.0.4", - "@libp2p/peer-record": "^6.0.5", - "@libp2p/peer-store": "^9.0.5", - "@libp2p/utils": "^4.0.3", - "@multiformats/mafmt": "^12.1.2", - "@multiformats/multiaddr": "^12.1.5", - "@multiformats/multiaddr-matcher": "^1.0.0", - "any-signal": "^4.1.1", - "datastore-core": "^9.0.1", - "delay": "^6.0.0", - "interface-datastore": "^8.2.0", - "it-all": "^3.0.2", - "it-drain": "^3.0.2", - "it-filter": "^3.0.1", - "it-first": "^3.0.1", - "it-handshake": "^4.1.3", - "it-length-prefixed": "^9.0.1", - "it-map": "^3.0.3", - "it-merge": "^3.0.0", - "it-pair": "^2.0.6", - "it-parallel": "^3.0.0", - "it-pipe": "^3.0.1", - "it-protobuf-stream": "^1.0.0", - "it-stream-types": "^2.0.1", - "merge-options": "^3.0.4", + "cborg": "^4.0.1", + "err-code": "^3.0.1", + "interface-datastore": "^8.1.0", "multiformats": "^12.0.1", - "p-defer": "^4.0.0", - "p-queue": "^7.3.4", - "p-retry": "^6.0.0", - "private-ip": "^3.0.0", "protons-runtime": "^5.0.0", - "rate-limiter-flexible": "^3.0.0", + "timestamp-nano": "^1.0.0", "uint8arraylist": "^2.4.3", - "uint8arrays": "^4.0.6", - "wherearewe": "^2.0.1", - "xsalsa20": "^1.1.0" + "uint8arrays": "^4.0.2" } }, - "node_modules/libp2p/node_modules/@libp2p/peer-id-factory": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-3.0.4.tgz", - "integrity": "sha512-9xpKb1UdAhKVmPHy/jssOnyJkuyyyIeP5tO3HlaiBQNtDZU66UMQORnEUD6HdYHKfBRInah2JHxTCtm2nUhGcw==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "dependencies": { - "@libp2p/crypto": "^2.0.4", - "@libp2p/interface": "^0.1.2", - "@libp2p/peer-id": "^3.0.2", - "multiformats": "^12.0.1", - "protons-runtime": "^5.0.0", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^4.0.6" + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/libp2p/node_modules/delay": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", - "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", + "node_modules/is-electron": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", + "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" + } + }, + "node_modules/is-loopback-addr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-loopback-addr/-/is-loopback-addr-2.0.2.tgz", + "integrity": "sha512-26POf2KRCno/KTNL5Q0b/9TYnL00xEsSaLfiFRmjM7m7Lw7ZMmFybzzuX4CcsLAluZGd+niLUiMRxEooVE3aqg==" + }, + "node_modules/is-network-error": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.0.0.tgz", + "integrity": "sha512-P3fxi10Aji2FZmHTrMPSNFbNC6nnp4U5juPAIjXPHkUNubi4+qK7vvdsaNpAUwXslhYm9oyjEYTxs1xd/+Ph0w==", + "engines": { + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "dev": true + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "dev": true }, - "node_modules/merge-options": { + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/it-all": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", - "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "resolved": "https://registry.npmjs.org/it-all/-/it-all-3.0.4.tgz", + "integrity": "sha512-UMiy0i9DqCHBdWvMbzdYvVGa5/w4t1cc4nchpbnjdLhklglv8mQeEYnii0gvKESJuL1zV32Cqdb33R6/GPfxpQ==" + }, + "node_modules/it-batch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/it-batch/-/it-batch-3.0.4.tgz", + "integrity": "sha512-WRu2mqOYIs+T9k7+yxSK9VJdk0UE4R0jKQsWQcti5c6vhb1FhjC2+yCB5XBrctQ9edNfCMU/wVzdDj8qSwimbA==" + }, + "node_modules/it-batched-bytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/it-batched-bytes/-/it-batched-bytes-2.0.5.tgz", + "integrity": "sha512-2VgeZ+7KPef0SD2ZgkZfWFe+sgZKdxkzNZXbsYG44nGe4NzWSZLJ6lUjkKHW/S5pSKyW88uacosz6B6K++1LDA==", "dependencies": { - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" + "p-defer": "^4.0.0", + "uint8arraylist": "^2.4.1" + } + }, + "node_modules/it-byte-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-1.0.7.tgz", + "integrity": "sha512-oWO+TitZNn1a7+Yl0SM4UAyuylhJ3MmnnewVWO5shl0Bs1KQPMWuMB/6d0X0H1ygBlYCLAxF9EJqa19pWCnVRQ==", + "dependencies": { + "it-stream-types": "^2.0.1", + "p-defer": "^4.0.0", + "race-signal": "^1.0.1", + "uint8arraylist": "^2.4.1" + } + }, + "node_modules/it-drain": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-3.0.5.tgz", + "integrity": "sha512-qYFe4SWdvs9oJGUY5bSjvmiLUMLzFEODNOQUdYdCIkuIgQF+AUB2INhM4yQ09buJ2rhHKDFxvTD/+yUq6qg0XA==" + }, + "node_modules/it-filter": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-3.0.4.tgz", + "integrity": "sha512-e0sz+st4sudK/zH6GZ/gRTRP8A/ADuJFCYDmRgMbZvR79y5+v4ZXav850bBZk5wL9zXaYZFxS1v/6Qi+Vjwh5g==", + "dependencies": { + "it-peekable": "^3.0.0" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "node_modules/it-first": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/it-first/-/it-first-3.0.4.tgz", + "integrity": "sha512-FtQl84iTNxN5EItP/JgL28V2rzNMkCzTUlNoj41eVdfix2z1DBuLnBqZ0hzYhGGa1rMpbQf0M7CQSA2adlrLJg==" }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" + "node_modules/it-foreach": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/it-foreach/-/it-foreach-2.0.6.tgz", + "integrity": "sha512-OVosBHJsdXpAyeFlCbe3IGZia+65UykyAznakNsKXK+b99dbhuu/mOnXxTadDEo1GWhKx+WA8RNanKkMf07zQw==", + "dependencies": { + "it-peekable": "^3.0.0" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, + "node_modules/it-glob": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-2.0.6.tgz", + "integrity": "sha512-4C6ccz4nhqrq7yZMzBr3MsKhyL+rlnLXIPceyGG6ogl3Lx3eeWMv1RtlySJwFi6q+jVcPyTpeYt/xftwI2JEQQ==", "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" + "minimatch": "^9.0.0" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/it-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/it-glob/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, + "node_modules/it-handshake": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/it-handshake/-/it-handshake-4.1.3.tgz", + "integrity": "sha512-V6Lt9A9usox9iduOX+edU1Vo94E6v9Lt9dOvg3ubFaw1qf5NCxXLi93Ao4fyCHWDYd8Y+DUhadwNtWVyn7qqLg==", "dependencies": { - "brace-expansion": "^1.1.7" + "it-pushable": "^3.1.0", + "it-reader": "^6.0.1", + "it-stream-types": "^2.0.1", + "p-defer": "^4.0.0", + "uint8arraylist": "^2.0.0" }, "engines": { - "node": "*" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/it-last": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/it-last/-/it-last-3.0.4.tgz", + "integrity": "sha512-Ns+KTsQWhs0KCvfv5X3Ck3lpoYxHcp4zUp4d+AOdmC8cXXqDuoZqAjfWhgCbxJubXyIYWdfE2nRcfWqgvZHP8Q==" }, - "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, + "node_modules/it-length": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/it-length/-/it-length-3.0.4.tgz", + "integrity": "sha512-RS3thYkvqtWksrV7SaAnTv+pgY7ozpS17HlRvWvcnoRjVyNJMuffdCkIKpKNPTq5uZw9zVnkVKLO077pJn5Yhg==" + }, + "node_modules/it-length-prefixed": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.0.3.tgz", + "integrity": "sha512-YAu424ceYpXctxtjcLOqn7vJq082CaoP8J646ZusYISfQc3bpzQErgTUqMFj81V262KG2W9/YMBHsy6A/4yvmg==", "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" + "err-code": "^3.0.1", + "it-reader": "^6.0.1", + "it-stream-types": "^2.0.1", + "uint8-varint": "^2.0.1", + "uint8arraylist": "^2.0.0", + "uint8arrays": "^4.0.2" }, "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, + "node_modules/it-length-prefixed-stream": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-1.1.5.tgz", + "integrity": "sha512-r/txldLo3Dq4EqLJY2mSK6y59qY7peRyomdjyhCmBlQYr7fPmiS1UA5A8mLwQV3k+WPD5zK0cu/7EpvzD4T+ew==", "dependencies": { - "balanced-match": "^1.0.0" + "it-byte-stream": "^1.0.0", + "it-length-prefixed": "^9.0.1", + "it-stream-types": "^2.0.1", + "uint8-varint": "^2.0.1", + "uint8arraylist": "^2.4.1" } }, - "node_modules/mocha/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, + "node_modules/it-map": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/it-map/-/it-map-3.0.5.tgz", + "integrity": "sha512-hB0TDXo/h4KSJJDSRLgAPmDroiXP6Fx1ck4Bzl3US9hHfZweTKsuiP0y4gXuTMcJlS6vj0bb+f70rhkD47ZA3w==", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "it-peekable": "^3.0.0" } }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, + "node_modules/it-merge": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-3.0.3.tgz", + "integrity": "sha512-FYVU15KC5pb/GQX1Ims+lee8d4pdqGVCpWr0lkNj8o4xuNo7jY71k6GuEiWdP+T7W1bJqewSxX5yoTy5yZpRVA==", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" + "it-pushable": "^3.2.0" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "node_modules/it-ndjson": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/it-ndjson/-/it-ndjson-1.0.5.tgz", + "integrity": "sha512-2UEROCo458dDu9dABKb9fvD34p2YL6SqV5EOXN8SysX2Fpx0MSN69EiBmLLDDYSpQlrW0I5j3Tm8DtEIL5NsIw==" }, - "node_modules/mocha/node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" + "node_modules/it-pair": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/it-pair/-/it-pair-2.0.6.tgz", + "integrity": "sha512-5M0t5RAcYEQYNG5BV7d7cqbdwbCAp5yLdzvkxsZmkuZsLbTdZzah6MQySYfaAQjNDCq6PUnDt0hqBZ4NwMfW6g==", + "dependencies": { + "it-stream-types": "^2.0.1", + "p-defer": "^4.0.0" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "node_modules/it-parallel": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.6.tgz", + "integrity": "sha512-i7UM7I9LTkDJw3YIqXHFAPZX6CWYzGc+X3irdNrVExI4vPazrJdI7t5OqrSVN8CONXLAunCiqaSV/zZRbQR56A==", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "p-defer": "^4.0.0" } }, - "node_modules/mocha/node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "node_modules/mocha/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, + "node_modules/it-parallel-batch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/it-parallel-batch/-/it-parallel-batch-3.0.4.tgz", + "integrity": "sha512-O1omh8ss8+UtXiMjE+8kM5C20DT0Ma4VtKVfrSHOJU0UHZ+iWBXarabzPYEp+WiuQmrv+klDPPlTZ9KaLN9xOA==", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" + "it-batch": "^3.0.0" } }, - "node_modules/mock-socket": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.2.1.tgz", - "integrity": "sha512-aw9F9T9G2zpGipLLhSNh6ZpgUyUl4frcVmRN08uE1NWPWg43Wx6+sGPDbQ7E5iFZZDJW5b5bypMeAEHqTbIFag==", - "engines": { - "node": ">= 8" - } + "node_modules/it-peekable": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-3.0.3.tgz", + "integrity": "sha512-Wx21JX/rMzTEl9flx3DGHuPV1KQFGOl8uoKfQtmZHgPQtGb89eQ6RyVd82h3HuP9Ghpt0WgBDlmmdWeHXqyx7w==" }, - "node_modules/mortice": { + "node_modules/it-pipe": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mortice/-/mortice-3.0.1.tgz", - "integrity": "sha512-eyDUsl1nCR9+JtNksKnaESLP9MgAXCA4w1LTtsmOSQNsThnv++f36rrBu5fC/fdGIwTJZmbiaR/QewptH93pYA==", + "resolved": "https://registry.npmjs.org/it-pipe/-/it-pipe-3.0.1.tgz", + "integrity": "sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA==", "dependencies": { - "nanoid": "^4.0.0", - "observable-webworkers": "^2.0.1", - "p-queue": "^7.2.0", - "p-timeout": "^6.0.0" + "it-merge": "^3.0.0", + "it-pushable": "^3.1.2", + "it-stream-types": "^2.0.1" }, "engines": { "node": ">=16.0.0", "npm": ">=7.0.0" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "node_modules/it-protobuf-stream": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.2.tgz", + "integrity": "sha512-epZBuG+7cPaTxCR/Lf3ApshBdA9qfflGPQLfLLrp9VQ0w67Z2xo4H+SLLetav57/29oPtAXwVaoyemg99JOWzA==", + "dependencies": { + "it-length-prefixed-stream": "^1.0.0", + "it-stream-types": "^2.0.1", + "protons-runtime": "^5.0.0", + "uint8arraylist": "^2.4.1" + } + }, + "node_modules/it-pushable": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/it-pushable/-/it-pushable-3.2.3.tgz", + "integrity": "sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg==", + "dependencies": { + "p-defer": "^4.0.0" + } }, - "node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", + "node_modules/it-reader": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/it-reader/-/it-reader-6.0.4.tgz", + "integrity": "sha512-XCWifEcNFFjjBHtor4Sfaj8rcpt+FkY0L6WdhD578SCDhV4VUm7fCkF3dv5a+fTcfQqvN9BsxBTvWbYO6iCjTg==", "dependencies": { - "@multiformats/base-x": "^4.0.1" + "it-stream-types": "^2.0.1", + "uint8arraylist": "^2.0.0" }, "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "node_modules/it-sort": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/it-sort/-/it-sort-3.0.4.tgz", + "integrity": "sha512-tvnC93JZZWjX4UxALy0asow0dzXabkoaRbrPJKClTKhNCqw4gzHr+H5axf1gohcthedRRkqd/ae+wl7WqoxFhw==", "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" + "it-all": "^3.0.0" } }, - "node_modules/multiformats": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.1.tgz", - "integrity": "sha512-GBSToTmri2vJYs8wqcZQ8kB21dCaeTOzHTIAlr8J06C1eL6UbzqURXFZ5Fl0EYm9GAFz1IlYY8SxGOs9G9NJRg==", + "node_modules/it-stream-types": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/it-stream-types/-/it-stream-types-2.0.1.tgz", + "integrity": "sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg==", "engines": { "node": ">=16.0.0", "npm": ">=7.0.0" } }, - "node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", + "node_modules/it-take": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/it-take/-/it-take-3.0.4.tgz", + "integrity": "sha512-RG8HDjAZlvkzz5Nav4xq6gK5zNT+Ff1UTIf+CrSJW8nIl6N1FpBH5e7clUshiCn+MmmMoSdIEpw4UaTolszxhA==" + }, + "node_modules/it-to-buffer": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/it-to-buffer/-/it-to-buffer-4.0.5.tgz", + "integrity": "sha512-DoQWOBhYmVHa0ooMauJLVbZ8V8K3AsFgqBs7I+kX7f3KbFMEy0MA9w7TJo9Utd4T4H+iUScyLFwo7REA4dWreA==", "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" + "uint8arrays": "^5.0.0" } }, - "node_modules/multihashes/node_modules/multiformats": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", - "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" - }, - "node_modules/multihashes/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", + "node_modules/it-to-buffer/node_modules/uint8arrays": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.0.0.tgz", + "integrity": "sha512-RWO7gR4x6syxnKDfZO8mDCsaaYs1/BqZCxlHgrcRge50E9GTnLmtoA4kwFSGIL4s3dQkryeTkvtG6oEFEya3yg==", "dependencies": { - "multiformats": "^9.4.2" + "multiformats": "^12.0.1" } }, - "node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/murmurhash3js-revisited": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", - "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==", + "node_modules/it-ws": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/it-ws/-/it-ws-6.1.1.tgz", + "integrity": "sha512-oyk4eCeZto2lzWDnJOa3j1S2M+VOGKUh8isEf94ySoaL6IFlyie0T4P9E0ZUaIvX8LyJxYFHFKCt8Zk7Sm/XPQ==", + "dependencies": { + "@types/ws": "^8.2.2", + "event-iterator": "^2.0.0", + "it-stream-types": "^2.0.1", + "uint8arrays": "^5.0.0", + "ws": "^8.4.0" + }, "engines": { - "node": ">=8.0.0" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^14 || ^16 || >=18" + "node_modules/it-ws/node_modules/uint8arrays": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.0.0.tgz", + "integrity": "sha512-RWO7gR4x6syxnKDfZO8mDCsaaYs1/BqZCxlHgrcRge50E9GTnLmtoA4kwFSGIL4s3dQkryeTkvtG6oEFEya3yg==", + "dependencies": { + "multiformats": "^12.0.1" } }, - "node_modules/native-fetch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/native-fetch/-/native-fetch-4.0.2.tgz", - "integrity": "sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg==", - "peerDependencies": { - "undici": "*" + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "engines": { - "node": ">= 0.4.0" - } + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true }, - "node_modules/nise": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", - "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/just-debounce-it": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-3.2.0.tgz", + "integrity": "sha512-WXzwLL0745uNuedrCsCs3rpmfD6DBaf7uuVwaq98/8dafURfgQaBsSpjiPp5+CW6Vjltwy9cOGI6qE71b3T8iQ==" + }, + "node_modules/just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^10.0.2", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" + "json-buffer": "3.0.1" } }, - "node_modules/nock": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.3.1.tgz", - "integrity": "sha512-vHnopocZuI93p2ccivFyGuUfzjq2fxNyNurp7816mlT5V5HF4SzXu8lvLrVzBbNqzs+ODooZ6OksuSUNM7Njkw==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, "dependencies": { - "debug": "^4.1.0", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.21", - "propagate": "^2.0.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">= 10.13" - } - }, - "node_modules/node-datachannel": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/node-datachannel/-/node-datachannel-0.4.3.tgz", - "integrity": "sha512-I2SYzgqNd5gX8B+hQcff0qpGGwNiHZnXJNgsFyW0UXk1A3fbC/4L1PhSKGSuc7z0+Bk3raMN939E0KroJ5CJhA==", - "bundleDependencies": [ - "prebuild-install" - ], - "hasInstallScript": true, - "dependencies": { - "prebuild-install": "^7.0.1" - } - }, - "node_modules/node-datachannel/node_modules/ansi-regex": { - "version": "2.1.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/node-datachannel/node_modules/aproba": { - "version": "1.2.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/node-datachannel/node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/node-datachannel/node_modules/buffer": { - "version": "5.7.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT", + "node_modules/libp2p": { + "version": "0.46.21", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-0.46.21.tgz", + "integrity": "sha512-p/3vCpw+ciizhlBofpzuez+4Fs8EeVFaVQZUQPwnQwycuOFcWLBhcqkOtv4KlqImFKOk+9TuyW1Xofjmr/wPnA==", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/node-datachannel/node_modules/chownr": { - "version": "1.1.4", - "inBundle": true, - "license": "ISC" - }, - "node_modules/node-datachannel/node_modules/code-point-at": { - "version": "1.1.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "@achingbrain/nat-port-mapper": "^1.0.9", + "@libp2p/crypto": "^2.0.8", + "@libp2p/interface": "^0.1.6", + "@libp2p/interface-internal": "^0.1.9", + "@libp2p/keychain": "^3.0.8", + "@libp2p/logger": "^3.1.0", + "@libp2p/multistream-select": "^4.0.6", + "@libp2p/peer-collections": "^4.0.8", + "@libp2p/peer-id": "^3.0.6", + "@libp2p/peer-id-factory": "^3.0.8", + "@libp2p/peer-record": "^6.0.9", + "@libp2p/peer-store": "^9.0.9", + "@libp2p/utils": "^4.0.7", + "@multiformats/mafmt": "^12.1.2", + "@multiformats/multiaddr": "^12.1.5", + "@multiformats/multiaddr-matcher": "^1.0.0", + "any-signal": "^4.1.1", + "datastore-core": "^9.0.1", + "delay": "^6.0.0", + "interface-datastore": "^8.2.0", + "it-all": "^3.0.2", + "it-drain": "^3.0.2", + "it-filter": "^3.0.1", + "it-first": "^3.0.1", + "it-handshake": "^4.1.3", + "it-length-prefixed": "^9.0.1", + "it-map": "^3.0.3", + "it-merge": "^3.0.0", + "it-pair": "^2.0.6", + "it-parallel": "^3.0.0", + "it-pipe": "^3.0.1", + "it-protobuf-stream": "^1.0.0", + "it-stream-types": "^2.0.1", + "merge-options": "^3.0.4", + "multiformats": "^12.0.1", + "p-defer": "^4.0.0", + "p-queue": "^7.3.4", + "p-retry": "^6.0.0", + "private-ip": "^3.0.0", + "protons-runtime": "^5.0.0", + "rate-limiter-flexible": "^3.0.0", + "uint8arraylist": "^2.4.3", + "uint8arrays": "^4.0.6", + "wherearewe": "^2.0.1", + "xsalsa20": "^1.1.0" } }, - "node_modules/node-datachannel/node_modules/console-control-strings": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/node-datachannel/node_modules/core-util-is": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/node-datachannel/node_modules/decompress-response": { + "node_modules/locate-path": { "version": "6.0.0", - "inBundle": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "dependencies": { - "mimic-response": "^3.1.0" + "p-locate": "^5.0.0" }, "engines": { "node": ">=10" @@ -4464,123 +4544,114 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/node-datachannel/node_modules/deep-extend": { - "version": "0.6.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/node-datachannel/node_modules/delegates": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true }, - "node_modules/node-datachannel/node_modules/detect-libc": { - "version": "2.0.1", - "inBundle": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, - "node_modules/node-datachannel/node_modules/end-of-stream": { - "version": "1.4.4", - "inBundle": true, - "license": "MIT", + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/node-datachannel/node_modules/expand-template": { - "version": "2.0.3", - "inBundle": true, - "license": "(MIT OR WTFPL)", + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/node-datachannel/node_modules/fs-constants": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/node-datachannel/node_modules/github-from-package": { - "version": "0.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/node-datachannel/node_modules/has-unicode": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/node-datachannel/node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "BSD-3-Clause" + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, - "node_modules/node-datachannel/node_modules/inherits": { - "version": "2.0.4", - "inBundle": true, - "license": "ISC" + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/node-datachannel/node_modules/ini": { - "version": "1.3.8", - "inBundle": true, - "license": "ISC" + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true }, - "node_modules/node-datachannel/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", "dependencies": { - "number-is-nan": "^1.0.0" + "is-plain-obj": "^2.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/node-datachannel/node_modules/isarray": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, - "node_modules/node-datachannel/node_modules/lru-cache": { - "version": "6.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=10" + "node": ">=8.6" } }, - "node_modules/node-datachannel/node_modules/lru-cache/node_modules/yallist": { + "node_modules/mimic-fn": { "version": "4.0.0", - "inBundle": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/node-datachannel/node_modules/mimic-response": { + "node_modules/mimic-response": { "version": "3.1.0", - "inBundle": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "engines": { "node": ">=10" }, @@ -4588,353 +4659,345 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/node-datachannel/node_modules/minimist": { - "version": "1.2.6", - "inBundle": true, - "license": "MIT" - }, - "node_modules/node-datachannel/node_modules/mkdirp-classic": { - "version": "0.5.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/node-datachannel/node_modules/napi-build-utils": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/node-datachannel/node_modules/node-abi": { - "version": "3.8.0", - "inBundle": true, - "license": "MIT", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { - "semver": "^7.3.5" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-datachannel/node_modules/node-abi/node_modules/semver": { - "version": "7.3.7", - "inBundle": true, - "license": "ISC", + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" }, "bin": { - "semver": "bin/semver.js" + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" }, "engines": { - "node": ">=10" + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" } }, - "node_modules/node-datachannel/node_modules/npmlog": { - "version": "4.1.2", - "inBundle": true, - "license": "ISC", + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/node-datachannel/node_modules/npmlog/node_modules/are-we-there-yet": { - "version": "1.1.7", - "inBundle": true, - "license": "ISC", + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/node-datachannel/node_modules/npmlog/node_modules/gauge": { - "version": "2.7.4", - "inBundle": true, - "license": "ISC", + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/node-datachannel/node_modules/number-is-nan": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/mocha/node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/node-datachannel/node_modules/object-assign": { - "version": "4.1.1", - "inBundle": true, - "license": "MIT", + "node_modules/mock-socket": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.3.1.tgz", + "integrity": "sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==", "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/node-datachannel/node_modules/once": { - "version": "1.4.0", - "inBundle": true, - "license": "ISC", + "node_modules/mortice": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/mortice/-/mortice-3.0.3.tgz", + "integrity": "sha512-C1maDct5qTPH6dDXEzZg9XP+RteVHsdQ3IRdOF2Halll5qsCKYVwNL1x9FHGs3xOFvB6xerqxY9AG+Ac6aLr6A==", "dependencies": { - "wrappy": "1" + "observable-webworkers": "^2.0.1", + "p-queue": "^7.2.0", + "p-timeout": "^6.0.0" } }, - "node_modules/node-datachannel/node_modules/prebuild-install": { - "version": "7.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multibase": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", + "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", + "deprecated": "This module has been superseded by the multiformats module", "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" + "@multiformats/base-x": "^4.0.1" }, "engines": { - "node": ">=10" - } - }, - "node_modules/node-datachannel/node_modules/process-nextick-args": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/node-datachannel/node_modules/pump": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "node": ">=12.0.0", + "npm": ">=6.0.0" } }, - "node_modules/node-datachannel/node_modules/rc": { - "version": "1.2.8", - "inBundle": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" }, "bin": { - "rc": "cli.js" + "multicast-dns": "cli.js" } }, - "node_modules/node-datachannel/node_modules/readable-stream": { - "version": "2.3.7", - "inBundle": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "node_modules/multiformats": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/node-datachannel/node_modules/safe-buffer": { - "version": "5.1.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/node-datachannel/node_modules/set-blocking": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/node-datachannel/node_modules/signal-exit": { - "version": "3.0.3", - "inBundle": true, - "license": "ISC" - }, - "node_modules/node-datachannel/node_modules/simple-concat": { - "version": "1.0.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/node-datachannel/node_modules/simple-get": { - "version": "4.0.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT", + "node_modules/multihashes": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", + "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" + "multibase": "^4.0.1", + "uint8arrays": "^3.0.0", + "varint": "^5.0.2" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=6.0.0" } }, - "node_modules/node-datachannel/node_modules/string_decoder": { - "version": "1.1.1", - "inBundle": true, - "license": "MIT", + "node_modules/multihashes/node_modules/multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" + }, + "node_modules/multihashes/node_modules/uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", "dependencies": { - "safe-buffer": "~5.1.0" + "multiformats": "^9.4.2" } }, - "node_modules/node-datachannel/node_modules/string-width": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, + "node_modules/multihashes/node_modules/varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" + }, + "node_modules/murmurhash3js-revisited": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", + "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==", "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/node-datachannel/node_modules/strip-ansi": { - "version": "3.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/node-datachannel/node_modules/strip-json-comments": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" }, - "node_modules/node-datachannel/node_modules/tar-fs": { - "version": "2.1.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" } }, - "node_modules/node-datachannel/node_modules/tar-stream": { - "version": "2.1.4", - "inBundle": true, - "license": "MIT", + "node_modules/nise": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.5.tgz", + "integrity": "sha512-VJuPIfUFaXNRzETTQEEItTOP8Y171ijr+JLq42wHes3DiryR8vT+1TXQW/Rx8JNUhyYYWyIvjXTU6dOhJcs9Nw==", + "dev": true, "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" + "@sinonjs/commons": "^2.0.0", + "@sinonjs/fake-timers": "^10.0.2", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" } }, - "node_modules/node-datachannel/node_modules/tar-stream/node_modules/bl": { - "version": "4.1.0", - "inBundle": true, - "license": "MIT", + "node_modules/nise/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "type-detect": "4.0.8" } }, - "node_modules/node-datachannel/node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.0", - "inBundle": true, - "license": "MIT", + "node_modules/nock": { + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.4.0.tgz", + "integrity": "sha512-W8NVHjO/LCTNA64yxAPHV/K47LpGYcVzgKd3Q0n6owhwvD0Dgoterc25R4rnZbckJEb6Loxz1f5QMuJpJnbSyQ==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "propagate": "^2.0.0" }, "engines": { - "node": ">= 6" + "node": ">= 10.13" } }, - "node_modules/node-datachannel/node_modules/tunnel-agent": { - "version": "0.6.0", - "inBundle": true, - "license": "Apache-2.0", + "node_modules/node-abi": { + "version": "3.52.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz", + "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==", "dependencies": { - "safe-buffer": "^5.0.1" + "semver": "^7.3.5" }, "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/node-datachannel/node_modules/util-deprecate": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/node-datachannel/node_modules/wide-align": { - "version": "1.1.5", - "inBundle": true, - "license": "ISC", + "node_modules/node-datachannel": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/node-datachannel/-/node-datachannel-0.5.2.tgz", + "integrity": "sha512-COuQtVSZc80jt7TV2/BlksOiqZyNFbitDENy8MensezoA7pEGB+lmd9Qk3dnmSZ1nr1vyhF44FL7IkKsQ52Mvw==", + "hasInstallScript": true, "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "node-domexception": "^2.0.1", + "prebuild-install": "^7.0.1" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/node-datachannel/node_modules/wrappy": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC" - }, "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-2.0.1.tgz", + "integrity": "sha512-M85rnSC7WQ7wnfQTARPT4LrK7nwCHLdDFOCcItZMhTQjyCebJH8GciKqYJNgaOFZs9nFmTmd/VMyi3OW5jA47w==", "funding": [ { "type": "github", @@ -4946,7 +5009,7 @@ } ], "engines": { - "node": ">=10.5.0" + "node": ">=16" } }, "node_modules/node-fetch": { @@ -4974,18 +5037,6 @@ "node": ">= 6.13.0" } }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "optional": true, - "peer": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -5033,7 +5084,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -5094,17 +5144,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-event/node_modules/p-timeout": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", - "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -5136,11 +5175,11 @@ } }, "node_modules/p-queue": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.4.tgz", - "integrity": "sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.4.1.tgz", + "integrity": "sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA==", "dependencies": { - "eventemitter3": "^4.0.7", + "eventemitter3": "^5.0.1", "p-timeout": "^5.0.2" }, "engines": { @@ -5150,11 +5189,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-queue/node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, "node_modules/p-queue/node_modules/p-timeout": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", @@ -5167,11 +5201,12 @@ } }, "node_modules/p-retry": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.0.0.tgz", - "integrity": "sha512-6NuuXu8Upembd4sNdo4PRbs+M6aHgBTrFE6lkH0YKjVzne3cDW4gkncB98ty/bkMxLxLVNeD5bX9FyWjM7WZ+A==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.1.0.tgz", + "integrity": "sha512-fJLEQ2KqYBJRuaA/8cKMnqhulqNM+bpcjYtXNex2t3mOXKRYPitAJt9NacSf8XAFzcYahSAbKpobiWDSqHSh2g==", "dependencies": { "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" }, "engines": { @@ -5182,9 +5217,9 @@ } }, "node_modules/p-timeout": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.1.tgz", - "integrity": "sha512-yqz2Wi4fiFRpMmK0L2pGAU49naSUaP23fFIQL2Y6YT+qDGPoFwpvgQM/wzc6F8JoenUkIlAFa4Ql7NguXBxI7w==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", + "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", "engines": { "node": ">=14.16" }, @@ -5271,6 +5306,31 @@ "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" }, + "node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -5281,9 +5341,9 @@ } }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -5350,15 +5410,21 @@ } }, "node_modules/protons-runtime": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.0.2.tgz", - "integrity": "sha512-eKppVrIS5dDh+Y61Yj4bDEOs2sQLQbQGIhr7EBiybPQhIMGBynzVXlYILPWl3Td1GDadobc8qevh5D+JwfG9bw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.2.0.tgz", + "integrity": "sha512-jL3VSbXllgm17zurKQ/z+Ath0w+4BknJ+l/NLocfjAB8hbeASOZTNtb7zK3nDsKq2pHK9YFumNQvpkZ6gFfWhA==", "dependencies": { - "protobufjs": "^7.0.0", - "uint8arraylist": "^2.4.3" - }, - "peerDependencies": { - "uint8arraylist": "^2.3.2" + "uint8arraylist": "^2.4.3", + "uint8arrays": "^4.0.6" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "node_modules/punycode": { @@ -5425,6 +5491,11 @@ } } }, + "node_modules/race-signal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.0.2.tgz", + "integrity": "sha512-o3xNv0iTcIDQCXFlF6fPAMEBRjFxssgGoRqLbg06m+AdzEXXLUmoNOoUHTVz2NoBI8hHwKFKoC6IqyNtWr2bww==" + }, "node_modules/rambda": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.5.0.tgz", @@ -5441,9 +5512,31 @@ } }, "node_modules/rate-limiter-flexible": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rate-limiter-flexible/-/rate-limiter-flexible-3.0.0.tgz", - "integrity": "sha512-janAJkWxWxmLka0hV+XvCTo0M8keeSeOuz8ZL33cTXrkS4ek9mQ2VJm9ri7fm03oTVth19Sfqb1ijCmo7K/vAg==" + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/rate-limiter-flexible/-/rate-limiter-flexible-3.0.6.tgz", + "integrity": "sha512-tlvbee6lyse/XTWmsuBDS4MT8N65FyM151bPmQlFyfhv9+RIHs7d3rSTXoz0j35H910dM01mH0yTIeWYo8+aAw==" + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/readable-stream": { "version": "3.6.2", @@ -5566,10 +5659,23 @@ } }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/sanitize-filename": { "version": "1.6.3", @@ -5580,15 +5686,14 @@ } }, "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -5632,10 +5737,53 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/sinon": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.0.0.tgz", - "integrity": "sha512-B8AaZZm9CT5pqe4l4uWJztfD/mOTa7dL8Qo0W4+s+t74xECOgSZDDQCBjNgIK3+n4kyxQrSTv2V5ul8K25qkiQ==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.1.3.tgz", + "integrity": "sha512-mjnWWeyxcAf9nC0bXcPmiDut+oE8HYridTNzBbF98AYVLmWwGRp2ISEpyhYflG1ifILT+eNn3BmKUJPxjXUPlA==", "dev": true, "dependencies": { "@sinonjs/commons": "^3.0.0", @@ -5650,15 +5798,6 @@ "url": "https://opencollective.com/sinon" } }, - "node_modules/sinon/node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, "node_modules/sinon/node_modules/diff": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", @@ -5678,12 +5817,11 @@ } }, "node_modules/smoldot": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-1.0.4.tgz", - "integrity": "sha512-N3TazI1C4GGrseFH/piWyZCCCRJTRx2QhDfrUKRT4SzILlW5m8ayZ3QTKICcz1C/536T9cbHHJyP7afxI6Mi1A==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-2.0.7.tgz", + "integrity": "sha512-VAOBqEen6vises36/zgrmAT1GWk2qE3X8AGnO7lmQFdskbKx8EovnwS22rtPAG+Y1Rk23/S22kDJUdPANyPkBA==", "optional": true, "dependencies": { - "pako": "^2.0.4", "ws": "^8.8.1" } }, @@ -5714,14 +5852,6 @@ "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz", "integrity": "sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==" }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -5730,25 +5860,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -5810,6 +5921,65 @@ "node": ">=8" } }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/tar-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -5875,9 +6045,9 @@ } }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -5931,6 +6101,17 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -5965,9 +6146,9 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -5991,44 +6172,34 @@ } }, "node_modules/uint8-varint": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uint8-varint/-/uint8-varint-2.0.1.tgz", - "integrity": "sha512-euvmpuulJstK5+xNuI4S1KfnxJnbI5QP52RXIR3GZ3/ZMkOsEK2AgCtFpNvEQLXMxMx2o0qcyevK1fJwOZJagQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uint8-varint/-/uint8-varint-2.0.2.tgz", + "integrity": "sha512-LZXmBT0jiHR7J4oKM1GUhtdLFW1yPauzI8NjJlotXn92TprO9u8VMvEVR4QMk8xhUVUd+2fqfU2/kGbVHYSSWw==", "dependencies": { "uint8arraylist": "^2.0.0", "uint8arrays": "^4.0.2" } }, "node_modules/uint8arraylist": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/uint8arraylist/-/uint8arraylist-2.4.3.tgz", - "integrity": "sha512-oEVZr4/GrH87K0kjNce6z8pSCzLEPqHNLNR5sj8cJOySrTP8Vb/pMIbZKLJGhQKxm1TiZ31atNrpn820Pyqpow==", + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/uint8arraylist/-/uint8arraylist-2.4.7.tgz", + "integrity": "sha512-ohRElqR6C5dd60vRFLq40MCiSnUe1AzkpHvbCEMCGGP6zMoFYECsjdhL6bR1kTK37ONNRDuHQ3RIpScRYcYYIg==", "dependencies": { "uint8arrays": "^4.0.2" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" } }, "node_modules/uint8arrays": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.6.tgz", - "integrity": "sha512-4ZesjQhqOU2Ip6GPReIwN60wRxIupavL8T0Iy36BBHr2qyMrNxsPJvr7vpS4eFt8F8kSguWUPad6ZM9izs/vyw==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz", + "integrity": "sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==", "dependencies": { "multiformats": "^12.0.1" } }, - "node_modules/undici": { - "version": "5.25.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.25.2.tgz", - "integrity": "sha512-tch8RbCfn1UUH1PeVCXva4V8gDpGAud/w0WubD6sHC46vYQ3KDxL+xv1A2UxK0N6jrVedutuPHxe1XIoqerwMw==", - "dependencies": { - "busboy": "^1.6.0" - }, - "engines": { - "node": ">=14.0" - } + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/uri-js": { "version": "4.4.1", @@ -6039,20 +6210,6 @@ "punycode": "^2.1.0" } }, - "node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "optional": true, - "peer": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, "node_modules/utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", @@ -6170,13 +6327,12 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.1.tgz", + "integrity": "sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==", "engines": { "node": ">=10.0.0" }, @@ -6230,8 +6386,7 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { "version": "17.7.2", @@ -6275,18 +6430,6 @@ "node": ">=10" } }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/yargs/node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", diff --git a/e2e/scaffolding/extrinsicHelpers.ts b/e2e/scaffolding/extrinsicHelpers.ts index 3ab94997b1..b3b4797aa4 100644 --- a/e2e/scaffolding/extrinsicHelpers.ts +++ b/e2e/scaffolding/extrinsicHelpers.ts @@ -353,6 +353,29 @@ export class ExtrinsicHelper { ); } + /** Schema v3 Extrinsics */ + public static createSchemaV3( + keys: KeyringPair, + model: any, + modelType: 'AvroBinary' | 'Parquet', + payloadLocation: 'OnChain' | 'IPFS' | 'Itemized' | 'Paginated', + grant: ('AppendOnly' | 'SignatureRequired')[], + schemaNme: string | null + ) { + return new Extrinsic( + () => + ExtrinsicHelper.api.tx.schemas.createSchemaV3( + JSON.stringify(model), + modelType, + payloadLocation, + grant, + schemaNme + ), + keys, + ExtrinsicHelper.api.events.schemas.SchemaCreated + ); + } + /** Generic Schema Extrinsics */ public static createSchemaWithSettingsGov( keys: KeyringPair, @@ -375,6 +398,30 @@ export class ExtrinsicHelper { ); } + /** Generic Schema Extrinsics v2 */ + public static createSchemaWithSettingsGovV2( + keys: KeyringPair, + model: any, + modelType: 'AvroBinary' | 'Parquet', + payloadLocation: 'OnChain' | 'IPFS' | 'Itemized' | 'Paginated', + grant: 'AppendOnly' | 'SignatureRequired', + schemaName: string | null + ) { + return new Extrinsic( + () => + ExtrinsicHelper.api.tx.schemas.createSchemaViaGovernanceV2( + keys.publicKey, + JSON.stringify(model), + modelType, + payloadLocation, + [grant], + schemaName + ), + keys, + ExtrinsicHelper.api.events.schemas.SchemaCreated + ); + } + /** Get Schema RPC */ public static getSchema(schemaId: u16): Promise> { return ExtrinsicHelper.apiPromise.rpc.schemas.getBySchemaId(schemaId); diff --git a/e2e/scaffolding/helpers.ts b/e2e/scaffolding/helpers.ts index 550403b62c..6916bbd294 100644 --- a/e2e/scaffolding/helpers.ts +++ b/e2e/scaffolding/helpers.ts @@ -534,3 +534,20 @@ export async function assertAddNewKey( assertEvent(eventMap, 'system.ExtrinsicSuccess'); assertEvent(eventMap, 'msa.PublicKeyAdded'); } + +export function generateSchemaPartialName(length: number): string { + let result = ''; + const characters = 'abcdefghijklmnopqrstuvwxyz-'; + const charactersLength = characters.length; + let counter = 0; + while (counter < length) { + const randomChar = characters.charAt(Math.floor(Math.random() * charactersLength)); + if ((counter == 0 || counter == length - 1) && randomChar === '-') { + // avoid creating invalid name + continue; + } + result += randomChar; + counter += 1; + } + return result; +} diff --git a/e2e/scenarios/grantDelegation.test.ts b/e2e/scenarios/grantDelegation.test.ts index 9ca345474c..d7cef6b276 100644 --- a/e2e/scenarios/grantDelegation.test.ts +++ b/e2e/scenarios/grantDelegation.test.ts @@ -282,7 +282,7 @@ describe('Delegation Scenario Tests', function () { it('should revoke a delegation by delegator', async function () { const revokeDelegationOp = ExtrinsicHelper.revokeDelegationByDelegator(keys, providerId); - const { target: revokeDelegationEvent } = await revokeDelegationOp.signAndSend('current'); + const { target: revokeDelegationEvent } = await revokeDelegationOp.signAndSend(); assert.notEqual(revokeDelegationEvent, undefined, 'should have returned DelegationRevoked event'); assert.deepEqual(revokeDelegationEvent?.data.providerId, providerId, 'provider ids should be equal'); assert.deepEqual(revokeDelegationEvent?.data.delegatorId, msaId, 'delegator ids should be equal'); @@ -329,7 +329,7 @@ describe('Delegation Scenario Tests', function () { it('should revoke a delegation by provider', async function () { const op = ExtrinsicHelper.revokeDelegationByProvider(msaId as u64, providerKeys); - const { target: revokeEvent } = await op.signAndSend('current'); + const { target: revokeEvent } = await op.signAndSend(); assert.notEqual(revokeEvent, undefined, 'should have returned a DelegationRevoked event'); assert.deepEqual(revokeEvent?.data.delegatorId, msaId, 'delegator ids should match'); assert.deepEqual(revokeEvent?.data.providerId, providerId, 'provider ids should match'); @@ -363,12 +363,10 @@ describe('Delegation Scenario Tests', function () { const { target: msaEvent } = await op.fundAndSend(fundingSource); const newMsaId = msaEvent?.data.msaId; assert.notEqual(newMsaId, undefined, 'should have returned an MSA'); - await assert.doesNotReject( - ExtrinsicHelper.revokeDelegationByProvider(newMsaId!, providerKeys).signAndSend('current') - ); + await assert.doesNotReject(ExtrinsicHelper.revokeDelegationByProvider(newMsaId!, providerKeys).signAndSend()); const retireMsaOp = ExtrinsicHelper.retireMsa(delegatorKeys); - const { target: retireMsaEvent } = await retireMsaOp.signAndSend('current'); + const { target: retireMsaEvent } = await retireMsaOp.signAndSend(); assert.notEqual(retireMsaEvent, undefined, 'should have returned MsaRetired event'); assert.deepEqual(retireMsaEvent?.data.msaId, newMsaId, 'msaId should be equal'); }); diff --git a/e2e/schemas/createSchema.test.ts b/e2e/schemas/createSchema.test.ts index bd3ee6b86b..2a47475fa5 100644 --- a/e2e/schemas/createSchema.test.ts +++ b/e2e/schemas/createSchema.test.ts @@ -5,7 +5,12 @@ import assert from 'assert'; import { AVRO_GRAPH_CHANGE } from './fixtures/avroGraphChangeSchemaType'; import { KeyringPair } from '@polkadot/keyring/types'; import { ExtrinsicHelper } from '../scaffolding/extrinsicHelpers'; -import { createKeys, createAndFundKeypair, assertExtrinsicSuccess } from '../scaffolding/helpers'; +import { + createKeys, + createAndFundKeypair, + assertExtrinsicSuccess, + generateSchemaPartialName, +} from '../scaffolding/helpers'; import { getFundingSource } from '../scaffolding/funding'; const fundingSource = getFundingSource('schemas-create'); @@ -128,4 +133,77 @@ describe('#createSchema', function () { assertExtrinsicSuccess(eventMap); assert.notEqual(createSchemaEvent, undefined); }); + + it('should successfully create a schema v3 with name', async function () { + const schemaName = 'e-e.' + generateSchemaPartialName(20); + const f = ExtrinsicHelper.createSchemaV3(keys, AVRO_GRAPH_CHANGE, 'AvroBinary', 'OnChain', [], schemaName); + const { target: createSchemaEvent, eventMap } = await f.fundAndSend(fundingSource); + + assertExtrinsicSuccess(eventMap); + assert.notEqual(createSchemaEvent, undefined); + assert.notEqual(eventMap['schemas.SchemaNameCreated'], undefined); + }); + + it('should successfully create a schema v3 without a name', async function () { + const f = ExtrinsicHelper.createSchemaV3(keys, AVRO_GRAPH_CHANGE, 'AvroBinary', 'OnChain', [], null); + const { target: createSchemaEvent, eventMap } = await f.fundAndSend(fundingSource); + + assertExtrinsicSuccess(eventMap); + assert.notEqual(createSchemaEvent, undefined); + assert.equal(eventMap['schemas.SchemaNameCreated'], undefined); + }); + + it('should fail to create schema with invalid character in name v3', async function () { + const f = ExtrinsicHelper.createSchemaV3(keys, AVRO_GRAPH_CHANGE, 'AvroBinary', 'OnChain', [], 'test2.invalid'); + await assert.rejects(f.fundAndSend(fundingSource), { + name: 'InvalidSchemaNameCharacters', + }); + }); + + it('should fail to create schema with invalid name structure v3', async function () { + const f = ExtrinsicHelper.createSchemaV3(keys, AVRO_GRAPH_CHANGE, 'AvroBinary', 'OnChain', [], 'test'); + await assert.rejects(f.fundAndSend(fundingSource), { + name: 'InvalidSchemaNameStructure', + }); + }); + + it('should fail to create schema with invalid name encoding v3', async function () { + const f = ExtrinsicHelper.createSchemaV3(keys, AVRO_GRAPH_CHANGE, 'AvroBinary', 'OnChain', [], 'ñòò.ò'); + await assert.rejects(f.fundAndSend(fundingSource), { + name: 'InvalidSchemaNameEncoding', + }); + }); + + it('should fail to create schema with invalid namespace length v3', async function () { + const f = ExtrinsicHelper.createSchemaV3(keys, AVRO_GRAPH_CHANGE, 'AvroBinary', 'OnChain', [], 'a.b'); + await assert.rejects(f.fundAndSend(fundingSource), { + name: 'InvalidSchemaNamespaceLength', + }); + }); + + it('get version rpc should return all schemas using the same name', async function () { + const namespace = generateSchemaPartialName(20); + const aliceSchemaName = namespace + '.alice'; + const bobSchemaName = namespace + '.bob'; + const f = ExtrinsicHelper.createSchemaV3(keys, AVRO_GRAPH_CHANGE, 'AvroBinary', 'OnChain', [], aliceSchemaName); + const { target: createSchemaEvent, eventMap } = await f.fundAndSend(fundingSource); + + assertExtrinsicSuccess(eventMap); + assert.notEqual(createSchemaEvent, undefined); + assert.notEqual(eventMap['schemas.SchemaNameCreated'], undefined); + + const f2 = ExtrinsicHelper.createSchemaV3(keys, AVRO_GRAPH_CHANGE, 'AvroBinary', 'OnChain', [], bobSchemaName); + const { target: createSchemaEvent2, eventMap: eventMap2 } = await f2.fundAndSend(fundingSource); + + assertExtrinsicSuccess(eventMap2); + assert.notEqual(createSchemaEvent2, undefined); + assert.notEqual(eventMap2['schemas.SchemaNameCreated'], undefined); + + const versions = await ExtrinsicHelper.apiPromise.rpc.schemas.getVersions(namespace); + assert(versions.isSome); + const versions_response_value = versions.unwrap(); + assert.equal(versions_response_value.length, 2); + assert(versions_response_value.toArray().some((v) => v.schema_name == aliceSchemaName)); + assert(versions_response_value.toArray().some((v) => v.schema_name == bobSchemaName)); + }); }); diff --git a/e2e/sudo/sudo.test.ts b/e2e/sudo/sudo.test.ts index 4718814282..f5aa4fdbd8 100644 --- a/e2e/sudo/sudo.test.ts +++ b/e2e/sudo/sudo.test.ts @@ -14,6 +14,7 @@ import { createDelegatorAndDelegation, createProviderKeysAndId, getCurrentItemizedHash, + generateSchemaPartialName, } from '../scaffolding/helpers'; import { AVRO_CHAT_MESSAGE } from '../stateful-pallet-storage/fixtures/itemizedSchemaType'; @@ -49,6 +50,31 @@ describe('Sudo required', function () { }); }); + describe('schema-pallet ', function () { + it('should create schema with name using createSchemaWithSettingsGovV2', async function () { + if (isTestnet()) this.skip(); + const schemaName = 'e-e.sudo-' + generateSchemaPartialName(15); + const createSchema = ExtrinsicHelper.createSchemaWithSettingsGovV2( + sudoKey, + AVRO_GRAPH_CHANGE, + 'AvroBinary', + 'Itemized', + 'AppendOnly', + schemaName + ); + const { target: event, eventMap } = await createSchema.sudoSignAndSend(); + assert.notEqual(event, undefined); + const itemizedSchemaId: u16 = event?.data.schemaId || new u16(ExtrinsicHelper.api.registry, 0); + assert.notEqual(itemizedSchemaId.toNumber(), 0); + const schema_response = await ExtrinsicHelper.getSchema(itemizedSchemaId); + assert(schema_response.isSome); + const schema_response_value = schema_response.unwrap(); + const schema_settings = schema_response_value.settings; + assert.notEqual(schema_settings.length, 0); + assert.notEqual(eventMap['schemas.SchemaNameCreated'], undefined); + }); + }); + describe('stateful-pallet-storage', function () { it('should fail to create non itemized schema with AppendOnly settings', async function () { if (isTestnet()) this.skip(); diff --git a/js/api-augment/definitions/schemas.ts b/js/api-augment/definitions/schemas.ts index 4f080733aa..0149dacc5b 100644 --- a/js/api-augment/definitions/schemas.ts +++ b/js/api-augment/definitions/schemas.ts @@ -25,10 +25,21 @@ export default { ], type: "bool", }, + getVersions: { + description: "Get different versions and schema ids for a complete schema name or only a namespace", + params: [ + { + name: "schema_name", + type: "String", + }, + ], + type: "Option>", + }, }, types: { SchemaId: "u16", SchemaModel: "Vec", + SchemaVersion: "u8", SchemaResponse: { schema_id: "SchemaId", model: "SchemaModel", @@ -45,6 +56,11 @@ export default { SchemaSetting: { _enum: ["AppendOnly", "SignatureRequired"], }, + SchemaVersionResponse: { + schema_name: "String", + schema_version: "SchemaVersion", + schema_id: "SchemaId", + }, }, runtime: { SchemasRuntimeApi: [ @@ -60,8 +76,18 @@ export default { ], type: "Option", }, + get_schema_versions_by_name: { + description: "Fetch the schema versions by name", + params: [ + { + name: "schema_name", + type: "Vec", + }, + ], + type: "Option>", + }, }, - version: 1, + version: 2, }, ], }, diff --git a/pallets/capacity/Cargo.toml b/pallets/capacity/Cargo.toml index 8550f1de76..da119972ea 100644 --- a/pallets/capacity/Cargo.toml +++ b/pallets/capacity/Cargo.toml @@ -39,6 +39,7 @@ default = ["std"] runtime-benchmarks = [ "frame-benchmarking/runtime-benchmarks", "common-primitives/runtime-benchmarks", + "common-runtime/runtime-benchmarks", "pallet-msa/runtime-benchmarks", ] std = [ diff --git a/pallets/capacity/src/benchmarking.rs b/pallets/capacity/src/benchmarking.rs index 3f6fe24099..f7a3294015 100644 --- a/pallets/capacity/src/benchmarking.rs +++ b/pallets/capacity/src/benchmarking.rs @@ -2,7 +2,7 @@ use super::*; use crate::Pallet as Capacity; use frame_benchmarking::{account, benchmarks, whitelist_account}; -use frame_support::{assert_ok, traits::Currency}; +use frame_support::{assert_ok, BoundedVec}; use frame_system::RawOrigin; use parity_scale_codec::alloc::vec::Vec; @@ -25,8 +25,8 @@ pub fn create_funded_account( let user = account(string, n, SEED); whitelist_account!(user); let balance = T::Currency::minimum_balance() * balance_factor.into(); - let _ = T::Currency::make_free_balance_be(&user, balance); - assert_eq!(T::Currency::free_balance(&user), balance.into()); + T::Currency::set_balance(&user, balance); + assert_eq!(T::Currency::balance(&user), balance.into()); user } @@ -56,21 +56,19 @@ benchmarks! { withdraw_unstaked { let caller: T::AccountId = create_funded_account::("account", SEED, 5u32); - let amount: BalanceOf = T::MinimumStakingAmount::get(); - - let mut staking_account = StakingAccountDetails::::default(); - staking_account.deposit(500u32.into()); - - // set new unlock chunks using tuples of (value, thaw_at) - let new_unlocks: Vec<(u32, u32)> = Vec::from([(50u32, 3u32), (50u32, 5u32)]); - assert_eq!(true, staking_account.set_unlock_chunks(&new_unlocks)); + let mut unlocking: UnlockChunkList = BoundedVec::default(); + for _i in 0..T::MaxUnlockingChunks::get() { + let unlock_chunk: UnlockChunk, T::EpochNumber> = UnlockChunk { value: 1u32.into(), thaw_at: 3u32.into() }; + assert_ok!(unlocking.try_push(unlock_chunk)); + } + UnstakeUnlocks::::set(&caller, Some(unlocking)); - Capacity::::set_staking_account(&caller.clone(), &staking_account); CurrentEpoch::::set(T::EpochNumber::from(5u32)); }: _ (RawOrigin::Signed(caller.clone())) verify { - assert_last_event::(Event::::StakeWithdrawn {account: caller, amount: 100u32.into() }.into()); + let total = T::MaxUnlockingChunks::get(); + assert_last_event::(Event::::StakeWithdrawn {account: caller, amount: total.into() }.into()); } on_initialize { @@ -91,7 +89,7 @@ benchmarks! { let target = 1; let block_number = 4u32; - let mut staking_account = StakingAccountDetails::::default(); + let mut staking_account = StakingDetails::::default(); let mut target_details = StakingTargetDetails::>::default(); let mut capacity_details = CapacityDetails::, ::EpochNumber>::default(); @@ -99,10 +97,20 @@ benchmarks! { target_details.deposit(staking_amount, capacity_amount); capacity_details.deposit(&staking_amount, &capacity_amount); - Capacity::::set_staking_account(&caller.clone(), &staking_account); + Capacity::::set_staking_account_and_lock(&caller.clone(), &staking_account).expect("Failed to set staking account"); Capacity::::set_target_details_for(&caller.clone(), target, target_details); Capacity::::set_capacity_for(target, capacity_details); + // fill up unlock chunks to max bound - 1 + let count = T::MaxUnlockingChunks::get()-1; + let mut unlocking: UnlockChunkList = BoundedVec::default(); + for _i in 0..count { + let unlock_chunk: UnlockChunk, T::EpochNumber> = UnlockChunk { value: 1u32.into(), thaw_at: 3u32.into() }; + assert_ok!(unlocking.try_push(unlock_chunk)); + } + UnstakeUnlocks::::set(&caller, Some(unlocking)); + + }: _ (RawOrigin::Signed(caller.clone()), target, unstaking_amount.into()) verify { assert_last_event::(Event::::UnStaked {account: caller, target: target, amount: unstaking_amount.into(), capacity: Capacity::::calculate_capacity_reduction(unstaking_amount.into(), staking_amount, capacity_amount) }.into()); diff --git a/pallets/capacity/src/lib.rs b/pallets/capacity/src/lib.rs index 61640341a5..234a80b2a6 100644 --- a/pallets/capacity/src/lib.rs +++ b/pallets/capacity/src/lib.rs @@ -49,9 +49,11 @@ )] use frame_support::{ - dispatch::DispatchResult, ensure, - traits::{Currency, Get, Hooks, LockIdentifier, LockableCurrency, WithdrawReasons}, + traits::{ + tokens::fungible::{Inspect as InspectFungible, InspectFreeze, Mutate, MutateFreeze}, + Get, Hooks, + }, weights::{constants::RocksDbWeight, Weight}, }; @@ -81,30 +83,51 @@ mod benchmarking; #[cfg(test)] mod tests; +/// storage migrations +pub mod migration; pub mod weights; - type BalanceOf = - <::Currency as Currency<::AccountId>>::Balance; + <::Currency as InspectFungible<::AccountId>>::Balance; -const STAKING_ID: LockIdentifier = *b"netstkng"; use frame_system::pallet_prelude::*; + #[frame_support::pallet] pub mod pallet { use super::*; - use frame_support::{pallet_prelude::*, Twox64Concat}; + use frame_support::{ + pallet_prelude::{StorageVersion, *}, + Twox64Concat, + }; use sp_runtime::traits::{AtLeast32BitUnsigned, MaybeDisplay}; + /// A reason for freezing funds. + /// Creates a freeze reason for this pallet that is aggregated by `construct_runtime`. + #[pallet::composite_enum] + pub enum FreezeReason { + /// The account has staked tokens to the Frequency network. + CapacityStaking, + } + + /// the storage version for this pallet + pub const STORAGE_VERSION: StorageVersion = StorageVersion::new(3); + #[pallet::config] pub trait Config: frame_system::Config { /// The overarching event type. type RuntimeEvent: From> + IsType<::RuntimeEvent>; + /// The overarching freeze reason. + type RuntimeFreezeReason: From; + /// Weight information for extrinsics in this pallet. type WeightInfo: WeightInfo; - /// Function that allows a balance to be locked. - type Currency: LockableCurrency>; + /// Functions that allow a fungible balance to be changed or frozen. + type Currency: MutateFreeze + + Mutate + + InspectFreeze + + InspectFungible; /// Function that checks if an MSA is a valid target. type TargetValidator: TargetValidator; @@ -154,11 +177,11 @@ pub mod pallet { /// Storage for keeping a ledger of staked token amounts for accounts. /// - Keys: AccountId - /// - Value: [`StakingAccountDetails`](types::StakingAccountDetails) + /// - Value: [`StakingDetails`](types::StakingDetails) #[pallet::storage] #[pallet::getter(fn get_staking_account_for)] pub type StakingAccountLedger = - StorageMap<_, Twox64Concat, T::AccountId, StakingAccountDetails>; + StorageMap<_, Twox64Concat, T::AccountId, StakingDetails>; /// Storage to record how many tokens were targeted to an MSA. /// - Keys: AccountId, MSA Id @@ -206,9 +229,15 @@ pub mod pallet { pub type EpochLength = StorageValue<_, BlockNumberFor, ValueQuery, EpochLengthDefault>; + #[pallet::storage] + #[pallet::getter(fn get_unstake_unlocking_for)] + pub type UnstakeUnlocks = + StorageMap<_, Twox64Concat, T::AccountId, UnlockChunkList>; + // Simple declaration of the `Pallet` type. It is placeholder we use to implement traits and // method. #[pallet::pallet] + #[pallet::storage_version(STORAGE_VERSION)] pub struct Pallet(_); #[pallet::event] @@ -288,6 +317,8 @@ pub mod pallet { MaxEpochLengthExceeded, /// Staker is attempting to stake an amount that leaves a token balance below the minimum amount. BalanceTooLowtoStake, + /// None of the token amounts in UnlockChunks has thawed yet. + NoThawedTokenAvailable, } #[pallet::hooks] @@ -335,25 +366,17 @@ pub mod pallet { Ok(()) } - /// removes all thawed UnlockChunks from caller's StakingAccount and unlocks the sum of the thawed values + /// Removes all thawed UnlockChunks from caller's UnstakeUnlocks and unlocks the sum of the thawed values /// in the caller's token account. /// /// ### Errors - /// - Returns `Error::NotAStakingAccount` if no StakingAccountDetails are found for `origin`. - /// - Returns `Error::NoUnstakedTokensAvailable` if the account has no unstaking chunks or none are thawed. + /// - Returns `Error::NoUnstakedTokensAvailable` if the account has no unstaking chunks. + /// - Returns `Error::NoThawedTokenAvailable` if there are unstaking chunks, but none are thawed. #[pallet::call_index(1)] #[pallet::weight(T::WeightInfo::withdraw_unstaked())] pub fn withdraw_unstaked(origin: OriginFor) -> DispatchResult { let staker = ensure_signed(origin)?; - - let mut staking_account = - Self::get_staking_account_for(&staker).ok_or(Error::::NotAStakingAccount)?; - - let current_epoch = Self::get_current_epoch(); - let amount_withdrawn = staking_account.reap_thawed(current_epoch); - ensure!(!amount_withdrawn.is_zero(), Error::::NoUnstakedTokensAvailable); - - Self::update_or_delete_staking_account(&staker, &mut staking_account); + let amount_withdrawn = Self::do_withdraw_unstaked(&staker)?; Self::deposit_event(Event::::StakeWithdrawn { account: staker, amount: amount_withdrawn, @@ -367,8 +390,9 @@ pub mod pallet { /// - Returns `Error::UnstakedAmountIsZero` if `amount` is not greater than zero. /// - Returns `Error::MaxUnlockingChunksExceeded` if attempting to unlock more times than config::MaxUnlockingChunks. /// - Returns `Error::AmountToUnstakeExceedsAmountStaked` if `amount` exceeds the amount currently staked. - /// - Returns `Error::InvalidTarget` if `target` is not a valid staking target - /// - Returns `Error:: NotAStakingAccount` if `origin` has nothing staked + /// - Returns `Error::InvalidTarget` if `target` is not a valid staking target (not a Provider) + /// - Returns `Error:: NotAStakingAccount` if `origin` has nothing staked at all + /// - Returns `Error::StakerTargetRelationshipNotFound` if `origin` has nothing staked to `target` #[pallet::call_index(2)] #[pallet::weight(T::WeightInfo::unstake())] pub fn unstake( @@ -381,6 +405,8 @@ pub mod pallet { ensure!(requested_amount > Zero::zero(), Error::::UnstakedAmountIsZero); let actual_amount = Self::decrease_active_staking_balance(&unstaker, requested_amount)?; + Self::add_unlock_chunk(&unstaker, actual_amount)?; + let capacity_reduction = Self::reduce_capacity(&unstaker, target, actual_amount)?; Self::deposit_event(Event::UnStaked { @@ -426,12 +452,12 @@ impl Pallet { staker: &T::AccountId, target: MessageSourceId, amount: BalanceOf, - ) -> Result<(StakingAccountDetails, BalanceOf), DispatchError> { + ) -> Result<(StakingDetails, BalanceOf), DispatchError> { ensure!(amount > Zero::zero(), Error::::ZeroAmountNotAllowed); ensure!(T::TargetValidator::validate(target), Error::::InvalidTarget); let staking_account = Self::get_staking_account_for(&staker).unwrap_or_default(); - let stakable_amount = staking_account.get_stakable_amount_for(&staker, amount); + let stakable_amount = Self::get_stakable_amount_for(&staker, amount); ensure!(stakable_amount > Zero::zero(), Error::::BalanceTooLowtoStake); @@ -452,7 +478,7 @@ impl Pallet { /// Additionally, it issues Capacity to the MSA target. fn increase_stake_and_issue_capacity( staker: &T::AccountId, - staking_account: &mut StakingAccountDetails, + staking_account: &mut StakingDetails, target: MessageSourceId, amount: BalanceOf, ) -> Result, DispatchError> { @@ -465,34 +491,34 @@ impl Pallet { let mut capacity_details = Self::get_capacity_for(target).unwrap_or_default(); capacity_details.deposit(&amount, &capacity).ok_or(ArithmeticError::Overflow)?; - Self::set_staking_account(&staker, staking_account); + Self::set_staking_account_and_lock(&staker, staking_account)?; + Self::set_target_details_for(&staker, target, target_details); Self::set_capacity_for(target, capacity_details); Ok(capacity) } - /// Sets staking account details. - fn set_staking_account(staker: &T::AccountId, staking_account: &StakingAccountDetails) { - T::Currency::set_lock(STAKING_ID, &staker, staking_account.total, WithdrawReasons::all()); - StakingAccountLedger::::insert(staker, staking_account); - } - - /// Deletes staking account details - fn delete_staking_account(staker: &T::AccountId) { - T::Currency::remove_lock(STAKING_ID, &staker); - StakingAccountLedger::::remove(&staker); + /// Sets staking account details after a deposit + fn set_staking_account_and_lock( + staker: &T::AccountId, + staking_account: &StakingDetails, + ) -> Result<(), DispatchError> { + let unlocks = Self::get_unstake_unlocking_for(staker).unwrap_or_default(); + let total_to_lock: BalanceOf = staking_account + .active + .checked_add(&unlock_chunks_total::(&unlocks)) + .ok_or(ArithmeticError::Overflow)?; + T::Currency::set_freeze(&FreezeReason::CapacityStaking.into(), staker, total_to_lock)?; + Self::set_staking_account(staker, staking_account); + Ok(()) } - /// If the staking account total is zero we reap storage, otherwise set the account to the new details. - fn update_or_delete_staking_account( - staker: &T::AccountId, - staking_account: &StakingAccountDetails, - ) { - if staking_account.total.is_zero() { - Self::delete_staking_account(&staker); + fn set_staking_account(staker: &T::AccountId, staking_account: &StakingDetails) { + if staking_account.active.is_zero() { + StakingAccountLedger::::set(staker, None); } else { - Self::set_staking_account(&staker, &staking_account) + StakingAccountLedger::::insert(staker, staking_account); } } @@ -513,7 +539,7 @@ impl Pallet { CapacityLedger::::insert(target, capacity_details); } - /// Decrease a staking account's active token and create an unlocking chunk to be thawed at some future block. + /// Decrease a staking account's active token. fn decrease_active_staking_balance( unstaker: &T::AccountId, amount: BalanceOf, @@ -522,15 +548,67 @@ impl Pallet { Self::get_staking_account_for(unstaker).ok_or(Error::::NotAStakingAccount)?; ensure!(amount <= staking_account.active, Error::::AmountToUnstakeExceedsAmountStaked); + let actual_unstaked_amount = staking_account.withdraw(amount)?; + Self::set_staking_account(unstaker, &staking_account); + Ok(actual_unstaked_amount) + } + + fn add_unlock_chunk( + unstaker: &T::AccountId, + actual_unstaked_amount: BalanceOf, + ) -> Result<(), DispatchError> { let current_epoch: T::EpochNumber = Self::get_current_epoch(); let thaw_at = current_epoch.saturating_add(T::EpochNumber::from(T::UnstakingThawPeriod::get())); + let mut unlocks = Self::get_unstake_unlocking_for(unstaker).unwrap_or_default(); - let unstake_result = staking_account.withdraw(amount, thaw_at)?; + let unlock_chunk: UnlockChunk, T::EpochNumber> = + UnlockChunk { value: actual_unstaked_amount, thaw_at }; + unlocks + .try_push(unlock_chunk) + .map_err(|_| Error::::MaxUnlockingChunksExceeded)?; - Self::set_staking_account(&unstaker, &staking_account); + UnstakeUnlocks::::set(unstaker, Some(unlocks)); + Ok(()) + } - Ok(unstake_result) + // Calculates a stakable amount from a proposed amount. + pub(crate) fn get_stakable_amount_for( + staker: &T::AccountId, + proposed_amount: BalanceOf, + ) -> BalanceOf { + let account_balance = T::Currency::balance(&staker); + account_balance + .saturating_sub(T::MinimumTokenBalance::get()) + .min(proposed_amount) + } + + pub(crate) fn do_withdraw_unstaked( + staker: &T::AccountId, + ) -> Result, DispatchError> { + let current_epoch = Self::get_current_epoch(); + let mut total_unlocking: BalanceOf = Zero::zero(); + + let mut unlocks = + Self::get_unstake_unlocking_for(staker).ok_or(Error::::NoUnstakedTokensAvailable)?; + let amount_withdrawn = unlock_chunks_reap_thawed::(&mut unlocks, current_epoch); + ensure!(!amount_withdrawn.is_zero(), Error::::NoThawedTokenAvailable); + + if unlocks.is_empty() { + UnstakeUnlocks::::set(staker, None); + } else { + total_unlocking = unlock_chunks_total::(&unlocks); + UnstakeUnlocks::::set(staker, Some(unlocks)); + } + + let staking_account = Self::get_staking_account_for(staker).unwrap_or_default(); + let total_locked = staking_account.active.saturating_add(total_unlocking); + if total_locked.is_zero() { + T::Currency::thaw(&FreezeReason::CapacityStaking.into(), staker)?; + } else { + T::Currency::set_freeze(&FreezeReason::CapacityStaking.into(), staker, total_locked)?; + } + Ok(amount_withdrawn) } /// Reduce available capacity of target and return the amount of capacity reduction. diff --git a/pallets/capacity/src/migration/mod.rs b/pallets/capacity/src/migration/mod.rs new file mode 100644 index 0000000000..937d239372 --- /dev/null +++ b/pallets/capacity/src/migration/mod.rs @@ -0,0 +1,4 @@ +/// migrations to v2 +pub mod v2; +/// migrations to v3 +pub mod v3; diff --git a/pallets/capacity/src/migration/v2.rs b/pallets/capacity/src/migration/v2.rs new file mode 100644 index 0000000000..431f616a1b --- /dev/null +++ b/pallets/capacity/src/migration/v2.rs @@ -0,0 +1,117 @@ +use crate::{ + types::{StakingDetails, UnlockChunk}, + BalanceOf, Config, Pallet, StakingAccountLedger, StakingType, UnlockChunkList, UnstakeUnlocks, +}; +use frame_support::{ + pallet_prelude::{GetStorageVersion, Weight}, + traits::{Get, OnRuntimeUpgrade, StorageVersion}, +}; + +const LOG_TARGET: &str = "runtime::capacity"; + +#[cfg(feature = "try-runtime")] +use sp_std::{fmt::Debug, vec::Vec}; + +/// the storage version for the v2 migration +pub const STORAGE_VERSION_V2: StorageVersion = StorageVersion::new(2); +/// Only contains V1 storage format +pub mod v1 { + use super::*; + use frame_support::{storage_alias, BoundedVec, Twox64Concat}; + use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; + use scale_info::TypeInfo; + + #[derive(Default, Encode, Decode, PartialEq, Debug, TypeInfo, Eq, MaxEncodedLen)] + /// Old StakingAccountDetails struct + pub struct StakingAccountDetails { + /// The amount a Staker has staked, minus the sum of all tokens in `unlocking`. + pub active: BalanceOf, + /// The total amount of tokens in `active` and `unlocking` + pub total: BalanceOf, + /// Unstaked balances that are thawing or awaiting withdrawal. + pub unlocking: BoundedVec< + UnlockChunk, T::EpochNumber>, + ::MaxUnlockingChunks, + >, + } + + #[storage_alias] + /// alias to StakingAccountLedger storage + pub(crate) type StakingAccountLedger = StorageMap< + Pallet, + Twox64Concat, + ::AccountId, + StakingAccountDetails, + >; +} + +/// migrate StakingAccountLedger to use new StakingDetails +pub fn migrate_to_v2() -> Weight { + let on_chain_version = Pallet::::on_chain_storage_version(); // 1r + + if on_chain_version.lt(&STORAGE_VERSION_V2) { + log::info!(target: LOG_TARGET, "🔄 StakingAccountLedger migration started"); + let mut maybe_count = 0u32; + StakingAccountLedger::::translate( + |key: ::AccountId, + old_details: v1::StakingAccountDetails| { + let new_account: StakingDetails = StakingDetails { + active: old_details.active, + staking_type: StakingType::MaximumCapacity, + }; + let new_unlocks: UnlockChunkList = old_details.unlocking; + UnstakeUnlocks::::insert(key, new_unlocks); + maybe_count += 1; + log::info!(target: LOG_TARGET,"migrated {:?}", maybe_count); + Some(new_account) + }, + ); + StorageVersion::new(2).put::>(); // 1 w + let reads = (maybe_count + 1) as u64; + let writes = (maybe_count * 2 + 1) as u64; + log::info!(target: LOG_TARGET, "🔄 migration finished"); + let weight = T::DbWeight::get().reads_writes(reads, writes); + log::info!(target: LOG_TARGET, "Migration calculated weight = {:?}", weight); + weight + } else { + // storage was already migrated. + log::info!(target: LOG_TARGET, "Old StorageAccountLedger migration attempted to run. Please remove"); + T::DbWeight::get().reads(1) + } +} +/// The OnRuntimeUpgrade implementation for this storage migration +pub struct MigrateToV2(sp_std::marker::PhantomData); +impl OnRuntimeUpgrade for MigrateToV2 { + fn on_runtime_upgrade() -> Weight { + migrate_to_v2::() + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result, sp_runtime::TryRuntimeError> { + use frame_support::storage::generator::StorageMap; + use parity_scale_codec::Encode; + let pallet_prefix = v1::StakingAccountLedger::::module_prefix(); + let storage_prefix = v1::StakingAccountLedger::::storage_prefix(); + assert_eq!(&b"Capacity"[..], pallet_prefix); + assert_eq!(&b"StakingAccountLedger"[..], storage_prefix); + log::info!(target: LOG_TARGET, "Running pre_upgrade..."); + + let count = v1::StakingAccountLedger::::iter().count() as u32; + log::info!(target: LOG_TARGET, "Finish pre_upgrade for {:?} records", count); + Ok(count.encode()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade(state: Vec) -> Result<(), sp_runtime::TryRuntimeError> { + use parity_scale_codec::Decode; + let pre_upgrade_count: u32 = Decode::decode(&mut state.as_slice()).unwrap_or_default(); + let on_chain_version = Pallet::::on_chain_storage_version(); + + assert_eq!(on_chain_version, 2); + assert_eq!(pre_upgrade_count as usize, StakingAccountLedger::::iter().count()); + assert_eq!(pre_upgrade_count as usize, UnstakeUnlocks::::iter().count()); + + log::info!(target: LOG_TARGET, "✅ migration post_upgrade checks passed"); + Ok(()) + } +} diff --git a/pallets/capacity/src/migration/v3.rs b/pallets/capacity/src/migration/v3.rs new file mode 100644 index 0000000000..9677102d07 --- /dev/null +++ b/pallets/capacity/src/migration/v3.rs @@ -0,0 +1,208 @@ +use crate::{ + unlock_chunks_total, BalanceOf, BlockNumberFor, Config, FreezeReason, Pallet, + StakingAccountLedger, UnstakeUnlocks, +}; + +use frame_support::{ + pallet_prelude::{GetStorageVersion, IsType, Weight}, + traits::{ + fungible::MutateFreeze, Get, LockIdentifier, LockableCurrency, OnRuntimeUpgrade, + StorageVersion, + }, +}; +use parity_scale_codec::Encode; +use sp_core::hexdisplay::HexDisplay; +use sp_runtime::Saturating; + +const LOG_TARGET: &str = "runtime::capacity"; + +#[cfg(feature = "try-runtime")] +use sp_std::vec::Vec; + +const STAKING_ID: LockIdentifier = *b"netstkng"; + +/// The OnRuntimeUpgrade implementation for this storage migration +pub struct MigrationToV3(sp_std::marker::PhantomData<(T, OldCurrency)>); +impl MigrationToV3 +where + T: Config, + OldCurrency: 'static + LockableCurrency>, + OldCurrency::Balance: IsType>, +{ + /// Translate capacity staked locked deposit to frozen deposit + pub fn translate_lock_to_freeze( + account_id: T::AccountId, + amount: OldCurrency::Balance, + ) -> Weight { + // 1 read get Freezes: set_freeze: get locks + // 1 read get Locks: update_freezes: Locks::get().iter() + // 1 write set Account: update_freezes->mutate_account->try_mutate_account->ensure_upgraded: if account is *not* already upgraded. + // 1 write set Account: update_freezes->mutate_account->try_mutate_account: set account data + // 1 write set Freezes: update_freezes: Freezes::insert + ::Currency::set_freeze( + &FreezeReason::CapacityStaking.into(), + &account_id, + amount.into(), + ) + .unwrap_or_else(|err| { + log::error!(target: LOG_TARGET, "Failed to freeze {:?} for account 0x{:?}, reason: {:?}", amount, HexDisplay::from(&account_id.encode()), err); + }); + + // 1 read get Locks: remove_lock: set locks + // 1 read get Freezes + // 1 read get Account + // 1 write set Account: update_locks->try_mutate_account->ensure_upgraded: if account is *not* already upgraded. + // 1 write set Account: update_locks->try_mutate_account: set account data + // [Cached] 1 read get Locks: update_locks: set existed with `contains_key` + // 1 write set Locks: update_locks->Locks::remove: remove existed + OldCurrency::remove_lock(STAKING_ID, &account_id); + + log::info!(target: LOG_TARGET, "🔄 migrated account 0x{:?}, amount:{:?}", HexDisplay::from(&account_id.encode()), amount.into()); + T::DbWeight::get().reads_writes(5, 6) + } + + /// Calculates the total amount of tokens that have been unstaked and are not thawed, for the given staker. + pub fn get_unlocking_total_for(staker: &T::AccountId) -> BalanceOf { + let unlocks = UnstakeUnlocks::::get(staker).unwrap_or_default(); + unlock_chunks_total::(&unlocks) + } +} + +impl OnRuntimeUpgrade for MigrationToV3 +where + T: Config, + OldCurrency: 'static + LockableCurrency>, + OldCurrency::Balance: IsType>, +{ + fn on_runtime_upgrade() -> Weight { + let on_chain_version = Pallet::::on_chain_storage_version(); // 1r + + if on_chain_version.ge(&3) { + log::info!(target: LOG_TARGET, "Old Capacity Locks->Freezes migration attempted to run. Please remove"); + return T::DbWeight::get().reads(1) + } + + log::info!(target: LOG_TARGET, "🔄 Capacity Locks->Freezes migration started"); + // The migration started with 1r to get the STORAGE_VERSION + let mut total_weight = T::DbWeight::get().reads_writes(1, 0); + let mut total_accounts_migrated = 0u32; + + // Get all the keys(accounts) from the StakingAccountLedger + StakingAccountLedger::::iter() + .map(|(account_id, staking_details)| (account_id, staking_details.active)) + .for_each(|(account_id, active_amount)| { + let total_unlocking = Self::get_unlocking_total_for(&account_id); + let total_amount = active_amount.saturating_add(total_unlocking); + + let trans_fn_weight = MigrationToV3::::translate_lock_to_freeze( + account_id.clone(), + total_amount.into(), + ); + + // Add the read from get_unlocking_total_for() + the weight from translate_lock_to_freeze() + total_weight = total_weight + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(trans_fn_weight); + + total_accounts_migrated += 1; + }); + + log::info!(target: LOG_TARGET, "total accounts migrated from locks to freezes: {:?}", total_accounts_migrated); + + StorageVersion::new(3).put::>(); // 1 w + total_weight = total_weight.saturating_add(T::DbWeight::get().reads_writes(0, 1)); + + log::info!(target: LOG_TARGET, "🔄 Capacity Locks->Freezes migration finished"); + log::info!(target: LOG_TARGET, "Capacity Migration calculated weight = {:?}", total_weight); + + total_weight + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result, sp_runtime::TryRuntimeError> { + use frame_support::storage::generator::StorageMap; + let pallet_prefix = StakingAccountLedger::::module_prefix(); + let storage_prefix = StakingAccountLedger::::storage_prefix(); + assert_eq!(&b"Capacity"[..], pallet_prefix); + assert_eq!(&b"StakingAccountLedger"[..], storage_prefix); + log::info!(target: LOG_TARGET, "Running pre_upgrade..."); + + let count = StakingAccountLedger::::iter().count() as u32; + log::info!(target: LOG_TARGET, "Finish pre_upgrade for {:?} records", count); + Ok(count.encode()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade(state: Vec) -> Result<(), sp_runtime::TryRuntimeError> { + use parity_scale_codec::Decode; + let pre_upgrade_count: u32 = Decode::decode(&mut state.as_slice()).unwrap_or_default(); + let on_chain_version = Pallet::::on_chain_storage_version(); + + assert_eq!(on_chain_version, crate::pallet::STORAGE_VERSION); + assert_eq!(pre_upgrade_count as usize, StakingAccountLedger::::iter().count()); + + log::info!(target: LOG_TARGET, "✅ migration post_upgrade checks passed"); + Ok(()) + } +} + +#[cfg(test)] +mod test { + use frame_support::traits::{tokens::fungible::InspectFreeze, WithdrawReasons}; + + use super::*; + use crate::{ + tests::mock::{Test as T, *}, + StakingAccountLedger, StakingDetails, + StakingType::MaximumCapacity, + }; + use frame_support::storage::generator::StorageMap; + use pallet_balances::{BalanceLock, Reasons}; + + type MigrationOf = MigrationToV3>; + + #[test] + fn migration_works() { + new_test_ext().execute_with(|| { + // Create some data in the old format + // Grab an account with a balance + let account = 200; + let locked_amount = 50; + + pallet_balances::Pallet::::set_lock( + STAKING_ID, + &account, + locked_amount, + WithdrawReasons::all(), + ); + // Confirm lock exists + assert_eq!( + pallet_balances::Pallet::::locks(&account).get(0), + Some(&BalanceLock { id: STAKING_ID, amount: locked_amount, reasons: Reasons::All }) + ); + + let test_record = + StakingDetails:: { active: locked_amount, staking_type: MaximumCapacity }; + StakingAccountLedger::::insert(account, test_record); + assert_eq!(StakingAccountLedger::::iter().count(), 1); + + // Run migration. + let pre_upgrade_count = StakingAccountLedger::::iter().count() as u32; + MigrationOf::::on_runtime_upgrade(); + + let on_chain_version = Pallet::::on_chain_storage_version(); + assert_eq!(on_chain_version, crate::pallet::STORAGE_VERSION); + assert_eq!(pre_upgrade_count as usize, StakingAccountLedger::::iter().count()); + + // Check that the old staking locks are now freezes + assert_eq!(pallet_balances::Pallet::::locks(&account), vec![]); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::CapacityStaking.into(), + &account + ), + locked_amount + ); + }) + } +} diff --git a/pallets/capacity/src/tests/migrate_v2_tests.rs b/pallets/capacity/src/tests/migrate_v2_tests.rs new file mode 100644 index 0000000000..ce90dc83c3 --- /dev/null +++ b/pallets/capacity/src/tests/migrate_v2_tests.rs @@ -0,0 +1,56 @@ +#[cfg(test)] +mod test { + use crate::{ + migration::{ + v2::v1::{ + StakingAccountDetails as OldStakingAccountDetails, + StakingAccountLedger as OldStakingAccountLedger, + }, + *, + }, + tests::mock::*, + types::*, + BalanceOf, Config, StakingAccountLedger, + StakingType::MaximumCapacity, + UnstakeUnlocks, + }; + use frame_support::{traits::StorageVersion, BoundedVec}; + + #[test] + #[allow(deprecated)] + fn test_v1_to_v2_works() { + new_test_ext().execute_with(|| { + StorageVersion::new(1).put::(); + for i in 0..3u32 { + let storage_key: ::AccountId = i.into(); + let unlocks: BoundedVec< + UnlockChunk, ::EpochNumber>, + ::MaxUnlockingChunks, + > = BoundedVec::try_from(vec![ + UnlockChunk { value: i as u64, thaw_at: i + 10 }, + UnlockChunk { value: (i + 1) as u64, thaw_at: i + 20 }, + UnlockChunk { value: (i + 2) as u64, thaw_at: i + 30 }, + ]) + .unwrap_or_default(); + + let old_record = + OldStakingAccountDetails:: { active: 3, total: 5, unlocking: unlocks }; + OldStakingAccountLedger::::insert(storage_key, old_record); + } + + assert_eq!(OldStakingAccountLedger::::iter().count(), 3); + + let _w = v2::migrate_to_v2::(); + + assert_eq!(StakingAccountLedger::::iter().count(), 3); + assert_eq!(UnstakeUnlocks::::iter().count(), 3); + + // check that this is really the new type + let last_account: StakingDetails = Capacity::get_staking_account_for(2).unwrap(); + assert_eq!(last_account.staking_type, MaximumCapacity); + + let last_unlocks = Capacity::get_unstake_unlocking_for(2).unwrap(); + assert_eq!(9u64, unlock_chunks_total::(&last_unlocks)); + }) + } +} diff --git a/pallets/capacity/src/tests/mock.rs b/pallets/capacity/src/tests/mock.rs index 1251093e75..75b7ad9314 100644 --- a/pallets/capacity/src/tests/mock.rs +++ b/pallets/capacity/src/tests/mock.rs @@ -24,7 +24,7 @@ construct_runtime!( System: frame_system::{Pallet, Call, Config, Storage, Event}, Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, Msa: pallet_msa::{Pallet, Call, Storage, Event}, - Capacity: pallet_capacity::{Pallet, Call, Storage, Event}, + Capacity: pallet_capacity::{Pallet, Call, Storage, Event, FreezeReason}, } ); @@ -64,8 +64,8 @@ impl pallet_balances::Config for Test { type ExistentialDeposit = ConstU64<1>; type AccountStore = System; type WeightInfo = (); - type FreezeIdentifier = (); - type MaxFreezes = ConstU32<0>; + type FreezeIdentifier = RuntimeFreezeReason; + type MaxFreezes = ConstU32<1>; type MaxHolds = ConstU32<0>; type RuntimeHoldReason = (); } @@ -135,6 +135,7 @@ parameter_types! { impl pallet_capacity::Config for Test { type RuntimeEvent = RuntimeEvent; type WeightInfo = (); + type RuntimeFreezeReason = RuntimeFreezeReason; type Currency = pallet_balances::Pallet; type TargetValidator = Msa; // In test, this must be >= Token:Capacity ratio since unit is plancks diff --git a/pallets/capacity/src/tests/mod.rs b/pallets/capacity/src/tests/mod.rs index afef352dc8..871e227ae0 100644 --- a/pallets/capacity/src/tests/mod.rs +++ b/pallets/capacity/src/tests/mod.rs @@ -1,5 +1,6 @@ pub mod capacity_details_tests; pub mod epochs_tests; +mod migrate_v2_tests; pub mod mock; pub mod other_tests; pub mod replenishment_tests; @@ -7,6 +8,7 @@ pub mod stake_and_deposit_tests; pub mod staking_account_details_tests; pub mod staking_target_details_tests; pub mod testing_utils; +mod unlock_chunks_tests; pub mod unstaking_tests; pub mod withdraw_unstaked_tests; pub mod withdrawal_tests; diff --git a/pallets/capacity/src/tests/other_tests.rs b/pallets/capacity/src/tests/other_tests.rs index 7a32c1a87c..611a598f96 100644 --- a/pallets/capacity/src/tests/other_tests.rs +++ b/pallets/capacity/src/tests/other_tests.rs @@ -1,12 +1,15 @@ -use frame_support::traits::{Currency, Get}; +use frame_support::traits::{ + fungible::{Inspect, InspectFreeze}, + Get, +}; use frame_system::pallet_prelude::BlockNumberFor; use sp_runtime::traits::Zero; use common_primitives::{capacity::Nontransferable, msa::MessageSourceId}; use crate::{ - BalanceOf, CapacityDetails, Config, CurrentEpoch, CurrentEpochInfo, EpochInfo, - StakingAccountDetails, StakingTargetDetails, + BalanceOf, CapacityDetails, Config, CurrentEpoch, CurrentEpochInfo, EpochInfo, FreezeReason, + StakingDetails, StakingTargetDetails, }; use super::{mock::*, testing_utils::*}; @@ -64,15 +67,20 @@ fn start_new_epoch_works() { } #[test] -fn set_staking_account_is_succesful() { +fn set_staking_account_is_successful() { new_test_ext().execute_with(|| { let staker = 100; - let mut staking_account = StakingAccountDetails::::default(); + let mut staking_account = StakingDetails::::default(); staking_account.deposit(55); - Capacity::set_staking_account(&staker, &staking_account); + Capacity::set_staking_account_and_lock(&staker, &staking_account) + .expect("Failed to set staking account and lock"); - assert_eq!(Balances::locks(&staker)[0].amount, 55); + let frozen_balance = ::Currency::balance_frozen( + &(FreezeReason::CapacityStaking).into(), + &staker, + ); + assert_eq!(frozen_balance, 55); }); } @@ -127,7 +135,7 @@ fn it_configures_staking_minimum_greater_than_or_equal_to_existential_deposit() new_test_ext().execute_with(|| { let minimum_staking_balance_config: BalanceOf = ::MinimumStakingAmount::get(); - assert!(minimum_staking_balance_config >= ::Currency::minimum_balance()) + assert!(minimum_staking_balance_config >= ::Currency::minimum_balance()); }); } diff --git a/pallets/capacity/src/tests/stake_and_deposit_tests.rs b/pallets/capacity/src/tests/stake_and_deposit_tests.rs index 95e5b94c8d..ac924bfcb4 100644 --- a/pallets/capacity/src/tests/stake_and_deposit_tests.rs +++ b/pallets/capacity/src/tests/stake_and_deposit_tests.rs @@ -1,7 +1,7 @@ use super::{mock::*, testing_utils::*}; -use crate::{BalanceOf, CapacityDetails, Error, Event, StakingAccountDetails}; +use crate::{BalanceOf, CapacityDetails, Config, Error, Event, FreezeReason, StakingDetails}; use common_primitives::{capacity::Nontransferable, msa::MessageSourceId}; -use frame_support::{assert_noop, assert_ok, traits::WithdrawReasons}; +use frame_support::{assert_noop, assert_ok, traits::fungible::InspectFreeze}; use sp_runtime::ArithmeticError; #[test] @@ -15,9 +15,7 @@ fn stake_works() { assert_ok!(Capacity::stake(RuntimeOrigin::signed(account), target, amount)); // Check that StakingAccountLedger is updated. - assert_eq!(Capacity::get_staking_account_for(account).unwrap().total, 50); assert_eq!(Capacity::get_staking_account_for(account).unwrap().active, 50); - assert_eq!(Capacity::get_staking_account_for(account).unwrap().unlocking.len(), 0); // Check that StakingTargetLedger is updated. assert_eq!(Capacity::get_target_for(account, target).unwrap().amount, 50); @@ -39,8 +37,13 @@ fn stake_works() { let events = staking_events(); assert_eq!(events.first().unwrap(), &Event::Staked { account, target, amount, capacity }); - assert_eq!(Balances::locks(&account)[0].amount, amount); - assert_eq!(Balances::locks(&account)[0].reasons, WithdrawReasons::all().into()); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::CapacityStaking.into(), + &account + ), + amount + ); }); } @@ -100,9 +103,13 @@ fn stake_increase_stake_amount_works() { events.first().unwrap(), &Event::Staked { account, target, amount: initial_amount, capacity } ); - - assert_eq!(Balances::locks(&account)[0].amount, 50); - assert_eq!(Balances::locks(&account)[0].reasons, WithdrawReasons::all().into()); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::CapacityStaking.into(), + &account + ), + 50 + ); assert_ok!(Capacity::set_epoch_length(RuntimeOrigin::root(), 10)); @@ -115,9 +122,7 @@ fn stake_increase_stake_amount_works() { assert_ok!(Capacity::stake(RuntimeOrigin::signed(account), target, additional_amount)); // Check that StakingAccountLedger is updated. - assert_eq!(Capacity::get_staking_account_for(account).unwrap().total, 150); assert_eq!(Capacity::get_staking_account_for(account).unwrap().active, 150); - assert_eq!(Capacity::get_staking_account_for(account).unwrap().unlocking.len(), 0); // Check that StakingTargetLedger is updated. assert_eq!(Capacity::get_target_for(account, target).unwrap().amount, 150); @@ -134,8 +139,13 @@ fn stake_increase_stake_amount_works() { &Event::Staked { account, target, amount: additional_amount, capacity } ); - assert_eq!(Balances::locks(&account)[0].amount, 150); - assert_eq!(Balances::locks(&account)[0].reasons, WithdrawReasons::all().into()); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::CapacityStaking.into(), + &account + ), + 150 + ); }); } @@ -151,9 +161,7 @@ fn stake_multiple_accounts_can_stake_to_the_same_target() { assert_ok!(Capacity::stake(RuntimeOrigin::signed(account_1), target, stake_amount_1)); // Check that StakingAccountLedger is updated. - assert_eq!(Capacity::get_staking_account_for(account_1).unwrap().total, 50); assert_eq!(Capacity::get_staking_account_for(account_1).unwrap().active, 50); - assert_eq!(Capacity::get_staking_account_for(account_1).unwrap().unlocking.len(), 0); // Check that StakingTargetLedger is updated. assert_eq!(Capacity::get_target_for(account_1, target).unwrap().amount, 50); @@ -175,9 +183,7 @@ fn stake_multiple_accounts_can_stake_to_the_same_target() { assert_ok!(Capacity::stake(RuntimeOrigin::signed(account_2), target, stake_amount_2)); // Check that StakingAccountLedger is updated. - assert_eq!(Capacity::get_staking_account_for(account_2).unwrap().total, 100); assert_eq!(Capacity::get_staking_account_for(account_2).unwrap().active, 100); - assert_eq!(Capacity::get_staking_account_for(account_2).unwrap().unlocking.len(), 0); // Check that StakingTargetLedger is updated. assert_eq!(Capacity::get_target_for(account_2, target).unwrap().amount, 100); @@ -204,7 +210,6 @@ fn stake_an_account_can_stake_to_multiple_targets() { let amount_2 = 200; assert_ok!(Capacity::stake(RuntimeOrigin::signed(account), target_1, amount_1)); - assert_eq!(Capacity::get_staking_account_for(account).unwrap().total, amount_1); assert_ok!(Capacity::set_epoch_length(RuntimeOrigin::root(), 10)); @@ -213,9 +218,7 @@ fn stake_an_account_can_stake_to_multiple_targets() { assert_ok!(Capacity::stake(RuntimeOrigin::signed(account), target_2, amount_2)); // Check that StakingAccountLedger is updated. - assert_eq!(Capacity::get_staking_account_for(account).unwrap().total, 300); assert_eq!(Capacity::get_staking_account_for(account).unwrap().active, 300); - assert_eq!(Capacity::get_staking_account_for(account).unwrap().unlocking.len(), 0); // Check that StakingTargetLedger is updated for target 1. assert_eq!(Capacity::get_target_for(account, target_1).unwrap().amount, 100); @@ -249,9 +252,7 @@ fn stake_when_staking_amount_is_greater_than_free_balance_it_stakes_maximum() { assert_ok!(Capacity::stake(RuntimeOrigin::signed(account), target, amount)); // Check that StakingAccountLedger is updated. - assert_eq!(Capacity::get_staking_account_for(account).unwrap().total, 190); assert_eq!(Capacity::get_staking_account_for(account).unwrap().active, 190); - assert_eq!(Capacity::get_staking_account_for(account).unwrap().unlocking.len(), 0); // Check that StakingTargetLedger is updated. assert_eq!(Capacity::get_target_for(account, target).unwrap().amount, 190); @@ -264,6 +265,17 @@ fn stake_when_staking_amount_is_greater_than_free_balance_it_stakes_maximum() { }); } +#[test] +fn get_stakable_amount_for_works() { + new_test_ext().execute_with(|| { + let account = 200; + // An amount greater than the free balance + let amount = 230; + let res: u64 = Capacity::get_stakable_amount_for(&account, amount); + assert_eq!(res, 190); + }) +} + #[test] fn stake_when_staking_amount_is_less_than_min_token_balance_it_errors() { new_test_ext().execute_with(|| { @@ -354,7 +366,7 @@ fn ensure_can_stake_is_successful() { let amount = 10; register_provider(target, String::from("Foo")); - let staking_details = StakingAccountDetails::::default(); + let staking_details = StakingDetails::::default(); assert_ok!( Capacity::ensure_can_stake(&account, target, amount), (staking_details, BalanceOf::::from(10u64)) @@ -368,7 +380,7 @@ fn increase_stake_and_issue_capacity_is_successful() { let staker = 10_000; // has 10_000 token let target: MessageSourceId = 1; let amount = 550; - let mut staking_account = StakingAccountDetails::::default(); + let mut staking_account = StakingDetails::::default(); assert_ok!(Capacity::increase_stake_and_issue_capacity( &staker, @@ -377,9 +389,7 @@ fn increase_stake_and_issue_capacity_is_successful() { amount )); - assert_eq!(staking_account.total, amount); assert_eq!(staking_account.active, amount); - assert_eq!(staking_account.unlocking.len(), 0); let capacity_details = Capacity::get_capacity_for(&target).unwrap(); @@ -394,6 +404,25 @@ fn increase_stake_and_issue_capacity_is_successful() { }); } +#[test] +fn stake_when_there_are_unlocks_sets_lock_correctly() { + new_test_ext().execute_with(|| { + let staker = 600; + let target1 = 2; + let target2 = 3; + register_provider(target1, String::from("target1")); + register_provider(target2, String::from("target2")); + assert_ok!(Capacity::stake(RuntimeOrigin::signed(staker), target1, 20)); + + assert_ok!(Capacity::unstake(RuntimeOrigin::signed(staker), target1, 5)); + + assert_ok!(Capacity::stake(RuntimeOrigin::signed(staker), target2, 20)); + + // should all still be locked. + assert_eq!(Balances::balance_frozen(&FreezeReason::CapacityStaking.into(), &staker), 40); + }) +} + #[test] fn impl_deposit_is_successful() { new_test_ext().execute_with(|| { diff --git a/pallets/capacity/src/tests/staking_account_details_tests.rs b/pallets/capacity/src/tests/staking_account_details_tests.rs index e49ed9082b..eed5e1f158 100644 --- a/pallets/capacity/src/tests/staking_account_details_tests.rs +++ b/pallets/capacity/src/tests/staking_account_details_tests.rs @@ -1,110 +1,50 @@ use super::mock::*; use crate::*; -use frame_support::assert_err; -use sp_core::bounded::BoundedVec; - -type UnlockBVec = BoundedVec< - UnlockChunk, ::EpochNumber>, - ::MaxUnlockingChunks, ->; - #[test] -fn staking_account_details_withdraw_reduces_active_staking_balance_and_creates_unlock_chunk() { - let mut staking_account_details = StakingAccountDetails:: { +fn staking_account_details_withdraw_reduces_active_staking_balance() { + let mut staking_account_details = StakingDetails:: { active: BalanceOf::::from(15u64), - total: BalanceOf::::from(15u64), - unlocking: BoundedVec::default(), + staking_type: StakingType::MaximumCapacity, }; - assert_eq!(Ok(3u64), staking_account_details.withdraw(3, 3)); - let expected_chunks: UnlockBVec = - BoundedVec::try_from(vec![UnlockChunk { value: 3u64, thaw_at: 3u32 }]).unwrap(); + assert_eq!(Ok(3u64), staking_account_details.withdraw(3)); assert_eq!( staking_account_details, - StakingAccountDetails:: { + StakingDetails:: { active: BalanceOf::::from(12u64), - total: BalanceOf::::from(15u64), - unlocking: expected_chunks, + staking_type: StakingType::MaximumCapacity, } ) } #[test] fn staking_account_details_withdraw_goes_to_zero_when_result_below_minimum() { - let mut staking_account_details = StakingAccountDetails:: { + let mut staking_account_details = StakingDetails:: { active: BalanceOf::::from(10u64), - total: BalanceOf::::from(10u64), - unlocking: BoundedVec::default(), + staking_type: StakingType::MaximumCapacity, }; - assert_eq!(Ok(10u64), staking_account_details.withdraw(6, 3)); + assert_eq!(Ok(10u64), staking_account_details.withdraw(6)); assert_eq!(0u64, staking_account_details.active); - assert_eq!(10u64, staking_account_details.total); staking_account_details.deposit(10); - assert_eq!(Ok(10u64), staking_account_details.withdraw(9, 3)); + assert_eq!(Ok(10u64), staking_account_details.withdraw(9)); assert_eq!(0u64, staking_account_details.active); staking_account_details.deposit(10); - assert_eq!(Ok(10u64), staking_account_details.withdraw(11, 3)); + assert_eq!(Ok(10u64), staking_account_details.withdraw(11)); assert_eq!(0u64, staking_account_details.active); } -#[test] -fn staking_account_details_withdraw_returns_err_when_too_many_chunks() { - let maximum_chunks: UnlockBVec = BoundedVec::try_from(vec![ - UnlockChunk { value: 1u64, thaw_at: 3u32 }, - UnlockChunk { value: 1u64, thaw_at: 3u32 }, - UnlockChunk { value: 1u64, thaw_at: 3u32 }, - UnlockChunk { value: 1u64, thaw_at: 3u32 }, - ]) - .unwrap(); - - let mut staking_account_details = StakingAccountDetails:: { - active: BalanceOf::::from(10u64), - total: BalanceOf::::from(10u64), - unlocking: maximum_chunks, - }; - - assert_err!(staking_account_details.withdraw(6, 3), Error::::MaxUnlockingChunksExceeded); - assert_eq!(10u64, staking_account_details.active); - assert_eq!(10u64, staking_account_details.total); -} - -#[test] -fn staking_account_details_reap_thawed_happy_path() { - let mut staking_account = StakingAccountDetails::::default(); - staking_account.deposit(10); - - // 10 token total, 6 token unstaked - let new_unlocks: Vec<(u32, u32)> = vec![(1u32, 2u32), (2u32, 3u32), (3u32, 4u32)]; - assert_eq!(true, staking_account.set_unlock_chunks(&new_unlocks)); - assert_eq!(10, staking_account.total); - assert_eq!(3, staking_account.unlocking.len()); - - // At epoch 3, the first two chunks should be thawed. - assert_eq!(3u64, staking_account.reap_thawed(3u32)); - assert_eq!(1, staking_account.unlocking.len()); - // ...leaving 10-3 = 7 total in staking - assert_eq!(7, staking_account.total); - - // At epoch 5, all unstaking is done. - assert_eq!(3u64, staking_account.reap_thawed(5u32)); - assert_eq!(0, staking_account.unlocking.len()); - // ...leaving 7-3 = 4 total - assert_eq!(4, staking_account.total); -} - #[test] fn impl_staking_account_details_increase_by() { - let mut staking_account = StakingAccountDetails::::default(); + let mut staking_account = StakingDetails::::default(); assert_eq!(staking_account.deposit(10), Some(())); assert_eq!( staking_account, - StakingAccountDetails:: { + StakingDetails:: { active: BalanceOf::::from(10u64), - total: BalanceOf::::from(10u64), - unlocking: BoundedVec::default(), + staking_type: StakingType::MaximumCapacity, } ) } @@ -112,28 +52,10 @@ fn impl_staking_account_details_increase_by() { #[test] fn impl_staking_account_details_default() { assert_eq!( - StakingAccountDetails::::default(), - StakingAccountDetails:: { + StakingDetails::::default(), + StakingDetails:: { active: BalanceOf::::zero(), - total: BalanceOf::::zero(), - unlocking: BoundedVec::default(), + staking_type: StakingType::MaximumCapacity, }, ); } - -#[test] -fn impl_staking_account_details_get_stakable_amount_for() { - new_test_ext().execute_with(|| { - let account = 200; - let staking_account = StakingAccountDetails::::default(); - - // When staking all of free balance. - assert_eq!(staking_account.get_stakable_amount_for(&account, 10), 10); - - // When staking an amount below free balance. - assert_eq!(staking_account.get_stakable_amount_for(&account, 5), 5); - - // When staking an amount above account free balance. It stakes all of the free balance. - assert_eq!(staking_account.get_stakable_amount_for(&account, 200), 190); - }); -} diff --git a/pallets/capacity/src/tests/unlock_chunks_tests.rs b/pallets/capacity/src/tests/unlock_chunks_tests.rs new file mode 100644 index 0000000000..423e0db3de --- /dev/null +++ b/pallets/capacity/src/tests/unlock_chunks_tests.rs @@ -0,0 +1,38 @@ +use crate::{ + tests::mock::{new_test_ext, Test}, + unlock_chunks_from_vec, unlock_chunks_reap_thawed, unlock_chunks_total, UnlockChunkList, +}; +use sp_runtime::BoundedVec; + +#[test] +fn unlock_chunks_reap_thawed_happy_path() { + new_test_ext().execute_with(|| { + // 10 token total, 6 token unstaked + let new_unlocks: Vec<(u32, u32)> = vec![(1u32, 2u32), (2u32, 3u32), (3u32, 4u32)]; + let mut chunks = unlock_chunks_from_vec::(&new_unlocks); + assert_eq!(3, chunks.len()); + + // At epoch 3, the first two chunks should be thawed. + let reaped = unlock_chunks_reap_thawed::(&mut chunks, 3); + assert_eq!(3, reaped); + assert_eq!(1, chunks.len()); + assert_eq!(3, unlock_chunks_total::(&chunks)); + + // At epoch 5, all unstaking is done. + assert_eq!(3u64, unlock_chunks_reap_thawed::(&mut chunks, 5u32)); + assert_eq!(0, chunks.len()); + + assert_eq!(0u64, unlock_chunks_reap_thawed::(&mut chunks, 5u32)); + }) +} + +#[test] +fn unlock_chunks_total_works() { + new_test_ext().execute_with(|| { + let mut chunks: UnlockChunkList = BoundedVec::default(); + assert_eq!(0u64, unlock_chunks_total::(&chunks)); + let new_unlocks: Vec<(u32, u32)> = vec![(1u32, 2u32), (2u32, 3u32), (3u32, 4u32)]; + chunks = unlock_chunks_from_vec::(&new_unlocks); + assert_eq!(6u64, unlock_chunks_total::(&chunks)); + }) +} diff --git a/pallets/capacity/src/tests/unstaking_tests.rs b/pallets/capacity/src/tests/unstaking_tests.rs index 916e354040..e001cf8b88 100644 --- a/pallets/capacity/src/tests/unstaking_tests.rs +++ b/pallets/capacity/src/tests/unstaking_tests.rs @@ -1,8 +1,13 @@ use super::{mock::*, testing_utils::*}; use crate as pallet_capacity; -use crate::{CapacityDetails, StakingAccountDetails, StakingTargetDetails, UnlockChunk}; +use crate::{ + CapacityDetails, FreezeReason, StakingDetails, StakingTargetDetails, StakingType, UnlockChunk, +}; use common_primitives::msa::MessageSourceId; -use frame_support::{assert_noop, assert_ok, traits::Get}; +use frame_support::{ + assert_noop, assert_ok, + traits::{fungible::InspectFreeze, Get}, +}; use pallet_capacity::{BalanceOf, Config, Error, Event}; use sp_core::bounded::BoundedVec; @@ -26,18 +31,19 @@ fn unstake_happy_path() { // Assert that staking account detail values are decremented correctly after unstaking let staking_account_details = Capacity::get_staking_account_for(token_account).unwrap(); - assert_eq!(staking_account_details.unlocking.len(), 1); let expected_unlocking_chunks: BoundedVec< UnlockChunk, ::EpochNumber>, ::MaxUnlockingChunks, > = BoundedVec::try_from(vec![UnlockChunk { value: unstaking_amount, thaw_at: 2u32 }]) .unwrap(); + let unlocking = Capacity::get_unstake_unlocking_for(token_account).unwrap(); + assert_eq!(unlocking, expected_unlocking_chunks); + assert_eq!( - StakingAccountDetails:: { + StakingDetails:: { active: BalanceOf::::from(60u64), - total: BalanceOf::::from(staking_amount), - unlocking: expected_unlocking_chunks, + staking_type: StakingType::MaximumCapacity, }, staking_account_details, ); @@ -109,7 +115,7 @@ fn unstake_errors_max_unlocking_chunks_exceeded() { assert_ok!(Capacity::stake(RuntimeOrigin::signed(token_account), target, staking_amount)); - for _n in 0..::MaxUnlockingChunks::get() { + for _n in 0..::MaxUnlockingChunks::get() { assert_ok!(Capacity::unstake( RuntimeOrigin::signed(token_account), target, @@ -158,3 +164,40 @@ fn unstake_errors_not_a_staking_account() { ); }); } + +#[test] +fn unstaking_everything_reaps_staking_account() { + new_test_ext().execute_with(|| { + let staker = 500; + let target = 1; + let amount = 20; + assert_ok!(Capacity::set_epoch_length(RuntimeOrigin::root(), 10)); + + register_provider(target, String::from("WithdrawUnst")); + assert_ok!(Capacity::stake(RuntimeOrigin::signed(staker), target, amount)); + + run_to_block(1); + // unstake everything + assert_ok!(Capacity::unstake(RuntimeOrigin::signed(staker), target, 20)); + assert_eq!(20u64, Balances::balance_frozen(&FreezeReason::CapacityStaking.into(), &staker)); + + // it should reap the staking account right away + assert!(Capacity::get_staking_account_for(&staker).is_none()); + }) +} + +#[test] +fn unstake_when_not_staking_to_target_errors() { + new_test_ext().execute_with(|| { + let staker = 500; + let target = 1; + let amount = 20; + register_provider(target, String::from("WithdrawUnst")); + + assert_ok!(Capacity::stake(RuntimeOrigin::signed(staker), target, amount)); + assert_noop!( + Capacity::unstake(RuntimeOrigin::signed(staker), 2, 20), + Error::::StakerTargetRelationshipNotFound + ); + }) +} diff --git a/pallets/capacity/src/tests/withdraw_unstaked_tests.rs b/pallets/capacity/src/tests/withdraw_unstaked_tests.rs index c8356b86e7..5346a766cc 100644 --- a/pallets/capacity/src/tests/withdraw_unstaked_tests.rs +++ b/pallets/capacity/src/tests/withdraw_unstaked_tests.rs @@ -1,39 +1,33 @@ -use super::{mock::*, testing_utils::run_to_block}; -use crate as pallet_capacity; -use crate::StakingAccountDetails; -use frame_support::{assert_noop, assert_ok}; -use pallet_capacity::{BalanceOf, Error, Event}; +use super::{ + mock::*, + testing_utils::{register_provider, run_to_block}, +}; +use crate::{ + self as pallet_capacity, unlock_chunks_from_vec, CurrentEpoch, CurrentEpochInfo, EpochInfo, + Error, Event, FreezeReason, UnstakeUnlocks, +}; +use frame_support::{assert_noop, assert_ok, traits::fungible::InspectFreeze}; +use pallet_capacity::Config; #[test] fn withdraw_unstaked_happy_path() { new_test_ext().execute_with(|| { - // set up staker and staking account let staker = 500; - // set new unlock chunks using tuples of (value, thaw_at in number of Epochs) - let unlocks: Vec<(u32, u32)> = vec![(1u32, 2u32), (2u32, 3u32), (3u32, 4u32)]; - - // setup_staking_account_for::(staker, staking_amount, &unlocks); - let mut staking_account = StakingAccountDetails::::default(); - - // we have 10 total staked, and 6 of those are unstaking. - staking_account.deposit(10); - assert_eq!(true, staking_account.set_unlock_chunks(&unlocks)); - assert_eq!(10u64, staking_account.total); - Capacity::set_staking_account(&staker, &staking_account.into()); - - let starting_account = Capacity::get_staking_account_for(&staker).unwrap(); - + CurrentEpoch::::set(0); + CurrentEpochInfo::::set(EpochInfo { epoch_start: 0 }); assert_ok!(Capacity::set_epoch_length(RuntimeOrigin::root(), 10)); + // set new unlock chunks using tuples of (value, thaw_at in number of Epochs) + let new_unlocks: Vec<(u32, u32)> = vec![(1u32, 2u32), (2u32, 3u32), (3u32, 4u32)]; + let unlocking = unlock_chunks_from_vec::(&new_unlocks); + UnstakeUnlocks::::set(&staker, Some(unlocking)); + // We want to advance to epoch 3 to unlock the first two sets. run_to_block(31); assert_eq!(3u32, Capacity::get_current_epoch()); assert_ok!(Capacity::withdraw_unstaked(RuntimeOrigin::signed(staker))); - let current_account: StakingAccountDetails = - Capacity::get_staking_account_for(&staker).unwrap(); let expected_reaped_value = 3u64; - assert_eq!(starting_account.total - expected_reaped_value, current_account.total); System::assert_last_event( Event::StakeWithdrawn { account: staker, amount: expected_reaped_value }.into(), ); @@ -44,59 +38,65 @@ fn withdraw_unstaked_happy_path() { fn withdraw_unstaked_correctly_sets_new_lock_state() { new_test_ext().execute_with(|| { let staker = 500; - let mut staking_account = StakingAccountDetails::::default(); - staking_account.deposit(10); + let target = 1; + let amount = 20; + assert_ok!(Capacity::set_epoch_length(RuntimeOrigin::root(), 10)); - // set new unlock chunks using tuples of (value, thaw_at) - let new_unlocks: Vec<(u32, u32)> = vec![(1u32, 2u32), (2u32, 3u32), (3u32, 4u32)]; - assert_eq!(true, staking_account.set_unlock_chunks(&new_unlocks)); + register_provider(target, String::from("WithdrawUnst")); + assert_ok!(Capacity::stake(RuntimeOrigin::signed(staker), target, amount)); - Capacity::set_staking_account(&staker, &staking_account); - assert_eq!(1, Balances::locks(&staker).len()); - assert_eq!(10u64, Balances::locks(&staker)[0].amount); + run_to_block(1); + assert_ok!(Capacity::unstake(RuntimeOrigin::signed(staker), target, 1)); + assert_eq!(20, Balances::balance_frozen(&FreezeReason::CapacityStaking.into(), &staker)); - assert_ok!(Capacity::set_epoch_length(RuntimeOrigin::root(), 10)); + // thaw period in mock is 2 Epochs * 10 blocks = 20 blocks. + run_to_block(21); + assert_ok!(Capacity::unstake(RuntimeOrigin::signed(staker), target, 2)); + assert_ok!(Capacity::withdraw_unstaked(RuntimeOrigin::signed(staker))); + assert_eq!(19u64, Balances::balance_frozen(&FreezeReason::CapacityStaking.into(), &staker)); - // Epoch length = 10, we want to run to epoch 3 - run_to_block(31); + run_to_block(41); + assert_ok!(Capacity::unstake(RuntimeOrigin::signed(staker), target, 3)); assert_ok!(Capacity::withdraw_unstaked(RuntimeOrigin::signed(staker))); + assert_eq!(17u64, Balances::balance_frozen(&FreezeReason::CapacityStaking.into(), &staker)); - assert_eq!(1, Balances::locks(&staker).len()); - assert_eq!(7u64, Balances::locks(&staker)[0].amount); + run_to_block(61); + assert_ok!(Capacity::withdraw_unstaked(RuntimeOrigin::signed(staker))); + assert_eq!( + 14u64, + ::Currency::balance_frozen( + &FreezeReason::CapacityStaking.into(), + &staker + ) + ); }) } #[test] fn withdraw_unstaked_cleans_up_storage_and_removes_all_locks_if_no_stake_left() { new_test_ext().execute_with(|| { - let mut staking_account = StakingAccountDetails::::default(); - let staking_amount: BalanceOf = 10; - staking_account.deposit(staking_amount); - - // set new unlock chunks using tuples of (value, thaw_at) - let new_unlocks: Vec<(u32, u32)> = vec![(10u32, 2u32)]; - assert_eq!(true, staking_account.set_unlock_chunks(&new_unlocks)); - let staker = 500; - Capacity::set_staking_account(&staker, &staking_account); + let target = 1; + let amount = 20; assert_ok!(Capacity::set_epoch_length(RuntimeOrigin::root(), 10)); - // Epoch Length = 10 and UnstakingThawPeriod = 2 (epochs) - run_to_block(30); - assert_ok!(Capacity::withdraw_unstaked(RuntimeOrigin::signed(staker))); - assert!(Capacity::get_staking_account_for(&staker).is_none()); + register_provider(target, String::from("WithdrawUnst")); + assert_ok!(Capacity::stake(RuntimeOrigin::signed(staker), target, amount)); + run_to_block(1); + // unstake everything + assert_ok!(Capacity::unstake(RuntimeOrigin::signed(staker), target, 20)); + // wait for thaw + run_to_block(21); + assert_ok!(Capacity::withdraw_unstaked(RuntimeOrigin::signed(staker))); assert_eq!(0, Balances::locks(&staker).len()); + assert!(Capacity::get_unstake_unlocking_for(&staker).is_none()); }) } #[test] fn withdraw_unstaked_cannot_withdraw_if_no_unstaking_chunks() { new_test_ext().execute_with(|| { - let staker = 500; - let mut staking_account = StakingAccountDetails::::default(); - staking_account.deposit(10); - Capacity::set_staking_account(&staker, &staking_account); assert_noop!( Capacity::withdraw_unstaked(RuntimeOrigin::signed(500)), Error::::NoUnstakedTokensAvailable @@ -107,29 +107,16 @@ fn withdraw_unstaked_cannot_withdraw_if_no_unstaking_chunks() { fn withdraw_unstaked_cannot_withdraw_if_unstaking_chunks_not_thawed() { new_test_ext().execute_with(|| { let staker = 500; - let mut staking_account = StakingAccountDetails::::default(); - staking_account.deposit(10); - - // set new unlock chunks using tuples of (value, thaw_at) - let new_unlocks: Vec<(u32, u32)> = vec![(1u32, 3u32), (2u32, 40u32), (3u32, 9u32)]; - assert_eq!(true, staking_account.set_unlock_chunks(&new_unlocks)); - - Capacity::set_staking_account(&staker, &staking_account); + let target = 1; + let amount = 10; + assert_ok!(Capacity::set_epoch_length(RuntimeOrigin::root(), 10)); + register_provider(target, String::from("WithdrawUnst")); + assert_ok!(Capacity::stake(RuntimeOrigin::signed(staker), target, amount)); - run_to_block(2); + run_to_block(11); assert_noop!( Capacity::withdraw_unstaked(RuntimeOrigin::signed(500)), Error::::NoUnstakedTokensAvailable ); }) } - -#[test] -fn withdraw_unstaked_error_if_not_a_staking_account() { - new_test_ext().execute_with(|| { - assert_noop!( - Capacity::withdraw_unstaked(RuntimeOrigin::signed(999)), - Error::::NotAStakingAccount - ); - }) -} diff --git a/pallets/capacity/src/types.rs b/pallets/capacity/src/types.rs index 72f5168cb8..80dc35c396 100644 --- a/pallets/capacity/src/types.rs +++ b/pallets/capacity/src/types.rs @@ -1,30 +1,39 @@ //! Types for the Capacity Pallet use super::*; use frame_support::{BoundedVec, EqNoBound, PartialEqNoBound, RuntimeDebugNoBound}; -use log::warn; use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; use scale_info::TypeInfo; use sp_runtime::{ traits::{CheckedAdd, CheckedSub, Saturating, Zero}, RuntimeDebug, }; - #[cfg(any(feature = "runtime-benchmarks", test))] use sp_std::vec::Vec; +#[derive( + Clone, Copy, Debug, Decode, Encode, TypeInfo, Eq, MaxEncodedLen, PartialEq, PartialOrd, +)] +/// The type of staking a given Staking Account is doing. +pub enum StakingType { + /// Staking account targets Providers for capacity only, no token reward + MaximumCapacity, + /// Staking account targets Providers and splits reward between capacity to the Provider + /// and token for the account holder + ProviderBoost, +} + /// The type used for storing information about staking details. #[derive( TypeInfo, RuntimeDebugNoBound, PartialEqNoBound, EqNoBound, Clone, Decode, Encode, MaxEncodedLen, )] #[scale_info(skip_type_params(T))] -pub struct StakingAccountDetails { +pub struct StakingDetails { /// The amount a Staker has staked, minus the sum of all tokens in `unlocking`. pub active: BalanceOf, - /// The total amount of tokens in `active` and `unlocking` - pub total: BalanceOf, - /// Unstaked balances that are thawing or awaiting withdrawal. - pub unlocking: BoundedVec, T::EpochNumber>, T::MaxUnlockingChunks>, + /// The type of staking for this staking account + pub staking_type: StakingType, } + /// The type that is used to record a single request for a number of tokens to be unlocked. #[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo, MaxEncodedLen)] pub struct UnlockChunk { @@ -34,79 +43,17 @@ pub struct UnlockChunk { pub thaw_at: EpochNumber, } -impl StakingAccountDetails { +impl StakingDetails { /// Increases total and active balances by an amount. pub fn deposit(&mut self, amount: BalanceOf) -> Option<()> { - self.total = amount.checked_add(&self.total)?; self.active = amount.checked_add(&self.active)?; - Some(()) } - /// Calculates a stakable amount from a proposed amount. - pub fn get_stakable_amount_for( - &self, - staker: &T::AccountId, - proposed_amount: BalanceOf, - ) -> BalanceOf { - let account_balance = T::Currency::free_balance(&staker); - let available_staking_balance = account_balance.saturating_sub(self.total); - available_staking_balance - .saturating_sub(T::MinimumTokenBalance::get()) - .min(proposed_amount) - } - - #[cfg(any(feature = "runtime-benchmarks", test))] - #[allow(clippy::unwrap_used)] - /// tmp fn for testing only - /// set unlock chunks with (balance, thaw_at). does not check that the unlock chunks - /// don't exceed total. - /// returns true on success, false on failure (?) - pub fn set_unlock_chunks(&mut self, chunks: &Vec<(u32, u32)>) -> bool { - let result: Vec, ::EpochNumber>> = chunks - .into_iter() - .map(|chunk| UnlockChunk { value: chunk.0.into(), thaw_at: chunk.1.into() }) - .collect(); - self.unlocking = BoundedVec::try_from(result).unwrap(); - self.unlocking.len() == chunks.len() - } - - /// deletes thawed chunks, updates `total`, Caller is responsible for updating free/locked - /// balance on the token account. - /// Returns: the total amount reaped from `unlocking` - pub fn reap_thawed(&mut self, current_epoch: ::EpochNumber) -> BalanceOf { - let mut total_reaped: BalanceOf = 0u32.into(); - self.unlocking.retain(|chunk| { - if current_epoch.ge(&chunk.thaw_at) { - total_reaped = total_reaped.saturating_add(chunk.value); - match self.total.checked_sub(&chunk.value) { - Some(new_total) => self.total = new_total, - None => warn!( - "Underflow when subtracting {:?} from staking total {:?}", - chunk.value, self.total - ), - } - false - } else { - true - } - }); - total_reaped - } - /// Decrease the amount of active stake by an amount and create an UnlockChunk. - pub fn withdraw( - &mut self, - amount: BalanceOf, - thaw_at: T::EpochNumber, - ) -> Result, DispatchError> { - // let's check for an early exit before doing all these calcs - ensure!( - self.unlocking.len() < T::MaxUnlockingChunks::get() as usize, - Error::::MaxUnlockingChunksExceeded - ); - + pub fn withdraw(&mut self, amount: BalanceOf) -> Result, DispatchError> { let current_active = self.active; + let mut new_active = self.active.saturating_sub(amount); let mut actual_unstaked: BalanceOf = amount; @@ -114,21 +61,15 @@ impl StakingAccountDetails { actual_unstaked = current_active; new_active = Zero::zero(); } - let unlock_chunk = UnlockChunk { value: actual_unstaked, thaw_at }; - - // we've already done the check but it's fine, we need to handle possible errors. - self.unlocking - .try_push(unlock_chunk) - .map_err(|_| Error::::MaxUnlockingChunksExceeded)?; self.active = new_active; Ok(actual_unstaked) } } -impl Default for StakingAccountDetails { +impl Default for StakingDetails { fn default() -> Self { - Self { active: Zero::zero(), total: Zero::zero(), unlocking: Default::default() } + Self { active: Zero::zero(), staking_type: StakingType::MaximumCapacity } } } @@ -237,3 +178,48 @@ pub struct EpochInfo { /// The block number when this epoch started. pub epoch_start: BlockNumber, } + +/// A BoundedVec containing UnlockChunks +pub type UnlockChunkList = BoundedVec< + UnlockChunk, ::EpochNumber>, + ::MaxUnlockingChunks, +>; + +/// Computes and returns the total token held in an UnlockChunkList. +pub fn unlock_chunks_total(unlock_chunks: &UnlockChunkList) -> BalanceOf { + unlock_chunks + .iter() + .fold(Zero::zero(), |acc: BalanceOf, chunk| acc.saturating_add(chunk.value)) +} + +/// Deletes thawed chunks +/// Caller is responsible for updating free/locked balance on the token account. +/// Returns: the total amount reaped from `unlocking` +pub fn unlock_chunks_reap_thawed( + unlock_chunks: &mut UnlockChunkList, + current_epoch: ::EpochNumber, +) -> BalanceOf { + let mut total_reaped: BalanceOf = 0u32.into(); + unlock_chunks.retain(|chunk| { + if current_epoch.ge(&chunk.thaw_at) { + total_reaped = total_reaped.saturating_add(chunk.value); + false + } else { + true + } + }); + total_reaped +} +#[cfg(any(feature = "runtime-benchmarks", test))] +#[allow(clippy::unwrap_used)] +/// set unlock chunks with (balance, thaw_at). Does not check BoundedVec limit. +/// returns true on success, false on failure (?) +/// For testing and benchmarks ONLY, note possible panic via BoundedVec::try_from + unwrap +pub fn unlock_chunks_from_vec(chunks: &Vec<(u32, u32)>) -> UnlockChunkList { + let result: Vec, ::EpochNumber>> = chunks + .into_iter() + .map(|chunk| UnlockChunk { value: chunk.0.into(), thaw_at: chunk.1.into() }) + .collect(); + // CAUTION + BoundedVec::try_from(result).unwrap() +} diff --git a/pallets/capacity/src/weights.rs b/pallets/capacity/src/weights.rs index fb7f024db5..fe1fc49770 100644 --- a/pallets/capacity/src/weights.rs +++ b/pallets/capacity/src/weights.rs @@ -18,9 +18,9 @@ //! Autogenerated weights for pallet_capacity //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-11-14, STEPS: `20`, REPEAT: `10`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-12-18, STEPS: `20`, REPEAT: `10`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `benchmark-runner-44wtw-sz2gt`, CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` +//! HOSTNAME: `benchmark-runner-44wtw-wvwrf`, CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` //! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("frequency-bench"), DB CACHE: 1024 // Executed Command: @@ -62,37 +62,41 @@ impl WeightInfo for SubstrateWeight { /// Storage: `Msa::ProviderToRegistryEntry` (r:1 w:0) /// Proof: `Msa::ProviderToRegistryEntry` (`max_values`: None, `max_size`: Some(33), added: 2508, mode: `MaxEncodedLen`) /// Storage: `Capacity::StakingAccountLedger` (r:1 w:1) - /// Proof: `Capacity::StakingAccountLedger` (`max_values`: None, `max_size`: Some(153), added: 2628, mode: `MaxEncodedLen`) + /// Proof: `Capacity::StakingAccountLedger` (`max_values`: None, `max_size`: Some(57), added: 2532, mode: `MaxEncodedLen`) /// Storage: `Capacity::StakingTargetLedger` (r:1 w:1) /// Proof: `Capacity::StakingTargetLedger` (`max_values`: None, `max_size`: Some(88), added: 2563, mode: `MaxEncodedLen`) /// Storage: `Capacity::CapacityLedger` (r:1 w:1) /// Proof: `Capacity::CapacityLedger` (`max_values`: None, `max_size`: Some(68), added: 2543, mode: `MaxEncodedLen`) - /// Storage: `Balances::Locks` (r:1 w:1) + /// Storage: `Capacity::UnstakeUnlocks` (r:1 w:0) + /// Proof: `Capacity::UnstakeUnlocks` (`max_values`: None, `max_size`: Some(121), added: 2596, mode: `MaxEncodedLen`) + /// Storage: `Balances::Freezes` (r:1 w:1) + /// Proof: `Balances::Freezes` (`max_values`: None, `max_size`: Some(85), added: 2560, mode: `MaxEncodedLen`) + /// Storage: `Balances::Locks` (r:1 w:0) /// Proof: `Balances::Locks` (`max_values`: None, `max_size`: Some(1299), added: 3774, mode: `MaxEncodedLen`) - /// Storage: `Balances::Freezes` (r:1 w:0) - /// Proof: `Balances::Freezes` (`max_values`: None, `max_size`: Some(49), added: 2524, mode: `MaxEncodedLen`) fn stake() -> Weight { // Proof Size summary in bytes: // Measured: `223` // Estimated: `6249` - // Minimum execution time: 43_154_000 picoseconds. - Weight::from_parts(44_525_000, 6249) - .saturating_add(T::DbWeight::get().reads(6_u64)) + // Minimum execution time: 43_760_000 picoseconds. + Weight::from_parts(45_156_000, 6249) + .saturating_add(T::DbWeight::get().reads(7_u64)) .saturating_add(T::DbWeight::get().writes(4_u64)) } - /// Storage: `Capacity::StakingAccountLedger` (r:1 w:1) - /// Proof: `Capacity::StakingAccountLedger` (`max_values`: None, `max_size`: Some(153), added: 2628, mode: `MaxEncodedLen`) - /// Storage: `Balances::Locks` (r:1 w:1) + /// Storage: `Capacity::UnstakeUnlocks` (r:1 w:1) + /// Proof: `Capacity::UnstakeUnlocks` (`max_values`: None, `max_size`: Some(121), added: 2596, mode: `MaxEncodedLen`) + /// Storage: `Capacity::StakingAccountLedger` (r:1 w:0) + /// Proof: `Capacity::StakingAccountLedger` (`max_values`: None, `max_size`: Some(57), added: 2532, mode: `MaxEncodedLen`) + /// Storage: `Balances::Freezes` (r:1 w:1) + /// Proof: `Balances::Freezes` (`max_values`: None, `max_size`: Some(85), added: 2560, mode: `MaxEncodedLen`) + /// Storage: `Balances::Locks` (r:1 w:0) /// Proof: `Balances::Locks` (`max_values`: None, `max_size`: Some(1299), added: 3774, mode: `MaxEncodedLen`) - /// Storage: `Balances::Freezes` (r:1 w:0) - /// Proof: `Balances::Freezes` (`max_values`: None, `max_size`: Some(49), added: 2524, mode: `MaxEncodedLen`) fn withdraw_unstaked() -> Weight { // Proof Size summary in bytes: - // Measured: `339` + // Measured: `285` // Estimated: `6249` - // Minimum execution time: 33_031_000 picoseconds. - Weight::from_parts(34_284_000, 6249) - .saturating_add(T::DbWeight::get().reads(3_u64)) + // Minimum execution time: 29_609_000 picoseconds. + Weight::from_parts(30_663_000, 6249) + .saturating_add(T::DbWeight::get().reads(4_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } /// Storage: `Capacity::CurrentEpochInfo` (r:1 w:1) @@ -103,28 +107,26 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `2974` - // Minimum execution time: 3_876_000 picoseconds. - Weight::from_parts(4_036_000, 2974) + // Minimum execution time: 4_520_000 picoseconds. + Weight::from_parts(4_587_000, 2974) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } /// Storage: `Capacity::StakingAccountLedger` (r:1 w:1) - /// Proof: `Capacity::StakingAccountLedger` (`max_values`: None, `max_size`: Some(153), added: 2628, mode: `MaxEncodedLen`) - /// Storage: `Balances::Locks` (r:1 w:1) - /// Proof: `Balances::Locks` (`max_values`: None, `max_size`: Some(1299), added: 3774, mode: `MaxEncodedLen`) - /// Storage: `Balances::Freezes` (r:1 w:0) - /// Proof: `Balances::Freezes` (`max_values`: None, `max_size`: Some(49), added: 2524, mode: `MaxEncodedLen`) + /// Proof: `Capacity::StakingAccountLedger` (`max_values`: None, `max_size`: Some(57), added: 2532, mode: `MaxEncodedLen`) + /// Storage: `Capacity::UnstakeUnlocks` (r:1 w:1) + /// Proof: `Capacity::UnstakeUnlocks` (`max_values`: None, `max_size`: Some(121), added: 2596, mode: `MaxEncodedLen`) /// Storage: `Capacity::StakingTargetLedger` (r:1 w:1) /// Proof: `Capacity::StakingTargetLedger` (`max_values`: None, `max_size`: Some(88), added: 2563, mode: `MaxEncodedLen`) /// Storage: `Capacity::CapacityLedger` (r:1 w:1) /// Proof: `Capacity::CapacityLedger` (`max_values`: None, `max_size`: Some(68), added: 2543, mode: `MaxEncodedLen`) fn unstake() -> Weight { // Proof Size summary in bytes: - // Measured: `433` - // Estimated: `6249` - // Minimum execution time: 38_465_000 picoseconds. - Weight::from_parts(39_656_000, 6249) - .saturating_add(T::DbWeight::get().reads(5_u64)) + // Measured: `271` + // Estimated: `5071` + // Minimum execution time: 27_378_000 picoseconds. + Weight::from_parts(28_128_000, 5071) + .saturating_add(T::DbWeight::get().reads(4_u64)) .saturating_add(T::DbWeight::get().writes(4_u64)) } /// Storage: `Capacity::EpochLength` (r:0 w:1) @@ -133,8 +135,8 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_805_000 picoseconds. - Weight::from_parts(7_569_000, 0) + // Minimum execution time: 6_566_000 picoseconds. + Weight::from_parts(6_931_000, 0) .saturating_add(T::DbWeight::get().writes(1_u64)) } } @@ -144,37 +146,41 @@ impl WeightInfo for () { /// Storage: `Msa::ProviderToRegistryEntry` (r:1 w:0) /// Proof: `Msa::ProviderToRegistryEntry` (`max_values`: None, `max_size`: Some(33), added: 2508, mode: `MaxEncodedLen`) /// Storage: `Capacity::StakingAccountLedger` (r:1 w:1) - /// Proof: `Capacity::StakingAccountLedger` (`max_values`: None, `max_size`: Some(153), added: 2628, mode: `MaxEncodedLen`) + /// Proof: `Capacity::StakingAccountLedger` (`max_values`: None, `max_size`: Some(57), added: 2532, mode: `MaxEncodedLen`) /// Storage: `Capacity::StakingTargetLedger` (r:1 w:1) /// Proof: `Capacity::StakingTargetLedger` (`max_values`: None, `max_size`: Some(88), added: 2563, mode: `MaxEncodedLen`) /// Storage: `Capacity::CapacityLedger` (r:1 w:1) /// Proof: `Capacity::CapacityLedger` (`max_values`: None, `max_size`: Some(68), added: 2543, mode: `MaxEncodedLen`) - /// Storage: `Balances::Locks` (r:1 w:1) + /// Storage: `Capacity::UnstakeUnlocks` (r:1 w:0) + /// Proof: `Capacity::UnstakeUnlocks` (`max_values`: None, `max_size`: Some(121), added: 2596, mode: `MaxEncodedLen`) + /// Storage: `Balances::Freezes` (r:1 w:1) + /// Proof: `Balances::Freezes` (`max_values`: None, `max_size`: Some(85), added: 2560, mode: `MaxEncodedLen`) + /// Storage: `Balances::Locks` (r:1 w:0) /// Proof: `Balances::Locks` (`max_values`: None, `max_size`: Some(1299), added: 3774, mode: `MaxEncodedLen`) - /// Storage: `Balances::Freezes` (r:1 w:0) - /// Proof: `Balances::Freezes` (`max_values`: None, `max_size`: Some(49), added: 2524, mode: `MaxEncodedLen`) fn stake() -> Weight { // Proof Size summary in bytes: // Measured: `223` // Estimated: `6249` - // Minimum execution time: 43_154_000 picoseconds. - Weight::from_parts(44_525_000, 6249) - .saturating_add(RocksDbWeight::get().reads(6_u64)) + // Minimum execution time: 43_760_000 picoseconds. + Weight::from_parts(45_156_000, 6249) + .saturating_add(RocksDbWeight::get().reads(7_u64)) .saturating_add(RocksDbWeight::get().writes(4_u64)) } - /// Storage: `Capacity::StakingAccountLedger` (r:1 w:1) - /// Proof: `Capacity::StakingAccountLedger` (`max_values`: None, `max_size`: Some(153), added: 2628, mode: `MaxEncodedLen`) - /// Storage: `Balances::Locks` (r:1 w:1) + /// Storage: `Capacity::UnstakeUnlocks` (r:1 w:1) + /// Proof: `Capacity::UnstakeUnlocks` (`max_values`: None, `max_size`: Some(121), added: 2596, mode: `MaxEncodedLen`) + /// Storage: `Capacity::StakingAccountLedger` (r:1 w:0) + /// Proof: `Capacity::StakingAccountLedger` (`max_values`: None, `max_size`: Some(57), added: 2532, mode: `MaxEncodedLen`) + /// Storage: `Balances::Freezes` (r:1 w:1) + /// Proof: `Balances::Freezes` (`max_values`: None, `max_size`: Some(85), added: 2560, mode: `MaxEncodedLen`) + /// Storage: `Balances::Locks` (r:1 w:0) /// Proof: `Balances::Locks` (`max_values`: None, `max_size`: Some(1299), added: 3774, mode: `MaxEncodedLen`) - /// Storage: `Balances::Freezes` (r:1 w:0) - /// Proof: `Balances::Freezes` (`max_values`: None, `max_size`: Some(49), added: 2524, mode: `MaxEncodedLen`) fn withdraw_unstaked() -> Weight { // Proof Size summary in bytes: - // Measured: `339` + // Measured: `285` // Estimated: `6249` - // Minimum execution time: 33_031_000 picoseconds. - Weight::from_parts(34_284_000, 6249) - .saturating_add(RocksDbWeight::get().reads(3_u64)) + // Minimum execution time: 29_609_000 picoseconds. + Weight::from_parts(30_663_000, 6249) + .saturating_add(RocksDbWeight::get().reads(4_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } /// Storage: `Capacity::CurrentEpochInfo` (r:1 w:1) @@ -185,28 +191,26 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `2974` - // Minimum execution time: 3_876_000 picoseconds. - Weight::from_parts(4_036_000, 2974) + // Minimum execution time: 4_520_000 picoseconds. + Weight::from_parts(4_587_000, 2974) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } /// Storage: `Capacity::StakingAccountLedger` (r:1 w:1) - /// Proof: `Capacity::StakingAccountLedger` (`max_values`: None, `max_size`: Some(153), added: 2628, mode: `MaxEncodedLen`) - /// Storage: `Balances::Locks` (r:1 w:1) - /// Proof: `Balances::Locks` (`max_values`: None, `max_size`: Some(1299), added: 3774, mode: `MaxEncodedLen`) - /// Storage: `Balances::Freezes` (r:1 w:0) - /// Proof: `Balances::Freezes` (`max_values`: None, `max_size`: Some(49), added: 2524, mode: `MaxEncodedLen`) + /// Proof: `Capacity::StakingAccountLedger` (`max_values`: None, `max_size`: Some(57), added: 2532, mode: `MaxEncodedLen`) + /// Storage: `Capacity::UnstakeUnlocks` (r:1 w:1) + /// Proof: `Capacity::UnstakeUnlocks` (`max_values`: None, `max_size`: Some(121), added: 2596, mode: `MaxEncodedLen`) /// Storage: `Capacity::StakingTargetLedger` (r:1 w:1) /// Proof: `Capacity::StakingTargetLedger` (`max_values`: None, `max_size`: Some(88), added: 2563, mode: `MaxEncodedLen`) /// Storage: `Capacity::CapacityLedger` (r:1 w:1) /// Proof: `Capacity::CapacityLedger` (`max_values`: None, `max_size`: Some(68), added: 2543, mode: `MaxEncodedLen`) fn unstake() -> Weight { // Proof Size summary in bytes: - // Measured: `433` - // Estimated: `6249` - // Minimum execution time: 38_465_000 picoseconds. - Weight::from_parts(39_656_000, 6249) - .saturating_add(RocksDbWeight::get().reads(5_u64)) + // Measured: `271` + // Estimated: `5071` + // Minimum execution time: 27_378_000 picoseconds. + Weight::from_parts(28_128_000, 5071) + .saturating_add(RocksDbWeight::get().reads(4_u64)) .saturating_add(RocksDbWeight::get().writes(4_u64)) } /// Storage: `Capacity::EpochLength` (r:0 w:1) @@ -215,8 +219,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_805_000 picoseconds. - Weight::from_parts(7_569_000, 0) + // Minimum execution time: 6_566_000 picoseconds. + Weight::from_parts(6_931_000, 0) .saturating_add(RocksDbWeight::get().writes(1_u64)) } } diff --git a/pallets/frequency-tx-payment/src/lib.rs b/pallets/frequency-tx-payment/src/lib.rs index 14b90cd066..f233dec315 100644 --- a/pallets/frequency-tx-payment/src/lib.rs +++ b/pallets/frequency-tx-payment/src/lib.rs @@ -26,7 +26,7 @@ use frame_support::{ dispatch::{DispatchInfo, GetDispatchInfo, PostDispatchInfo}, pallet_prelude::*, - traits::{Currency, IsSubType, IsType}, + traits::{IsSubType, IsType}, weights::{Weight, WeightToFee}, DefaultNoBound, }; diff --git a/pallets/frequency-tx-payment/src/payment.rs b/pallets/frequency-tx-payment/src/payment.rs index a0ce583042..2ccbd99260 100644 --- a/pallets/frequency-tx-payment/src/payment.rs +++ b/pallets/frequency-tx-payment/src/payment.rs @@ -1,5 +1,5 @@ use common_primitives::msa::MsaValidator; -use frame_support::traits::tokens::Balance; +use frame_support::traits::tokens::{fungible::Inspect as InspectFungible, Balance}; use sp_std::marker::PhantomData; use super::*; @@ -23,7 +23,7 @@ pub struct CapacityAdapter(PhantomData<(Curr, Msa)>); impl OnChargeCapacityTransaction for CapacityAdapter where T: Config, - Curr: Currency<::AccountId>, + Curr: InspectFungible<::AccountId>, Msa: MsaValidator::AccountId>, BalanceOf: Send + Sync + FixedPointOperand + IsType> + MaxEncodedLen, { @@ -36,7 +36,7 @@ where fee: Self::Balance, ) -> Result { ensure!( - Curr::free_balance(key) >= Curr::minimum_balance(), + Curr::balance(key) >= Curr::minimum_balance(), TransactionValidityError::Invalid(InvalidTransaction::Payment) ); diff --git a/pallets/frequency-tx-payment/src/tests/mock.rs b/pallets/frequency-tx-payment/src/tests/mock.rs index 83a1befab8..3130a398d8 100644 --- a/pallets/frequency-tx-payment/src/tests/mock.rs +++ b/pallets/frequency-tx-payment/src/tests/mock.rs @@ -33,7 +33,7 @@ frame_support::construct_runtime!( System: frame_system::{Pallet, Call, Config, Storage, Event}, Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, Msa: pallet_msa::{Pallet, Call, Storage, Event}, - Capacity: pallet_capacity::{Pallet, Call, Storage, Event}, + Capacity: pallet_capacity::{Pallet, Call, Storage, Event, FreezeReason}, TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event}, FrequencyTxPayment: pallet_frequency_tx_payment::{Pallet, Call, Event}, Utility: pallet_utility::{Pallet, Call, Storage, Event}, @@ -91,8 +91,8 @@ impl pallet_balances::Config for Test { type ExistentialDeposit = ConstU64<1>; type AccountStore = System; type MaxReserves = (); - type FreezeIdentifier = (); - type MaxFreezes = ConstU32<0>; + type FreezeIdentifier = RuntimeFreezeReason; + type MaxFreezes = ConstU32<1>; type MaxHolds = ConstU32<0>; type RuntimeHoldReason = (); } @@ -216,6 +216,7 @@ impl pallet_capacity::Config for Test { type MaxEpochLength = ConstU32<100>; type EpochNumber = u32; type CapacityPerToken = TestCapacityPerToken; + type RuntimeFreezeReason = RuntimeFreezeReason; } use pallet_balances::Call as BalancesCall; diff --git a/pallets/msa/src/tests/signed_extension_tests.rs b/pallets/msa/src/tests/signed_extension_tests.rs index cd60440cf4..a6e63985a1 100644 --- a/pallets/msa/src/tests/signed_extension_tests.rs +++ b/pallets/msa/src/tests/signed_extension_tests.rs @@ -300,6 +300,33 @@ fn signed_ext_check_nonce_creates_token_account_if_paying() { }) } +#[test] +fn signed_ext_check_nonce_increases_nonce_for_an_existing_account_for_free_transactions() { + new_test_ext().execute_with(|| { + // arrange + let who = test_public(1); + let len = 0_usize; + let free_call: &::RuntimeCall = + &RuntimeCall::Msa(MsaCall::delete_msa_public_key { public_key_to_delete: who.clone() }); + let free_call_info = free_call.get_dispatch_info(); + let mut account = frame_system::Account::::get(who.clone()); + account.consumers += 1; + frame_system::Account::::insert(who.clone(), account); + + // act + assert_ok!(CheckNonce::(0).pre_dispatch( + &who.clone(), + free_call, + &free_call_info, + len + )); + + // assert + let account_after = frame_system::Account::::try_get(who).expect("should resolve"); + assert_eq!(account_after.nonce, 1); + }) +} + #[test] fn signed_extension_validation_delete_msa_public_key_success() { new_test_ext().execute_with(|| { diff --git a/pallets/schemas/src/benchmarking.rs b/pallets/schemas/src/benchmarking.rs index 79b1396313..fb6c898a9e 100644 --- a/pallets/schemas/src/benchmarking.rs +++ b/pallets/schemas/src/benchmarking.rs @@ -1,4 +1,5 @@ #![allow(clippy::unwrap_used)] +use common_primitives::schema::SchemaVersion; use frame_benchmarking::{benchmarks, whitelisted_caller}; use frame_support::{assert_ok, ensure, BoundedVec}; use frame_system::RawOrigin; @@ -83,6 +84,24 @@ benchmarks! { ensure!(SchemasPallet::::get_schema_info(1).is_some(), "Created schema should exist"); } + create_schema_v3 { + let m in (T::MinSchemaModelSizeBytes::get() + 8) .. (T::SchemaModelMaxBytesBoundedVecLimit::get() - 1); + let sender: T::AccountId = whitelisted_caller(); + let version: SchemaVersion = 1; + let namespace = vec![b'a'; NAMESPACE_MIN as usize]; + let descriptor = vec![b'b'; DESCRIPTOR_MAX as usize]; + let name:Vec= namespace.into_iter().chain(vec![b'.'].into_iter()).chain(descriptor.into_iter()).collect(); + let bounded_name = BoundedVec::try_from(name).expect("should resolve"); + let model_type = ModelType::AvroBinary; + let payload_location = PayloadLocation::OnChain; + assert_ok!(SchemasPallet::::set_max_schema_model_bytes(RawOrigin::Root.into(), T::SchemaModelMaxBytesBoundedVecLimit::get())); + let schema_input = generate_schema::(m as usize); + }: _(RawOrigin::Signed(sender), schema_input, model_type, payload_location, BoundedVec::default(), Some(bounded_name)) + verify { + ensure!(SchemasPallet::::get_current_schema_identifier_maximum() > 0, "Created schema count should be > 0"); + ensure!(SchemasPallet::::get_schema_info(1).is_some(), "Created schema should exist"); + } + set_max_schema_model_bytes { let sender = RawOrigin::Root; let max_size = T::SchemaModelMaxBytesBoundedVecLimit::get(); @@ -91,7 +110,69 @@ benchmarks! { ensure!(SchemasPallet::::get_schema_model_max_bytes() == T::SchemaModelMaxBytesBoundedVecLimit::get(), "Schema model max should be updated!"); } + create_schema_via_governance_v2 { + let m in (T::MinSchemaModelSizeBytes::get() + 8) .. (T::SchemaModelMaxBytesBoundedVecLimit::get() - 1); + let sender: T::AccountId = whitelisted_caller(); + let namespace = vec![b'a'; NAMESPACE_MIN as usize]; + let descriptor = vec![b'b'; DESCRIPTOR_MAX as usize]; + let name:Vec= namespace.into_iter().chain(vec![b'.'].into_iter()).chain(descriptor.into_iter()).collect(); + let bounded_name = BoundedVec::try_from(name).expect("should resolve"); + let model_type = ModelType::AvroBinary; + let payload_location = PayloadLocation::OnChain; + assert_ok!(SchemasPallet::::set_max_schema_model_bytes(RawOrigin::Root.into(), T::SchemaModelMaxBytesBoundedVecLimit::get())); + let schema_input = generate_schema::(m as usize); + }: _(RawOrigin::Root, sender.clone(), schema_input, model_type, payload_location, BoundedVec::default(), Some(bounded_name)) + verify { + ensure!(SchemasPallet::::get_current_schema_identifier_maximum() > 0, "Created schema count should be > 0"); + ensure!(SchemasPallet::::get_schema_info(1).is_some(), "Created schema should exist"); + } + + propose_to_create_schema_v2 { + let m in (T::MinSchemaModelSizeBytes::get() + 8) .. (T::SchemaModelMaxBytesBoundedVecLimit::get() - 1); + let sender: T::AccountId = whitelisted_caller(); + let model_type = ModelType::AvroBinary; + let payload_location = PayloadLocation::OnChain; + let namespace = vec![b'a'; NAMESPACE_MIN as usize]; + let descriptor = vec![b'b'; DESCRIPTOR_MAX as usize]; + let name:Vec= namespace.into_iter().chain(vec![b'.'].into_iter()).chain(descriptor.into_iter()).collect(); + let bounded_name = BoundedVec::try_from(name).expect("should resolve"); + assert_ok!(SchemasPallet::::set_max_schema_model_bytes(RawOrigin::Root.into(), T::SchemaModelMaxBytesBoundedVecLimit::get())); + let schema_input = generate_schema::(m as usize); + }: _(RawOrigin::Signed(sender), schema_input, model_type, payload_location, BoundedVec::default(), Some(bounded_name)) + verify { + assert_eq!(T::ProposalProvider::proposal_count(), 1); + } + + propose_to_create_schema_name { + let sender: T::AccountId = whitelisted_caller(); + let schema_id = 1; + let model = generate_schema::(100 as usize); + let namespace = vec![b'a'; NAMESPACE_MIN as usize]; + let descriptor = vec![b'b'; DESCRIPTOR_MAX as usize]; + let name:Vec= namespace.into_iter().chain(vec![b'.'].into_iter()).chain(descriptor.into_iter()).collect(); + let schema_name = SchemaNamePayload::try_from(name).expect("should resolve"); + assert_ok!(SchemasPallet::::set_max_schema_model_bytes(RawOrigin::Root.into(), T::SchemaModelMaxBytesBoundedVecLimit::get())); + assert_ok!(SchemasPallet::::add_schema(model, ModelType::AvroBinary, PayloadLocation::OnChain, BoundedVec::default(), None)); + }: _(RawOrigin::Signed(sender), schema_id, schema_name) + verify { + assert_eq!(T::ProposalProvider::proposal_count(), 1); + } + create_schema_name_via_governance { + let schema_id = 1; + let model = generate_schema::(100 as usize); + let namespace = vec![b'a'; NAMESPACE_MIN as usize]; + let descriptor = vec![b'b'; DESCRIPTOR_MAX as usize]; + let name:Vec= namespace.into_iter().chain(vec![b'.'].into_iter()).chain(descriptor.into_iter()).collect(); + let schema_name = SchemaNamePayload::try_from(name).expect("should resolve"); + assert_ok!(SchemasPallet::::set_max_schema_model_bytes(RawOrigin::Root.into(), T::SchemaModelMaxBytesBoundedVecLimit::get())); + assert_ok!(SchemasPallet::::add_schema(model, ModelType::AvroBinary, PayloadLocation::OnChain, BoundedVec::default(), None)); + }: _(RawOrigin::Root, schema_id, schema_name.clone()) + verify { + let versions = SchemasPallet::::get_schema_versions(schema_name.into_inner()); + ensure!(versions.is_some(), "Created schema name should exist"); + ensure!(versions.unwrap().len() == 1, "Version should be added!"); + } impl_benchmark_test_suite!( SchemasPallet, diff --git a/pallets/schemas/src/lib.rs b/pallets/schemas/src/lib.rs index c0662f0112..23c10e1c7f 100644 --- a/pallets/schemas/src/lib.rs +++ b/pallets/schemas/src/lib.rs @@ -75,7 +75,7 @@ mod tests; mod benchmarking; #[cfg(feature = "runtime-benchmarks")] use common_primitives::benchmarks::SchemaBenchmarkHelper; -use common_primitives::schema::SchemaInfoResponse; +use common_primitives::schema::{SchemaInfoResponse, SchemaVersionResponse}; /// migration module pub mod migration; mod types; @@ -148,6 +148,14 @@ pub mod pallet { /// Max size of schema document max_size: u32, }, + + /// Emitted when a schema is assigned a name + SchemaNameCreated { + /// Schema ID which a name is assigned + schema_id: SchemaId, + /// ASCII string in bytes of the assigned name + name: Vec, + }, } #[derive(PartialEq, Eq)] // for testing @@ -167,6 +175,36 @@ pub mod pallet { /// Invalid setting for schema InvalidSetting, + + /// Invalid schema name encoding + InvalidSchemaNameEncoding, + + /// Invalid schema name characters + InvalidSchemaNameCharacters, + + /// Invalid schema name structure + InvalidSchemaNameStructure, + + /// Invalid schema name length + InvalidSchemaNameLength, + + /// Invalid schema namespace length + InvalidSchemaNamespaceLength, + + /// Invalid schema descriptor length + InvalidSchemaDescriptorLength, + + /// Schema version exceeds the maximum allowed number + ExceedsMaxNumberOfVersions, + + /// Inserted schema id already exists + SchemaIdAlreadyExists, + + /// SchemaId does not exist + SchemaIdDoesNotExist, + + /// SchemaId has a name already + SchemaIdAlreadyHasName, } #[pallet::pallet] @@ -209,6 +247,21 @@ pub mod pallet { OptionQuery, >; + /// Storage for message schema info struct data + /// - Key: Schema Id + /// - Value: [`SchemaInfo`](SchemaInfo) + #[pallet::storage] + #[pallet::getter(fn get_schema_ids)] + pub(super) type SchemaNameToIds = StorageDoubleMap< + _, + Blake2_128Concat, + SchemaNamespace, + Blake2_128Concat, + SchemaDescriptor, + SchemaVersionId, + ValueQuery, + >; + #[pallet::genesis_config] pub struct GenesisConfig { /// Maximum schema size in bytes at genesis @@ -251,7 +304,7 @@ pub mod pallet { #[pallet::weight(T::WeightInfo::create_schema(model.len() as u32))] #[allow(deprecated)] #[deprecated( - note = "please use `create_schema_v2` since `create_schema` has been deprecated." + note = "please use `create_schema_v3` since `create_schema` has been deprecated." )] pub fn create_schema( origin: OriginFor, @@ -261,11 +314,12 @@ pub mod pallet { ) -> DispatchResult { let sender = ensure_signed(origin)?; - let schema_id = Self::create_schema_for( + let (schema_id, _) = Self::create_schema_for( model, model_type, payload_location, BoundedVec::default(), + None, )?; Self::deposit_event(Event::SchemaCreated { key: sender, schema_id }); @@ -304,6 +358,10 @@ pub mod pallet { /// #[pallet::call_index(2)] #[pallet::weight(T::WeightInfo::propose_to_create_schema(model.len() as u32))] + #[allow(deprecated)] + #[deprecated( + note = "please use `propose_to_create_schema_v2` since `propose_to_create_schema` has been deprecated." + )] pub fn propose_to_create_schema( origin: OriginFor, model: BoundedVec, @@ -339,6 +397,10 @@ pub mod pallet { /// * [`Error::SchemaCountOverflow`] - The schema count has exceeded its bounds #[pallet::call_index(3)] #[pallet::weight(T::WeightInfo::create_schema_via_governance(model.len() as u32+ settings.len() as u32))] + #[allow(deprecated)] + #[deprecated( + note = "please use `create_schema_via_governance_v2` since `create_schema_via_governance` has been deprecated." + )] pub fn create_schema_via_governance( origin: OriginFor, creator_key: T::AccountId, @@ -348,7 +410,8 @@ pub mod pallet { settings: BoundedVec, ) -> DispatchResult { T::CreateSchemaViaGovernanceOrigin::ensure_origin(origin)?; - let schema_id = Self::create_schema_for(model, model_type, payload_location, settings)?; + let (schema_id, _) = + Self::create_schema_for(model, model_type, payload_location, settings, None)?; Self::deposit_event(Event::SchemaCreated { key: creator_key, schema_id }); Ok(()) @@ -372,6 +435,10 @@ pub mod pallet { /// #[pallet::call_index(4)] #[pallet::weight(T::WeightInfo::create_schema_v2(model.len() as u32 + settings.len() as u32))] + #[allow(deprecated)] + #[deprecated( + note = "please use `create_schema_v3` since `create_schema_v2` has been deprecated." + )] pub fn create_schema_v2( origin: OriginFor, model: BoundedVec, @@ -381,11 +448,235 @@ pub mod pallet { ) -> DispatchResult { let sender = ensure_signed(origin)?; - let schema_id = Self::create_schema_for(model, model_type, payload_location, settings)?; + let (schema_id, _) = + Self::create_schema_for(model, model_type, payload_location, settings, None)?; Self::deposit_event(Event::SchemaCreated { key: sender, schema_id }); Ok(()) } + + /// Propose to create a schema. Creates a proposal for council approval to create a schema + /// + #[pallet::call_index(5)] + #[pallet::weight( + match schema_name { + Some(_) => T::WeightInfo::propose_to_create_schema_v2(model.len() as u32), + None => T::WeightInfo::propose_to_create_schema(model.len() as u32) + } + )] + pub fn propose_to_create_schema_v2( + origin: OriginFor, + model: BoundedVec, + model_type: ModelType, + payload_location: PayloadLocation, + settings: BoundedVec, + schema_name: Option, + ) -> DispatchResult { + let proposer = ensure_signed(origin)?; + + let proposal: Box = Box::new( + (Call::::create_schema_via_governance_v2 { + creator_key: proposer.clone(), + model, + model_type, + payload_location, + settings, + schema_name, + }) + .into(), + ); + T::ProposalProvider::propose_with_simple_majority(proposer, proposal)?; + Ok(()) + } + + /// Create a schema by means of council approval + /// + /// # Events + /// * [`Event::SchemaCreated`] + /// * [`Event::SchemaNameCreated`] + /// + /// # Errors + /// * [`Error::LessThanMinSchemaModelBytes`] - The schema's length is less than the minimum schema length + /// * [`Error::ExceedsMaxSchemaModelBytes`] - The schema's length is greater than the maximum schema length + /// * [`Error::InvalidSchema`] - Schema is malformed in some way + /// * [`Error::SchemaCountOverflow`] - The schema count has exceeded its bounds + /// * [`Error::InvalidSchemaNameEncoding`] - The schema name has invalid encoding + /// * [`Error::InvalidSchemaNameCharacters`] - The schema name has invalid characters + /// * [`Error::InvalidSchemaNameStructure`] - The schema name has invalid structure + /// * [`Error::InvalidSchemaNameLength`] - The schema name has invalid length + /// * [`Error::InvalidSchemaNamespaceLength`] - The schema namespace has invalid length + /// * [`Error::InvalidSchemaDescriptorLength`] - The schema descriptor has invalid length + /// * [`Error::ExceedsMaxNumberOfVersions`] - The schema name reached max number of versions + /// + #[pallet::call_index(6)] + #[pallet::weight( + match schema_name { + Some(_) => T::WeightInfo::create_schema_via_governance_v2(model.len() as u32+ settings.len() as u32), + None => T::WeightInfo::create_schema_via_governance(model.len() as u32+ settings.len() as u32) + } + )] + pub fn create_schema_via_governance_v2( + origin: OriginFor, + creator_key: T::AccountId, + model: BoundedVec, + model_type: ModelType, + payload_location: PayloadLocation, + settings: BoundedVec, + schema_name: Option, + ) -> DispatchResult { + T::CreateSchemaViaGovernanceOrigin::ensure_origin(origin)?; + let (schema_id, schema_name) = Self::create_schema_for( + model, + model_type, + payload_location, + settings, + schema_name, + )?; + + Self::deposit_event(Event::SchemaCreated { key: creator_key, schema_id }); + if let Some(inner_name) = schema_name { + Self::deposit_event(Event::SchemaNameCreated { + schema_id, + name: inner_name.get_combined_name(), + }); + } + Ok(()) + } + + /// Adds a given schema to storage. The schema in question must be of length + /// between the min and max model size allowed for schemas (see pallet + /// constants above). If the pallet's maximum schema limit has been + /// fulfilled by the time this extrinsic is called, a SchemaCountOverflow error + /// will be thrown. + /// + /// # Events + /// * [`Event::SchemaCreated`] + /// * [`Event::SchemaNameCreated`] + /// + /// # Errors + /// * [`Error::LessThanMinSchemaModelBytes`] - The schema's length is less than the minimum schema length + /// * [`Error::ExceedsMaxSchemaModelBytes`] - The schema's length is greater than the maximum schema length + /// * [`Error::InvalidSchema`] - Schema is malformed in some way + /// * [`Error::SchemaCountOverflow`] - The schema count has exceeded its bounds + /// * [`Error::InvalidSetting`] - Invalid setting is provided + /// * [`Error::InvalidSchemaNameEncoding`] - The schema name has invalid encoding + /// * [`Error::InvalidSchemaNameCharacters`] - The schema name has invalid characters + /// * [`Error::InvalidSchemaNameStructure`] - The schema name has invalid structure + /// * [`Error::InvalidSchemaNameLength`] - The schema name has invalid length + /// * [`Error::InvalidSchemaNamespaceLength`] - The schema namespace has invalid length + /// * [`Error::InvalidSchemaDescriptorLength`] - The schema descriptor has invalid length + /// * [`Error::ExceedsMaxNumberOfVersions`] - The schema name reached max number of versions + /// + #[pallet::call_index(7)] + #[pallet::weight( + match schema_name { + Some(_) => T::WeightInfo::create_schema_v3(model.len() as u32 + settings.len() as u32), + None => T::WeightInfo::create_schema_v2(model.len() as u32 + settings.len() as u32) + } + )] + pub fn create_schema_v3( + origin: OriginFor, + model: BoundedVec, + model_type: ModelType, + payload_location: PayloadLocation, + settings: BoundedVec, + schema_name: Option, + ) -> DispatchResult { + let sender = ensure_signed(origin)?; + + let (schema_id, schema_name) = Self::create_schema_for( + model, + model_type, + payload_location, + settings, + schema_name, + )?; + + Self::deposit_event(Event::SchemaCreated { key: sender, schema_id }); + if let Some(inner_name) = schema_name { + Self::deposit_event(Event::SchemaNameCreated { + schema_id, + name: inner_name.get_combined_name(), + }); + } + Ok(()) + } + + /// Propose to create a schema name. Creates a proposal for council approval to create a schema name + /// * [`Error::LessThanMinSchemaModelBytes`] - The schema's length is less than the minimum schema length + /// * [`Error::ExceedsMaxSchemaModelBytes`] - The schema's length is greater than the maximum schema length + /// * [`Error::InvalidSchema`] - Schema is malformed in some way + /// * [`Error::InvalidSchemaNameEncoding`] - The schema name has invalid encoding + /// * [`Error::InvalidSchemaNameCharacters`] - The schema name has invalid characters + /// * [`Error::InvalidSchemaNameStructure`] - The schema name has invalid structure + /// * [`Error::InvalidSchemaNameLength`] - The schema name has invalid length + /// * [`Error::InvalidSchemaNamespaceLength`] - The schema namespace has invalid length + /// * [`Error::InvalidSchemaDescriptorLength`] - The schema descriptor has invalid length + /// * [`Error::ExceedsMaxNumberOfVersions`] - The schema name reached max number of versions + /// * [`Error::SchemaIdDoesNotExist`] - The schema id does not exist + /// * [`Error::SchemaIdAlreadyHasName`] - The schema id already has a name + #[pallet::call_index(8)] + #[pallet::weight(T::WeightInfo::propose_to_create_schema_name())] + pub fn propose_to_create_schema_name( + origin: OriginFor, + schema_id: SchemaId, + schema_name: SchemaNamePayload, + ) -> DispatchResult { + let proposer = ensure_signed(origin)?; + + let _ = Self::parse_and_verify_schema_name(schema_id, &schema_name)?; + + let proposal: Box = Box::new( + (Call::::create_schema_name_via_governance { schema_id, schema_name }).into(), + ); + T::ProposalProvider::propose_with_simple_majority(proposer, proposal)?; + Ok(()) + } + + /// Assigns a name to a schema without any name + /// + /// # Events + /// * [`Event::SchemaNameCreated`] + /// + /// # Errors + /// * [`Error::LessThanMinSchemaModelBytes`] - The schema's length is less than the minimum schema length + /// * [`Error::ExceedsMaxSchemaModelBytes`] - The schema's length is greater than the maximum schema length + /// * [`Error::InvalidSchema`] - Schema is malformed in some way + /// * [`Error::SchemaCountOverflow`] - The schema count has exceeded its bounds + /// * [`Error::InvalidSchemaNameEncoding`] - The schema name has invalid encoding + /// * [`Error::InvalidSchemaNameCharacters`] - The schema name has invalid characters + /// * [`Error::InvalidSchemaNameStructure`] - The schema name has invalid structure + /// * [`Error::InvalidSchemaNameLength`] - The schema name has invalid length + /// * [`Error::InvalidSchemaNamespaceLength`] - The schema namespace has invalid length + /// * [`Error::InvalidSchemaDescriptorLength`] - The schema descriptor has invalid length + /// * [`Error::ExceedsMaxNumberOfVersions`] - The schema name reached max number of versions + /// * [`Error::SchemaIdDoesNotExist`] - The schema id does not exist + /// * [`Error::SchemaIdAlreadyHasName`] - The schema id already has a name + /// + #[pallet::call_index(9)] + #[pallet::weight(T::WeightInfo::create_schema_name_via_governance())] + pub fn create_schema_name_via_governance( + origin: OriginFor, + schema_id: SchemaId, + schema_name: SchemaNamePayload, + ) -> DispatchResult { + T::CreateSchemaViaGovernanceOrigin::ensure_origin(origin)?; + + let parsed_name = Self::parse_and_verify_schema_name(schema_id, &schema_name)?; + SchemaNameToIds::::try_mutate( + &parsed_name.namespace, + &parsed_name.descriptor, + |schema_version_id| -> DispatchResult { + schema_version_id.add::(schema_id)?; + + Self::deposit_event(Event::SchemaNameCreated { + schema_id, + name: parsed_name.get_combined_name(), + }); + Ok(()) + }, + ) + } } impl Pallet { @@ -402,18 +693,34 @@ pub mod pallet { model_type: ModelType, payload_location: PayloadLocation, settings: BoundedVec, + schema_name_option: Option, ) -> Result { let schema_id = Self::get_next_schema_id()?; + let has_name = schema_name_option.is_some(); let mut set_settings = SchemaSettings::all_disabled(); if !settings.is_empty() { for i in settings.into_inner() { set_settings.set(i); } } - let schema_info = SchemaInfo { model_type, payload_location, settings: set_settings }; + + if let Some(schema_name) = schema_name_option { + SchemaNameToIds::::try_mutate( + schema_name.namespace, + schema_name.descriptor, + |schema_version_id| -> Result<(), DispatchError> { + schema_version_id.add::(schema_id)?; + Ok(()) + }, + )?; + }; + + let schema_info = + SchemaInfo { model_type, payload_location, settings: set_settings, has_name }; >::set(schema_id); >::insert(schema_id, schema_info); >::insert(schema_id, model); + Ok(schema_id) } @@ -508,7 +815,8 @@ pub mod pallet { model_type: ModelType, payload_location: PayloadLocation, settings: BoundedVec, - ) -> Result { + optional_schema_name: Option, + ) -> Result<(SchemaId, Option), DispatchError> { Self::ensure_valid_model(&model_type, &model)?; ensure!( model.len() >= T::MinSchemaModelSizeBytes::get() as usize, @@ -524,7 +832,52 @@ pub mod pallet { payload_location == PayloadLocation::Itemized, Error::::InvalidSetting ); - Self::add_schema(model, model_type, payload_location, settings) + let schema_name = match optional_schema_name { + None => None, + Some(name_payload) => { + let parsed_name = SchemaName::try_parse::(name_payload, true)?; + Some(parsed_name) + }, + }; + let schema_id = Self::add_schema( + model, + model_type, + payload_location, + settings, + schema_name.clone(), + )?; + Ok((schema_id, schema_name)) + } + + /// a method to return all versions of a schema name with their schemaIds + /// Warning: Must only get called from RPC, since the number of DB accesses is not deterministic + pub fn get_schema_versions(schema_name: Vec) -> Option> { + let bounded_name = BoundedVec::try_from(schema_name).ok()?; + let parsed_name = SchemaName::try_parse::(bounded_name, false).ok()?; + let versions: Vec<_> = match parsed_name.descriptor_exists() { + true => SchemaNameToIds::::get(&parsed_name.namespace, &parsed_name.descriptor) + .convert_to_response(&parsed_name), + false => SchemaNameToIds::::iter_prefix(&parsed_name.namespace) + .flat_map(|(descriptor, val)| { + val.convert_to_response(&parsed_name.new_with_descriptor(descriptor)) + }) + .collect(), + }; + Some(versions) + } + + /// Parses the schema name and makes sure the schema does not have a name + fn parse_and_verify_schema_name( + schema_id: SchemaId, + schema_name: &SchemaNamePayload, + ) -> Result { + let schema_option = Self::get_schema_info(schema_id); + ensure!(schema_option.is_some(), Error::::SchemaIdDoesNotExist); + if let Some(info) = schema_option { + ensure!(!info.has_name, Error::::SchemaIdAlreadyHasName); + } + let parsed_name = SchemaName::try_parse::(schema_name.clone(), true)?; + Ok(parsed_name) } } } @@ -546,7 +899,7 @@ impl SchemaBenchmarkHelper for Pallet { let model: BoundedVec = model.try_into().unwrap(); Self::ensure_valid_model(&model_type, &model)?; - Self::add_schema(model, model_type, payload_location, BoundedVec::default())?; + Self::add_schema(model, model_type, payload_location, BoundedVec::default(), None)?; Ok(()) } } diff --git a/pallets/schemas/src/migration/mod.rs b/pallets/schemas/src/migration/mod.rs index c34354a101..4c2cc2564a 100644 --- a/pallets/schemas/src/migration/mod.rs +++ b/pallets/schemas/src/migration/mod.rs @@ -1,2 +1,2 @@ -/// migrations to v2 -pub mod v2; +/// migrations to v3 +pub mod v3; diff --git a/pallets/schemas/src/migration/v3.rs b/pallets/schemas/src/migration/v3.rs new file mode 100644 index 0000000000..2683bada6a --- /dev/null +++ b/pallets/schemas/src/migration/v3.rs @@ -0,0 +1,179 @@ +#[cfg(feature = "try-runtime")] +use crate::types::SCHEMA_STORAGE_VERSION; +use crate::{ + migration::v3::old::OldSchemaInfo, + pallet::{SchemaInfos, SchemaNameToIds}, + Config, Pallet, SchemaId, SchemaInfo, SchemaName, LOG_TARGET, +}; +use frame_support::{pallet_prelude::*, traits::OnRuntimeUpgrade, weights::Weight}; +use log; +use sp_runtime::Saturating; +#[cfg(feature = "try-runtime")] +use sp_runtime::TryRuntimeError; +use sp_std::{collections::btree_map::BTreeMap, vec::Vec}; + +/// get known schema names for mainnet +#[cfg(feature = "frequency")] +pub fn get_known_schemas() -> BTreeMap> { + BTreeMap::from([ + (1, b"dsnp.tombstone".to_vec()), + (2, b"dsnp.broadcast".to_vec()), + (3, b"dsnp.reply".to_vec()), + (4, b"dsnp.reaction".to_vec()), + (5, b"dsnp.update".to_vec()), + (6, b"dsnp.profile".to_vec()), + (7, b"dsnp.public-key-key-agreement".to_vec()), + (8, b"dsnp.public-follows".to_vec()), + (9, b"dsnp.private-follows".to_vec()), + (10, b"dsnp.private-connections".to_vec()), + ]) +} +/// get known schema names for rococo +#[cfg(not(feature = "frequency"))] +pub fn get_known_schemas() -> BTreeMap> { + BTreeMap::from([ + (1, b"dsnp.tombstone".to_vec()), + (2, b"dsnp.broadcast".to_vec()), + (3, b"dsnp.reply".to_vec()), + (4, b"dsnp.reaction".to_vec()), + (5, b"dsnp.profile".to_vec()), + (6, b"dsnp.update".to_vec()), + (18, b"dsnp.public-key-key-agreement".to_vec()), + (13, b"dsnp.public-follows".to_vec()), + (14, b"dsnp.private-follows".to_vec()), + (15, b"dsnp.private-connections".to_vec()), + ]) +} + +/// old module storages +pub mod old { + use super::*; + use common_primitives::schema::{ModelType, PayloadLocation, SchemaSettings}; + + #[derive(Clone, Encode, Decode, PartialEq, Debug, TypeInfo, Eq, MaxEncodedLen)] + /// A structure defining a Schema information (excluding the payload) + pub struct OldSchemaInfo { + /// The type of model (AvroBinary, Parquet, etc.) + pub model_type: ModelType, + /// The payload location + pub payload_location: PayloadLocation, + /// additional control settings for the schema + pub settings: SchemaSettings, + } +} + +/// migration to v3 implementation +pub struct MigrateToV3(PhantomData); + +impl OnRuntimeUpgrade for MigrateToV3 { + fn on_runtime_upgrade() -> Weight { + migrate_to_v3::() + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result, TryRuntimeError> { + log::info!(target: LOG_TARGET, "Running pre_upgrade..."); + let count = SchemaInfos::::iter().count() as u32; + log::info!(target: LOG_TARGET, "Finish pre_upgrade for {:?}", count); + Ok(count.encode()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade(_: Vec) -> Result<(), TryRuntimeError> { + log::info!(target: LOG_TARGET, "Running post_upgrade..."); + let onchain_version = Pallet::::on_chain_storage_version(); + assert_eq!(onchain_version, SCHEMA_STORAGE_VERSION); + log::info!(target: LOG_TARGET, "Finished post_upgrade"); + Ok(()) + } +} + +/// migrating to v3 +pub fn migrate_to_v3() -> Weight { + log::info!(target: LOG_TARGET, "Running storage migration..."); + let onchain_version = Pallet::::on_chain_storage_version(); + let current_version = Pallet::::current_storage_version(); + log::info!(target: LOG_TARGET, "onchain_version= {:?}, current_version={:?}", onchain_version, current_version); + let each_layer_access: u64 = 33 * 16; + + if onchain_version < 3 { + let known_schemas = get_known_schemas(); + let mut reads = 1u64; + let mut writes = 0u64; + let mut bytes = 0u64; + + SchemaInfos::::translate_values(|old: OldSchemaInfo| -> Option { + reads.saturating_inc(); + writes.saturating_inc(); + bytes = bytes.saturating_add(old.encode().len() as u64); + bytes = bytes.saturating_add(each_layer_access * 3); // three layers in merkle tree + + Some(SchemaInfo { + model_type: old.model_type, + payload_location: old.payload_location, + settings: old.settings, + has_name: false, + }) + }); + + log::info!(target: LOG_TARGET, "Finished translating {:?} SchemaInfos!", writes); + + for (schema_id, schema_name) in known_schemas.iter() { + reads.saturating_inc(); + + if let Some(mut schema) = SchemaInfos::::get(&schema_id) { + bytes = bytes.saturating_add(schema.encode().len() as u64); + bytes = bytes.saturating_add(each_layer_access * 3); // three layers in merkle tree + + match BoundedVec::try_from(schema_name.clone()) { + Ok(bounded_name) => match SchemaName::try_parse::(bounded_name, true) { + Ok(parsed_name) => { + let _ = SchemaNameToIds::::try_mutate( + parsed_name.namespace, + parsed_name.descriptor, + |schema_version_id| -> Result<(), DispatchError> { + bytes = bytes + .saturating_add(schema_version_id.encode().len() as u64); + + let _ = schema_version_id.add::(*schema_id); + + // set schema as having a name + schema.has_name = true; + SchemaInfos::::set(&schema_id, Some(schema)); + writes.saturating_inc(); + + Ok(()) + }, + ); + reads.saturating_inc(); + writes.saturating_inc(); + }, + Err(_) => { + log::error!(target: LOG_TARGET, "Not able to parse the name {:?}", schema_name); + }, + }, + Err(_) => { + log::error!(target: LOG_TARGET, "Was not able to get bounded vec {:?}", schema_name); + }, + } + } + } + + // Set storage version to `3`. + StorageVersion::new(3).put::>(); + writes.saturating_inc(); + + log::info!(target: LOG_TARGET, "Storage migrated to version 3 read={:?}, write={:?}, bytes={:?}", reads, writes, bytes); + let weights = T::DbWeight::get().reads_writes(reads, writes).add_proof_size(bytes); + log::info!(target: LOG_TARGET, "Migration Calculated weights={:?}",weights); + weights + } else { + log::info!( + target: LOG_TARGET, + "Migration did not execute. This probably should be removed onchain:{:?}, current:{:?}", + onchain_version, + current_version + ); + T::DbWeight::get().reads(1) + } +} diff --git a/pallets/schemas/src/rpc/src/lib.rs b/pallets/schemas/src/rpc/src/lib.rs index 241caf2aa9..7901239181 100644 --- a/pallets/schemas/src/rpc/src/lib.rs +++ b/pallets/schemas/src/rpc/src/lib.rs @@ -55,6 +55,10 @@ pub trait SchemasApi { /// validates a schema model and returns `true` if the model is correct. #[method(name = "schemas_checkSchemaValidity")] fn check_schema_validity(&self, model: Vec, at: Option) -> RpcResult; + + /// returns an array of schema versions + #[method(name = "schemas_getVersions")] + fn get_versions(&self, schema_name: String) -> RpcResult>>; } /// The client handler for the API used by Frequency Service RPC with `jsonrpsee` @@ -99,4 +103,11 @@ where let schema_api_result = api.get_by_schema_id(at, schema_id); map_rpc_result(schema_api_result) } + + fn get_versions(&self, schema_name: String) -> RpcResult>> { + let api = self.client.runtime_api(); + let at = self.client.info().best_hash; + let schema_api_result = api.get_schema_versions_by_name(at, schema_name.into_bytes()); + map_rpc_result(schema_api_result) + } } diff --git a/pallets/schemas/src/rpc/src/tests/mod.rs b/pallets/schemas/src/rpc/src/tests/mod.rs index 4722062b8b..aba41017b6 100644 --- a/pallets/schemas/src/rpc/src/tests/mod.rs +++ b/pallets/schemas/src/rpc/src/tests/mod.rs @@ -2,12 +2,14 @@ mod rpc_mock; use super::*; use rpc_mock::*; +use std::string::ToString; use pallet_schemas_runtime_api::SchemasRuntimeApi; use std::sync::Arc; use substrate_test_runtime_client::runtime::Block; const SUCCESSFUL_SCHEMA_ID: u16 = 1; +const SUCCESSFUL_SCHEMA_NAME: &str = "namespace.descriptor"; sp_api::mock_impl_runtime_apis! { impl SchemasRuntimeApi for TestRuntimeApi { @@ -23,10 +25,33 @@ sp_api::mock_impl_runtime_apis! { _ => None, } } + + fn get_schema_versions_by_name(schema_name: Vec) -> Option> { + let successful_name_bytes = SUCCESSFUL_SCHEMA_NAME.to_string().into_bytes(); + if successful_name_bytes == schema_name { + Some( + vec![ + SchemaVersionResponse { + schema_id: 1, + schema_version: 1, + schema_name: successful_name_bytes.clone() + }, + SchemaVersionResponse { + schema_id: 10, + schema_version: 2, + schema_name: successful_name_bytes.clone() + }, + ] + ) + } else { + None + } + } } } type SchemaResult = Result, jsonrpsee::core::Error>; +type VersionResult = Result>, jsonrpsee::core::Error>; #[tokio::test] async fn get_schema_with_non_existent_schema_id_should_return_none() { @@ -57,6 +82,18 @@ async fn get_schema_with_success() { assert_eq!(PayloadLocation::OnChain, response.payload_location); } +#[tokio::test] +async fn get_schema_versions_with_success() { + let client = Arc::new(TestApi {}); + let api = SchemasHandler::new(client); + + let result: VersionResult = api.get_versions(SUCCESSFUL_SCHEMA_NAME.to_string()); + + assert_eq!(true, result.is_ok()); + let response = result.unwrap().unwrap(); + assert_eq!(response.len(), 2); +} + #[tokio::test] async fn check_schema_validity_success() { let client = Arc::new(TestApi {}); diff --git a/pallets/schemas/src/runtime-api/src/lib.rs b/pallets/schemas/src/runtime-api/src/lib.rs index 71e114cec1..af0a175199 100644 --- a/pallets/schemas/src/runtime-api/src/lib.rs +++ b/pallets/schemas/src/runtime-api/src/lib.rs @@ -18,6 +18,7 @@ //! - Runtime interfaces for end users beyond just State Queries use common_primitives::schema::*; +use sp_api::vec::Vec; sp_api::decl_runtime_apis! { @@ -25,12 +26,14 @@ sp_api::decl_runtime_apis! { /// - MUST be incremented if anything changes /// - Also update in js/api-augment /// - See: https://paritytech.github.io/polkadot/doc/polkadot_primitives/runtime_api/index.html - #[api_version(1)] + #[api_version(2)] /// Runtime API definition for [Schemas](../pallet_schemas/index.html) pub trait SchemasRuntimeApi { /// Fetch the schema by id fn get_by_schema_id(schema_id: SchemaId) -> Option; + /// Fetch the schema versions by name + fn get_schema_versions_by_name(schema_name: Vec) -> Option>; } } diff --git a/pallets/schemas/src/tests/deprecated_tests.rs b/pallets/schemas/src/tests/deprecated_tests.rs new file mode 100644 index 0000000000..ff460d00ae --- /dev/null +++ b/pallets/schemas/src/tests/deprecated_tests.rs @@ -0,0 +1,470 @@ +use super::mock::*; +use crate::{Error, Event as AnnouncementEvent}; +use common_primitives::{ + node::AccountId, + schema::{ModelType, PayloadLocation, SchemaId, SchemaSetting}, +}; +use frame_support::{ + assert_noop, assert_ok, + traits::{ChangeMembers, Hash}, + weights::Weight, + BoundedVec, +}; +use parity_scale_codec::Encode; +use serial_test::serial; + +#[test] +#[allow(deprecated)] +fn require_valid_schema_size_errors() { + new_test_ext().execute_with(|| { + sudo_set_max_schema_size(); + let test_cases: [TestCase<(Error, u8)>; 2] = [ + TestCase { + input: r#"{"a":1}"#, + expected: (Error::::LessThanMinSchemaModelBytes, 3), + }, + TestCase { + input: r#"{"id": "long", "title": "I am a very very very long schema", "properties": "just way too long to live a long life", "description": "Just a never ending stream of bytes that goes on for a minute too long"}"#, + expected: (Error::::ExceedsMaxSchemaModelBytes, 2), + }, + ]; + for tc in test_cases { + assert_noop!( + SchemasPallet::create_schema(RuntimeOrigin::signed(test_public(1)), create_bounded_schema_vec(tc.input), ModelType::AvroBinary, PayloadLocation::OnChain), + tc.expected.0); + } + }) +} + +#[test] +#[allow(deprecated)] +fn create_schema_v2_requires_valid_schema_size() { + new_test_ext().execute_with(|| { + sudo_set_max_schema_size(); + let test_cases: [TestCase<(Error, u8)>; 2] = [ + TestCase { + input: r#"{"a":1}"#, + expected: (Error::::LessThanMinSchemaModelBytes, 3), + }, + TestCase { + input: r#"{"id": "long", "title": "I am a very very very long schema", "properties": "just way too long to live a long life", "description": "Just a never ending stream of bytes that goes on for a minute too long"}"#, + expected: (Error::::ExceedsMaxSchemaModelBytes, 2), + }, + ]; + for tc in test_cases { + assert_noop!( + SchemasPallet::create_schema_v2(RuntimeOrigin::signed(test_public(1)), create_bounded_schema_vec(tc.input), ModelType::AvroBinary, PayloadLocation::OnChain, BoundedVec::default()), + tc.expected.0); + } + }) +} + +#[test] +#[allow(deprecated)] +fn create_schema_via_governance_happy_path() { + new_test_ext().execute_with(|| { + sudo_set_max_schema_size(); + let sender: AccountId = test_public(5); + assert_ok!(SchemasPallet::create_schema_via_governance( + RuntimeOrigin::from(pallet_collective::RawOrigin::Members(2, 3)), + sender, + create_bounded_schema_vec(r#"{"name": "Doe", "type": "lost"}"#), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::default(), + )); + }) +} + +/// Test that a request to be a provider, makes the MSA a provider after the council approves it. +#[test] +#[allow(deprecated)] +fn propose_to_create_schema_happy_path() { + new_test_ext().execute_with(|| { + sudo_set_max_schema_size(); + + let test_model = r#"{"foo": "bar", "bar": "buzz"}"#; + let serialized_fields = Vec::from(test_model.as_bytes()); + // Propose a new schema + _ = SchemasPallet::propose_to_create_schema( + test_origin_signed(5), + create_bounded_schema_vec(test_model), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::default(), + ); + + // Find the Proposed event and get it's hash and index so it can be voted on + let proposed_events: Vec<(u32, Hash)> = System::events() + .iter() + .filter_map(|event| match event.event { + RuntimeEvent::Council(pallet_collective::Event::Proposed { + account: _, + proposal_index, + proposal_hash, + threshold: _, + }) => Some((proposal_index, proposal_hash)), + _ => None, + }) + .collect(); + + assert_eq!(proposed_events.len(), 1); + + let proposal_index = proposed_events[0].0; + let proposal_hash = proposed_events[0].1; + let proposal = Council::proposal_of(proposal_hash).unwrap(); + let proposal_len: u32 = proposal.encoded_size() as u32; + + // Set up the council members + let council_member_1 = test_public(1); // Use ALICE as a council member + let council_member_2 = test_public(2); // Use BOB as a council member + let council_member_3 = test_public(3); // Use CHARLIE as a council member + + let incoming = vec![]; + let outgoing = vec![]; + Council::change_members( + &incoming, + &outgoing, + vec![council_member_1.clone(), council_member_2.clone(), council_member_3.clone()], + ); + + // Council member #1 votes AYE on the proposal + assert_ok!(Council::vote( + RuntimeOrigin::signed(council_member_1.clone()), + proposal_hash, + proposal_index, + true + )); + // Council member #2 votes AYE on the proposal + assert_ok!(Council::vote( + RuntimeOrigin::signed(council_member_2.clone()), + proposal_hash, + proposal_index, + true + )); + // Council member #3 votes NAY on the proposal + assert_ok!(Council::vote( + RuntimeOrigin::signed(council_member_3.clone()), + proposal_hash, + proposal_index, + false + )); + + // Find the Voted event and check if it passed + let voted_events: Vec<(bool, u32, u32)> = System::events() + .iter() + .filter_map(|event| match event.event { + RuntimeEvent::Council(pallet_collective::Event::Voted { + account: _, + proposal_hash: _, + voted, + yes, + no, + }) => Some((voted, yes, no)), + _ => None, + }) + .collect(); + + assert_eq!(voted_events.len(), 3); + assert_eq!(voted_events[1].1, 2); // There should be two AYE (out of three) votes to pass + + // Close the voting + assert_ok!(Council::close( + RuntimeOrigin::signed(test_public(5)), + proposal_hash, + proposal_index, + Weight::MAX, + proposal_len + )); + + // Find the Closed event and check if it passed + let closed_events: Vec<(u32, u32)> = System::events() + .iter() + .filter_map(|event| match event.event { + RuntimeEvent::Council(pallet_collective::Event::Closed { + proposal_hash: _, + yes, + no, + }) => Some((yes, no)), + _ => None, + }) + .collect(); + + assert_eq!(closed_events.len(), 1); + assert_eq!(closed_events[0].0, 2); // There should be two YES votes to pass + + // Find the SchemaCreated event and check if it passed + let schema_events: Vec = System::events() + .iter() + .filter_map(|event| match event.event { + RuntimeEvent::SchemasPallet(AnnouncementEvent::SchemaCreated { + key: _, + schema_id, + }) => Some(schema_id), + _ => None, + }) + .collect(); + + // Confirm that the schema was created + assert_eq!(schema_events.len(), 1); + + let last_schema_id = schema_events[0]; + let created_schema = SchemasPallet::get_schema_by_id(last_schema_id); + assert_eq!(created_schema.as_ref().is_some(), true); + assert_eq!(created_schema.as_ref().unwrap().clone().model, serialized_fields); + }) +} + +#[allow(deprecated)] +#[test] +fn create_schema_happy_path() { + new_test_ext().execute_with(|| { + sudo_set_max_schema_size(); + let sender: AccountId = test_public(1); + assert_ok!(SchemasPallet::create_schema( + RuntimeOrigin::signed(sender), + create_bounded_schema_vec(r#"{"name": "Doe", "type": "lost"}"#), + ModelType::AvroBinary, + PayloadLocation::OnChain, + )); + }) +} + +#[test] +#[allow(deprecated)] +fn create_schema_v2_happy_path() { + new_test_ext().execute_with(|| { + sudo_set_max_schema_size(); + let sender: AccountId = test_public(1); + assert_ok!(SchemasPallet::create_schema_v2( + RuntimeOrigin::signed(sender), + create_bounded_schema_vec(r#"{"name": "Doe", "type": "lost"}"#), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::default() + )); + }) +} + +#[allow(deprecated)] +#[test] +fn create_schema_unhappy_path() { + new_test_ext().execute_with(|| { + sudo_set_max_schema_size(); + let sender: AccountId = test_public(1); + assert_noop!( + SchemasPallet::create_schema( + RuntimeOrigin::signed(sender), + // name key does not have a colon + create_bounded_schema_vec(r#"{"name", 54, "type": "none"}"#), + ModelType::AvroBinary, + PayloadLocation::OnChain, + ), + Error::::InvalidSchema + ); + }) +} + +#[allow(deprecated)] +#[test] +#[serial] +fn create_schema_id_deposits_events_and_increments_schema_id() { + new_test_ext().execute_with(|| { + sudo_set_max_schema_size(); + let sender: AccountId = test_public(1); + let mut last_schema_id: SchemaId = 0; + for fields in [ + r#"{"Name": "Bond", "Code": "007"}"#, + r#"{"type": "num","minimum": -90,"maximum": 90}"#, + r#"{"latitude": 48.858093,"longitude": 2.294694}"#, + ] { + let expected_schema_id = last_schema_id + 1; + assert_ok!(SchemasPallet::create_schema( + RuntimeOrigin::signed(sender.clone()), + create_bounded_schema_vec(fields), + ModelType::AvroBinary, + PayloadLocation::OnChain, + )); + System::assert_last_event( + AnnouncementEvent::SchemaCreated { + key: sender.clone(), + schema_id: expected_schema_id, + } + .into(), + ); + last_schema_id = expected_schema_id; + } + assert_ok!(SchemasPallet::create_schema( + RuntimeOrigin::signed(sender.clone()), + create_bounded_schema_vec(r#"{"account":3050}"#), + ModelType::AvroBinary, + PayloadLocation::OnChain, + )); + }) +} + +#[test] +#[allow(deprecated)] +#[serial] +fn create_schema_v2_id_deposits_events_and_increments_schema_id() { + new_test_ext().execute_with(|| { + sudo_set_max_schema_size(); + let sender: AccountId = test_public(1); + let mut last_schema_id: SchemaId = 0; + for fields in [ + r#"{"Name": "Bond", "Code": "007"}"#, + r#"{"type": "num","minimum": -90,"maximum": 90}"#, + r#"{"latitude": 48.858093,"longitude": 2.294694}"#, + ] { + let expected_schema_id = last_schema_id + 1; + assert_ok!(SchemasPallet::create_schema_v2( + RuntimeOrigin::signed(sender.clone()), + create_bounded_schema_vec(fields), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::default() + )); + System::assert_last_event( + AnnouncementEvent::SchemaCreated { + key: sender.clone(), + schema_id: expected_schema_id, + } + .into(), + ); + last_schema_id = expected_schema_id; + } + assert_ok!(SchemasPallet::create_schema_v2( + RuntimeOrigin::signed(sender.clone()), + create_bounded_schema_vec(r#"{"account":3050}"#), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::default() + )); + }) +} + +#[allow(deprecated)] +#[test] +fn get_existing_schema_by_id_should_return_schema() { + new_test_ext().execute_with(|| { + let sender: AccountId = test_public(1); + sudo_set_max_schema_size(); + // arrange + let test_str = r#"{"foo": "bar", "bar": "buzz"}"#; + let serialized_fields = Vec::from(test_str.as_bytes()); + assert_ok!(SchemasPallet::create_schema( + RuntimeOrigin::signed(sender), + create_bounded_schema_vec(test_str), + ModelType::AvroBinary, + PayloadLocation::OnChain, + )); + + // act + let res = SchemasPallet::get_schema_by_id(1); + + // assert + assert_eq!(res.as_ref().is_some(), true); + assert_eq!(res.as_ref().unwrap().clone().model, serialized_fields); + }) +} + +#[allow(deprecated)] +#[test] +fn get_existing_schema_by_id_should_return_schema_v2() { + new_test_ext().execute_with(|| { + let sender: AccountId = test_public(1); + sudo_set_max_schema_size(); + // arrange + let test_str = r#"{"foo": "bar", "bar": "buzz"}"#; + let serialized_fields = Vec::from(test_str.as_bytes()); + assert_ok!(SchemasPallet::create_schema_v2( + RuntimeOrigin::signed(sender), + create_bounded_schema_vec(test_str), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::default() + )); + + // act + let res = SchemasPallet::get_schema_by_id(1); + + // assert + assert_eq!(res.as_ref().is_some(), true); + assert_eq!(res.as_ref().unwrap().clone().model, serialized_fields); + }) +} + +#[allow(deprecated)] +#[test] +fn create_schema_with_settings_should_work() { + new_test_ext().execute_with(|| { + sudo_set_max_schema_size(); + + // arrange + let settings = vec![SchemaSetting::AppendOnly]; + let sender: AccountId = test_public(1); + + // act and assert + assert_ok!(SchemasPallet::create_schema_via_governance( + RuntimeOrigin::from(pallet_collective::RawOrigin::Members(2, 3)), + sender, + create_bounded_schema_vec(r#"{"name":"John Doe"}"#), + ModelType::AvroBinary, + PayloadLocation::Itemized, + BoundedVec::try_from(settings.clone()).unwrap(), + )); + + // assert + let res = SchemasPallet::get_schema_by_id(1); + assert_eq!(res.unwrap().settings, settings); + }) +} + +#[allow(deprecated)] +#[test] +fn create_schema_with_append_only_setting_and_non_itemized_should_fail() { + new_test_ext().execute_with(|| { + sudo_set_max_schema_size(); + + // arrange + let settings = vec![SchemaSetting::AppendOnly]; + let sender: AccountId = test_public(1); + // act and assert + assert_noop!( + SchemasPallet::create_schema_via_governance( + RuntimeOrigin::from(pallet_collective::RawOrigin::Members(2, 3)), + sender.clone(), + create_bounded_schema_vec(r#"{"name":"John Doe"}"#), + ModelType::AvroBinary, + PayloadLocation::Paginated, + BoundedVec::try_from(settings.clone()).unwrap(), + ), + Error::::InvalidSetting + ); + + // act and assert + assert_noop!( + SchemasPallet::create_schema_via_governance( + RuntimeOrigin::from(pallet_collective::RawOrigin::Members(2, 3)), + sender.clone(), + create_bounded_schema_vec(r#"{"name":"John Doe"}"#), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::try_from(settings.clone()).unwrap(), + ), + Error::::InvalidSetting + ); + + assert_noop!( + SchemasPallet::create_schema_via_governance( + RuntimeOrigin::from(pallet_collective::RawOrigin::Members(2, 3)), + sender, + create_bounded_schema_vec(r#"{"name":"John Doe"}"#), + ModelType::AvroBinary, + PayloadLocation::IPFS, + BoundedVec::try_from(settings.clone()).unwrap(), + ), + Error::::InvalidSetting + ); + }) +} diff --git a/pallets/schemas/src/tests/migrations_tests.rs b/pallets/schemas/src/tests/migrations_tests.rs new file mode 100644 index 0000000000..71d2a75fbd --- /dev/null +++ b/pallets/schemas/src/tests/migrations_tests.rs @@ -0,0 +1,52 @@ +use crate::{ + migration::v3, + pallet::SchemaNameToIds, + tests::mock::{ + create_bounded_schema_vec, new_test_ext, sudo_set_max_schema_size, test_public, + RuntimeOrigin, SchemasPallet, Test, + }, + SchemaName, +}; +use common_primitives::{node::AccountId, schema::*}; +use frame_support::{ + assert_ok, pallet_prelude::StorageVersion, traits::GetStorageVersion, BoundedVec, +}; + +#[test] +fn schemas_migration_to_v3_should_work_as_expected() { + new_test_ext().execute_with(|| { + // Arrange + sudo_set_max_schema_size(); + let sender: AccountId = test_public(5); + let schemas = vec![r#"{"latitude": 48.858093,"longitude": 2.294694}"#; 20]; + for fields in schemas.iter() { + assert_ok!(SchemasPallet::create_schema_v3( + RuntimeOrigin::signed(sender.clone()), + create_bounded_schema_vec(fields), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::default(), + None, + )); + } + + // Act + let _ = v3::migrate_to_v3::(); + + // Assert + let current_version = SchemasPallet::current_storage_version(); + assert_eq!(current_version, StorageVersion::new(3)); + + let known_schemas = v3::get_known_schemas(); + let versions_count = SchemaNameToIds::::iter().count(); + assert_eq!(known_schemas.len(), versions_count); + + for (_, schema_name) in known_schemas.iter() { + let bounded_name = BoundedVec::try_from(schema_name.clone()).expect("should work"); + let parsed_name = + SchemaName::try_parse::(bounded_name, true).expect("should parse"); + let val = SchemaNameToIds::::get(&parsed_name.namespace, &parsed_name.descriptor); + assert_eq!(val.ids.len(), 1usize); + } + }); +} diff --git a/pallets/schemas/src/tests/mock.rs b/pallets/schemas/src/tests/mock.rs index 918da81343..ef0df1513d 100644 --- a/pallets/schemas/src/tests/mock.rs +++ b/pallets/schemas/src/tests/mock.rs @@ -1,6 +1,9 @@ use frame_support::{ + assert_ok, + dispatch::RawOrigin, traits::{ConstU16, ConstU32, EitherOfDiverse}, weights::{Weight, WeightToFeeCoefficient, WeightToFeeCoefficients, WeightToFeePolynomial}, + BoundedVec, }; use frame_system::EnsureRoot; use parity_scale_codec::MaxEncodedLen; @@ -170,3 +173,22 @@ pub fn test_public(n: u8) -> AccountId32 { pub fn test_origin_signed(n: u8) -> RuntimeOrigin { RuntimeOrigin::signed(test_public(n)) } + +/// creates a bounded vec schema +pub fn create_bounded_schema_vec( + from_string: &str, +) -> BoundedVec::SchemaModelMaxBytesBoundedVecLimit> { + let fields_vec = Vec::from(from_string.as_bytes()); + BoundedVec::try_from(fields_vec).unwrap() +} + +/// sets max schema size +pub fn sudo_set_max_schema_size() { + assert_ok!(SchemasPallet::set_max_schema_model_bytes(RawOrigin::Root.into(), 70)); +} + +/// struct which encapsulates a test case and expected result +pub struct TestCase { + pub input: &'static str, + pub expected: T, +} diff --git a/pallets/schemas/src/tests/mod.rs b/pallets/schemas/src/tests/mod.rs index baaa2f1243..55e75503fb 100644 --- a/pallets/schemas/src/tests/mod.rs +++ b/pallets/schemas/src/tests/mod.rs @@ -1,3 +1,5 @@ +mod deprecated_tests; +mod migrations_tests; pub mod mock; mod other_tests; mod serde_tests; diff --git a/pallets/schemas/src/tests/other_tests.rs b/pallets/schemas/src/tests/other_tests.rs index 47c259eb13..faa3aa9aac 100644 --- a/pallets/schemas/src/tests/other_tests.rs +++ b/pallets/schemas/src/tests/other_tests.rs @@ -1,14 +1,3 @@ -use frame_support::{ - assert_noop, assert_ok, - dispatch::RawOrigin, - pallet_prelude::GetStorageVersion, - traits::{ChangeMembers, Hash, StorageVersion}, - BoundedVec, -}; -use serial_test::serial; -use sp_core::{crypto::AccountId32, Encode}; -use sp_weights::Weight; - use common_primitives::{ node::AccountId, parquet::{ @@ -18,289 +7,28 @@ use common_primitives::{ types::ParquetType, ParquetModel, }, - schema::{ModelType, PayloadLocation, SchemaId, SchemaSetting, SchemaSettings}, + schema::{ + ModelType, PayloadLocation, SchemaId, SchemaSetting, SchemaVersion, SchemaVersionResponse, + }, }; +use frame_support::{ + assert_noop, assert_ok, + dispatch::RawOrigin, + traits::{ChangeMembers, Hash}, + weights::Weight, + BoundedVec, +}; +use parity_scale_codec::Encode; +use serial_test::serial; use sp_runtime::DispatchError::BadOrigin; use crate::{ - migration::v2, - pallet::{SchemaInfos, SchemaPayloads}, - Config, Error, Event as AnnouncementEvent, + Error, Event as AnnouncementEvent, SchemaDescriptor, SchemaName, SchemaNamePayload, + SchemaNamespace, SchemaVersionId, MAX_NUMBER_OF_VERSIONS, }; use super::mock::*; -fn create_bounded_schema_vec( - from_string: &str, -) -> BoundedVec::SchemaModelMaxBytesBoundedVecLimit> { - let fields_vec = Vec::from(from_string.as_bytes()); - BoundedVec::try_from(fields_vec).unwrap() -} - -fn sudo_set_max_schema_size() { - assert_ok!(SchemasPallet::set_max_schema_model_bytes(RawOrigin::Root.into(), 70)); -} - -pub mod test {} - -struct TestCase { - schema: &'static str, - expected: T, -} - -/// Create and return a simple test AccountId32 constructed with the desired integer. -pub fn test_public(n: u8) -> AccountId32 { - AccountId32::new([n; 32]) -} - -#[test] -#[allow(deprecated)] -fn require_valid_schema_size_errors() { - new_test_ext().execute_with(|| { - sudo_set_max_schema_size(); - let test_cases: [TestCase<(Error, u8)>; 2] = [ - TestCase { - schema: r#"{"a":1}"#, - expected: (Error::::LessThanMinSchemaModelBytes, 3), - }, - TestCase { - schema: r#"{"id": "long", "title": "I am a very very very long schema", "properties": "just way too long to live a long life", "description": "Just a never ending stream of bytes that goes on for a minute too long"}"#, - expected: (Error::::ExceedsMaxSchemaModelBytes, 2), - }, - ]; - for tc in test_cases { - assert_noop!( - SchemasPallet::create_schema(RuntimeOrigin::signed(test_public(1)), create_bounded_schema_vec(tc.schema), ModelType::AvroBinary, PayloadLocation::OnChain), - tc.expected.0); - } - }) -} - -#[test] -fn create_schema_v2_requires_valid_schema_size() { - new_test_ext().execute_with(|| { - sudo_set_max_schema_size(); - let test_cases: [TestCase<(Error, u8)>; 2] = [ - TestCase { - schema: r#"{"a":1}"#, - expected: (Error::::LessThanMinSchemaModelBytes, 3), - }, - TestCase { - schema: r#"{"id": "long", "title": "I am a very very very long schema", "properties": "just way too long to live a long life", "description": "Just a never ending stream of bytes that goes on for a minute too long"}"#, - expected: (Error::::ExceedsMaxSchemaModelBytes, 2), - }, - ]; - for tc in test_cases { - assert_noop!( - SchemasPallet::create_schema_v2(RuntimeOrigin::signed(test_public(1)), create_bounded_schema_vec(tc.schema), ModelType::AvroBinary, PayloadLocation::OnChain, BoundedVec::default()), - tc.expected.0); - } - }) -} - -#[test] -fn create_schema_via_governance_happy_path() { - new_test_ext().execute_with(|| { - sudo_set_max_schema_size(); - let sender: AccountId = test_public(5); - assert_ok!(SchemasPallet::create_schema_via_governance( - RuntimeOrigin::from(pallet_collective::RawOrigin::Members(2, 3)), - sender, - create_bounded_schema_vec(r#"{"name": "Doe", "type": "lost"}"#), - ModelType::AvroBinary, - PayloadLocation::OnChain, - BoundedVec::default(), - )); - }) -} - -/// Test that a request to be a provider, makes the MSA a provider after the council approves it. -#[test] -fn propose_to_create_schema_happy_path() { - new_test_ext().execute_with(|| { - sudo_set_max_schema_size(); - - let test_model = r#"{"foo": "bar", "bar": "buzz"}"#; - let serialized_fields = Vec::from(test_model.as_bytes()); - // Propose a new schema - _ = SchemasPallet::propose_to_create_schema( - test_origin_signed(5), - create_bounded_schema_vec(test_model), - ModelType::AvroBinary, - PayloadLocation::OnChain, - BoundedVec::default(), - ); - - // Find the Proposed event and get it's hash and index so it can be voted on - let proposed_events: Vec<(u32, Hash)> = System::events() - .iter() - .filter_map(|event| match event.event { - RuntimeEvent::Council(pallet_collective::Event::Proposed { - account: _, - proposal_index, - proposal_hash, - threshold: _, - }) => Some((proposal_index, proposal_hash)), - _ => None, - }) - .collect(); - - assert_eq!(proposed_events.len(), 1); - - let proposal_index = proposed_events[0].0; - let proposal_hash = proposed_events[0].1; - let proposal = Council::proposal_of(proposal_hash).unwrap(); - let proposal_len: u32 = proposal.encoded_size() as u32; - - // Set up the council members - let council_member_1 = test_public(1); // Use ALICE as a council member - let council_member_2 = test_public(2); // Use BOB as a council member - let council_member_3 = test_public(3); // Use CHARLIE as a council member - - let incoming = vec![]; - let outgoing = vec![]; - Council::change_members( - &incoming, - &outgoing, - vec![council_member_1.clone(), council_member_2.clone(), council_member_3.clone()], - ); - - // Council member #1 votes AYE on the proposal - assert_ok!(Council::vote( - RuntimeOrigin::signed(council_member_1.clone()), - proposal_hash, - proposal_index, - true - )); - // Council member #2 votes AYE on the proposal - assert_ok!(Council::vote( - RuntimeOrigin::signed(council_member_2.clone()), - proposal_hash, - proposal_index, - true - )); - // Council member #3 votes NAY on the proposal - assert_ok!(Council::vote( - RuntimeOrigin::signed(council_member_3.clone()), - proposal_hash, - proposal_index, - false - )); - - // Find the Voted event and check if it passed - let voted_events: Vec<(bool, u32, u32)> = System::events() - .iter() - .filter_map(|event| match event.event { - RuntimeEvent::Council(pallet_collective::Event::Voted { - account: _, - proposal_hash: _, - voted, - yes, - no, - }) => Some((voted, yes, no)), - _ => None, - }) - .collect(); - - assert_eq!(voted_events.len(), 3); - assert_eq!(voted_events[1].1, 2); // There should be two AYE (out of three) votes to pass - - // Close the voting - assert_ok!(Council::close( - RuntimeOrigin::signed(test_public(5)), - proposal_hash, - proposal_index, - Weight::MAX, - proposal_len - )); - - // Find the Closed event and check if it passed - let closed_events: Vec<(u32, u32)> = System::events() - .iter() - .filter_map(|event| match event.event { - RuntimeEvent::Council(pallet_collective::Event::Closed { - proposal_hash: _, - yes, - no, - }) => Some((yes, no)), - _ => None, - }) - .collect(); - - assert_eq!(closed_events.len(), 1); - assert_eq!(closed_events[0].0, 2); // There should be two YES votes to pass - - // Find the SchemaCreated event and check if it passed - let schema_events: Vec = System::events() - .iter() - .filter_map(|event| match event.event { - RuntimeEvent::SchemasPallet(AnnouncementEvent::SchemaCreated { - key: _, - schema_id, - }) => Some(schema_id), - _ => None, - }) - .collect(); - - // Confirm that the schema was created - assert_eq!(schema_events.len(), 1); - - let last_schema_id = schema_events[0]; - let created_schema = SchemasPallet::get_schema_by_id(last_schema_id); - assert_eq!(created_schema.as_ref().is_some(), true); - assert_eq!(created_schema.as_ref().unwrap().clone().model, serialized_fields); - }) -} - -#[allow(deprecated)] -#[test] -fn create_schema_happy_path() { - new_test_ext().execute_with(|| { - sudo_set_max_schema_size(); - let sender: AccountId = test_public(1); - assert_ok!(SchemasPallet::create_schema( - RuntimeOrigin::signed(sender), - create_bounded_schema_vec(r#"{"name": "Doe", "type": "lost"}"#), - ModelType::AvroBinary, - PayloadLocation::OnChain, - )); - }) -} - -#[test] -fn create_schema_v2_happy_path() { - new_test_ext().execute_with(|| { - sudo_set_max_schema_size(); - let sender: AccountId = test_public(1); - assert_ok!(SchemasPallet::create_schema_v2( - RuntimeOrigin::signed(sender), - create_bounded_schema_vec(r#"{"name": "Doe", "type": "lost"}"#), - ModelType::AvroBinary, - PayloadLocation::OnChain, - BoundedVec::default() - )); - }) -} - -#[allow(deprecated)] -#[test] -fn create_schema_unhappy_path() { - new_test_ext().execute_with(|| { - sudo_set_max_schema_size(); - let sender: AccountId = test_public(1); - assert_noop!( - SchemasPallet::create_schema( - RuntimeOrigin::signed(sender), - // name key does not have a colon - create_bounded_schema_vec(r#"{"name", 54, "type": "none"}"#), - ModelType::AvroBinary, - PayloadLocation::OnChain, - ), - Error::::InvalidSchema - ); - }) -} - #[test] fn set_max_schema_size_works_if_root() { new_test_ext().execute_with(|| { @@ -336,135 +64,8 @@ fn set_max_schema_size_fails_if_larger_than_bound() { }) } -#[allow(deprecated)] #[test] -#[serial] -fn create_schema_id_deposits_events_and_increments_schema_id() { - new_test_ext().execute_with(|| { - sudo_set_max_schema_size(); - let sender: AccountId = test_public(1); - let mut last_schema_id: SchemaId = 0; - for fields in [ - r#"{"Name": "Bond", "Code": "007"}"#, - r#"{"type": "num","minimum": -90,"maximum": 90}"#, - r#"{"latitude": 48.858093,"longitude": 2.294694}"#, - ] { - let expected_schema_id = last_schema_id + 1; - assert_ok!(SchemasPallet::create_schema( - RuntimeOrigin::signed(sender.clone()), - create_bounded_schema_vec(fields), - ModelType::AvroBinary, - PayloadLocation::OnChain, - )); - System::assert_last_event( - AnnouncementEvent::SchemaCreated { - key: sender.clone(), - schema_id: expected_schema_id, - } - .into(), - ); - last_schema_id = expected_schema_id; - } - assert_ok!(SchemasPallet::create_schema( - RuntimeOrigin::signed(sender.clone()), - create_bounded_schema_vec(r#"{"account":3050}"#), - ModelType::AvroBinary, - PayloadLocation::OnChain, - )); - }) -} - -#[test] -#[serial] -fn create_schema_v2_id_deposits_events_and_increments_schema_id() { - new_test_ext().execute_with(|| { - sudo_set_max_schema_size(); - let sender: AccountId = test_public(1); - let mut last_schema_id: SchemaId = 0; - for fields in [ - r#"{"Name": "Bond", "Code": "007"}"#, - r#"{"type": "num","minimum": -90,"maximum": 90}"#, - r#"{"latitude": 48.858093,"longitude": 2.294694}"#, - ] { - let expected_schema_id = last_schema_id + 1; - assert_ok!(SchemasPallet::create_schema_v2( - RuntimeOrigin::signed(sender.clone()), - create_bounded_schema_vec(fields), - ModelType::AvroBinary, - PayloadLocation::OnChain, - BoundedVec::default() - )); - System::assert_last_event( - AnnouncementEvent::SchemaCreated { - key: sender.clone(), - schema_id: expected_schema_id, - } - .into(), - ); - last_schema_id = expected_schema_id; - } - assert_ok!(SchemasPallet::create_schema_v2( - RuntimeOrigin::signed(sender.clone()), - create_bounded_schema_vec(r#"{"account":3050}"#), - ModelType::AvroBinary, - PayloadLocation::OnChain, - BoundedVec::default() - )); - }) -} - -#[allow(deprecated)] -#[test] -fn get_existing_schema_by_id_should_return_schema() { - new_test_ext().execute_with(|| { - let sender: AccountId = test_public(1); - sudo_set_max_schema_size(); - // arrange - let test_str = r#"{"foo": "bar", "bar": "buzz"}"#; - let serialized_fields = Vec::from(test_str.as_bytes()); - assert_ok!(SchemasPallet::create_schema( - RuntimeOrigin::signed(sender), - create_bounded_schema_vec(test_str), - ModelType::AvroBinary, - PayloadLocation::OnChain, - )); - - // act - let res = SchemasPallet::get_schema_by_id(1); - - // assert - assert_eq!(res.as_ref().is_some(), true); - assert_eq!(res.as_ref().unwrap().clone().model, serialized_fields); - }) -} - -#[test] -fn get_existing_schema_by_id_should_return_schema_v2() { - new_test_ext().execute_with(|| { - let sender: AccountId = test_public(1); - sudo_set_max_schema_size(); - // arrange - let test_str = r#"{"foo": "bar", "bar": "buzz"}"#; - let serialized_fields = Vec::from(test_str.as_bytes()); - assert_ok!(SchemasPallet::create_schema_v2( - RuntimeOrigin::signed(sender), - create_bounded_schema_vec(test_str), - ModelType::AvroBinary, - PayloadLocation::OnChain, - BoundedVec::default() - )); - - // act - let res = SchemasPallet::get_schema_by_id(1); - - // assert - assert_eq!(res.as_ref().is_some(), true); - assert_eq!(res.as_ref().unwrap().clone().model, serialized_fields); - }) -} - -#[test] -fn get_non_existing_schema_by_id_should_return_none() { +fn get_non_existing_schema_by_id_should_return_none() { new_test_ext().execute_with(|| { // act let res = SchemasPallet::get_schema_by_id(1); @@ -632,145 +233,824 @@ fn dsnp_broadcast() { } #[test] -fn create_schema_with_settings_should_work() { +fn schema_name_try_parse_with_strict_invalid_names_should_fail() { new_test_ext().execute_with(|| { - sudo_set_max_schema_size(); + let test_cases = [ + TestCase { + input: r#"¥¤¤.©©©"#, expected: Error::::InvalidSchemaNameEncoding + }, + TestCase { + input: r#"1asbd.hgd"#, + expected: Error::::InvalidSchemaNameCharacters, + }, + TestCase { + input: r#"asbd.hg1d"#, + expected: Error::::InvalidSchemaNameCharacters, + }, + TestCase { + input: r#"asbd.hg@d"#, + expected: Error::::InvalidSchemaNameCharacters, + }, + TestCase { input: r#"asbd"#, expected: Error::::InvalidSchemaNameStructure }, + TestCase { + input: r#"asbd.sdhks.shd"#, + expected: Error::::InvalidSchemaNameStructure, + }, + TestCase { + input: r#"-asbdsdhks.shd"#, + expected: Error::::InvalidSchemaNameStructure, + }, + TestCase { + input: r#"asbdsdhks-.shd"#, + expected: Error::::InvalidSchemaNameStructure, + }, + TestCase { + input: r#"asbdsdhks.-shd"#, + expected: Error::::InvalidSchemaNameStructure, + }, + TestCase { + input: r#"asbdsdhks.shd-"#, + expected: Error::::InvalidSchemaNameStructure, + }, + TestCase { + input: r#"hjsagdhjsagjhgdshjagsadhjsaaaaa."#, + expected: Error::::InvalidSchemaNamespaceLength, + }, + TestCase { input: r#"a.sdhks"#, expected: Error::::InvalidSchemaNamespaceLength }, + TestCase { + input: r#"aa.sdhks"#, + expected: Error::::InvalidSchemaNamespaceLength, + }, + TestCase { input: r#".sdhks"#, expected: Error::::InvalidSchemaNamespaceLength }, + TestCase { input: r#"hjs."#, expected: Error::::InvalidSchemaDescriptorLength }, + ]; + for tc in test_cases { + let payload: SchemaNamePayload = + BoundedVec::try_from(tc.input.to_string().into_bytes()).expect("should convert"); + assert_noop!(SchemaName::try_parse::(payload, true), tc.expected); + } + }); +} - // arrange - let settings = vec![SchemaSetting::AppendOnly]; - let sender: AccountId = test_public(1); +#[test] +fn schema_name_try_parse_with_non_strict_invalid_names_should_fail() { + new_test_ext().execute_with(|| { + let test_cases = [ + TestCase { + input: r#"¥¤¤.©©©"#, expected: Error::::InvalidSchemaNameEncoding + }, + TestCase { input: r#"¥¤¤"#, expected: Error::::InvalidSchemaNameEncoding }, + TestCase { + input: r#"1asbd.hgd"#, + expected: Error::::InvalidSchemaNameCharacters, + }, + TestCase { input: r#"1asbd"#, expected: Error::::InvalidSchemaNameCharacters }, + TestCase { + input: r#"asbd.hg1d"#, + expected: Error::::InvalidSchemaNameCharacters, + }, + TestCase { + input: r#"asbd.hg@d"#, + expected: Error::::InvalidSchemaNameCharacters, + }, + TestCase { input: r#"hg@d"#, expected: Error::::InvalidSchemaNameCharacters }, + TestCase { + input: r#"asbd.sdhks.shd"#, + expected: Error::::InvalidSchemaNameStructure, + }, + TestCase { + input: r#"-asbdsdhks.shd"#, + expected: Error::::InvalidSchemaNameStructure, + }, + TestCase { + input: r#"asbdsdhks-.shd"#, + expected: Error::::InvalidSchemaNameStructure, + }, + TestCase { + input: r#"hjsagdhjsagjhgdshjagsadhjsaaaaa."#, + expected: Error::::InvalidSchemaNamespaceLength, + }, + TestCase { + input: r#"hjsagdhjsagjhgdshjagsadhjsaaaaa"#, + expected: Error::::InvalidSchemaNamespaceLength, + }, + TestCase { input: r#"a.sdhks"#, expected: Error::::InvalidSchemaNamespaceLength }, + TestCase { input: r#"a"#, expected: Error::::InvalidSchemaNamespaceLength }, + TestCase { + input: r#"aa.sdhks"#, + expected: Error::::InvalidSchemaNamespaceLength, + }, + TestCase { input: r#".sdhks"#, expected: Error::::InvalidSchemaNamespaceLength }, + TestCase { input: r#"aa"#, expected: Error::::InvalidSchemaNamespaceLength }, + TestCase { input: r#"hjs."#, expected: Error::::InvalidSchemaDescriptorLength }, + ]; + for tc in test_cases { + let payload: SchemaNamePayload = + BoundedVec::try_from(tc.input.to_string().into_bytes()).expect("should convert"); + assert_noop!(SchemaName::try_parse::(payload, false), tc.expected); + } + }); +} - // act and assert - assert_ok!(SchemasPallet::create_schema_via_governance( - RuntimeOrigin::from(pallet_collective::RawOrigin::Members(2, 3)), - sender, - create_bounded_schema_vec(r#"{"name":"John Doe"}"#), - ModelType::AvroBinary, - PayloadLocation::Itemized, - BoundedVec::try_from(settings.clone()).unwrap(), - )); +#[test] +fn schema_name_try_parse_with_strict_valid_names_should_succeed() { + new_test_ext().execute_with(|| { + let valid_names = vec!["Abc.a", "a-v.D-D", "aZxcvBnmkjhgfds.asdfghKkloiuyTre"]; + let parsed_names = vec![ + SchemaName { + namespace: SchemaNamespace::try_from("abc".to_string().into_bytes()).unwrap(), + descriptor: SchemaDescriptor::try_from("a".to_string().into_bytes()).unwrap(), + }, + SchemaName { + namespace: SchemaNamespace::try_from("a-v".to_string().into_bytes()).unwrap(), + descriptor: SchemaDescriptor::try_from("d-d".to_string().into_bytes()).unwrap(), + }, + SchemaName { + namespace: SchemaNamespace::try_from("azxcvbnmkjhgfds".to_string().into_bytes()) + .unwrap(), + descriptor: SchemaDescriptor::try_from("asdfghkkloiuytre".to_string().into_bytes()) + .unwrap(), + }, + ]; + for (name, result) in valid_names.iter().zip(parsed_names) { + let payload: SchemaNamePayload = + BoundedVec::try_from(name.to_string().into_bytes()).expect("should convert"); + assert_eq!(SchemaName::try_parse::(payload, true), Ok(result)); + } + }); +} - // assert - let res = SchemasPallet::get_schema_by_id(1); - assert_eq!(res.unwrap().settings, settings); - }) +#[test] +fn schema_name_try_parse_with_non_strict_valid_names_should_succeed() { + new_test_ext().execute_with(|| { + let valid_names = vec!["Abc", "a-v", "aZxcvBnmkjhgfds"]; + let parsed_names = vec![ + SchemaName { + namespace: SchemaNamespace::try_from("abc".to_string().into_bytes()).unwrap(), + descriptor: SchemaDescriptor::default(), + }, + SchemaName { + namespace: SchemaNamespace::try_from("a-v".to_string().into_bytes()).unwrap(), + descriptor: SchemaDescriptor::default(), + }, + SchemaName { + namespace: SchemaNamespace::try_from("azxcvbnmkjhgfds".to_string().into_bytes()) + .unwrap(), + descriptor: SchemaDescriptor::default(), + }, + ]; + for (name, result) in valid_names.iter().zip(parsed_names) { + let payload: SchemaNamePayload = + BoundedVec::try_from(name.to_string().into_bytes()).expect("should convert"); + assert_eq!(SchemaName::try_parse::(payload, false), Ok(result)); + } + }); } #[test] -fn create_schema_with_append_only_setting_and_non_itemized_should_fail() { +fn schema_name_get_combined_name_with_valid_names_should_succeed() { new_test_ext().execute_with(|| { - sudo_set_max_schema_size(); + let valid_names = vec!["Abc.a", "a-v.D-D", "aZxcvBnmkjhgfds.asdfghKkloiuyTre"]; + let results = vec!["abc.a", "a-v.d-d", "azxcvbnmkjhgfds.asdfghkkloiuytre"]; + for (name, result) in valid_names.iter().zip(results) { + let payload: SchemaNamePayload = + BoundedVec::try_from(name.to_string().into_bytes()).expect("should convert"); + let parsed = SchemaName::try_parse::(payload, true).expect("should work"); + assert_eq!(parsed.get_combined_name(), result.to_string().into_bytes()); + } + }); +} - // arrange - let settings = vec![SchemaSetting::AppendOnly]; - let sender: AccountId = test_public(1); - // act and assert - assert_noop!( - SchemasPallet::create_schema_via_governance( - RuntimeOrigin::from(pallet_collective::RawOrigin::Members(2, 3)), - sender.clone(), - create_bounded_schema_vec(r#"{"name":"John Doe"}"#), - ModelType::AvroBinary, - PayloadLocation::Paginated, - BoundedVec::try_from(settings.clone()).unwrap(), - ), - Error::::InvalidSetting +#[test] +fn schema_version_id_add_should_work() { + new_test_ext().execute_with(|| { + let mut val = SchemaVersionId::default(); + let schema_id_1: SchemaId = 55; + let schema_id_2: SchemaId = 200; + let schema_name = SchemaName { + namespace: SchemaNamespace::try_from("abc".to_string().into_bytes()).unwrap(), + descriptor: SchemaDescriptor::try_from("d-d".to_string().into_bytes()).unwrap(), + }; + assert_ok!(val.add::(schema_id_1)); + assert_ok!(val.add::(schema_id_2)); + + let response = val.convert_to_response(&schema_name); + assert_eq!( + response, + vec![ + SchemaVersionResponse { + schema_id: schema_id_1, + schema_version: 1, + schema_name: schema_name.clone().get_combined_name() + }, + SchemaVersionResponse { + schema_id: schema_id_2, + schema_version: 2, + schema_name: schema_name.get_combined_name() + }, + ] ); + }); +} - // act and assert - assert_noop!( - SchemasPallet::create_schema_via_governance( - RuntimeOrigin::from(pallet_collective::RawOrigin::Members(2, 3)), - sender.clone(), - create_bounded_schema_vec(r#"{"name":"John Doe"}"#), - ModelType::AvroBinary, - PayloadLocation::OnChain, - BoundedVec::try_from(settings.clone()).unwrap(), - ), - Error::::InvalidSetting - ); +#[test] +fn schema_version_id_add_with_duplicate_should_fail() { + new_test_ext().execute_with(|| { + let mut val = SchemaVersionId::default(); + let schema_id_1: SchemaId = 55; + + assert_ok!(val.add::(schema_id_1)); + assert_noop!(val.add::(schema_id_1), Error::::SchemaIdAlreadyExists); + }); +} + +#[test] +fn schema_version_id_add_with_max_len_should_fail() { + new_test_ext().execute_with(|| { + let mut val = SchemaVersionId::default(); + for i in 1..=MAX_NUMBER_OF_VERSIONS { + let res = val.add::(i as SchemaId); + assert_eq!(res, Ok(i as SchemaVersion)); + } assert_noop!( - SchemasPallet::create_schema_via_governance( - RuntimeOrigin::from(pallet_collective::RawOrigin::Members(2, 3)), - sender, - create_bounded_schema_vec(r#"{"name":"John Doe"}"#), - ModelType::AvroBinary, - PayloadLocation::IPFS, - BoundedVec::try_from(settings.clone()).unwrap(), - ), - Error::::InvalidSetting + val.add::((MAX_NUMBER_OF_VERSIONS + 1) as SchemaId), + Error::::ExceedsMaxNumberOfVersions ); - }) + }); } #[test] -fn schemas_migration_to_v2_should_work_as_expected() { +fn create_schema_v3_requires_valid_schema_size() { new_test_ext().execute_with(|| { - // Arrange sudo_set_max_schema_size(); - let sender: AccountId = test_public(5); - let schemas = vec![ - r#"{"Name": "Bond", "Code": "007"}"#, - r#"{"type": "num","minimum": -90,"maximum": 90}"#, - r#"{"latitude": 48.858093,"longitude": 2.294694}"#, + let test_cases: [TestCase<(Error, u8)>; 2] = [ + TestCase { + input: r#"{"a":1}"#, + expected: (Error::::LessThanMinSchemaModelBytes, 3), + }, + TestCase { + input: r#"{"id": "long", "title": "I am a very very very long schema", "properties": "just way too long to live a long life", "description": "Just a never ending stream of bytes that goes on for a minute too long"}"#, + expected: (Error::::ExceedsMaxSchemaModelBytes, 2), + }, ]; - for (idx, fields) in schemas.iter().enumerate() { - assert_ok!(SchemasPallet::create_schema_v2( - RuntimeOrigin::signed(sender.clone()), - create_bounded_schema_vec(fields), - ModelType::AvroBinary, - PayloadLocation::OnChain, - BoundedVec::default() - )); - v2::old::Schemas::::insert( - idx as u16 + 1, - v2::old::Schema { - model_type: ModelType::AvroBinary, - payload_location: PayloadLocation::OnChain, - settings: SchemaSettings::all_disabled(), - model: BoundedVec::try_from(fields.as_bytes().to_vec()) - .expect("should have value"), - }, - ); + for tc in test_cases { + assert_noop!( + SchemasPallet::create_schema_v3(RuntimeOrigin::signed(test_public(1)), create_bounded_schema_vec(tc.input), ModelType::AvroBinary, PayloadLocation::OnChain, BoundedVec::default(), None), + tc.expected.0); } - let old_schema_1 = v2::old::Schemas::::get(1u16).expect("should have value"); - let old_schema_2 = v2::old::Schemas::::get(2u16).expect("should have value"); - let old_schema_3 = v2::old::Schemas::::get(3u16).expect("should have value"); - - // Act - let _ = v2::migrate_to_v2::(); - - // Assert - let old_count = v2::old::Schemas::::iter().count(); - let new_info_count = SchemaInfos::::iter().count(); - let new_payload_count = SchemaPayloads::::iter().count(); - let current_version = SchemasPallet::current_storage_version(); - - assert_eq!(old_count, 0); - assert_eq!(new_info_count, schemas.len()); - assert_eq!(new_payload_count, schemas.len()); - assert_eq!(current_version, StorageVersion::new(2)); - - let schema_info_1 = SchemaInfos::::get(1).expect("should have value"); - let schema_payload_1 = SchemaPayloads::::get(1u16).expect("should have value"); - assert_eq!(schema_info_1.model_type, old_schema_1.model_type); - assert_eq!(schema_info_1.payload_location, old_schema_1.payload_location); - assert_eq!(schema_info_1.settings, old_schema_1.settings); - assert_eq!(schema_payload_1.into_inner(), old_schema_1.model.into_inner()); - - let schema_info_2 = SchemaInfos::::get(2).expect("should have value"); - let schema_payload_2 = SchemaPayloads::::get(2u16).expect("should have value"); - assert_eq!(schema_info_2.model_type, old_schema_2.model_type); - assert_eq!(schema_info_2.payload_location, old_schema_2.payload_location); - assert_eq!(schema_info_2.settings, old_schema_2.settings); - assert_eq!(schema_payload_2.into_inner(), old_schema_2.model.into_inner()); - - let schema_info_3 = SchemaInfos::::get(3).expect("should have value"); - let schema_payload_3 = SchemaPayloads::::get(3u16).expect("should have value"); - assert_eq!(schema_info_3.model_type, old_schema_3.model_type); - assert_eq!(schema_info_3.payload_location, old_schema_3.payload_location); - assert_eq!(schema_info_3.settings, old_schema_3.settings); - assert_eq!(schema_payload_3.into_inner(), old_schema_3.model.into_inner()); - }); + }) +} + +#[test] +fn create_schema_v3_happy_path() { + new_test_ext().execute_with(|| { + // arrange + sudo_set_max_schema_size(); + let sender: AccountId = test_public(1); + let name = "namespace.descriptor"; + let schema_name: SchemaNamePayload = + BoundedVec::try_from(name.to_string().into_bytes()).expect("should convert"); + + // act + assert_ok!(SchemasPallet::create_schema_v3( + RuntimeOrigin::signed(sender.clone()), + create_bounded_schema_vec(r#"{"name": "Doe", "type": "lost"}"#), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::default(), + Some(schema_name.clone()), + )); + let res = SchemasPallet::get_schema_by_id(1); + let versions = SchemasPallet::get_schema_versions(schema_name.clone().into_inner()); + + // assert + System::assert_has_event( + AnnouncementEvent::SchemaCreated { key: sender, schema_id: 1 }.into(), + ); + System::assert_last_event( + AnnouncementEvent::SchemaNameCreated { + schema_id: 1, + name: name.to_string().into_bytes(), + } + .into(), + ); + assert_eq!(res.as_ref().is_some(), true); + assert_eq!( + versions, + Some(vec![SchemaVersionResponse { + schema_id: 1, + schema_name: schema_name.into_inner(), + schema_version: 1 + }]) + ); + }) +} + +#[test] +#[serial] +fn create_schema_v3_increments_schema_id_and_version_for_same_name() { + new_test_ext().execute_with(|| { + // arrange + sudo_set_max_schema_size(); + let sender: AccountId = test_public(1); + let name = "namespace.descriptor"; + let schema_name: SchemaNamePayload = + BoundedVec::try_from(name.to_string().into_bytes()).expect("should convert"); + let mut last_schema_id: SchemaId = 0; + + // act and assert + for fields in [ + r#"{"Name": "Bond", "Code": "007"}"#, + r#"{"type": "num","minimum": -90,"maximum": 90}"#, + r#"{"latitude": 48.858093,"longitude": 2.294694}"#, + ] { + let expected_schema_id = last_schema_id + 1; + assert_ok!(SchemasPallet::create_schema_v3( + RuntimeOrigin::signed(sender.clone()), + create_bounded_schema_vec(fields), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::default(), + Some(schema_name.clone()), + )); + System::assert_has_event( + AnnouncementEvent::SchemaCreated { + key: sender.clone(), + schema_id: expected_schema_id, + } + .into(), + ); + System::assert_last_event( + AnnouncementEvent::SchemaNameCreated { + schema_id: expected_schema_id, + name: name.to_string().into_bytes(), + } + .into(), + ); + last_schema_id = expected_schema_id; + } + let versions = SchemasPallet::get_schema_versions(schema_name.clone().into_inner()); + assert_eq!( + versions, + Some(vec![ + SchemaVersionResponse { + schema_id: 1, + schema_name: schema_name.clone().into_inner(), + schema_version: 1 + }, + SchemaVersionResponse { + schema_id: 2, + schema_name: schema_name.clone().into_inner(), + schema_version: 2 + }, + SchemaVersionResponse { + schema_id: 3, + schema_name: schema_name.into_inner(), + schema_version: 3 + } + ]) + ); + }) +} + +#[test] +fn get_schema_versions_for_namespace_should_return_all_descriptors() { + new_test_ext().execute_with(|| { + // arrange + sudo_set_max_schema_size(); + let sender: AccountId = test_public(1); + let namespace = "namespace"; + let name_1 = format!("{}.alice", namespace); + let schema_name_1: SchemaNamePayload = + BoundedVec::try_from(name_1.to_string().into_bytes()).expect("should convert"); + let name_2 = format!("{}.bob", namespace); + let schema_name_2: SchemaNamePayload = + BoundedVec::try_from(name_2.to_string().into_bytes()).expect("should convert"); + assert_ok!(SchemasPallet::create_schema_v3( + RuntimeOrigin::signed(sender.clone()), + create_bounded_schema_vec(r#"{"name": "Doe", "type": "lost"}"#), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::default(), + Some(schema_name_1.clone()), + )); + assert_ok!(SchemasPallet::create_schema_v3( + RuntimeOrigin::signed(sender.clone()), + create_bounded_schema_vec(r#"{"name": "Doe", "type": "lost"}"#), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::default(), + Some(schema_name_2.clone()), + )); + + // act + let versions = SchemasPallet::get_schema_versions(String::from(namespace).into_bytes()); + + // assert + assert!(versions.is_some()); + + let mut inner = versions.clone().unwrap(); + inner.sort_by(|a, b| a.schema_name.cmp(&b.schema_name)); + assert_eq!( + versions, + Some(vec![ + SchemaVersionResponse { + schema_id: 1, + schema_name: schema_name_1.into_inner(), + schema_version: 1 + }, + SchemaVersionResponse { + schema_id: 2, + schema_name: schema_name_2.into_inner(), + schema_version: 1 + }, + ]) + ); + }) +} + +#[test] +fn create_schema_via_governance_v2_happy_path() { + new_test_ext().execute_with(|| { + // arrange + sudo_set_max_schema_size(); + let settings = vec![SchemaSetting::AppendOnly]; + let sender: AccountId = test_public(5); + let name = "namespace.descriptor"; + let schema_name: SchemaNamePayload = + BoundedVec::try_from(name.to_string().into_bytes()).expect("should convert"); + + // act + assert_ok!(SchemasPallet::create_schema_via_governance_v2( + RuntimeOrigin::from(pallet_collective::RawOrigin::Members(2, 3)), + sender, + create_bounded_schema_vec(r#"{"name": "Doe", "type": "lost"}"#), + ModelType::AvroBinary, + PayloadLocation::Itemized, + BoundedVec::try_from(settings.clone()).unwrap(), + Some(schema_name.clone()), + )); + + // assert + let res = SchemasPallet::get_schema_by_id(1); + let versions = SchemasPallet::get_schema_versions(schema_name.clone().into_inner()); + + assert_eq!(res.unwrap().settings, settings); + assert_eq!( + versions, + Some(vec![SchemaVersionResponse { + schema_id: 1, + schema_name: schema_name.into_inner(), + schema_version: 1 + }]) + ); + }) +} + +#[test] +fn create_schema_via_governance_v2_with_append_only_setting_and_non_itemized_should_fail() { + new_test_ext().execute_with(|| { + sudo_set_max_schema_size(); + + // arrange + let settings = vec![SchemaSetting::AppendOnly]; + let sender: AccountId = test_public(1); + // act and assert + assert_noop!( + SchemasPallet::create_schema_via_governance_v2( + RuntimeOrigin::from(pallet_collective::RawOrigin::Members(2, 3)), + sender.clone(), + create_bounded_schema_vec(r#"{"name":"John Doe"}"#), + ModelType::AvroBinary, + PayloadLocation::Paginated, + BoundedVec::try_from(settings.clone()).unwrap(), + None, + ), + Error::::InvalidSetting + ); + + // act and assert + assert_noop!( + SchemasPallet::create_schema_via_governance_v2( + RuntimeOrigin::from(pallet_collective::RawOrigin::Members(2, 3)), + sender.clone(), + create_bounded_schema_vec(r#"{"name":"John Doe"}"#), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::try_from(settings.clone()).unwrap(), + None, + ), + Error::::InvalidSetting + ); + + assert_noop!( + SchemasPallet::create_schema_via_governance_v2( + RuntimeOrigin::from(pallet_collective::RawOrigin::Members(2, 3)), + sender, + create_bounded_schema_vec(r#"{"name":"John Doe"}"#), + ModelType::AvroBinary, + PayloadLocation::IPFS, + BoundedVec::try_from(settings.clone()).unwrap(), + None, + ), + Error::::InvalidSetting + ); + }) +} + +/// Test that a request to be a provider, makes the MSA a provider after the council approves it. +#[test] +fn propose_to_create_schema_v2_happy_path() { + new_test_ext().execute_with(|| { + sudo_set_max_schema_size(); + + let test_model = r#"{"foo": "bar", "bar": "buzz"}"#; + let serialized_fields = Vec::from(test_model.as_bytes()); + let schema_name = + SchemaNamePayload::try_from("namespace.descriptor".to_string().into_bytes()) + .expect("should work"); + // Propose a new schema + _ = SchemasPallet::propose_to_create_schema_v2( + test_origin_signed(5), + create_bounded_schema_vec(test_model), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::default(), + Some(schema_name.clone()), + ); + + // Find the Proposed event and get it's hash and index so it can be voted on + let proposed_events: Vec<(u32, Hash)> = System::events() + .iter() + .filter_map(|event| match event.event { + RuntimeEvent::Council(pallet_collective::Event::Proposed { + account: _, + proposal_index, + proposal_hash, + threshold: _, + }) => Some((proposal_index, proposal_hash)), + _ => None, + }) + .collect(); + + assert_eq!(proposed_events.len(), 1); + + let proposal_index = proposed_events[0].0; + let proposal_hash = proposed_events[0].1; + let proposal = Council::proposal_of(proposal_hash).unwrap(); + let proposal_len: u32 = proposal.encoded_size() as u32; + + // Set up the council members + let council_member_1 = test_public(1); // Use ALICE as a council member + let council_member_2 = test_public(2); // Use BOB as a council member + let council_member_3 = test_public(3); // Use CHARLIE as a council member + + let incoming = vec![]; + let outgoing = vec![]; + Council::change_members( + &incoming, + &outgoing, + vec![council_member_1.clone(), council_member_2.clone(), council_member_3.clone()], + ); + + // Council member #1 votes AYE on the proposal + assert_ok!(Council::vote( + RuntimeOrigin::signed(council_member_1.clone()), + proposal_hash, + proposal_index, + true + )); + // Council member #2 votes AYE on the proposal + assert_ok!(Council::vote( + RuntimeOrigin::signed(council_member_2.clone()), + proposal_hash, + proposal_index, + true + )); + // Council member #3 votes NAY on the proposal + assert_ok!(Council::vote( + RuntimeOrigin::signed(council_member_3.clone()), + proposal_hash, + proposal_index, + false + )); + + // Find the Voted event and check if it passed + let voted_events: Vec<(bool, u32, u32)> = System::events() + .iter() + .filter_map(|event| match event.event { + RuntimeEvent::Council(pallet_collective::Event::Voted { + account: _, + proposal_hash: _, + voted, + yes, + no, + }) => Some((voted, yes, no)), + _ => None, + }) + .collect(); + + assert_eq!(voted_events.len(), 3); + assert_eq!(voted_events[1].1, 2); // There should be two AYE (out of three) votes to pass + + // Close the voting + assert_ok!(Council::close( + RuntimeOrigin::signed(test_public(5)), + proposal_hash, + proposal_index, + Weight::MAX, + proposal_len + )); + + // Find the Closed event and check if it passed + let closed_events: Vec<(u32, u32)> = System::events() + .iter() + .filter_map(|event| match event.event { + RuntimeEvent::Council(pallet_collective::Event::Closed { + proposal_hash: _, + yes, + no, + }) => Some((yes, no)), + _ => None, + }) + .collect(); + + assert_eq!(closed_events.len(), 1); + assert_eq!(closed_events[0].0, 2); // There should be two YES votes to pass + + // Find the SchemaCreated event and check if it passed + let schema_events: Vec = System::events() + .iter() + .filter_map(|event| match event.event { + RuntimeEvent::SchemasPallet(AnnouncementEvent::SchemaCreated { + key: _, + schema_id, + }) | + RuntimeEvent::SchemasPallet(AnnouncementEvent::SchemaNameCreated { + name: _, + schema_id, + }) => Some(schema_id), + _ => None, + }) + .collect(); + + // Confirm that the schema was created + assert_eq!(schema_events.len(), 2); + + let last_schema_id = schema_events[0]; + let created_schema = SchemasPallet::get_schema_by_id(last_schema_id); + assert_eq!(created_schema.as_ref().is_some(), true); + assert_eq!(created_schema.as_ref().unwrap().clone().model, serialized_fields); + }) +} + +#[test] +fn propose_to_create_schema_name_happy_path() { + new_test_ext().execute_with(|| { + sudo_set_max_schema_size(); + let schema_name = + SchemaNamePayload::try_from("namespace.descriptor".to_string().into_bytes()) + .expect("should work"); + let sender: AccountId = test_public(1); + + assert_ok!(SchemasPallet::create_schema_v3( + RuntimeOrigin::signed(sender.clone()), + create_bounded_schema_vec(r#"{"name": "Doe", "type": "lost"}"#), + ModelType::AvroBinary, + PayloadLocation::OnChain, + BoundedVec::default(), + None, + )); + // Propose a new schema + _ = SchemasPallet::propose_to_create_schema_name( + test_origin_signed(5), + 1, + schema_name.clone(), + ); + + // Find the Proposed event and get it's hash and index so it can be voted on + let proposed_events: Vec<(u32, Hash)> = System::events() + .iter() + .filter_map(|event| match event.event { + RuntimeEvent::Council(pallet_collective::Event::Proposed { + account: _, + proposal_index, + proposal_hash, + threshold: _, + }) => Some((proposal_index, proposal_hash)), + _ => None, + }) + .collect(); + + assert_eq!(proposed_events.len(), 1); + + let proposal_index = proposed_events[0].0; + let proposal_hash = proposed_events[0].1; + let proposal = Council::proposal_of(proposal_hash).unwrap(); + let proposal_len: u32 = proposal.encoded_size() as u32; + + // Set up the council members + let council_member_1 = test_public(1); // Use ALICE as a council member + let council_member_2 = test_public(2); // Use BOB as a council member + let council_member_3 = test_public(3); // Use CHARLIE as a council member + + let incoming = vec![]; + let outgoing = vec![]; + Council::change_members( + &incoming, + &outgoing, + vec![council_member_1.clone(), council_member_2.clone(), council_member_3.clone()], + ); + + // Council member #1 votes AYE on the proposal + assert_ok!(Council::vote( + RuntimeOrigin::signed(council_member_1.clone()), + proposal_hash, + proposal_index, + true + )); + // Council member #2 votes AYE on the proposal + assert_ok!(Council::vote( + RuntimeOrigin::signed(council_member_2.clone()), + proposal_hash, + proposal_index, + true + )); + // Council member #3 votes NAY on the proposal + assert_ok!(Council::vote( + RuntimeOrigin::signed(council_member_3.clone()), + proposal_hash, + proposal_index, + false + )); + + // Find the Voted event and check if it passed + let voted_events: Vec<(bool, u32, u32)> = System::events() + .iter() + .filter_map(|event| match event.event { + RuntimeEvent::Council(pallet_collective::Event::Voted { + account: _, + proposal_hash: _, + voted, + yes, + no, + }) => Some((voted, yes, no)), + _ => None, + }) + .collect(); + + assert_eq!(voted_events.len(), 3); + assert_eq!(voted_events[1].1, 2); // There should be two AYE (out of three) votes to pass + + // Close the voting + assert_ok!(Council::close( + RuntimeOrigin::signed(test_public(5)), + proposal_hash, + proposal_index, + Weight::MAX, + proposal_len + )); + + // Find the Closed event and check if it passed + let closed_events: Vec<(u32, u32)> = System::events() + .iter() + .filter_map(|event| match event.event { + RuntimeEvent::Council(pallet_collective::Event::Closed { + proposal_hash: _, + yes, + no, + }) => Some((yes, no)), + _ => None, + }) + .collect(); + + assert_eq!(closed_events.len(), 1); + assert_eq!(closed_events[0].0, 2); // There should be two YES votes to pass + + // Find the SchemaCreated event and check if it passed + let schema_events: Vec = System::events() + .iter() + .filter_map(|event| match event.event { + RuntimeEvent::SchemasPallet(AnnouncementEvent::SchemaNameCreated { + name: _, + schema_id, + }) => Some(schema_id), + _ => None, + }) + .collect(); + + // Confirm that the schema was created + assert_eq!(schema_events.len(), 1); + + let versions = SchemasPallet::get_schema_versions(schema_name.clone().into_inner()); + assert_eq!( + versions, + Some(vec![SchemaVersionResponse { + schema_id: 1, + schema_name: schema_name.into_inner(), + schema_version: 1 + }]) + ); + }) } diff --git a/pallets/schemas/src/types.rs b/pallets/schemas/src/types.rs index a9df238733..f58502317c 100644 --- a/pallets/schemas/src/types.rs +++ b/pallets/schemas/src/types.rs @@ -1,12 +1,42 @@ //! Types for the Schema Pallet -use common_primitives::schema::{ModelType, PayloadLocation, SchemaSettings}; -use frame_support::traits::StorageVersion; +use crate::{Config, Error}; +use common_primitives::schema::{ + ModelType, PayloadLocation, SchemaId, SchemaSettings, SchemaVersion, SchemaVersionResponse, +}; +use frame_support::{ensure, pallet_prelude::ConstU32, traits::StorageVersion, BoundedVec}; use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; use scale_info::TypeInfo; +use sp_runtime::DispatchError; use sp_std::fmt::Debug; +extern crate alloc; +use alloc::string::String; +use frame_support::traits::Len; +use sp_std::{vec, vec::*}; /// Current storage version of the schemas pallet. -pub const SCHEMA_STORAGE_VERSION: StorageVersion = StorageVersion::new(2); +pub const SCHEMA_STORAGE_VERSION: StorageVersion = StorageVersion::new(3); + +/// The maximum size of schema name including all parts +pub const SCHEMA_NAME_BYTES_MAX: u32 = 32; // Hard limit of 32 bytes +/// A schema name following following structure NAMESPACE.DESCRIPTOR +pub type SchemaNamePayload = BoundedVec>; +/// schema namespace type +pub type SchemaNamespace = BoundedVec>; +/// schema descriptor type +pub type SchemaDescriptor = BoundedVec>; +/// The minimum size of a namespace in schema +pub const NAMESPACE_MIN: u32 = 3; +/// The maximum size of a namespace in schema +pub const NAMESPACE_MAX: u32 = SCHEMA_NAME_BYTES_MAX - (DESCRIPTOR_MIN + 1); +/// The minimum size of a schema descriptor +pub const DESCRIPTOR_MIN: u32 = 1; +/// The maximum size of a schema descriptor +pub const DESCRIPTOR_MAX: u32 = SCHEMA_NAME_BYTES_MAX - (NAMESPACE_MIN + 1); +/// separator character +pub const SEPARATOR_CHAR: char = '.'; +/// maximum number of versions for a certain schema name +/// -1 is to avoid overflow when converting the (index + 1) to `SchemaVersion` in `SchemaVersionId` +pub const MAX_NUMBER_OF_VERSIONS: u32 = SchemaVersion::MAX as u32 - 1; #[derive(Clone, Encode, Decode, PartialEq, Debug, TypeInfo, Eq, MaxEncodedLen)] /// A structure defining a Schema information (excluding the payload) @@ -17,4 +47,129 @@ pub struct SchemaInfo { pub payload_location: PayloadLocation, /// additional control settings for the schema pub settings: SchemaSettings, + /// Defines if a schema has a name or not + pub has_name: bool, +} + +#[derive(Clone, Encode, Decode, PartialEq, Debug, TypeInfo, Eq, MaxEncodedLen)] +/// A structure defining name of a schema +pub struct SchemaName { + /// namespace or domain of the schema + pub namespace: SchemaNamespace, + /// name or descriptor of this schema + pub descriptor: SchemaDescriptor, +} + +#[derive(Clone, Encode, Decode, PartialEq, Debug, TypeInfo, Eq, MaxEncodedLen, Default)] +/// A structure defining name of a schema +pub struct SchemaVersionId { + /// the index of each item + 1 is considered as their version. + /// Ex: the schemaId located in `ids[2]` is for version number 3 + pub ids: BoundedVec>, +} + +impl SchemaName { + /// parses and verifies the request and returns the SchemaName type if successful + pub fn try_parse( + payload: SchemaNamePayload, + is_strict: bool, + ) -> Result { + // check if all ascii + let mut str = String::from_utf8(payload.into_inner()) + .map_err(|_| Error::::InvalidSchemaNameEncoding)?; + ensure!(str.is_ascii(), Error::::InvalidSchemaNameEncoding); + + // to canonical form + str = String::from(str.to_lowercase().trim()); + + // check if alphabetic or - or separator character + ensure!( + str.chars().all(|c| c.is_ascii_alphabetic() || c == '-' || c == SEPARATOR_CHAR), + Error::::InvalidSchemaNameCharacters + ); + + // split to namespace and descriptor + let chunks: Vec<_> = str.split(SEPARATOR_CHAR).collect(); + ensure!( + chunks.len() == 2 || (chunks.len() == 1 && !is_strict), + Error::::InvalidSchemaNameStructure + ); + + // check namespace + let namespace = BoundedVec::try_from(chunks[0].as_bytes().to_vec()) + .map_err(|_| Error::::InvalidSchemaNamespaceLength)?; + ensure!(NAMESPACE_MIN <= namespace.len() as u32, Error::::InvalidSchemaNamespaceLength); + // should not start or end with - + ensure!( + !(namespace.starts_with(b"-") || namespace.ends_with(b"-")), + Error::::InvalidSchemaNameStructure + ); + + // check descriptor + let descriptor = match chunks.len() == 2 { + true => { + let descriptor = BoundedVec::try_from(chunks[1].as_bytes().to_vec()) + .map_err(|_| Error::::InvalidSchemaDescriptorLength)?; + ensure!( + DESCRIPTOR_MIN <= descriptor.len() as u32, + Error::::InvalidSchemaDescriptorLength + ); + // should not start or end with - + ensure!( + !(descriptor.starts_with(b"-") || descriptor.ends_with(b"-")), + Error::::InvalidSchemaNameStructure + ); + descriptor + }, + false => BoundedVec::default(), + }; + + Ok(SchemaName { namespace, descriptor }) + } + + /// get the combined name namespace.descriptor + pub fn get_combined_name(&self) -> Vec { + vec![ + self.namespace.clone().into_inner(), + vec![SEPARATOR_CHAR as u8], + self.descriptor.clone().into_inner(), + ] + .concat() + } + + /// creates a new SchemaName using provided descriptor + pub fn new_with_descriptor(&self, descriptor: SchemaDescriptor) -> Self { + Self { namespace: self.namespace.clone(), descriptor } + } + + /// returns true if the descriptor exists + pub fn descriptor_exists(&self) -> bool { + self.descriptor.len() > 0 + } +} + +impl SchemaVersionId { + /// adds a new schema id and returns the version for that schema_id + pub fn add(&mut self, schema_id: SchemaId) -> Result { + let is_new = !self.ids.iter().any(|id| id == &schema_id); + ensure!(is_new, Error::::SchemaIdAlreadyExists); + self.ids + .try_push(schema_id) + .map_err(|_| Error::::ExceedsMaxNumberOfVersions)?; + let version = self.ids.len() as SchemaVersion; + Ok(version) + } + + /// convert into a response vector + pub fn convert_to_response(&self, schema_name: &SchemaName) -> Vec { + self.ids + .iter() + .enumerate() + .map(|(index, schema_id)| SchemaVersionResponse { + schema_name: schema_name.get_combined_name(), + schema_id: *schema_id, + schema_version: (index + 1) as SchemaVersion, + }) + .collect() + } } diff --git a/pallets/schemas/src/weights.rs b/pallets/schemas/src/weights.rs index 8db058944e..bd969e6849 100644 --- a/pallets/schemas/src/weights.rs +++ b/pallets/schemas/src/weights.rs @@ -18,9 +18,9 @@ //! Autogenerated weights for pallet_schemas //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-11-14, STEPS: `20`, REPEAT: `10`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-11-30, STEPS: `20`, REPEAT: `10`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `benchmark-runner-44wtw-sz2gt`, CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` +//! HOSTNAME: `benchmark-runner-44wtw-l2h9r`, CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` //! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("frequency-bench"), DB CACHE: 1024 // Executed Command: @@ -53,7 +53,12 @@ pub trait WeightInfo { fn create_schema_via_governance(m: u32, ) -> Weight; fn propose_to_create_schema(m: u32, ) -> Weight; fn create_schema_v2(m: u32, ) -> Weight; + fn create_schema_v3(m: u32, ) -> Weight; fn set_max_schema_model_bytes() -> Weight; + fn create_schema_via_governance_v2(m: u32, ) -> Weight; + fn propose_to_create_schema_v2(m: u32, ) -> Weight; + fn propose_to_create_schema_name() -> Weight; + fn create_schema_name_via_governance() -> Weight; } /// Weights for pallet_schemas using the Substrate node and recommended hardware. @@ -64,7 +69,7 @@ impl WeightInfo for SubstrateWeight { /// Storage: `Schemas::CurrentSchemaIdentifierMaximum` (r:1 w:1) /// Proof: `Schemas::CurrentSchemaIdentifierMaximum` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`) /// Storage: `Schemas::SchemaInfos` (r:0 w:1) - /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(14), added: 2489, mode: `MaxEncodedLen`) + /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(15), added: 2490, mode: `MaxEncodedLen`) /// Storage: `Schemas::SchemaPayloads` (r:0 w:1) /// Proof: `Schemas::SchemaPayloads` (`max_values`: None, `max_size`: Some(65514), added: 67989, mode: `MaxEncodedLen`) /// The range of component `m` is `[16, 65499]`. @@ -72,10 +77,10 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `136` // Estimated: `2974` - // Minimum execution time: 15_561_000 picoseconds. - Weight::from_parts(15_783_000, 2974) - // Standard Error: 49 - .saturating_add(Weight::from_parts(34_744, 0).saturating_mul(m.into())) + // Minimum execution time: 15_644_000 picoseconds. + Weight::from_parts(15_766_000, 2974) + // Standard Error: 44 + .saturating_add(Weight::from_parts(33_034, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(3_u64)) } @@ -84,7 +89,7 @@ impl WeightInfo for SubstrateWeight { /// Storage: `Schemas::CurrentSchemaIdentifierMaximum` (r:1 w:1) /// Proof: `Schemas::CurrentSchemaIdentifierMaximum` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`) /// Storage: `Schemas::SchemaInfos` (r:0 w:1) - /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(14), added: 2489, mode: `MaxEncodedLen`) + /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(15), added: 2490, mode: `MaxEncodedLen`) /// Storage: `Schemas::SchemaPayloads` (r:0 w:1) /// Proof: `Schemas::SchemaPayloads` (`max_values`: None, `max_size`: Some(65514), added: 67989, mode: `MaxEncodedLen`) /// The range of component `m` is `[16, 65499]`. @@ -92,10 +97,10 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `136` // Estimated: `2974` - // Minimum execution time: 15_899_000 picoseconds. - Weight::from_parts(16_004_000, 2974) - // Standard Error: 53 - .saturating_add(Weight::from_parts(34_628, 0).saturating_mul(m.into())) + // Minimum execution time: 15_531_000 picoseconds. + Weight::from_parts(15_680_000, 2974) + // Standard Error: 42 + .saturating_add(Weight::from_parts(32_973, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(3_u64)) } @@ -114,10 +119,10 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `230` // Estimated: `5180` - // Minimum execution time: 21_420_000 picoseconds. - Weight::from_parts(10_115_148, 5180) + // Minimum execution time: 20_821_000 picoseconds. + Weight::from_parts(9_707_541, 5180) // Standard Error: 33 - .saturating_add(Weight::from_parts(3_133, 0).saturating_mul(m.into())) + .saturating_add(Weight::from_parts(3_080, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(4_u64)) .saturating_add(T::DbWeight::get().writes(4_u64)) } @@ -126,7 +131,7 @@ impl WeightInfo for SubstrateWeight { /// Storage: `Schemas::CurrentSchemaIdentifierMaximum` (r:1 w:1) /// Proof: `Schemas::CurrentSchemaIdentifierMaximum` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`) /// Storage: `Schemas::SchemaInfos` (r:0 w:1) - /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(14), added: 2489, mode: `MaxEncodedLen`) + /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(15), added: 2490, mode: `MaxEncodedLen`) /// Storage: `Schemas::SchemaPayloads` (r:0 w:1) /// Proof: `Schemas::SchemaPayloads` (`max_values`: None, `max_size`: Some(65514), added: 67989, mode: `MaxEncodedLen`) /// The range of component `m` is `[16, 65499]`. @@ -134,21 +139,121 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `136` // Estimated: `2974` - // Minimum execution time: 15_700_000 picoseconds. - Weight::from_parts(15_894_000, 2974) - // Standard Error: 46 - .saturating_add(Weight::from_parts(34_920, 0).saturating_mul(m.into())) + // Minimum execution time: 15_677_000 picoseconds. + Weight::from_parts(15_790_000, 2974) + // Standard Error: 42 + .saturating_add(Weight::from_parts(32_935, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(3_u64)) } + /// Storage: `Schemas::GovernanceSchemaModelMaxBytes` (r:1 w:0) + /// Proof: `Schemas::GovernanceSchemaModelMaxBytes` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `Schemas::CurrentSchemaIdentifierMaximum` (r:1 w:1) + /// Proof: `Schemas::CurrentSchemaIdentifierMaximum` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`) + /// Storage: `Schemas::SchemaNameToIds` (r:1 w:1) + /// Proof: `Schemas::SchemaNameToIds` (`max_values`: None, `max_size`: Some(602), added: 3077, mode: `MaxEncodedLen`) + /// Storage: `Schemas::SchemaInfos` (r:0 w:1) + /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(15), added: 2490, mode: `MaxEncodedLen`) + /// Storage: `Schemas::SchemaPayloads` (r:0 w:1) + /// Proof: `Schemas::SchemaPayloads` (`max_values`: None, `max_size`: Some(65514), added: 67989, mode: `MaxEncodedLen`) + /// The range of component `m` is `[16, 65499]`. + fn create_schema_v3(m: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `136` + // Estimated: `5552` + // Minimum execution time: 24_859_000 picoseconds. + Weight::from_parts(6_368_803, 5552) + // Standard Error: 59 + .saturating_add(Weight::from_parts(33_540, 0).saturating_mul(m.into())) + .saturating_add(T::DbWeight::get().reads(3_u64)) + .saturating_add(T::DbWeight::get().writes(4_u64)) + } /// Storage: `Schemas::GovernanceSchemaModelMaxBytes` (r:0 w:1) /// Proof: `Schemas::GovernanceSchemaModelMaxBytes` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) fn set_max_schema_model_bytes() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_806_000 picoseconds. - Weight::from_parts(7_135_000, 0) + // Minimum execution time: 6_682_000 picoseconds. + Weight::from_parts(6_932_000, 0) + .saturating_add(T::DbWeight::get().writes(1_u64)) + } + /// Storage: `Schemas::GovernanceSchemaModelMaxBytes` (r:1 w:0) + /// Proof: `Schemas::GovernanceSchemaModelMaxBytes` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `Schemas::CurrentSchemaIdentifierMaximum` (r:1 w:1) + /// Proof: `Schemas::CurrentSchemaIdentifierMaximum` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`) + /// Storage: `Schemas::SchemaNameToIds` (r:1 w:1) + /// Proof: `Schemas::SchemaNameToIds` (`max_values`: None, `max_size`: Some(602), added: 3077, mode: `MaxEncodedLen`) + /// Storage: `Schemas::SchemaInfos` (r:0 w:1) + /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(15), added: 2490, mode: `MaxEncodedLen`) + /// Storage: `Schemas::SchemaPayloads` (r:0 w:1) + /// Proof: `Schemas::SchemaPayloads` (`max_values`: None, `max_size`: Some(65514), added: 67989, mode: `MaxEncodedLen`) + /// The range of component `m` is `[16, 65499]`. + fn create_schema_via_governance_v2(m: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `136` + // Estimated: `5552` + // Minimum execution time: 25_098_000 picoseconds. + Weight::from_parts(6_990_638, 5552) + // Standard Error: 64 + .saturating_add(Weight::from_parts(33_985, 0).saturating_mul(m.into())) + .saturating_add(T::DbWeight::get().reads(3_u64)) + .saturating_add(T::DbWeight::get().writes(4_u64)) + } + /// Storage: `Council::Members` (r:1 w:0) + /// Proof: `Council::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Council::ProposalOf` (r:1 w:1) + /// Proof: `Council::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Council::Proposals` (r:1 w:1) + /// Proof: `Council::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Council::ProposalCount` (r:1 w:1) + /// Proof: `Council::ProposalCount` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Council::Voting` (r:0 w:1) + /// Proof: `Council::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `m` is `[16, 65499]`. + fn propose_to_create_schema_v2(m: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `230` + // Estimated: `5180` + // Minimum execution time: 21_655_000 picoseconds. + Weight::from_parts(10_381_585, 5180) + // Standard Error: 32 + .saturating_add(Weight::from_parts(3_063, 0).saturating_mul(m.into())) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(4_u64)) + } + /// Storage: `Schemas::SchemaInfos` (r:1 w:0) + /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(15), added: 2490, mode: `MaxEncodedLen`) + /// Storage: `Council::Members` (r:1 w:0) + /// Proof: `Council::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Council::ProposalOf` (r:1 w:1) + /// Proof: `Council::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Council::Proposals` (r:1 w:1) + /// Proof: `Council::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Council::ProposalCount` (r:1 w:1) + /// Proof: `Council::ProposalCount` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Council::Voting` (r:0 w:1) + /// Proof: `Council::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`) + fn propose_to_create_schema_name() -> Weight { + // Proof Size summary in bytes: + // Measured: `433` + // Estimated: `5383` + // Minimum execution time: 27_584_000 picoseconds. + Weight::from_parts(28_187_000, 5383) + .saturating_add(T::DbWeight::get().reads(5_u64)) + .saturating_add(T::DbWeight::get().writes(4_u64)) + } + /// Storage: `Schemas::SchemaInfos` (r:1 w:0) + /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(15), added: 2490, mode: `MaxEncodedLen`) + /// Storage: `Schemas::SchemaNameToIds` (r:1 w:1) + /// Proof: `Schemas::SchemaNameToIds` (`max_values`: None, `max_size`: Some(602), added: 3077, mode: `MaxEncodedLen`) + fn create_schema_name_via_governance() -> Weight { + // Proof Size summary in bytes: + // Measured: `203` + // Estimated: `5552` + // Minimum execution time: 17_093_000 picoseconds. + Weight::from_parts(17_513_000, 5552) + .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } } @@ -160,7 +265,7 @@ impl WeightInfo for () { /// Storage: `Schemas::CurrentSchemaIdentifierMaximum` (r:1 w:1) /// Proof: `Schemas::CurrentSchemaIdentifierMaximum` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`) /// Storage: `Schemas::SchemaInfos` (r:0 w:1) - /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(14), added: 2489, mode: `MaxEncodedLen`) + /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(15), added: 2490, mode: `MaxEncodedLen`) /// Storage: `Schemas::SchemaPayloads` (r:0 w:1) /// Proof: `Schemas::SchemaPayloads` (`max_values`: None, `max_size`: Some(65514), added: 67989, mode: `MaxEncodedLen`) /// The range of component `m` is `[16, 65499]`. @@ -168,10 +273,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `136` // Estimated: `2974` - // Minimum execution time: 15_561_000 picoseconds. - Weight::from_parts(15_783_000, 2974) - // Standard Error: 49 - .saturating_add(Weight::from_parts(34_744, 0).saturating_mul(m.into())) + // Minimum execution time: 15_644_000 picoseconds. + Weight::from_parts(15_766_000, 2974) + // Standard Error: 44 + .saturating_add(Weight::from_parts(33_034, 0).saturating_mul(m.into())) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(3_u64)) } @@ -180,7 +285,7 @@ impl WeightInfo for () { /// Storage: `Schemas::CurrentSchemaIdentifierMaximum` (r:1 w:1) /// Proof: `Schemas::CurrentSchemaIdentifierMaximum` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`) /// Storage: `Schemas::SchemaInfos` (r:0 w:1) - /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(14), added: 2489, mode: `MaxEncodedLen`) + /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(15), added: 2490, mode: `MaxEncodedLen`) /// Storage: `Schemas::SchemaPayloads` (r:0 w:1) /// Proof: `Schemas::SchemaPayloads` (`max_values`: None, `max_size`: Some(65514), added: 67989, mode: `MaxEncodedLen`) /// The range of component `m` is `[16, 65499]`. @@ -188,10 +293,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `136` // Estimated: `2974` - // Minimum execution time: 15_899_000 picoseconds. - Weight::from_parts(16_004_000, 2974) - // Standard Error: 53 - .saturating_add(Weight::from_parts(34_628, 0).saturating_mul(m.into())) + // Minimum execution time: 15_531_000 picoseconds. + Weight::from_parts(15_680_000, 2974) + // Standard Error: 42 + .saturating_add(Weight::from_parts(32_973, 0).saturating_mul(m.into())) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(3_u64)) } @@ -210,10 +315,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `230` // Estimated: `5180` - // Minimum execution time: 21_420_000 picoseconds. - Weight::from_parts(10_115_148, 5180) + // Minimum execution time: 20_821_000 picoseconds. + Weight::from_parts(9_707_541, 5180) // Standard Error: 33 - .saturating_add(Weight::from_parts(3_133, 0).saturating_mul(m.into())) + .saturating_add(Weight::from_parts(3_080, 0).saturating_mul(m.into())) .saturating_add(RocksDbWeight::get().reads(4_u64)) .saturating_add(RocksDbWeight::get().writes(4_u64)) } @@ -222,7 +327,7 @@ impl WeightInfo for () { /// Storage: `Schemas::CurrentSchemaIdentifierMaximum` (r:1 w:1) /// Proof: `Schemas::CurrentSchemaIdentifierMaximum` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`) /// Storage: `Schemas::SchemaInfos` (r:0 w:1) - /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(14), added: 2489, mode: `MaxEncodedLen`) + /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(15), added: 2490, mode: `MaxEncodedLen`) /// Storage: `Schemas::SchemaPayloads` (r:0 w:1) /// Proof: `Schemas::SchemaPayloads` (`max_values`: None, `max_size`: Some(65514), added: 67989, mode: `MaxEncodedLen`) /// The range of component `m` is `[16, 65499]`. @@ -230,21 +335,121 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `136` // Estimated: `2974` - // Minimum execution time: 15_700_000 picoseconds. - Weight::from_parts(15_894_000, 2974) - // Standard Error: 46 - .saturating_add(Weight::from_parts(34_920, 0).saturating_mul(m.into())) + // Minimum execution time: 15_677_000 picoseconds. + Weight::from_parts(15_790_000, 2974) + // Standard Error: 42 + .saturating_add(Weight::from_parts(32_935, 0).saturating_mul(m.into())) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(3_u64)) } + /// Storage: `Schemas::GovernanceSchemaModelMaxBytes` (r:1 w:0) + /// Proof: `Schemas::GovernanceSchemaModelMaxBytes` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `Schemas::CurrentSchemaIdentifierMaximum` (r:1 w:1) + /// Proof: `Schemas::CurrentSchemaIdentifierMaximum` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`) + /// Storage: `Schemas::SchemaNameToIds` (r:1 w:1) + /// Proof: `Schemas::SchemaNameToIds` (`max_values`: None, `max_size`: Some(602), added: 3077, mode: `MaxEncodedLen`) + /// Storage: `Schemas::SchemaInfos` (r:0 w:1) + /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(15), added: 2490, mode: `MaxEncodedLen`) + /// Storage: `Schemas::SchemaPayloads` (r:0 w:1) + /// Proof: `Schemas::SchemaPayloads` (`max_values`: None, `max_size`: Some(65514), added: 67989, mode: `MaxEncodedLen`) + /// The range of component `m` is `[16, 65499]`. + fn create_schema_v3(m: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `136` + // Estimated: `5552` + // Minimum execution time: 24_859_000 picoseconds. + Weight::from_parts(6_368_803, 5552) + // Standard Error: 59 + .saturating_add(Weight::from_parts(33_540, 0).saturating_mul(m.into())) + .saturating_add(RocksDbWeight::get().reads(3_u64)) + .saturating_add(RocksDbWeight::get().writes(4_u64)) + } /// Storage: `Schemas::GovernanceSchemaModelMaxBytes` (r:0 w:1) /// Proof: `Schemas::GovernanceSchemaModelMaxBytes` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) fn set_max_schema_model_bytes() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_806_000 picoseconds. - Weight::from_parts(7_135_000, 0) + // Minimum execution time: 6_682_000 picoseconds. + Weight::from_parts(6_932_000, 0) + .saturating_add(RocksDbWeight::get().writes(1_u64)) + } + /// Storage: `Schemas::GovernanceSchemaModelMaxBytes` (r:1 w:0) + /// Proof: `Schemas::GovernanceSchemaModelMaxBytes` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `Schemas::CurrentSchemaIdentifierMaximum` (r:1 w:1) + /// Proof: `Schemas::CurrentSchemaIdentifierMaximum` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`) + /// Storage: `Schemas::SchemaNameToIds` (r:1 w:1) + /// Proof: `Schemas::SchemaNameToIds` (`max_values`: None, `max_size`: Some(602), added: 3077, mode: `MaxEncodedLen`) + /// Storage: `Schemas::SchemaInfos` (r:0 w:1) + /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(15), added: 2490, mode: `MaxEncodedLen`) + /// Storage: `Schemas::SchemaPayloads` (r:0 w:1) + /// Proof: `Schemas::SchemaPayloads` (`max_values`: None, `max_size`: Some(65514), added: 67989, mode: `MaxEncodedLen`) + /// The range of component `m` is `[16, 65499]`. + fn create_schema_via_governance_v2(m: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `136` + // Estimated: `5552` + // Minimum execution time: 25_098_000 picoseconds. + Weight::from_parts(6_990_638, 5552) + // Standard Error: 64 + .saturating_add(Weight::from_parts(33_985, 0).saturating_mul(m.into())) + .saturating_add(RocksDbWeight::get().reads(3_u64)) + .saturating_add(RocksDbWeight::get().writes(4_u64)) + } + /// Storage: `Council::Members` (r:1 w:0) + /// Proof: `Council::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Council::ProposalOf` (r:1 w:1) + /// Proof: `Council::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Council::Proposals` (r:1 w:1) + /// Proof: `Council::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Council::ProposalCount` (r:1 w:1) + /// Proof: `Council::ProposalCount` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Council::Voting` (r:0 w:1) + /// Proof: `Council::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `m` is `[16, 65499]`. + fn propose_to_create_schema_v2(m: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `230` + // Estimated: `5180` + // Minimum execution time: 21_655_000 picoseconds. + Weight::from_parts(10_381_585, 5180) + // Standard Error: 32 + .saturating_add(Weight::from_parts(3_063, 0).saturating_mul(m.into())) + .saturating_add(RocksDbWeight::get().reads(4_u64)) + .saturating_add(RocksDbWeight::get().writes(4_u64)) + } + /// Storage: `Schemas::SchemaInfos` (r:1 w:0) + /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(15), added: 2490, mode: `MaxEncodedLen`) + /// Storage: `Council::Members` (r:1 w:0) + /// Proof: `Council::Members` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Council::ProposalOf` (r:1 w:1) + /// Proof: `Council::ProposalOf` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Council::Proposals` (r:1 w:1) + /// Proof: `Council::Proposals` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Council::ProposalCount` (r:1 w:1) + /// Proof: `Council::ProposalCount` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Council::Voting` (r:0 w:1) + /// Proof: `Council::Voting` (`max_values`: None, `max_size`: None, mode: `Measured`) + fn propose_to_create_schema_name() -> Weight { + // Proof Size summary in bytes: + // Measured: `433` + // Estimated: `5383` + // Minimum execution time: 27_584_000 picoseconds. + Weight::from_parts(28_187_000, 5383) + .saturating_add(RocksDbWeight::get().reads(5_u64)) + .saturating_add(RocksDbWeight::get().writes(4_u64)) + } + /// Storage: `Schemas::SchemaInfos` (r:1 w:0) + /// Proof: `Schemas::SchemaInfos` (`max_values`: None, `max_size`: Some(15), added: 2490, mode: `MaxEncodedLen`) + /// Storage: `Schemas::SchemaNameToIds` (r:1 w:1) + /// Proof: `Schemas::SchemaNameToIds` (`max_values`: None, `max_size`: Some(602), added: 3077, mode: `MaxEncodedLen`) + fn create_schema_name_via_governance() -> Weight { + // Proof Size summary in bytes: + // Measured: `203` + // Estimated: `5552` + // Minimum execution time: 17_093_000 picoseconds. + Weight::from_parts(17_513_000, 5552) + .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } } diff --git a/pallets/time-release/Cargo.toml b/pallets/time-release/Cargo.toml index df6a05c545..09a6d80b7a 100644 --- a/pallets/time-release/Cargo.toml +++ b/pallets/time-release/Cargo.toml @@ -23,11 +23,12 @@ sp-io = { workspace = true } sp-runtime = { workspace = true } sp-std = { workspace = true } frame-benchmarking = { workspace = true, optional = true } +sp-core = { workspace = true } +log = { workspace = true, default-features = false } [dev-dependencies] chrono = { workspace = true } pallet-balances = { workspace = true } -sp-core = { workspace = true } common-primitives = { default-features = false, path = "../../common/primitives" } [features] @@ -42,6 +43,7 @@ std = [ "sp-std/std", "frame-benchmarking/std", "common-primitives/std", + "pallet-balances/std", ] runtime-benchmarks = [ "frame-support/runtime-benchmarks", diff --git a/pallets/time-release/src/benchmarking.rs b/pallets/time-release/src/benchmarking.rs index 685d0bcb37..7dafbc1a44 100644 --- a/pallets/time-release/src/benchmarking.rs +++ b/pallets/time-release/src/benchmarking.rs @@ -4,7 +4,6 @@ use super::*; use crate::Pallet as TimeReleasePallet; use frame_benchmarking::{account, benchmarks, whitelist_account, whitelisted_caller}; -use frame_support::traits::{Currency, Imbalance}; use frame_system::{pallet_prelude::BlockNumberFor, RawOrigin}; use sp_runtime::{traits::TrailingZeroInput, SaturatedConversion}; use sp_std::prelude::*; @@ -17,9 +16,8 @@ pub type Schedule = ReleaseSchedule, BalanceOf>; const SEED: u32 = 0; fn set_balance(who: &T::AccountId, balance: BalanceOf) { - let deposit_result = T::Currency::deposit_creating(who, balance.saturated_into()); - let actual_deposit = deposit_result.peek(); - assert_eq!(balance, actual_deposit); + let actual_deposit = T::Currency::mint_into(&who, balance.saturated_into()); + assert_eq!(balance, actual_deposit.unwrap()); } fn lookup_of_account( @@ -76,7 +74,7 @@ benchmarks! { }: _(RawOrigin::Signed(to.clone())) verify { assert_eq!( - T::Currency::free_balance(&to), + T::Currency::balance(&to), schedule.total_amount().unwrap() * BalanceOf::::from(i) , ); } @@ -103,7 +101,7 @@ benchmarks! { }: _(RawOrigin::Root, to_lookup, schedules) verify { assert_eq!( - T::Currency::free_balance(&to), + T::Currency::balance(&to), schedule.total_amount().unwrap() * BalanceOf::::from(i) ); } diff --git a/pallets/time-release/src/lib.rs b/pallets/time-release/src/lib.rs index e3048bdcf3..140865595d 100644 --- a/pallets/time-release/src/lib.rs +++ b/pallets/time-release/src/lib.rs @@ -37,18 +37,22 @@ )] use frame_support::{ + dispatch::DispatchResult, ensure, pallet_prelude::*, traits::{ - BuildGenesisConfig, Currency, EnsureOrigin, ExistenceRequirement, Get, LockIdentifier, - LockableCurrency, WithdrawReasons, + tokens::{ + fungible::{Inspect as InspectFungible, Mutate, MutateFreeze}, + Balance, Preservation, + }, + BuildGenesisConfig, EnsureOrigin, Get, }, BoundedVec, }; use frame_system::{ensure_root, ensure_signed, pallet_prelude::*}; use sp_runtime::{ traits::{BlockNumberProvider, CheckedAdd, StaticLookup, Zero}, - ArithmeticError, DispatchResult, + ArithmeticError, }; use sp_std::vec::Vec; @@ -57,6 +61,9 @@ mod mock; #[cfg(test)] mod tests; +/// storage migrations +pub mod migration; + mod types; pub use types::*; @@ -68,15 +75,13 @@ mod benchmarking; pub use module::*; -/// The lock identifier for timed released transfers. -pub const RELEASE_LOCK_ID: LockIdentifier = *b"timeRels"; - #[frame_support::pallet] pub mod module { use super::*; - pub(crate) type BalanceOf = - <::Currency as Currency<::AccountId>>::Balance; + pub(crate) type BalanceOf = <::Currency as InspectFungible< + ::AccountId, + >>::Balance; pub(crate) type ReleaseScheduleOf = ReleaseSchedule, BalanceOf>; /// Scheduled item used for configuring genesis. @@ -88,13 +93,32 @@ pub mod module { BalanceOf, ); + /// A reason for freezing funds. + /// Creates a freeze reason for this pallet that is aggregated by `construct_runtime`. + #[pallet::composite_enum] + pub enum FreezeReason { + /// Funds are currently locked and are not yet liquid. + TimeReleaseVesting, + } + + /// the storage version for this pallet + pub const STORAGE_VERSION: StorageVersion = StorageVersion::new(2); + #[pallet::config] pub trait Config: frame_system::Config { /// The overarching event type. type RuntimeEvent: From> + IsType<::RuntimeEvent>; + /// The overarching freeze reason. + type RuntimeFreezeReason: From; + + /// We need MaybeSerializeDeserialize because of the genesis config. + type Balance: Balance + MaybeSerializeDeserialize; + /// The currency trait used to set a lock on a balance. - type Currency: LockableCurrency>; + type Currency: MutateFreeze + + InspectFungible + + Mutate; #[pallet::constant] /// The minimum amount transferred to call `transfer`. @@ -207,16 +231,16 @@ pub mod module { .expect("Invalid release schedule"); assert!( - T::Currency::free_balance(who) >= total_amount, + T::Currency::balance(who) >= total_amount, "Account do not have enough balance" ); - T::Currency::set_lock( - RELEASE_LOCK_ID, + T::Currency::set_freeze( + &FreezeReason::TimeReleaseVesting.into(), who, total_amount, - WithdrawReasons::all(), - ); + ) + .expect("Failed to set freeze"); ReleaseSchedules::::insert(who, bounded_schedules); }); } @@ -239,7 +263,7 @@ pub mod module { #[pallet::weight(T::WeightInfo::claim(::MaxReleaseSchedules::get() / 2))] pub fn claim(origin: OriginFor) -> DispatchResult { let who = ensure_signed(origin)?; - let locked_amount = Self::do_claim(&who); + let locked_amount = Self::do_claim(&who)?; Self::deposit_event(Event::Claimed { who, amount: locked_amount }); Ok(()) @@ -268,7 +292,7 @@ pub mod module { if to == from { ensure!( - T::Currency::free_balance(&from) >= + T::Currency::balance(&from) >= schedule.total_amount().ok_or(ArithmeticError::Overflow)?, Error::::InsufficientBalanceToLock, ); @@ -324,7 +348,7 @@ pub mod module { ) -> DispatchResult { ensure_signed(origin)?; let who = T::Lookup::lookup(dest)?; - let locked_amount = Self::do_claim(&who); + let locked_amount = Self::do_claim(&who)?; Self::deposit_event(Event::Claimed { who, amount: locked_amount }); Ok(()) @@ -333,15 +357,15 @@ pub mod module { } impl Pallet { - fn do_claim(who: &T::AccountId) -> BalanceOf { + fn do_claim(who: &T::AccountId) -> Result, DispatchError> { let locked = Self::prune_and_get_locked_balance(who); if locked.is_zero() { - Self::delete_lock(who); + Self::delete_lock(who)?; } else { - Self::update_lock(who, locked); + Self::update_lock(who, locked)?; } - locked + Ok(locked) } /// Deletes schedules that have released all funds up to a block-number. @@ -385,9 +409,9 @@ impl Pallet { .checked_add(&schedule_amount) .ok_or(ArithmeticError::Overflow)?; - T::Currency::transfer(from, to, schedule_amount, ExistenceRequirement::AllowDeath)?; + T::Currency::transfer(from, to, schedule_amount, Preservation::Expendable)?; - Self::update_lock(&to, total_amount); + Self::update_lock(&to, total_amount)?; >::try_append(to, schedule) .map_err(|_| Error::::MaxReleaseSchedulesExceeded)?; @@ -405,7 +429,7 @@ impl Pallet { // empty release schedules cleanup the storage and unlock the fund if bounded_schedules.is_empty() { - Self::delete_release_schedules(who); + Self::delete_release_schedules(who)?; return Ok(()) } @@ -418,23 +442,22 @@ impl Pallet { }, )?; - ensure!( - T::Currency::free_balance(who) >= total_amount, - Error::::InsufficientBalanceToLock, - ); + ensure!(T::Currency::balance(who) >= total_amount, Error::::InsufficientBalanceToLock,); - Self::update_lock(&who, total_amount); + Self::update_lock(&who, total_amount)?; Self::set_schedules_for(who, bounded_schedules); Ok(()) } - fn update_lock(who: &T::AccountId, locked: BalanceOf) { - T::Currency::set_lock(RELEASE_LOCK_ID, who, locked, WithdrawReasons::all()); + fn update_lock(who: &T::AccountId, locked: BalanceOf) -> DispatchResult { + T::Currency::set_freeze(&FreezeReason::TimeReleaseVesting.into(), who, locked)?; + Ok(()) } - fn delete_lock(who: &T::AccountId) { - T::Currency::remove_lock(RELEASE_LOCK_ID, who); + fn delete_lock(who: &T::AccountId) -> DispatchResult { + T::Currency::thaw(&FreezeReason::TimeReleaseVesting.into(), who)?; + Ok(()) } fn set_schedules_for( @@ -444,9 +467,10 @@ impl Pallet { ReleaseSchedules::::insert(who, schedules); } - fn delete_release_schedules(who: &T::AccountId) { + fn delete_release_schedules(who: &T::AccountId) -> DispatchResult { >::remove(who); - Self::delete_lock(who); + Self::delete_lock(who)?; + Ok(()) } } diff --git a/pallets/time-release/src/migration/mod.rs b/pallets/time-release/src/migration/mod.rs new file mode 100644 index 0000000000..c34354a101 --- /dev/null +++ b/pallets/time-release/src/migration/mod.rs @@ -0,0 +1,2 @@ +/// migrations to v2 +pub mod v2; diff --git a/pallets/time-release/src/migration/v2.rs b/pallets/time-release/src/migration/v2.rs new file mode 100644 index 0000000000..0829a14845 --- /dev/null +++ b/pallets/time-release/src/migration/v2.rs @@ -0,0 +1,263 @@ +use crate::{types, BalanceOf, BlockNumberFor, Config, FreezeReason, Pallet, ReleaseSchedules}; +use frame_support::{ + pallet_prelude::{GetStorageVersion, IsType, Weight}, + traits::{ + fungible::MutateFreeze, Get, LockIdentifier, LockableCurrency, OnRuntimeUpgrade, + StorageVersion, + }, +}; +use parity_scale_codec::Encode; +use sp_core::hexdisplay::HexDisplay; +use sp_runtime::{traits::Zero, Saturating}; + +const LOG_TARGET: &str = "runtime::time-release"; + +#[cfg(feature = "try-runtime")] +use sp_std::vec::Vec; + +const RELEASE_LOCK_ID: LockIdentifier = *b"timeRels"; + +/// The OnRuntimeUpgrade implementation for this storage migration +pub struct MigrationToV2(sp_std::marker::PhantomData<(T, OldCurrency)>); +impl MigrationToV2 +where + T: Config, + OldCurrency: 'static + LockableCurrency>, + OldCurrency::Balance: IsType>, +{ + /// Translate time release locked deposit to frozen deposit + pub fn translate_lock_to_freeze( + account_id: &T::AccountId, + amount: OldCurrency::Balance, + ) -> Weight { + // 1 read get Locks + // 1 read get Freezes + // 1 read get Account + // 1 write set Account + // 1 read get Locks: update_locks: set existed with `contains_key` + // 1 write set Locks + OldCurrency::remove_lock(RELEASE_LOCK_ID, &account_id); + + // 1 read get Freeze + // 1 read get Locks + // 1 write set Account: update_freezes->mutate_account->try_mutate_account: set account data + // 1 write set Freeze + T::Currency::set_freeze( + &FreezeReason::TimeReleaseVesting.into(), + &account_id, + amount.into(), + ) + .unwrap_or_else(|err| { + log::error!( + target: LOG_TARGET, + "Failed to freeze {:?} from account 0x{:?}, reason: {:?}", + amount, + HexDisplay::from(&account_id.encode()), + err + ); + }); + + T::DbWeight::get().reads_writes(6, 4) + } +} + +impl OnRuntimeUpgrade for MigrationToV2 +where + T: Config, + OldCurrency: 'static + LockableCurrency>, + OldCurrency::Balance: IsType>, +{ + fn on_runtime_upgrade() -> Weight { + log::info!(target: LOG_TARGET, "Running storage migration..."); + + let on_chain_version = Pallet::::on_chain_storage_version(); + + // storage was already migrated. + if on_chain_version.ge(&crate::module::STORAGE_VERSION) { + log::info!( + target: LOG_TARGET, + "Old Time Release Locks->Freezes migration attempted to run. Please remove" + ); + return T::DbWeight::get().reads(1) + } + + log::info!(target: LOG_TARGET, "🔄 Time Release Locks->Freezes migration started"); + // The migration started with 1r to get the on_chain_storage_version + let mut total_weight = T::DbWeight::get().reads_writes(1, 0); + let mut total_accounts_migrated = 0u32; + + // Get all the keys(accounts) from the ReleaseSchedules storage + ReleaseSchedules::::iter() + .map(|(account_id, _)| account_id) + .for_each(|account_id| { + let (total_amount, cal_fn_weight) = calculate_total_scheduled_locks_for_account::(&account_id); + + let trans_fn_weight = MigrationToV2::::translate_lock_to_freeze( + &account_id, + total_amount.into(), + ); + + total_weight = total_weight.saturating_add(cal_fn_weight).saturating_add(trans_fn_weight); + + total_accounts_migrated += 1; + + log::info!(target: LOG_TARGET, "🔄 migrated account 0x{:?}, amount:{:?}", HexDisplay::from(&account_id.encode()), total_amount); + }); + + log::info!( + target: LOG_TARGET, + "total accounts migrated from locks to frozen {:?}", + total_accounts_migrated + ); + + StorageVersion::new(2).put::>(); + total_weight.saturating_add(T::DbWeight::get().reads_writes(0, 1)); + + log::info!(target: LOG_TARGET, "🔄 Time Release migration finished"); + log::info!( + target: LOG_TARGET, + "Time Release Migration calculated weight = {:?}", + total_weight + ); + + total_weight + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result, sp_runtime::TryRuntimeError> { + use frame_support::storage::generator::StorageMap; + let pallet_prefix = ReleaseSchedules::::module_prefix(); + let storage_prefix = ReleaseSchedules::::storage_prefix(); + assert_eq!(&b"TimeRelease"[..], pallet_prefix); + assert_eq!(&b"ReleaseSchedules"[..], storage_prefix); + log::info!(target: LOG_TARGET, "Running pre_upgrade..."); + + let count = ReleaseSchedules::::iter().count() as u32; + log::info!(target: LOG_TARGET, "Finish pre_upgrade for {:?} records", count); + Ok(count.encode()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade(state: Vec) -> Result<(), sp_runtime::TryRuntimeError> { + use parity_scale_codec::Decode; + let pre_upgrade_count: u32 = Decode::decode(&mut state.as_slice()).unwrap_or_default(); + let on_chain_version = Pallet::::on_chain_storage_version(); + + assert_eq!(on_chain_version, crate::module::STORAGE_VERSION); + assert_eq!(pre_upgrade_count as usize, ReleaseSchedules::::iter().count()); + + log::info!(target: LOG_TARGET, "✅ migration post_upgrade checks passed"); + Ok(()) + } +} + +fn calculate_total_scheduled_locks_for_account( + account_id: &T::AccountId, +) -> (BalanceOf, Weight) { + let total = ReleaseSchedules::::get(&account_id) // 1r + .iter() + .map(|schedule: &types::ReleaseSchedule, BalanceOf>| { + schedule.total_amount() + }) + .fold(Zero::zero(), |acc: BalanceOf, amount| { + acc.saturating_add(amount.unwrap_or(Zero::zero())) + }); + + (total, T::DbWeight::get().reads(1)) +} + +#[cfg(test)] +#[cfg(feature = "try-runtime")] +mod test { + use frame_support::traits::{tokens::fungible::InspectFreeze, WithdrawReasons}; + + use super::*; + use crate::mock::{Test, *}; + use pallet_balances::{BalanceLock, Reasons}; + + type MigrationOf = MigrationToV2>; + + #[test] + fn migration_works() { + ExtBuilder::build().execute_with(|| { + assert_eq!(pallet_balances::Pallet::::free_balance(&DAVE), DAVE_BALANCE); + + let schedules = vec![ + // who, start, period, period_count, per_period + (DAVE, 2, 3, 1, 5), + ]; + + create_schedules_and_set_lock(schedules); + + assert_eq!( + pallet_balances::Pallet::::locks(&DAVE) + .iter() + .find(|l| l.id == RELEASE_LOCK_ID), + Some(&BalanceLock { + id: RELEASE_LOCK_ID, + amount: 5u64.into(), + reasons: Reasons::All + }) + ); + + // Run migration. + let state = MigrationOf::::pre_upgrade().unwrap(); + MigrationOf::::on_runtime_upgrade(); + MigrationOf::::post_upgrade(state).unwrap(); + + assert_eq!( + pallet_balances::Pallet::::locks(&DAVE), + vec![], + "Locks should be empty" + ); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &DAVE + ), + 5u64, + "Frozen balance should be 5 for account {:?}", + DAVE + ); + }) + } + + fn create_schedules_and_set_lock(schedules: Vec<(AccountId, u32, u32, u32, u64)>) { + schedules.iter().for_each(|(who, start, period, period_count, per_period)| { + let mut bounded_schedules = ReleaseSchedules::::get(who); + let new_schedule = types::ReleaseSchedule { + start: *start, + period: *period, + period_count: *period_count, + per_period: *per_period, + }; + + bounded_schedules + .try_push(new_schedule.clone()) + .expect("Max release schedules exceeded"); + + let total_amount = bounded_schedules.iter().fold( + Zero::zero(), + |acc_amount: BalanceOf, schedule| { + acc_amount.saturating_add(schedule.total_amount().unwrap_or(Zero::zero())) + }, + ); + + assert_eq!(total_amount, new_schedule.total_amount().unwrap_or(Zero::zero())); + + assert!( + pallet_balances::Pallet::::free_balance(who) >= total_amount, + "Account does not have enough balance" + ); + + pallet_balances::Pallet::::set_lock( + RELEASE_LOCK_ID, + &who, + total_amount, + WithdrawReasons::all(), + ); + + ReleaseSchedules::::insert(who, bounded_schedules); + }); + } +} diff --git a/pallets/time-release/src/mock.rs b/pallets/time-release/src/mock.rs index 7234eea925..3789cbe8f6 100644 --- a/pallets/time-release/src/mock.rs +++ b/pallets/time-release/src/mock.rs @@ -50,9 +50,9 @@ impl pallet_balances::Config for Test { type MaxReserves = (); type ReserveIdentifier = [u8; 8]; type WeightInfo = (); - type FreezeIdentifier = (); + type FreezeIdentifier = RuntimeFreezeReason; + type MaxFreezes = ConstU32<1>; type MaxHolds = ConstU32<0>; - type MaxFreezes = ConstU32<0>; type RuntimeHoldReason = (); } @@ -99,6 +99,8 @@ impl Config for Test { type WeightInfo = (); type MaxReleaseSchedules = ConstU32<50>; type BlockNumberProvider = MockBlockNumberProvider; + type RuntimeFreezeReason = RuntimeFreezeReason; + type Balance = Balance; } type Block = frame_system::mocking::MockBlockU32; @@ -107,7 +109,7 @@ construct_runtime!( pub enum Test { System: frame_system::{Pallet, Call, Storage, Config, Event}, - TimeRelease: pallet_time_release::{Pallet, Storage, Call, Event, Config}, + TimeRelease: pallet_time_release::{Pallet, Storage, Call, Event, Config, FreezeReason}, PalletBalances: pallet_balances::{Pallet, Call, Storage, Config, Event}, } ); @@ -115,9 +117,11 @@ construct_runtime!( pub const ALICE: AccountId = 0; pub const BOB: AccountId = 2; pub const CHARLIE: AccountId = 3; +pub const DAVE: AccountId = 4; pub const ALICE_BALANCE: u64 = 100; pub const CHARLIE_BALANCE: u64 = 50; +pub const DAVE_BALANCE: u64 = 200; #[derive(Default)] pub struct ExtBuilder; @@ -129,7 +133,11 @@ impl ExtBuilder { MockBlockNumberProvider::set(0); pallet_balances::GenesisConfig:: { - balances: vec![(ALICE, ALICE_BALANCE), (CHARLIE, CHARLIE_BALANCE)], + balances: vec![ + (ALICE, ALICE_BALANCE), + (CHARLIE, CHARLIE_BALANCE), + (DAVE, DAVE_BALANCE), + ], } .assimilate_storage(&mut t) .unwrap(); diff --git a/pallets/time-release/src/tests.rs b/pallets/time-release/src/tests.rs index 6b7df0fae3..a3e47d3df0 100644 --- a/pallets/time-release/src/tests.rs +++ b/pallets/time-release/src/tests.rs @@ -1,9 +1,16 @@ //! Unit tests for the time-release module. use super::*; use chrono::{DateTime, Days, Duration, TimeZone, Utc}; -use frame_support::{assert_noop, assert_ok, error::BadOrigin, traits::Imbalance}; +use frame_support::{ + assert_noop, assert_ok, + error::BadOrigin, + traits::{ + fungible::{Inspect, InspectFreeze}, + tokens::Fortitude, + Currency, WithdrawReasons, + }, +}; use mock::*; -use pallet_balances::{BalanceLock, Reasons}; use sp_runtime::{traits::Dispatchable, SaturatedConversion, TokenError}; #[test] @@ -113,8 +120,11 @@ fn add_new_release_schedule_merges_with_current_locked_balance_and_until() { assert_ok!(TimeRelease::transfer(RuntimeOrigin::signed(ALICE), BOB, another_schedule)); assert_eq!( - PalletBalances::locks(&BOB).get(0), - Some(&BalanceLock { id: RELEASE_LOCK_ID, amount: 17u64, reasons: Reasons::All }) + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + 17u64 ); }); } @@ -218,10 +228,16 @@ fn claim_works() { assert!(!ReleaseSchedules::::contains_key(BOB)); assert_ok!(PalletBalances::transfer_allow_death(RuntimeOrigin::signed(BOB), ALICE, 10)); // all used up - assert_eq!(PalletBalances::free_balance(BOB), 0); + assert_eq!(::Currency::balance(&BOB), 0); // no locks anymore - assert_eq!(PalletBalances::locks(&BOB), vec![]); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + 0 + ); }); } @@ -235,8 +251,11 @@ fn claim_for_works() { assert_ok!(TimeRelease::claim_for(RuntimeOrigin::signed(ALICE), BOB)); assert_eq!( - PalletBalances::locks(&BOB).get(0), - Some(&BalanceLock { id: RELEASE_LOCK_ID, amount: 20u64, reasons: Reasons::All }) + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + 20u64 ); assert!(ReleaseSchedules::::contains_key(&BOB)); @@ -245,7 +264,13 @@ fn claim_for_works() { assert_ok!(TimeRelease::claim_for(RuntimeOrigin::signed(ALICE), BOB)); // no locks anymore - assert_eq!(PalletBalances::locks(&BOB), vec![]); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + 0 + ); assert!(!ReleaseSchedules::::contains_key(&BOB)); }); } @@ -276,12 +301,21 @@ fn update_release_schedules_works() { // empty release schedules cleanup the storage and unlock the fund assert!(ReleaseSchedules::::contains_key(BOB)); assert_eq!( - PalletBalances::locks(&BOB).get(0), - Some(&BalanceLock { id: RELEASE_LOCK_ID, amount: 10u64, reasons: Reasons::All }) + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + 10u64 ); assert_ok!(TimeRelease::update_release_schedules(RuntimeOrigin::root(), BOB, vec![])); assert!(!ReleaseSchedules::::contains_key(BOB)); - assert_eq!(PalletBalances::locks(&BOB), vec![]); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + 0 + ); }); } @@ -289,7 +323,11 @@ fn update_release_schedules_works() { fn update_release_schedules_fails_if_unexpected_existing_locks() { ExtBuilder::build().execute_with(|| { assert_ok!(PalletBalances::transfer_allow_death(RuntimeOrigin::signed(ALICE), BOB, 1)); - PalletBalances::set_lock(*b"prelocks", &BOB, 0u64, WithdrawReasons::all()); + let _ = ::Currency::set_freeze( + &FreezeReason::TimeReleaseVesting.into(), + &BOB, + 0u64, + ); }); } @@ -330,7 +368,13 @@ fn multiple_release_schedule_claim_works() { assert!(!ReleaseSchedules::::contains_key(&BOB)); - assert_eq!(PalletBalances::locks(&BOB), vec![]); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + 0 + ); }); } @@ -380,19 +424,28 @@ fn cliff_release_works() { per_period: VESTING_AMOUNT, }; - let balance_lock = - BalanceLock { id: RELEASE_LOCK_ID, amount: VESTING_AMOUNT, reasons: Reasons::All }; - - assert_eq!(PalletBalances::free_balance(BOB), 0); + assert_eq!(::Currency::balance(&BOB), 0); assert_ok!(TimeRelease::transfer(RuntimeOrigin::signed(ALICE), BOB, cliff_schedule)); - assert_eq!(PalletBalances::free_balance(BOB), VESTING_AMOUNT); - assert_eq!(PalletBalances::locks(&BOB), vec![balance_lock.clone()]); + assert_eq!(::Currency::balance(&BOB), VESTING_AMOUNT); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + VESTING_AMOUNT + ); for i in 1..VESTING_PERIOD { MockBlockNumberProvider::set(i); assert_ok!(TimeRelease::claim(RuntimeOrigin::signed(BOB))); - assert_eq!(PalletBalances::free_balance(BOB), VESTING_AMOUNT); - assert_eq!(PalletBalances::locks(&BOB), vec![balance_lock.clone()]); + assert_eq!(::Currency::balance(&BOB), VESTING_AMOUNT); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + VESTING_AMOUNT + ); assert_noop!( PalletBalances::transfer_allow_death( RuntimeOrigin::signed(BOB), @@ -405,7 +458,13 @@ fn cliff_release_works() { MockBlockNumberProvider::set(VESTING_PERIOD); assert_ok!(TimeRelease::claim(RuntimeOrigin::signed(BOB))); - assert!(PalletBalances::locks(&BOB).is_empty()); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + 0 + ); assert_ok!(PalletBalances::transfer_allow_death( RuntimeOrigin::signed(BOB), CHARLIE, @@ -454,19 +513,45 @@ fn alice_time_releases_schedule() { // Bob starts with zero balance and zero locks. assert_eq!(get_balance::(&BOB), 0); - assert!(PalletBalances::locks(&BOB).is_empty()); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + 0 + ); // Time release transfer is initiated by Alice to Bob. As a result, Bobs free-balance // increases by the total amount scheduled to be time-released. // However, it cannot spent because a lock is put on the balance. assert_ok!(TimeRelease::transfer(RuntimeOrigin::signed(ALICE), BOB, schedule)); assert_eq!(get_balance::(&BOB), 24_996); - assert_eq!(PalletBalances::locks(&BOB).len(), 1usize); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + 24996 + ); + assert_eq!( + ::Currency::reducible_balance( + &BOB, + Preservation::Expendable, + Fortitude::Polite + ), + 0 + ); // Bob naively attempts to claim the transfer before the scheduled release date // and nothing happens because the schedule release has yet to start. assert_ok!(TimeRelease::claim(RuntimeOrigin::signed(BOB))); - assert_eq!(PalletBalances::locks(&BOB).first().unwrap().amount, 24_996); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + 24_996 + ); let time_release_transfer_data: Vec<(DateTime, _)> = time_release_transfers_data::(); @@ -494,7 +579,13 @@ fn alice_time_releases_schedule() { // Doing a claim does not do anything assert_ok!(TimeRelease::claim(RuntimeOrigin::signed(BOB))); // Since the first issuance the total amount locked increases by the new transfers: 24_996; - assert_eq!(PalletBalances::locks(&BOB).first().unwrap().amount, total_locked); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + total_locked + ); let july_2024_sept_2024: Vec> = vec![ Utc.with_ymd_and_hms(2024, 7, 1, 0, 0, 0).unwrap(), @@ -509,7 +600,13 @@ fn alice_time_releases_schedule() { MockBlockNumberProvider::set(date_to_approximate_block_number(month.clone()).into()); assert_ok!(TimeRelease::claim(RuntimeOrigin::signed(BOB))); total_locked -= 4_166 as u64; - assert_eq!(PalletBalances::locks(&BOB).first().unwrap().amount, total_locked); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + total_locked + ); } // quarter-6: time-release transfer AND monthly claim @@ -530,7 +627,13 @@ fn alice_time_releases_schedule() { // new transfer_total - one_month_of_time_release total_locked += total_transfered; total_locked -= 4_166; - assert_eq!(PalletBalances::locks(&BOB).first().unwrap().amount, total_locked); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + total_locked + ); // quarter-7-12: time-release transfer AND monthly claim let jan_2025_to_april_2026_quarterly_data = &time_release_transfer_data[6..]; @@ -557,18 +660,23 @@ fn alice_time_releases_schedule() { .into(), ); assert_ok!(TimeRelease::claim(RuntimeOrigin::signed(BOB))); - assert_eq!(PalletBalances::locks(&BOB).first(), None); + assert_eq!( + ::Currency::balance_frozen( + &FreezeReason::TimeReleaseVesting.into(), + &BOB + ), + 0 + ); }); } fn get_balance(who: &T::AccountId) -> BalanceOf { - T::Currency::free_balance(who) + T::Currency::balance(who) } fn set_balance(who: &T::AccountId, balance: BalanceOf) { - let deposit_result = T::Currency::deposit_creating(who, balance.saturated_into()); - let actual_deposit = deposit_result.peek(); - assert_eq!(balance, actual_deposit); + let actual_deposit = T::Currency::mint_into(&who, balance.saturated_into()); + assert_eq!(balance, actual_deposit.unwrap()); } fn build_time_release_schedule( diff --git a/runtime/common/src/constants.rs b/runtime/common/src/constants.rs index c039b939fb..c59bc7b099 100644 --- a/runtime/common/src/constants.rs +++ b/runtime/common/src/constants.rs @@ -68,6 +68,7 @@ pub const MAXIMUM_BLOCK_WEIGHT: Weight = Weight::from_parts(WEIGHT_REF_TIME_PER_ .saturating_div(2) .set_proof_size(cumulus_primitives_core::relay_chain::MAX_POV_SIZE as u64); pub type ZERO = ConstU32<0>; +pub type TWO = ConstU32<2>; pub type FIFTY = ConstU32<50>; pub type HUNDRED = ConstU32<100>; @@ -135,7 +136,8 @@ pub type AuthorshipUncleGenerations = ZERO; // --- Balances Pallet --- pub type BalancesMaxLocks = FIFTY; pub type BalancesMaxReserves = FIFTY; -// -end- Balances Pallet --- +pub type BalancesMaxFreezes = TWO; // capacity + time-release + // -end- Balances Pallet --- // --- Scheduler Pallet --- pub type SchedulerMaxScheduledPerBlock = FIFTY; diff --git a/runtime/common/src/extensions/check_nonce.rs b/runtime/common/src/extensions/check_nonce.rs index 627215245c..9dcede2a04 100644 --- a/runtime/common/src/extensions/check_nonce.rs +++ b/runtime/common/src/extensions/check_nonce.rs @@ -98,11 +98,18 @@ where .into()) } + // Is this an existing account? + // extracted from the conditions in which an account gets reaped + // https://github.com/paritytech/polkadot-sdk/commit/e993f884fc00f359dd8bf9c81422c5161f3447b5#diff-dff2afa7433478e36eb66a9fe319efe28cfbdf95104b30b03afa0a1c4e3239f3R1082 + let existing_account = + account.providers > 0 || account.consumers > 0 || account.sufficients > 0; + // Increment account nonce by 1 account.nonce += T::Nonce::one(); - // Only create or update the token account if the caller is paying - if info.pays_fee == Pays::Yes { + // Only create or update the token account if the caller is paying or + // account already exists + if info.pays_fee == Pays::Yes || existing_account { frame_system::Account::::insert(who, account); } diff --git a/runtime/frequency/src/lib.rs b/runtime/frequency/src/lib.rs index 1af8603e70..d278f310f8 100644 --- a/runtime/frequency/src/lib.rs +++ b/runtime/frequency/src/lib.rs @@ -25,13 +25,7 @@ use sp_version::NativeVersion; use sp_version::RuntimeVersion; use common_primitives::{ - handles::*, - messages::*, - msa::*, - node::*, - rpc::RpcEvent, - schema::{PayloadLocation, SchemaId, SchemaResponse}, - stateful_storage::*, + handles::*, messages::*, msa::*, node::*, rpc::RpcEvent, schema::*, stateful_storage::*, }; pub use common_runtime::{ @@ -139,6 +133,7 @@ impl Contains for BaseCallFilter { RuntimeCall::Msa(pallet_msa::Call::create_provider { .. }) => false, RuntimeCall::Schemas(pallet_schemas::Call::create_schema { .. }) => false, RuntimeCall::Schemas(pallet_schemas::Call::create_schema_v2 { .. }) => false, + RuntimeCall::Schemas(pallet_schemas::Call::create_schema_v3 { .. }) => false, // Everything else is allowed on Mainnet _ => true, } @@ -170,6 +165,7 @@ impl BaseCallFilter { RuntimeCall::Msa(pallet_msa::Call::create_provider { .. }) | RuntimeCall::Schemas(pallet_schemas::Call::create_schema { .. }) | RuntimeCall::Schemas(pallet_schemas::Call::create_schema_v2 { .. }) => false, + RuntimeCall::Schemas(pallet_schemas::Call::create_schema_v3 { .. }) => false, // Block `Pays::No` calls from utility batch _ if Self::is_pays_no_call(call) => false, @@ -221,8 +217,13 @@ pub type Executive = frame_executive::Executive< Runtime, AllPalletsWithSystem, ( - pallet_messages::migration::v2::MigrateToV2, - pallet_schemas::migration::v2::MigrateToV2, + pallet_capacity::migration::v2::MigrateToV2, + pallet_capacity::migration::v3::MigrationToV3>, + pallet_schemas::migration::v3::MigrateToV3, + pallet_time_release::migration::v2::MigrationToV2< + Runtime, + pallet_balances::Pallet, + >, ), >; @@ -261,7 +262,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("frequency"), impl_name: create_runtime_str!("frequency"), authoring_version: 1, - spec_version: 64, + spec_version: 67, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 1, @@ -275,7 +276,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("frequency-rococo"), impl_name: create_runtime_str!("frequency"), authoring_version: 1, - spec_version: 64, + spec_version: 67, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 1, @@ -417,6 +418,7 @@ impl pallet_capacity::Config for Runtime { type MaxEpochLength = CapacityMaxEpochLength; type EpochNumber = u32; type CapacityPerToken = CapacityPerToken; + type RuntimeFreezeReason = RuntimeFreezeReason; } impl pallet_schemas::Config for Runtime { @@ -466,6 +468,7 @@ pub type MaxReleaseSchedules = ConstU32<{ MAX_RELEASE_SCHEDULES }>; // the descriptions of these configs. impl pallet_time_release::Config for Runtime { type RuntimeEvent = RuntimeEvent; + type Balance = Balance; type Currency = Balances; type MinReleaseTransfer = MinReleaseTransfer; type TransferOrigin = EnsureSigned; @@ -475,6 +478,7 @@ impl pallet_time_release::Config for Runtime { type BlockNumberProvider = RelaychainDataProvider; #[cfg(feature = "frequency-no-relay")] type BlockNumberProvider = System; + type RuntimeFreezeReason = RuntimeFreezeReason; } // See https://paritytech.github.io/substrate/master/pallet_timestamp/index.html for @@ -507,9 +511,9 @@ impl pallet_balances::Config for Runtime { type MaxReserves = BalancesMaxReserves; type ReserveIdentifier = [u8; 8]; type MaxHolds = ConstU32<0>; - type MaxFreezes = ConstU32<0>; + type MaxFreezes = BalancesMaxFreezes; type RuntimeHoldReason = RuntimeHoldReason; - type FreezeIdentifier = (); + type FreezeIdentifier = RuntimeFreezeReason; } // Needs parameter_types! for the Weight type parameter_types! { @@ -1049,14 +1053,14 @@ construct_runtime!( Multisig: pallet_multisig::{Pallet, Call, Storage, Event} = 30, // FRQC Update - TimeRelease: pallet_time_release::{Pallet, Call, Storage, Event, Config} = 40, + TimeRelease: pallet_time_release::{Pallet, Call, Storage, Event, Config, FreezeReason} = 40, // Frequency related pallets Msa: pallet_msa::{Pallet, Call, Storage, Event} = 60, Messages: pallet_messages::{Pallet, Call, Storage, Event} = 61, Schemas: pallet_schemas::{Pallet, Call, Storage, Event, Config} = 62, StatefulStorage: pallet_stateful_storage::{Pallet, Call, Storage, Event} = 63, - Capacity: pallet_capacity::{Pallet, Call, Storage, Event} = 64, + Capacity: pallet_capacity::{Pallet, Call, Storage, Event, FreezeReason} = 64, FrequencyTxPayment: pallet_frequency_tx_payment::{Pallet, Call, Event} = 65, Handles: pallet_handles::{Pallet, Call, Storage, Event} = 66, } @@ -1265,6 +1269,10 @@ impl_runtime_apis! { fn get_by_schema_id(schema_id: SchemaId) -> Option { Schemas::get_schema_by_id(schema_id) } + + fn get_schema_versions_by_name(schema_name: Vec) -> Option> { + Schemas::get_schema_versions(schema_name) + } } impl system_runtime_api::AdditionalRuntimeApi for Runtime { diff --git a/scripts/upgrade_accounts.py b/scripts/upgrade_accounts.py new file mode 100644 index 0000000000..1b304e33db --- /dev/null +++ b/scripts/upgrade_accounts.py @@ -0,0 +1,99 @@ +""" +This script is used to upgrade accounts to the new balance storage scheme +introduced in https://github.com/paritytech/substrate/pull/12951 + +Install the dependency https://github.com/polkascan/py-substrate-interface like: + pip install substrate-interface +Then run it: + python3 upgrade-accounts.py +""" + +import json +import os +from substrateinterface import SubstrateInterface, Keypair +from substrateinterface.exceptions import SubstrateRequestException + +chain = SubstrateInterface( + url="wss://rpc.rococo.frequency.xyz", + # Using the public endpoint can get you rate-limited. + # url="wss://kusama-rpc.polkadot.io", + # These Parity internals are not limited. + # url="wss://polkadot-try-runtime-node.parity-chains.parity.io:443" +) + +print(f"Connected to {chain.name}: {chain.chain} v{chain.version}") + +sender_uri = os.getenv('SENDER_URI', '//Alice') +sender = Keypair.create_from_uri(sender_uri) +print(f"Using sender account {sender.ss58_address}") + + +def main(): + """ + […] run though all accounts with reserved/locked funds on the system and call a + particular transaction on them + """ + accounts = [] + account_query = chain.query_map('System', 'Account', page_size=1000) + + NEW_LOGIC_FLAG = 0x80000000_00000000_00000000_00000000 + + for (i, (id, info)) in enumerate(account_query): + account = info['data'] + flags = account['flags'].decode() + + if flags & NEW_LOGIC_FLAG == 0: + accounts.append(id.value) + + if i % 5000 == 0 and i > 0: + percent = round((100 * len(accounts)) / (i + 1), 2) + print( + f"Checked {i} accounts; {len(accounts)} ({percent} %) are eligible for upgrade") + + print(f"Found {len(accounts)} eligible accounts in total") + + out_file = f"upgradable-accs-{chain.chain}.json" + with open(out_file, 'w') as f: + json.dump(accounts, f) + print(f"Wrote accounts to '{out_file}'") + + # How many accounts each call should upgrade. + accs_per_call = 1024 + weight_second = 1e12 + decimals = chain.token_decimals or 0 + + for (i, chunk) in enumerate(chunks(accounts, accs_per_call)): + call = chain.compose_call( + call_module='Balances', + call_function='upgrade_accounts', + call_params={ + 'who': chunk, + } + ) + extrinsic = chain.create_signed_extrinsic(call=call, keypair=sender) + print(f"Extrinsic {i + 1}: upgrading {len(chunk)} accounts") + + try: + receipt = chain.submit_extrinsic( + extrinsic, wait_for_inclusion=True) + print(f"Extrinsic included in block {receipt.block_hash}: " + f"consumed {receipt.weight['ref_time'] / weight_second} seconds of weight and " + f"paid {(receipt.total_fee_amount or 0) / 10**decimals} {chain.token_symbol}") + if len(receipt.triggered_events) < len(chunk): + print( + f"!! Emitted fewer events than expected: {len(receipt.triggered_events)} < {len(chunk)}") + except SubstrateRequestException as e: + print(f"Failed to submit extrinsic: {e}") + raise e + + +def chunks(list, n): + """ + Lazily split 'list' into 'n'-sized chunks. + """ + for i in range(0, len(list), n): + yield list[i:i + n] + + +if __name__ == "__main__": + main()