From 5394912cc50cf6135306600f5130606ab3f8d9e2 Mon Sep 17 00:00:00 2001 From: girazoki Date: Wed, 7 Aug 2024 10:14:25 +0200 Subject: [PATCH] Core assignation wired to collatorAssignment (#629) * first try * assign first cores to parachains, rest to parathreads * zombie starlight * assignation * fix moonwall * swap order of workers * let's fix this * try to generate genesis containers * keep advancing * finally working * FMT for now * zepter and toml-maid * toml-maid again * fix * strcut doc * more fixes * clippy * pnpm lock * wip * wip * more wip * fmt * wip of wip * wip * add first two tests regarding core-scheduling * yet another test * parathread affinity working * toml maid * fmt * fix quite a few stuff * FMT * fix tanssi relay test * fix clippy * fix clippy * FMT more * fmt * fixes * fixes * pr feedback * adapt to parathreadS * register parathreads on genesis in tests * fmt * fixes * add way to retrieve key * tests required by PR review * more comments * better comments * fmt --- Cargo.lock | 4 + pallets/registrar/src/lib.rs | 1 + pnpm-lock.yaml | 2144 ++++++----------- solo-chains/client/cli/src/cli.rs | 38 +- solo-chains/client/cli/src/command.rs | 124 +- .../node/tanssi-relay-service/Cargo.toml | 4 + .../tanssi-relay-service/src/chain_spec.rs | 74 +- solo-chains/runtime/starlight/Cargo.toml | 4 + .../starlight/src/genesis_config_presets.rs | 135 +- solo-chains/runtime/starlight/src/lib.rs | 122 +- .../src/tests/collator_assignment_tests.rs | 41 +- .../runtime/starlight/src/tests/common/mod.rs | 533 +++- .../src/tests/core_scheduling_tests.rs | 728 ++++++ .../runtime/starlight/src/tests/mod.rs | 1 + .../starlight/src/tests/session_keys.rs | 5 +- test/configs/zombieStarlight.json | 35 +- test/moonwall.config.json | 4 +- test/package.json | 2 +- ...-spec-starlight-plus-dancebox-container.sh | 25 + 19 files changed, 2367 insertions(+), 1657 deletions(-) create mode 100644 solo-chains/runtime/starlight/src/tests/core_scheduling_tests.rs create mode 100755 test/scripts/build-spec-starlight-plus-dancebox-container.sh diff --git a/Cargo.lock b/Cargo.lock index b39894cb5..274fffc74 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -16227,6 +16227,7 @@ dependencies = [ "cumulus-pallet-parachain-system", "cumulus-primitives-core", "dp-consensus", + "dp-container-chain-genesis-data", "frame-benchmarking", "frame-executive", "frame-remote-externalities", @@ -16313,6 +16314,7 @@ dependencies = [ "sp-inherents", "sp-io", "sp-keyring", + "sp-keystore", "sp-mmr-primitives", "sp-offchain", "sp-runtime", @@ -16960,6 +16962,8 @@ dependencies = [ "async-io 1.13.0", "async-trait", "bitvec", + "cumulus-primitives-core", + "dp-container-chain-genesis-data", "env_logger 0.11.3", "frame-benchmarking", "frame-benchmarking-cli", diff --git a/pallets/registrar/src/lib.rs b/pallets/registrar/src/lib.rs index eb0452b9a..8a8fe8104 100644 --- a/pallets/registrar/src/lib.rs +++ b/pallets/registrar/src/lib.rs @@ -86,6 +86,7 @@ pub mod pallet { ContainerChainGenesisData, Option, )>, + #[serde(skip)] pub phantom: PhantomData, } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c3319cbc8..039c22c14 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,11 +6,20 @@ settings: importers: + .: + dependencies: + api-augment:0.400.0: + specifier: link:@tanssi/api-augment:0.400.0 + version: link:@tanssi/api-augment:0.400.0 + api-augment:latest: + specifier: link:@tanssi/api-augment:latest + version: link:@tanssi/api-augment:latest + test: dependencies: '@zombienet/orchestrator': - specifier: 0.0.86 - version: 0.0.86(@polkadot/util@13.0.2)(@types/node@20.11.30) + specifier: 0.0.87 + version: 0.0.87(@polkadot/util@13.0.2)(@types/node@20.11.30) inquirer: specifier: 9.2.16 version: 9.2.16 @@ -80,7 +89,7 @@ importers: version: 5.3.0 debug: specifier: 4.3.4 - version: 4.3.4(supports-color@8.1.1) + version: 4.3.4 eslint: specifier: 8.56.0 version: 8.56.0 @@ -125,50 +134,50 @@ importers: dependencies: '@polkadot/api': specifier: ^11.2.1 - version: 11.2.1 + version: 11.3.1 '@polkadot/api-augment': specifier: ^11.2.1 - version: 11.2.1 + version: 11.3.1 '@polkadot/api-base': specifier: ^11.2.1 - version: 11.2.1 + version: 11.3.1 '@polkadot/api-derive': specifier: ^11.2.1 - version: 11.2.1 + version: 11.3.1 '@polkadot/rpc-augment': specifier: ^11.2.1 - version: 11.2.1 + version: 11.3.1 '@polkadot/rpc-core': specifier: ^11.2.1 - version: 11.2.1 + version: 11.3.1 '@polkadot/rpc-provider': specifier: ^11.2.1 - version: 11.2.1 + version: 11.3.1 '@polkadot/types': specifier: ^11.2.1 - version: 11.2.1 + version: 11.3.1 '@polkadot/types-augment': specifier: ^11.2.1 - version: 11.2.1 + version: 11.3.1 '@polkadot/types-codec': specifier: ^11.2.1 - version: 11.2.1 + version: 11.3.1 '@polkadot/types-create': specifier: ^11.2.1 - version: 11.2.1 + version: 11.3.1 '@polkadot/types-known': specifier: ^11.2.1 - version: 11.2.1 + version: 11.3.1 '@polkadot/types-support': specifier: ^11.2.1 - version: 11.2.1 + version: 11.3.1 chalk: specifier: ^5.3.0 version: 5.3.0 devDependencies: '@polkadot/typegen': specifier: ^11.2.1 - version: 11.2.1 + version: 11.3.1 prettier: specifier: ^2.8.8 version: 2.8.8 @@ -177,39 +186,34 @@ importers: version: 0.3.38(prettier@2.8.8) rimraf: specifier: ^5.0.5 - version: 5.0.5 + version: 5.0.9 tsx: specifier: ^4.7.0 - version: 4.7.0 + version: 4.7.1 typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.2 packages: - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - dev: true - /@acala-network/chopsticks-core@0.11.0: resolution: {integrity: sha512-3+ensuinkesviDh2EI97XUv/M2gOAovUdOGQEeB/xC3ynNBP0t9zVi39C+L9fuW0PGjr2bqZlM30JXI0VQVXqA==} dependencies: '@acala-network/chopsticks-executor': 0.11.0 - '@polkadot/rpc-provider': 10.12.4 + '@polkadot/rpc-provider': 10.13.1 '@polkadot/types': 10.13.1 '@polkadot/types-codec': 10.13.1 - '@polkadot/types-known': 10.12.4 + '@polkadot/types-known': 10.13.1 '@polkadot/util': 12.6.2 '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) comlink: 4.4.1 eventemitter3: 5.0.1 lodash: 4.17.21 - lru-cache: 10.2.0 - pino: 8.19.0 - pino-pretty: 11.1.0 + lru-cache: 10.4.3 + pino: 8.21.0 + pino-pretty: 11.2.1 rxjs: 7.8.1 - zod: 3.22.4 + zod: 3.23.8 transitivePeerDependencies: - bufferutil - supports-color @@ -265,15 +269,15 @@ packages: '@polkadot/types': 10.13.1 '@polkadot/util': 12.6.2 '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) - axios: 1.6.8(debug@4.3.4) + axios: 1.7.2(debug@4.3.4) dotenv: 16.4.5 global-agent: 3.0.0 js-yaml: 4.1.0 jsondiffpatch: 0.5.0 lodash: 4.17.21 - ws: 8.16.0 + ws: 8.18.0 yargs: 17.7.2 - zod: 3.22.4 + zod: 3.23.8 transitivePeerDependencies: - '@google-cloud/spanner' - '@sap/hana-client' @@ -352,15 +356,6 @@ packages: dependencies: '@jridgewell/trace-mapping': 0.3.9 - /@esbuild/aix-ppc64@0.19.10: - resolution: {integrity: sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - dev: true - optional: true - /@esbuild/aix-ppc64@0.19.12: resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -370,8 +365,8 @@ packages: dev: true optional: true - /@esbuild/aix-ppc64@0.20.2: - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + /@esbuild/aix-ppc64@0.21.5: + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] @@ -379,15 +374,6 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.19.10: - resolution: {integrity: sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.19.12: resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} @@ -397,8 +383,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.20.2: - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + /@esbuild/android-arm64@0.21.5: + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -406,15 +392,6 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.19.10: - resolution: {integrity: sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.19.12: resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} @@ -424,8 +401,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.20.2: - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + /@esbuild/android-arm@0.21.5: + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -433,15 +410,6 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.19.10: - resolution: {integrity: sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.19.12: resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} @@ -451,8 +419,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.20.2: - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + /@esbuild/android-x64@0.21.5: + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -460,15 +428,6 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.19.10: - resolution: {integrity: sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.19.12: resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} @@ -478,8 +437,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.20.2: - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + /@esbuild/darwin-arm64@0.21.5: + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -487,15 +446,6 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.10: - resolution: {integrity: sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.19.12: resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} @@ -505,8 +455,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.20.2: - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + /@esbuild/darwin-x64@0.21.5: + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -514,15 +464,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.19.10: - resolution: {integrity: sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.19.12: resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} @@ -532,8 +473,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.20.2: - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + /@esbuild/freebsd-arm64@0.21.5: + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -541,15 +482,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.19.10: - resolution: {integrity: sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.19.12: resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} @@ -559,8 +491,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.20.2: - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + /@esbuild/freebsd-x64@0.21.5: + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -568,15 +500,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.19.10: - resolution: {integrity: sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.19.12: resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} @@ -586,8 +509,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.20.2: - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + /@esbuild/linux-arm64@0.21.5: + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -595,15 +518,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.19.10: - resolution: {integrity: sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.19.12: resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} @@ -613,8 +527,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.20.2: - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + /@esbuild/linux-arm@0.21.5: + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -622,15 +536,6 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.19.10: - resolution: {integrity: sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.19.12: resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} @@ -640,8 +545,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.20.2: - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + /@esbuild/linux-ia32@0.21.5: + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -649,15 +554,6 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.19.10: - resolution: {integrity: sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.19.12: resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} @@ -667,8 +563,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.20.2: - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + /@esbuild/linux-loong64@0.21.5: + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -676,15 +572,6 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.19.10: - resolution: {integrity: sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.19.12: resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} @@ -694,8 +581,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.20.2: - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + /@esbuild/linux-mips64el@0.21.5: + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -703,15 +590,6 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.19.10: - resolution: {integrity: sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.19.12: resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} @@ -721,8 +599,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.20.2: - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + /@esbuild/linux-ppc64@0.21.5: + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -730,15 +608,6 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.19.10: - resolution: {integrity: sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.19.12: resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} @@ -748,8 +617,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.20.2: - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + /@esbuild/linux-riscv64@0.21.5: + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -757,15 +626,6 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.19.10: - resolution: {integrity: sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.19.12: resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} @@ -775,8 +635,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.20.2: - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + /@esbuild/linux-s390x@0.21.5: + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -784,15 +644,6 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.19.10: - resolution: {integrity: sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.19.12: resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} @@ -802,8 +653,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.20.2: - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + /@esbuild/linux-x64@0.21.5: + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -811,15 +662,6 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.19.10: - resolution: {integrity: sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.19.12: resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} @@ -829,8 +671,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.20.2: - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + /@esbuild/netbsd-x64@0.21.5: + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -838,15 +680,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.19.10: - resolution: {integrity: sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.19.12: resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} @@ -856,8 +689,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.20.2: - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + /@esbuild/openbsd-x64@0.21.5: + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -865,15 +698,6 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.19.10: - resolution: {integrity: sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.19.12: resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} @@ -883,8 +707,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.20.2: - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + /@esbuild/sunos-x64@0.21.5: + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -892,15 +716,6 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.19.10: - resolution: {integrity: sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.19.12: resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} @@ -910,8 +725,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.20.2: - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + /@esbuild/win32-arm64@0.21.5: + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -919,15 +734,6 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.19.10: - resolution: {integrity: sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.19.12: resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} @@ -937,8 +743,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.20.2: - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + /@esbuild/win32-ia32@0.21.5: + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -946,15 +752,6 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.19.10: - resolution: {integrity: sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.19.12: resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} @@ -964,8 +761,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.20.2: - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + /@esbuild/win32-x64@0.21.5: + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -983,8 +780,8 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.8.0: - resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} + /@eslint-community/regexpp@4.11.0: + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -993,10 +790,10 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 espree: 9.6.1 - globals: 13.21.0 - ignore: 5.2.4 + globals: 13.24.0 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -1028,12 +825,13 @@ packages: dev: true optional: true - /@humanwhocodes/config-array@0.11.13: - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead dependencies: - '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4(supports-color@8.1.1) + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -1044,12 +842,13 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.1: - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead dev: true - /@inquirer/figures@1.0.4: - resolution: {integrity: sha512-R7Gsg6elpuqdn55fBH2y9oYzrU/yKrSmIsDX4ROT51vohrECFzTf2zw9BfUbOW8xjfmM2QbVoVYdTwhrtEKWSQ==} + /@inquirer/figures@1.0.5: + resolution: {integrity: sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==} engines: {node: '>=18'} dev: true @@ -1072,22 +871,18 @@ packages: '@sinclair/typebox': 0.27.8 dev: true - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/sourcemap-codec@1.5.0: resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - dev: true /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 /@ljharb/through@2.3.13: resolution: {integrity: sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==} @@ -1143,7 +938,7 @@ packages: semver: 7.6.2 viem: 2.17.3(typescript@5.4.2) vitest: 1.4.0(@types/node@20.11.30)(@vitest/ui@1.4.0) - vue: 3.4.32(typescript@5.4.2) + vue: 3.4.33(typescript@5.4.2) web3: 4.10.0(typescript@5.4.2) web3-providers-ws: 4.0.7 ws: 8.18.0 @@ -1247,12 +1042,6 @@ packages: '@noble/hashes': 1.3.2 dev: true - /@noble/curves@1.3.0: - resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} - dependencies: - '@noble/hashes': 1.3.3 - dev: true - /@noble/curves@1.4.0: resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} dependencies: @@ -1272,15 +1061,9 @@ packages: engines: {node: '>= 16'} dev: true - /@noble/hashes@1.3.3: - resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} - engines: {node: '>= 16'} - dev: true - /@noble/hashes@1.4.0: resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} - requiresBuild: true /@noble/secp256k1@1.7.1: resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} @@ -1303,7 +1086,7 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 + fastq: 1.17.1 dev: true /@npmcli/fs@1.1.1: @@ -1531,7 +1314,7 @@ packages: dependencies: '@noble/hashes': 1.4.0 '@polkadot-api/utils': 0.0.1 - '@scure/base': 1.1.5 + '@scure/base': 1.1.7 scale-ts: 1.6.0 optional: true @@ -1585,17 +1368,17 @@ packages: - utf-8-validate dev: true - /@polkadot/api-augment@11.2.1: - resolution: {integrity: sha512-Huo457lCqeavbrf1O/2qQYGNFWURLXndW4vNkj8AP+I757WIqebhc6K3+mz+KoV1aTsX/qwaiEgeoTjrrIwcqA==} + /@polkadot/api-augment@11.3.1: + resolution: {integrity: sha512-Yj+6rb6h0WwY3yJ+UGhjGW+tyMRFUMsKQuGw+eFsXdjiNU9UoXsAqA2dG7Q1F+oeX/g+y2gLGBezNoCwbl6HfA==} engines: {node: '>=18'} dependencies: - '@polkadot/api-base': 11.2.1 - '@polkadot/rpc-augment': 11.2.1 - '@polkadot/types': 11.2.1 - '@polkadot/types-augment': 11.2.1 - '@polkadot/types-codec': 11.2.1 + '@polkadot/api-base': 11.3.1 + '@polkadot/rpc-augment': 11.3.1 + '@polkadot/types': 11.3.1 + '@polkadot/types-augment': 11.3.1 + '@polkadot/types-codec': 11.3.1 '@polkadot/util': 12.6.2 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - bufferutil - supports-color @@ -1650,15 +1433,15 @@ packages: - utf-8-validate dev: true - /@polkadot/api-base@11.2.1: - resolution: {integrity: sha512-lVYTHQf8S4rpOJ9d1jvQjviHLE6zljl13vmgs+gXHGJwMAqhhNwKY3ZMQW/u/bRE2uKk0cAlahtsRtiFpjHAfw==} + /@polkadot/api-base@11.3.1: + resolution: {integrity: sha512-b8UkNL00NN7+3QaLCwL5cKg+7YchHoKCAhwKusWHNBZkkO6Oo2BWilu0dZkPJOyqV9P389Kbd9+oH+SKs9u2VQ==} engines: {node: '>=18'} dependencies: - '@polkadot/rpc-core': 11.2.1 - '@polkadot/types': 11.2.1 + '@polkadot/rpc-core': 11.3.1 + '@polkadot/types': 11.3.1 '@polkadot/util': 12.6.2 rxjs: 7.8.1 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - bufferutil - supports-color @@ -1694,20 +1477,20 @@ packages: - utf-8-validate dev: true - /@polkadot/api-derive@11.2.1: - resolution: {integrity: sha512-ts6D6tXmvhBpHDT7E03TStXfG6+/bXCvJ7HZUVNDXi4P9cToClzJVOX5uKsPI5/MUYDEq13scxPyQK63m8SsHg==} + /@polkadot/api-derive@11.3.1: + resolution: {integrity: sha512-9dopzrh4cRuft1nANmBvMY/hEhFDu0VICMTOGxQLOl8NMfcOFPTLAN0JhSBUoicGZhV+c4vpv01NBx/7/IL1HA==} engines: {node: '>=18'} dependencies: - '@polkadot/api': 11.2.1 - '@polkadot/api-augment': 11.2.1 - '@polkadot/api-base': 11.2.1 - '@polkadot/rpc-core': 11.2.1 - '@polkadot/types': 11.2.1 - '@polkadot/types-codec': 11.2.1 + '@polkadot/api': 11.3.1 + '@polkadot/api-augment': 11.3.1 + '@polkadot/api-base': 11.3.1 + '@polkadot/rpc-core': 11.3.1 + '@polkadot/types': 11.3.1 + '@polkadot/types-codec': 11.3.1 '@polkadot/util': 12.6.2 '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) rxjs: 7.8.1 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - bufferutil - supports-color @@ -1753,27 +1536,27 @@ packages: - utf-8-validate dev: true - /@polkadot/api@11.2.1: - resolution: {integrity: sha512-NwcWadMt+mrJ3T7RuwpnaIYtH4x0eix+GiKRtLMtIO32uAfhwVyMnqvLtxDxa4XDJ/es2rtSMYG+t0b1BTM+xQ==} + /@polkadot/api@11.3.1: + resolution: {integrity: sha512-q4kFIIHTLvKxM24b0Eo8hJevsPMme+aITJGrDML9BgdZYTRN14+cu5nXiCsQvaEamdyYj+uCXWe2OV9X7pPxsA==} engines: {node: '>=18'} dependencies: - '@polkadot/api-augment': 11.2.1 - '@polkadot/api-base': 11.2.1 - '@polkadot/api-derive': 11.2.1 + '@polkadot/api-augment': 11.3.1 + '@polkadot/api-base': 11.3.1 + '@polkadot/api-derive': 11.3.1 '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) - '@polkadot/rpc-augment': 11.2.1 - '@polkadot/rpc-core': 11.2.1 - '@polkadot/rpc-provider': 11.2.1 - '@polkadot/types': 11.2.1 - '@polkadot/types-augment': 11.2.1 - '@polkadot/types-codec': 11.2.1 - '@polkadot/types-create': 11.2.1 - '@polkadot/types-known': 11.2.1 + '@polkadot/rpc-augment': 11.3.1 + '@polkadot/rpc-core': 11.3.1 + '@polkadot/rpc-provider': 11.3.1 + '@polkadot/types': 11.3.1 + '@polkadot/types-augment': 11.3.1 + '@polkadot/types-codec': 11.3.1 + '@polkadot/types-create': 11.3.1 + '@polkadot/types-known': 11.3.1 '@polkadot/util': 12.6.2 '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) eventemitter3: 5.0.1 rxjs: 7.8.1 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - bufferutil - supports-color @@ -1873,8 +1656,8 @@ packages: engines: {node: '>=18'} dependencies: '@polkadot/util': 12.6.2 - '@substrate/ss58-registry': 1.44.0 - tslib: 2.6.2 + '@substrate/ss58-registry': 1.49.0 + tslib: 2.6.3 /@polkadot/networks@13.0.2: resolution: {integrity: sha512-ABAL+vug/gIwkdFEzeh87JoJd0YKrxSYg/HjUrZ+Zis2ucxQEKpvtCpJ34ku+YrjacBfVqIAkkwd3ZdIPGq9aQ==} @@ -1900,15 +1683,15 @@ packages: - utf-8-validate dev: true - /@polkadot/rpc-augment@11.2.1: - resolution: {integrity: sha512-AbkqWTnKCi71LdqFVbCyYelf5N/Wtj4jFnpRd8z7tIbbiAnNRW61dBgdF9jZ8jd9Z0JvfAmCmG17uCEdsqfNjA==} + /@polkadot/rpc-augment@11.3.1: + resolution: {integrity: sha512-2PaDcKNju4QYQpxwVkWbRU3M0t340nMX9cMo+8awgvgL1LliV/fUDZueMKLuSS910JJMTPQ7y2pK4eQgMt08gQ==} engines: {node: '>=18'} dependencies: - '@polkadot/rpc-core': 11.2.1 - '@polkadot/types': 11.2.1 - '@polkadot/types-codec': 11.2.1 + '@polkadot/rpc-core': 11.3.1 + '@polkadot/types': 11.3.1 + '@polkadot/types-codec': 11.3.1 '@polkadot/util': 12.6.2 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - bufferutil - supports-color @@ -1960,16 +1743,16 @@ packages: - utf-8-validate dev: true - /@polkadot/rpc-core@11.2.1: - resolution: {integrity: sha512-GHNIHDvBts6HDvySfYksuLccaVnI+fc7ubY1uYcJMoyGv9pLhMtveH4Ft7NTxqkBqopbPXZHc8ca9CaIeBVr7w==} + /@polkadot/rpc-core@11.3.1: + resolution: {integrity: sha512-KKNepsDd/mpmXcA6v/h14eFFPEzLGd7nrvx2UUXUxoZ0Fq2MH1hplP3s93k1oduNY/vOXJR2K9S4dKManA6GVQ==} engines: {node: '>=18'} dependencies: - '@polkadot/rpc-augment': 11.2.1 - '@polkadot/rpc-provider': 11.2.1 - '@polkadot/types': 11.2.1 + '@polkadot/rpc-augment': 11.3.1 + '@polkadot/rpc-provider': 11.3.1 + '@polkadot/types': 11.3.1 '@polkadot/util': 12.6.2 rxjs: 7.8.1 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - bufferutil - supports-color @@ -2007,30 +1790,6 @@ packages: - utf-8-validate dev: true - /@polkadot/rpc-provider@10.12.4: - resolution: {integrity: sha512-awXLK28nt6BvOwoTnOVPtz+Qu5sx40Al1yb5lzKG6jYFQrEmqrENufHNOCLU3Uspfqmc6eJmNluZOmVtJKDCPg==} - engines: {node: '>=18'} - dependencies: - '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) - '@polkadot/types': 10.12.4 - '@polkadot/types-support': 10.12.4 - '@polkadot/util': 12.6.2 - '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) - '@polkadot/x-fetch': 12.6.2 - '@polkadot/x-global': 12.6.2 - '@polkadot/x-ws': 12.6.2 - eventemitter3: 5.0.1 - mock-socket: 9.3.1 - nock: 13.5.4 - tslib: 2.6.3 - optionalDependencies: - '@substrate/connect': 0.8.8 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - /@polkadot/rpc-provider@10.13.1: resolution: {integrity: sha512-oJ7tatVXYJ0L7NpNiGd69D558HG5y5ZDmH2Bp9Dd4kFTQIiV8A39SlWwWUPCjSsen9lqSvvprNLnG/VHTpenbw==} engines: {node: '>=18'} @@ -2055,13 +1814,13 @@ packages: - utf-8-validate dev: true - /@polkadot/rpc-provider@11.2.1: - resolution: {integrity: sha512-TO9pdxNmTweK1vi9JYUAoLr/JYJUwPJTTdrSJrmGmiNPaM7txbQVgtT4suQYflVZTgXUYR7OYQ201fH+Qb9J9w==} + /@polkadot/rpc-provider@11.3.1: + resolution: {integrity: sha512-pqERChoHo45hd3WAgW8UuzarRF+G/o/eXEbl0PXLubiayw4X4qCmIzmtntUcKYgxGNcYGZaG87ZU8OjN97m6UA==} engines: {node: '>=18'} dependencies: '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) - '@polkadot/types': 11.2.1 - '@polkadot/types-support': 11.2.1 + '@polkadot/types': 11.3.1 + '@polkadot/types-support': 11.3.1 '@polkadot/util': 12.6.2 '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) '@polkadot/x-fetch': 12.6.2 @@ -2070,7 +1829,7 @@ packages: eventemitter3: 5.0.1 mock-socket: 9.3.1 nock: 13.5.4 - tslib: 2.6.2 + tslib: 2.6.3 optionalDependencies: '@substrate/connect': 0.8.10 transitivePeerDependencies: @@ -2126,25 +1885,25 @@ packages: - utf-8-validate dev: true - /@polkadot/typegen@11.2.1: - resolution: {integrity: sha512-x+0hDT3vb/4aes6SVI/kVeiwrK4FdYNNKxeerxtgup1ieY7GLwsO6Ty1yljIdxk8wRlubSFinEDriOR/8VMQEA==} + /@polkadot/typegen@11.3.1: + resolution: {integrity: sha512-DylbDbVYgtlfbHpilZeXgvlYJqPhvDavwjha/g73Sz2vTgQTO6hPU+Pbj7c2YslQ/xfmobgQ5GiEjnCP1XGcEw==} engines: {node: '>=18'} hasBin: true dependencies: - '@polkadot/api': 11.2.1 - '@polkadot/api-augment': 11.2.1 - '@polkadot/rpc-augment': 11.2.1 - '@polkadot/rpc-provider': 11.2.1 - '@polkadot/types': 11.2.1 - '@polkadot/types-augment': 11.2.1 - '@polkadot/types-codec': 11.2.1 - '@polkadot/types-create': 11.2.1 - '@polkadot/types-support': 11.2.1 + '@polkadot/api': 11.3.1 + '@polkadot/api-augment': 11.3.1 + '@polkadot/rpc-augment': 11.3.1 + '@polkadot/rpc-provider': 11.3.1 + '@polkadot/types': 11.3.1 + '@polkadot/types-augment': 11.3.1 + '@polkadot/types-codec': 11.3.1 + '@polkadot/types-create': 11.3.1 + '@polkadot/types-support': 11.3.1 '@polkadot/util': 12.6.2 '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) '@polkadot/x-ws': 12.6.2 handlebars: 4.7.8 - tslib: 2.6.2 + tslib: 2.6.3 yargs: 17.7.2 transitivePeerDependencies: - bufferutil @@ -2152,16 +1911,6 @@ packages: - utf-8-validate dev: true - /@polkadot/types-augment@10.12.4: - resolution: {integrity: sha512-BS7uMd5WzbpcXimYcbwQGJFjsZikVW1XXPS3FHAkcdPOKm1qWZ/r3V18XH9G4DKj0O0s4VrdVTl0nMcOZurKKg==} - engines: {node: '>=18'} - dependencies: - '@polkadot/types': 10.12.4 - '@polkadot/types-codec': 10.12.4 - '@polkadot/util': 12.6.2 - tslib: 2.6.3 - dev: true - /@polkadot/types-augment@10.13.1: resolution: {integrity: sha512-TcrLhf95FNFin61qmVgOgayzQB/RqVsSg9thAso1Fh6pX4HSbvI35aGPBAn3SkA6R+9/TmtECirpSNLtIGFn0g==} engines: {node: '>=18'} @@ -2172,14 +1921,14 @@ packages: tslib: 2.6.3 dev: true - /@polkadot/types-augment@11.2.1: - resolution: {integrity: sha512-3zBsuSKjZlMEeDVqPTkLnFvjPdyGcW3UBihzCgpTmXhLSuwTbsscMwKtKwIPkOHHQPYJYyZXTMkurMXCJOz2kA==} + /@polkadot/types-augment@11.3.1: + resolution: {integrity: sha512-eR3HVpvUmB3v7q2jTWVmVfAVfb1/kuNn7ij94Zqadg/fuUq0pKqIOKwkUj3OxRM3A/5BnW3MbgparjKD3r+fyw==} engines: {node: '>=18'} dependencies: - '@polkadot/types': 11.2.1 - '@polkadot/types-codec': 11.2.1 + '@polkadot/types': 11.3.1 + '@polkadot/types-codec': 11.3.1 '@polkadot/util': 12.6.2 - tslib: 2.6.2 + tslib: 2.6.3 /@polkadot/types-augment@12.1.1: resolution: {integrity: sha512-HdzjaXapcmNAdT6TWJOuv124PTKbAf5+5JldQ7oPZFaCEhaOTazZYiZ27nqLaj0l4rG7wWzFMiGqjbHwAvtmlg==} @@ -2201,15 +1950,6 @@ packages: tslib: 2.6.3 dev: true - /@polkadot/types-codec@10.12.4: - resolution: {integrity: sha512-8SEwgQT+JfmI62C9MZisA/1oQFuQW1OySvZFZlSqkaoRooK+JMl7Sp9fnRhCuiHMiz08YO4lX16O+aAu0/bmmw==} - engines: {node: '>=18'} - dependencies: - '@polkadot/util': 12.6.2 - '@polkadot/x-bigint': 12.6.2 - tslib: 2.6.3 - dev: true - /@polkadot/types-codec@10.13.1: resolution: {integrity: sha512-AiQ2Vv2lbZVxEdRCN8XSERiWlOWa2cTDLnpAId78EnCtx4HLKYQSd+Jk9Y4BgO35R79mchK4iG+w6gZ+ukG2bg==} engines: {node: '>=18'} @@ -2219,13 +1959,13 @@ packages: tslib: 2.6.3 dev: true - /@polkadot/types-codec@11.2.1: - resolution: {integrity: sha512-9VRRf1g/nahAC3/VSiCSUIRL7uuup04JEZLIAG2LaDgmCBOSV9dt1Yj9114bRUrHHkeUSBmiq64+YX1hZMpQzQ==} + /@polkadot/types-codec@11.3.1: + resolution: {integrity: sha512-i7IiiuuL+Z/jFoKTA9xeh4wGQnhnNNjMT0+1ohvlOvnFsoKZKFQQOaDPPntGJVL1JDCV+KjkN2uQKZSeW8tguQ==} engines: {node: '>=18'} dependencies: '@polkadot/util': 12.6.2 '@polkadot/x-bigint': 12.6.2 - tslib: 2.6.2 + tslib: 2.6.3 /@polkadot/types-codec@12.1.1: resolution: {integrity: sha512-Ob3nFptHT4dDvGc/3l4dBXmvsI3wDWS2oCOxACA+hYWufnlTIQ4M4sHI4kSBQvDoEmaFt8P2Be4SmtyT0VSd1w==} @@ -2245,15 +1985,6 @@ packages: tslib: 2.6.3 dev: true - /@polkadot/types-create@10.12.4: - resolution: {integrity: sha512-K3a6q+q+as/FfxrbXgFdgK8aqrsUgAkH5c0KQS+nt6xMs+Yf2ctpqiLPOjOEVEw8kHRpYtjx1db8Namegk51ig==} - engines: {node: '>=18'} - dependencies: - '@polkadot/types-codec': 10.12.4 - '@polkadot/util': 12.6.2 - tslib: 2.6.3 - dev: true - /@polkadot/types-create@10.13.1: resolution: {integrity: sha512-Usn1jqrz35SXgCDAqSXy7mnD6j4RvB4wyzTAZipFA6DGmhwyxxIgOzlWQWDb+1PtPKo9vtMzen5IJ+7w5chIeA==} engines: {node: '>=18'} @@ -2263,13 +1994,13 @@ packages: tslib: 2.6.3 dev: true - /@polkadot/types-create@11.2.1: - resolution: {integrity: sha512-Y0Zri7x6/rHURVNLMi6i1+rmJDLCn8OQl8BIvRmsIBkCYh2oCzy0g9aqVoCdm+QnoUU5ZNtu+U/gj1kL5ODivQ==} + /@polkadot/types-create@11.3.1: + resolution: {integrity: sha512-pBXtpz5FehcRJ6j5MzFUIUN8ZWM7z6HbqK1GxBmYbJVRElcGcOg7a/rL2pQVphU0Rx1E8bSO4thzGf4wUxSX7w==} engines: {node: '>=18'} dependencies: - '@polkadot/types-codec': 11.2.1 + '@polkadot/types-codec': 11.3.1 '@polkadot/util': 12.6.2 - tslib: 2.6.2 + tslib: 2.6.3 /@polkadot/types-create@12.1.1: resolution: {integrity: sha512-K/I4vCnmI7IbtQeURiRMONDqesIVcZp16KEduBcbJm/RWDj0D3mr71066Yr8OhrhteLvULJpViy7EK4ynPvmSw==} @@ -2289,28 +2020,28 @@ packages: tslib: 2.6.3 dev: true - /@polkadot/types-known@10.12.4: - resolution: {integrity: sha512-fiS26ep9QwHIUn/N0X9R3DIFP8ar4cEG/oJyxs5uBNtIEiAZdWucEZAZFxJnNp6Lib0PGYaz9T9ph0+UbnKKEg==} + /@polkadot/types-known@10.13.1: + resolution: {integrity: sha512-uHjDW05EavOT5JeU8RbiFWTgPilZ+odsCcuEYIJGmK+es3lk/Qsdns9Zb7U7NJl7eJ6OWmRtyrWsLs+bU+jjIQ==} engines: {node: '>=18'} dependencies: '@polkadot/networks': 12.6.2 - '@polkadot/types': 10.12.4 - '@polkadot/types-codec': 10.12.4 - '@polkadot/types-create': 10.12.4 + '@polkadot/types': 10.13.1 + '@polkadot/types-codec': 10.13.1 + '@polkadot/types-create': 10.13.1 '@polkadot/util': 12.6.2 tslib: 2.6.3 dev: true - /@polkadot/types-known@11.2.1: - resolution: {integrity: sha512-dnbmVKagVI6ARuZaGMGc67HPeHGrR7/lcwfS7jGzEmRcoQk7p/UQjWfOk/LG9NzvQkmRVbE0Gqskn4VorqnTbA==} + /@polkadot/types-known@11.3.1: + resolution: {integrity: sha512-3BIof7u6tn9bk3ZCIxA07iNoQ3uj4+vn3DTOjCKECozkRlt6V+kWRvqh16Hc0SHMg/QjcMb2fIu/WZhka1McUQ==} engines: {node: '>=18'} dependencies: '@polkadot/networks': 12.6.2 - '@polkadot/types': 11.2.1 - '@polkadot/types-codec': 11.2.1 - '@polkadot/types-create': 11.2.1 + '@polkadot/types': 11.3.1 + '@polkadot/types-codec': 11.3.1 + '@polkadot/types-create': 11.3.1 '@polkadot/util': 12.6.2 - tslib: 2.6.2 + tslib: 2.6.3 /@polkadot/types-known@12.1.1: resolution: {integrity: sha512-4YxY7tB+BVX6k3ubrToYKyh2Jb4QvoLvzwNSGSjyj0RGwiQCu8anFGIzYdaUJ2iQlhLFb6P4AZWykVvhrXGmqg==} @@ -2336,14 +2067,6 @@ packages: tslib: 2.6.3 dev: true - /@polkadot/types-support@10.12.4: - resolution: {integrity: sha512-uK0AoxzbuFEwlR3eoTKdWuZxAKYOn2B67Xo+swwRL0/VTZvEc6mGnFUd1RfVM+cWKfH3eqwKQCYhjvFRlOkA8g==} - engines: {node: '>=18'} - dependencies: - '@polkadot/util': 12.6.2 - tslib: 2.6.3 - dev: true - /@polkadot/types-support@10.13.1: resolution: {integrity: sha512-4gEPfz36XRQIY7inKq0HXNVVhR6HvXtm7yrEmuBuhM86LE0lQQBkISUSgR358bdn2OFSLMxMoRNoh3kcDvdGDQ==} engines: {node: '>=18'} @@ -2352,12 +2075,12 @@ packages: tslib: 2.6.3 dev: true - /@polkadot/types-support@11.2.1: - resolution: {integrity: sha512-VGSUDUEQjt8K3Bv8gHYAE/nD98qPPuZ2DcikM9z9isw04qj2amxZaS26+iknJ9KSCzWgrNBHjcr5Q0o76//2yA==} + /@polkadot/types-support@11.3.1: + resolution: {integrity: sha512-jTFz1GKyF7nI29yIOq4v0NiWTOf5yX4HahJNeFD8TcxoLhF+6tH/XXqrUXJEfbaTlSrRWiW1LZYlb+snctqKHA==} engines: {node: '>=18'} dependencies: '@polkadot/util': 12.6.2 - tslib: 2.6.2 + tslib: 2.6.3 /@polkadot/types-support@12.1.1: resolution: {integrity: sha512-mLXrbj0maKFWqV1+4QRzaNnZyV/rAQW0XSrIzfIZn//zSRSIUaXaVAZ62uzgdmzXXFH2qD3hpNlmvmjcEMm2Qg==} @@ -2375,20 +2098,6 @@ packages: tslib: 2.6.3 dev: true - /@polkadot/types@10.12.4: - resolution: {integrity: sha512-KJfxAdOyA/ZmGzRpRWojZx6hOU4iFHiwmerAZQzxELMCUCSsAd4joiXWQX7leSrlJCvvk8/VecnXGTqRe8jtGw==} - engines: {node: '>=18'} - dependencies: - '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) - '@polkadot/types-augment': 10.12.4 - '@polkadot/types-codec': 10.12.4 - '@polkadot/types-create': 10.12.4 - '@polkadot/util': 12.6.2 - '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) - rxjs: 7.8.1 - tslib: 2.6.3 - dev: true - /@polkadot/types@10.13.1: resolution: {integrity: sha512-Hfvg1ZgJlYyzGSAVrDIpp3vullgxrjOlh/CSThd/PI4TTN1qHoPSFm2hs77k3mKkOzg+LrWsLE0P/LP2XddYcw==} engines: {node: '>=18'} @@ -2403,18 +2112,18 @@ packages: tslib: 2.6.3 dev: true - /@polkadot/types@11.2.1: - resolution: {integrity: sha512-NVPhO/eFPkL8arWk4xVbsJzRdGfue3gJK+A2iYzOfCr9rDHEj99B+E2Z0Or6zDN6n+thgQYwsr19rKgXvAc18Q==} + /@polkadot/types@11.3.1: + resolution: {integrity: sha512-5c7uRFXQTT11Awi6T0yFIdAfD6xGDAOz06Kp7M5S9OGNZY28wSPk5x6BYfNphWPaIBmHHewYJB5qmnrdYQAWKQ==} engines: {node: '>=18'} dependencies: '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) - '@polkadot/types-augment': 11.2.1 - '@polkadot/types-codec': 11.2.1 - '@polkadot/types-create': 11.2.1 + '@polkadot/types-augment': 11.3.1 + '@polkadot/types-codec': 11.3.1 + '@polkadot/types-create': 11.3.1 '@polkadot/util': 12.6.2 '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) rxjs: 7.8.1 - tslib: 2.6.2 + tslib: 2.6.3 /@polkadot/types@12.1.1: resolution: {integrity: sha512-+b8v7ORjL20r6VvdWL/fPTHmDXtfAfqkQQxBB6exxOhqrnJfnhAYQjJomKcyj1VMTQiyyR9FBAc7vVvTEFX2ew==} @@ -2717,7 +2426,7 @@ packages: engines: {node: '>=18'} dependencies: '@polkadot/x-global': 12.6.2 - tslib: 2.6.2 + tslib: 2.6.3 /@polkadot/x-bigint@13.0.2: resolution: {integrity: sha512-h2jKT/UaxiEal8LhQeH6+GCjO7GwEqVAD2SNYteCOXff6yNttqAZYJuHZsndbVjVNwqRNf8D5q/zZkD0HUd6xQ==} @@ -2732,7 +2441,7 @@ packages: dependencies: '@polkadot/x-global': 12.6.2 node-fetch: 3.3.2 - tslib: 2.6.2 + tslib: 2.6.3 /@polkadot/x-fetch@13.0.2: resolution: {integrity: sha512-B/gf9iriUr6za/Ui7zIFBfHz7UBZ68rJEIteWHx1UHRCZPcLqv+hgpev6xIGrkfFljI0/lI7IwtN2qy6HYzFBg==} @@ -2747,7 +2456,7 @@ packages: resolution: {integrity: sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==} engines: {node: '>=18'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 /@polkadot/x-global@13.0.2: resolution: {integrity: sha512-OoNIXLB5y8vIKpk4R+XmpDPhipNXWSUvEwUnpQT7NAxNLmzgMq1FhbrwBWWPRNHPrQonp7mqxV/X+v5lv1HW/g==} @@ -2826,8 +2535,8 @@ packages: engines: {node: '>=18'} dependencies: '@polkadot/x-global': 12.6.2 - tslib: 2.6.2 - ws: 8.16.0 + tslib: 2.6.3 + ws: 8.18.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -2877,113 +2586,134 @@ packages: /@protobufjs/utf8@1.1.0: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - /@rollup/rollup-android-arm-eabi@4.13.0: - resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==} + /@rollup/rollup-android-arm-eabi@4.19.0: + resolution: {integrity: sha512-JlPfZ/C7yn5S5p0yKk7uhHTTnFlvTgLetl2VxqE518QgyM7C9bSfFTYvB/Q/ftkq0RIPY4ySxTz+/wKJ/dXC0w==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.13.0: - resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==} + /@rollup/rollup-android-arm64@4.19.0: + resolution: {integrity: sha512-RDxUSY8D1tWYfn00DDi5myxKgOk6RvWPxhmWexcICt/MEC6yEMr4HNCu1sXXYLw8iAsg0D44NuU+qNq7zVWCrw==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.13.0: - resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==} + /@rollup/rollup-darwin-arm64@4.19.0: + resolution: {integrity: sha512-emvKHL4B15x6nlNTBMtIaC9tLPRpeA5jMvRLXVbl/W9Ie7HhkrE7KQjvgS9uxgatL1HmHWDXk5TTS4IaNJxbAA==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.13.0: - resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==} + /@rollup/rollup-darwin-x64@4.19.0: + resolution: {integrity: sha512-fO28cWA1dC57qCd+D0rfLC4VPbh6EOJXrreBmFLWPGI9dpMlER2YwSPZzSGfq11XgcEpPukPTfEVFtw2q2nYJg==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.13.0: - resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.19.0: + resolution: {integrity: sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.13.0: - resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==} + /@rollup/rollup-linux-arm-musleabihf@4.19.0: + resolution: {integrity: sha512-gJuzIVdq/X1ZA2bHeCGCISe0VWqCoNT8BvkQ+BfsixXwTOndhtLUpOg0A1Fcx/+eA6ei6rMBzlOz4JzmiDw7JQ==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.19.0: + resolution: {integrity: sha512-0EkX2HYPkSADo9cfeGFoQ7R0/wTKb7q6DdwI4Yn/ULFE1wuRRCHybxpl2goQrx4c/yzK3I8OlgtBu4xvted0ug==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.13.0: - resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==} + /@rollup/rollup-linux-arm64-musl@4.19.0: + resolution: {integrity: sha512-GlIQRj9px52ISomIOEUq/IojLZqzkvRpdP3cLgIE1wUWaiU5Takwlzpz002q0Nxxr1y2ZgxC2obWxjr13lvxNQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.13.0: - resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==} + /@rollup/rollup-linux-powerpc64le-gnu@4.19.0: + resolution: {integrity: sha512-N6cFJzssruDLUOKfEKeovCKiHcdwVYOT1Hs6dovDQ61+Y9n3Ek4zXvtghPPelt6U0AH4aDGnDLb83uiJMkWYzQ==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.19.0: + resolution: {integrity: sha512-2DnD3mkS2uuam/alF+I7M84koGwvn3ZVD7uG+LEWpyzo/bq8+kKnus2EVCkcvh6PlNB8QPNFOz6fWd5N8o1CYg==} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.13.0: - resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==} + /@rollup/rollup-linux-s390x-gnu@4.19.0: + resolution: {integrity: sha512-D6pkaF7OpE7lzlTOFCB2m3Ngzu2ykw40Nka9WmKGUOTS3xcIieHe82slQlNq69sVB04ch73thKYIWz/Ian8DUA==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.19.0: + resolution: {integrity: sha512-HBndjQLP8OsdJNSxpNIN0einbDmRFg9+UQeZV1eiYupIRuZsDEoeGU43NQsS34Pp166DtwQOnpcbV/zQxM+rWA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.13.0: - resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==} + /@rollup/rollup-linux-x64-musl@4.19.0: + resolution: {integrity: sha512-HxfbvfCKJe/RMYJJn0a12eiOI9OOtAUF4G6ozrFUK95BNyoJaSiBjIOHjZskTUffUrB84IPKkFG9H9nEvJGW6A==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.13.0: - resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==} + /@rollup/rollup-win32-arm64-msvc@4.19.0: + resolution: {integrity: sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.13.0: - resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==} + /@rollup/rollup-win32-ia32-msvc@4.19.0: + resolution: {integrity: sha512-xItlIAZZaiG/u0wooGzRsx11rokP4qyc/79LkAOdznGRAbOFc+SfEdfUOszG1odsHNgwippUJavag/+W/Etc6Q==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.13.0: - resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==} + /@rollup/rollup-win32-x64-msvc@4.19.0: + resolution: {integrity: sha512-xNo5fV5ycvCCKqiZcpB65VMR11NJB+StnxHz20jdqRAktfdfzhgjTiJ2doTDQE/7dqGaV5I7ZGqKpgph6lCIag==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /@scure/base@1.1.5: - resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} - /@scure/base@1.1.7: resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==} @@ -2992,15 +2722,7 @@ packages: dependencies: '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 - '@scure/base': 1.1.5 - dev: true - - /@scure/bip32@1.3.3: - resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} - dependencies: - '@noble/curves': 1.3.0 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@scure/base': 1.1.7 dev: true /@scure/bip32@1.4.0: @@ -3015,14 +2737,7 @@ packages: resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: '@noble/hashes': 1.3.2 - '@scure/base': 1.1.5 - dev: true - - /@scure/bip39@1.2.2: - resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} - dependencies: - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@scure/base': 1.1.7 dev: true /@scure/bip39@1.3.0: @@ -3045,14 +2760,8 @@ packages: requiresBuild: true optional: true - /@substrate/connect-known-chains@1.1.2: - resolution: {integrity: sha512-XvyemTVqon+6EF2G7QL0fEXxjuz3nUNFgFV0TSWhSVpPb+Sfs+vfipbEZxGNouxvjCoJdr6CF0rwgGsrrKOnAA==} - requiresBuild: true - dev: true - optional: true - - /@substrate/connect-known-chains@1.1.5: - resolution: {integrity: sha512-GCdDMs5q9xDYyP/KEwrlWMdqv8OIPjuVMZvNowvUrvEFo5d+x+VqfRPzyl/RbV+snRQVWTTacRydE7GqyjCYPQ==} + /@substrate/connect-known-chains@1.1.11: + resolution: {integrity: sha512-jl6RKTn9bDezKqlOj2X9B/BVftIqqnU9tgr/9WXMCBdLedzQaO/DRRb0c5VqF1+DH8dHV2q5MyKN9gR+KGt7ow==} requiresBuild: true optional: true @@ -3061,7 +2770,7 @@ packages: requiresBuild: true dependencies: '@substrate/connect-extension-protocol': 2.0.0 - '@substrate/connect-known-chains': 1.1.5 + '@substrate/connect-known-chains': 1.1.11 '@substrate/light-client-extension-helpers': 0.0.6(smoldot@2.0.22) smoldot: 2.0.22 transitivePeerDependencies: @@ -3074,7 +2783,7 @@ packages: requiresBuild: true dependencies: '@substrate/connect-extension-protocol': 2.0.0 - '@substrate/connect-known-chains': 1.1.2 + '@substrate/connect-known-chains': 1.1.11 '@substrate/light-client-extension-helpers': 0.0.4(smoldot@2.0.22) smoldot: 2.0.22 transitivePeerDependencies: @@ -3094,7 +2803,7 @@ packages: '@polkadot-api/json-rpc-provider-proxy': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 '@polkadot-api/substrate-client': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 '@substrate/connect-extension-protocol': 2.0.0 - '@substrate/connect-known-chains': 1.1.2 + '@substrate/connect-known-chains': 1.1.11 rxjs: 7.8.1 smoldot: 2.0.22 dev: true @@ -3111,17 +2820,13 @@ packages: '@polkadot-api/observable-client': 0.1.0(rxjs@7.8.1) '@polkadot-api/substrate-client': 0.0.1 '@substrate/connect-extension-protocol': 2.0.0 - '@substrate/connect-known-chains': 1.1.5 + '@substrate/connect-known-chains': 1.1.11 rxjs: 7.8.1 smoldot: 2.0.22 optional: true - /@substrate/ss58-registry@1.44.0: - resolution: {integrity: sha512-7lQ/7mMCzVNSEfDS4BCqnRnKCFKpcOaPrxMeGTXHX1YQzM/m2BBHjbK2C3dJvjv7GYxMiaTq/HdWQj1xS6ss+A==} - /@substrate/ss58-registry@1.49.0: resolution: {integrity: sha512-leW6Ix4LD7XgvxT7+aobPWSw+WvPcN2Rxof1rmd0mNC5t2n99k1N7UNEvz7YEFSOUeHWmKIY7F5q8KeIqYoHfA==} - dev: true /@tootallnate/once@1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} @@ -3130,8 +2835,8 @@ packages: dev: true optional: true - /@tsconfig/node10@1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + /@tsconfig/node10@1.0.11: + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} /@tsconfig/node12@1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -3150,28 +2855,28 @@ packages: /@types/debug@4.1.12: resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} dependencies: - '@types/ms': 0.7.31 + '@types/ms': 0.7.34 dev: true /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} dev: true /@types/long@4.0.2: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} - /@types/mdast@3.0.12: - resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} + /@types/mdast@3.0.15: + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.10 dev: true - /@types/ms@0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} dev: true /@types/node@18.15.13: @@ -3189,12 +2894,12 @@ packages: undici-types: 5.26.5 dev: true - /@types/semver@7.5.1: - resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true - /@types/unist@2.0.7: - resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==} + /@types/unist@2.0.10: + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} dev: true /@types/ws@8.5.3: @@ -3214,19 +2919,19 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.8.0 + '@eslint-community/regexpp': 4.11.0 '@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.4.2) '@typescript-eslint/scope-manager': 6.15.0 '@typescript-eslint/type-utils': 6.15.0(eslint@8.56.0)(typescript@5.4.2) '@typescript-eslint/utils': 6.15.0(eslint@8.56.0)(typescript@5.4.2) '@typescript-eslint/visitor-keys': 6.15.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.56.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@5.4.2) + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.4.2) typescript: 5.4.2 transitivePeerDependencies: - supports-color @@ -3246,7 +2951,7 @@ packages: '@typescript-eslint/types': 6.15.0 '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.4.2) '@typescript-eslint/visitor-keys': 6.15.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.56.0 typescript: 5.4.2 transitivePeerDependencies: @@ -3273,9 +2978,9 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.4.2) '@typescript-eslint/utils': 6.15.0(eslint@8.56.0)(typescript@5.4.2) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.56.0 - ts-api-utils: 1.0.2(typescript@5.4.2) + ts-api-utils: 1.3.0(typescript@5.4.2) typescript: 5.4.2 transitivePeerDependencies: - supports-color @@ -3297,11 +3002,11 @@ packages: dependencies: '@typescript-eslint/types': 6.15.0 '@typescript-eslint/visitor-keys': 6.15.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@5.4.2) + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.4.2) typescript: 5.4.2 transitivePeerDependencies: - supports-color @@ -3314,13 +3019,13 @@ packages: eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.1 + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 6.15.0 '@typescript-eslint/types': 6.15.0 '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.4.2) eslint: 8.56.0 - semver: 7.5.4 + semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript @@ -3357,7 +3062,7 @@ packages: /@vitest/snapshot@1.4.0: resolution: {integrity: sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==} dependencies: - magic-string: 0.30.8 + magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 dev: true @@ -3378,7 +3083,7 @@ packages: fflate: 0.8.2 flatted: 3.3.1 pathe: 1.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 sirv: 2.0.4 vitest: 1.4.0(@types/node@20.11.30)(@vitest/ui@1.4.0) dev: true @@ -3392,103 +3097,103 @@ packages: pretty-format: 29.7.0 dev: true - /@vue/compiler-core@3.4.32: - resolution: {integrity: sha512-8tCVWkkLe/QCWIsrIvExUGnhYCAOroUs5dzhSoKL5w4MJS8uIYiou+pOPSVIOALOQ80B0jBs+Ri+kd5+MBnCDw==} + /@vue/compiler-core@3.4.33: + resolution: {integrity: sha512-MoIREbkdPQlnGfSKDMgzTqzqx5nmEjIc0ydLVYlTACGBsfvOJ4tHSbZXKVF536n6fB+0eZaGEOqsGThPpdvF5A==} dependencies: '@babel/parser': 7.24.8 - '@vue/shared': 3.4.32 + '@vue/shared': 3.4.33 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.0 dev: true - /@vue/compiler-dom@3.4.32: - resolution: {integrity: sha512-PbSgt9KuYo4fyb90dynuPc0XFTfFPs3sCTbPLOLlo+PrUESW1gn/NjSsUvhR+mI2AmmEzexwYMxbHDldxSOr2A==} + /@vue/compiler-dom@3.4.33: + resolution: {integrity: sha512-GzB8fxEHKw0gGet5BKlpfXEqoBnzSVWwMnT+dc25wE7pFEfrU/QsvjZMP9rD4iVXHBBoemTct8mN0GJEI6ZX5A==} dependencies: - '@vue/compiler-core': 3.4.32 - '@vue/shared': 3.4.32 + '@vue/compiler-core': 3.4.33 + '@vue/shared': 3.4.33 dev: true - /@vue/compiler-sfc@3.4.32: - resolution: {integrity: sha512-STy9im/WHfaguJnfKjjVpMHukxHUrOKjm2vVCxiojQJyo3Sb6Os8SMXBr/MI+ekpstEGkDONfqAQoSbZhspLYw==} + /@vue/compiler-sfc@3.4.33: + resolution: {integrity: sha512-7rk7Vbkn21xMwIUpHQR4hCVejwE6nvhBOiDgoBcR03qvGqRKA7dCBSsHZhwhYUsmjlbJ7OtD5UFIyhP6BY+c8A==} dependencies: '@babel/parser': 7.24.8 - '@vue/compiler-core': 3.4.32 - '@vue/compiler-dom': 3.4.32 - '@vue/compiler-ssr': 3.4.32 - '@vue/shared': 3.4.32 + '@vue/compiler-core': 3.4.33 + '@vue/compiler-dom': 3.4.33 + '@vue/compiler-ssr': 3.4.33 + '@vue/shared': 3.4.33 estree-walker: 2.0.2 magic-string: 0.30.10 postcss: 8.4.39 source-map-js: 1.2.0 dev: true - /@vue/compiler-ssr@3.4.32: - resolution: {integrity: sha512-nyu/txTecF6DrxLrpLcI34xutrvZPtHPBj9yRoPxstIquxeeyywXpYZrQMsIeDfBhlw1abJb9CbbyZvDw2kjdg==} + /@vue/compiler-ssr@3.4.33: + resolution: {integrity: sha512-0WveC9Ai+eT/1b6LCV5IfsufBZ0HP7pSSTdDjcuW302tTEgoBw8rHVHKPbGUtzGReUFCRXbv6zQDDgucnV2WzQ==} dependencies: - '@vue/compiler-dom': 3.4.32 - '@vue/shared': 3.4.32 + '@vue/compiler-dom': 3.4.33 + '@vue/shared': 3.4.33 dev: true - /@vue/reactivity@3.4.32: - resolution: {integrity: sha512-1P7QvghAzhSIWmiNmh4MNkLVjr2QTNDcFv2sKmytEWhR6t7BZzNicgm5ENER4uU++wbWxgRh/pSEYgdI3MDcvg==} + /@vue/reactivity@3.4.33: + resolution: {integrity: sha512-B24QIelahDbyHipBgbUItQblbd4w5HpG3KccL+YkGyo3maXyS253FzcTR3pSz739OTphmzlxP7JxEMWBpewilA==} dependencies: - '@vue/shared': 3.4.32 + '@vue/shared': 3.4.33 dev: true - /@vue/runtime-core@3.4.32: - resolution: {integrity: sha512-FxT2dTHUs1Hki8Ui/B1Hu339mx4H5kRJooqrNM32tGUHBPStJxwMzLIRbeGO/B1NMplU4Pg9fwOqrJtrOzkdfA==} + /@vue/runtime-core@3.4.33: + resolution: {integrity: sha512-6wavthExzT4iAxpe8q37/rDmf44nyOJGISJPxCi9YsQO+8w9v0gLCFLfH5TzD1V1AYrTAdiF4Y1cgUmP68jP6w==} dependencies: - '@vue/reactivity': 3.4.32 - '@vue/shared': 3.4.32 + '@vue/reactivity': 3.4.33 + '@vue/shared': 3.4.33 dev: true - /@vue/runtime-dom@3.4.32: - resolution: {integrity: sha512-Xz9G+ZViRyPFQtRBCPFkhMzKn454ihCPMKUiacNaUhuTIXvyfkAq8l89IZ/kegFVyw/7KkJGRGqYdEZrf27Xsg==} + /@vue/runtime-dom@3.4.33: + resolution: {integrity: sha512-iHsMCUSFJ+4z432Bn9kZzHX+zOXa6+iw36DaVRmKYZpPt9jW9riF32SxNwB124i61kp9+AZtheQ/mKoJLerAaQ==} dependencies: - '@vue/reactivity': 3.4.32 - '@vue/runtime-core': 3.4.32 - '@vue/shared': 3.4.32 + '@vue/reactivity': 3.4.33 + '@vue/runtime-core': 3.4.33 + '@vue/shared': 3.4.33 csstype: 3.1.3 dev: true - /@vue/server-renderer@3.4.32(vue@3.4.32): - resolution: {integrity: sha512-3c4rd0522Ao8hKjzgmUAbcjv2mBnvnw0Ld2f8HOMCuWJZjYie/p8cpIoYJbeP0VV2JYmrJJMwGQDO5RH4iQ30A==} + /@vue/server-renderer@3.4.33(vue@3.4.33): + resolution: {integrity: sha512-jTH0d6gQcaYideFP/k0WdEu8PpRS9MF8d0b6SfZzNi+ap972pZ0TNIeTaESwdOtdY0XPVj54XEJ6K0wXxir4fw==} peerDependencies: - vue: 3.4.32 + vue: 3.4.33 dependencies: - '@vue/compiler-ssr': 3.4.32 - '@vue/shared': 3.4.32 - vue: 3.4.32(typescript@5.4.2) + '@vue/compiler-ssr': 3.4.33 + '@vue/shared': 3.4.33 + vue: 3.4.33(typescript@5.4.2) dev: true - /@vue/shared@3.4.32: - resolution: {integrity: sha512-ep4mF1IVnX/pYaNwxwOpJHyBtOMKWoKZMbnUyd+z0udqIxLUh7YCCd/JfDna8aUrmnG9SFORyIq2HzEATRrQsg==} + /@vue/shared@3.4.33: + resolution: {integrity: sha512-aoRY0jQk3A/cuvdkodTrM4NMfxco8n55eG4H7ML/CRy7OryHfiqvug4xrCBBMbbN+dvXAetDDwZW9DXWWjBntA==} dev: true - /@zombienet/orchestrator@0.0.86(@polkadot/util@13.0.2)(@types/node@20.11.30): - resolution: {integrity: sha512-cMORhevLCYYy06yqQKQ/N3jhQEYQflKiCr4LxHGgFQP3ng7KCnzDqozwyqc8cgXsx1giOneORZxb89CQQUw9OA==} + /@zombienet/orchestrator@0.0.87(@polkadot/util@12.6.2)(@types/node@20.11.30): + resolution: {integrity: sha512-kORyR8/JgiP0BStooCbcyUkhPOI+RXKRs1QEqUN+kKtIN7PvpEjtXlhxROWiqpIQqhcDsHmkOxFcxSq1T0Glaw==} engines: {node: '>=18'} dependencies: - '@polkadot/api': 11.2.1 - '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@13.0.2) - '@polkadot/util-crypto': 12.6.2(@polkadot/util@13.0.2) + '@polkadot/api': 11.3.1 + '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) + '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) '@zombienet/utils': 0.0.25(@types/node@20.11.30)(typescript@5.4.2) JSONStream: 1.3.5 chai: 4.4.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 execa: 5.1.1 fs-extra: 11.2.0 jsdom: 23.2.0 json-bigint: 1.0.0 libp2p-crypto: 0.21.2 - minimatch: 9.0.4 - mocha: 10.4.0 + minimatch: 9.0.5 + mocha: 10.7.0 napi-maybe-compressed-blob: 0.0.11 peer-id: 0.16.0 tmp-promise: 3.0.3 typescript: 5.4.2 - yaml: 2.4.1 + yaml: 2.4.5 transitivePeerDependencies: - '@polkadot/util' - '@swc/core' @@ -3499,26 +3204,26 @@ packages: - chokidar - supports-color - utf-8-validate - dev: false + dev: true - /@zombienet/orchestrator@0.0.87(@polkadot/util@12.6.2)(@types/node@20.11.30): + /@zombienet/orchestrator@0.0.87(@polkadot/util@13.0.2)(@types/node@20.11.30): resolution: {integrity: sha512-kORyR8/JgiP0BStooCbcyUkhPOI+RXKRs1QEqUN+kKtIN7PvpEjtXlhxROWiqpIQqhcDsHmkOxFcxSq1T0Glaw==} engines: {node: '>=18'} dependencies: - '@polkadot/api': 11.2.1 - '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) - '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) + '@polkadot/api': 11.3.1 + '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@13.0.2) + '@polkadot/util-crypto': 12.6.2(@polkadot/util@13.0.2) '@zombienet/utils': 0.0.25(@types/node@20.11.30)(typescript@5.4.2) JSONStream: 1.3.5 chai: 4.4.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.4 execa: 5.1.1 fs-extra: 11.2.0 jsdom: 23.2.0 json-bigint: 1.0.0 libp2p-crypto: 0.21.2 minimatch: 9.0.5 - mocha: 10.6.0 + mocha: 10.7.0 napi-maybe-compressed-blob: 0.0.11 peer-id: 0.16.0 tmp-promise: 3.0.3 @@ -3534,15 +3239,15 @@ packages: - chokidar - supports-color - utf-8-validate - dev: true + dev: false /@zombienet/utils@0.0.25(@types/node@20.11.30)(typescript@5.4.2): resolution: {integrity: sha512-VS+tWmdZ8ozRkA1Lgb/Si9iISgJz8AEQpPnlnlIg3lfVHYFqAD7M5DpiFv24AAEBSraokVhUv9E9E1uE4d4f0w==} engines: {node: '>=18'} dependencies: - cli-table3: 0.6.3 - debug: 4.3.4(supports-color@8.1.1) - mocha: 10.3.0 + cli-table3: 0.6.5 + debug: 4.3.4 + mocha: 10.7.0 nunjucks: 3.2.4 toml: 3.0.0 ts-node: 10.9.2(@types/node@20.11.30)(typescript@5.4.2) @@ -3558,9 +3263,9 @@ packages: resolution: {integrity: sha512-VS+tWmdZ8ozRkA1Lgb/Si9iISgJz8AEQpPnlnlIg3lfVHYFqAD7M5DpiFv24AAEBSraokVhUv9E9E1uE4d4f0w==} engines: {node: '>=18'} dependencies: - cli-table3: 0.6.3 - debug: 4.3.4(supports-color@8.1.1) - mocha: 10.3.0 + cli-table3: 0.6.5 + debug: 4.3.4 + mocha: 10.7.0 nunjucks: 3.2.4 toml: 3.0.0 ts-node: 10.9.2(@types/node@20.14.10)(typescript@5.4.2) @@ -3636,26 +3341,22 @@ packages: event-target-shim: 5.0.1 dev: true - /acorn-jsx@5.3.2(acorn@8.10.0): + /acorn-jsx@5.3.2(acorn@8.12.1): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.10.0 + acorn: 8.12.1 dev: true - /acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + /acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} engines: {node: '>=0.4.0'} + dependencies: + acorn: 8.12.1 - /acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + /acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true @@ -3668,17 +3369,17 @@ packages: engines: {node: '>= 6.0.0'} requiresBuild: true dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true optional: true - /agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + /agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -3710,14 +3411,9 @@ packages: uri-js: 4.4.1 dev: true - /ansi-colors@4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} - dev: true /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} @@ -3823,8 +3519,8 @@ packages: possible-typed-array-names: 1.0.0 dev: true - /axios@1.6.8(debug@4.3.4): - resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} + /axios@1.7.2(debug@4.3.4): + resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} dependencies: follow-redirects: 1.15.6(debug@4.3.4) form-data: 4.0.0 @@ -3848,11 +3544,11 @@ packages: dependencies: require-from-string: 2.0.2 - /bignumber.js@9.1.1: - resolution: {integrity: sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==} + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} /binary-searching@2.0.5: @@ -3903,18 +3599,11 @@ packages: dependencies: balanced-match: 1.0.2 - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - /braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} dependencies: fill-range: 7.1.1 - dev: true /browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} @@ -3958,7 +3647,7 @@ packages: promise-inflight: 1.0.1 rimraf: 3.0.2 ssri: 8.0.1 - tar: 6.2.0 + tar: 6.2.1 unique-filename: 1.1.1 transitivePeerDependencies: - bluebird @@ -3999,7 +3688,7 @@ packages: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 - deep-eql: 4.1.3 + deep-eql: 4.1.4 get-func-name: 2.0.2 loupe: 2.3.7 pathval: 1.1.1 @@ -4036,20 +3725,6 @@ packages: dependencies: get-func-name: 2.0.2 - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - /chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -4063,7 +3738,6 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 - dev: true /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -4125,8 +3799,8 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - /cli-table3@0.6.3: - resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + /cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} dependencies: string-width: 4.2.3 @@ -4205,8 +3879,8 @@ packages: engines: {node: '>= 12'} dev: true - /comment-parser@1.4.0: - resolution: {integrity: sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==} + /comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} dev: true @@ -4214,6 +3888,10 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true + /confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + dev: true + /config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: @@ -4288,11 +3966,11 @@ packages: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} dev: true - /dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + /dayjs@1.11.12: + resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==} dev: true - /debug@4.3.4(supports-color@8.1.1): + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -4302,7 +3980,6 @@ packages: optional: true dependencies: ms: 2.1.2 - supports-color: 8.1.1 /debug@4.3.5(supports-color@8.1.1): resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} @@ -4315,7 +3992,6 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 - dev: true /decamelize@4.0.0: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} @@ -4337,8 +4013,8 @@ packages: mimic-response: 3.1.0 dev: true - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + /deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} engines: {node: '>=6'} dependencies: type-detect: 4.0.8 @@ -4442,19 +4118,9 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - /diff@5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - - /diff@5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} - engines: {node: '>=0.3.1'} - dev: true - /diff@5.2.0: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} - dev: true /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} @@ -4548,37 +4214,6 @@ packages: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} dev: true - /esbuild@0.19.10: - resolution: {integrity: sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.10 - '@esbuild/android-arm': 0.19.10 - '@esbuild/android-arm64': 0.19.10 - '@esbuild/android-x64': 0.19.10 - '@esbuild/darwin-arm64': 0.19.10 - '@esbuild/darwin-x64': 0.19.10 - '@esbuild/freebsd-arm64': 0.19.10 - '@esbuild/freebsd-x64': 0.19.10 - '@esbuild/linux-arm': 0.19.10 - '@esbuild/linux-arm64': 0.19.10 - '@esbuild/linux-ia32': 0.19.10 - '@esbuild/linux-loong64': 0.19.10 - '@esbuild/linux-mips64el': 0.19.10 - '@esbuild/linux-ppc64': 0.19.10 - '@esbuild/linux-riscv64': 0.19.10 - '@esbuild/linux-s390x': 0.19.10 - '@esbuild/linux-x64': 0.19.10 - '@esbuild/netbsd-x64': 0.19.10 - '@esbuild/openbsd-x64': 0.19.10 - '@esbuild/sunos-x64': 0.19.10 - '@esbuild/win32-arm64': 0.19.10 - '@esbuild/win32-ia32': 0.19.10 - '@esbuild/win32-x64': 0.19.10 - dev: true - /esbuild@0.19.12: resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} @@ -4610,39 +4245,39 @@ packages: '@esbuild/win32-x64': 0.19.12 dev: true - /esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + /esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 - dev: true - - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} /escape-string-regexp@1.0.5: @@ -4673,31 +4308,31 @@ packages: hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - '@eslint-community/regexpp': 4.8.0 + '@eslint-community/regexpp': 4.11.0 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.56.0 - '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 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.5.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.21.0 + globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -4707,7 +4342,7 @@ packages: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: @@ -4718,13 +4353,13 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 3.4.3 dev: true - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + /esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 @@ -4757,15 +4392,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /ethereum-cryptography@2.1.3: - resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} - dependencies: - '@noble/curves': 1.3.0 - '@noble/hashes': 1.3.3 - '@scure/bip32': 1.3.3 - '@scure/bip39': 1.2.2 - dev: true - /ethereum-cryptography@2.2.1: resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} dependencies: @@ -4869,17 +4495,6 @@ packages: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -4888,7 +4503,7 @@ packages: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.7 dev: true /fast-json-stable-stringify@2.1.0: @@ -4908,8 +4523,8 @@ packages: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} dev: true - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 dev: true @@ -4936,25 +4551,18 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.1.0 + flat-cache: 3.2.0 dev: true /file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} dev: true - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - /fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: true /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -4963,12 +4571,12 @@ packages: locate-path: 6.0.0 path-exists: 4.0.0 - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} - engines: {node: '>=12.0.0'} + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.7 - keyv: 4.5.3 + flatted: 3.3.1 + keyv: 4.5.4 rimraf: 3.0.2 dev: true @@ -4976,26 +4584,10 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true - /flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} dev: true - /follow-redirects@1.15.2(debug@4.3.4): - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dependencies: - debug: 4.3.4(supports-color@8.1.1) - dev: true - /follow-redirects@1.15.6(debug@4.3.4): resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} @@ -5005,7 +4597,7 @@ packages: debug: optional: true dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 dev: true /for-each@0.3.3: @@ -5014,8 +4606,8 @@ packages: is-callable: 1.2.7 dev: true - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + /foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 @@ -5120,14 +4712,8 @@ packages: engines: {node: '>=16'} dev: true - /get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} - dependencies: - resolve-pkg-maps: 1.0.0 - dev: true - - /get-tsconfig@4.7.3: - resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} + /get-tsconfig@4.7.6: + resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -5149,20 +4735,21 @@ packages: is-glob: 4.0.3 dev: true - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 + foreground-child: 3.2.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 dev: true /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -5180,7 +4767,7 @@ packages: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 5.0.1 + minimatch: 5.1.6 once: 1.4.0 /global-agent@3.0.0: @@ -5191,22 +4778,23 @@ packages: es6-error: 4.1.1 matcher: 3.0.0 roarr: 2.15.4 - semver: 7.6.0 + semver: 7.6.3 serialize-error: 7.0.1 dev: true - /globals@13.21.0: - resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 + gopd: 1.0.1 dev: true /globby@11.1.0: @@ -5215,8 +4803,8 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 + fast-glob: 3.3.2 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -5321,7 +4909,7 @@ packages: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -5331,8 +4919,8 @@ packages: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} dependencies: - agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + agent-base: 7.1.1 + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -5342,18 +4930,18 @@ packages: requiresBuild: true dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true optional: true - /https-proxy-agent@7.0.4: - resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + /https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} dependencies: - agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + agent-base: 7.1.1 + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -5393,8 +4981,8 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} dev: true @@ -5409,7 +4997,6 @@ packages: /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - requiresBuild: true dev: true /indent-string@4.0.0: @@ -5427,6 +5014,7 @@ packages: /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -5473,7 +5061,7 @@ packages: resolution: {integrity: sha512-Z7lAi4XUBYRa6NPB0k+0+3dyhnyp2sAqVeiyogHyue93DvE9dPxp7oi7Gg8/KfWXSrGEsyBvZbl4PdBpS7ZKkg==} engines: {node: '>=18'} dependencies: - '@inquirer/figures': 1.0.4 + '@inquirer/figures': 1.0.5 ansi-escapes: 4.3.2 cli-width: 4.1.0 external-editor: 3.1.0 @@ -5539,7 +5127,7 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} @@ -5737,14 +5325,6 @@ packages: events: 3.3.0 readable-stream: 3.6.2 - /isomorphic-ws@5.0.0(ws@8.16.0): - resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} - peerDependencies: - ws: '*' - dependencies: - ws: 8.16.0 - dev: true - /isomorphic-ws@5.0.0(ws@8.18.0): resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} peerDependencies: @@ -5769,9 +5349,8 @@ packages: ws: 8.17.1 dev: true - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: @@ -5787,8 +5366,8 @@ packages: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} dev: true - /js-tokens@8.0.3: - resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + /js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} dev: true /js-yaml@4.1.0: @@ -5819,19 +5398,19 @@ packages: form-data: 4.0.0 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 + https-proxy-agent: 7.0.5 is-potential-custom-element-name: 1.0.1 parse5: 7.1.2 rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 4.1.3 + tough-cookie: 4.1.4 w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - ws: 8.16.0 + ws: 8.18.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -5841,7 +5420,7 @@ packages: /json-bigint@1.0.0: resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} dependencies: - bignumber.js: 9.1.1 + bignumber.js: 9.1.2 /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -5858,10 +5437,6 @@ packages: /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - /jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} - dev: true - /jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} dev: true @@ -5874,7 +5449,6 @@ packages: chalk: 3.0.0 diff-match-patch: 1.0.5 dev: true - bundledDependencies: [] /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -5887,8 +5461,8 @@ packages: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 dev: true @@ -5930,8 +5504,8 @@ packages: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} dependencies: - mlly: 1.6.1 - pkg-types: 1.0.3 + mlly: 1.7.1 + pkg-types: 1.1.3 dev: true /locate-path@6.0.0: @@ -5970,17 +5544,18 @@ packages: dependencies: get-func-name: 2.0.2 - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} dev: true /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + requiresBuild: true dependencies: yallist: 4.0.0 dev: true + optional: true /magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} @@ -5988,13 +5563,6 @@ packages: '@jridgewell/sourcemap-codec': 1.5.0 dev: true - /magic-string@0.30.8: - resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -6035,8 +5603,8 @@ packages: /mdast-util-from-markdown@1.3.1: resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} dependencies: - '@types/mdast': 3.0.12 - '@types/unist': 2.0.7 + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 decode-named-character-reference: 1.0.2 mdast-util-to-string: 3.2.0 micromark: 3.2.0 @@ -6054,7 +5622,7 @@ packages: /mdast-util-to-string@3.2.0: resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} dependencies: - '@types/mdast': 3.0.12 + '@types/mdast': 3.0.15 dev: true /mdn-data@2.0.30: @@ -6228,7 +5796,7 @@ packages: resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} dependencies: '@types/debug': 4.1.12 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -6248,11 +5816,11 @@ packages: - supports-color dev: true - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + /micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 dev: true @@ -6276,49 +5844,27 @@ packages: dev: true /mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: true - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /minimatch@5.0.1: - resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 dev: true - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: - brace-expansion: 2.0.1 + brace-expansion: 1.1.11 dev: true - /minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - dev: false /minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - dev: true /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -6385,8 +5931,8 @@ packages: engines: {node: '>=8'} dev: true - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} dev: true @@ -6414,70 +5960,17 @@ packages: hasBin: true dev: true - /mlly@1.6.1: - resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + /mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} dependencies: - acorn: 8.11.3 + acorn: 8.12.1 pathe: 1.1.2 - pkg-types: 1.0.3 - ufo: 1.5.2 + pkg-types: 1.1.3 + ufo: 1.5.4 dev: true - /mocha@10.3.0: - resolution: {integrity: sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==} - engines: {node: '>= 14.0.0'} - hasBin: true - dependencies: - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.4(supports-color@8.1.1) - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 8.1.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.0.1 - ms: 2.1.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 - - /mocha@10.4.0: - resolution: {integrity: sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==} - engines: {node: '>= 14.0.0'} - hasBin: true - dependencies: - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.4(supports-color@8.1.1) - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 8.1.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.0.1 - ms: 2.1.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 - dev: false - - /mocha@10.6.0: - resolution: {integrity: sha512-hxjt4+EEB0SA0ZDygSS015t65lJw/I2yRCS3Ae+SJ5FrbzrXgfYwJr96f0OvIXdj7h4lv/vLCrH3rkiuizFSvw==} + /mocha@10.7.0: + resolution: {integrity: sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA==} engines: {node: '>= 14.0.0'} hasBin: true dependencies: @@ -6501,7 +5994,6 @@ packages: yargs: 16.2.0 yargs-parser: 20.2.9 yargs-unparser: 2.0.0 - dev: true /mock-socket@9.3.1: resolution: {integrity: sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==} @@ -6608,22 +6100,21 @@ packages: resolution: {integrity: sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw==} engines: {node: '>= 10.13'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 json-stringify-safe: 5.0.1 propagate: 2.0.1 transitivePeerDependencies: - supports-color - /node-abi@3.56.0: - resolution: {integrity: sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q==} + /node-abi@3.65.0: + resolution: {integrity: sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==} engines: {node: '>=10'} dependencies: semver: 7.6.3 dev: true - /node-addon-api@7.1.0: - resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} - engines: {node: ^16 || ^18 || >= 20} + /node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} dev: true /node-domexception@1.0.0: @@ -6668,7 +6159,7 @@ packages: npmlog: 6.0.2 rimraf: 3.0.2 semver: 7.6.3 - tar: 6.2.0 + tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: - bluebird @@ -6786,16 +6277,16 @@ packages: mimic-fn: 4.0.0 dev: true - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 dev: true /ora@5.4.1: @@ -6841,7 +6332,7 @@ packages: resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} engines: {node: '>=18'} dependencies: - yocto-queue: 1.0.0 + yocto-queue: 1.1.1 dev: true /p-locate@5.0.0: @@ -6859,6 +6350,10 @@ packages: dev: true optional: true + /package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + dev: true + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -6892,6 +6387,7 @@ packages: /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + requiresBuild: true dev: true /path-key@3.1.1: @@ -6903,12 +6399,12 @@ packages: engines: {node: '>=12'} dev: true - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 + lru-cache: 10.4.3 + minipass: 7.1.2 dev: true /path-type@4.0.0: @@ -6933,10 +6429,6 @@ packages: protobufjs: 6.11.4 uint8arrays: 3.1.1 - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true - /picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} dev: true @@ -6945,15 +6437,15 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pino-abstract-transport@1.1.0: - resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} + /pino-abstract-transport@1.2.0: + resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} dependencies: readable-stream: 4.5.2 split2: 4.2.0 dev: true - /pino-pretty@11.1.0: - resolution: {integrity: sha512-PjBzFL7IMSl1YkS9cSVWC+4gONmW0Fi+fvUzy74zK6RJHk4RkfW+e22NydRrGEtBRa5n6/oPNLPqjUeQrzqcLQ==} + /pino-pretty@11.2.1: + resolution: {integrity: sha512-O05NuD9tkRasFRWVaF/uHLOvoRDFD7tb5VMertr78rbsYFjYp48Vg3477EshVAF5eZaEw+OpDl/tu+B0R5o+7g==} hasBin: true dependencies: colorette: 2.0.20 @@ -6964,7 +6456,7 @@ packages: joycon: 3.1.1 minimist: 1.2.8 on-exit-leak-free: 2.1.2 - pino-abstract-transport: 1.1.0 + pino-abstract-transport: 1.2.0 pump: 3.0.0 readable-stream: 4.5.2 secure-json-parse: 2.7.0 @@ -6976,28 +6468,28 @@ packages: resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} dev: true - /pino@8.19.0: - resolution: {integrity: sha512-oswmokxkav9bADfJ2ifrvfHUwad6MLp73Uat0IkQWY3iAw5xTRoznXbXksZs8oaOUMpmhVWD+PZogNzllWpJaA==} + /pino@8.21.0: + resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==} hasBin: true dependencies: atomic-sleep: 1.0.0 fast-redact: 3.5.0 on-exit-leak-free: 2.1.2 - pino-abstract-transport: 1.1.0 + pino-abstract-transport: 1.2.0 pino-std-serializers: 6.2.2 process-warning: 3.0.0 quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.4.3 - sonic-boom: 3.8.0 - thread-stream: 2.4.1 + sonic-boom: 3.8.1 + thread-stream: 2.7.0 dev: true - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + /pkg-types@1.1.3: + resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} dependencies: - jsonc-parser: 3.2.1 - mlly: 1.6.1 + confbox: 0.1.7 + mlly: 1.7.1 pathe: 1.1.2 dev: true @@ -7012,15 +6504,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /postcss@8.4.37: - resolution: {integrity: sha512-7iB/v/r7Woof0glKLH8b1SPHrsX7uhdO+Geb41QpF/+mWZHU3uxxSlN+UXGVit1PawOYDToO+AbZzhBzWRDwbQ==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 - dev: true - /postcss@8.4.39: resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} engines: {node: ^10 || ^12 || >=14} @@ -7041,7 +6524,7 @@ packages: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.56.0 + node-abi: 3.65.0 pump: 3.0.0 rc: 1.2.8 simple-get: 4.0.1 @@ -7061,7 +6544,7 @@ packages: prettier: '>=2.1.2' dependencies: binary-searching: 2.0.5 - comment-parser: 1.4.0 + comment-parser: 1.4.1 mdast-util-from-markdown: 1.3.1 prettier: 2.8.8 transitivePeerDependencies: @@ -7080,7 +6563,7 @@ packages: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 18.2.0 + react-is: 18.3.1 dev: true /process-warning@3.0.0: @@ -7160,11 +6643,6 @@ packages: once: 1.4.0 dev: true - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - dev: true - /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -7195,8 +6673,8 @@ packages: strip-json-comments: 2.0.1 dev: true - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + /react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} dev: true /readable-stream@3.6.2: @@ -7229,9 +6707,8 @@ packages: engines: {node: '>= 12.13.0'} dev: true - /reflect-metadata@0.2.1: - resolution: {integrity: sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==} - deprecated: This version has a critical bug in fallback handling. Please upgrade to reflect-metadata@0.2.2 or newer. + /reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} dev: true /regexp.prototype.flags@1.5.2: @@ -7293,17 +6770,18 @@ packages: /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true dependencies: glob: 7.2.3 dev: true - /rimraf@5.0.5: - resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} - engines: {node: '>=14'} + /rimraf@5.0.9: + resolution: {integrity: sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==} + engines: {node: 14 >=14.20 || 16 >=16.20 || >=18} hasBin: true dependencies: - glob: 10.3.10 + glob: 10.4.5 dev: true /rlp@3.0.0: @@ -7317,32 +6795,35 @@ packages: dependencies: boolean: 3.2.0 detect-node: 2.1.0 - globalthis: 1.0.3 + globalthis: 1.0.4 json-stringify-safe: 5.0.1 semver-compare: 1.0.0 sprintf-js: 1.1.3 dev: true - /rollup@4.13.0: - resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==} + /rollup@4.19.0: + resolution: {integrity: sha512-5r7EYSQIowHsK4eTZ0Y81qpZuJz+MUuYeqmmYmRMl1nwhdmbiYqt5jwzf6u7wyOzJgYqtCRMtVRKOtHANBz7rA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.13.0 - '@rollup/rollup-android-arm64': 4.13.0 - '@rollup/rollup-darwin-arm64': 4.13.0 - '@rollup/rollup-darwin-x64': 4.13.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.13.0 - '@rollup/rollup-linux-arm64-gnu': 4.13.0 - '@rollup/rollup-linux-arm64-musl': 4.13.0 - '@rollup/rollup-linux-riscv64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-musl': 4.13.0 - '@rollup/rollup-win32-arm64-msvc': 4.13.0 - '@rollup/rollup-win32-ia32-msvc': 4.13.0 - '@rollup/rollup-win32-x64-msvc': 4.13.0 + '@rollup/rollup-android-arm-eabi': 4.19.0 + '@rollup/rollup-android-arm64': 4.19.0 + '@rollup/rollup-darwin-arm64': 4.19.0 + '@rollup/rollup-darwin-x64': 4.19.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.19.0 + '@rollup/rollup-linux-arm-musleabihf': 4.19.0 + '@rollup/rollup-linux-arm64-gnu': 4.19.0 + '@rollup/rollup-linux-arm64-musl': 4.19.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.19.0 + '@rollup/rollup-linux-riscv64-gnu': 4.19.0 + '@rollup/rollup-linux-s390x-gnu': 4.19.0 + '@rollup/rollup-linux-x64-gnu': 4.19.0 + '@rollup/rollup-linux-x64-musl': 4.19.0 + '@rollup/rollup-win32-arm64-msvc': 4.19.0 + '@rollup/rollup-win32-ia32-msvc': 4.19.0 + '@rollup/rollup-win32-x64-msvc': 4.19.0 fsevents: 2.3.3 dev: true @@ -7362,7 +6843,7 @@ packages: /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} @@ -7406,22 +6887,6 @@ packages: hasBin: true dev: true - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - /semver@7.6.2: resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} @@ -7441,16 +6906,10 @@ packages: type-fest: 0.13.1 dev: true - /serialize-javascript@6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - dependencies: - randombytes: 2.1.0 - /serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} dependencies: randombytes: 2.1.0 - dev: true /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -7560,7 +7019,7 @@ packages: resolution: {integrity: sha512-B50vRgTY6v3baYH6uCgL15tfaag5tcS2o/P5q1OiXcKGv1axZDfz2dzzMuIkVpyMR2ug11F6EAtQlmYBQd292g==} requiresBuild: true dependencies: - ws: 8.16.0 + ws: 8.18.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -7572,15 +7031,15 @@ packages: requiresBuild: true dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) - socks: 2.8.1 + debug: 4.3.4 + socks: 2.8.3 transitivePeerDependencies: - supports-color dev: true optional: true - /socks@2.8.1: - resolution: {integrity: sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==} + /socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} requiresBuild: true dependencies: @@ -7596,7 +7055,7 @@ packages: dependencies: command-exists: 1.2.9 commander: 8.3.0 - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.6(debug@4.3.4) js-sha3: 0.8.0 memorystream: 0.3.1 semver: 5.7.2 @@ -7605,8 +7064,8 @@ packages: - debug dev: true - /sonic-boom@3.8.0: - resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==} + /sonic-boom@3.8.1: + resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} dependencies: atomic-sleep: 1.0.0 dev: true @@ -7643,9 +7102,9 @@ packages: optional: true dependencies: bindings: 1.5.0 - node-addon-api: 7.1.0 + node-addon-api: 7.1.1 prebuild-install: 7.1.2 - tar: 6.2.0 + tar: 6.2.1 optionalDependencies: node-gyp: 8.4.1 transitivePeerDependencies: @@ -7737,10 +7196,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - /strip-literal@2.0.0: - resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} + /strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} dependencies: - js-tokens: 8.0.3 + js-tokens: 9.0.0 dev: true /supports-color@7.2.0: @@ -7784,8 +7243,8 @@ packages: readable-stream: 3.6.2 dev: true - /tar@6.2.0: - resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + /tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} dependencies: chownr: 2.0.0 @@ -7813,8 +7272,8 @@ packages: any-promise: 1.3.0 dev: true - /thread-stream@2.4.1: - resolution: {integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==} + /thread-stream@2.7.0: + resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} dependencies: real-require: 0.2.0 dev: true @@ -7822,12 +7281,12 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - /tinybench@2.6.0: - resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + /tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} dev: true - /tinypool@0.8.2: - resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} + /tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} engines: {node: '>=14.0.0'} dev: true @@ -7870,8 +7329,8 @@ packages: engines: {node: '>=6'} dev: true - /tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + /tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} dependencies: psl: 1.9.0 @@ -7889,9 +7348,9 @@ packages: dependencies: punycode: 2.3.1 - /ts-api-utils@1.0.2(typescript@5.4.2): - resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==} - engines: {node: '>=16.13.0'} + /ts-api-utils@1.3.0(typescript@5.4.2): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: @@ -7913,13 +7372,13 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 + '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 20.11.30 - acorn: 8.11.3 - acorn-walk: 8.3.2 + acorn: 8.12.1 + acorn-walk: 8.3.3 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 @@ -7943,13 +7402,13 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 + '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 20.14.10 - acorn: 8.11.3 - acorn-walk: 8.3.2 + acorn: 8.12.1 + acorn-walk: 8.3.3 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 @@ -7963,30 +7422,16 @@ packages: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} dev: true - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - /tsx@4.7.0: - resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==} - engines: {node: '>=18.0.0'} - hasBin: true - dependencies: - esbuild: 0.19.10 - get-tsconfig: 4.7.2 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /tsx@4.7.1: resolution: {integrity: sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==} engines: {node: '>=18.0.0'} hasBin: true dependencies: esbuild: 0.19.12 - get-tsconfig: 4.7.3 + get-tsconfig: 4.7.6 optionalDependencies: fsevents: 2.3.3 dev: true @@ -8085,12 +7530,12 @@ packages: buffer: 6.0.3 chalk: 4.1.2 cli-highlight: 2.1.11 - dayjs: 1.11.10 - debug: 4.3.4(supports-color@8.1.1) + dayjs: 1.11.12 + debug: 4.3.4 dotenv: 16.4.5 - glob: 10.3.10 + glob: 10.4.5 mkdirp: 2.1.6 - reflect-metadata: 0.2.1 + reflect-metadata: 0.2.2 sha.js: 2.4.11 sqlite3: 5.1.7 tslib: 2.6.3 @@ -8100,19 +7545,13 @@ packages: - supports-color dev: true - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - /typescript@5.4.2: resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} engines: {node: '>=14.17'} hasBin: true - /ufo@1.5.2: - resolution: {integrity: sha512-eiutMaL0J2MKdhcOM1tUy13pIrYnyR87fEd8STJQFrrAwImwvlXkxlZEjaKah8r2viPohld08lt73QfLG1NxMg==} + /ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} dev: true /uglify-js@3.19.0: @@ -8150,7 +7589,7 @@ packages: /unist-util-stringify-position@3.0.3: resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.10 dev: true /universal-user-agent@7.0.2: @@ -8168,7 +7607,7 @@ packages: /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.3.0 + punycode: 2.3.1 dev: true /url-parse@1.5.10: @@ -8201,7 +7640,7 @@ packages: hasBin: true dependencies: dequal: 2.0.3 - diff: 5.1.0 + diff: 5.2.0 kleur: 4.1.5 sade: 1.8.1 dev: true @@ -8261,10 +7700,10 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.2.0(@types/node@20.11.30) + picocolors: 1.0.1 + vite: 5.3.4(@types/node@20.11.30) transitivePeerDependencies: - '@types/node' - less @@ -8276,8 +7715,8 @@ packages: - terser dev: true - /vite@5.2.0(@types/node@20.11.30): - resolution: {integrity: sha512-xMSLJNEjNk/3DJRgWlPADDwaU9AgYRodDH2t6oENhJnIlmU9Hx1Q6VpjyXua/JdMw1WJRbnAgHJ9xgET9gnIAg==} + /vite@5.3.4(@types/node@20.11.30): + resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -8305,9 +7744,9 @@ packages: optional: true dependencies: '@types/node': 20.11.30 - esbuild: 0.20.2 - postcss: 8.4.37 - rollup: 4.13.0 + esbuild: 0.21.5 + postcss: 8.4.39 + rollup: 4.19.0 optionalDependencies: fsevents: 2.3.3 dev: true @@ -8344,21 +7783,21 @@ packages: '@vitest/spy': 1.4.0 '@vitest/ui': 1.4.0(vitest@1.4.0) '@vitest/utils': 1.4.0 - acorn-walk: 8.3.2 + acorn-walk: 8.3.3 chai: 4.4.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 execa: 8.0.1 local-pkg: 0.5.0 - magic-string: 0.30.8 + magic-string: 0.30.10 pathe: 1.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 std-env: 3.7.0 - strip-literal: 2.0.0 - tinybench: 2.6.0 - tinypool: 0.8.2 - vite: 5.2.0(@types/node@20.11.30) + strip-literal: 2.1.0 + tinybench: 2.8.0 + tinypool: 0.8.4 + vite: 5.3.4(@types/node@20.11.30) vite-node: 1.4.0(@types/node@20.11.30) - why-is-node-running: 2.2.2 + why-is-node-running: 2.3.0 transitivePeerDependencies: - less - lightningcss @@ -8369,19 +7808,19 @@ packages: - terser dev: true - /vue@3.4.32(typescript@5.4.2): - resolution: {integrity: sha512-9mCGIAi/CAq7GtaLLLp2J92pEic+HArstG+pq6F+H7+/jB9a0Z7576n4Bh4k79/50L1cKMIhZC3MC0iGpl+1IA==} + /vue@3.4.33(typescript@5.4.2): + resolution: {integrity: sha512-VdMCWQOummbhctl4QFMcW6eNtXHsFyDlX60O/tsSQuCcuDOnJ1qPOhhVla65Niece7xq/P2zyZReIO5mP+LGTQ==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@vue/compiler-dom': 3.4.32 - '@vue/compiler-sfc': 3.4.32 - '@vue/runtime-dom': 3.4.32 - '@vue/server-renderer': 3.4.32(vue@3.4.32) - '@vue/shared': 3.4.32 + '@vue/compiler-dom': 3.4.33 + '@vue/compiler-sfc': 3.4.33 + '@vue/runtime-dom': 3.4.33 + '@vue/server-renderer': 3.4.33(vue@3.4.33) + '@vue/shared': 3.4.33 typescript: 5.4.2 dev: true @@ -8400,26 +7839,6 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - /web3-core@4.3.2: - resolution: {integrity: sha512-uIMVd/j4BgOnwfpY8ZT+QKubOyM4xohEhFZXz9xB8wimXWMMlYVlIK/TbfHqFolS9uOerdSGhsMbcK9lETae8g==} - engines: {node: '>=14', npm: '>=6.12.0'} - dependencies: - web3-errors: 1.1.4 - web3-eth-accounts: 4.1.1 - web3-eth-iban: 4.0.7 - web3-providers-http: 4.1.0 - web3-providers-ws: 4.0.7 - web3-types: 1.5.0 - web3-utils: 4.2.1 - web3-validator: 2.0.4 - optionalDependencies: - web3-providers-ipc: 4.0.7 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - dev: true - /web3-core@4.5.0: resolution: {integrity: sha512-Q8LIAqmF7vkRydBPiU+OC7wI44nEU6JEExolFaOakqrjMtQ1CWFHRUQMNJRDsk5bRirjyShuAsuqLeYByvvXhg==} engines: {node: '>=14', npm: '>=6.12.0'} @@ -8440,13 +7859,6 @@ packages: - utf-8-validate dev: true - /web3-errors@1.1.4: - resolution: {integrity: sha512-WahtszSqILez+83AxGecVroyZsMuuRT+KmQp4Si5P4Rnqbczno1k748PCrZTS1J4UCPmXMG2/Vt+0Bz2zwXkwQ==} - engines: {node: '>=14', npm: '>=6.12.0'} - dependencies: - web3-types: 1.5.0 - dev: true - /web3-errors@1.2.0: resolution: {integrity: sha512-58Kczou5zyjcm9LuSs5Hrm6VrG8t9p2J8X0yGArZrhKNPZL66gMGkOUpPx+EopE944Sk4yE+Q25hKv4H5BH+kA==} engines: {node: '>=14', npm: '>=6.12.0'} @@ -8454,20 +7866,6 @@ packages: web3-types: 1.7.0 dev: true - /web3-eth-abi@4.2.0(typescript@5.4.2): - resolution: {integrity: sha512-x7dUCmk6th+5N63s5kUusoNtsDJKUUQgl9+jECvGTBOTiyHe/V6aOY0120FUjaAGaapOnR7BImQdhqHv6yT2YQ==} - engines: {node: '>=14', npm: '>=6.12.0'} - dependencies: - abitype: 0.7.1(typescript@5.4.2) - web3-errors: 1.1.4 - web3-types: 1.5.0 - web3-utils: 4.2.1 - web3-validator: 2.0.4 - transitivePeerDependencies: - - typescript - - zod - dev: true - /web3-eth-abi@4.2.3(typescript@5.4.2): resolution: {integrity: sha512-rPVwTn0O1CzbtfXwEfIjUP0W5Y7u1OFjugwKpSqJzPQE6+REBg6OELjomTGZBu+GThxHnv0rp15SOxvqp+tyXA==} engines: {node: '>=14', npm: '>=6.12.0'} @@ -8482,19 +7880,6 @@ packages: - zod dev: true - /web3-eth-accounts@4.1.1: - resolution: {integrity: sha512-9JqhRi1YhO1hQOEmmBHgEGsME/B1FHMxpA/AK3vhpvQ8QeP6KbJW+cForTLfPpUbkmPxnRunG4PNNaETNlZfrA==} - engines: {node: '>=14', npm: '>=6.12.0'} - dependencies: - '@ethereumjs/rlp': 4.0.1 - crc-32: 1.2.2 - ethereum-cryptography: 2.1.3 - web3-errors: 1.1.4 - web3-types: 1.5.0 - web3-utils: 4.2.1 - web3-validator: 2.0.4 - dev: true - /web3-eth-accounts@4.1.3: resolution: {integrity: sha512-61Nb7xCXy6Vw/6xUZMM5ITtXetXmaP0F8oKRxika4GO4fRfKZLAwBZtshMyrdAORPZYq77ENiqXJVU+hTmtUaQ==} engines: {node: '>=14', npm: '>=6.12.0'} @@ -8508,25 +7893,6 @@ packages: web3-validator: 2.0.6 dev: true - /web3-eth-contract@4.2.0(typescript@5.4.2): - resolution: {integrity: sha512-K7bUypsomTs8/Oa0Lgvq5plsSB5afgKJ79NMuXxvC5jfV+AxNrQyKcr5Vd5yEGNqrdQuIPduGQa8DpuY+rMe1g==} - engines: {node: '>=14', npm: '>=6.12.0'} - dependencies: - web3-core: 4.3.2 - web3-errors: 1.1.4 - web3-eth: 4.5.0(typescript@5.4.2) - web3-eth-abi: 4.2.0(typescript@5.4.2) - web3-types: 1.5.0 - web3-utils: 4.2.1 - web3-validator: 2.0.4 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - - zod - dev: true - /web3-eth-contract@4.6.0(typescript@5.4.2): resolution: {integrity: sha512-mgQ/WUUlgW9BVKKVGU/Q7KrQEbEGI98h8ppox7fT964wY9ITFMDuRCvYk50WTWnFMdjFtOBqt1xRJ0+B1ekCHg==} engines: {node: '>=14', npm: '>=6.12.0'} @@ -8547,27 +7913,6 @@ packages: - zod dev: true - /web3-eth-ens@4.1.0(typescript@5.4.2): - resolution: {integrity: sha512-B+QsXXJb/gJkHb1ZGfErNLeFI9zUf2TsQcvi2+NsSuzFwvjIO5IyrrGtqBmXMLWC8ZikMOHuc8ZfFuGrELl31Q==} - engines: {node: '>=14', npm: '>=6.12.0'} - dependencies: - '@adraffy/ens-normalize': 1.10.1 - web3-core: 4.3.2 - web3-errors: 1.1.4 - web3-eth: 4.5.0(typescript@5.4.2) - web3-eth-contract: 4.2.0(typescript@5.4.2) - web3-net: 4.0.7 - web3-types: 1.5.0 - web3-utils: 4.2.1 - web3-validator: 2.0.4 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - - zod - dev: true - /web3-eth-ens@4.4.0(typescript@5.4.2): resolution: {integrity: sha512-DeyVIS060hNV9g8dnTx92syqvgbvPricE3MerCxe/DquNZT3tD8aVgFfq65GATtpCgDDJffO2bVeHp3XBemnSQ==} engines: {node: '>=14', npm: '>=6.12.0'} @@ -8593,45 +7938,22 @@ packages: resolution: {integrity: sha512-8weKLa9KuKRzibC87vNLdkinpUE30gn0IGY027F8doeJdcPUfsa4IlBgNC4k4HLBembBB2CTU0Kr/HAOqMeYVQ==} engines: {node: '>=14', npm: '>=6.12.0'} dependencies: - web3-errors: 1.1.4 - web3-types: 1.5.0 - web3-utils: 4.2.1 - web3-validator: 2.0.4 + web3-errors: 1.2.0 + web3-types: 1.7.0 + web3-utils: 4.3.1 + web3-validator: 2.0.6 dev: true /web3-eth-personal@4.0.8(typescript@5.4.2): resolution: {integrity: sha512-sXeyLKJ7ddQdMxz1BZkAwImjqh7OmKxhXoBNF3isDmD4QDpMIwv/t237S3q4Z0sZQamPa/pHebJRWVuvP8jZdw==} engines: {node: '>=14', npm: '>=6.12.0'} dependencies: - web3-core: 4.3.2 - web3-eth: 4.5.0(typescript@5.4.2) - web3-rpc-methods: 1.2.0 - web3-types: 1.5.0 - web3-utils: 4.2.1 - web3-validator: 2.0.4 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - - zod - dev: true - - /web3-eth@4.5.0(typescript@5.4.2): - resolution: {integrity: sha512-crisE46o/SHMVm+XHAXEaR8k76NCImq+hi0QQEJ+VaLZbDobI/Gvog1HwTukDUDRgnYSAFGqD0cTRyAwDurwpA==} - engines: {node: '>=14', npm: '>=6.12.0'} - dependencies: - setimmediate: 1.0.5 - web3-core: 4.3.2 - web3-errors: 1.1.4 - web3-eth-abi: 4.2.0(typescript@5.4.2) - web3-eth-accounts: 4.1.1 - web3-net: 4.0.7 - web3-providers-ws: 4.0.7 - web3-rpc-methods: 1.2.0 - web3-types: 1.5.0 - web3-utils: 4.2.1 - web3-validator: 2.0.4 + web3-core: 4.5.0 + web3-eth: 4.8.1(typescript@5.4.2) + web3-rpc-methods: 1.3.0 + web3-types: 1.7.0 + web3-utils: 4.3.1 + web3-validator: 2.0.6 transitivePeerDependencies: - bufferutil - encoding @@ -8663,20 +7985,6 @@ packages: - zod dev: true - /web3-net@4.0.7: - resolution: {integrity: sha512-SzEaXFrBjY25iQGk5myaOfO9ZyfTwQEa4l4Ps4HDNVMibgZji3WPzpjq8zomVHMwi8bRp6VV7YS71eEsX7zLow==} - engines: {node: '>=14', npm: '>=6.12.0'} - dependencies: - web3-core: 4.3.2 - web3-rpc-methods: 1.2.0 - web3-types: 1.5.0 - web3-utils: 4.2.1 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - dev: true - /web3-net@4.1.0: resolution: {integrity: sha512-WWmfvHVIXWEoBDWdgKNYKN8rAy6SgluZ0abyRyXOL3ESr7ym7pKWbfP4fjApIHlYTh8tNqkrdPfM4Dyi6CA0SA==} engines: {node: '>=14', npm: '>=6.12.0'} @@ -8696,9 +8004,9 @@ packages: engines: {node: '>=14', npm: '>=6.12.0'} dependencies: cross-fetch: 4.0.0 - web3-errors: 1.1.4 - web3-types: 1.5.0 - web3-utils: 4.2.1 + web3-errors: 1.2.0 + web3-types: 1.7.0 + web3-utils: 4.3.1 transitivePeerDependencies: - encoding dev: true @@ -8708,9 +8016,9 @@ packages: engines: {node: '>=14', npm: '>=6.12.0'} requiresBuild: true dependencies: - web3-errors: 1.1.4 - web3-types: 1.5.0 - web3-utils: 4.2.1 + web3-errors: 1.2.0 + web3-types: 1.7.0 + web3-utils: 4.3.1 dev: true optional: true @@ -8719,11 +8027,11 @@ packages: engines: {node: '>=14', npm: '>=6.12.0'} dependencies: '@types/ws': 8.5.3 - isomorphic-ws: 5.0.0(ws@8.16.0) - web3-errors: 1.1.4 - web3-types: 1.5.0 - web3-utils: 4.2.1 - ws: 8.16.0 + isomorphic-ws: 5.0.0(ws@8.18.0) + web3-errors: 1.2.0 + web3-types: 1.7.0 + web3-utils: 4.3.1 + ws: 8.18.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -8744,19 +8052,6 @@ packages: - utf-8-validate dev: true - /web3-rpc-methods@1.2.0: - resolution: {integrity: sha512-CWJ/g4I4WyYvLkf21wCZAehdhU/VjX/OAPHnqF5/FPDJlogOsOnGXHqi1Z5AP+ocdt395PNubd8jyMMJoYGSBA==} - engines: {node: '>=14', npm: '>=6.12.0'} - dependencies: - web3-core: 4.3.2 - web3-types: 1.5.0 - web3-validator: 2.0.4 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - dev: true - /web3-rpc-methods@1.3.0: resolution: {integrity: sha512-/CHmzGN+IYgdBOme7PdqzF+FNeMleefzqs0LVOduncSaqsppeOEoskLXb2anSpzmQAP3xZJPaTrkQPWSJMORig==} engines: {node: '>=14', npm: '>=6.12.0'} @@ -8786,27 +8081,11 @@ packages: - utf-8-validate dev: true - /web3-types@1.5.0: - resolution: {integrity: sha512-geWuMIeegQ8AedKAO6wO4G4j1gyQ1F/AyKLMw2vud4bsfZayyzWJgCMDZtjYMm5uo2a7i8j1W3/4QFmzlSy5cw==} - engines: {node: '>=14', npm: '>=6.12.0'} - dev: true - /web3-types@1.7.0: resolution: {integrity: sha512-nhXxDJ7a5FesRw9UG5SZdP/C/3Q2EzHGnB39hkAV+YGXDMgwxBXFWebQLfEzZzuArfHnvC0sQqkIHNwSKcVjdA==} engines: {node: '>=14', npm: '>=6.12.0'} dev: true - /web3-utils@4.2.1: - resolution: {integrity: sha512-Fk29BlEqD9Q9Cnw4pBkKw7czcXiRpsSco/BzEUl4ye0ZTSHANQFfjsfQmNm4t7uY11u6Ah+8F3tNjBeU4CA80A==} - engines: {node: '>=14', npm: '>=6.12.0'} - dependencies: - ethereum-cryptography: 2.1.3 - eventemitter3: 5.0.1 - web3-errors: 1.1.4 - web3-types: 1.5.0 - web3-validator: 2.0.4 - dev: true - /web3-utils@4.3.1: resolution: {integrity: sha512-kGwOk8FxOLJ9DQC68yqNQc7AzN+k9YDLaW+ZjlAXs3qORhf8zXk5SxWAAGLbLykMs3vTeB0FTb1Exut4JEYfFA==} engines: {node: '>=14', npm: '>=6.12.0'} @@ -8818,17 +8097,6 @@ packages: web3-validator: 2.0.6 dev: true - /web3-validator@2.0.4: - resolution: {integrity: sha512-qRxVePwdW+SByOmTpDZFWHIUAa7PswvxNszrOua6BoGqAhERo5oJZBN+EbWtK/+O+ApNxt5FR3nCPmiZldiOQA==} - engines: {node: '>=14', npm: '>=6.12.0'} - dependencies: - ethereum-cryptography: 2.1.3 - util: 0.12.5 - web3-errors: 1.1.4 - web3-types: 1.5.0 - zod: 3.22.4 - dev: true - /web3-validator@2.0.6: resolution: {integrity: sha512-qn9id0/l1bWmvH4XfnG/JtGKKwut2Vokl6YXP5Kfg424npysmtRLe9DgiNBM9Op7QL/aSiaA0TVXibuIuWcizg==} engines: {node: '>=14', npm: '>=6.12.0'} @@ -8873,22 +8141,22 @@ packages: resolution: {integrity: sha512-hoI6r29B4kjxINI21rBVaE0Bz0hwtW+Sbppn5ZDTWn5PSQpBW4ecYFDVKVE6K3gbmSjY2fknu2cjBTqha7S53A==} engines: {node: '>=14.0.0', npm: '>=6.12.0'} dependencies: - web3-core: 4.3.2 - web3-errors: 1.1.4 - web3-eth: 4.5.0(typescript@5.4.2) - web3-eth-abi: 4.2.0(typescript@5.4.2) - web3-eth-accounts: 4.1.1 - web3-eth-contract: 4.2.0(typescript@5.4.2) - web3-eth-ens: 4.1.0(typescript@5.4.2) + web3-core: 4.5.0 + web3-errors: 1.2.0 + web3-eth: 4.8.1(typescript@5.4.2) + web3-eth-abi: 4.2.3(typescript@5.4.2) + web3-eth-accounts: 4.1.3 + web3-eth-contract: 4.6.0(typescript@5.4.2) + web3-eth-ens: 4.4.0(typescript@5.4.2) web3-eth-iban: 4.0.7 web3-eth-personal: 4.0.8(typescript@5.4.2) - web3-net: 4.0.7 + web3-net: 4.1.0 web3-providers-http: 4.1.0 web3-providers-ws: 4.0.7 - web3-rpc-methods: 1.2.0 - web3-types: 1.5.0 - web3-utils: 4.2.1 - web3-validator: 2.0.4 + web3-rpc-methods: 1.3.0 + web3-types: 1.7.0 + web3-utils: 4.3.1 + web3-validator: 2.0.6 transitivePeerDependencies: - bufferutil - encoding @@ -8967,8 +8235,8 @@ packages: dependencies: isexe: 2.0.0 - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + /why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} hasBin: true dependencies: @@ -8993,16 +8261,17 @@ packages: is-number: 3.0.0 dev: true + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + /wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true - /workerpool@6.2.1: - resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} - /workerpool@6.5.1: resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} - dev: true /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} @@ -9045,18 +8314,6 @@ packages: optional: true dev: true - /ws@8.16.0: - resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - /ws@8.17.1: resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} engines: {node: '>=10.0.0'} @@ -9081,7 +8338,6 @@ packages: optional: true utf-8-validate: optional: true - dev: true /ws@8.5.0: resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} @@ -9111,26 +8367,14 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml@2.4.1: - resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} - engines: {node: '>= 14'} - hasBin: true - dev: false - /yaml@2.4.5: resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} engines: {node: '>= 14'} hasBin: true - dev: true - - /yargs-parser@20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} - dev: true /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} @@ -9151,19 +8395,19 @@ packages: engines: {node: '>=10'} dependencies: cliui: 7.0.4 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 20.2.4 + yargs-parser: 20.2.9 /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} dependencies: cliui: 8.0.1 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -9179,8 +8423,8 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + /yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} dev: true @@ -9189,10 +8433,6 @@ packages: engines: {node: '>=18'} dev: true - /zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - dev: true - /zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} dev: true diff --git a/solo-chains/client/cli/src/cli.rs b/solo-chains/client/cli/src/cli.rs index d120b2377..72a03aeb1 100644 --- a/solo-chains/client/cli/src/cli.rs +++ b/solo-chains/client/cli/src/cli.rs @@ -18,13 +18,17 @@ pub use polkadot_node_primitives::NODE_VERSION; -use {clap::Parser, std::path::PathBuf}; +use { + clap::Parser, + sc_cli::{CliConfiguration, NodeKeyParams, SharedParams}, + std::path::PathBuf, +}; #[allow(missing_docs)] #[derive(Debug, Parser)] pub enum Subcommand { /// Build a chain specification. - BuildSpec(sc_cli::BuildSpecCmd), + BuildSpec(BuildSpecCmd), /// Validate blocks. CheckBlock(sc_cli::CheckBlockCmd), @@ -57,6 +61,36 @@ pub enum Subcommand { ChainInfo(sc_cli::ChainInfoCmd), } +/// The `build-spec` command used to build a specification. +#[derive(Debug, Clone, clap::Parser)] +pub struct BuildSpecCmd { + /// Base cmd. + #[clap(flatten)] + pub base: sc_cli::BuildSpecCmd, + + /// List of container chain chain spec paths to add to genesis. + #[arg(long)] + pub add_container_chain: Option>, + + /// List of container chain chain spec mocks to add to genesis. + #[arg(long)] + pub mock_container_chain: Option>, + + /// List of invulnerable collators to write to pallet_invulnerables genesis. + #[arg(long)] + pub invulnerable: Option>, +} + +impl CliConfiguration for BuildSpecCmd { + fn shared_params(&self) -> &SharedParams { + &self.base.shared_params + } + + fn node_key_params(&self) -> Option<&NodeKeyParams> { + Some(&self.base.node_key_params) + } +} + #[allow(missing_docs)] #[derive(Debug, Parser)] #[group(skip)] diff --git a/solo-chains/client/cli/src/command.rs b/solo-chains/client/cli/src/command.rs index b132f6218..328a10228 100644 --- a/solo-chains/client/cli/src/command.rs +++ b/solo-chains/client/cli/src/command.rs @@ -22,9 +22,9 @@ use { polkadot_service::{ self, benchmarking::{benchmark_inherent_data, RemarkBuilder, TransferKeepAliveBuilder}, - HeaderBackend, IdentifyVariant, + HeaderBackend, IdentifyVariant, ParaId, }, - sc_cli::SubstrateCli, + sc_cli::{CliConfiguration, SubstrateCli}, sp_core::crypto::Ss58AddressFormatRegistry, sp_keyring::Sr25519Keyring, std::net::ToSocketAddrs, @@ -77,56 +77,7 @@ impl SubstrateCli for Cli { } fn load_spec(&self, id: &str) -> std::result::Result, String> { - let id = if id.is_empty() { - let n = get_exec_name().unwrap_or_default(); - ["starlight"] - .iter() - .cloned() - .find(|&chain| n.starts_with(chain)) - .unwrap_or("starlight") - } else { - id - }; - Ok(match id { - #[cfg(feature = "starlight-native")] - "starlight" => Box::new(tanssi_relay_service::chain_spec::starlight_config()?), - #[cfg(feature = "starlight-native")] - "dev" | "starlight-dev" => { - Box::new(tanssi_relay_service::chain_spec::starlight_development_config()?) - } - #[cfg(feature = "starlight-native")] - "starlight-local" => { - Box::new(tanssi_relay_service::chain_spec::starlight_local_testnet_config()?) - } - #[cfg(feature = "starlight-native")] - "starlight-staging" => { - Box::new(tanssi_relay_service::chain_spec::starlight_staging_testnet_config()?) - } - #[cfg(not(feature = "starlight-native"))] - name if name.starts_with("starlight-") && !name.ends_with(".json") || name == "dev" => { - Err(format!( - "`{}` only supported with `starlight-native` feature enabled.", - name - ))? - } - path => { - let path = std::path::PathBuf::from(path); - - let chain_spec = Box::new(polkadot_service::GenericChainSpec::from_json_file( - path.clone(), - )?) as Box; - - // When `force_*` is given or the file name starts with the name of one of the known - // chains, we use the chain spec for the specific chain. - if self.run.force_starlight { - Box::new( - tanssi_relay_service::chain_spec::StarlightChainSpec::from_json_file(path)?, - ) - } else { - chain_spec - } - } - }) + load_spec(id, vec![], vec![2000, 2001], None) } } @@ -314,7 +265,13 @@ pub fn run() -> Result<()> { ), Some(Subcommand::BuildSpec(cmd)) => { let runner = cli.create_runner(cmd)?; - Ok(runner.sync_run(|config| cmd.run(config.chain_spec, config.network))?) + let chain_spec = load_spec( + &cmd.base.chain_id(cmd.base.is_dev()?)?, + cmd.add_container_chain.clone().unwrap_or_default(), + cmd.mock_container_chain.clone().unwrap_or_default(), + cmd.invulnerable.clone(), + )?; + Ok(runner.sync_run(|config| cmd.base.run(chain_spec, config.network))?) } Some(Subcommand::CheckBlock(cmd)) => { let runner = cli.create_runner(cmd).map_err(Error::SubstrateCli)?; @@ -521,3 +478,64 @@ pub fn run() -> Result<()> { } Ok(()) } + +fn load_spec( + id: &str, + container_chains: Vec, + mock_container_chains: Vec, + invulnerables: Option>, +) -> std::result::Result, String> { + let id = if id.is_empty() { + let n = get_exec_name().unwrap_or_default(); + ["starlight"] + .iter() + .cloned() + .find(|&chain| n.starts_with(chain)) + .unwrap_or("starlight") + } else { + id + }; + let mock_container_chains: Vec = + mock_container_chains.iter().map(|&x| x.into()).collect(); + let invulnerables = invulnerables.unwrap_or_default(); + Ok(match id { + #[cfg(feature = "starlight-native")] + "starlight" => Box::new(tanssi_relay_service::chain_spec::starlight_config()?), + #[cfg(feature = "starlight-native")] + "dev" | "starlight-dev" => Box::new( + tanssi_relay_service::chain_spec::starlight_development_config( + container_chains, + mock_container_chains, + invulnerables, + )?, + ), + #[cfg(feature = "starlight-native")] + "starlight-local" => Box::new( + tanssi_relay_service::chain_spec::starlight_local_testnet_config( + container_chains, + mock_container_chains, + invulnerables, + )?, + ), + #[cfg(feature = "starlight-native")] + "starlight-staging" => { + Box::new(tanssi_relay_service::chain_spec::starlight_staging_testnet_config()?) + } + #[cfg(not(feature = "starlight-native"))] + name if name.starts_with("starlight-") && !name.ends_with(".json") || name == "dev" => { + Err(format!( + "`{}` only supported with `starlight-native` feature enabled.", + name + ))? + } + path => { + let path = std::path::PathBuf::from(path); + + let chain_spec = Box::new(polkadot_service::GenericChainSpec::from_json_file( + path.clone(), + )?) as Box; + + chain_spec + } + }) +} diff --git a/solo-chains/node/tanssi-relay-service/Cargo.toml b/solo-chains/node/tanssi-relay-service/Cargo.toml index f2ab7ad82..4ba24ca76 100644 --- a/solo-chains/node/tanssi-relay-service/Cargo.toml +++ b/solo-chains/node/tanssi-relay-service/Cargo.toml @@ -145,7 +145,10 @@ polkadot-statement-distribution = { workspace = true, optional = true } xcm = { workspace = true } xcm-runtime-apis = { workspace = true } +cumulus-primitives-core = { workspace = true } + # Own +dp-container-chain-genesis-data = { workspace = true, features = [ "json", "std" ] } node-common = { workspace = true } [dev-dependencies] @@ -195,6 +198,7 @@ starlight-native = [ "bitvec", "starlight-runtime", "starlight-runtime-constants fast-runtime = [ "starlight-runtime?/fast-runtime" ] runtime-benchmarks = [ + "cumulus-primitives-core/runtime-benchmarks", "frame-benchmarking-cli/runtime-benchmarks", "frame-benchmarking/runtime-benchmarks", "frame-support/runtime-benchmarks", diff --git a/solo-chains/node/tanssi-relay-service/src/chain_spec.rs b/solo-chains/node/tanssi-relay-service/src/chain_spec.rs index e59f7973a..8a4f2ba46 100644 --- a/solo-chains/node/tanssi-relay-service/src/chain_spec.rs +++ b/solo-chains/node/tanssi-relay-service/src/chain_spec.rs @@ -18,10 +18,17 @@ use { beefy_primitives::ecdsa_crypto::AuthorityId as BeefyId, + cumulus_primitives_core::ParaId, + dp_container_chain_genesis_data::{ + json::container_chain_genesis_data_from_path, ContainerChainGenesisData, + }, grandpa::AuthorityId as GrandpaId, polkadot_primitives::{AccountId, AccountPublic, AssignmentId, ValidatorId}, sp_authority_discovery::AuthorityId as AuthorityDiscoveryId, sp_consensus_babe::AuthorityId as BabeId, + starlight_runtime::genesis_config_presets::{ + starlight_development_config_genesis, starlight_local_testnet_genesis, + }, }; #[cfg(any(feature = "starlight-native"))] @@ -161,7 +168,28 @@ pub fn get_authority_keys_from_seed_no_beefy( /// Starlight development config (single validator Alice) #[cfg(feature = "starlight-native")] -pub fn starlight_development_config() -> Result { +pub fn starlight_development_config( + container_chains: Vec, + mock_container_chains: Vec, + invulnerables: Vec, +) -> Result { + let container_chains: Vec<_> = container_chains + .iter() + .map(|x| { + container_chain_genesis_data_from_path(x).unwrap_or_else(|e| { + panic!( + "Failed to build genesis data for container chain {:?}: {}", + x, e + ) + }) + }) + .chain( + mock_container_chains + .iter() + .map(|x| (*x, mock_container_chain_genesis_data(*x), vec![])), + ) + .collect(); + Ok(StarlightChainSpec::builder( starlight::WASM_BINARY.ok_or("Starlight development wasm not available")?, Default::default(), @@ -169,14 +197,38 @@ pub fn starlight_development_config() -> Result { .with_name("Development") .with_id("starlight_dev") .with_chain_type(ChainType::Development) - .with_genesis_config_preset_name("development") + .with_genesis_config_patch(starlight_development_config_genesis( + container_chains, + invulnerables, + )) .with_protocol_id(DEFAULT_PROTOCOL_ID) .build()) } /// Starlight local testnet config (multivalidator Alice + Bob) #[cfg(feature = "starlight-native")] -pub fn starlight_local_testnet_config() -> Result { +pub fn starlight_local_testnet_config( + container_chains: Vec, + mock_container_chains: Vec, + invulnerables: Vec, +) -> Result { + let container_chains: Vec<_> = container_chains + .iter() + .map(|x| { + container_chain_genesis_data_from_path(x).unwrap_or_else(|e| { + panic!( + "Failed to build genesis data for container chain {:?}: {}", + x, e + ) + }) + }) + .chain( + mock_container_chains + .iter() + .map(|x| (*x, mock_container_chain_genesis_data(*x), vec![])), + ) + .collect(); + Ok(StarlightChainSpec::builder( starlight::fast_runtime_binary::WASM_BINARY .ok_or("Starlight development wasm not available")?, @@ -185,7 +237,21 @@ pub fn starlight_local_testnet_config() -> Result { .with_name("Starlight Local Testnet") .with_id("starlight_local_testnet") .with_chain_type(ChainType::Local) - .with_genesis_config_preset_name("local_testnet") + .with_genesis_config_patch(starlight_local_testnet_genesis( + container_chains, + invulnerables, + )) .with_protocol_id(DEFAULT_PROTOCOL_ID) .build()) } + +fn mock_container_chain_genesis_data(para_id: ParaId) -> ContainerChainGenesisData { + ContainerChainGenesisData { + storage: vec![], + name: format!("Container Chain {}", para_id).into(), + id: format!("container-chain-{}", para_id).into(), + fork_id: None, + extensions: vec![], + properties: Default::default(), + } +} diff --git a/solo-chains/runtime/starlight/Cargo.toml b/solo-chains/runtime/starlight/Cargo.toml index 3942649d4..5398da4aa 100644 --- a/solo-chains/runtime/starlight/Cargo.toml +++ b/solo-chains/runtime/starlight/Cargo.toml @@ -37,6 +37,7 @@ sp-consensus-aura = { workspace = true } sp-core = { workspace = true } sp-genesis-builder = { workspace = true } sp-io = { workspace = true } +sp-keystore = { workspace = true } sp-mmr-primitives = { workspace = true } sp-runtime = { workspace = true } sp-session = { workspace = true } @@ -120,6 +121,7 @@ cumulus-primitives-core = { workspace = true } # Tanssi dp-consensus = { workspace = true } +dp-container-chain-genesis-data = { workspace = true } tp-author-noting-inherent = { workspace = true } tp-traits = { workspace = true } @@ -159,6 +161,7 @@ std = [ "cumulus-pallet-parachain-system/std", "cumulus-primitives-core/std", "dp-consensus/std", + "dp-container-chain-genesis-data/std", "frame-benchmarking?/std", "frame-executive/std", "frame-support/std", @@ -238,6 +241,7 @@ std = [ "sp-core/std", "sp-genesis-builder/std", "sp-io/std", + "sp-keystore/std", "sp-mmr-primitives/std", "sp-runtime/std", "sp-session/std", diff --git a/solo-chains/runtime/starlight/src/genesis_config_presets.rs b/solo-chains/runtime/starlight/src/genesis_config_presets.rs index e9c114bdf..6bda3fec3 100644 --- a/solo-chains/runtime/starlight/src/genesis_config_presets.rs +++ b/solo-chains/runtime/starlight/src/genesis_config_presets.rs @@ -23,19 +23,40 @@ use { authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId, babe_primitives::AuthorityId as BabeId, beefy_primitives::ecdsa_crypto::AuthorityId as BeefyId, + cumulus_primitives_core::relay_chain::{ASSIGNMENT_KEY_TYPE_ID, PARACHAIN_KEY_TYPE_ID}, + dp_container_chain_genesis_data::ContainerChainGenesisData, grandpa_primitives::AuthorityId as GrandpaId, + nimbus_primitives::NimbusId, primitives::{vstaging::SchedulerParams, AccountId, AccountPublic, AssignmentId, ValidatorId}, - sp_core::{sr25519, Pair, Public}, + scale_info::prelude::string::String, + sp_core::{ + crypto::{key_types, KeyTypeId}, + sr25519, ByteArray, Pair, Public, + }, + sp_keystore::{Keystore, KeystorePtr}, sp_runtime::traits::IdentifyAccount, + sp_std::vec, sp_std::vec::Vec, starlight_runtime_constants::currency::UNITS as STAR, + tp_traits::ParaId, }; /// Helper function to generate a crypto pair from seed -fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() +fn get_from_seed( + seed: &str, + add_to_keystore: Option<(&KeystorePtr, KeyTypeId)>, +) -> ::Public { + let secret_uri = format!("//{}", seed); + let pair = TPublic::Pair::from_string(&secret_uri, None).expect("static values are valid; qed"); + + let public = pair.public(); + + if let Some((keystore, key_type)) = add_to_keystore { + keystore + .insert(key_type, &secret_uri, &public.to_raw_vec()) + .unwrap(); + } + public } /// Helper function to generate an account ID from seed @@ -43,7 +64,7 @@ fn get_account_id_from_seed(seed: &str) -> AccountId where AccountPublic: From<::Public>, { - AccountPublic::from(get_from_seed::(seed)).into_account() + AccountPublic::from(get_from_seed::(seed, None)).into_account() } #[derive(Clone, Debug)] @@ -56,12 +77,12 @@ pub struct AuthorityKeys { pub para_assignment: AssignmentId, pub authority_discovery: AuthorityDiscoveryId, pub beefy: BeefyId, - pub nimbus: nimbus_primitives::NimbusId, + pub nimbus: NimbusId, } /// Helper function to generate stash, controller and session key from seed -pub fn get_authority_keys_from_seed(seed: &str) -> AuthorityKeys { - let keys = get_authority_keys_from_seed_no_beefy(seed); +pub fn get_authority_keys_from_seed(seed: &str, keystore: Option<&KeystorePtr>) -> AuthorityKeys { + let keys = get_authority_keys_from_seed_no_beefy(seed, keystore); AuthorityKeys { stash: keys.0, @@ -71,13 +92,13 @@ pub fn get_authority_keys_from_seed(seed: &str) -> AuthorityKeys { para_validator: keys.4, para_assignment: keys.5, authority_discovery: keys.6, - beefy: get_from_seed::(seed), + beefy: get_from_seed::(seed, None), nimbus: get_aura_id_from_seed(seed), } } /// Helper function to generate a crypto pair from seed -pub fn get_aura_id_from_seed(seed: &str) -> nimbus_primitives::NimbusId { +pub fn get_aura_id_from_seed(seed: &str) -> NimbusId { sp_core::sr25519::Pair::from_string(&format!("//{}", seed), None) .expect("static values are valid; qed") .public() @@ -87,6 +108,7 @@ pub fn get_aura_id_from_seed(seed: &str) -> nimbus_primitives::NimbusId { /// Helper function to generate stash, controller and session key from seed fn get_authority_keys_from_seed_no_beefy( seed: &str, + keystore: Option<&KeystorePtr>, ) -> ( AccountId, AccountId, @@ -99,11 +121,14 @@ fn get_authority_keys_from_seed_no_beefy( ( get_account_id_from_seed::(&format!("{}//stash", seed)), get_account_id_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), + get_from_seed::(seed, keystore.map(|k| (k, key_types::BABE))), + get_from_seed::(seed, keystore.map(|k| (k, key_types::GRANDPA))), + get_from_seed::(seed, keystore.map(|k| (k, PARACHAIN_KEY_TYPE_ID))), + get_from_seed::(seed, keystore.map(|k| (k, ASSIGNMENT_KEY_TYPE_ID))), + get_from_seed::( + seed, + keystore.map(|k| (k, key_types::AUTHORITY_DISCOVERY)), + ), ) } @@ -131,7 +156,7 @@ fn starlight_session_keys( para_assignment: AssignmentId, authority_discovery: AuthorityDiscoveryId, beefy: BeefyId, - nimbus: nimbus_primitives::NimbusId, + nimbus: NimbusId, ) -> SessionKeys { SessionKeys { babe, @@ -203,8 +228,19 @@ fn starlight_testnet_genesis( initial_authorities: Vec, root_key: AccountId, endowed_accounts: Option>, + container_chains: Vec<(ParaId, ContainerChainGenesisData, Vec>)>, + invulnerables: Vec, ) -> serde_json::Value { let endowed_accounts: Vec = endowed_accounts.unwrap_or_else(testnet_accounts); + let invulnerables: Vec<_> = invulnerables + .iter() + .map(|seed| get_authority_keys_from_seed(seed, None)) + .collect(); + + let para_ids: Vec<_> = container_chains + .into_iter() + .map(|(para_id, genesis_data, _boot_nodes)| (para_id, genesis_data, None)) + .collect(); const ENDOWMENT: u128 = 1_000_000 * STAR; @@ -233,13 +269,14 @@ fn starlight_testnet_genesis( .collect::>(), }, "babe": { - "epochConfig": Some(BABE_GENESIS_EPOCH_CONFIG), + "epochConfig": Some(BABE_GENESIS_EPOCH_CONFIG) }, "sudo": { "key": Some(root_key.clone()) }, "configuration": { "config": runtime_parachains::configuration::HostConfiguration { scheduler_params: SchedulerParams { max_validators_per_core: Some(1), + num_cores: para_ids.len() as u32, ..default_parachains_host_configuration().scheduler_params }, ..default_parachains_host_configuration() @@ -247,7 +284,11 @@ fn starlight_testnet_genesis( }, "registrar": { "nextFreeParaId": primitives::LOWEST_PUBLIC_ID, - } + }, + "tanssiInvulnerables": crate::TanssiInvulnerablesConfig { + invulnerables: invulnerables.iter().cloned().map(|x| x.stash.clone()).collect(), + }, + "containerRegistrar": crate::ContainerRegistrarConfig { para_ids, ..Default::default() }, }) } @@ -499,64 +540,42 @@ fn starlight_staging_testnet_config_genesis() -> serde_json::Value { } //development -fn starlight_development_config_genesis() -> serde_json::Value { +pub fn starlight_development_config_genesis( + container_chains: Vec<(ParaId, ContainerChainGenesisData, Vec>)>, + invulnerables: Vec, +) -> serde_json::Value { starlight_testnet_genesis( - Vec::from([get_authority_keys_from_seed("Alice")]), + Vec::from([get_authority_keys_from_seed("Alice", None)]), get_account_id_from_seed::("Alice"), None, + container_chains, + invulnerables, ) } //local_testnet -fn starlight_local_testnet_genesis() -> serde_json::Value { - starlight_testnet_genesis( - Vec::from([ - get_authority_keys_from_seed("Alice"), - get_authority_keys_from_seed("Bob"), - ]), - get_account_id_from_seed::("Alice"), - None, - ) -} - -/// `Versi` is a temporary testnet that uses the same runtime as starlight. -// versi_local_testnet -fn versi_local_testnet_genesis() -> serde_json::Value { - starlight_testnet_genesis( - Vec::from([ - get_authority_keys_from_seed("Alice"), - get_authority_keys_from_seed("Bob"), - get_authority_keys_from_seed("Charlie"), - get_authority_keys_from_seed("Dave"), - ]), - get_account_id_from_seed::("Alice"), - None, - ) -} - -/// Wococo is a temporary testnet that uses almost the same runtime as starlight. -//wococo_local_testnet -fn wococo_local_testnet_genesis() -> serde_json::Value { +pub fn starlight_local_testnet_genesis( + container_chains: Vec<(ParaId, ContainerChainGenesisData, Vec>)>, + invulnerables: Vec, +) -> serde_json::Value { starlight_testnet_genesis( Vec::from([ - get_authority_keys_from_seed("Alice"), - get_authority_keys_from_seed("Bob"), - get_authority_keys_from_seed("Charlie"), - get_authority_keys_from_seed("Dave"), + get_authority_keys_from_seed("Alice", None), + get_authority_keys_from_seed("Bob", None), ]), get_account_id_from_seed::("Alice"), None, + container_chains, + invulnerables, ) } /// Provides the JSON representation of predefined genesis config for given `id`. pub fn get_preset(id: &sp_genesis_builder::PresetId) -> Option> { let patch = match id.try_into() { - Ok("local_testnet") => starlight_local_testnet_genesis(), - Ok("development") => starlight_development_config_genesis(), + Ok("local_testnet") => starlight_local_testnet_genesis(vec![], vec![]), + Ok("development") => starlight_development_config_genesis(vec![], vec![]), Ok("staging_testnet") => starlight_staging_testnet_config_genesis(), - Ok("wococo_local_testnet") => wococo_local_testnet_genesis(), - Ok("versi_local_testnet") => versi_local_testnet_genesis(), _ => return None, }; Some( diff --git a/solo-chains/runtime/starlight/src/lib.rs b/solo-chains/runtime/starlight/src/lib.rs index 8c1cd5a52..db7ffe0ec 100644 --- a/solo-chains/runtime/starlight/src/lib.rs +++ b/solo-chains/runtime/starlight/src/lib.rs @@ -31,11 +31,12 @@ use { dynamic_params::{dynamic_pallet_params, dynamic_params}, traits::{ConstBool, FromContains}, }, - frame_system::EnsureNever, + frame_system::{pallet_prelude::BlockNumberFor, EnsureNever}, nimbus_primitives::NimbusId, pallet_initializer as tanssi_initializer, pallet_registrar_runtime_api::ContainerChainGenesisData, pallet_session::ShouldEndSession, + parachains_scheduler::common::Assignment, parity_scale_codec::{Decode, Encode, MaxEncodedLen}, primitives::{ slashing, AccountIndex, ApprovalVotingParams, BlockNumber, CandidateEvent, CandidateHash, @@ -54,9 +55,8 @@ use { paras_registrar, paras_sudo_wrapper, BlockHashCount, BlockLength, SlowAdjustingFeeUpdate, }, runtime_parachains::{ - assigner_coretime as parachains_assigner_coretime, assigner_on_demand as parachains_assigner_on_demand, - configuration as parachains_configuration, coretime, + configuration as parachains_configuration, disputes::{self as parachains_disputes, slashing as parachains_slashing}, dmp as parachains_dmp, hrmp as parachains_hrmp, inclusion::{self as parachains_inclusion, AggregateMessageOrigin, UmpQueueId}, @@ -76,7 +76,6 @@ use { collections::{btree_map::BTreeMap, vec_deque::VecDeque}, prelude::*, }, - starlight_runtime_constants::system_parachain::BROKER_ID, tp_traits::{GetSessionContainerChains, Slot, SlotFrequency}, }; @@ -873,7 +872,7 @@ impl parachains_paras::Config for Runtime { type QueueFootprinter = ParaInclusion; type NextSessionRotation = Babe; type OnNewHead = Registrar; - type AssignCoretime = CoretimeAssignmentProvider; + type AssignCoretime = (); } parameter_types! { @@ -948,22 +947,102 @@ impl parachains_paras_inherent::Config for Runtime { impl parachains_scheduler::Config for Runtime { // If you change this, make sure the `Assignment` type of the new provider is binary compatible, // otherwise provide a migration. - type AssignmentProvider = CoretimeAssignmentProvider; + type AssignmentProvider = CollatorAssignmentProvider; } -parameter_types! { - pub const BrokerId: u32 = BROKER_ID; - pub MaxXcmTransactWeight: Weight = Weight::from_parts(200_000_000, 20_000); -} +pub struct CollatorAssignmentProvider; +impl parachains_scheduler::common::AssignmentProvider> + for CollatorAssignmentProvider +{ + fn pop_assignment_for_core(core_idx: CoreIndex) -> Option { + let assigned_collators = TanssiCollatorAssignment::collator_container_chain(); + let assigned_paras: Vec = assigned_collators + .container_chains + .iter() + .filter_map(|(¶_id, _)| { + if Paras::is_parachain(para_id) { + Some(para_id) + } else { + None + } + }) + .collect(); + log::info!("pop assigned collators {:?}", assigned_paras); + log::info!("looking for core idx {:?}", core_idx); + + if let Some(para_id) = assigned_paras.get(core_idx.0 as usize) { + log::info!("outputing assignment for {:?}", para_id); + + Some(Assignment::Bulk(*para_id)) + } else { + // We dont want to assign affinity to a parathread that has not collators assigned + // Even if we did they would need their own collators to produce blocks, but for now + // I prefer to forbid. + // In this case the parathread would have bought the core for nothing + let assignment = + parachains_assigner_on_demand::Pallet::::pop_assignment_for_core( + core_idx, + )?; + if assigned_collators + .container_chains + .contains_key(&assignment.para_id()) + { + Some(assignment) + } else { + None + } + } + } + fn report_processed(assignment: Assignment) { + match assignment { + Assignment::Pool { + para_id, + core_index, + } => parachains_assigner_on_demand::Pallet::::report_processed( + para_id, core_index, + ), + Assignment::Bulk(_) => {} + } + } + /// Push an assignment back to the front of the queue. + /// + /// The assignment has not been processed yet. Typically used on session boundaries. + /// Parameters: + /// - `assignment`: The on demand assignment. + fn push_back_assignment(assignment: Assignment) { + match assignment { + Assignment::Pool { + para_id, + core_index, + } => parachains_assigner_on_demand::Pallet::::push_back_assignment( + para_id, core_index, + ), + Assignment::Bulk(_) => { + // Session changes are rough. We just drop assignments that did not make it on a + // session boundary. This seems sensible as bulk is region based. Meaning, even if + // we made the effort catching up on those dropped assignments, this would very + // likely lead to other assignments not getting served at the "end" (when our + // assignment set gets replaced). + } + } + } -impl coretime::Config for Runtime { - type RuntimeOrigin = RuntimeOrigin; - type RuntimeEvent = RuntimeEvent; - type Currency = Balances; - type BrokerId = BrokerId; - type WeightInfo = coretime::TestWeightInfo; - type SendXcm = crate::xcm_config::XcmRouter; - type MaxXcmTransactWeight = MaxXcmTransactWeight; + #[cfg(feature = "runtime-benchmarks")] + fn get_mock_assignment(_: CoreIndex, para_id: primitives::Id) -> Assignment { + // Given that we are not tracking anything in `Bulk` assignments, it is safe to always + // return a bulk assignment. + Assignment::Bulk(para_id) + } + + fn session_core_count() -> u32 { + let config = runtime_parachains::configuration::ActiveConfig::::get(); + log::info!( + "session core count is {:?}", + config.scheduler_params.num_cores + ); + + config.scheduler_params.num_cores + } } parameter_types! { @@ -977,13 +1056,11 @@ impl parachains_assigner_on_demand::Config for Runtime { type WeightInfo = parachains_assigner_on_demand::TestWeightInfo; } -impl parachains_assigner_coretime::Config for Runtime {} - impl parachains_initializer::Config for Runtime { type Randomness = pallet_babe::RandomnessFromOneEpochAgo; type ForceOrigin = EnsureRoot; type WeightInfo = (); - type CoretimeOnNewSession = Coretime; + type CoretimeOnNewSession = (); } impl parachains_disputes::Config for Runtime { @@ -1262,11 +1339,9 @@ construct_runtime! { ParasSlashing: parachains_slashing = 63, MessageQueue: pallet_message_queue = 64, OnDemandAssignmentProvider: parachains_assigner_on_demand = 66, - CoretimeAssignmentProvider: parachains_assigner_coretime = 68, // Parachain Onboarding Pallets. Start indices at 70 to leave room. Registrar: paras_registrar = 70, - Coretime: coretime = 74, // Pallet for sending XCM. XcmPallet: pallet_xcm = 99, @@ -1497,7 +1572,6 @@ mod benches { // Polkadot // NOTE: Make sure to prefix these with `runtime_common::` so // the that path resolves correctly in the generated file. - [runtime_common::coretime, Coretime] [runtime_common::paras_registrar, Registrar] [runtime_parachains::configuration, Configuration] [runtime_parachains::hrmp, Hrmp] diff --git a/solo-chains/runtime/starlight/src/tests/collator_assignment_tests.rs b/solo-chains/runtime/starlight/src/tests/collator_assignment_tests.rs index 024014a22..607f49ca0 100644 --- a/solo-chains/runtime/starlight/src/tests/collator_assignment_tests.rs +++ b/solo-chains/runtime/starlight/src/tests/collator_assignment_tests.rs @@ -52,12 +52,14 @@ fn test_author_collation_aura_change_of_authorities_on_session() { run_to_block(2); // We change invulnerables // We first need to set the keys - let alice_keys = get_authority_keys_from_seed(&AccountId::from(ALICE).to_string()); - let bob_keys = get_authority_keys_from_seed(&AccountId::from(BOB).to_string()); + let alice_keys = + get_authority_keys_from_seed(&AccountId::from(ALICE).to_string(), None); + let bob_keys = get_authority_keys_from_seed(&AccountId::from(BOB).to_string(), None); // Set CHARLIE and DAVE keys - let charlie_keys = get_authority_keys_from_seed(&AccountId::from(CHARLIE).to_string()); - let dave_keys = get_authority_keys_from_seed(&AccountId::from(DAVE).to_string()); + let charlie_keys = + get_authority_keys_from_seed(&AccountId::from(CHARLIE).to_string(), None); + let dave_keys = get_authority_keys_from_seed(&AccountId::from(DAVE).to_string(), None); assert_ok!(Session::set_keys( origin_of(CHARLIE.into()), @@ -155,9 +157,11 @@ fn test_collators_per_container() { .build() .execute_with(|| { run_to_block(2); - let alice_keys = get_authority_keys_from_seed(&AccountId::from(ALICE).to_string()); - let bob_keys = get_authority_keys_from_seed(&AccountId::from(BOB).to_string()); - let charlie_keys = get_authority_keys_from_seed(&AccountId::from(CHARLIE).to_string()); + let alice_keys = + get_authority_keys_from_seed(&AccountId::from(ALICE).to_string(), None); + let bob_keys = get_authority_keys_from_seed(&AccountId::from(BOB).to_string(), None); + let charlie_keys = + get_authority_keys_from_seed(&AccountId::from(CHARLIE).to_string(), None); assert_ok!(Session::set_keys( origin_of(CHARLIE.into()), @@ -236,11 +240,12 @@ fn test_session_keys_with_authority_assignment() { .build() .execute_with(|| { run_to_block(2); - let alice_keys = get_authority_keys_from_seed(&AccountId::from(ALICE).to_string()); - let bob_keys = get_authority_keys_from_seed(&AccountId::from(BOB).to_string()); + let alice_keys = + get_authority_keys_from_seed(&AccountId::from(ALICE).to_string(), None); + let bob_keys = get_authority_keys_from_seed(&AccountId::from(BOB).to_string(), None); - let alice_keys_2 = get_authority_keys_from_seed("ALICE2"); - let bob_keys_2 = get_authority_keys_from_seed("BOB2"); + let alice_keys_2 = get_authority_keys_from_seed("ALICE2", None); + let bob_keys_2 = get_authority_keys_from_seed("BOB2", None); let key_mapping_session_0 = TanssiAuthorityAssignment::collator_container_chain(0).unwrap(); @@ -409,11 +414,12 @@ fn test_session_keys_with_authority_mapping() { let key_mapping_session_0 = TanssiAuthorityMapping::authority_id_mapping(0).unwrap(); let key_mapping_session_1 = TanssiAuthorityMapping::authority_id_mapping(1).unwrap(); - let alice_keys = get_authority_keys_from_seed(&AccountId::from(ALICE).to_string()); - let bob_keys = get_authority_keys_from_seed(&AccountId::from(BOB).to_string()); + let alice_keys = + get_authority_keys_from_seed(&AccountId::from(ALICE).to_string(), None); + let bob_keys = get_authority_keys_from_seed(&AccountId::from(BOB).to_string(), None); - let alice_keys_2 = get_authority_keys_from_seed("ALICE2"); - let bob_keys_2 = get_authority_keys_from_seed("BOB2"); + let alice_keys_2 = get_authority_keys_from_seed("ALICE2", None); + let bob_keys_2 = get_authority_keys_from_seed("BOB2", None); assert_eq!(key_mapping_session_0.len(), 2); assert_eq!( @@ -572,8 +578,9 @@ fn test_authors_paras_inserted_a_posteriori() { .execute_with(|| { run_to_block(2); - let alice_keys = get_authority_keys_from_seed(&AccountId::from(ALICE).to_string()); - let bob_keys = get_authority_keys_from_seed(&AccountId::from(BOB).to_string()); + let alice_keys = + get_authority_keys_from_seed(&AccountId::from(ALICE).to_string(), None); + let bob_keys = get_authority_keys_from_seed(&AccountId::from(BOB).to_string(), None); assert_eq!( babe_authorities(), diff --git a/solo-chains/runtime/starlight/src/tests/common/mod.rs b/solo-chains/runtime/starlight/src/tests/common/mod.rs index 19edf7e18..7010ca43f 100644 --- a/solo-chains/runtime/starlight/src/tests/common/mod.rs +++ b/solo-chains/runtime/starlight/src/tests/common/mod.rs @@ -16,26 +16,47 @@ #![allow(dead_code)] -use frame_support::assert_ok; use { - crate::RuntimeCall, babe_primitives::{ digests::{PreDigest, SecondaryPlainPreDigest}, BABE_ENGINE_ID, }, - cumulus_primitives_core::ParaId, - frame_support::traits::{OnFinalize, OnInitialize}, + bitvec::prelude::BitVec, + cumulus_primitives_core::{ + relay_chain::{ + node_features::FeatureIndex, AvailabilityBitfield, BackedCandidate, + CandidateCommitments, CandidateDescriptor, CollatorPair, CommittedCandidateReceipt, + CompactStatement, CoreIndex, GroupIndex, HeadData, + InherentData as ParachainsInherentData, PersistedValidationData, SigningContext, + UncheckedSigned, ValidationCode, ValidatorIndex, ValidityAttestation, + }, + ParaId, + }, + frame_support::{ + assert_ok, + traits::{OnFinalize, OnInitialize}, + }, + frame_system::pallet_prelude::{BlockNumberFor, HeaderFor}, nimbus_primitives::NimbusId, pallet_registrar_runtime_api::ContainerChainGenesisData, parity_scale_codec::{Decode, Encode, MaxEncodedLen}, - sp_runtime::traits::Dispatchable, - sp_runtime::{traits::SaturatedConversion, BuildStorage, Digest, DigestItem}, + runtime_parachains::{ + paras::{ParaGenesisArgs, ParaKind}, + paras_inherent as parachains_paras_inherent, + }, + sp_core::Pair, + sp_keystore::{KeystoreExt, KeystorePtr}, + sp_runtime::{ + traits::{Dispatchable, Header, One, SaturatedConversion, Zero}, + BuildStorage, Digest, DigestItem, + }, + sp_std::collections::btree_map::BTreeMap, test_relay_sproof_builder::ParaHeaderSproofBuilder, }; pub use crate::{ genesis_config_presets::get_authority_keys_from_seed, AccountId, AuthorNoting, Babe, Balance, - Grandpa, Initializer, Runtime, Session, System, TanssiAuthorityAssignment, + Grandpa, Initializer, Runtime, RuntimeCall, Session, System, TanssiAuthorityAssignment, TanssiCollatorAssignment, TransactionPayment, }; @@ -183,6 +204,10 @@ pub fn start_block() { Babe::on_initialize(System::block_number()); Session::on_initialize(System::block_number()); Initializer::on_initialize(System::block_number()); + let maybe_mock_inherent = take_new_inherent_data(); + if let Some(mock_inherent_data) = maybe_mock_inherent { + set_paras_inherent(mock_inherent_data); + } } pub fn end_block() { @@ -222,6 +247,7 @@ pub fn default_config() -> pallet_configuration::HostConfiguration { } } +#[derive(Clone)] pub struct ExtBuilder { // endowed accounts with balances balances: Vec<(AccountId, Balance)>, @@ -235,8 +261,10 @@ pub struct ExtBuilder { para_ids: Vec, // configuration to apply config: pallet_configuration::HostConfiguration, + relay_config: runtime_parachains::configuration::HostConfiguration>, own_para_id: Option, next_free_para_id: ParaId, + keystore: Option, } impl Default for ExtBuilder { @@ -255,8 +283,10 @@ impl Default for ExtBuilder { sudo: Default::default(), para_ids: Default::default(), config: default_config(), + relay_config: Default::default(), own_para_id: Default::default(), next_free_para_id: Default::default(), + keystore: None, } } } @@ -309,12 +339,27 @@ impl ExtBuilder { self } + // Maybe change to with_collators_config? + pub fn with_relay_config( + mut self, + relay_config: runtime_parachains::configuration::HostConfiguration>, + ) -> Self { + self.relay_config = relay_config; + self + } + // Maybe change to with_collators_config? pub fn with_next_free_para_id(mut self, para_id: ParaId) -> Self { self.next_free_para_id = para_id; self } + // Maybe change to with_collators_config? + pub fn with_keystore(mut self, keystore: KeystorePtr) -> Self { + self.keystore = Some(keystore); + self + } + pub fn build_storage(self) -> sp_core::storage::Storage { let mut t = frame_system::GenesisConfig::::default() .build_storage() @@ -348,7 +393,34 @@ impl ExtBuilder { ) }) .collect(), - phantom: Default::default(), + ..Default::default() + } + .assimilate_storage(&mut t) + .unwrap(); + + // We register mock wasm + runtime_parachains::paras::GenesisConfig:: { + paras: self + .para_ids + .iter() + .cloned() + .map(|registered_para| { + let para_kind = if registered_para.parathread_params.is_some() { + ParaKind::Parathread + } else { + ParaKind::Parachain + }; + ( + registered_para.para_id.into(), + ParaGenesisArgs { + validation_code: mock_validation_code(), + para_kind, + genesis_head: HeadData::from(vec![0u8]), + }, + ) + }) + .collect(), + ..Default::default() } .assimilate_storage(&mut t) .unwrap(); @@ -369,6 +441,12 @@ impl ExtBuilder { .assimilate_storage(&mut t) .unwrap(); + runtime_parachains::configuration::GenesisConfig:: { + config: self.relay_config, + } + .assimilate_storage(&mut t) + .unwrap(); + let mut keys: Vec<_> = Vec::new(); if !self.validators.is_empty() { let validator_keys: Vec<_> = self @@ -376,7 +454,8 @@ impl ExtBuilder { .clone() .into_iter() .map(|(account, _balance)| { - let authority_keys = get_authority_keys_from_seed(&account.to_string()); + let authority_keys = + get_authority_keys_from_seed(&account.to_string(), self.keystore.as_ref()); ( account.clone(), account, @@ -427,7 +506,8 @@ impl ExtBuilder { if validator_unique_accounts.contains(&account) { None } else { - let authority_keys = get_authority_keys_from_seed(&account.to_string()); + let authority_keys = + get_authority_keys_from_seed(&account.to_string(), None); Some(( account.clone(), account, @@ -458,9 +538,12 @@ impl ExtBuilder { } pub fn build(self) -> sp_io::TestExternalities { + let keystore = self.keystore.clone(); let t = self.build_storage(); let mut ext = sp_io::TestExternalities::new(t); - + if let Some(keystore) = keystore { + ext.register_extension(KeystoreExt(keystore)); + } ext.execute_with(|| { // Start block 1 start_block(); @@ -515,3 +598,431 @@ pub const CHARLIE: [u8; 32] = [6u8; 32]; pub const DAVE: [u8; 32] = [7u8; 32]; pub const EVE: [u8; 32] = [8u8; 32]; pub const FERDIE: [u8; 32] = [9u8; 32]; + +fn take_new_inherent_data() -> Option { + let data: Option = + frame_support::storage::unhashed::take(b"ParasInherent"); + + data +} + +pub fn set_new_inherent_data(data: cumulus_primitives_core::relay_chain::InherentData) { + frame_support::storage::unhashed::put(b"ParasInherent", &data); +} + +/// Mock the inherent that sets validation data in ParachainSystem, which +/// contains the `relay_chain_block_number`, which is used in `collator-assignment` as a +/// source of randomness. +pub fn set_paras_inherent(data: cumulus_primitives_core::relay_chain::InherentData) { + // In order for this inherent to work, we need to match the parent header + // the parent header does not play a significant role in the rest of the framework so + // we are simply going to mock it + System::set_parent_hash(data.parent_header.hash()); + assert_ok!( + RuntimeCall::ParaInherent(parachains_paras_inherent::Call::::enter { data }) + .dispatch(inherent_origin()) + ); + frame_support::storage::unhashed::kill(&frame_support::storage::storage_prefix( + b"ParaInherent", + b"Included", + )); +} + +pub(crate) struct ParasInherentTestBuilder { + /// Starting block number; we expect it to get incremented on session setup. + block_number: BlockNumberFor, + /// Paras here will both be backed in the inherent data and already occupying a core (which is + /// freed via bitfields). + /// + /// Map from para id to number of validity votes. Core indices are generated based on + /// `elastic_paras` configuration. Each para id in `elastic_paras` gets the + /// specified amount of consecutive cores assigned to it. If a para id is not present + /// in `elastic_paras` it get assigned to a single core. + backed_and_concluding_paras: BTreeMap, + + /// Paras which don't yet occupy a core, but will after the inherent has been processed. + backed_in_inherent_paras: BTreeMap, + _phantom: core::marker::PhantomData, +} + +pub fn mock_validation_code() -> ValidationCode { + ValidationCode(vec![1, 2, 3]) +} + +#[allow(dead_code)] +impl ParasInherentTestBuilder { + /// Create a new `BenchBuilder` with some opinionated values that should work with the rest + /// of the functions in this implementation. + pub(crate) fn new() -> Self { + ParasInherentTestBuilder { + block_number: Zero::zero(), + backed_and_concluding_paras: Default::default(), + backed_in_inherent_paras: Default::default(), + _phantom: core::marker::PhantomData::, + } + } + + /// Set a map from para id seed to number of validity votes. + pub(crate) fn set_backed_and_concluding_paras( + mut self, + backed_and_concluding_paras: BTreeMap, + ) -> Self { + self.backed_and_concluding_paras = backed_and_concluding_paras; + self + } + + /// Set a map from para id seed to number of validity votes for votes in inherent data. + pub(crate) fn set_backed_in_inherent_paras(mut self, backed: BTreeMap) -> Self { + self.backed_in_inherent_paras = backed; + self + } + + /// Mock header. + pub(crate) fn header(block_number: BlockNumberFor) -> HeaderFor { + HeaderFor::::new( + block_number, // `block_number`, + Default::default(), // `extrinsics_root`, + Default::default(), // `storage_root`, + Default::default(), // `parent_hash`, + Default::default(), // digest, + ) + } + + /// Maximum number of validators that may be part of a validator group. + pub(crate) fn fallback_max_validators() -> u32 { + runtime_parachains::configuration::ActiveConfig::::get() + .max_validators + .unwrap_or(200) + } + + /// Maximum number of validators participating in parachains consensus (a.k.a. active + /// validators). + fn max_validators(&self) -> u32 { + Self::fallback_max_validators() + } + + /// Maximum number of validators per core (a.k.a. max validators per group). This value is used + /// if none is explicitly set on the builder. + pub(crate) fn fallback_max_validators_per_core() -> u32 { + runtime_parachains::configuration::ActiveConfig::::get() + .scheduler_params + .max_validators_per_core + .unwrap_or(5) + } + + /// Get the maximum number of validators per core. + fn max_validators_per_core(&self) -> u32 { + Self::fallback_max_validators_per_core() + } + + /// Get the maximum number of cores we expect from this configuration. + pub(crate) fn max_cores(&self) -> u32 { + self.max_validators() / self.max_validators_per_core() + } + + /// Create an `AvailabilityBitfield` where `concluding` is a map where each key is a core index + /// that is concluding and `cores` is the total number of cores in the system. + fn availability_bitvec(used_cores: usize, cores: usize) -> AvailabilityBitfield { + let mut bitfields = bitvec::bitvec![u8, bitvec::order::Lsb0; 0; 0]; + for i in 0..cores { + if i < used_cores { + bitfields.push(true); + } else { + bitfields.push(false) + } + } + + bitfields.into() + } + + /// Create a bitvec of `validators` length with all yes votes. + fn validator_availability_votes_yes(validators: usize) -> BitVec { + // every validator confirms availability. + bitvec::bitvec![u8, bitvec::order::Lsb0; 1; validators] + } + + pub fn mock_head_data() -> HeadData { + let max_head_size = + runtime_parachains::configuration::ActiveConfig::::get().max_head_data_size; + HeadData(vec![0xFF; max_head_size as usize]) + } + + /// Number of the relay parent block. + fn relay_parent_number(&self) -> u32 { + (Self::block_number() - One::one()) + .try_into() + .map_err(|_| ()) + .expect("Self::block_number() is u32") + } + + /// Create backed candidates for `cores_with_backed_candidates`. You need these cores to be + /// scheduled _within_ paras inherent, which requires marking the available bitfields as fully + /// available. + /// - `cores_with_backed_candidates` Mapping of `para_id` seed to number of + /// validity votes. + /// Important! this uses a BtreeMap, which means that elements will use increasing core orders + /// example: if we have parachains 1000, 1001, and 1002, they will use respectively cores + /// 0 1 and 2. There is no way in which we force 1002 to use core 0 in this setup + fn create_backed_candidates( + &self, + paras_with_backed_candidates: &BTreeMap, + ) -> Vec> { + let current_session = runtime_parachains::shared::CurrentSessionIndex::::get(); + // We need to refetch validators since they have been shuffled. + let validators_shuffled = + runtime_parachains::session_info::Sessions::::get(current_session) + .unwrap() + .validators + .clone(); + + let config = runtime_parachains::configuration::ActiveConfig::::get(); + let mut current_core_idx = 0u32; + paras_with_backed_candidates + .iter() + .flat_map(|(seed, num_votes)| { + assert!(*num_votes <= validators_shuffled.len() as u32); + + let para_id = ParaId::from(*seed); + let prev_head_non_mut = runtime_parachains::paras::Heads::::get(para_id); + let prev_head = prev_head_non_mut.unwrap_or(Self::mock_head_data()); + // How many chained candidates we want to build ? + (0..1) + .map(|chain_idx| { + let core_idx = CoreIndex::from(current_core_idx); + // Advance core index. + current_core_idx += 1; + let group_idx = + Self::group_assigned_to_core(core_idx, Self::block_number()) + .unwrap_or_else(|| { + panic!("Validator group not assigned to core {:?}", core_idx) + }); + + let header = Self::header(Self::block_number()); + let relay_parent = header.hash(); + + // Set the head data so it can be used while validating the signatures on + // the candidate receipt. + let mut head_data = Self::mock_head_data(); + + if chain_idx == 0 { + // Only first parahead of the chain needs to be set in storage. + Self::heads_insert(¶_id, prev_head.clone()); + } else { + // Make each candidate head data unique to avoid cycles. + head_data.0[0] = chain_idx; + } + + let persisted_validation_data = PersistedValidationData:: { + // To form a chain we set parent head to previous block if any, or + // default to what is in storage already setup. + parent_head: prev_head.clone(), + relay_parent_number: self.relay_parent_number() + 1, + relay_parent_storage_root: Default::default(), + max_pov_size: config.max_pov_size, + }; + + let persisted_validation_data_hash = persisted_validation_data.hash(); + + let pov_hash = Default::default(); + let validation_code_hash = mock_validation_code().hash(); + let payload = + cumulus_primitives_core::relay_chain::collator_signature_payload( + &relay_parent, + ¶_id, + &persisted_validation_data_hash, + &pov_hash, + &validation_code_hash, + ); + + let collator_pair = CollatorPair::generate().0; + + let signature = collator_pair.sign(&payload); + + let group_validators = Self::group_validators(group_idx).unwrap(); + + let candidate = CommittedCandidateReceipt:: { + descriptor: CandidateDescriptor:: { + para_id, + relay_parent, + collator: collator_pair.public(), + persisted_validation_data_hash, + pov_hash, + erasure_root: Default::default(), + signature, + para_head: prev_head.hash(), + validation_code_hash, + }, + commitments: CandidateCommitments:: { + upward_messages: Default::default(), + horizontal_messages: Default::default(), + new_validation_code: None, + head_data: prev_head.clone(), + processed_downward_messages: 0, + hrmp_watermark: self.relay_parent_number() + 1, + }, + }; + + let candidate_hash = candidate.hash(); + + let validity_votes: Vec<_> = group_validators + .iter() + .take(*num_votes as usize) + .map(|val_idx| { + let public = validators_shuffled.get(*val_idx).unwrap(); + + let signature_ctx = SigningContext { + parent_hash: Self::header(Self::block_number()).hash(), + session_index: Session::current_index(), + }; + let sig = UncheckedSigned::::benchmark_sign( + public, + CompactStatement::Valid(candidate_hash), + &signature_ctx, + *val_idx, + ) + .benchmark_signature(); + + ValidityAttestation::Explicit(sig.clone()) + }) + .collect(); + + // Check if the elastic scaling bit is set, if so we need to supply the core + // index in the generated candidate. + let core_idx = runtime_parachains::configuration::ActiveConfig::::get() + .node_features + .get(FeatureIndex::ElasticScalingMVP as usize) + .map(|_the_bit| core_idx); + + BackedCandidate::::new( + candidate, + validity_votes, + bitvec::bitvec![u8, bitvec::order::Lsb0; 1; group_validators.len()], + core_idx, + ) + }) + .collect::>() + }) + .collect() + } + /// Get the group assigned to a specific core by index at the current block number. Result + /// undefined if the core index is unknown or the block number is less than the session start + /// index. + pub(crate) fn group_assigned_to_core( + core: CoreIndex, + at: BlockNumberFor, + ) -> Option { + let config = runtime_parachains::configuration::ActiveConfig::::get(); + let session_start_block = runtime_parachains::scheduler::SessionStartBlock::::get(); + + if at < session_start_block { + return None; + } + + let validator_groups = runtime_parachains::scheduler::ValidatorGroups::::get(); + + if core.0 as usize >= validator_groups.len() { + return None; + } + + let rotations_since_session_start: BlockNumberFor = + (at - session_start_block) / config.scheduler_params.group_rotation_frequency; + + let rotations_since_session_start = + as TryInto>::try_into(rotations_since_session_start) + .unwrap_or(0); + // Error case can only happen if rotations occur only once every u32::max(), + // so functionally no difference in behavior. + + let group_idx = + (core.0 as usize + rotations_since_session_start as usize) % validator_groups.len(); + Some(GroupIndex(group_idx as u32)) + } + + /// Get the validators in the given group, if the group index is valid for this session. + pub(crate) fn group_validators(group_index: GroupIndex) -> Option> { + runtime_parachains::scheduler::ValidatorGroups::::get() + .get(group_index.0 as usize) + .map(|g| g.clone()) + } + + pub fn heads_insert(para_id: &ParaId, head_data: HeadData) { + runtime_parachains::paras::Heads::::insert(para_id, head_data); + } + + /// Build a scenario for testing. + /// + /// Note that this API only allows building scenarios where the `backed_and_concluding_paras` + /// are mutually exclusive with the cores for disputes. So + /// `backed_and_concluding_paras.len() + dispute_sessions.len() + backed_in_inherent_paras` must + /// be less than the max number of cores. + pub(crate) fn build(self) -> ParachainsInherentData> { + let current_session = runtime_parachains::shared::CurrentSessionIndex::::get(); + // We need to refetch validators since they have been shuffled. + let validators = runtime_parachains::session_info::Sessions::::get(current_session) + .unwrap() + .validators + .clone(); + + let max_cores = self.max_cores() as usize; + + let used_cores = + self.backed_and_concluding_paras.len() + self.backed_in_inherent_paras.len(); + assert!(used_cores <= max_cores); + let mut backed_in_inherent = BTreeMap::new(); + backed_in_inherent.append(&mut self.backed_and_concluding_paras.clone()); + backed_in_inherent.append(&mut self.backed_in_inherent_paras.clone()); + let backed_candidates = self.create_backed_candidates(&backed_in_inherent); + + let availability_bitvec = Self::availability_bitvec(used_cores, max_cores); + + let bitfields: Vec> = validators + .iter() + .enumerate() + .map(|(i, public)| { + let unchecked_signed = UncheckedSigned::::benchmark_sign( + public, + availability_bitvec.clone(), + &SigningContext { + parent_hash: Self::header(Self::block_number()).hash(), + session_index: Session::current_index(), + }, + ValidatorIndex(i as u32), + ); + + unchecked_signed + }) + .collect(); + + ParachainsInherentData { + bitfields, + backed_candidates, + disputes: vec![], + parent_header: Self::header(Self::block_number()), + } + } + + pub(crate) fn block_number() -> BlockNumberFor { + frame_system::Pallet::::block_number() + } +} + +use frame_support::StorageHasher; +pub fn storage_map_final_key( + pallet_prefix: &str, + map_name: &str, + key: &[u8], +) -> Vec { + let key_hashed = H::hash(key); + let pallet_prefix_hashed = frame_support::Twox128::hash(pallet_prefix.as_bytes()); + let storage_prefix_hashed = frame_support::Twox128::hash(map_name.as_bytes()); + + let mut final_key = Vec::with_capacity( + pallet_prefix_hashed.len() + storage_prefix_hashed.len() + key_hashed.as_ref().len(), + ); + + final_key.extend_from_slice(&pallet_prefix_hashed[..]); + final_key.extend_from_slice(&storage_prefix_hashed[..]); + final_key.extend_from_slice(key_hashed.as_ref()); + + final_key +} diff --git a/solo-chains/runtime/starlight/src/tests/core_scheduling_tests.rs b/solo-chains/runtime/starlight/src/tests/core_scheduling_tests.rs new file mode 100644 index 000000000..5ee62f30e --- /dev/null +++ b/solo-chains/runtime/starlight/src/tests/core_scheduling_tests.rs @@ -0,0 +1,728 @@ +// Copyright (C) Moondance Labs Ltd. +// This file is part of Tanssi. + +// Tanssi is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Tanssi is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Tanssi. If not, see + +#![cfg(test)] + +use { + crate::tests::common::*, + crate::{ContainerRegistrar, OnDemandAssignmentProvider, Paras, ParasSudoWrapper, Session}, + cumulus_primitives_core::relay_chain::{ + vstaging::SchedulerParams, AsyncBackingParams, CoreIndex, + }, + frame_support::assert_ok, + frame_system::pallet_prelude::BlockNumberFor, + primitives::runtime_api::runtime_decl_for_parachain_host::ParachainHostV11, + runtime_parachains::paras::{ParaGenesisArgs, ParaKind}, + sp_core::{Decode, Encode}, + sp_keystore::testing::MemoryKeystore, + sp_std::{collections::btree_map::BTreeMap, vec}, + starlight_runtime_constants::time::EpochDurationInBlocks, + std::sync::Arc, + tp_traits::SlotFrequency, +}; + +#[test] +#[should_panic(expected = "CandidatesFilteredDuringExecution")] +// This test does not panic when producing the candidate, but when injecting it as backed +// the inclusion pallet will filter it as it does not have a core assigned +fn test_cannot_propose_a_block_without_availability() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .with_collators(vec![ + (AccountId::from(ALICE), 210 * UNIT), + (AccountId::from(BOB), 100 * UNIT), + ]) + .with_config(pallet_configuration::HostConfiguration { + max_collators: 2, + min_orchestrator_collators: 0, + max_orchestrator_collators: 0, + collators_per_container: 2, + ..Default::default() + }) + .with_relay_config(runtime_parachains::configuration::HostConfiguration::< + BlockNumberFor, + > { + scheduler_params: SchedulerParams { + num_cores: 2, + // A very high number to avoid group rotation in tests + // Otherwise we get a 1 by default, which changes groups every block + group_rotation_frequency: 10000000, + ..Default::default() + }, + async_backing_params: AsyncBackingParams { + allowed_ancestry_len: 1, + max_candidate_depth: 0, + }, + minimum_backing_votes: 1, + max_head_data_size: 5, + ..Default::default() + }) + .with_keystore(Arc::new(MemoryKeystore::new())) + .build() + .execute_with(|| { + run_to_block(2); + let cores_with_backed: BTreeMap<_, _> = + vec![(1000u32, Session::validators().len() as u32)] + .into_iter() + .collect(); + + let inherent_data = ParasInherentTestBuilder::::new() + .set_backed_and_concluding_paras(cores_with_backed) + .build(); + set_new_inherent_data(inherent_data); + run_block(); + }) +} + +#[test] +#[should_panic(expected = "CandidatesFilteredDuringExecution")] +// This test does not panic when producing the candidate, but when injecting it as backed +// the inclusion pallet will filter it as it does not have a core assigned +fn test_cannot_produce_block_even_if_buying_on_demand_if_no_collators() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .with_config(pallet_configuration::HostConfiguration { + max_collators: 2, + min_orchestrator_collators: 0, + max_orchestrator_collators: 0, + collators_per_container: 2, + ..Default::default() + }) + .with_para_ids(vec![ParaRegistrationParams { + para_id: 1000, + genesis_data: empty_genesis_data(), + block_production_credits: u32::MAX, + collator_assignment_credits: u32::MAX, + parathread_params: None, + }]) + .with_relay_config(runtime_parachains::configuration::HostConfiguration::< + BlockNumberFor, + > { + scheduler_params: SchedulerParams { + num_cores: 2, + // A very high number to avoid group rotation in tests + // Otherwise we get a 1 by default, which changes groups every block + group_rotation_frequency: 10000000, + ..Default::default() + }, + async_backing_params: AsyncBackingParams { + allowed_ancestry_len: 1, + max_candidate_depth: 0, + }, + minimum_backing_votes: 1, + max_head_data_size: 5, + ..Default::default() + }) + .with_keystore(Arc::new(MemoryKeystore::new())) + .build() + .execute_with(|| { + run_to_block(2); + // Here para-id is not registered, but we can indeed buy a on-demand core for a non-existing para + // however we should not be able to produce for it + assert_ok!(OnDemandAssignmentProvider::place_order_allow_death( + origin_of(ALICE.into()), + 100 * UNIT, + 1000u32.into() + )); + run_block(); + // Now we try to create the block + let cores_with_backed: BTreeMap<_, _> = + vec![(1000u32, Session::validators().len() as u32)] + .into_iter() + .collect(); + + let inherent_data = ParasInherentTestBuilder::::new() + .set_backed_and_concluding_paras(cores_with_backed) + .build(); + set_new_inherent_data(inherent_data); + // This should filter out, as we dont have any collators assigned to it + run_block(); + }) +} + +#[test] +#[should_panic(expected = "CandidatesFilteredDuringExecution")] +// This test does not panic when producing the candidate, but when injecting it as backed +// the inclusion pallet will filter it as it does not have a core assigned +fn test_parathread_that_does_not_buy_core_does_not_have_affinity() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .with_config(pallet_configuration::HostConfiguration { + max_collators: 2, + min_orchestrator_collators: 0, + max_orchestrator_collators: 0, + collators_per_container: 2, + ..Default::default() + }) + .with_collators(vec![ + (AccountId::from(ALICE), 210 * UNIT), + (AccountId::from(BOB), 100 * UNIT), + ]) + .with_para_ids(vec![ParaRegistrationParams { + para_id: 1000, + genesis_data: empty_genesis_data(), + block_production_credits: u32::MAX, + collator_assignment_credits: u32::MAX, + parathread_params: Some(tp_traits::ParathreadParams { + slot_frequency: SlotFrequency { min: 1, max: 1 }, + }), + }]) + .with_relay_config(runtime_parachains::configuration::HostConfiguration::< + BlockNumberFor, + > { + scheduler_params: SchedulerParams { + num_cores: 2, + // A very high number to avoid group rotation in tests + // Otherwise we get a 1 by default, which changes groups every block + group_rotation_frequency: 10000000, + ..Default::default() + }, + async_backing_params: AsyncBackingParams { + allowed_ancestry_len: 1, + max_candidate_depth: 0, + }, + minimum_backing_votes: 1, + max_head_data_size: 5, + ..Default::default() + }) + .with_keystore(Arc::new(MemoryKeystore::new())) + .build() + .execute_with(|| { + run_to_block(2); + // Now the parathread should be there + assert!(Paras::is_parathread(1000u32.into())); + let alice_keys = + get_authority_keys_from_seed(&AccountId::from(ALICE).to_string(), None); + + // Parathread should have collators + assert!( + authorities_for_container(1000u32.into()) == Some(vec![alice_keys.nimbus.clone()]) + ); + + // We try producing without having an on-demand core, this should panic + let cores_with_backed: BTreeMap<_, _> = + vec![(1000u32, Session::validators().len() as u32)] + .into_iter() + .collect(); + + let inherent_data = ParasInherentTestBuilder::::new() + .set_backed_and_concluding_paras(cores_with_backed) + .build(); + set_new_inherent_data(inherent_data); + // This should filter out, as we dont have an on-demand core bought + run_block(); + }) +} + +#[test] +// This test does not panic when producing the candidate, but when injecting it as backed +// the inclusion pallet will filter it as it does not have a core assigned +fn test_parathread_that_buys_core_has_affinity_and_can_produce() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .with_config(pallet_configuration::HostConfiguration { + max_collators: 2, + min_orchestrator_collators: 0, + max_orchestrator_collators: 0, + collators_per_container: 2, + ..Default::default() + }) + .with_collators(vec![ + (AccountId::from(ALICE), 210 * UNIT), + (AccountId::from(BOB), 100 * UNIT), + ]) + .with_para_ids(vec![ParaRegistrationParams { + para_id: 1000, + genesis_data: empty_genesis_data(), + block_production_credits: u32::MAX, + collator_assignment_credits: u32::MAX, + parathread_params: Some(tp_traits::ParathreadParams { + slot_frequency: SlotFrequency { min: 1, max: 1 }, + }), + }]) + .with_relay_config(runtime_parachains::configuration::HostConfiguration::< + BlockNumberFor, + > { + scheduler_params: SchedulerParams { + num_cores: 2, + // A very high number to avoid group rotation in tests + // Otherwise we get a 1 by default, which changes groups every block + group_rotation_frequency: 10000000, + ..Default::default() + }, + async_backing_params: AsyncBackingParams { + allowed_ancestry_len: 1, + max_candidate_depth: 0, + }, + minimum_backing_votes: 1, + max_head_data_size: 5, + ..Default::default() + }) + .with_keystore(Arc::new(MemoryKeystore::new())) + .build() + .execute_with(|| { + run_to_block(2); + // Now the parathread should be there + assert!(Paras::is_parathread(1000u32.into())); + let alice_keys = + get_authority_keys_from_seed(&AccountId::from(ALICE).to_string(), None); + + // Parathread should have collators + assert!( + authorities_for_container(1000u32.into()) == Some(vec![alice_keys.nimbus.clone()]) + ); + + // let's buy core + assert_ok!(OnDemandAssignmentProvider::place_order_allow_death( + origin_of(ALICE.into()), + 100 * UNIT, + 1000u32.into() + )); + run_block(); + + // We try producing having an on-demand core + let cores_with_backed: BTreeMap<_, _> = + vec![(1000u32, Session::validators().len() as u32)] + .into_iter() + .collect(); + + let inherent_data = ParasInherentTestBuilder::::new() + .set_backed_and_concluding_paras(cores_with_backed) + .build(); + set_new_inherent_data(inherent_data); + + let availability_before = Runtime::candidates_pending_availability(1000u32.into()); + // Before there is no availability as we never injected a candidate + assert_eq!(availability_before.len(), 0); + // This should work + run_block(); + let availability_after = Runtime::candidates_pending_availability(1000u32.into()); + // After the availability length is 1 as we have one candidate succesfully backed + assert_eq!(availability_after.len(), 1); + }) +} + +#[test] +fn test_on_demand_core_affinity_bound_to_core_gets_expired_at_session_boundaries() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .with_config(pallet_configuration::HostConfiguration { + max_collators: 2, + min_orchestrator_collators: 0, + max_orchestrator_collators: 0, + collators_per_container: 2, + ..Default::default() + }) + .with_collators(vec![ + (AccountId::from(ALICE), 210 * UNIT), + (AccountId::from(BOB), 100 * UNIT), + ]) + .with_para_ids(vec![ParaRegistrationParams { + para_id: 1000, + genesis_data: empty_genesis_data(), + block_production_credits: u32::MAX, + collator_assignment_credits: u32::MAX, + parathread_params: Some(tp_traits::ParathreadParams { + slot_frequency: SlotFrequency { min: 1, max: 1 }, + }), + }]) + .with_relay_config(runtime_parachains::configuration::HostConfiguration::< + BlockNumberFor, + > { + scheduler_params: SchedulerParams { + num_cores: 2, + // A very high number to avoid group rotation in tests + // Otherwise we get a 1 by default, which changes groups every block + group_rotation_frequency: 10000000, + ttl: 2, + ..Default::default() + }, + async_backing_params: AsyncBackingParams { + allowed_ancestry_len: 1, + max_candidate_depth: 0, + }, + minimum_backing_votes: 1, + max_head_data_size: 5, + ..Default::default() + }) + .with_keystore(Arc::new(MemoryKeystore::new())) + .build() + .execute_with(|| { + run_to_block(2); + // Now the parathread should be there + assert!(Paras::is_parathread(1000u32.into())); + let alice_keys = + get_authority_keys_from_seed(&AccountId::from(ALICE).to_string(), None); + + // Parathread should have collators + assert!( + authorities_for_container(1000u32.into()) == Some(vec![alice_keys.nimbus.clone()]) + ); + + // let's buy core + assert_ok!(OnDemandAssignmentProvider::place_order_allow_death( + origin_of(ALICE.into()), + 100 * UNIT, + 1000u32.into() + )); + + // We try producing having an on-demand core + let cores_with_backed: BTreeMap<_, _> = + vec![(1000u32, Session::validators().len() as u32)] + .into_iter() + .collect(); + + let inherent_data = ParasInherentTestBuilder::::new() + .set_backed_and_concluding_paras(cores_with_backed) + .build(); + set_new_inherent_data(inherent_data); + run_block(); + + run_to_session(1); + + // When we do run_to_session, we only do on_initialize(block in which session changed) + // Since we still did not do on_finalize, the parathread is still bounded to core 0 + let key = storage_map_final_key::( + "OnDemandAssignmentProvider", + "ParaIdAffinity", + &cumulus_primitives_core::ParaId::from(1000u32).encode(), + ); + let value_before_session: Option = + frame_support::storage::unhashed::get(key.as_ref()); + + assert_eq!( + value_before_session, + Some(CoreAffinityCount { + core_index: CoreIndex(0), + count: 1 + }) + ); + + // However as soon as we do on_finalize of the current block (the session boundary change block) the affinity + // will be removed, allowing parathread 1000 to use any core available that is not 0 + // The latter is demonstrated better in the following test + end_block(); + let value_after_session: Option = + frame_support::storage::unhashed::get(key.as_ref()); + assert_eq!(value_after_session, None); + }) +} +#[test] +fn test_parathread_uses_0_and_then_1_after_parachain_onboarded() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .with_config(pallet_configuration::HostConfiguration { + max_collators: 2, + min_orchestrator_collators: 0, + max_orchestrator_collators: 0, + collators_per_container: 1, + collators_per_parathread: 1, + ..Default::default() + }) + .with_collators(vec![ + (AccountId::from(ALICE), 210 * UNIT), + (AccountId::from(BOB), 100 * UNIT), + ]) + .with_para_ids(vec![ParaRegistrationParams { + para_id: 1001, + genesis_data: empty_genesis_data(), + block_production_credits: u32::MAX, + collator_assignment_credits: u32::MAX, + parathread_params: Some(tp_traits::ParathreadParams { + slot_frequency: SlotFrequency { min: 1, max: 1 }, + }), + }]) + .with_relay_config(runtime_parachains::configuration::HostConfiguration::< + BlockNumberFor, + > { + scheduler_params: SchedulerParams { + num_cores: 2, + // A very high number to avoid group rotation in tests + // Otherwise we get a 1 by default, which changes groups every block + group_rotation_frequency: 10000000, + ttl: 2, + ..Default::default() + }, + async_backing_params: AsyncBackingParams { + allowed_ancestry_len: 1, + max_candidate_depth: 0, + }, + minimum_backing_votes: 1, + max_head_data_size: 5, + ..Default::default() + }) + .with_keystore(Arc::new(MemoryKeystore::new())) + .build() + .execute_with(|| { + // IMPORTANT: we use parachain 1000 and parathread 1001 because when both cores + // need to be used, they will get inserted in the cores_with_backed map ordered + // this is, 1000 will go first, then 1001. Since we want 1000 to use core 0, + // the only way to achieve this is by assigning the parathread a higher para-id + run_to_block(2); + // Now the parathread should be there + assert!(Paras::is_parathread(1001u32.into())); + let alice_keys = + get_authority_keys_from_seed(&AccountId::from(ALICE).to_string(), None); + + // Parathread should have collators + assert!( + authorities_for_container(1001u32.into()) == Some(vec![alice_keys.nimbus.clone()]) + ); + + // Register parachain + assert_ok!(ContainerRegistrar::register( + origin_of(ALICE.into()), + 1000.into(), + empty_genesis_data() + )); + assert_ok!(ContainerRegistrar::mark_valid_for_collating( + root_origin(), + 1000.into() + )); + assert_ok!(ParasSudoWrapper::sudo_schedule_para_initialize( + root_origin(), + 1000.into(), + ParaGenesisArgs { + genesis_head: ParasInherentTestBuilder::::mock_head_data(), + validation_code: mock_validation_code(), + para_kind: ParaKind::Parachain, + }, + )); + + assert_ok!(Paras::add_trusted_validation_code( + root_origin(), + mock_validation_code() + )); + + // The parathread now uses core 0 but once the parachain is onboarded (and gets collators) + // it should use core 1. + // let's just go to the block right before edge of session 2. + let epoch_duration = EpochDurationInBlocks::get(); + + run_to_block(2 * epoch_duration - 1); + // we are not a parachain yet + assert!(!Paras::is_parachain(1000u32.into())); + // we dont have authorities + assert_eq!(authorities_for_container(1000u32.into()), None); + + // let's buy core for 1001 + assert_ok!(OnDemandAssignmentProvider::place_order_allow_death( + origin_of(ALICE.into()), + 100 * UNIT, + 1001u32.into() + )); + + // We try producing having an on-demand core + let cores_with_backed: BTreeMap<_, _> = + vec![(1001u32, Session::validators().len() as u32)] + .into_iter() + .collect(); + + let inherent_data = ParasInherentTestBuilder::::new() + .set_backed_and_concluding_paras(cores_with_backed) + .build(); + set_new_inherent_data(inherent_data.clone()); + run_block(); + + let key = storage_map_final_key::( + "OnDemandAssignmentProvider", + "ParaIdAffinity", + &cumulus_primitives_core::ParaId::from(1001u32).encode(), + ); + let value_before_session: Option = + frame_support::storage::unhashed::get(key.as_ref()); + + // 1001 is bounded to core 0! + assert_eq!( + value_before_session, + Some(CoreAffinityCount { + core_index: CoreIndex(0), + count: 1 + }) + ); + + // let's run to right after the edge + // We need one more run block to trigger the on_finalize + run_to_session(2); + run_block(); + // Now the parachain should be there + assert!(Paras::is_parachain(1000u32.into())); + + let bob_keys = get_authority_keys_from_seed(&AccountId::from(BOB).to_string(), None); + // we should have authorities now: two sessions elapsed and para is parachain already + assert_eq!( + authorities_for_container(1000u32.into()), + Some(vec![bob_keys.nimbus.clone()]) + ); + + // 1000 should occupy core 0 now, as it is a parachains. which means if we try to buy a core (and use it) + // for parathread 1001 then it should assign core 1 to the parathread + // let's buy core for 1001 + assert_ok!(OnDemandAssignmentProvider::place_order_allow_death( + origin_of(ALICE.into()), + 100 * UNIT, + 1001u32.into() + )); + + // We try producing having an on-demand core + let cores_with_backed: BTreeMap<_, _> = vec![ + (1000u32, Session::validators().len() as u32), + (1001u32, Session::validators().len() as u32), + ] + .into_iter() + .collect(); + + let inherent_data = ParasInherentTestBuilder::::new() + .set_backed_and_concluding_paras(cores_with_backed) + .build(); + + set_new_inherent_data(inherent_data); + run_block(); + + let value_after_session: Option = + frame_support::storage::unhashed::get(key.as_ref()); + + // 1001 is bounded to core 1! + assert_eq!( + value_after_session, + Some(CoreAffinityCount { + core_index: CoreIndex(1), + count: 1 + }) + ); + }) +} + +#[test] +fn test_should_have_availability_for_registered_parachain() { + ExtBuilder::default() + .with_balances(vec![ + // Alice gets 10k extra tokens for her mapping deposit + (AccountId::from(ALICE), 210_000 * UNIT), + (AccountId::from(BOB), 100_000 * UNIT), + (AccountId::from(CHARLIE), 100_000 * UNIT), + (AccountId::from(DAVE), 100_000 * UNIT), + ]) + .with_collators(vec![ + (AccountId::from(ALICE), 210 * UNIT), + (AccountId::from(BOB), 100 * UNIT), + ]) + .with_config(pallet_configuration::HostConfiguration { + max_collators: 2, + min_orchestrator_collators: 0, + max_orchestrator_collators: 0, + collators_per_container: 2, + ..Default::default() + }) + .with_relay_config(runtime_parachains::configuration::HostConfiguration::< + BlockNumberFor, + > { + scheduler_params: SchedulerParams { + num_cores: 2, + // A very high number to avoid group rotation in tests + // Otherwise we get a 1 by default, which changes groups every block + group_rotation_frequency: 10000000, + ..Default::default() + }, + async_backing_params: AsyncBackingParams { + allowed_ancestry_len: 1, + max_candidate_depth: 0, + }, + minimum_backing_votes: 1, + max_head_data_size: 5, + ..Default::default() + }) + .with_para_ids(vec![ParaRegistrationParams { + para_id: 1000, + genesis_data: empty_genesis_data(), + block_production_credits: u32::MAX, + collator_assignment_credits: u32::MAX, + parathread_params: None, + }]) + .with_keystore(Arc::new(MemoryKeystore::new())) + .build() + .execute_with(|| { + run_to_block(2); + + let cores_with_backed: BTreeMap<_, _> = + vec![(1000u32, Session::validators().len() as u32)] + .into_iter() + .collect(); + let alice_keys = + get_authority_keys_from_seed(&AccountId::from(ALICE).to_string(), None); + let bob_keys = get_authority_keys_from_seed(&AccountId::from(BOB).to_string(), None); + + // This should make sure we have a core-assigned + assert!( + authorities_for_container(1000u32.into()) + == Some(vec![alice_keys.nimbus.clone(), bob_keys.nimbus.clone()]) + ); + let inherent_data = ParasInherentTestBuilder::::new() + .set_backed_and_concluding_paras(cores_with_backed) + .build(); + set_new_inherent_data(inherent_data); + let availability_before = Runtime::candidates_pending_availability(1000u32.into()); + // Before there is no availability as we never injected a candidate + assert_eq!(availability_before.len(), 0); + run_block(); + let availability_after = Runtime::candidates_pending_availability(1000u32.into()); + // After the availability length is 1 as we have one candidate succesfully backed + assert_eq!(availability_after.len(), 1); + }) +} + +// we dont have access to the type so this is the only thing we can do +#[derive(Encode, Decode, Debug, Default, Clone, Copy, PartialEq, scale_info::TypeInfo)] +pub struct CoreAffinityCount { + pub core_index: cumulus_primitives_core::relay_chain::CoreIndex, + pub count: u32, +} diff --git a/solo-chains/runtime/starlight/src/tests/mod.rs b/solo-chains/runtime/starlight/src/tests/mod.rs index 8b96eba9b..a04022791 100644 --- a/solo-chains/runtime/starlight/src/tests/mod.rs +++ b/solo-chains/runtime/starlight/src/tests/mod.rs @@ -23,6 +23,7 @@ use {frame_support::traits::WhitelistedStorageKeys, sp_core::hexdisplay::HexDisp mod author_noting_tests; mod collator_assignment_tests; mod common; +mod core_scheduling_tests; mod integration_test; mod relay_configuration; mod relay_registrar; diff --git a/solo-chains/runtime/starlight/src/tests/session_keys.rs b/solo-chains/runtime/starlight/src/tests/session_keys.rs index 95eff228e..98c5deea2 100644 --- a/solo-chains/runtime/starlight/src/tests/session_keys.rs +++ b/solo-chains/runtime/starlight/src/tests/session_keys.rs @@ -31,8 +31,9 @@ fn session_key_changes_are_reflected_after_two_sessions() { .build() .execute_with(|| { run_to_block(2); - let alice_keys = get_authority_keys_from_seed(&AccountId::from(ALICE).to_string()); - let dave_keys = get_authority_keys_from_seed(&AccountId::from(DAVE).to_string()); + let alice_keys = + get_authority_keys_from_seed(&AccountId::from(ALICE).to_string(), None); + let dave_keys = get_authority_keys_from_seed(&AccountId::from(DAVE).to_string(), None); // let's assert that session keys in all pallets are this // Babe diff --git a/test/configs/zombieStarlight.json b/test/configs/zombieStarlight.json index 13c21e5a9..58ddc7611 100644 --- a/test/configs/zombieStarlight.json +++ b/test/configs/zombieStarlight.json @@ -4,7 +4,7 @@ "provider": "native" }, "relaychain": { - "chain": "starlight-local", + "chain_spec_path": "specs/tanssi-relay.json", "default_command": "../target/release/tanssi-relay", "default_args": ["--no-hardware-benchmarks", "-lparachain=debug", "--database=paritydb", "--no-beefy"], "genesis": { @@ -17,7 +17,8 @@ "max_candidate_depth": 3 }, "scheduler_params": { - "scheduling_lookahead": 2 + "scheduling_lookahead": 2, + "num_cores": 1 } } } @@ -33,21 +34,13 @@ { "name": "bob", "validator": true - }, - { - "name": "charlie", - "validator": true - }, - { - "name": "dave", - "validator": true } ] }, "parachains": [ { "id": 1000, - "chain_spec_path": "specs/single-container-tanssi-1000.json", + "chain_spec_path": "specs/single-dancebox-container-1000.json", "collators": [ { "name": "FullNode-1000", @@ -65,26 +58,6 @@ "name": "Collator1000-02", "command": "../target/release/tanssi-node", "args": ["--no-hardware-benchmarks", "--database=paritydb", "--wasmtime-precompiled=wasm"] - }, - { - "name": "Collator1000-03", - "command": "../target/release/tanssi-node", - "args": ["--no-hardware-benchmarks", "--database=paritydb", "--wasmtime-precompiled=wasm"] - }, - { - "name": "Collator1000-04", - "command": "../target/release/tanssi-node", - "args": ["--no-hardware-benchmarks", "--database=paritydb", "--wasmtime-precompiled=wasm"] - }, - { - "name": "Collator2000-01", - "command": "../target/release/tanssi-node", - "args": ["--no-hardware-benchmarks", "--database=paritydb", "--wasmtime-precompiled=wasm"] - }, - { - "name": "Collator2000-02", - "command": "../target/release/tanssi-node", - "args": ["--no-hardware-benchmarks", "--database=paritydb", "--wasmtime-precompiled=wasm"] } ] } diff --git a/test/moonwall.config.json b/test/moonwall.config.json index c7b295b31..4c958a394 100644 --- a/test/moonwall.config.json +++ b/test/moonwall.config.json @@ -607,8 +607,8 @@ "timeout": 600000, "testFileDir": ["suites/zombie-tanssi-relay"], "runScripts": [ - "build-spec-single-container.sh", - "compile-wasm.ts compile -b ../target/release/tanssi-node -o wasm -c specs/single-container-tanssi-1000.json" + "build-spec-starlight-plus-dancebox-container.sh", + "compile-wasm.ts compile -b ../target/release/tanssi-node -o wasm -c specs/single-dancebox-container-1000.json" ], "foundation": { "type": "zombie", diff --git a/test/package.json b/test/package.json index 49dbdb67a..6fe601437 100644 --- a/test/package.json +++ b/test/package.json @@ -59,7 +59,7 @@ "yargs": "17.7.2" }, "dependencies": { - "@zombienet/orchestrator": "0.0.86", + "@zombienet/orchestrator": "0.0.87", "inquirer": "9.2.16", "ps-node": "0.1.6" } diff --git a/test/scripts/build-spec-starlight-plus-dancebox-container.sh b/test/scripts/build-spec-starlight-plus-dancebox-container.sh new file mode 100755 index 000000000..8efd14afb --- /dev/null +++ b/test/scripts/build-spec-starlight-plus-dancebox-container.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Exit on any error +set -e + +# Always run the commands from the "test" dir +cd $(dirname $0)/.. + +if [[ -z "${1}" || ${1} == "undefined" ]]; then + BINARY_FOLDER="../target/release" +else + BINARY_FOLDER="${1}" +fi + +if [[ -z "${2}" || ${2} == "undefined" ]]; then + CONTAINER_BINARY="tanssi-node" +else + CONTAINER_BINARY="${2}" +fi + +mkdir -p specs +$BINARY_FOLDER/$CONTAINER_BINARY build-spec --chain dancebox-local --parachain-id 1000 --invulnerable "Collator1000-01" --invulnerable "Collator1000-02" --raw > specs/single-dancebox-container-1000.json +$BINARY_FOLDER/tanssi-relay build-spec --chain starlight-local --add-container-chain specs/single-dancebox-container-1000.json --invulnerable "Alice" --invulnerable "Bob" > specs/tanssi-relay.json + +## Here we need to modify the chain-spec. Zombienet is not able to do this \ No newline at end of file