From 3f90b1619d0bdbec8f50b63185b3dcc632321019 Mon Sep 17 00:00:00 2001 From: Alistair Singh Date: Wed, 24 Apr 2024 17:14:10 +0200 Subject: [PATCH] JS-API Layer fixes and improvements (#1171) * fix publish * change metadata * fix beacon client issues * fix packages * poll events * sno-908: polling api * use transfer instead of teleport --- .github/workflows/npm-publish.yml | 4 +- web/packages/api/package.json | 24 +- web/packages/api/src/index.ts | 16 +- web/packages/api/src/query.ts | 28 + web/packages/api/src/status.ts | 13 +- web/packages/api/src/toEthereum.ts | 303 ++-- web/packages/api/src/toPolkadot.ts | 191 ++- web/packages/api/src/utils.ts | 27 +- web/packages/contract-types/package.json | 10 +- web/packages/operations/package.json | 50 +- web/packages/operations/src/monitor.ts | 4 +- web/packages/operations/src/transfer_token.ts | 41 +- web/packages/test/scripts/xcm-helper.sh | 5 +- web/packages/ui/package.json | 8 +- web/packages/ui/public/index.html | 6 +- web/packages/ui/src/App.tsx | 6 +- web/packages/ui/src/Config.ts | 5 +- web/packages/ui/src/components/Status.tsx | 12 +- web/pnpm-lock.yaml | 1277 +++++++++-------- 19 files changed, 1279 insertions(+), 751 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 6290fa6fa4..521cdd8baf 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -52,10 +52,10 @@ jobs: - name: Publish Contract Types working-directory: web/packages/contract-types run: | - pnpm publish + pnpm publish --no-git-checks --access public - name: Publish API working-directory: web/packages/api run: | - pnpm publish + pnpm publish --no-git-checks --access public diff --git a/web/packages/api/package.json b/web/packages/api/package.json index bb1608c520..7d76712439 100644 --- a/web/packages/api/package.json +++ b/web/packages/api/package.json @@ -15,25 +15,25 @@ "lint": "eslint ." }, "devDependencies": { - "@types/node": "^18.13.0", - "@typescript-eslint/eslint-plugin": "^5.42.0", - "@typescript-eslint/parser": "^5.42.0", - "eslint": "^8.26.0", - "eslint-config-prettier": "^8.5.0", - "prettier": "^2.7.1", - "ts-node": "^10.9.1", + "@types/node": "^18.19.31", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "eslint": "^8.57.0", + "eslint-config-prettier": "^8.10.0", + "prettier": "^2.8.8", + "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.6" + "typescript": "^5.4.5" }, "dependencies": { - "ethers": "^6.9.0", - "@polkadot/api": "^10.12.1", - "@polkadot/types": "^10.12.1", + "@polkadot/api": "^10.12.6", + "@polkadot/keyring": "^12.6.2", + "@polkadot/types": "^10.12.6", "@polkadot/util": "^12.6.2", "@polkadot/util-crypto": "^12.6.2", - "@polkadot/keyring": "^12.6.2", "@snowbridge/contract-types": "workspace:*", "@typechain/ethers-v6": "^0.5.1", + "ethers": "^6.11.1", "rxjs": "^7.8.1" } } diff --git a/web/packages/api/src/index.ts b/web/packages/api/src/index.ts index a5d328c8a9..d2cd7983a9 100644 --- a/web/packages/api/src/index.ts +++ b/web/packages/api/src/index.ts @@ -1,11 +1,12 @@ // import '@polkadot/api-augment/polkadot' import { ApiPromise, WsProvider } from '@polkadot/api' -import { ethers } from 'ethers' +import { AbstractProvider, ethers } from 'ethers' import { BeefyClient, BeefyClient__factory, IGateway, IGateway__factory } from '@snowbridge/contract-types' interface Config { ethereum: { - url: string + execution_url: string + beacon_url: string } polkadot: { url: { @@ -39,10 +40,10 @@ export class Context { } class EthereumContext { - api: ethers.WebSocketProvider + api: ethers.AbstractProvider contracts: AppContracts - constructor(api: ethers.WebSocketProvider, contracts: AppContracts) { + constructor(api: ethers.AbstractProvider, contracts: AppContracts) { this.api = api this.contracts = contracts } @@ -67,7 +68,12 @@ class PolkadotContext { // eslint-disable-next-line @typescript-eslint/no-unused-vars export const contextFactory = async (config: Config): Promise => { - const ethApi = new ethers.WebSocketProvider(config.ethereum.url) + let ethApi: AbstractProvider; + if(config.ethereum.execution_url.startsWith("http")) { + ethApi = new ethers.JsonRpcProvider(config.ethereum.execution_url) + } else { + ethApi = new ethers.WebSocketProvider(config.ethereum.execution_url) + } const relaychainApi = await ApiPromise.create({ provider: new WsProvider(config.polkadot.url.relaychain), }) diff --git a/web/packages/api/src/query.ts b/web/packages/api/src/query.ts index 27edfba1e4..772dd8a81c 100644 --- a/web/packages/api/src/query.ts +++ b/web/packages/api/src/query.ts @@ -1,7 +1,35 @@ import { ApiPromise } from '@polkadot/api' +import { BlockHash } from '@polkadot/types/interfaces' import { Codec } from '@polkadot/types/types' import { filter, firstValueFrom, take } from 'rxjs' +export const scanSubstrateEvents = async ( + parachain: ApiPromise, + start: bigint, + scanBlocks: bigint, + filter: (blockNumber: bigint, blockHash: BlockHash, event: Codec) => Promise): Promise<{ + found: boolean + lastScannedBlock: bigint + events?: Codec + }> => { + + const finalized = (await parachain.rpc.chain.getHeader(await parachain.rpc.chain.getFinalizedHead())).number.toBigInt() + const stopScan = start + scanBlocks + const end = finalized < stopScan ? finalized : stopScan + + for (let blockNumber = start; blockNumber <= end; ++blockNumber) { + const blockHash = await parachain.rpc.chain.getBlockHash(blockNumber) + const events = await (await parachain.at(blockHash)).query.system.events() + for (const event of events as any) { + if (await filter(blockNumber, blockHash, event)) { + return { found: true, lastScannedBlock: blockNumber, events: events } + } + } + } + + return { found: false, lastScannedBlock: end } +} + export const waitForMessageQueuePallet = async ( parachain: ApiPromise, messageId: string | undefined, diff --git a/web/packages/api/src/status.ts b/web/packages/api/src/status.ts index 4379666fc5..bc0cc9a7cd 100644 --- a/web/packages/api/src/status.ts +++ b/web/packages/api/src/status.ts @@ -1,5 +1,6 @@ import { IERC20__factory } from '@snowbridge/contract-types' import { Context } from './index' +import { fetchBeaconSlot } from './utils' export type OperatingMode = 'Normal' | 'Halted' export type BridgeStatusInfo = { @@ -45,13 +46,19 @@ export const bridgeStatusInfo = async (context: Context, options = { const latestBeefyBlock = Number(await context.ethereum.contracts.beefyClient.latestBeefyBlock()) const latestPolkadotBlock = (await context.polkadot.api.relaychain.query.system.number()).toPrimitive() as number - const latestBeaconState = (await context.polkadot.api.bridgeHub.query.ethereumBeaconClient.latestExecutionState()).toPrimitive() as { blockNumber: number } const latestEthereumBlock = await context.ethereum.api.getBlockNumber() + const latestBeaconBlockRoot = (await context.polkadot.api.bridgeHub.query.ethereumBeaconClient.latestFinalizedBlockRoot()).toHex() + let latestBeaconSlot = await fetchBeaconSlot(context.config.ethereum.beacon_url, latestBeaconBlockRoot) + let latestBeaconExecutionBlock = latestBeaconSlot.data.message.body.execution_payload?.block_number + while (latestBeaconExecutionBlock === undefined) { + latestBeaconSlot = await fetchBeaconSlot(context.config.ethereum.beacon_url, latestBeaconSlot.data.message.slot - 1) + latestBeaconExecutionBlock = latestBeaconSlot.data.message.body.execution_payload?.block_number + } const beefyBlockLatency = latestPolkadotBlock - latestBeefyBlock const beefyLatencySeconds = beefyBlockLatency * options.polkadotBlockTimeInSeconds - const beaconBlockLatency = latestEthereumBlock - latestBeaconState.blockNumber + const beaconBlockLatency = latestEthereumBlock - Number(latestBeaconExecutionBlock) const beaconLatencySeconds = beaconBlockLatency * options.ethereumBlockTimeInSeconds const ethereumOperatingMode = await context.ethereum.contracts.gateway.operatingMode() @@ -75,7 +82,7 @@ export const bridgeStatusInfo = async (context: Context, options = { inbound: inboundOperatingMode as OperatingMode, outbound: ethereumOperatingMode === 0n ? 'Normal' : 'Halted' as OperatingMode, }, - latestEthereumBlockOnPolkadot: latestBeaconState.blockNumber, + latestEthereumBlockOnPolkadot: Number(latestBeaconExecutionBlock), latestEthereumBlock: latestEthereumBlock, blockLatency: beaconBlockLatency, latencySeconds: beaconLatencySeconds, diff --git a/web/packages/api/src/toEthereum.ts b/web/packages/api/src/toEthereum.ts index 929caf7686..04d478d657 100644 --- a/web/packages/api/src/toEthereum.ts +++ b/web/packages/api/src/toEthereum.ts @@ -1,11 +1,11 @@ +import { EventRecord } from "@polkadot/types/interfaces" +import { Codec, IKeyringPair, Signer } from "@polkadot/types/types" +import { BN, u8aToHex } from "@polkadot/util" import { decodeAddress, xxhashAsHex } from "@polkadot/util-crypto" import { Context } from "./index" -import { assetStatusInfo , bridgeStatusInfo} from "./status" +import { scanSubstrateEvents, waitForMessageQueuePallet } from "./query" +import { assetStatusInfo, bridgeStatusInfo } from "./status" import { paraIdToChannelId } from "./utils" -import { BN, u8aToHex } from "@polkadot/util" -import { Codec, IKeyringPair, Signer } from "@polkadot/types/types" -import { EventRecord } from "@polkadot/types/interfaces" -import { waitForMessageQueuePallet } from "./query" export interface WalletSigner { address: string @@ -20,17 +20,20 @@ export type SendValidationResult = { success?: { ethereumChainId: bigint assetHub: { - validatedAt: string + validatedAtHash: `0x${string}` paraId: number } bridgeHub: { - validatedAt: string + validatedAtHash: `0x${string}` paraId: number }, sourceParachain?: { - validatedAt: string + validatedAtHash: `0x${string}` paraId: number } + relayChain: { + validatedAtHash: `0x${string}` + } sourceAddress: string sourceAddressRaw: string beneficiary: string @@ -63,11 +66,12 @@ export const validateSend = async (context: Context, signer: WalletOrKeypair, so }): Promise => { const { ethereum, ethereum: { contracts: { gateway } }, polkadot: { api: { assetHub, bridgeHub, relaychain, parachains } } } = context - const [assetHubHead, assetHubParaId, bridgeHubHead, bridgeHubParaId] = await Promise.all([ + const [assetHubHead, assetHubParaId, bridgeHubHead, bridgeHubParaId, relaychainHead] = await Promise.all([ assetHub.rpc.chain.getFinalizedHead(), assetHub.query.parachainInfo.parachainId(), bridgeHub.rpc.chain.getFinalizedHead(), bridgeHub.query.parachainInfo.parachainId(), + relaychain.rpc.chain.getFinalizedHead(), ]) let assetHubParaIdDecoded = assetHubParaId.toPrimitive() as number @@ -93,7 +97,7 @@ export const validateSend = async (context: Context, signer: WalletOrKeypair, so hrmpChannelSetup = hrmpChannel.toPrimitive() !== null sourceParachain = { paraId: sourceParachainId, - validatedAt: u8aToHex(sourceParachainHead), + validatedAtHash: u8aToHex(sourceParachainHead), } if (foreignAssetExists) { let account = (await parachains[sourceParachainId].query.foreignAssets.account(assetInfo.multiLocation, signer.address)).toPrimitive() as any @@ -142,11 +146,14 @@ export const validateSend = async (context: Context, signer: WalletOrKeypair, so ethereumChainId: assetInfo.ethereumChainId, assetHub: { paraId: assetHubParaIdDecoded, - validatedAt: u8aToHex(assetHubHead), + validatedAtHash: u8aToHex(assetHubHead), }, bridgeHub: { paraId: bridgeHubParaId.toPrimitive() as number, - validatedAt: u8aToHex(bridgeHubHead), + validatedAtHash: u8aToHex(bridgeHubHead), + }, + relayChain: { + validatedAtHash: u8aToHex(relaychainHead) }, sourceParachain, feeInDOT: fee, @@ -185,10 +192,15 @@ export type SendResult = { plan: SendValidationResult messageId?: string sourceParachain?: { + events: EventRecord[] txHash: string txIndex: number + blockHash: string blockNumber: number } + relayChain: { + submittedAtHash: `0x${string}` + } assetHub: { events: EventRecord[] txHash: string @@ -201,13 +213,21 @@ export type SendResult = { events?: Codec extrinsicSuccess?: boolean nonce?: bigint + messageAcceptedAtHash?: `0x${string}` } ethereum: { submittedAtHash: string beefyBlockNumber?: number + beefyBlockHash?: string transferBlockNumber?: number + transferBlockHash?: string messageDispatchSuccess?: boolean }, + polling?: { + bridgeHubMessageQueueProcessed: bigint + ethereumBeefyClient: bigint + ethereumMessageDispatched: bigint + } }, failure?: { sourceParachain?: { @@ -240,7 +260,7 @@ export const send = async (context: Context, signer: WalletOrKeypair, plan: Send sourceParachainFee: 10_000_000_000n, scanBlocks: 100, }): Promise => { - const { polkadot: { api: { assetHub, bridgeHub, parachains } }, ethereum } = context + const { polkadot: { api: { assetHub, bridgeHub, parachains, relaychain } }, ethereum } = context if (!plan.success) { throw Error("plan failed") } @@ -293,6 +313,7 @@ export const send = async (context: Context, signer: WalletOrKeypair, plan: Send } pResult = await new Promise<{ blockNumber: number + blockHash: string txIndex: number txHash: string success: boolean @@ -300,48 +321,55 @@ export const send = async (context: Context, signer: WalletOrKeypair, plan: Send dispatchError?: any messageId?: string }>((resolve, reject) => { - parachainApi.tx.polkadotXcm.transferAssets( - pDestination, - pBeneficiary, - pAssets, - fee_asset, - weight - ).signAndSend(addressOrPair, { signer: walletSigner }, (c) => { - if (c.isError) { - reject(c.internalError || c.dispatchError) - } - if (c.isCompleted) { - const result = { - txHash: u8aToHex(c.txHash), - txIndex: c.txIndex || 0, - blockNumber: Number((c as any).blockNumber), - events: c.events + try { + parachainApi.tx.polkadotXcm.transferAssets( + pDestination, + pBeneficiary, + pAssets, + fee_asset, + weight + ).signAndSend(addressOrPair, { signer: walletSigner }, (c) => { + if (c.isError) { + reject(c.internalError || c.dispatchError) } - for (const e of c.events) { - if (assetHub.events.system.ExtrinsicFailed.is(e.event)) { - resolve({ - ...result, - success: false, - dispatchError: (e.event.data.toHuman(true) as any)?.dispatchError - }) + if (c.isFinalized) { + const result = { + txHash: u8aToHex(c.txHash), + txIndex: c.txIndex || 0, + blockNumber: Number((c as any).blockNumber), + blockHash: "", + events: c.events } + for (const e of c.events) { + if (parachainApi.events.system.ExtrinsicFailed.is(e.event)) { + resolve({ + ...result, + success: false, + dispatchError: (e.event.data.toHuman(true) as any)?.dispatchError + }) + } - if (assetHub.events.polkadotXcm.Sent.is(e.event)) { - resolve({ - ...result, - success: true, - messageId: (e.event.data.toHuman(true) as any)?.messageId - }) + if (parachainApi.events.polkadotXcm.Sent.is(e.event)) { + resolve({ + ...result, + success: true, + messageId: (e.event.data.toPrimitive() as any)[3] + }) + } } + resolve({ + ...result, + success: false, + }) } - resolve({ - ...result, - success: false, - }) - } - }) + }) + } + catch (e) { + reject(e) + } }) + pResult.blockHash = u8aToHex(await parachainApi.rpc.chain.getBlockHash(pResult.blockNumber)) if (!pResult.success) { return { failure: { @@ -366,9 +394,10 @@ export const send = async (context: Context, signer: WalletOrKeypair, plan: Send } } - const [bridgeHubHead, ethereumHead] = await Promise.all([ + const [bridgeHubHead, ethereumHead, relaychainHead] = await Promise.all([ bridgeHub.rpc.chain.getFinalizedHead(), ethereum.api.getBlock('finalized'), + relaychain.rpc.chain.getFinalizedHead(), ]) const assets: { [key: string]: any } = {} @@ -393,46 +422,52 @@ export const send = async (context: Context, signer: WalletOrKeypair, plan: Send dispatchError?: any messageId?: string }>((resolve, reject) => { - assetHub.tx.polkadotXcm.transferAssets( - destination, - beneficiary, - assets, - fee_asset, - weight - ).signAndSend(addressOrPair, { signer: walletSigner }, (c) => { - if (c.isError) { - reject(c.internalError || c.dispatchError) - } - if (c.isCompleted) { - const result = { - txHash: u8aToHex(c.txHash), - txIndex: c.txIndex || 0, - blockNumber: Number((c as any).blockNumber), - events: c.events + try { + assetHub.tx.polkadotXcm.transferAssets( + destination, + beneficiary, + assets, + fee_asset, + weight + ).signAndSend(addressOrPair, { signer: walletSigner }, (c) => { + if (c.isError) { + reject(c.internalError || c.dispatchError) } - for (const e of c.events) { - if (assetHub.events.system.ExtrinsicFailed.is(e.event)) { - resolve({ - ...result, - success: false, - dispatchError: (e.event.data.toHuman(true) as any)?.dispatchError - }) + if (c.isFinalized) { + const result = { + txHash: u8aToHex(c.txHash), + txIndex: c.txIndex || 0, + blockNumber: Number((c as any).blockNumber), + events: c.events } + for (const e of c.events) { + if (assetHub.events.system.ExtrinsicFailed.is(e.event)) { + resolve({ + ...result, + success: false, + dispatchError: (e.event.data.toHuman(true) as any)?.dispatchError + }) + } - if (assetHub.events.polkadotXcm.Sent.is(e.event)) { - resolve({ - ...result, - success: true, - messageId: (e.event.data.toHuman(true) as any)?.messageId - }) + if (assetHub.events.polkadotXcm.Sent.is(e.event)) { + resolve({ + ...result, + success: true, + messageId: (e.event.data.toPrimitive() as any)[3] + }) + } } + resolve({ + ...result, + success: false, + }) } - resolve({ - ...result, - success: false, - }) - } - }) + }) + + } + catch (e) { + reject(e) + } }) const blockHash = u8aToHex(await assetHub.rpc.chain.getBlockHash(result.blockNumber)) @@ -449,6 +484,9 @@ export const send = async (context: Context, signer: WalletOrKeypair, plan: Send blockHash, events: result.events, }, + relayChain: { + submittedAtHash: u8aToHex(relaychainHead) + }, bridgeHub: { submittedAtHash: u8aToHex(bridgeHubHead) }, @@ -468,6 +506,103 @@ export const send = async (context: Context, signer: WalletOrKeypair, plan: Send } } +export const trackSendProgressPolling = async (context: Context, result: SendResult, options = { + beaconUpdateTimeout: 10, scanBlocks: 600n +}): Promise<{ status: "success" | "pending", result: SendResult }> => { + const { polkadot: { api: { relaychain, bridgeHub } }, ethereum, ethereum: { contracts: { beefyClient, gateway } } } = context + const { success } = result + + if (result.failure || !success || !success.plan.success) { + throw new Error('Send failed') + } + + if (success.polling === undefined) { + let a = + success.polling = { + bridgeHubMessageQueueProcessed: (await bridgeHub.rpc.chain.getHeader(success.bridgeHub.submittedAtHash)).number.toBigInt() + 1n, + ethereumBeefyClient: BigInt((await ethereum.api.getBlock(success.ethereum.submittedAtHash))?.number ?? 0n) + 1n, + ethereumMessageDispatched: BigInt((await ethereum.api.getBlock(success.ethereum.submittedAtHash))?.number ?? 0n) + 1n, + } + } + + if (success.bridgeHub.events === undefined) { + console.log("Waiting for message to be accepted by Bridge Hub.") + let { found, lastScannedBlock, events } = await scanSubstrateEvents(bridgeHub, success.polling.bridgeHubMessageQueueProcessed, options.scanBlocks, async (n, blockHash, ev) => { + const event = ev as any + let eventData = event.event.toPrimitive().data + if (bridgeHub.events.ethereumOutboundQueue.MessageAccepted.is(event.event) + && eventData[0].toLowerCase() === success?.messageId?.toLowerCase()) { + + success.bridgeHub.nonce = BigInt(eventData[1]) + success.bridgeHub.extrinsicSuccess = true + success.bridgeHub.messageAcceptedAtHash = blockHash.toHex() + return true + } + return false + }) + success.polling.bridgeHubMessageQueueProcessed = lastScannedBlock + 1n + if (!found) { return { status: "pending", result } } + console.log(`Message accepted on Bridge Hub block ${success.bridgeHub.messageAcceptedAtHash}.`) + success.bridgeHub.events = events + } + + if (success.ethereum.beefyBlockNumber === undefined && success.bridgeHub.extrinsicSuccess === true) { + // Estimate the relaychain block + const blockGap = (success.polling?.bridgeHubMessageQueueProcessed ?? 0n) - ((await bridgeHub.rpc.chain.getHeader(success.bridgeHub.submittedAtHash)).number.toBigInt() + 1n) + const relaychainSubmittedBlock = (await relaychain.rpc.chain.getHeader(success.relayChain.submittedAtHash)).number.toBigInt() + blockGap + console.log("Waiting for message to be included by BEEFY light client.") + const NewMMRRootEvent = beefyClient.getEvent("NewMMRRoot") + + const from = success.polling.ethereumBeefyClient + let to = BigInt(await ethereum.api.getBlockNumber() ?? 0) + if (from - to > options.scanBlocks) { to = from + options.scanBlocks } + if (from > to) { return { status: "pending", result } } + + const events = await beefyClient.queryFilter(NewMMRRootEvent, Number(from.toString()), Number(to.toString())) + for (const { blockHash, blockNumber, args } of events) { + const relayChainBlock = args.blockNumber + if (relayChainBlock >= relaychainSubmittedBlock) { + success.ethereum.beefyBlockNumber = blockNumber + success.ethereum.beefyBlockHash = blockHash + console.log(`Included in BEEFY Light client block ${success.ethereum.beefyBlockHash}. Waiting for message to be delivered.`) + break; + } else { + console.log(`BEEFY client ${relaychainSubmittedBlock - relayChainBlock} blocks behind.`) + } + } + success.polling.ethereumBeefyClient = to + 1n + if (success.ethereum.beefyBlockNumber === undefined) { return { status: "pending", result } } + } + + if (success.ethereum.transferBlockNumber === undefined && success.bridgeHub.extrinsicSuccess === true) { + console.log("Waiting for message to be dispatched to Gateway.") + const InboundMessageDispatched = gateway.getEvent("InboundMessageDispatched") + + const from = success.polling.ethereumMessageDispatched + let to = BigInt(await ethereum.api.getBlockNumber() ?? 0) + if (from - to > options.scanBlocks) { to = from + options.scanBlocks } + if (from > to) { return { status: "pending", result } } + + const events = await gateway.queryFilter(InboundMessageDispatched, Number(from.toString()), Number(to.toString())) + for (const { blockHash, blockNumber, args } of events) { + let { messageID, nonce, channelID, success: dispatchSuccess } = args + if (messageID.toLowerCase() === success.messageId?.toLowerCase() + && nonce === success.bridgeHub.nonce + && channelID.toLowerCase() == paraIdToChannelId(success.plan.success?.assetHub.paraId ?? 1000).toLowerCase()) { + + success.ethereum.transferBlockNumber = blockNumber + success.ethereum.transferBlockHash = blockHash + success.ethereum.messageDispatchSuccess = dispatchSuccess + break + } + } + success.polling.ethereumMessageDispatched = to + 1n + if (success.ethereum.transferBlockNumber === undefined) { return { status: "pending", result } } + } + + return { status: "success", result } +} + export async function* trackSendProgress(context: Context, result: SendResult, options = { beaconUpdateTimeout: 10, scanBlocks: 200 diff --git a/web/packages/api/src/toPolkadot.ts b/web/packages/api/src/toPolkadot.ts index 884fe969d7..5ce90f4b50 100644 --- a/web/packages/api/src/toPolkadot.ts +++ b/web/packages/api/src/toPolkadot.ts @@ -4,11 +4,11 @@ import { u8aToHex } from '@polkadot/util' import { IGateway__factory } from '@snowbridge/contract-types' import { MultiAddressStruct } from '@snowbridge/contract-types/src/IGateway' import { ContractTransactionReceipt, LogDescription, Signer, ethers } from 'ethers' -import { filter, firstValueFrom, lastValueFrom, map as rxmap, take, takeWhile, tap } from 'rxjs' +import { concatMap, filter, firstValueFrom, lastValueFrom, take, takeWhile, tap } from 'rxjs' import { Context } from './index' -import { waitForMessageQueuePallet } from './query' +import { scanSubstrateEvents, waitForMessageQueuePallet } from './query' import { assetStatusInfo, bridgeStatusInfo, channelStatusInfo } from './status' -import { beneficiaryMultiAddress, paraIdToChannelId, paraIdToSovereignAccount } from './utils' +import { beneficiaryMultiAddress, fetchBeaconSlot, paraIdToChannelId, paraIdToSovereignAccount } from './utils' export type SendValidationResult = { success?: { @@ -198,27 +198,38 @@ export type SendResult = { bridgeHub: { submittedAtHash: string, beaconUpdate?: { - createdAtHash?: `0x${string}`, - blockNumber: number, + createdAtHash?: `0x${string}` + beaconBlockRoot: `0x${string}` + blockNumber: `${number}` | undefined + blockHash: `0x${string}` | undefined }, events?: Codec, extrinsicSuccess?: boolean extrinsicNumber?: number + messageReceivedBlockHash?: `0x${string}` } assetHub: { submittedAtHash: string, events?: Codec, extrinsicSuccess?: boolean, + messageQueueProcessedAt?: `0x${string}` }, destinationParachain?: { submittedAtHash: string, events?: Codec, extrinsicSuccess?: boolean, + messageQueueProcessedAt?: `0x${string}` }, channelId: string, nonce: bigint, messageId: string, plan: SendValidationResult, + polling?: { + bridgeHubBeaconBlock: bigint + bridgeHubMessageReceived: bigint + assetHubMessageProcessed: bigint + destinationMessageProcessed: bigint | undefined + } } failure?: { receipt: ContractTransactionReceipt @@ -308,6 +319,157 @@ export const send = async (context: Context, signer: Signer, plan: SendValidatio } } +export const trackSendProgressPolling = async (context: Context, result: SendResult, options = { + beaconUpdateTimeout: 10, scanBlocks: 600n +}): Promise<{ status: "success" | "pending", result: SendResult }> => { + const { polkadot: { api: { assetHub, bridgeHub, parachains } } } = context + const { success } = result + + if (result.failure || !success || !success.plan.success) { + throw new Error('Send failed') + } + + if (success.polling === undefined) { + let destinationMessageProcessed: bigint | undefined = undefined + if (success.destinationParachain !== undefined && success.plan.success.destinationParaId in parachains) { + destinationMessageProcessed = (await parachains[success.plan.success.destinationParaId].rpc.chain.getHeader(success.destinationParachain.submittedAtHash)).number.toBigInt() + 1n + } + success.polling = { + bridgeHubBeaconBlock: (await bridgeHub.rpc.chain.getHeader(success.bridgeHub.submittedAtHash)).number.toBigInt() + 1n, + bridgeHubMessageReceived: (await bridgeHub.rpc.chain.getHeader(success.bridgeHub.submittedAtHash)).number.toBigInt() + 1n, + assetHubMessageProcessed: (await assetHub.rpc.chain.getHeader(success.assetHub.submittedAtHash)).number.toBigInt() + 1n, + destinationMessageProcessed: destinationMessageProcessed, + } + } + + let beaconUpdate = success.bridgeHub.beaconUpdate + if (success.bridgeHub.beaconUpdate === undefined) { + const ethereumBlockNumber = success.ethereum.blockNumber + console.log(`Waiting for ethereum block ${ethereumBlockNumber} to be included by light client.`) + let { found, lastScannedBlock } = await scanSubstrateEvents(bridgeHub, success.polling.bridgeHubBeaconBlock, options.scanBlocks, async (n, blockHash, ev) => { + const event = ev as any + if (bridgeHub.events.ethereumBeaconClient.BeaconHeaderImported.is(event.event)) { + const [beaconBlockRoot] = (event.event.toPrimitive() as any).data + const slot = await fetchBeaconSlot(context.config.ethereum.beacon_url, beaconBlockRoot) + const ethBlockNumber = slot.data.message.body.execution_payload?.block_number + const ethBlockHash = slot.data.message.body.execution_payload?.block_hash + if (ethBlockNumber !== undefined && ethBlockHash !== undefined && ethereumBlockNumber <= Number(ethBlockNumber)) { + beaconUpdate = { createdAtHash: blockHash.toHex(), blockNumber: ethBlockNumber, blockHash: ethBlockHash, beaconBlockRoot } + return true; + } + + console.log(`Bridge Hub block ${blockHash.toHex()}: Beacon client ${ethereumBlockNumber - Number(ethBlockNumber)} blocks behind.`) + } + return false; + }) + success.polling.bridgeHubBeaconBlock = lastScannedBlock + 1n + if (!found) { return { status: "pending", result } } + success.bridgeHub.beaconUpdate = beaconUpdate + console.log(`Included by light client in Bridge Hub block ${beaconUpdate?.createdAtHash}.`) + } + + if (success.bridgeHub.events === undefined) { + console.log(`Waiting for messageId ${success.messageId} to be recieved on Bridge Hub.`) + let messageQueueFound = false + let { found, lastScannedBlock, events } = await scanSubstrateEvents(bridgeHub, success.polling.bridgeHubMessageReceived, options.scanBlocks, async (n, blockHash, ev) => { + const event = ev as any + const data = event.event.toPrimitive().data + + if (bridgeHub.events.ethereumInboundQueue.MessageReceived.is(event.event) + && data[1].toString() === success?.nonce.toString() + && data[2].toLowerCase() === success?.messageId.toLowerCase() + && data[0].toLowerCase() === success?.channelId.toLowerCase()) { + + messageQueueFound = true + success.bridgeHub.messageReceivedBlockHash = blockHash.toHex() + success.bridgeHub.extrinsicNumber = event.phase.toPrimitive().applyExtrinsic + } + + if (messageQueueFound && bridgeHub.events.system.ExtrinsicSuccess.is(event.event) && event.phase.toPrimitive().applyExtrinsic == success.bridgeHub.extrinsicNumber && success.bridgeHub.messageReceivedBlockHash === blockHash.toHex()) { + success.bridgeHub.extrinsicSuccess = true + return true + } + if (messageQueueFound && bridgeHub.events.system.ExtrinsicFailed.is(event.event) && event.phase.toPrimitive().applyExtrinsic == success.bridgeHub.extrinsicNumber && success.bridgeHub.messageReceivedBlockHash === blockHash.toHex()) { + success.bridgeHub.extrinsicSuccess = false + return true + } + return false + }); + success.polling.bridgeHubMessageReceived = lastScannedBlock + 1n + if (!found) { return { status: "pending", result } } + console.log(`Message received on Bridge Hub block ${success.bridgeHub.messageReceivedBlockHash}.`) + success.bridgeHub.events = events + } + + if (success.assetHub.events === undefined && success.bridgeHub.extrinsicSuccess === true) { + const issuedTo = (success.plan.success.assetHub.paraId !== success.plan.success.destinationParaId) + ? paraIdToSovereignAccount("sibl", success.plan.success.destinationParaId) + : success.plan?.success.beneficiaryAddress + console.log(`Waiting for messageId ${success.messageId} to be recieved on Asset Hub.`) + let transferBlockHash = "" + let { found, lastScannedBlock, events } = await scanSubstrateEvents(assetHub, success.polling.assetHubMessageProcessed, options.scanBlocks, async (n, blockHash, ev) => { + const event = ev as any + let eventData = event.event.toPrimitive().data + + if (assetHub.events.foreignAssets.Issued.is(event.event) + && eventData[2].toString() === success?.plan.success?.amount.toString() + && u8aToHex(decodeAddress(eventData[1])).toLowerCase() === issuedTo.toLowerCase() + && eventData[0]?.parents === 2 + && eventData[0]?.interior?.x2[0]?.globalConsensus?.ethereum?.chainId.toString() === success?.plan.success?.ethereumChainId.toString() + && eventData[0]?.interior?.x2[1]?.accountKey20?.key.toLowerCase() === success?.plan.success?.token.toLowerCase()) { + transferBlockHash = blockHash.toHex() + } + + if (assetHub.events.messageQueue.Processed.is(event.event) + && (eventData[0].toLowerCase() === success.messageId.toLowerCase()) + && eventData[1]?.sibling === success.plan.success?.bridgeHub.paraId) { + + success.assetHub.extrinsicSuccess = eventData[3] + success.assetHub.messageQueueProcessedAt = blockHash.toHex() + return transferBlockHash === success.assetHub.messageQueueProcessedAt + } + return false + }) + success.polling.assetHubMessageProcessed = lastScannedBlock + 1n + if (!found) { return { status: "pending", result } } + console.log(`Message received on Asset Hub block ${success.assetHub.messageQueueProcessedAt}.`) + success.assetHub.events = events + } + + if (success.destinationParachain !== undefined + && success.plan.success.assetHub.paraId !== success.plan.success.destinationParaId + && success.plan.success.destinationParaId in parachains + && success.polling.destinationMessageProcessed !== undefined + && success.destinationParachain.events === undefined + && success.assetHub.extrinsicSuccess === true) { + + const destParaApi = parachains[success.plan.success.destinationParaId] + let extrinsicSuccess = false + let messageQueueProcessedAt + console.log(`Waiting for messageId ${success.messageId} to be recieved on Parachain ${success.plan.success.destinationParaId}.`) + let { found, lastScannedBlock, events } = await scanSubstrateEvents(destParaApi, success.polling.destinationMessageProcessed, options.scanBlocks, async (n, blockHash, ev) => { + const event = ev as any + let eventData = event.event.toPrimitive().data + if (destParaApi.events.messageQueue.Processed.is(event.event) + && (eventData[0].toLowerCase() === success.messageId.toLowerCase()) + && eventData[1]?.sibling === success.plan.success?.assetHub.paraId) { + extrinsicSuccess = eventData[3] + messageQueueProcessedAt = blockHash.toHex() + return true + } + return false + }) + success.polling.destinationMessageProcessed = lastScannedBlock + 1n + if (!found) { return { status: "pending", result } } + success.destinationParachain.extrinsicSuccess = extrinsicSuccess + success.destinationParachain.messageQueueProcessedAt = messageQueueProcessedAt + console.log(`Message received on Destination Parachain block ${success.assetHub.messageQueueProcessedAt}.`) + success.destinationParachain.events = events + } + + return { status: "success", result }; +} + export async function* trackSendProgress(context: Context, result: SendResult, options = { beaconUpdateTimeout: 10, scanBlocks: 200 }): AsyncGenerator { @@ -323,14 +485,19 @@ export async function* trackSendProgress(context: Context, result: SendResult, o // Wait for light client const ethereumBlockNumber = success.ethereum.blockNumber const lastBeaconUpdate = await lastValueFrom( - bridgeHub.rx.query.ethereumBeaconClient.latestExecutionState().pipe( - rxmap(beaconUpdate => { - const update = beaconUpdate.toPrimitive() as { blockNumber: number } - return { createdAtHash: beaconUpdate.createdAtHash?.toHex(), blockNumber: update.blockNumber } + bridgeHub.rx.query.ethereumBeaconClient.latestFinalizedBlockRoot().pipe( + concatMap(async finalizedBlockRoot => { + const beaconBlockRoot = finalizedBlockRoot.toHex() + const slot = await fetchBeaconSlot(context.config.ethereum.beacon_url, beaconBlockRoot) + const blockNumber = slot.data.message.body.execution_payload?.block_number + const blockHash = slot.data.message.body.execution_payload?.block_hash + + return { createdAtHash: finalizedBlockRoot.createdAtHash?.toHex(), blockNumber, blockHash, beaconBlockRoot } }), + filter(({ blockHash }) => blockHash !== undefined), take(options.beaconUpdateTimeout), - takeWhile(({ blockNumber }) => ethereumBlockNumber > blockNumber), - tap(({ createdAtHash, blockNumber }) => console.log(`Bridge Hub block ${createdAtHash}: Beacon client ${ethereumBlockNumber - blockNumber} blocks behind.`)), + takeWhile(({ blockNumber }) => ethereumBlockNumber > Number(blockNumber)), + tap(({ createdAtHash, blockNumber }) => console.log(`Bridge Hub block ${createdAtHash}: Beacon client ${ethereumBlockNumber - Number(blockNumber)} blocks behind.`)), ), { defaultValue: undefined } ) @@ -435,7 +602,7 @@ export async function* trackSendProgress(context: Context, result: SendResult, o const { allEvents: receivedEvents, extrinsicSuccess, } = await waitForMessageQueuePallet( destParaApi, - undefined, + success.messageId, success.plan.success.assetHub.paraId, eventRow => { let event = eventRow as any diff --git a/web/packages/api/src/utils.ts b/web/packages/api/src/utils.ts index 1026b5dff6..0735a30aed 100644 --- a/web/packages/api/src/utils.ts +++ b/web/packages/api/src/utils.ts @@ -59,4 +59,29 @@ export const beneficiaryMultiAddress = (beneficiary: string) => { } } return { address, hexAddress } -} \ No newline at end of file +} + +export const fetchBeaconSlot = async (beaconUrl: string, blockId: `0x${string}` | number): Promise<{ + data: { + message: { + slot: number + body: { + execution_payload?: { + block_number: `${number}` + block_hash: `0x${string}` + } + } + } + } +}> => { + let url = beaconUrl.trim() + if (!url.endsWith('/')) { + url += '/' + } + url += `eth/v2/beacon/blocks/${blockId}` + let response = await fetch(url) + if (!response.ok) { + throw new Error(response.statusText) + } + return await response.json() +} diff --git a/web/packages/contract-types/package.json b/web/packages/contract-types/package.json index 667be10383..26fef11932 100644 --- a/web/packages/contract-types/package.json +++ b/web/packages/contract-types/package.json @@ -15,13 +15,13 @@ "typechain": "typechain --target ethers-v6 '../../../contracts/out/?(IERC20.sol|IGateway.sol|BeefyClient.sol)/!(*.abi).json' --out-dir src" }, "devDependencies": { - "@types/node": "^18.13.0", - "ts-node": "^10.9.1", - "typechain": "^8.3.2", "@typechain/ethers-v6": "^0.5.1", - "typescript": "^5.1.6" + "@types/node": "^18.19.31", + "ts-node": "^10.9.2", + "typechain": "^8.3.2", + "typescript": "^5.4.5" }, "dependencies": { - "ethers": "^6.9.0" + "ethers": "^6.11.1" } } diff --git a/web/packages/operations/package.json b/web/packages/operations/package.json index b2b1e9f7e2..d2ddddfeed 100644 --- a/web/packages/operations/package.json +++ b/web/packages/operations/package.json @@ -14,39 +14,39 @@ "monitor": "npx ts-node src/monitor.ts" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.42.0", - "@typescript-eslint/parser": "^5.42.0", - "eslint": "^8.26.0", - "eslint-config-prettier": "^8.5.0", - "ts-node": "^10.9.1", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "eslint": "^8.57.0", + "eslint-config-prettier": "^8.10.0", + "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.6" + "typescript": "^5.4.5" }, "dependencies": { - "@ethersproject/abi": "^5.0.0", - "@ethersproject/bytes": "^5.0.0", - "@ethersproject/providers": "^5.4.7", - "@ethersproject/units": "^5.4.7", - "@polkadot/api": "^10.11.1", - "@polkadot/types": "^10.11.1", - "@polkadot/types-codec": "^10.11.1", + "@ethersproject/abi": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/providers": "^5.7.2", + "@ethersproject/units": "^5.7.0", + "@polkadot/api": "^10.12.6", + "@polkadot/keyring": "^12.6.2", + "@polkadot/types": "^10.12.6", + "@polkadot/types-codec": "^10.12.6", "@polkadot/util": "^12.6.2", "@polkadot/util-crypto": "^12.6.2", - "@polkadot/keyring": "^12.6.2", "@snowbridge/api": "workspace:*", "@snowbridge/contract-types": "workspace:*", - "@types/keccak": "^3.0.1", - "@types/lodash": "^4.14.186", - "@types/node": "^18.13.0", - "@types/secp256k1": "^4.0.3", - "@types/seedrandom": "^3.0.2", - "bitfield": "^4.1.0", - "ethers": "^6.9.0", - "keccak": "^3.0.2", + "@types/keccak": "^3.0.4", + "@types/lodash": "^4.17.0", + "@types/node": "^18.19.31", + "@types/secp256k1": "^4.0.6", + "@types/seedrandom": "^3.0.8", + "bitfield": "^4.2.0", + "ethers": "^6.11.1", + "keccak": "^3.0.4", "lodash": "^4.17.21", - "merkletreejs": "^0.2.18", - "rlp": "^2.2.6", - "secp256k1": "^4.0.2", + "merkletreejs": "^0.2.32", + "rlp": "^2.2.7", + "secp256k1": "^4.0.3", "seedrandom": "^3.0.5" } } diff --git a/web/packages/operations/src/monitor.ts b/web/packages/operations/src/monitor.ts index 646cdd9215..98f8674e56 100644 --- a/web/packages/operations/src/monitor.ts +++ b/web/packages/operations/src/monitor.ts @@ -7,6 +7,7 @@ const PRIMARY_GOVERNANCE_CHANNEL_ID = '0x000000000000000000000000000000000000000 const SECONDARY_GOVERNANCE_CHANNEL_ID = '0x0000000000000000000000000000000000000000000000000000000000000002' let config = { + BEACON_HTTP_API: 'http://127.0.0.1:9596', ETHEREUM_WS_API: 'ws://127.0.0.1:8546', RELAY_CHAIN_WS_URL: 'ws://127.0.0.1:9944', ASSET_HUB_WS_URL: 'ws://127.0.0.1:12144', @@ -28,6 +29,7 @@ let config = { } if (process.env.NODE_ENV === 'production') { config = { + BEACON_HTTP_API: 'https://lodestar-sepolia.chainsafe.io', ETHEREUM_WS_API: `wss://sepolia.infura.io/ws/v3/${process.env.REACT_APP_INFURA_KEY}`, RELAY_CHAIN_WS_URL: 'wss://rococo-rpc.polkadot.io', ASSET_HUB_WS_URL: 'wss://rococo-asset-hub-rpc.polkadot.io', @@ -49,7 +51,7 @@ if (process.env.NODE_ENV === 'production') { const monitor = async () => { const context = await contextFactory({ - ethereum: { url: config.ETHEREUM_WS_API }, + ethereum: { execution_url: config.ETHEREUM_WS_API, beacon_url: config.BEACON_HTTP_API }, polkadot: { url: { bridgeHub: config.BRIDGE_HUB_WS_URL, diff --git a/web/packages/operations/src/transfer_token.ts b/web/packages/operations/src/transfer_token.ts index a29427bb08..7d7a1cebf8 100644 --- a/web/packages/operations/src/transfer_token.ts +++ b/web/packages/operations/src/transfer_token.ts @@ -3,6 +3,7 @@ import { contextFactory, destroyContext, toEthereum, toPolkadot } from '@snowbri import { Keyring } from '@polkadot/keyring' import { Wallet } from 'ethers' +const BEACON_HTTP_API = 'http://127.0.0.1:9596' const ETHEREUM_WS_API = 'ws://127.0.0.1:8546' const RELAY_CHAIN_WS_URL = 'ws://127.0.0.1:9944' const ASSET_HUB_WS_URL = 'ws://127.0.0.1:12144' @@ -14,7 +15,7 @@ const WETH_CONTRACT = '0x87d1f7fdfEe7f651FaBc8bFCB6E086C278b77A7d' const monitor = async () => { const context = await contextFactory({ - ethereum: { url: ETHEREUM_WS_API }, + ethereum: { execution_url: ETHEREUM_WS_API, beacon_url: BEACON_HTTP_API }, polkadot: { url: { bridgeHub: BRIDGE_HUB_WS_URL, @@ -37,16 +38,20 @@ const monitor = async () => { const amount = 10n + const POLL_INTERVAL_MS = 10_000 + console.log('# Ethereum to Asset Hub') { const plan = await toPolkadot.validateSend(context, ETHEREUM_ACCOUNT, POLKADOT_ACCOUNT_PUBLIC, WETH_CONTRACT, 1000, amount, BigInt(0)) console.log('Plan:', plan) - const result = await toPolkadot.send(context, ETHEREUM_ACCOUNT, plan) + let result = await toPolkadot.send(context, ETHEREUM_ACCOUNT, plan) console.log('Execute:', result) - for await (const update of toPolkadot.trackSendProgress(context, result)) { - console.log(update) + while (true) { + const { status } = (await toPolkadot.trackSendProgressPolling(context, result)) + if (status !== "pending") { break } + await new Promise(r => setTimeout(r, POLL_INTERVAL_MS)); } - console.log(result) + console.log('Complete:', result) } console.log('# Asset Hub to Ethereum') @@ -55,22 +60,26 @@ const monitor = async () => { console.log('Plan:', plan) const result = await toEthereum.send(context, POLKADOT_ACCOUNT, plan) console.log('Execute:', result) - for await (const update of toEthereum.trackSendProgress(context, result)) { - console.log(update) + while (true) { + const { status } = (await toEthereum.trackSendProgressPolling(context, result)) + if (status !== "pending") { break } + await new Promise(r => setTimeout(r, POLL_INTERVAL_MS)); } - console.log(result) + console.log('Complete:', result) } console.log('# Ethereum to Penpal') { const plan = await toPolkadot.validateSend(context, ETHEREUM_ACCOUNT, POLKADOT_ACCOUNT_PUBLIC, WETH_CONTRACT, 2000, amount, BigInt(4_000_000_000)) console.log('Plan:', plan) - const result = await toPolkadot.send(context, ETHEREUM_ACCOUNT, plan) + let result = await toPolkadot.send(context, ETHEREUM_ACCOUNT, plan) console.log('Execute:', result) - for await (const update of toPolkadot.trackSendProgress(context, result)) { - console.log(update) + while (true) { + const { status } = (await toPolkadot.trackSendProgressPolling(context, result)) + if (status !== "pending") { break } + await new Promise(r => setTimeout(r, POLL_INTERVAL_MS)); } - console.log(result) + console.log('Complete:', result) } console.log('# Penpal to Ethereum') @@ -79,10 +88,12 @@ const monitor = async () => { console.log('Plan:', plan) const result = await toEthereum.send(context, POLKADOT_ACCOUNT, plan) console.log('Execute:', result) - for await (const update of toEthereum.trackSendProgress(context, result)) { - console.log(update) + while (true) { + const { status } = (await toEthereum.trackSendProgressPolling(context, result)) + if (status !== "pending") { break } + await new Promise(r => setTimeout(r, POLL_INTERVAL_MS)); } - console.log(result) + console.log('Complete:', result) } await destroyContext(context) diff --git a/web/packages/test/scripts/xcm-helper.sh b/web/packages/test/scripts/xcm-helper.sh index 7d9688bde4..eca21b0f59 100644 --- a/web/packages/test/scripts/xcm-helper.sh +++ b/web/packages/test/scripts/xcm-helper.sh @@ -116,9 +116,10 @@ transfer_balance() { --seed "${seed?}" \ --noWait \ --nonce -1 \ - tx.xcmPallet.teleportAssets \ + tx.xcmPallet.transferAssets \ "${dest}" \ "${beneficiary}" \ "${assets}" \ - "${asset_fee_item}" + "${asset_fee_item}" \ + "Unlimited" } diff --git a/web/packages/ui/package.json b/web/packages/ui/package.json index 6675073ae1..bf580c57d6 100644 --- a/web/packages/ui/package.json +++ b/web/packages/ui/package.json @@ -13,10 +13,10 @@ "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "@types/jest": "^27.5.2", - "@types/node": "^16.18.80", - "@types/react": "^18.2.55", - "@types/react-dom": "^18.2.19", - "ethers": "^6.9.0", + "@types/node": "^16.18.96", + "@types/react": "^18.2.78", + "@types/react-dom": "^18.2.25", + "ethers": "^6.11.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", diff --git a/web/packages/ui/public/index.html b/web/packages/ui/public/index.html index aa069f27cb..0263d49f1a 100644 --- a/web/packages/ui/public/index.html +++ b/web/packages/ui/public/index.html @@ -7,9 +7,9 @@ - + - React App + Snowbridge diff --git a/web/packages/ui/src/App.tsx b/web/packages/ui/src/App.tsx index 2236d217db..0c06a48e3d 100644 --- a/web/packages/ui/src/App.tsx +++ b/web/packages/ui/src/App.tsx @@ -8,13 +8,13 @@ import { TransferToPolkadot } from './components/TransferToPolkadot'; import { Context, contextFactory } from '@snowbridge/api'; import { useEffect, useState } from 'react'; -import { BrowserRouter, HashRouter, NavLink, Redirect, Route, Switch } from "react-router-dom"; +import { HashRouter, NavLink, Redirect, Route, Switch } from "react-router-dom"; const config = getConfig() const connectContext = async (): Promise => { const context = await contextFactory({ - ethereum: { url: config.ETHEREUM_WS_API }, + ethereum: { execution_url: config.ETHEREUM_WS_API, beacon_url: config.BEACON_HTTP_API }, polkadot: { url: { bridgeHub: config.BRIDGE_HUB_WS_URL, @@ -65,7 +65,7 @@ function App() { } } - useEffect(() => { startConnect() }) + useEffect(() => { startConnect() }, []) const snowbridgeHistoryKey = "snowbirdge-transaction-history" useEffect(() => { diff --git a/web/packages/ui/src/Config.ts b/web/packages/ui/src/Config.ts index 1c3f2d0f0d..e931b2353e 100644 --- a/web/packages/ui/src/Config.ts +++ b/web/packages/ui/src/Config.ts @@ -1,5 +1,6 @@ export type Config = { + BEACON_HTTP_API: string ETHEREUM_WS_API: string RELAY_CHAIN_WS_URL: string ASSET_HUB_WS_URL: string @@ -14,7 +15,8 @@ export type Config = { export const getConfig = (): Config => { if (process.env.REACT_APP_NODE_ENV === 'rococo_sepolia') { return { - ETHEREUM_WS_API: `wss://sepolia.infura.io/ws/v3/${process.env.REACT_APP_INFURA_KEY}`, + BEACON_HTTP_API: 'https://lodestar-sepolia.chainsafe.io', + ETHEREUM_WS_API: `https://sepolia.infura.io/v3/${process.env.REACT_APP_INFURA_KEY}`, RELAY_CHAIN_WS_URL: 'wss://rococo-rpc.polkadot.io', ASSET_HUB_WS_URL: 'wss://rococo-asset-hub-rpc.polkadot.io', BRIDGE_HUB_WS_URL: 'wss://rococo-bridge-hub-rpc.polkadot.io', @@ -33,6 +35,7 @@ export const getConfig = (): Config => { } } return { + BEACON_HTTP_API: 'http://127.0.0.1:9596', ETHEREUM_WS_API: 'ws://127.0.0.1:8546', RELAY_CHAIN_WS_URL: 'ws://127.0.0.1:9944', ASSET_HUB_WS_URL: 'ws://127.0.0.1:12144', diff --git a/web/packages/ui/src/components/Status.tsx b/web/packages/ui/src/components/Status.tsx index 49cd0394d1..1865f24ee9 100644 --- a/web/packages/ui/src/components/Status.tsx +++ b/web/packages/ui/src/components/Status.tsx @@ -8,7 +8,7 @@ import { AccountInfo, AppProps, BridgeStatus } from "./Common" const PRIMARY_GOVERNANCE_CHANNEL_ID = '0x0000000000000000000000000000000000000000000000000000000000000001' const SECONDARY_GOVERNANCE_CHANNEL_ID = '0x0000000000000000000000000000000000000000000000000000000000000002' const REFRESH_INTERVAL = 300; -const REFRESH_CHECK = 10; +const REFRESH_CHECK = 20; const ACCEPTABLE_BRIDGE_LATENCY = 28800 /* 8 hours */ interface StatusProps extends AppProps { @@ -224,14 +224,14 @@ export const Status = (props: StatusProps): JSX.Element => { return (

Bridge Status

-

To Polkadot

-
-

Operating Mode

{toPolkadotOperatingMode}

-

BEEFY client latency (time):

{formatTime(bridgeStatus?.statusInfo.toEthereum.latencySeconds)}

-

To Ethereum

Operating Mode

{toEthereumOperatingMode}

+

BEEFY client latency (time):

{formatTime(bridgeStatus?.statusInfo.toEthereum.latencySeconds)}

+
+

To Polkadot

+
+

Operating Mode

{toPolkadotOperatingMode}

Beacon client latency (time):

{formatTime(bridgeStatus?.statusInfo.toPolkadot.latencySeconds)}

{extra} diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 23c2a4a0ab..96fecb20eb 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -18,14 +18,14 @@ importers: packages/api: dependencies: '@polkadot/api': - specifier: ^10.12.1 - version: 10.12.1 + specifier: ^10.12.6 + version: 10.12.6 '@polkadot/keyring': specifier: ^12.6.2 version: 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) '@polkadot/types': - specifier: ^10.12.1 - version: 10.12.1 + specifier: ^10.12.6 + version: 10.12.6 '@polkadot/util': specifier: ^12.6.2 version: 12.6.2 @@ -37,90 +37,90 @@ importers: version: link:../contract-types '@typechain/ethers-v6': specifier: ^0.5.1 - version: 0.5.1(ethers@6.9.0)(typechain@8.3.2)(typescript@5.1.6) + version: 0.5.1(ethers@6.11.1)(typechain@8.3.2)(typescript@5.4.5) ethers: - specifier: ^6.9.0 - version: 6.9.0 + specifier: ^6.11.1 + version: 6.11.1 rxjs: specifier: ^7.8.1 version: 7.8.1 devDependencies: '@types/node': - specifier: ^18.13.0 - version: 18.16.8 + specifier: ^18.19.31 + version: 18.19.31 '@typescript-eslint/eslint-plugin': - specifier: ^5.42.0 - version: 5.42.0(@typescript-eslint/parser@5.42.0)(eslint@8.26.0)(typescript@5.1.6) + specifier: ^5.62.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: ^5.42.0 - version: 5.42.0(eslint@8.26.0)(typescript@5.1.6) + specifier: ^5.62.0 + version: 5.62.0(eslint@8.57.0)(typescript@5.4.5) eslint: - specifier: ^8.26.0 - version: 8.26.0 + specifier: ^8.57.0 + version: 8.57.0 eslint-config-prettier: - specifier: ^8.5.0 - version: 8.5.0(eslint@8.26.0) + specifier: ^8.10.0 + version: 8.10.0(eslint@8.57.0) prettier: - specifier: ^2.7.1 - version: 2.7.1 + specifier: ^2.8.8 + version: 2.8.8 ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.8)(typescript@5.1.6) + specifier: ^10.9.2 + version: 10.9.2(@types/node@18.19.31)(typescript@5.4.5) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.4.5 + version: 5.4.5 packages/contract-types: dependencies: ethers: - specifier: ^6.9.0 - version: 6.9.0 + specifier: ^6.11.1 + version: 6.11.1 devDependencies: '@typechain/ethers-v6': specifier: ^0.5.1 - version: 0.5.1(ethers@6.9.0)(typechain@8.3.2)(typescript@5.1.6) + version: 0.5.1(ethers@6.11.1)(typechain@8.3.2)(typescript@5.4.5) '@types/node': - specifier: ^18.13.0 - version: 18.16.8 + specifier: ^18.19.31 + version: 18.19.31 ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.8)(typescript@5.1.6) + specifier: ^10.9.2 + version: 10.9.2(@types/node@18.19.31)(typescript@5.4.5) typechain: specifier: ^8.3.2 - version: 8.3.2(typescript@5.1.6) + version: 8.3.2(typescript@5.4.5) typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.4.5 + version: 5.4.5 packages/operations: dependencies: '@ethersproject/abi': - specifier: ^5.0.0 + specifier: ^5.7.0 version: 5.7.0 '@ethersproject/bytes': - specifier: ^5.0.0 + specifier: ^5.7.0 version: 5.7.0 '@ethersproject/providers': - specifier: ^5.4.7 + specifier: ^5.7.2 version: 5.7.2 '@ethersproject/units': - specifier: ^5.4.7 + specifier: ^5.7.0 version: 5.7.0 '@polkadot/api': - specifier: ^10.11.1 - version: 10.11.1 + specifier: ^10.12.6 + version: 10.12.6 '@polkadot/keyring': specifier: ^12.6.2 version: 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) '@polkadot/types': - specifier: ^10.11.1 - version: 10.11.1 + specifier: ^10.12.6 + version: 10.12.6 '@polkadot/types-codec': - specifier: ^10.11.1 - version: 10.11.1 + specifier: ^10.12.6 + version: 10.12.6 '@polkadot/util': specifier: ^12.6.2 version: 12.6.2 @@ -134,66 +134,66 @@ importers: specifier: workspace:* version: link:../contract-types '@types/keccak': - specifier: ^3.0.1 - version: 3.0.1 + specifier: ^3.0.4 + version: 3.0.4 '@types/lodash': - specifier: ^4.14.186 - version: 4.14.187 + specifier: ^4.17.0 + version: 4.17.0 '@types/node': - specifier: ^18.13.0 - version: 18.16.8 + specifier: ^18.19.31 + version: 18.19.31 '@types/secp256k1': - specifier: ^4.0.3 - version: 4.0.3 + specifier: ^4.0.6 + version: 4.0.6 '@types/seedrandom': - specifier: ^3.0.2 - version: 3.0.2 + specifier: ^3.0.8 + version: 3.0.8 bitfield: - specifier: ^4.1.0 - version: 4.1.0 + specifier: ^4.2.0 + version: 4.2.0 ethers: - specifier: ^6.9.0 - version: 6.9.0 + specifier: ^6.11.1 + version: 6.11.1 keccak: - specifier: ^3.0.2 - version: 3.0.3 + specifier: ^3.0.4 + version: 3.0.4 lodash: specifier: ^4.17.21 version: 4.17.21 merkletreejs: - specifier: ^0.2.18 + specifier: ^0.2.32 version: 0.2.32 rlp: - specifier: ^2.2.6 + specifier: ^2.2.7 version: 2.2.7 secp256k1: - specifier: ^4.0.2 + specifier: ^4.0.3 version: 4.0.3 seedrandom: specifier: ^3.0.5 version: 3.0.5 devDependencies: '@typescript-eslint/eslint-plugin': - specifier: ^5.42.0 - version: 5.42.0(@typescript-eslint/parser@5.42.0)(eslint@8.26.0)(typescript@5.1.6) + specifier: ^5.62.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: ^5.42.0 - version: 5.42.0(eslint@8.26.0)(typescript@5.1.6) + specifier: ^5.62.0 + version: 5.62.0(eslint@8.57.0)(typescript@5.4.5) eslint: - specifier: ^8.26.0 - version: 8.26.0 + specifier: ^8.57.0 + version: 8.57.0 eslint-config-prettier: - specifier: ^8.5.0 - version: 8.5.0(eslint@8.26.0) + specifier: ^8.10.0 + version: 8.10.0(eslint@8.57.0) ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.8)(typescript@5.1.6) + specifier: ^10.9.2 + version: 10.9.2(@types/node@18.19.31)(typescript@5.4.5) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.4.5 + version: 5.4.5 packages/test: devDependencies: @@ -380,10 +380,10 @@ importers: dependencies: '@polkadot/extension-dapp': specifier: ^0.46.9 - version: 0.46.9(@polkadot/api@10.12.1)(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) + version: 0.46.9(@polkadot/api@10.12.6)(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) '@polkadot/extension-inject': specifier: ^0.46.9 - version: 0.46.9(@polkadot/api@10.12.1)(@polkadot/util@12.6.2) + version: 0.46.9(@polkadot/api@10.12.6)(@polkadot/util@12.6.2) '@polkadot/util': specifier: ^12.6.2 version: 12.6.2 @@ -409,17 +409,17 @@ importers: specifier: ^27.5.2 version: 27.5.2 '@types/node': - specifier: ^16.18.80 - version: 16.18.80 + specifier: ^16.18.96 + version: 16.18.96 '@types/react': - specifier: ^18.2.55 - version: 18.2.55 + specifier: ^18.2.78 + version: 18.2.78 '@types/react-dom': - specifier: ^18.2.19 - version: 18.2.19 + specifier: ^18.2.25 + version: 18.2.25 ethers: - specifier: ^6.9.0 - version: 6.9.0 + specifier: ^6.11.1 + version: 6.11.1 react: specifier: ^18.2.0 version: 18.2.0 @@ -428,7 +428,7 @@ importers: version: 18.2.0(react@18.2.0) react-scripts: specifier: 5.0.1 - version: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.26.0)(react@18.2.0)(typescript@4.9.5) + version: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)(react@18.2.0)(typescript@4.9.5) typescript: specifier: ^4.9.5 version: 4.9.5 @@ -445,12 +445,16 @@ importers: packages: + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + /@adobe/css-tools@4.3.3: resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} dev: false - /@adraffy/ens-normalize@1.10.0: - resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + /@adraffy/ens-normalize@1.10.1: + resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} @@ -521,7 +525,7 @@ packages: - supports-color dev: false - /@babel/eslint-parser@7.23.10(@babel/core@7.23.9)(eslint@8.26.0): + /@babel/eslint-parser@7.23.10(@babel/core@7.23.9)(eslint@8.57.0): resolution: {integrity: sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -530,7 +534,7 @@ packages: dependencies: '@babel/core': 7.23.9 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.26.0 + eslint: 8.57.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 dev: false @@ -2099,15 +2103,18 @@ packages: postcss-selector-parser: 6.0.15 dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.26.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.26.0 - eslint-visitor-keys: 3.4.1 - dev: false + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} /@eslint/eslintrc@1.3.3: resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} @@ -2124,6 +2131,27 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + 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) + espree: 9.6.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} /@ethersproject/abi@5.7.0: resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} @@ -2432,6 +2460,16 @@ packages: fast-json-stringify: 5.9.1 dev: true + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + /@humanwhocodes/config-array@0.11.8: resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} engines: {node: '>=10.10.0'} @@ -2441,6 +2479,7 @@ packages: minimatch: 3.1.2 transitivePeerDependencies: - supports-color + dev: true /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -2448,6 +2487,10 @@ packages: /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -2482,7 +2525,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.16.8 + '@types/node': 18.19.31 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 @@ -2494,7 +2537,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 - '@types/node': 18.16.8 + '@types/node': 18.19.31 chalk: 4.1.2 jest-message-util: 28.1.3 jest-util: 28.1.3 @@ -2515,7 +2558,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.16.8 + '@types/node': 18.19.31 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 @@ -2552,7 +2595,7 @@ packages: dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.16.8 + '@types/node': 18.19.31 jest-mock: 27.5.1 dev: false @@ -2562,7 +2605,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 18.16.8 + '@types/node': 18.19.31 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -2591,7 +2634,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.16.8 + '@types/node': 18.19.31 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -2692,7 +2735,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.16.8 + '@types/node': 18.19.31 '@types/yargs': 16.0.9 chalk: 4.1.2 dev: false @@ -2704,7 +2747,7 @@ packages: '@jest/schemas': 28.1.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.16.8 + '@types/node': 18.19.31 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: false @@ -2802,7 +2845,7 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.13.0 + fastq: 1.15.0 /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -2873,7 +2916,6 @@ packages: '@polkadot-api/substrate-client': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 '@polkadot-api/utils': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 rxjs: 7.8.1 - dev: false optional: true /@polkadot-api/json-rpc-provider-proxy@0.0.1-12c4b0432a814086c3c1a3b8052b31c72c2c9ad3.1.0: @@ -2882,7 +2924,6 @@ packages: /@polkadot-api/json-rpc-provider-proxy@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0: resolution: {integrity: sha512-0hZ8vtjcsyCX8AyqP2sqUHa1TFFfxGWmlXJkit0Nqp9b32MwZqn5eaUAiV2rNuEpoglKOdKnkGtUF8t5MoodKw==} - dev: false optional: true /@polkadot-api/json-rpc-provider@0.0.1-12c4b0432a814086c3c1a3b8052b31c72c2c9ad3.1.0: @@ -2891,7 +2932,6 @@ packages: /@polkadot-api/json-rpc-provider@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0: resolution: {integrity: sha512-EaUS9Fc3wsiUr6ZS43PQqaRScW7kM6DYbuM/ou0aYjm8N9MBqgDbGm2oL6RE1vAVmOfEuHcXZuZkhzWtyvQUtA==} - dev: false optional: true /@polkadot-api/metadata-builders@0.0.1-12c4b0432a814086c3c1a3b8052b31c72c2c9ad3.1.0: @@ -2906,7 +2946,6 @@ packages: dependencies: '@polkadot-api/substrate-bindings': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 '@polkadot-api/utils': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 - dev: false optional: true /@polkadot-api/substrate-bindings@0.0.1-12c4b0432a814086c3c1a3b8052b31c72c2c9ad3.1.0: @@ -2925,7 +2964,6 @@ packages: '@polkadot-api/utils': 0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0 '@scure/base': 1.1.5 scale-ts: 1.6.0 - dev: false optional: true /@polkadot-api/substrate-client@0.0.1-12c4b0432a814086c3c1a3b8052b31c72c2c9ad3.1.0: @@ -2934,7 +2972,6 @@ packages: /@polkadot-api/substrate-client@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0: resolution: {integrity: sha512-lcdvd2ssUmB1CPzF8s2dnNOqbrDa+nxaaGbuts+Vo8yjgSKwds2Lo7Oq+imZN4VKW7t9+uaVcKFLMF7PdH0RWw==} - dev: false optional: true /@polkadot-api/utils@0.0.1-12c4b0432a814086c3c1a3b8052b31c72c2c9ad3.1.0: @@ -2943,26 +2980,8 @@ packages: /@polkadot-api/utils@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0: resolution: {integrity: sha512-0CYaCjfLQJTCRCiYvZ81OncHXEKPzAexCMoVloR+v2nl/O2JRya/361MtPkeNLC6XBoaEgLAG9pWQpH3WePzsw==} - dev: false optional: true - /@polkadot/api-augment@10.11.1: - resolution: {integrity: sha512-9Sk7fi6wzvxAoxvGJPcMt0hU4WzuIAlBy4Rng6WPiS6Ed0HJLr1dkZaqFFmV5my2pb3tu//1JGYkt+MUVB0Kqw==} - engines: {node: '>=18'} - dependencies: - '@polkadot/api-base': 10.11.1 - '@polkadot/rpc-augment': 10.11.1 - '@polkadot/types': 10.11.1 - '@polkadot/types-augment': 10.11.1 - '@polkadot/types-codec': 10.11.1 - '@polkadot/util': 12.6.2 - tslib: 2.6.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: false - /@polkadot/api-augment@10.12.1: resolution: {integrity: sha512-M8W8L3A1AaCvbDOt6xQm0/6Ul1MTUAiO7gTdNrszP5acTJUxnetiHRziJoquClhhzldkrwD79qFbqlhXK42GaQ==} engines: {node: '>=18'} @@ -2979,20 +2998,21 @@ packages: - supports-color - utf-8-validate - /@polkadot/api-base@10.11.1: - resolution: {integrity: sha512-A645Hj9bGtq0EOEWcwTaGoD40vp8/ih1suwinl5il8Psg+bdDmzodnVH5Jhuwe1dNKOuXuvxZvOmbYUPWyIqyg==} + /@polkadot/api-augment@10.12.6: + resolution: {integrity: sha512-CZHaFAd6zexk3JCm1mY5doE1E634xNpKaTGpbs61Ch285d5EqBY25GdzGNiMprNl4VyRFT4N7dXKfwEdsM6Z9w==} engines: {node: '>=18'} dependencies: - '@polkadot/rpc-core': 10.11.1 - '@polkadot/types': 10.11.1 + '@polkadot/api-base': 10.12.6 + '@polkadot/rpc-augment': 10.12.6 + '@polkadot/types': 10.12.6 + '@polkadot/types-augment': 10.12.6 + '@polkadot/types-codec': 10.12.6 '@polkadot/util': 12.6.2 - rxjs: 7.8.1 tslib: 2.6.2 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - dev: false /@polkadot/api-base@10.12.1: resolution: {integrity: sha512-USfcGxO8RBOLSwYDdUArNt9jLR/r8qVhCs8iGEGoGnaSkTcJrvT1YzZ0Qy+QF3ZjZ5GfsnzRonBg3N6drHo6fQ==} @@ -3008,44 +3028,38 @@ packages: - supports-color - utf-8-validate - /@polkadot/api-cli@0.56.2: - resolution: {integrity: sha512-/a2PSs7kZicjzqTmPRmDepWMRh25a3WsuJdXKlFUHxQSXMRRT4rLPpBJonkXCV8F8XE+7eDQBKMg9dVYClmV6g==} + /@polkadot/api-base@10.12.6: + resolution: {integrity: sha512-6EzMettffiadB5j0X2nValtrEZJ2dKZMArfWHbSCV1QRSPOaMO3Phf/idqtF8HgBHD3FCHJ+JsZEns6xpkpteg==} engines: {node: '>=18'} - hasBin: true dependencies: - '@polkadot/api': 10.12.1 - '@polkadot/api-augment': 10.12.1 - '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) - '@polkadot/types': 10.12.1 + '@polkadot/rpc-core': 10.12.6 + '@polkadot/types': 10.12.6 '@polkadot/util': 12.6.2 - '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) + rxjs: 7.8.1 tslib: 2.6.2 - yargs: 17.7.2 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - dev: true - /@polkadot/api-derive@10.11.1: - resolution: {integrity: sha512-i48okJr0l1IrFTPa9KVkoJnDL2EHKExR6XC0Z7I9+kW9noxYWqo0tIoi5s1bNVD475xWK/rUjT7qHxiDbPaCUQ==} + /@polkadot/api-cli@0.56.2: + resolution: {integrity: sha512-/a2PSs7kZicjzqTmPRmDepWMRh25a3WsuJdXKlFUHxQSXMRRT4rLPpBJonkXCV8F8XE+7eDQBKMg9dVYClmV6g==} engines: {node: '>=18'} + hasBin: true dependencies: - '@polkadot/api': 10.11.1 - '@polkadot/api-augment': 10.11.1 - '@polkadot/api-base': 10.11.1 - '@polkadot/rpc-core': 10.11.1 - '@polkadot/types': 10.11.1 - '@polkadot/types-codec': 10.11.1 + '@polkadot/api': 10.12.6 + '@polkadot/api-augment': 10.12.1 + '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) + '@polkadot/types': 10.12.6 '@polkadot/util': 12.6.2 '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) - rxjs: 7.8.1 tslib: 2.6.2 + yargs: 17.7.2 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - dev: false + dev: true /@polkadot/api-derive@10.12.1: resolution: {integrity: sha512-tq03EmT8sgRnmbZW1E5GOIrdJGxGD+VhsJRP5kXMffpfzKGizzTbnMEOoCKg9fzB17ZtcwaJBJiLOQFTWy0O3g==} @@ -3066,32 +3080,24 @@ packages: - supports-color - utf-8-validate - /@polkadot/api@10.11.1: - resolution: {integrity: sha512-WEgUYvY90AHX9drmsvWQ4DDuqlE7h4x3f28K5eOoJF4dQ5AkWsFogxwJ4TH57POWLfyi8AIn6/f1vsqPtReDhA==} + /@polkadot/api-derive@10.12.6: + resolution: {integrity: sha512-stjciYU9caSvPrcPo40zwPu15O7Q9OK9ldMFyyQkDdUT4cCE0LHuCmTNwcm4XhQq3XXJn+e7WNdhBfquwvkuhw==} engines: {node: '>=18'} dependencies: - '@polkadot/api-augment': 10.11.1 - '@polkadot/api-base': 10.11.1 - '@polkadot/api-derive': 10.11.1 - '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) - '@polkadot/rpc-augment': 10.11.1 - '@polkadot/rpc-core': 10.11.1 - '@polkadot/rpc-provider': 10.11.1 - '@polkadot/types': 10.11.1 - '@polkadot/types-augment': 10.11.1 - '@polkadot/types-codec': 10.11.1 - '@polkadot/types-create': 10.11.1 - '@polkadot/types-known': 10.11.1 + '@polkadot/api': 10.12.6 + '@polkadot/api-augment': 10.12.6 + '@polkadot/api-base': 10.12.6 + '@polkadot/rpc-core': 10.12.6 + '@polkadot/types': 10.12.6 + '@polkadot/types-codec': 10.12.6 '@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 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - dev: false /@polkadot/api@10.12.1: resolution: {integrity: sha512-6pZPpgyxSphse9PCZ/QxUygk0BYbcCNjr5ERZZsTE/F1znZ62Ce63A8AE0bwga9ITkiVISLDSU36hghKs3tVhA==} @@ -3119,7 +3125,33 @@ packages: - supports-color - utf-8-validate - /@polkadot/extension-dapp@0.46.9(@polkadot/api@10.12.1)(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2): + /@polkadot/api@10.12.6: + resolution: {integrity: sha512-qWF7qFLZtpSILuPeZcvz0oCBXe89XndDjzgCnflvEVIUkQvxtFM8mDXpzI4bz8klrLYHlyFbP7HJl/xLi+XTew==} + engines: {node: '>=18'} + dependencies: + '@polkadot/api-augment': 10.12.6 + '@polkadot/api-base': 10.12.6 + '@polkadot/api-derive': 10.12.6 + '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) + '@polkadot/rpc-augment': 10.12.6 + '@polkadot/rpc-core': 10.12.6 + '@polkadot/rpc-provider': 10.12.6 + '@polkadot/types': 10.12.6 + '@polkadot/types-augment': 10.12.6 + '@polkadot/types-codec': 10.12.6 + '@polkadot/types-create': 10.12.6 + '@polkadot/types-known': 10.12.6 + '@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 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + /@polkadot/extension-dapp@0.46.9(@polkadot/api@10.12.6)(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2): resolution: {integrity: sha512-y5udSeQ/X9MEoyjlpTcCn0UAEjZ2jjy6U3V/jiVFQo5vBKhdqAhN1oN8X5c4yWurmhYM/7oibImxAjEoXuwH+Q==} engines: {node: '>=18'} peerDependencies: @@ -3127,8 +3159,8 @@ packages: '@polkadot/util': '*' '@polkadot/util-crypto': '*' dependencies: - '@polkadot/api': 10.12.1 - '@polkadot/extension-inject': 0.46.9(@polkadot/api@10.12.1)(@polkadot/util@12.6.2) + '@polkadot/api': 10.12.6 + '@polkadot/extension-inject': 0.46.9(@polkadot/api@10.12.6)(@polkadot/util@12.6.2) '@polkadot/util': 12.6.2 '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) tslib: 2.6.2 @@ -3138,14 +3170,14 @@ packages: - utf-8-validate dev: false - /@polkadot/extension-inject@0.46.9(@polkadot/api@10.12.1)(@polkadot/util@12.6.2): + /@polkadot/extension-inject@0.46.9(@polkadot/api@10.12.6)(@polkadot/util@12.6.2): resolution: {integrity: sha512-m0jnrs9+jEOpMH6OUNl7nHpz9SFFWK9LzuqB8T3htEE3RUYPL//SLCPyEKxAAgHu7F8dgkUHssAWQfANofALCQ==} engines: {node: '>=18'} peerDependencies: '@polkadot/api': '*' '@polkadot/util': '*' dependencies: - '@polkadot/api': 10.12.1 + '@polkadot/api': 10.12.6 '@polkadot/rpc-provider': 10.12.6 '@polkadot/types': 10.12.6 '@polkadot/util': 12.6.2 @@ -3177,21 +3209,6 @@ packages: '@substrate/ss58-registry': 1.44.0 tslib: 2.6.2 - /@polkadot/rpc-augment@10.11.1: - resolution: {integrity: sha512-wrtxHnEwqS3b1GuZ3sA1pzLuUjjLnW4FPawOklONRcIuKbGmFuvu7QvEIHmxBV1FAS/fs8gbvp8ImKWUPnT93Q==} - engines: {node: '>=18'} - dependencies: - '@polkadot/rpc-core': 10.11.1 - '@polkadot/types': 10.11.1 - '@polkadot/types-codec': 10.11.1 - '@polkadot/util': 12.6.2 - tslib: 2.6.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: false - /@polkadot/rpc-augment@10.12.1: resolution: {integrity: sha512-4U4u5az6h7U4me2D7NYSNice++cpnG+6XUrE3UgSNQmvcQErB3DKAAln+P4iEQ9/Tj/Ex5jqjrfianCFJTlBcg==} engines: {node: '>=18'} @@ -3206,21 +3223,19 @@ packages: - supports-color - utf-8-validate - /@polkadot/rpc-core@10.11.1: - resolution: {integrity: sha512-3l4l+zL7MDWzQx3WnaieXXUKsbeA1Miu4wsje5trYJEE+hm+nMW8h7fiFKfYzXBi7ty/wMS+S7BfQPTrDkYHxA==} + /@polkadot/rpc-augment@10.12.6: + resolution: {integrity: sha512-MMZgdZtVygHqgsmCdKhfaN9ywf6im72xJzc9H8fkqyoJ+cGVy36uI3e8YwEM9vV6g/nallFmz4mU46u8/TjGlw==} engines: {node: '>=18'} dependencies: - '@polkadot/rpc-augment': 10.11.1 - '@polkadot/rpc-provider': 10.11.1 - '@polkadot/types': 10.11.1 + '@polkadot/rpc-core': 10.12.6 + '@polkadot/types': 10.12.6 + '@polkadot/types-codec': 10.12.6 '@polkadot/util': 12.6.2 - rxjs: 7.8.1 tslib: 2.6.2 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - dev: false /@polkadot/rpc-core@10.12.1: resolution: {integrity: sha512-e8UViFN4p2STOhKL5HVxMI9ugzxrq1Ir85Pxpf2N29J8h4L8RwOuc6IPyn18uuKQakkl5b7EjsE2VKecjT4iUw==} @@ -3237,29 +3252,20 @@ packages: - supports-color - utf-8-validate - /@polkadot/rpc-provider@10.11.1: - resolution: {integrity: sha512-86aDUOnaG42si0jSOAgn6Fs3F3rz57x+iNBK1JpM0PLL2XvmPuoMZL5dZwzqSIey3nVdGJqRYfnFquWuyQpnOQ==} + /@polkadot/rpc-core@10.12.6: + resolution: {integrity: sha512-aBXhkryv2NMNg+cWajn/G0DF13inXIW+6iZV9cGc6lfsYT9Di/sasO0EIx7UUZW3ILYQ6Gh9jRgNLkwSNlAV9Q==} engines: {node: '>=18'} dependencies: - '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) - '@polkadot/types': 10.11.1 - '@polkadot/types-support': 10.11.1 + '@polkadot/rpc-augment': 10.12.6 + '@polkadot/rpc-provider': 10.12.6 + '@polkadot/types': 10.12.6 '@polkadot/util': 12.6.2 - '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) - '@polkadot/x-fetch': 12.6.1 - '@polkadot/x-global': 12.6.2 - '@polkadot/x-ws': 12.6.1 - eventemitter3: 5.0.1 - mock-socket: 9.3.1 - nock: 13.3.8 + rxjs: 7.8.1 tslib: 2.6.2 - optionalDependencies: - '@substrate/connect': 0.7.35 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - dev: false /@polkadot/rpc-provider@10.12.1: resolution: {integrity: sha512-fLUK/j9M/eBthx1w40NEC94wIMHbCzSEpT3jTgFHHT9fu3HrMjZZlFUXuwjGF2Dqkjj9lTuy1W0R/4kx1RMOHw==} @@ -3306,17 +3312,6 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - - /@polkadot/types-augment@10.11.1: - resolution: {integrity: sha512-Exd5mMCuSOXXz73iWqy8ocScWTrwAPqHz0Kxpz5OWlAu+5usipMuhjoeaZA803FHQntZh9lHUN31fuc50Exhew==} - engines: {node: '>=18'} - dependencies: - '@polkadot/types': 10.11.1 - '@polkadot/types-codec': 10.11.1 - '@polkadot/util': 12.6.2 - tslib: 2.6.2 - dev: false /@polkadot/types-augment@10.12.1: resolution: {integrity: sha512-FZFBP7u5fky7tB9K4D1MoKEU4yXJhysGpr+FItYFJ+y6R+R2KTA0LFjLHtGzXYmijDRNOoIdCFwRDWinkdpWZA==} @@ -3335,16 +3330,6 @@ packages: '@polkadot/types-codec': 10.12.6 '@polkadot/util': 12.6.2 tslib: 2.6.2 - dev: false - - /@polkadot/types-codec@10.11.1: - resolution: {integrity: sha512-B9Fu2hq3cRpJpGPcgfZ8Qi1OSX9u82J46adlbIG95ktoA+70eZ83VS3Zvtt9ACsdLVGETCJfDjSO25XptjhZKQ==} - engines: {node: '>=18'} - dependencies: - '@polkadot/util': 12.6.2 - '@polkadot/x-bigint': 12.6.1 - tslib: 2.6.2 - dev: false /@polkadot/types-codec@10.12.1: resolution: {integrity: sha512-f6jVI0gIaPwelirtds4W3q4uLboNnzbi/2844/vwlVO4BRLvpoXU8Ee3KuUTU+Qclg14I+S0Zm491O/Op2vgGw==} @@ -3361,16 +3346,6 @@ packages: '@polkadot/util': 12.6.2 '@polkadot/x-bigint': 12.6.2 tslib: 2.6.2 - dev: false - - /@polkadot/types-create@10.11.1: - resolution: {integrity: sha512-oeaI185F3XeWSz9/fe//qZ0KsQyE6C6c13WuOa+5cX/Yuz7cSAXawrhl58HRaU+fueaE/ijEHLcuK1sdM6e1JQ==} - engines: {node: '>=18'} - dependencies: - '@polkadot/types-codec': 10.11.1 - '@polkadot/util': 12.6.2 - tslib: 2.6.2 - dev: false /@polkadot/types-create@10.12.1: resolution: {integrity: sha512-ZpWUNrDaJQO1iYwtOva68S2xlEzfpQOPW5IylqlnV6izmavQvClwr7i2y3vL52YjoFNa3ZPEhxvwH7o4NtWB0A==} @@ -3387,19 +3362,6 @@ packages: '@polkadot/types-codec': 10.12.6 '@polkadot/util': 12.6.2 tslib: 2.6.2 - dev: false - - /@polkadot/types-known@10.11.1: - resolution: {integrity: sha512-BPHI7EbdRaznZR4RVVrQC5epyxL6caJ5dkluZP6rRwx7VmQK0FTGIwgh3UP724mzQhM8rT77MD3h2ftnq1cteg==} - engines: {node: '>=18'} - dependencies: - '@polkadot/networks': 12.6.2 - '@polkadot/types': 10.11.1 - '@polkadot/types-codec': 10.11.1 - '@polkadot/types-create': 10.11.1 - '@polkadot/util': 12.6.2 - tslib: 2.6.2 - dev: false /@polkadot/types-known@10.12.1: resolution: {integrity: sha512-qmUZ1HqPRvgrCMmRGrJy7FYuSjACxG1Htf/SSJwfWkwR+prFXQeMmADEmG8L3d9KZ/L1Mat/MF/9it0FrzX6aA==} @@ -3412,13 +3374,16 @@ packages: '@polkadot/util': 12.6.2 tslib: 2.6.2 - /@polkadot/types-support@10.11.1: - resolution: {integrity: sha512-eCvWjdpELsHvXiTq201DdbIeOIaEr53zTD7HqC2wR/Z1bkQuw79Z+CyIU4sp79GL1vZ1PxS7vUH9M3FKNaTl1Q==} + /@polkadot/types-known@10.12.6: + resolution: {integrity: sha512-E/LWfOAPUW7YKAiioY7Ax/s+G4cuNQop3U/TPPM7sxXOv9hSia2hgFjtiU4NyTRVwf1O07YASXtYSecdSgcCuQ==} engines: {node: '>=18'} dependencies: + '@polkadot/networks': 12.6.2 + '@polkadot/types': 10.12.6 + '@polkadot/types-codec': 10.12.6 + '@polkadot/types-create': 10.12.6 '@polkadot/util': 12.6.2 tslib: 2.6.2 - dev: false /@polkadot/types-support@10.12.1: resolution: {integrity: sha512-H9eR2BAjSjWE+eq2jYhd8w5fgdCKy8XKUWQJ6VNvgxDtVeVMoPgY4iqLFwZUeuQjFiZJVMshCR63zjlRM1x3fg==} @@ -3433,21 +3398,6 @@ packages: dependencies: '@polkadot/util': 12.6.2 tslib: 2.6.2 - dev: false - - /@polkadot/types@10.11.1: - resolution: {integrity: sha512-4uKnzW2GZqNA5qRZpTPJ7z+G/ARTvXI89etv9xXXVttUdfTaYZsMf4rMuMThOAE/mAUn70LoH0JKthZLwzVgNQ==} - engines: {node: '>=18'} - dependencies: - '@polkadot/keyring': 12.6.2(@polkadot/util-crypto@12.6.2)(@polkadot/util@12.6.2) - '@polkadot/types-augment': 10.11.1 - '@polkadot/types-codec': 10.11.1 - '@polkadot/types-create': 10.11.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 - dev: false /@polkadot/types@10.12.1: resolution: {integrity: sha512-rQ3OdKPAw0YucjD+97dYoEmhKLPIGDj0jd2vIwvfazeowwy854Hp3uYcPyGBq74l5hPo+6xYMySEqq7o99Nc0Q==} @@ -3474,7 +3424,6 @@ packages: '@polkadot/util-crypto': 12.6.2(@polkadot/util@12.6.2) rxjs: 7.8.1 tslib: 2.6.2 - dev: false /@polkadot/util-crypto@12.6.2(@polkadot/util@12.6.2): resolution: {integrity: sha512-FEWI/dJ7wDMNN1WOzZAjQoIcCP/3vz3wvAp5QQm+lOrzOLj0iDmaIGIcBkz8HVm3ErfSe/uKP0KS4jgV/ib+Mg==} @@ -3576,14 +3525,6 @@ packages: '@polkadot/util': 12.6.2 tslib: 2.6.2 - /@polkadot/x-bigint@12.6.1: - resolution: {integrity: sha512-YlABeVIlgYQZJ4ZpW/+akFGGxw5jMGt4g5vaP7EumlORGneJHzzWJYDmI5v2y7j1zvC9ofOle7z4tRmtN/QDew==} - engines: {node: '>=18'} - dependencies: - '@polkadot/x-global': 12.6.1 - tslib: 2.6.2 - dev: false - /@polkadot/x-bigint@12.6.2: resolution: {integrity: sha512-HSIk60uFPX4GOFZSnIF7VYJz7WZA7tpFJsne7SzxOooRwMTWEtw3fUpFy5cYYOeLh17/kHH1Y7SVcuxzVLc74Q==} engines: {node: '>=18'} @@ -3591,15 +3532,6 @@ packages: '@polkadot/x-global': 12.6.2 tslib: 2.6.2 - /@polkadot/x-fetch@12.6.1: - resolution: {integrity: sha512-iyBv0ecfCsqGSv26CPJk9vSoKtry/Fn7x549ysA4hlc9KboraMHxOHTpcNZYC/OdgvbFZl40zIXCY0SA1ai8aw==} - engines: {node: '>=18'} - dependencies: - '@polkadot/x-global': 12.6.1 - node-fetch: 3.3.2 - tslib: 2.6.2 - dev: false - /@polkadot/x-fetch@12.6.2: resolution: {integrity: sha512-8wM/Z9JJPWN1pzSpU7XxTI1ldj/AfC8hKioBlUahZ8gUiJaOF7K9XEFCrCDLis/A1BoOu7Ne6WMx/vsJJIbDWw==} engines: {node: '>=18'} @@ -3608,13 +3540,6 @@ packages: node-fetch: 3.3.2 tslib: 2.6.2 - /@polkadot/x-global@12.6.1: - resolution: {integrity: sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==} - engines: {node: '>=18'} - dependencies: - tslib: 2.6.2 - dev: false - /@polkadot/x-global@12.6.2: resolution: {integrity: sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==} engines: {node: '>=18'} @@ -3647,18 +3572,6 @@ packages: '@polkadot/x-global': 12.6.2 tslib: 2.6.2 - /@polkadot/x-ws@12.6.1: - resolution: {integrity: sha512-fs9V+XekjJLpVLLwxnqq3llqSZu2T/b9brvld8anvzS/htDLPbi7+c5W3VGJ9Po8fS67IsU3HCt0Gu6F6mGrMA==} - engines: {node: '>=18'} - dependencies: - '@polkadot/x-global': 12.6.1 - tslib: 2.6.2 - ws: 8.14.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - /@polkadot/x-ws@12.6.2: resolution: {integrity: sha512-cGZWo7K5eRRQCRl2LrcyCYsrc3lRbTlixZh3AzgU8uX4wASVGRlNWi/Hf4TtHNe1ExCDmxabJzdIsABIfrr7xw==} engines: {node: '>=18'} @@ -3849,12 +3762,6 @@ packages: '@sinonjs/commons': 1.8.6 dev: false - /@substrate/connect-extension-protocol@1.0.1: - resolution: {integrity: sha512-161JhCC1csjH3GE5mPLEd7HbWtwNSPJBg3p1Ksz9SFlTzj/bgEwudiRN2y5i0MoLGCIJRYKyKGMxVnd29PzNjg==} - requiresBuild: true - dev: false - optional: true - /@substrate/connect-extension-protocol@2.0.0: resolution: {integrity: sha512-nKu8pDrE3LNCEgJjZe1iGXzaD6OSIDD4Xzz/yo4KO9mQ6LBvf49BVrt4qxBFGL6++NneLiWUZGoh+VSd4PyVIg==} optional: true @@ -3865,19 +3772,6 @@ packages: /@substrate/connect-known-chains@1.1.2: resolution: {integrity: sha512-XvyemTVqon+6EF2G7QL0fEXxjuz3nUNFgFV0TSWhSVpPb+Sfs+vfipbEZxGNouxvjCoJdr6CF0rwgGsrrKOnAA==} - dev: false - optional: true - - /@substrate/connect@0.7.35: - resolution: {integrity: sha512-Io8vkalbwaye+7yXfG1Nj52tOOoJln2bMlc7Q9Yy3vEWqZEVkgKmcPVzbwV0CWL3QD+KMPDA2Dnw/X7EdwgoLw==} - requiresBuild: true - dependencies: - '@substrate/connect-extension-protocol': 1.0.1 - smoldot: 2.0.7 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false optional: true /@substrate/connect@0.8.7: @@ -3904,7 +3798,6 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false optional: true /@substrate/light-client-extension-helpers@0.0.3(smoldot@2.0.21): @@ -3935,7 +3828,6 @@ packages: '@substrate/connect-known-chains': 1.1.2 rxjs: 7.8.1 smoldot: 2.0.22 - dev: false optional: true /@substrate/ss58-registry@1.44.0: @@ -4118,7 +4010,7 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@testing-library/dom': 8.20.1 - '@types/react-dom': 18.2.19 + '@types/react-dom': 18.2.25 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -4179,18 +4071,18 @@ packages: typescript: 5.1.6 dev: false - /@typechain/ethers-v6@0.5.1(ethers@6.9.0)(typechain@8.3.2)(typescript@5.1.6): + /@typechain/ethers-v6@0.5.1(ethers@6.11.1)(typechain@8.3.2)(typescript@5.4.5): resolution: {integrity: sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==} peerDependencies: ethers: 6.x typechain: ^8.3.2 typescript: '>=4.7.0' dependencies: - ethers: 6.9.0 + ethers: 6.11.1 lodash: 4.17.21 - ts-essentials: 7.0.3(typescript@5.1.6) - typechain: 8.3.2(typescript@5.1.6) - typescript: 5.1.6 + ts-essentials: 7.0.3(typescript@5.4.5) + typechain: 8.3.2(typescript@5.4.5) + typescript: 5.4.5 /@types/aria-query@5.0.4: resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -4228,38 +4120,38 @@ packages: /@types/bn.js@4.11.6: resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false /@types/bn.js@5.1.5: resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 /@types/body-parser@1.19.5: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false /@types/bonjour@3.5.13: resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false /@types/connect-history-api-fallback@1.5.4: resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: '@types/express-serve-static-core': 4.17.43 - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false /@types/eslint-scope@3.7.7: @@ -4287,7 +4179,7 @@ packages: /@types/express-serve-static-core@4.17.43: resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 '@types/qs': 6.9.11 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -4305,7 +4197,7 @@ packages: /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false /@types/history@4.7.11: @@ -4323,7 +4215,7 @@ packages: /@types/http-proxy@1.17.14: resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false /@types/istanbul-lib-coverage@2.0.6: @@ -4359,18 +4251,28 @@ packages: /@types/keccak@3.0.1: resolution: {integrity: sha512-/MxAVmtyyeOvZ6dGf3ciLwFRuV5M8DRIyYNFGHYI6UyBW4/XqyO0LZw+JFMvaeY3cHItQAkELclBU1x5ank6mg==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 + + /@types/keccak@3.0.4: + resolution: {integrity: sha512-hdnkmbie7tE0yXnQQvlIOqCyjEsoXDVEZ3ACqO+F305XgUOW4Z9ElWdogCXXRAW/khnZ7GxM0t/BGB5bORKt/g==} + dependencies: + '@types/node': 18.19.31 + dev: false /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: true /@types/lodash@4.14.187: resolution: {integrity: sha512-MrO/xLXCaUgZy3y96C/iOsaIqZSeupyTImKClHunL5GrmaiII2VwvWmLBu2hwa0Kp0sV19CsyjtrTc/Fx8rg/A==} dev: false + /@types/lodash@4.17.0: + resolution: {integrity: sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==} + dev: false + /@types/long@4.0.2: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} dev: true @@ -4386,11 +4288,11 @@ packages: /@types/node-forge@1.3.11: resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false - /@types/node@16.18.80: - resolution: {integrity: sha512-vFxJ1Iyl7A0+xB0uW1r1v504yItKZLdqg/VZELUZ4H02U0bXAgBisSQ8Erf0DMruNFz9ggoiEv6T8Ll9bTg8Jw==} + /@types/node@16.18.96: + resolution: {integrity: sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==} dev: false /@types/node@18.15.13: @@ -4399,6 +4301,11 @@ packages: /@types/node@18.16.8: resolution: {integrity: sha512-p0iAXcfWCOTCBbsExHIDFCfwsqFwBTgETJveKMT+Ci3LY9YqQCI91F5S+TB20+aRCXpcWfvx5Qr5EccnwCm2NA==} + /@types/node@18.19.31: + resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} + dependencies: + undici-types: 5.26.5 + /@types/parse-json@4.0.2: resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} dev: false @@ -4406,7 +4313,7 @@ packages: /@types/pbkdf2@3.1.0: resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false /@types/prettier@2.7.1: @@ -4427,17 +4334,17 @@ packages: resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} dev: false - /@types/react-dom@18.2.19: - resolution: {integrity: sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==} + /@types/react-dom@18.2.25: + resolution: {integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==} dependencies: - '@types/react': 18.2.55 + '@types/react': 18.2.78 dev: false /@types/react-router-dom@5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.55 + '@types/react': 18.2.78 '@types/react-router': 5.1.20 dev: true @@ -4445,45 +4352,51 @@ packages: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.55 + '@types/react': 18.2.78 dev: true - /@types/react@18.2.55: - resolution: {integrity: sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==} + /@types/react@18.2.78: + resolution: {integrity: sha512-qOwdPnnitQY4xKlKayt42q5W5UQrSHjgoXNVEtxeqdITJ99k4VXJOP3vt8Rkm9HmgJpH50UNU+rlqfkfWOqp0A==} dependencies: '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 csstype: 3.1.3 /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: true /@types/retry@0.12.0: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} dev: false - /@types/scheduler@0.16.8: - resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - /@types/secp256k1@4.0.3: resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 + dev: false + + /@types/secp256k1@4.0.6: + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + dependencies: + '@types/node': 18.19.31 dev: false /@types/seedrandom@3.0.2: resolution: {integrity: sha512-YPLqEOo0/X8JU3rdiq+RgUKtQhQtrppE766y7vMTu8dGML7TVtZNiiiaC/hhU9Zqw9UYopXxhuWWENclMVBwKQ==} dev: false + /@types/seedrandom@3.0.8: + resolution: {integrity: sha512-TY1eezMU2zH2ozQoAFAQFOPpvP15g+ZgSfTZt31AUUH/Rxtnz3H+A/Sv1Snw2/amp//omibc+AEkTaA8KUeOLQ==} + dev: false + /@types/semver@7.5.0: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} @@ -4491,7 +4404,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false /@types/serve-index@1.9.4: @@ -4505,13 +4418,13 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false /@types/sockjs@0.3.36: resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false /@types/stack-utils@2.0.3: @@ -4531,7 +4444,7 @@ packages: /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false /@types/yargs-parser@21.0.0: @@ -4548,7 +4461,7 @@ packages: dependencies: '@types/yargs-parser': 21.0.0 - /@typescript-eslint/eslint-plugin@5.42.0(@typescript-eslint/parser@5.42.0)(eslint@8.26.0)(typescript@4.9.5): + /@typescript-eslint/eslint-plugin@5.42.0(@typescript-eslint/parser@5.42.0)(eslint@8.26.0)(typescript@5.1.6): resolution: {integrity: sha512-5TJh2AgL6+wpL8H/GTSjNb4WrjKoR2rqvFxR/DDTqYNk6uXn8BJMEcncLSpMbf/XV1aS0jAjYwn98uvVCiAywQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4559,24 +4472,52 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.42.0(eslint@8.26.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.42.0(eslint@8.26.0)(typescript@5.1.6) '@typescript-eslint/scope-manager': 5.42.0 - '@typescript-eslint/type-utils': 5.42.0(eslint@8.26.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.42.0(eslint@8.26.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.42.0(eslint@8.26.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.42.0(eslint@8.26.0)(typescript@5.1.6) debug: 4.3.4(supports-color@8.1.1) eslint: 8.26.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 regexpp: 3.2.0 semver: 7.5.4 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@4.9.5): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.4 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/eslint-plugin@5.42.0(@typescript-eslint/parser@5.42.0)(eslint@8.26.0)(typescript@5.1.6): - resolution: {integrity: sha512-5TJh2AgL6+wpL8H/GTSjNb4WrjKoR2rqvFxR/DDTqYNk6uXn8BJMEcncLSpMbf/XV1aS0jAjYwn98uvVCiAywQ==} + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -4586,36 +4527,37 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.42.0(eslint@8.26.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 5.42.0 - '@typescript-eslint/type-utils': 5.42.0(eslint@8.26.0)(typescript@5.1.6) - '@typescript-eslint/utils': 5.42.0(eslint@8.26.0)(typescript@5.1.6) + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.26.0 + eslint: 8.57.0 + graphemer: 1.4.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 - regexpp: 3.2.0 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.62.0(eslint@8.26.0)(typescript@4.9.5): + /@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.0)(typescript@4.9.5): resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.26.0)(typescript@4.9.5) - eslint: 8.26.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + eslint: 8.57.0 transitivePeerDependencies: - supports-color - typescript dev: false - /@typescript-eslint/parser@5.42.0(eslint@8.26.0)(typescript@4.9.5): + /@typescript-eslint/parser@5.42.0(eslint@8.26.0)(typescript@5.1.6): resolution: {integrity: sha512-Ixh9qrOTDRctFg3yIwrLkgf33AHyEIn6lhyf5cCfwwiGtkWhNpVKlEZApi3inGQR/barWnY7qY8FbGKBO7p3JA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4627,16 +4569,36 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.42.0 '@typescript-eslint/types': 5.42.0 - '@typescript-eslint/typescript-estree': 5.42.0(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.42.0(typescript@5.1.6) debug: 4.3.4(supports-color@8.1.1) eslint: 8.26.0 + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/parser@5.42.0(eslint@8.26.0)(typescript@5.1.6): - resolution: {integrity: sha512-Ixh9qrOTDRctFg3yIwrLkgf33AHyEIn6lhyf5cCfwwiGtkWhNpVKlEZApi3inGQR/barWnY7qY8FbGKBO7p3JA==} + /@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4645,12 +4607,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.42.0 - '@typescript-eslint/types': 5.42.0 - '@typescript-eslint/typescript-estree': 5.42.0(typescript@5.1.6) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.26.0 - typescript: 5.1.6 + eslint: 8.57.0 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -4661,6 +4623,7 @@ packages: dependencies: '@typescript-eslint/types': 5.42.0 '@typescript-eslint/visitor-keys': 5.42.0 + dev: true /@typescript-eslint/scope-manager@5.62.0: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} @@ -4668,9 +4631,8 @@ packages: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - dev: false - /@typescript-eslint/type-utils@5.42.0(eslint@8.26.0)(typescript@4.9.5): + /@typescript-eslint/type-utils@5.42.0(eslint@8.26.0)(typescript@5.1.6): resolution: {integrity: sha512-HW14TXC45dFVZxnVW8rnUGnvYyRC0E/vxXShFCthcC9VhVTmjqOmtqj6H5rm9Zxv+ORxKA/1aLGD7vmlLsdlOg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4680,18 +4642,38 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.42.0(typescript@4.9.5) - '@typescript-eslint/utils': 5.42.0(eslint@8.26.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.42.0(typescript@5.1.6) + '@typescript-eslint/utils': 5.42.0(eslint@8.26.0)(typescript@5.1.6) debug: 4.3.4(supports-color@8.1.1) eslint: 8.26.0 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@4.9.5): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.0 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/type-utils@5.42.0(eslint@8.26.0)(typescript@5.1.6): - resolution: {integrity: sha512-HW14TXC45dFVZxnVW8rnUGnvYyRC0E/vxXShFCthcC9VhVTmjqOmtqj6H5rm9Zxv+ORxKA/1aLGD7vmlLsdlOg==} + /@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -4700,12 +4682,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.42.0(typescript@5.1.6) - '@typescript-eslint/utils': 5.42.0(eslint@8.26.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.26.0 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + eslint: 8.57.0 + tsutils: 3.21.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -4713,13 +4695,13 @@ packages: /@typescript-eslint/types@5.42.0: resolution: {integrity: sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true /@typescript-eslint/types@5.62.0: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: false - /@typescript-eslint/typescript-estree@5.42.0(typescript@4.9.5): + /@typescript-eslint/typescript-estree@5.42.0(typescript@5.1.6): resolution: {integrity: sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4734,14 +4716,14 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.0 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color - dev: false + dev: true - /@typescript-eslint/typescript-estree@5.42.0(typescript@5.1.6): - resolution: {integrity: sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==} + /@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -4749,19 +4731,19 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.42.0 - '@typescript-eslint/visitor-keys': 5.42.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.0 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + semver: 7.5.4 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: true + dev: false - /@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5): + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4776,13 +4758,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color - dev: false + dev: true - /@typescript-eslint/utils@5.42.0(eslint@8.26.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.42.0(eslint@8.26.0)(typescript@5.1.6): resolution: {integrity: sha512-JZ++3+h1vbeG1NUECXQZE3hg0kias9kOtcQr3+JVQ3whnjvKuMyktJAAIj6743OeNPnGBmjj7KEmiDL7qsdnCQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4792,7 +4774,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.42.0 '@typescript-eslint/types': 5.42.0 - '@typescript-eslint/typescript-estree': 5.42.0(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.42.0(typescript@5.1.6) eslint: 8.26.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0(eslint@8.26.0) @@ -4800,47 +4782,47 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: false + dev: true - /@typescript-eslint/utils@5.42.0(eslint@8.26.0)(typescript@5.1.6): - resolution: {integrity: sha512-JZ++3+h1vbeG1NUECXQZE3hg0kias9kOtcQr3+JVQ3whnjvKuMyktJAAIj6743OeNPnGBmjj7KEmiDL7qsdnCQ==} + /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@4.9.5): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.11 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.42.0 - '@typescript-eslint/types': 5.42.0 - '@typescript-eslint/typescript-estree': 5.42.0(typescript@5.1.6) - eslint: 8.26.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + eslint: 8.57.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@8.26.0) - semver: 7.5.0 + semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript - dev: true + dev: false - /@typescript-eslint/utils@5.62.0(eslint@8.26.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.26.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.11 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) - eslint: 8.26.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) + eslint: 8.57.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript - dev: false + dev: true /@typescript-eslint/visitor-keys@5.42.0: resolution: {integrity: sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==} @@ -4848,6 +4830,7 @@ packages: dependencies: '@typescript-eslint/types': 5.42.0 eslint-visitor-keys: 3.4.1 + dev: true /@typescript-eslint/visitor-keys@5.62.0: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} @@ -4855,12 +4838,14 @@ packages: dependencies: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.1 - dev: false /@ungap/promise-all-settled@1.1.2: resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} dev: true + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + /@webassemblyjs/ast@1.11.6: resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} dependencies: @@ -4982,12 +4967,12 @@ packages: dependencies: '@zombienet/dsl-parser-wrapper': 0.1.10 '@zombienet/orchestrator': 0.0.75(@polkadot/util@12.6.2)(@types/node@18.16.8) - '@zombienet/utils': 0.0.24(@types/node@18.16.8)(typescript@5.3.3) + '@zombienet/utils': 0.0.24(@types/node@18.16.8)(typescript@5.4.5) cli-progress: 3.12.0 commander: 11.1.0 debug: 4.3.4(supports-color@8.1.1) nunjucks: 3.2.4 - typescript: 5.3.3 + typescript: 5.4.5 transitivePeerDependencies: - '@polkadot/util' - '@swc/core' @@ -5008,10 +4993,10 @@ packages: resolution: {integrity: sha512-+mSBz5Ye0vF0CuLtpiRs+p9G63e1zdGBakp7Kv2jM65/tZsTcVUwyvolqw/mkTzDlTjw53Lxvxy3pUvjceEEQw==} engines: {node: '>=18'} dependencies: - '@polkadot/api': 10.12.1 + '@polkadot/api': 10.12.6 '@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.24(@types/node@18.16.8)(typescript@5.3.3) + '@zombienet/utils': 0.0.24(@types/node@18.16.8)(typescript@5.4.5) JSONStream: 1.3.5 chai: 4.3.10 debug: 4.3.4(supports-color@8.1.1) @@ -5025,7 +5010,7 @@ packages: napi-maybe-compressed-blob: 0.0.11 peer-id: 0.16.0 tmp-promise: 3.0.3 - typescript: 5.3.3 + typescript: 5.4.5 yaml: 2.3.4 transitivePeerDependencies: - '@polkadot/util' @@ -5039,7 +5024,7 @@ packages: - utf-8-validate dev: true - /@zombienet/utils@0.0.24(@types/node@18.16.8)(typescript@5.3.3): + /@zombienet/utils@0.0.24(@types/node@18.16.8)(typescript@5.4.5): resolution: {integrity: sha512-CUHn4u04ryfRqCQQsZHSpMIpMxzdMvSZR86Gp3Hwexf7wZTkHNZ5hsJnQO+J/yl28ny0GcjLJSU1hZ2kMV+hqw==} engines: {node: '>=18'} dependencies: @@ -5048,7 +5033,7 @@ packages: mocha: 10.2.0 nunjucks: 3.2.4 toml: 3.0.0 - ts-node: 10.9.1(@types/node@18.16.8)(typescript@5.3.3) + ts-node: 10.9.2(@types/node@18.16.8)(typescript@5.4.5) transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -5109,12 +5094,20 @@ packages: acorn: 8.8.2 dev: false + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + /acorn-jsx@5.3.2(acorn@8.8.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.8.2 + dev: true /acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} @@ -5132,6 +5125,11 @@ packages: hasBin: true dev: false + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + /acorn@8.8.2: resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} @@ -5805,6 +5803,11 @@ packages: engines: {node: '>=8'} dev: false + /bitfield@4.2.0: + resolution: {integrity: sha512-kUTatQb/mBd8uhvdLrUkouGDBUQiJaIOvPlptUwOWp6MFqih4d1MiVf0m3ATxfZSzu+LjW/awFeABltYa62uIA==} + engines: {node: '>=8'} + dev: false + /blakejs@1.2.1: resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} dev: false @@ -7473,6 +7476,15 @@ packages: source-map: 0.6.1 dev: false + /eslint-config-prettier@8.10.0(eslint@8.57.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.57.0 + dev: true + /eslint-config-prettier@8.5.0(eslint@8.26.0): resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} hasBin: true @@ -7482,7 +7494,7 @@ packages: eslint: 8.26.0 dev: true - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.26.0)(jest@27.5.1)(typescript@4.9.5): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)(jest@27.5.1)(typescript@4.9.5): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7493,20 +7505,20 @@ packages: optional: true dependencies: '@babel/core': 7.23.9 - '@babel/eslint-parser': 7.23.10(@babel/core@7.23.9)(eslint@8.26.0) + '@babel/eslint-parser': 7.23.10(@babel/core@7.23.9)(eslint@8.57.0) '@rushstack/eslint-patch': 1.7.2 - '@typescript-eslint/eslint-plugin': 5.42.0(@typescript-eslint/parser@5.42.0)(eslint@8.26.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.42.0(eslint@8.26.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint: 8.26.0 - eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.26.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.42.0)(eslint@8.26.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.42.0)(eslint@8.26.0)(jest@27.5.1)(typescript@4.9.5) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.26.0) - eslint-plugin-react: 7.33.2(eslint@8.26.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.26.0) - eslint-plugin-testing-library: 5.11.1(eslint@8.26.0)(typescript@4.9.5) + eslint: 8.57.0 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint@8.57.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.0)(jest@27.5.1)(typescript@4.9.5) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) + eslint-plugin-react: 7.33.2(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) + eslint-plugin-testing-library: 5.11.1(eslint@8.57.0)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -7527,7 +7539,7 @@ packages: - supports-color dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.42.0)(eslint-import-resolver-node@0.3.9)(eslint@8.26.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -7548,15 +7560,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.42.0(eslint@8.26.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5) debug: 3.2.7 - eslint: 8.26.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: false - /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.26.0): + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0): resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -7566,12 +7578,12 @@ packages: dependencies: '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) - eslint: 8.26.0 + eslint: 8.57.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: false - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.42.0)(eslint@8.26.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -7581,16 +7593,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.42.0(eslint@8.26.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.4 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.26.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.42.0)(eslint-import-resolver-node@0.3.9)(eslint@8.26.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.1 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -7606,7 +7618,7 @@ packages: - supports-color dev: false - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.42.0)(eslint@8.26.0)(jest@27.5.1)(typescript@4.9.5): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.0)(jest@27.5.1)(typescript@4.9.5): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -7619,16 +7631,16 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.42.0(@typescript-eslint/parser@5.42.0)(eslint@8.26.0)(typescript@4.9.5) - '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.26.0)(typescript@4.9.5) - eslint: 8.26.0 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + eslint: 8.57.0 jest: 27.5.1 transitivePeerDependencies: - supports-color - typescript dev: false - /eslint-plugin-jsx-a11y@6.8.0(eslint@8.26.0): + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} engines: {node: '>=4.0'} peerDependencies: @@ -7644,7 +7656,7 @@ packages: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.16 - eslint: 8.26.0 + eslint: 8.57.0 hasown: 2.0.1 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -7653,16 +7665,16 @@ packages: object.fromentries: 2.0.7 dev: false - /eslint-plugin-react-hooks@4.6.0(eslint@8.26.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.26.0 + eslint: 8.57.0 dev: false - /eslint-plugin-react@7.33.2(eslint@8.26.0): + /eslint-plugin-react@7.33.2(eslint@8.57.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: @@ -7673,7 +7685,7 @@ packages: array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 es-iterator-helpers: 1.0.16 - eslint: 8.26.0 + eslint: 8.57.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -7687,14 +7699,14 @@ packages: string.prototype.matchall: 4.0.10 dev: false - /eslint-plugin-testing-library@5.11.1(eslint@8.26.0)(typescript@4.9.5): + /eslint-plugin-testing-library@5.11.1(eslint@8.57.0)(typescript@4.9.5): resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.26.0)(typescript@4.9.5) - eslint: 8.26.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + eslint: 8.57.0 transitivePeerDependencies: - supports-color - typescript @@ -7713,6 +7725,14 @@ packages: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 /eslint-utils@3.0.0(eslint@8.26.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} @@ -7722,6 +7742,7 @@ packages: dependencies: eslint: 8.26.0 eslint-visitor-keys: 2.1.0 + dev: true /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} @@ -7731,7 +7752,11 @@ packages: resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /eslint-webpack-plugin@3.2.0(eslint@8.26.0)(webpack@5.90.1): + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /eslint-webpack-plugin@3.2.0(eslint@8.57.0)(webpack@5.90.1): resolution: {integrity: sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -7739,7 +7764,7 @@ packages: webpack: ^5.0.0 dependencies: '@types/eslint': 8.56.2 - eslint: 8.26.0 + eslint: 8.57.0 jest-worker: 28.1.3 micromatch: 4.0.5 normalize-path: 3.0.0 @@ -7793,6 +7818,53 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color + dev: true + + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@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) + 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 + 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.20.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color /esm@3.2.25: resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} @@ -7806,6 +7878,15 @@ packages: acorn: 8.8.2 acorn-jsx: 5.3.2(acorn@8.8.2) eslint-visitor-keys: 3.4.1 + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 /esprima@1.2.2: resolution: {integrity: sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==} @@ -7862,14 +7943,14 @@ packages: resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} dependencies: '@types/pbkdf2': 3.1.0 - '@types/secp256k1': 4.0.3 + '@types/secp256k1': 4.0.6 blakejs: 1.2.1 browserify-aes: 1.2.0 bs58check: 2.1.2 create-hash: 1.2.0 create-hmac: 1.1.7 hash.js: 1.1.7 - keccak: 3.0.3 + keccak: 3.0.4 pbkdf2: 3.1.2 randombytes: 2.1.0 safe-buffer: 5.2.1 @@ -7945,11 +8026,11 @@ packages: - bufferutil - utf-8-validate - /ethers@6.9.0: - resolution: {integrity: sha512-pmfNyQzc2mseLe91FnT2vmNaTt8dDzhxZ/xItAV7uGsF4dI4ek2ufMu3rAkgQETL/TIs0GS5A+U05g9QyWnv3Q==} + /ethers@6.11.1: + resolution: {integrity: sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==} engines: {node: '>=14.0.0'} dependencies: - '@adraffy/ens-normalize': 1.10.0 + '@adraffy/ens-normalize': 1.10.1 '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 '@types/node': 18.15.13 @@ -8206,16 +8287,10 @@ packages: - supports-color dev: true - /fastq@1.13.0: - resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} - dependencies: - reusify: 1.0.4 - /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 - dev: true /faye-websocket@0.11.4: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} @@ -8391,7 +8466,7 @@ packages: signal-exit: 4.1.0 dev: false - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.26.0)(typescript@4.9.5)(webpack@5.90.1): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.0)(typescript@4.9.5)(webpack@5.90.1): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -8411,7 +8486,7 @@ packages: chokidar: 3.5.3 cosmiconfig: 6.0.0 deepmerge: 4.3.1 - eslint: 8.26.0 + eslint: 8.57.0 fs-extra: 9.1.0 glob: 7.2.3 memfs: 3.5.3 @@ -8780,6 +8855,10 @@ packages: /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} /growl@1.10.5: resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} @@ -9604,7 +9683,7 @@ packages: '@babel/parser': 7.23.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false @@ -9683,7 +9762,7 @@ packages: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.16.8 + '@types/node': 18.19.31 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -9808,7 +9887,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.16.8 + '@types/node': 18.19.31 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0 @@ -9826,7 +9905,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.16.8 + '@types/node': 18.19.31 jest-mock: 27.5.1 jest-util: 27.5.1 dev: false @@ -9842,7 +9921,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.9 - '@types/node': 18.16.8 + '@types/node': 18.19.31 anymatch: 3.1.2 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -9864,7 +9943,7 @@ packages: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.16.8 + '@types/node': 18.19.31 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -9934,7 +10013,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.16.8 + '@types/node': 18.19.31 dev: false /jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): @@ -9995,7 +10074,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.16.8 + '@types/node': 18.19.31 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.11 @@ -10052,7 +10131,7 @@ packages: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 graceful-fs: 4.2.11 dev: false @@ -10091,7 +10170,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.16.8 + '@types/node': 18.19.31 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -10103,7 +10182,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 - '@types/node': 18.16.8 + '@types/node': 18.19.31 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -10144,7 +10223,7 @@ packages: dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.16.8 + '@types/node': 18.19.31 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 @@ -10157,7 +10236,7 @@ packages: dependencies: '@jest/test-result': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 18.16.8 + '@types/node': 18.19.31 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.10.2 @@ -10169,7 +10248,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 merge-stream: 2.0.0 supports-color: 7.2.0 dev: false @@ -10178,7 +10257,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false @@ -10187,7 +10266,7 @@ packages: resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@types/node': 18.16.8 + '@types/node': 18.19.31 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false @@ -10220,6 +10299,7 @@ packages: /js-sdsl@4.4.0: resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} + dev: true /js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} @@ -10440,6 +10520,16 @@ packages: node-gyp-build: 4.6.0 readable-stream: 3.6.2 + /keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.6.0 + readable-stream: 3.6.2 + dev: false + /keyv@3.1.0: resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} dependencies: @@ -10710,7 +10800,7 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: - semver: 6.3.0 + semver: 6.3.1 dev: false /make-dir@4.0.0: @@ -11135,17 +11225,6 @@ packages: tslib: 2.6.2 dev: false - /nock@13.3.8: - resolution: {integrity: sha512-96yVFal0c/W1lG7mmfRe7eO+hovrhJYd2obzzOZ90f6fjpeU/XNvd9cYHZKZAQJumDfhXgoTpkpJ9pvMj+hqHw==} - engines: {node: '>= 10.13'} - dependencies: - debug: 4.3.4(supports-color@8.1.1) - json-stringify-safe: 5.0.1 - propagate: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: false - /nock@13.5.4: resolution: {integrity: sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw==} engines: {node: '>= 10.13'} @@ -11452,6 +11531,18 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.3 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + 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 /p-cancelable@1.1.0: resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} @@ -12501,8 +12592,8 @@ packages: engines: {node: '>=4'} dev: true - /prettier@2.7.1: - resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true @@ -12590,7 +12681,7 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 18.16.8 + '@types/node': 18.19.31 long: 4.0.0 dev: true @@ -12693,7 +12784,7 @@ packages: whatwg-fetch: 3.6.20 dev: false - /react-dev-utils@12.0.1(eslint@8.26.0)(typescript@4.9.5)(webpack@5.90.1): + /react-dev-utils@12.0.1(eslint@8.57.0)(typescript@4.9.5)(webpack@5.90.1): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -12712,7 +12803,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.26.0)(typescript@4.9.5)(webpack@5.90.1) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.0)(typescript@4.9.5)(webpack@5.90.1) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -12797,7 +12888,7 @@ packages: tiny-warning: 1.0.3 dev: true - /react-scripts@5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.26.0)(react@18.2.0)(typescript@4.9.5): + /react-scripts@5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -12824,9 +12915,9 @@ packages: css-minimizer-webpack-plugin: 3.4.1(webpack@5.90.1) dotenv: 10.0.0 dotenv-expand: 5.1.0 - eslint: 8.26.0 - eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.26.0)(jest@27.5.1)(typescript@4.9.5) - eslint-webpack-plugin: 3.2.0(eslint@8.26.0)(webpack@5.90.1) + eslint: 8.57.0 + eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)(jest@27.5.1)(typescript@4.9.5) + eslint-webpack-plugin: 3.2.0(eslint@8.57.0)(webpack@5.90.1) file-loader: 6.2.0(webpack@5.90.1) fs-extra: 10.1.0 html-webpack-plugin: 5.6.0(webpack@5.90.1) @@ -12843,7 +12934,7 @@ packages: prompts: 2.4.2 react: 18.2.0 react-app-polyfill: 3.0.0 - react-dev-utils: 12.0.1(eslint@8.26.0)(typescript@4.9.5)(webpack@5.90.1) + react-dev-utils: 12.0.1(eslint@8.57.0)(typescript@4.9.5)(webpack@5.90.1) react-refresh: 0.11.0 resolve: 1.22.8 resolve-url-loader: 4.0.0 @@ -13046,6 +13137,7 @@ packages: /regexpp@3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} + dev: true /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} @@ -13444,6 +13536,7 @@ packages: /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true + dev: true /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} @@ -13456,6 +13549,7 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: true /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} @@ -13638,7 +13732,7 @@ packages: /smoldot@2.0.21: resolution: {integrity: sha512-XFpf3CQZ2BbFwVqKSyJHP7mbTDJxT3saRr/WfnfgWv+pbmA/J0e/LdfV/3A+jg7gNTEG06EAiDPtzN8ouXTLLw==} dependencies: - ws: 8.14.2 + ws: 8.16.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -13651,17 +13745,6 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - optional: true - - /smoldot@2.0.7: - resolution: {integrity: sha512-VAOBqEen6vises36/zgrmAT1GWk2qE3X8AGnO7lmQFdskbKx8EovnwS22rtPAG+Y1Rk23/S22kDJUdPANyPkBA==} - dependencies: - ws: 8.14.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false optional: true /snapdragon-node@2.1.1: @@ -14428,6 +14511,14 @@ packages: typescript: '>=3.7.0' dependencies: typescript: 5.1.6 + dev: false + + /ts-essentials@7.0.3(typescript@5.4.5): + resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} + peerDependencies: + typescript: '>=3.7.0' + dependencies: + typescript: 5.4.5 /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -14495,8 +14586,8 @@ packages: yn: 3.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.8)(typescript@5.3.3): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + /ts-node@10.9.2(@types/node@18.16.8)(typescript@5.4.5): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -14521,7 +14612,38 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.3 + typescript: 5.4.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.5): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 18.19.31 + acorn: 8.8.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -14577,6 +14699,16 @@ packages: typescript: 5.1.6 dev: true + /tsutils@3.21.0(typescript@5.4.5): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.4.5 + dev: true + /turbo-darwin-64@1.9.4: resolution: {integrity: sha512-kCmDmxyUWWI+BstTZQKNM87UbNx40C0ZHUTFqs9tmeH7d5+gA2QhqrSoBuwQYw7YYNLpbkqu1ObbppsUlIFPdQ==} cpu: [x64] @@ -14690,12 +14822,33 @@ packages: js-sha3: 0.8.0 lodash: 4.17.21 mkdirp: 1.0.4 - prettier: 2.7.1 + prettier: 2.8.8 ts-command-line-args: 2.3.1 ts-essentials: 7.0.3(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color + dev: false + + /typechain@8.3.2(typescript@5.4.5): + resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} + hasBin: true + peerDependencies: + typescript: '>=4.3.0' + dependencies: + '@types/prettier': 2.7.1 + debug: 4.3.4(supports-color@8.1.1) + fs-extra: 7.0.1 + glob: 7.1.7 + js-sha3: 0.8.0 + lodash: 4.17.21 + mkdirp: 1.0.4 + prettier: 2.8.8 + ts-command-line-args: 2.3.1 + ts-essentials: 7.0.3(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color /typed-array-buffer@1.0.1: resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==} @@ -14751,11 +14904,10 @@ packages: engines: {node: '>=14.17'} hasBin: true - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true - dev: true /typical@4.0.0: resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} @@ -14784,6 +14936,9 @@ packages: resolution: {integrity: sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==} dev: false + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} @@ -15086,7 +15241,7 @@ packages: spdy: 4.0.2 webpack: 5.90.1 webpack-dev-middleware: 5.3.3(webpack@5.90.1) - ws: 8.14.2 + ws: 8.16.0 transitivePeerDependencies: - bufferutil - debug @@ -15535,18 +15690,6 @@ packages: utf-8-validate: optional: true - /ws@8.14.2: - resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} - 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.16.0: resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'}