From ded371f11442faac997bf3af7f2213bf64c315b6 Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Wed, 30 Aug 2023 21:30:22 +0700 Subject: [PATCH 01/18] Add test for particle and try to fix it --- .../@tests/aqua/_aqua/finalize_particle.aqua | 6 + packages/@tests/aqua/package.json | 8 +- .../aqua/src/_aqua/finalize_particle.ts | 78 + packages/@tests/aqua/src/_aqua/smoke_test.ts | 412 ++--- packages/@tests/aqua/src/index.ts | 5 + packages/@tests/aqua/tsconfig.json | 3 +- .../src/connection/RelayConnection.ts | 2 +- .../core/js-client/src/jsPeer/FluencePeer.ts | 77 +- pnpm-lock.yaml | 1593 +++++++++-------- 9 files changed, 1187 insertions(+), 997 deletions(-) create mode 100644 packages/@tests/aqua/_aqua/finalize_particle.aqua create mode 100644 packages/@tests/aqua/src/_aqua/finalize_particle.ts diff --git a/packages/@tests/aqua/_aqua/finalize_particle.aqua b/packages/@tests/aqua/_aqua/finalize_particle.aqua new file mode 100644 index 000000000..1bde5eb8d --- /dev/null +++ b/packages/@tests/aqua/_aqua/finalize_particle.aqua @@ -0,0 +1,6 @@ +import "@fluencelabs/aqua-lib/builtin.aqua" +export test + +func test(): + on HOST_PEER_ID: + Op.noop() \ No newline at end of file diff --git a/packages/@tests/aqua/package.json b/packages/@tests/aqua/package.json index 18334f43e..d0ce73891 100644 --- a/packages/@tests/aqua/package.json +++ b/packages/@tests/aqua/package.json @@ -2,15 +2,15 @@ "name": "@test/aqua_for_test", "version": "0.1.0", "description": "Shared aqua code for tests", - "main": "./dist/index.js", - "typings": "./dist/index.d.ts", + "exports": { + ".": "./src/index.ts" + }, "engines": { "node": ">=10", "pnpm": ">=3" }, "type": "module", "scripts": { - "build": "tsc", "compile-aqua": "fluence aqua -i ./_aqua -o ./src/_aqua" }, "repository": "https://github.com/fluencelabs/fluence-js", @@ -22,7 +22,7 @@ "base64-js": "1.5.1" }, "devDependencies": { - "@fluencelabs/cli": "0.3.9", + "@fluencelabs/cli": "0.7.2", "@fluencelabs/registry": "0.8.2", "@fluencelabs/aqua-lib": "0.6.0", "@fluencelabs/trust-graph": "3.1.2" diff --git a/packages/@tests/aqua/src/_aqua/finalize_particle.ts b/packages/@tests/aqua/src/_aqua/finalize_particle.ts new file mode 100644 index 000000000..f4f7c6485 --- /dev/null +++ b/packages/@tests/aqua/src/_aqua/finalize_particle.ts @@ -0,0 +1,78 @@ +/* eslint-disable */ +// @ts-nocheck +/** + * + * This file is auto-generated. Do not edit manually: changes may be erased. + * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. + * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues + * Aqua version: 0.12.0 + * + */ +import type { IFluenceClient as IFluenceClient$$, CallParams as CallParams$$ } from '@fluencelabs/js-client'; +import { + v5_callFunction as callFunction$$, + v5_registerService as registerService$$, +} from '@fluencelabs/js-client'; + + + +// Services + +// Functions +export const test_script = ` + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (xor + (xor + (call -relay- ("op" "noop") []) + (fail %last_error%) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 0]) + ) + ) + ` + + +export function test( + config?: {ttl?: number} +): Promise; + +export function test( + peer: IFluenceClient$$, + config?: {ttl?: number} +): Promise; + +export function test(...args: any) { + + + return callFunction$$( + args, + { + "functionName" : "test", + "arrow" : { + "tag" : "arrow", + "domain" : { + "tag" : "labeledProduct", + "fields" : { + + } + }, + "codomain" : { + "tag" : "nil" + } + }, + "names" : { + "relay" : "-relay-", + "getDataSrv" : "getDataSrv", + "callbackSrv" : "callbackSrv", + "responseSrv" : "callbackSrv", + "responseFnName" : "response", + "errorHandlingSrv" : "errorHandlingSrv", + "errorFnName" : "error" + } +}, + test_script + ) +} + +/* eslint-enable */ \ No newline at end of file diff --git a/packages/@tests/aqua/src/_aqua/smoke_test.ts b/packages/@tests/aqua/src/_aqua/smoke_test.ts index 3a31bbcf1..f4949e557 100644 --- a/packages/@tests/aqua/src/_aqua/smoke_test.ts +++ b/packages/@tests/aqua/src/_aqua/smoke_test.ts @@ -5,14 +5,14 @@ * This file is auto-generated. Do not edit manually: changes may be erased. * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues - * Aqua version: 0.10.2 + * Aqua version: 0.12.0 * */ -import type { IFluenceClient as IFluenceClient$$, CallParams as CallParams$$ } from '@fluencelabs/js-client.api'; +import type { IFluenceClient as IFluenceClient$$, CallParams as CallParams$$ } from '@fluencelabs/js-client'; import { v5_callFunction as callFunction$$, v5_registerService as registerService$$, -} from '@fluencelabs/js-client.api'; +} from '@fluencelabs/js-client'; @@ -328,31 +328,16 @@ export function registerHelloWorld(...args: any) { } // Functions - -export type ResourceTestResult = [string | null, string[]] -export function resourceTest( - label: string, - config?: {ttl?: number} -): Promise; - -export function resourceTest( - peer: IFluenceClient$$, - label: string, - config?: {ttl?: number} -): Promise; - -export function resourceTest(...args: any) { - - let script = ` - (xor +export const resourceTest_script = ` + (seq (seq (seq (seq (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) (call %init_peer_id% ("getDataSrv" "label") [] label) ) - (new $resource_id - (new $successful + (xor + (new $resource_id (seq (seq (seq @@ -363,30 +348,30 @@ export function resourceTest(...args: any) { (call -relay- ("registry" "get_key_bytes") [label [] t [] ""] bytes) (xor (call %init_peer_id% ("sig" "sign") [bytes] result) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + (fail %last_error%) ) ) (xor - (match result.$.success! false - (ap result.$.error.[0]! $error) + (match result.$.success false + (ap result.$.error.[0] $error) ) - (seq + (new $successful (seq (seq (seq (seq (seq - (ap result.$.signature! result_flat) - (call -relay- ("registry" "get_key_id") [label %init_peer_id%] id) + (seq + (ap result.$.signature result_flat) + (call -relay- ("registry" "get_key_id") [label %init_peer_id%] id) + ) + (call -relay- ("op" "string_to_b58") [id] k) ) - (call -relay- ("op" "string_to_b58") [id] k) + (call -relay- ("kad" "neighborhood") [k [] []] nodes) ) - (call -relay- ("kad" "neighborhood") [k [] []] nodes) - ) - (par - (fold nodes n-0 - (par - (seq + (par + (fold nodes n-0 + (par (xor (xor (seq @@ -395,148 +380,158 @@ export function resourceTest(...args: any) { (call n-0 ("peer" "timestamp_sec") [] t-0) (call n-0 ("trust-graph" "get_weight") [%init_peer_id% t-0] weight) ) - (call n-0 ("registry" "register_key") [label [] t [] "" result_flat.$.[0]! weight t-0] result-0) + (call n-0 ("registry" "register_key") [label [] t [] "" result_flat.$.[0] weight t-0] result-0) ) (xor - (match result-0.$.success! true - (ap true $successful) + (seq + (match result-0.$.success true + (ap true $successful) + ) + (new $-ephemeral-stream- + (new #-ephemeral-canon- + (canon -relay- $-ephemeral-stream- #-ephemeral-canon-) + ) + ) + ) + (seq + (ap result-0.$.error $error) + (new $-ephemeral-stream- + (new #-ephemeral-canon- + (canon -relay- $-ephemeral-stream- #-ephemeral-canon-) + ) + ) ) - (ap result-0.$.error! $error) ) ) - (call n-0 ("op" "noop") []) - ) - (seq - (call -relay- ("op" "noop") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + (null) ) + (fail %last_error%) ) - (call -relay- ("op" "noop") []) + (next n-0) ) - (next n-0) + (never) ) - (never) + (null) ) - (null) ) - ) - (new $status - (new $result-1 - (seq + (new $status + (new $result-1 (seq (seq - (par - (seq + (seq + (par (seq (seq - (call -relay- ("math" "sub") [1 1] sub) - (new $successful_test - (seq + (seq + (call -relay- ("math" "sub") [1 1] sub) + (new $successful_test (seq (seq - (call -relay- ("math" "add") [sub 1] successful_incr) - (fold $successful successful_fold_var - (seq + (seq + (call -relay- ("math" "add") [sub 1] successful_incr) + (fold $successful successful_fold_var (seq - (ap successful_fold_var $successful_test) - (canon -relay- $successful_test #successful_iter_canon) - ) - (xor - (match #successful_iter_canon.length successful_incr - (null) + (seq + (ap successful_fold_var $successful_test) + (canon -relay- $successful_test #successful_iter_canon) + ) + (xor + (match #successful_iter_canon.length successful_incr + (null) + ) + (next successful_fold_var) ) - (next successful_fold_var) ) + (never) ) - (never) ) + (canon -relay- $successful_test #successful_result_canon) ) - (canon -relay- $successful_test #successful_result_canon) + (ap #successful_result_canon successful_gate) ) - (ap #successful_result_canon successful_gate) ) ) + (call -relay- ("math" "sub") [1 1] sub-0) ) - (call -relay- ("math" "sub") [1 1] sub-0) + (ap "ok" $status) ) - (ap "ok" $status) + (call -relay- ("peer" "timeout") [6000 "timeout"] $status) ) - (call -relay- ("peer" "timeout") [6000 "timeout"] $status) - ) - (new $status_test - (seq + (new $status_test (seq (seq - (call -relay- ("math" "add") [0 1] status_incr) - (fold $status status_fold_var - (seq + (seq + (call -relay- ("math" "add") [0 1] status_incr) + (fold $status status_fold_var (seq - (ap status_fold_var $status_test) - (canon -relay- $status_test #status_iter_canon) - ) - (xor - (match #status_iter_canon.length status_incr - (null) + (seq + (ap status_fold_var $status_test) + (canon -relay- $status_test #status_iter_canon) + ) + (xor + (match #status_iter_canon.length status_incr + (null) + ) + (next status_fold_var) ) - (next status_fold_var) ) + (never) ) - (never) ) + (canon -relay- $status_test #status_result_canon) ) - (canon -relay- $status_test #status_result_canon) + (ap #status_result_canon status_gate) ) - (ap #status_result_canon status_gate) ) ) - ) - (xor - (match status_gate.$.[0]! "ok" - (ap true $result-1) + (xor + (match status_gate.$.[0] "ok" + (ap true $result-1) + ) + (ap false $result-1) ) - (ap false $result-1) ) - ) - (new $result-1_test - (seq + (new $result-1_test (seq (seq - (call -relay- ("math" "add") [0 1] result-1_incr) - (fold $result-1 result-1_fold_var - (seq + (seq + (call -relay- ("math" "add") [0 1] result-1_incr) + (fold $result-1 result-1_fold_var (seq - (ap result-1_fold_var $result-1_test) - (canon -relay- $result-1_test #result-1_iter_canon) - ) - (xor - (match #result-1_iter_canon.length result-1_incr - (null) + (seq + (ap result-1_fold_var $result-1_test) + (canon -relay- $result-1_test #result-1_iter_canon) + ) + (xor + (match #result-1_iter_canon.length result-1_incr + (null) + ) + (next result-1_fold_var) ) - (next result-1_fold_var) ) + (never) ) - (never) ) + (canon -relay- $result-1_test #result-1_result_canon) ) - (canon -relay- $result-1_test #result-1_result_canon) + (ap #result-1_result_canon result-1_gate) ) - (ap #result-1_result_canon result-1_gate) ) ) ) ) ) - ) - (xor - (match result-1_gate.$.[0]! false - (ap "resource wasn't created: timeout exceeded" $error) + (xor + (match result-1_gate.$.[0] false + (ap "resource wasn't created: timeout exceeded" $error) + ) + (ap id $resource_id) ) - (ap id $resource_id) ) ) ) ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) + (fail %last_error%) ) ) (canon %init_peer_id% $resource_id #-resource_id-fix-0) @@ -544,19 +539,30 @@ export function resourceTest(...args: any) { (ap #-resource_id-fix-0 -resource_id-flat-0) ) ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 0]) ) ) - (xor - (seq - (canon %init_peer_id% $error #error_canon) - (call %init_peer_id% ("callbackSrv" "response") [-resource_id-flat-0 #error_canon]) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4]) - ) + (canon %init_peer_id% $error #error_canon) ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 5]) + (call %init_peer_id% ("callbackSrv" "response") [-resource_id-flat-0 #error_canon]) ) ` + +export type ResourceTestResult = [string | null, string[]] +export function resourceTest( + label: string, + config?: {ttl?: number} +): Promise; + +export function resourceTest( + peer: IFluenceClient$$, + label: string, + config?: {ttl?: number} +): Promise; + +export function resourceTest(...args: any) { + + return callFunction$$( args, { @@ -602,10 +608,22 @@ export function resourceTest(...args: any) { "errorFnName" : "error" } }, - script + resourceTest_script ) } +export const helloTest_script = ` + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (xor + (call %init_peer_id% ("hello-world" "hello") ["Fluence user"] hello) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 0]) + ) + ) + (call %init_peer_id% ("callbackSrv" "response") [hello]) + ) + ` export function helloTest( @@ -619,21 +637,7 @@ export function helloTest( export function helloTest(...args: any) { - let script = ` - (xor - (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("hello-world" "hello") ["Fluence user"] hello) - ) - (xor - (call %init_peer_id% ("callbackSrv" "response") [hello]) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) - ) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) - ) - ` + return callFunction$$( args, { @@ -666,58 +670,56 @@ export function helloTest(...args: any) { "errorFnName" : "error" } }, - script + helloTest_script ) } - - -export function demo_calculation( - service_id: string, - config?: {ttl?: number} -): Promise; - -export function demo_calculation( - peer: IFluenceClient$$, - service_id: string, - config?: {ttl?: number} -): Promise; - -export function demo_calculation(...args: any) { - - let script = ` - (xor +export const demo_calculation_script = ` + (seq (seq (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "service_id") [] service_id) + ) + (xor (seq (seq (seq (seq (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("getDataSrv" "service_id") [] service_id) - ) (call %init_peer_id% (service_id "test_logs") []) + (call %init_peer_id% (service_id "add") [10]) ) - (call %init_peer_id% (service_id "add") [10]) + (call %init_peer_id% (service_id "multiply") [5]) ) - (call %init_peer_id% (service_id "multiply") [5]) + (call %init_peer_id% (service_id "subtract") [8]) ) - (call %init_peer_id% (service_id "subtract") [8]) + (call %init_peer_id% (service_id "divide") [6]) ) - (call %init_peer_id% (service_id "divide") [6]) + (call %init_peer_id% (service_id "state") [] res) ) - (call %init_peer_id% (service_id "state") [] res) - ) - (xor - (call %init_peer_id% ("callbackSrv" "response") [res]) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 0]) ) ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + (call %init_peer_id% ("callbackSrv" "response") [res]) ) ` + + +export function demo_calculation( + service_id: string, + config?: {ttl?: number} +): Promise; + +export function demo_calculation( + peer: IFluenceClient$$, + service_id: string, + config?: {ttl?: number} +): Promise; + +export function demo_calculation(...args: any) { + + return callFunction$$( args, { @@ -753,61 +755,59 @@ export function demo_calculation(...args: any) { "errorFnName" : "error" } }, - script + demo_calculation_script ) } - - -export function marineTest( - wasm64: string, - config?: {ttl?: number} -): Promise; - -export function marineTest( - peer: IFluenceClient$$, - wasm64: string, - config?: {ttl?: number} -): Promise; - -export function marineTest(...args: any) { - - let script = ` - (xor +export const marineTest_script = ` + (seq (seq (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "wasm64") [] wasm64) + ) + (xor (seq (seq (seq (seq (seq (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("getDataSrv" "wasm64") [] wasm64) - ) (call %init_peer_id% ("single_module_srv" "create") [wasm64] serviceResult) + (call %init_peer_id% (serviceResult.$.service_id.[0] "test_logs") []) ) - (call %init_peer_id% (serviceResult.$.service_id.[0]! "test_logs") []) + (call %init_peer_id% (serviceResult.$.service_id.[0] "add") [10]) ) - (call %init_peer_id% (serviceResult.$.service_id.[0]! "add") [10]) + (call %init_peer_id% (serviceResult.$.service_id.[0] "multiply") [5]) ) - (call %init_peer_id% (serviceResult.$.service_id.[0]! "multiply") [5]) + (call %init_peer_id% (serviceResult.$.service_id.[0] "subtract") [8]) ) - (call %init_peer_id% (serviceResult.$.service_id.[0]! "subtract") [8]) + (call %init_peer_id% (serviceResult.$.service_id.[0] "divide") [6]) ) - (call %init_peer_id% (serviceResult.$.service_id.[0]! "divide") [6]) + (call %init_peer_id% (serviceResult.$.service_id.[0] "state") [] res) ) - (call %init_peer_id% (serviceResult.$.service_id.[0]! "state") [] res) - ) - (xor - (call %init_peer_id% ("callbackSrv" "response") [res]) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 0]) ) ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + (call %init_peer_id% ("callbackSrv" "response") [res]) ) ` + + +export function marineTest( + wasm64: string, + config?: {ttl?: number} +): Promise; + +export function marineTest( + peer: IFluenceClient$$, + wasm64: string, + config?: {ttl?: number} +): Promise; + +export function marineTest(...args: any) { + + return callFunction$$( args, { @@ -843,7 +843,7 @@ export function marineTest(...args: any) { "errorFnName" : "error" } }, - script + marineTest_script ) } diff --git a/packages/@tests/aqua/src/index.ts b/packages/@tests/aqua/src/index.ts index dbdc0482c..a46f3ecca 100644 --- a/packages/@tests/aqua/src/index.ts +++ b/packages/@tests/aqua/src/index.ts @@ -2,6 +2,7 @@ import { fromByteArray } from 'base64-js'; import { Fluence } from '@fluencelabs/js-client'; import type { ClientConfig } from '@fluencelabs/js-client'; import { registerHelloWorld, helloTest, marineTest, resourceTest } from './_aqua/smoke_test.js'; +import { test as particleTest } from './_aqua/finalize_particle.js'; import { wasm } from './wasmb64.js'; const relay = { @@ -67,6 +68,10 @@ export const runTest = async (): Promise => { console.log('running marine test...'); const marine = await marineTest(wasm); + + console.log('running particle test...'); + await particleTest(); + console.log('marine test finished, result: ', marine); const returnVal = { diff --git a/packages/@tests/aqua/tsconfig.json b/packages/@tests/aqua/tsconfig.json index 8c892f213..eccdb7861 100644 --- a/packages/@tests/aqua/tsconfig.json +++ b/packages/@tests/aqua/tsconfig.json @@ -1,7 +1,8 @@ { "extends": "../../../tsconfig.json", "compilerOptions": { - "outDir": "./dist" + "outDir": "./dist", + "module": "NodeNext" }, "exclude": ["node_modules", "dist"] } diff --git a/packages/core/js-client/src/connection/RelayConnection.ts b/packages/core/js-client/src/connection/RelayConnection.ts index edd619268..68bc42dcb 100644 --- a/packages/core/js-client/src/connection/RelayConnection.ts +++ b/packages/core/js-client/src/connection/RelayConnection.ts @@ -161,7 +161,7 @@ export class RelayConnection implements IStartable, IConnection { const stream = await this.lib2p2Peer.dialProtocol(this.relayAddress, PROTOCOL_NAME); const sink = stream.sink; - pipe( + return pipe( [fromString(serializeToString(particle))], // @ts-ignore encode(), diff --git a/packages/core/js-client/src/jsPeer/FluencePeer.ts b/packages/core/js-client/src/jsPeer/FluencePeer.ts index cdd31a8b6..15ccbb6ef 100644 --- a/packages/core/js-client/src/jsPeer/FluencePeer.ts +++ b/packages/core/js-client/src/jsPeer/FluencePeer.ts @@ -25,9 +25,20 @@ import { ParticleExecutionStage, ParticleQueueItem, } from '../particle/Particle.js'; -import { defaultCallParameters } from "@fluencelabs/marine-js/dist/types" +import { defaultCallParameters } from '@fluencelabs/marine-js/dist/types' import { jsonify, isString } from '../util/utils.js'; -import { concatMap, filter, pipe, Subject, tap, Unsubscribable } from 'rxjs'; +import { + concatAll, + concatMap, + filter, + from, + lastValueFrom, mergeAll, + Observable, + pipe, + Subject, + tap, + Unsubscribable +} from 'rxjs'; import { defaultSigGuard, Sig } from '../services/Sig.js'; import { registerSig } from '../services/_aqua/services.js'; import { registerSrv } from '../services/_aqua/single-module-srv.js'; @@ -122,6 +133,10 @@ export abstract class FluencePeer { */ async stop() { log_peer.trace('stopping Fluence peer'); + this._outgoingConnections.complete(); + await this._outgoingConnectionsFinished; + log_peer.trace('all outgoing connections finished'); + this._particleSourceSubscription?.unsubscribe(); this._stopParticleProcessing(); await this.marineHost.stop(); @@ -210,6 +225,7 @@ export abstract class FluencePeer { /** * Initiates a new particle execution starting from local peer * @param particle - particle to start execution of + * @param onStageChange - callback for reacting on particle state changes */ initiateParticle: (particle: IParticle, onStageChange: (stage: ParticleExecutionStage) => void): void => { if (!this.isInitialized) { @@ -246,7 +262,8 @@ export abstract class FluencePeer { // Queues for incoming and outgoing particles private _incomingParticles = new Subject(); - private _outgoingParticles = new Subject(); + private _outgoingConnections = new Subject>(); + private _outgoingConnectionsFinished = lastValueFrom(this._outgoingConnections.pipe(mergeAll())); private _timeouts: Array = []; private _particleSourceSubscription?: Unsubscribable; private _particleQueues = new Map>(); @@ -321,29 +338,6 @@ export abstract class FluencePeer { particlesQueue.next(item); }); - - this._outgoingParticles.subscribe((item) => { - // Do not send particle after the peer has been stopped - if (!this.isInitialized) { - return; - } - - log_particle.debug( - 'id %s. sending particle into network. Next peer ids: %s', - item.particle.id, - item.nextPeerIds.toString(), - ); - - this.connection - ?.sendParticle(item.nextPeerIds, item.particle) - .then(() => { - item.onStageChange({ stage: 'sent' }); - }) - .catch((e: any) => { - log_particle.error('id %s. send failed %j', item.particle.id, e); - item.onStageChange({ stage: 'sendingError', errorMessage: e.toString() }); - }); - }); } private _expireParticle(item: ParticleQueueItem) { @@ -359,7 +353,7 @@ export abstract class FluencePeer { item.onStageChange({ stage: 'expired' }); } - + private decodeAvmData(data: Uint8Array) { return new TextDecoder().decode(data.buffer); } @@ -465,11 +459,30 @@ export abstract class FluencePeer { // send particle further if requested if (item.result.nextPeerPks.length > 0) { const newParticle = cloneWithNewData(item.particle, Buffer.from(item.result.data)); - this._outgoingParticles.next({ - ...item, - particle: newParticle, - nextPeerIds: item.result.nextPeerPks, - }); + + // Do not send particle after the peer has been stopped + if (!this.isInitialized) { + return; + } + + log_particle.debug( + 'id %s. sending particle into network. Next peer ids: %s', + newParticle.id, + item.result.nextPeerPks.toString(), + ); + + const connectionPromise = this.connection + ?.sendParticle(item.result.nextPeerPks, newParticle) + .then(() => { + log_particle.trace('id %s. send successful', newParticle.id); + item.onStageChange({ stage: 'sent' }); + }) + .catch((e: any) => { + log_particle.error('id %s. send failed %j', newParticle.id, e); + item.onStageChange({ stage: 'sendingError', errorMessage: e.toString() }); + }); + + this._outgoingConnections.next(from(connectionPromise)); } // execute call requests if needed diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d99eb010e..e734a76d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,8 +46,8 @@ importers: specifier: 0.6.0 version: 0.6.0 '@fluencelabs/cli': - specifier: 0.3.9 - version: 0.3.9(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.8)(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.4.5)(chai@4.3.7)(hardhat-gas-reporter@1.0.9)(hardhat@2.15.0)(jest@27.5.1)(solidity-coverage@0.7.22)(ts-node@10.9.1)(typechain@8.2.0)(typescript@4.7.2) + specifier: 0.7.2 + version: 0.7.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.9)(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.4.5)(chai@4.3.8)(hardhat-gas-reporter@1.0.9)(hardhat@2.17.2)(solidity-coverage@0.7.22)(ts-node@10.9.1)(typechain@8.3.1)(typescript@4.7.2) '@fluencelabs/registry': specifier: 0.8.2 version: 0.8.2 @@ -61,7 +61,7 @@ importers: specifier: workspace:* version: link:../../../core/js-client '@test/aqua_for_test': - specifier: workspace:../../aqua + specifier: workspace:* version: link:../../aqua packages/@tests/smoke/web: @@ -110,7 +110,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.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.43.0)(react@18.2.0)(ts-node@10.9.1)(typescript@4.9.5) + version: 5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.48.0)(react@18.2.0)(ts-node@10.9.1)(typescript@4.9.5) typescript: specifier: 4.9.5 version: 4.9.5 @@ -329,6 +329,11 @@ importers: packages: + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: false + /@achingbrain/nat-port-mapper@1.0.9: resolution: {integrity: sha512-w1M7dh7IsO5fvX9VQpH0w8MMphzLUl52Kf+paXTScNmFH4Ua+R6XI+x5p7LI3vY36JkTllTqAxNo8g1y0CMCrA==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} @@ -343,7 +348,6 @@ packages: xml2js: 0.6.0 transitivePeerDependencies: - supports-color - dev: false /@achingbrain/node-fetch@2.6.7: resolution: {integrity: sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==} @@ -358,7 +362,6 @@ packages: freeport-promise: 2.0.0 merge-options: 3.0.4 xml2js: 0.5.0 - dev: false /@adobe/css-tools@4.2.0: resolution: {integrity: sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==} @@ -395,6 +398,14 @@ packages: '@babel/highlight': 7.22.10 chalk: 2.4.2 + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.13 + chalk: 2.4.2 + dev: false + /@babel/code-frame@7.22.5: resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} @@ -431,6 +442,29 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core@7.22.11: + resolution: {integrity: sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.10 + '@babel/helper-compilation-targets': 7.22.10 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) + '@babel/helpers': 7.22.11 + '@babel/parser': 7.22.13 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.11 + '@babel/types': 7.22.11 + convert-source-map: 1.9.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/core@7.22.5: resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} engines: {node: '>=6.9.0'} @@ -453,7 +487,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/eslint-parser@7.22.5(@babel/core@7.22.5)(eslint@8.43.0): + /@babel/eslint-parser@7.22.5(@babel/core@7.22.5)(eslint@8.48.0): resolution: {integrity: sha512-C69RWYNYtrgIRE5CmTd77ZiLDXqgBipahJc/jHP3sLcAGj6AJzxNIuKNpVnICqbyK7X3pFUfEvL++rvtbQpZkQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -462,7 +496,7 @@ packages: dependencies: '@babel/core': 7.22.5 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.43.0 + eslint: 8.48.0 eslint-visitor-keys: 2.1.0 semver: 6.3.0 dev: false @@ -684,6 +718,20 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.5 + /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.11): + resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.5 + dev: false + /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} @@ -793,6 +841,17 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers@7.22.11: + resolution: {integrity: sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.11 + '@babel/types': 7.22.11 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helpers@7.22.5: resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} engines: {node: '>=6.9.0'} @@ -811,6 +870,15 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/highlight@7.22.13: + resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: false + /@babel/highlight@7.22.5: resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} @@ -826,6 +894,14 @@ packages: dependencies: '@babel/types': 7.22.10 + /@babel/parser@7.22.13: + resolution: {integrity: sha512-3l6+4YOvc9wx7VlCSw4yQfcBo01ECA8TicQfbnCPuCEpRQrf+gTUyGdxNw+pyTUyywp6JRD1w0YQs9TpBXYlkw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.11 + dev: false + /@babel/parser@7.22.5: resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} engines: {node: '>=6.0.0'} @@ -1128,13 +1204,13 @@ packages: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.10): + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1217,13 +1293,13 @@ packages: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.10): + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2292,17 +2368,17 @@ packages: '@babel/core': 7.22.5 '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) - /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.10): + /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.11 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.10) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.11) '@babel/types': 7.22.5 dev: false @@ -2831,6 +2907,13 @@ packages: /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + /@babel/runtime@7.22.11: + resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + dev: false + /@babel/runtime@7.22.5: resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} engines: {node: '>=6.9.0'} @@ -2862,6 +2945,24 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse@7.22.11: + resolution: {integrity: sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.10 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.13 + '@babel/types': 7.22.11 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/traverse@7.22.5: resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} engines: {node: '>=6.9.0'} @@ -2887,6 +2988,15 @@ packages: '@babel/helper-validator-identifier': 7.22.5 to-fast-properties: 2.0.0 + /@babel/types@7.22.11: + resolution: {integrity: sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + to-fast-properties: 2.0.0 + dev: false + /@babel/types@7.22.5: resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} engines: {node: '>=6.9.0'} @@ -2930,7 +3040,6 @@ packages: uint8arrays: 4.0.6 transitivePeerDependencies: - supports-color - dev: false /@chainsafe/libp2p-noise@4.1.2: resolution: {integrity: sha512-UvZLWvIS7bAz6M8XfsnC/NhT1c/lg8NNsME1hTvo21kRwyxNFpB8gEhId03Cb5B23oIaHhMySAHBcpuMiSxQ2w==} @@ -3346,13 +3455,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.43.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.48.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.43.0 + eslint: 8.48.0 eslint-visitor-keys: 3.4.1 dev: false @@ -3361,14 +3470,19 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: false - /@eslint/eslintrc@2.0.3: - resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + /@eslint-community/regexpp@4.8.0: + resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: false + + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} 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.5.2 - globals: 13.20.0 + espree: 9.6.1 + globals: 13.21.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -3378,8 +3492,8 @@ packages: - supports-color dev: false - /@eslint/js@8.43.0: - resolution: {integrity: sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==} + /@eslint/js@8.48.0: + resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false @@ -3397,10 +3511,16 @@ packages: ethereumjs-util: 7.1.5 dev: true + /@ethereumjs/rlp@4.0.1: + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + dev: true + /@ethereumjs/tx@3.3.2: resolution: {integrity: sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==} dependencies: - '@ethereumjs/common': 2.5.0 + '@ethereumjs/common': 2.6.5 ethereumjs-util: 7.1.5 dev: true @@ -3411,6 +3531,15 @@ packages: ethereumjs-util: 7.1.5 dev: true + /@ethereumjs/util@8.1.0: + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.1.2 + micro-ftch: 0.3.1 + dev: true + /@ethersproject/abi@5.7.0: resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} dependencies: @@ -3726,8 +3855,12 @@ packages: '@ethersproject/strings': 5.7.0 dev: true - /@fluencelabs/aqua-api@0.10.6: - resolution: {integrity: sha512-6nnGDSY0vhxUg+Zr9p4b5yjQEHfqjso+4XWCjVbD7sRh43odx0ZFnSxOBvmTdbRXX2elJlBB1CIDEfNWPNoq2g==} + /@fluencelabs/air-beautify-wasm@0.3.2: + resolution: {integrity: sha512-etKIoqZgbCSVcWTdHSZB1n7vFUra1rrqH1sqSb2sJv8jevxWsEx0Igf99AUcqPWIHuSF/geT60BA3FdwCu6lVA==} + dev: true + + /@fluencelabs/aqua-api@0.12.0: + resolution: {integrity: sha512-8D1SfmBDm0mmg3tuYrlpU8L6+bRlCSVRkhlU4CXMJFSMiVMrSF2WV+KFTP4GcOB3N4pNOONEwHMQo4xNWwzGhg==} dev: true /@fluencelabs/aqua-api@0.9.3: @@ -3775,29 +3908,28 @@ packages: resolution: {integrity: sha512-tkpjdHyRmsTwAEZCJt15//jXEgC2Nw2qFiD1NenvK127SlgKeuzQU9IMReUYY3dowb2IGeC578/uGMu96jHYKw==} dev: true - /@fluencelabs/avm@0.35.3: - resolution: {integrity: sha512-Y5mPPCmAUUKc5CDO12IL8mGEreWa7maVdX0MWCAH4+GvfLPFN1FxOMSKRYEtvkyVEL88pc9pd8cm5IRCBkFthg==} - dev: true - /@fluencelabs/avm@0.43.1: resolution: {integrity: sha512-6tGOMT/2S3ANrqvPLjPUUHgnZCibdIJQH25lsfPN9wBhAcS+0DsYuh1rQWiiJ7xVpps/tuwzFX7gecMmr7hsnQ==} - /@fluencelabs/cli@0.3.9(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.8)(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.4.5)(chai@4.3.7)(hardhat-gas-reporter@1.0.9)(hardhat@2.15.0)(jest@27.5.1)(solidity-coverage@0.7.22)(ts-node@10.9.1)(typechain@8.2.0)(typescript@4.7.2): - resolution: {integrity: sha512-xJYi7+AHrWt6RgWnr7Efr8Jpv0dNLoWhiCMvgSbXoFpIZzQAyNDgk5hnCdwIQ/eiJcNg0GHY0gyC+Q/d5YKc1Q==} - engines: {node: '=16'} + /@fluencelabs/cli@0.7.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.9)(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.4.5)(chai@4.3.8)(hardhat-gas-reporter@1.0.9)(hardhat@2.17.2)(solidity-coverage@0.7.22)(ts-node@10.9.1)(typechain@8.3.1)(typescript@4.7.2): + resolution: {integrity: sha512-cXhlXBxNh1i66Twb3Nhpm1mXHpa+8zzoQ5wKJ6zJjOtrw6GWB6WrfIAb+aaLGWJMBnWHcZEkXs5vx9vwvVplcQ==} + engines: {node: '=18'} hasBin: true dependencies: - '@fluencelabs/aqua-api': 0.10.6 - '@fluencelabs/deal-aurora': 0.1.12(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.8)(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.4.5)(chai@4.3.7)(ethers@5.7.2)(hardhat-gas-reporter@1.0.9)(hardhat@2.15.0)(solidity-coverage@0.7.22)(ts-node@10.9.1)(typechain@8.2.0)(typescript@4.7.2) - '@fluencelabs/fluence': 0.28.0(jest@27.5.1)(node-fetch@2.6.11)(typescript@4.7.2) - '@fluencelabs/fluence-network-environment': 1.0.14 + '@fluencelabs/air-beautify-wasm': 0.3.2 + '@fluencelabs/aqua-api': 0.12.0 + '@fluencelabs/deal-aurora': 0.1.8(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.9)(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.4.5)(chai@4.3.8)(ethers@5.7.2)(hardhat-gas-reporter@1.0.9)(hardhat@2.17.2)(solidity-coverage@0.7.22)(ts-node@10.9.1)(typechain@8.3.1)(typescript@4.7.2) + '@fluencelabs/fluence-network-environment': 1.1.2 + '@fluencelabs/js-client': 0.0.10 '@iarna/toml': 2.2.5 - '@mswjs/interceptors': 0.19.5 - '@oclif/color': 1.0.6 - '@oclif/core': 2.8.7(@types/node@20.4.5)(typescript@4.7.2) - '@oclif/plugin-autocomplete': 2.3.0(@types/node@20.4.5)(typescript@4.7.2) - '@oclif/plugin-help': 5.2.10(@types/node@20.4.5)(typescript@4.7.2) - '@oclif/plugin-not-found': 2.3.26(@types/node@20.4.5)(typescript@4.7.2) + '@mswjs/interceptors': 0.23.0 + '@multiformats/multiaddr': 12.1.7 + '@oclif/color': 1.0.11 + '@oclif/core': 2.11.10(@types/node@20.4.5)(typescript@4.7.2) + '@oclif/plugin-autocomplete': 2.3.6(@types/node@20.4.5)(typescript@4.7.2) + '@oclif/plugin-help': 5.2.18(@types/node@20.4.5)(typescript@4.7.2) + '@oclif/plugin-not-found': 2.3.38(@types/node@20.4.5)(typescript@4.7.2) + '@oclif/plugin-update': 3.1.32(@types/node@20.4.5)(typescript@4.7.2) '@walletconnect/universal-provider': 2.8.1(lokijs@1.5.12) ajv: 8.12.0 camelcase: 7.0.1 @@ -3806,21 +3938,20 @@ packages: decompress: 4.2.1 dotenv: 16.3.1 ethers: 5.7.2 - filenamify: 5.1.1 - inquirer: 9.2.7 + filenamify: 6.0.0 + get-random-values: 2.1.0 + inquirer: 9.2.10 ipfs-http-client: 60.0.1 - it-all: 1.0.6 lodash-es: 4.17.21 lokijs: 1.5.12 - multiaddr: 10.0.1(node-fetch@2.6.11) - node-fetch: 2.6.11 + node_modules-path: 2.0.7 + npm: 9.8.1 platform: 1.3.6 replace-homedir: 2.0.0 - web3: 1.10.0 + semver: 7.5.4 yaml: 2.3.1 yaml-diff-patch: 2.0.0 transitivePeerDependencies: - - '@babel/core' - '@ethersproject/abi' - '@ethersproject/providers' - '@nomicfoundation/hardhat-chai-matchers' @@ -3833,18 +3964,14 @@ packages: - '@typechain/ethers-v5' - '@typechain/hardhat' - '@types/chai' - - '@types/jest' - '@types/mocha' - '@types/node' - - babel-jest - bufferutil - chai - debug - encoding - - esbuild - hardhat - hardhat-gas-reporter - - jest - solidity-coverage - supports-color - ts-node @@ -3853,31 +3980,6 @@ packages: - utf-8-validate dev: true - /@fluencelabs/connection@0.2.0(node-fetch@2.6.11): - resolution: {integrity: sha512-0jTRI1h/j/fR2VaLIlcIm6VoP3j2jL2lI6/OaYaOnwGXmI6CbZWHNeq9eaKWycT9B1vpN9wHu0Vi7vH3pFplhg==} - engines: {node: '>=10', pnpm: '>=3'} - dependencies: - '@chainsafe/libp2p-noise': 4.1.2 - '@fluencelabs/interfaces': 0.1.0 - browser-or-node: 2.0.0 - buffer: 6.0.3 - it-length-prefixed: 5.0.3 - it-pipe: 1.1.0 - libp2p: 0.36.2(node-fetch@2.6.11) - libp2p-interfaces: 4.0.6(node-fetch@2.6.11) - libp2p-mplex: 0.10.7 - libp2p-websockets: 0.16.2(node-fetch@2.6.11) - loglevel: 1.8.0 - multiaddr: 10.0.1(node-fetch@2.6.11) - peer-id: 0.16.0 - transitivePeerDependencies: - - bufferutil - - encoding - - node-fetch - - supports-color - - utf-8-validate - dev: true - /@fluencelabs/connection@0.2.0(node-fetch@3.3.2): resolution: {integrity: sha512-0jTRI1h/j/fR2VaLIlcIm6VoP3j2jL2lI6/OaYaOnwGXmI6CbZWHNeq9eaKWycT9B1vpN9wHu0Vi7vH3pFplhg==} engines: {node: '>=10', pnpm: '>=3'} @@ -3903,10 +4005,10 @@ packages: - utf-8-validate dev: true - /@fluencelabs/deal-aurora@0.1.12(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.8)(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.4.5)(chai@4.3.7)(ethers@5.7.2)(hardhat-gas-reporter@1.0.9)(hardhat@2.15.0)(solidity-coverage@0.7.22)(ts-node@10.9.1)(typechain@8.2.0)(typescript@4.7.2): - resolution: {integrity: sha512-CcmcDIC8DJI2aVzN+ZMB4vYRuML0IHF9VfaL/GMjhkpe4iADPJq4YS527I1nPH335Ik3hTlncz71F/2jD35A+A==} + /@fluencelabs/deal-aurora@0.1.8(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.9)(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.4.5)(chai@4.3.8)(ethers@5.7.2)(hardhat-gas-reporter@1.0.9)(hardhat@2.17.2)(solidity-coverage@0.7.22)(ts-node@10.9.1)(typechain@8.3.1)(typescript@4.7.2): + resolution: {integrity: sha512-h2L3F67AsFxJy+mBAAUy8gMUGf85sgT3kuLhqEstdbQ20ASjxrSsXmyVZeVQLUx4nR1ygbGll9Y+FmRFgpNwMQ==} dependencies: - '@nomicfoundation/hardhat-toolbox': 1.0.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.8)(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.4.5)(chai@4.3.7)(ethers@5.7.2)(hardhat-gas-reporter@1.0.9)(hardhat@2.15.0)(solidity-coverage@0.7.22)(ts-node@10.9.1)(typechain@8.2.0)(typescript@4.7.2) + '@nomicfoundation/hardhat-toolbox': 1.0.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.9)(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.4.5)(chai@4.3.8)(ethers@5.7.2)(hardhat-gas-reporter@1.0.9)(hardhat@2.17.2)(solidity-coverage@0.7.22)(ts-node@10.9.1)(typechain@8.3.1)(typescript@4.7.2) '@openzeppelin/contracts': 4.9.2 '@openzeppelin/contracts-upgradeable': 4.9.2 dotenv: 16.3.1 @@ -3936,8 +4038,8 @@ packages: resolution: {integrity: sha512-2pci3T0sUHE08jwEs1r/vHKVT4XUh/A3j/QJ0eIhddsxyIjEksjdn05X7DF6STD14CF8GgBVOJEPgav8qaUMpA==} dev: true - /@fluencelabs/fluence-network-environment@1.0.14: - resolution: {integrity: sha512-lMiH+7obmJW2Q+PMUR/vNAuX6TcVqlKmsWAHvnBogH7s8IeMT+UGN8qrweILWmE57G7MfauB302dIFQowR9tug==} + /@fluencelabs/fluence-network-environment@1.1.2: + resolution: {integrity: sha512-1Bp2gBy3oMEILMynFpOIFK/q2Pj792xpnb3AJs5QcTQAaHz9V2nrEI8OOPwBAFTmjmLBirXBqQQX63O+ePH7yg==} dev: true /@fluencelabs/fluence@0.27.5(jest@27.5.1)(node-fetch@3.3.2)(typescript@4.7.2): @@ -3978,49 +4080,50 @@ packages: - utf-8-validate dev: true - /@fluencelabs/fluence@0.28.0(jest@27.5.1)(node-fetch@2.6.11)(typescript@4.7.2): - resolution: {integrity: sha512-SXb2vjTj8m/nw4jEILV0tu9VIFprGo8mNb2nOB5btxdsOI8GzQZkpGzTLrSd/+UagIo2GdxAu0GhBP8dxZXaqg==} + /@fluencelabs/interfaces@0.1.0: + resolution: {integrity: sha512-1nBgrTXa0vwloMMw3iJgbkqK23O6y1hM9YAEOwkUcmvvHQG/OPSYtzAenW7djGhNlA4Lk8QIV4bKNn54WIzjdA==} + engines: {node: '>=10', pnpm: '>=3'} + dev: true + + /@fluencelabs/interfaces@0.8.1: + resolution: {integrity: sha512-RVdaBX8HbMLbgLPMwYvPaQ+XPvelNOGgOpsQGoy4Chw2njuj142LwxeQsa4LBWqE24Z7ebUqcjhlCrfrf9Efqg==} + engines: {node: '>=10', pnpm: '>=3'} + dev: true + + /@fluencelabs/js-client@0.0.10: + resolution: {integrity: sha512-/CxACoD/S70MNNPig+EdO0MlLdvaNEHMX7BL1sud1MoJL/auYUQZTxen5EVj/QRHs8dr17CT8LWLh4ylYvnofA==} engines: {node: '>=10', pnpm: '>=3'} - deprecated: fluencelabs/fluence is deprecated in favor of a thinner CDN-distributed .js bundle, please see the following link for installation instructions https://github.com/fluencelabs/js-client#installation - hasBin: true dependencies: - '@fluencelabs/avm': 0.35.3 - '@fluencelabs/connection': 0.2.0(node-fetch@2.6.11) - '@fluencelabs/interfaces': 0.1.0 - '@fluencelabs/keypair': 0.2.0 - '@fluencelabs/marine-js': 0.3.37(jest@27.5.1)(typescript@4.7.2) + '@chainsafe/libp2p-noise': 13.0.0 + '@fluencelabs/interfaces': 0.8.1 + '@libp2p/crypto': 2.0.3 + '@libp2p/interface': 0.1.2 + '@libp2p/mplex': 9.0.4 + '@libp2p/peer-id': 3.0.2 + '@libp2p/peer-id-factory': 3.0.3 + '@libp2p/websockets': 7.0.4 + '@multiformats/multiaddr': 11.3.0 async: 3.2.4 - base64-js: 1.5.1 - browser-or-node: 2.0.0 bs58: 5.0.0 buffer: 6.0.3 - cids: 1.1.9 - loglevel: 1.8.1 - multiformats: 9.9.0 - peer-id: 0.16.0 - platform: 1.3.6 + debug: 4.3.4(supports-color@8.1.1) + it-length-prefixed: 8.0.4 + it-map: 2.0.0 + it-pipe: 2.0.5 + js-base64: 3.7.5 + libp2p: 0.46.6 + multiformats: 11.0.1 rxjs: 7.5.5 + threads: 1.7.0 ts-pattern: 3.3.3 + uint8arrays: 4.0.3 uuid: 8.3.2 transitivePeerDependencies: - - '@babel/core' - - '@types/jest' - - babel-jest - bufferutil - - encoding - - esbuild - - jest - - node-fetch - supports-color - - typescript - utf-8-validate dev: true - /@fluencelabs/interfaces@0.1.0: - resolution: {integrity: sha512-1nBgrTXa0vwloMMw3iJgbkqK23O6y1hM9YAEOwkUcmvvHQG/OPSYtzAenW7djGhNlA4Lk8QIV4bKNn54WIzjdA==} - engines: {node: '>=10', pnpm: '>=3'} - dev: true - /@fluencelabs/keypair@0.2.0: resolution: {integrity: sha512-sNFvoeefSa0Xa/xzzLwWBXPMB4y/vHEFh3BaA6FCGNPwbtN0pje9rd8AOgSP9fjlTPpxy3TuBI+eAIzBk5b+SQ==} engines: {node: '>=10', pnpm: '>=3'} @@ -4460,13 +4563,12 @@ packages: uint8arrays: 4.0.6 transitivePeerDependencies: - supports-color - dev: false /@libp2p/interface-connection@4.0.0: resolution: {integrity: sha512-6xx/NmEc84HX7QmsjSC3hHredQYjHv4Dkf4G27adAPf+qN+vnPxmQ7gaTnk243a0++DOFTbZ2gKX/15G2B6SRg==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interfaces': 3.3.1 '@multiformats/multiaddr': 12.1.7 it-stream-types: 1.0.5 @@ -4484,20 +4586,12 @@ packages: uint8arraylist: 2.4.3 transitivePeerDependencies: - supports-color - dev: false /@libp2p/interface-keychain@2.0.5: resolution: {integrity: sha512-mb7QNgn9fIvC7CaJCi06GJ+a6DN6RVT9TmEi0NmedZGATeCArPeWWG7r7IfxNVXb9cVOOE1RzV1swK0ZxEJF9Q==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - '@libp2p/interface-peer-id': 2.0.1 - multiformats: 11.0.1 - dev: true - - /@libp2p/interface-peer-id@2.0.1: - resolution: {integrity: sha512-k01hKHTAZWMOiBC+yyFsmBguEMvhPkXnQtqLtFqga2fVZu8Zve7zFAtQYLhQjeJ4/apeFtO6ddTS8mCE6hl4OA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dependencies: + '@libp2p/interface-peer-id': 2.0.2 multiformats: 11.0.1 dev: true @@ -4511,7 +4605,7 @@ packages: resolution: {integrity: sha512-HQlo8NwQjMyamCHJrnILEZz+YwEOXCB2sIIw3slIrhVUYeYlTaia1R6d9umaAeLHa255Zmdm4qGH8rJLRqhCcg==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interface-peer-id': 2.0.2 '@multiformats/multiaddr': 12.1.7 transitivePeerDependencies: - supports-color @@ -4522,9 +4616,9 @@ packages: engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: '@libp2p/interface-connection': 4.0.0 - '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interfaces': 3.3.1 - it-pushable: 3.1.3 + it-pushable: 3.2.1 uint8arraylist: 2.4.3 transitivePeerDependencies: - supports-color @@ -4561,7 +4655,6 @@ packages: uint8arrays: 4.0.6 transitivePeerDependencies: - supports-color - dev: false /@libp2p/logger@2.1.1: resolution: {integrity: sha512-2UbzDPctg3cPupF6jrv6abQnAUTrbLybNOj0rmmrdGm1cN2HJ1o/hBu0sXuq4KF9P1h/eVRn1HIRbVIEKnEJrA==} @@ -4585,7 +4678,6 @@ packages: multiformats: 12.0.1 transitivePeerDependencies: - supports-color - dev: false /@libp2p/mplex@9.0.4: resolution: {integrity: sha512-vUoj4XJtQJocN4ZdokfoMXVlATeBmnHDUtk1CtluimwAPhHkIhO9IhzIWEYmb8C5j7Yim+824tPj+TJ6vfBYlQ==} @@ -4603,7 +4695,6 @@ packages: uint8arrays: 4.0.6 transitivePeerDependencies: - supports-color - dev: false /@libp2p/multistream-select@4.0.2: resolution: {integrity: sha512-Ss3kPD+1Z8RFLUT+oN9I2ynEtp/Yj2+rOngU1XjIxustg1nt5lq0kk9hvWJyBexzmuML0xCknNjUXovpRbFPgQ==} @@ -4623,14 +4714,12 @@ packages: uint8arrays: 4.0.6 transitivePeerDependencies: - supports-color - dev: false /@libp2p/peer-collections@4.0.3: resolution: {integrity: sha512-ahfZFdRhApN4dulnzAvkzQsPVJVX7UID3QMKC/cduK5FYWqm7zbtW6bpwDilhZY3wvjvaQYs4R0KKSysvTPiQQ==} dependencies: '@libp2p/interface': 0.1.2 '@libp2p/peer-id': 3.0.2 - dev: false /@libp2p/peer-id-factory@3.0.3: resolution: {integrity: sha512-RsE1GbK0w4LxiGr9sU2fm23IHOGzCtCfmUD8LC9V8LwLgt+z62oNKbWzwbko+CeromngURDimdv3JpH9jw5OUA==} @@ -4644,13 +4733,12 @@ packages: uint8arrays: 4.0.6 transitivePeerDependencies: - supports-color - dev: false /@libp2p/peer-id@2.0.1: resolution: {integrity: sha512-uGIR4rS+j+IzzIu0kih4MonZEfRmjGNfXaSPMIFOeMxZItZT6TIpxoVNYxHl4YtneSFKzlLnf9yx9EhRcyfy8Q==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interfaces': 3.3.1 multiformats: 11.0.1 uint8arrays: 4.0.3 @@ -4662,7 +4750,6 @@ packages: '@libp2p/interface': 0.1.2 multiformats: 12.0.1 uint8arrays: 4.0.6 - dev: false /@libp2p/peer-record@6.0.3: resolution: {integrity: sha512-S5C4Df2uyX1vNsnduZ6RVjB7T+dUEhqnaSNhiv82VCoqMoniHQBf2ftvXlv/UqqssW9or1x4UwgFU+sL7kObkw==} @@ -4678,7 +4765,6 @@ packages: uint8arrays: 4.0.6 transitivePeerDependencies: - supports-color - dev: false /@libp2p/peer-store@9.0.3: resolution: {integrity: sha512-7vSAUvKAzzWRwcMxOUvyGNw8V59t9l9l1Ugxa+VHCKKhvAEn9eXjf8We8BLGT3KnUG6aJ5HpODPK4RbW6BNGfA==} @@ -4699,7 +4785,6 @@ packages: uint8arrays: 4.0.6 transitivePeerDependencies: - supports-color - dev: false /@libp2p/utils@4.0.2: resolution: {integrity: sha512-M6ARf4NhzFqpw15BOG0FQVXanjWdnta/s91OzhtdZhsp1A/FmUDlxwdIeshs2x/6TfNhyrMtR8Wid/BYsPpBow==} @@ -4714,7 +4799,6 @@ packages: uint8arraylist: 2.4.3 transitivePeerDependencies: - supports-color - dev: false /@libp2p/websockets@7.0.4: resolution: {integrity: sha512-DtwsZhYH//3bIMtzBpzi7ZWPeHtfEgbDOCaoVORcb4152ZvC68C7u+c3k7S2TyXY1ceqLTAt9LI9hDMM0WNfcQ==} @@ -4735,7 +4819,11 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false + + /@ljharb/through@2.3.9: + resolution: {integrity: sha512-yN599ZBuMPPK4tdoToLlvgJB4CLK8fGl7ntfy0Wn7U6ttNvHYurd81bfUiK/6sMkiIwm65R6ck4L6+Y3DfVbNQ==} + engines: {node: '>= 0.4'} + dev: true /@metamask/eth-sig-util@4.0.1: resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} @@ -4791,20 +4879,16 @@ packages: resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} dev: true - /@mswjs/interceptors@0.19.5: - resolution: {integrity: sha512-kFlcrlgd8on6fe+ZRNcHcBjQgkNvjna5uJC0ufWLVcbQTTo1MhQHkDNgmId1kPmGVZVQ1gAUY3AC+QFbRwAiGw==} - engines: {node: '>=14'} + /@mswjs/interceptors@0.23.0: + resolution: {integrity: sha512-JytvDa7pBbxXvCTXBYQs+0eE6MqxpqH/H4peRNY6zVAlvJ6d/hAWLHAef1D9lWN4zuIigN0VkakGOAUrX7FWLg==} + engines: {node: '>=18'} dependencies: - '@open-draft/until': 1.0.3 - '@remix-run/web-fetch': 4.3.4 - '@types/debug': 4.1.7 - debug: 4.3.4(supports-color@8.1.1) + '@open-draft/deferred-promise': 2.1.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 headers-polyfill: 3.1.2 outvariant: 1.4.0 - strict-event-emitter: 0.4.6 - web-encoding: 1.1.5 - transitivePeerDependencies: - - supports-color + strict-event-emitter: 0.5.0 dev: true /@multiformats/base-x@4.0.1: @@ -4817,7 +4901,6 @@ packages: '@multiformats/multiaddr': 12.1.7 transitivePeerDependencies: - supports-color - dev: false /@multiformats/multiaddr-matcher@1.0.1: resolution: {integrity: sha512-ZzqwTH8tP5Py/k8eNKprO0i6tuwgrbp7KWz+ttxvzkPl43BlU9Yd5joq+M5grCt158rpAc2uhPobzfXgPxW5XQ==} @@ -4827,7 +4910,6 @@ packages: multiformats: 12.0.1 transitivePeerDependencies: - supports-color - dev: false /@multiformats/multiaddr-to-uri@9.0.7: resolution: {integrity: sha512-i3ldtPMN6XJt+MCi34hOl0wGuGEHfWWMw6lmNag5BpckPwPTf9XGOOFMmh7ed/uO3Vjah/g173iOe61HTQVoBA==} @@ -4872,13 +4954,11 @@ packages: /@noble/ciphers@0.1.4: resolution: {integrity: sha512-d3ZR8vGSpy3v/nllS+bD/OMN5UZqusWiQqkyj7AwzTnhXFH72pF5oB4Ach6DQ50g5kXxC28LdaYBEpsyv9KOUQ==} - dev: false /@noble/curves@1.1.0: resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} dependencies: '@noble/hashes': 1.3.1 - dev: false /@noble/ed25519@1.7.3: resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==} @@ -4891,7 +4971,6 @@ packages: /@noble/hashes@1.3.1: resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} engines: {node: '>= 16'} - dev: false /@noble/secp256k1@1.7.1: resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} @@ -4915,15 +4994,15 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - /@nomicfoundation/ethereumjs-block@5.0.1: - resolution: {integrity: sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw==} + /@nomicfoundation/ethereumjs-block@5.0.2: + resolution: {integrity: sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==} engines: {node: '>=14'} dependencies: - '@nomicfoundation/ethereumjs-common': 4.0.1 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 - '@nomicfoundation/ethereumjs-trie': 6.0.1 - '@nomicfoundation/ethereumjs-tx': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 ethereum-cryptography: 0.1.3 ethers: 5.7.2 transitivePeerDependencies: @@ -4931,17 +5010,17 @@ packages: - utf-8-validate dev: true - /@nomicfoundation/ethereumjs-blockchain@7.0.1: - resolution: {integrity: sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A==} + /@nomicfoundation/ethereumjs-blockchain@7.0.2: + resolution: {integrity: sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==} engines: {node: '>=14'} dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.1 - '@nomicfoundation/ethereumjs-common': 4.0.1 - '@nomicfoundation/ethereumjs-ethash': 3.0.1 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 - '@nomicfoundation/ethereumjs-trie': 6.0.1 - '@nomicfoundation/ethereumjs-tx': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-ethash': 3.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 abstract-level: 1.0.3 debug: 4.3.4(supports-color@8.1.1) ethereum-cryptography: 0.1.3 @@ -4954,36 +5033,36 @@ packages: - utf-8-validate dev: true - /@nomicfoundation/ethereumjs-common@4.0.1: - resolution: {integrity: sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g==} + /@nomicfoundation/ethereumjs-common@4.0.2: + resolution: {integrity: sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==} dependencies: - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-util': 9.0.2 crc-32: 1.2.2 dev: true - /@nomicfoundation/ethereumjs-ethash@3.0.1: - resolution: {integrity: sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w==} + /@nomicfoundation/ethereumjs-ethash@3.0.2: + resolution: {integrity: sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==} engines: {node: '>=14'} dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.1 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 abstract-level: 1.0.3 - bigint-crypto-utils: 3.2.2 + bigint-crypto-utils: 3.3.0 ethereum-cryptography: 0.1.3 transitivePeerDependencies: - bufferutil - utf-8-validate dev: true - /@nomicfoundation/ethereumjs-evm@2.0.1: - resolution: {integrity: sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ==} + /@nomicfoundation/ethereumjs-evm@2.0.2: + resolution: {integrity: sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==} engines: {node: '>=14'} dependencies: '@ethersproject/providers': 5.7.2 - '@nomicfoundation/ethereumjs-common': 4.0.1 - '@nomicfoundation/ethereumjs-tx': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 debug: 4.3.4(supports-color@8.1.1) ethereum-cryptography: 0.1.3 mcl-wasm: 0.7.9 @@ -4994,75 +5073,75 @@ packages: - utf-8-validate dev: true - /@nomicfoundation/ethereumjs-rlp@5.0.1: - resolution: {integrity: sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ==} + /@nomicfoundation/ethereumjs-rlp@5.0.2: + resolution: {integrity: sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==} engines: {node: '>=14'} hasBin: true dev: true - /@nomicfoundation/ethereumjs-statemanager@2.0.1: - resolution: {integrity: sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ==} + /@nomicfoundation/ethereumjs-statemanager@2.0.2: + resolution: {integrity: sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==} dependencies: - '@nomicfoundation/ethereumjs-common': 4.0.1 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 debug: 4.3.4(supports-color@8.1.1) ethereum-cryptography: 0.1.3 ethers: 5.7.2 - js-sdsl: 4.4.1 + js-sdsl: 4.4.2 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate dev: true - /@nomicfoundation/ethereumjs-trie@6.0.1: - resolution: {integrity: sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA==} + /@nomicfoundation/ethereumjs-trie@6.0.2: + resolution: {integrity: sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==} engines: {node: '>=14'} dependencies: - '@nomicfoundation/ethereumjs-rlp': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 '@types/readable-stream': 2.3.15 ethereum-cryptography: 0.1.3 readable-stream: 3.6.2 dev: true - /@nomicfoundation/ethereumjs-tx@5.0.1: - resolution: {integrity: sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w==} + /@nomicfoundation/ethereumjs-tx@5.0.2: + resolution: {integrity: sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==} engines: {node: '>=14'} dependencies: '@chainsafe/ssz': 0.9.4 '@ethersproject/providers': 5.7.2 - '@nomicfoundation/ethereumjs-common': 4.0.1 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 ethereum-cryptography: 0.1.3 transitivePeerDependencies: - bufferutil - utf-8-validate dev: true - /@nomicfoundation/ethereumjs-util@9.0.1: - resolution: {integrity: sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA==} + /@nomicfoundation/ethereumjs-util@9.0.2: + resolution: {integrity: sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==} engines: {node: '>=14'} dependencies: '@chainsafe/ssz': 0.10.2 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 ethereum-cryptography: 0.1.3 dev: true - /@nomicfoundation/ethereumjs-vm@7.0.1: - resolution: {integrity: sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ==} + /@nomicfoundation/ethereumjs-vm@7.0.2: + resolution: {integrity: sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==} engines: {node: '>=14'} dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.1 - '@nomicfoundation/ethereumjs-blockchain': 7.0.1 - '@nomicfoundation/ethereumjs-common': 4.0.1 - '@nomicfoundation/ethereumjs-evm': 2.0.1 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 - '@nomicfoundation/ethereumjs-statemanager': 2.0.1 - '@nomicfoundation/ethereumjs-trie': 6.0.1 - '@nomicfoundation/ethereumjs-tx': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-blockchain': 7.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-evm': 2.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-statemanager': 2.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 debug: 4.3.4(supports-color@8.1.1) ethereum-cryptography: 0.1.3 mcl-wasm: 0.7.9 @@ -5073,7 +5152,7 @@ packages: - utf-8-validate dev: true - /@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.3)(chai@4.3.7)(ethers@5.7.2)(hardhat@2.15.0): + /@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.3)(chai@4.3.8)(ethers@5.7.2)(hardhat@2.17.2): resolution: {integrity: sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==} peerDependencies: '@nomiclabs/hardhat-ethers': ^2.0.0 @@ -5082,26 +5161,26 @@ packages: hardhat: ^2.9.4 dependencies: '@ethersproject/abi': 5.7.0 - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.15.0) + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.17.2) '@types/chai-as-promised': 7.1.5 - chai: 4.3.7 - chai-as-promised: 7.1.1(chai@4.3.7) + chai: 4.3.8 + chai-as-promised: 7.1.1(chai@4.3.8) deep-eql: 4.1.3 ethers: 5.7.2 - hardhat: 2.15.0(ts-node@10.9.1)(typescript@4.7.2) + hardhat: 2.17.2(ts-node@10.9.1)(typescript@4.7.2) ordinal: 1.0.3 dev: true - /@nomicfoundation/hardhat-network-helpers@1.0.8(hardhat@2.15.0): - resolution: {integrity: sha512-MNqQbzUJZnCMIYvlniC3U+kcavz/PhhQSsY90tbEtUyMj/IQqsLwIRZa4ctjABh3Bz0KCh9OXUZ7Yk/d9hr45Q==} + /@nomicfoundation/hardhat-network-helpers@1.0.9(hardhat@2.17.2): + resolution: {integrity: sha512-OXWCv0cHpwLUO2u7bFxBna6dQtCC2Gg/aN/KtJLO7gmuuA28vgmVKYFRCDUqrbjujzgfwQ2aKyZ9Y3vSmDqS7Q==} peerDependencies: hardhat: ^2.9.5 dependencies: ethereumjs-util: 7.1.5 - hardhat: 2.15.0(ts-node@10.9.1)(typescript@4.7.2) + hardhat: 2.17.2(ts-node@10.9.1)(typescript@4.7.2) dev: true - /@nomicfoundation/hardhat-toolbox@1.0.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.8)(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.4.5)(chai@4.3.7)(ethers@5.7.2)(hardhat-gas-reporter@1.0.9)(hardhat@2.15.0)(solidity-coverage@0.7.22)(ts-node@10.9.1)(typechain@8.2.0)(typescript@4.7.2): + /@nomicfoundation/hardhat-toolbox@1.0.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.9)(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.4.5)(chai@4.3.8)(ethers@5.7.2)(hardhat-gas-reporter@1.0.9)(hardhat@2.17.2)(solidity-coverage@0.7.22)(ts-node@10.9.1)(typechain@8.3.1)(typescript@4.7.2): resolution: {integrity: sha512-8CEgWSKUK2aMit+76Sez8n7UB0Ze1lwT+LcWxj4EFP30lQWOwOws048t6MTPfThH0BlSWjC6hJRr0LncIkc1Sw==} peerDependencies: '@ethersproject/abi': ^5.4.7 @@ -5126,22 +5205,22 @@ packages: dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/providers': 5.7.2 - '@nomicfoundation/hardhat-chai-matchers': 1.0.6(@nomiclabs/hardhat-ethers@2.2.3)(chai@4.3.7)(ethers@5.7.2)(hardhat@2.15.0) - '@nomicfoundation/hardhat-network-helpers': 1.0.8(hardhat@2.15.0) - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.15.0) - '@nomiclabs/hardhat-etherscan': 3.1.7(hardhat@2.15.0) - '@typechain/ethers-v5': 10.2.1(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@8.2.0)(typescript@4.7.2) - '@typechain/hardhat': 6.1.6(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@typechain/ethers-v5@10.2.1)(ethers@5.7.2)(hardhat@2.15.0)(typechain@8.2.0) + '@nomicfoundation/hardhat-chai-matchers': 1.0.6(@nomiclabs/hardhat-ethers@2.2.3)(chai@4.3.8)(ethers@5.7.2)(hardhat@2.17.2) + '@nomicfoundation/hardhat-network-helpers': 1.0.9(hardhat@2.17.2) + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.17.2) + '@nomiclabs/hardhat-etherscan': 3.1.7(hardhat@2.17.2) + '@typechain/ethers-v5': 10.2.1(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@8.3.1)(typescript@4.7.2) + '@typechain/hardhat': 6.1.6(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@typechain/ethers-v5@10.2.1)(ethers@5.7.2)(hardhat@2.17.2)(typechain@8.3.1) '@types/chai': 4.3.5 '@types/mocha': 9.1.1 '@types/node': 20.4.5 - chai: 4.3.7 + chai: 4.3.8 ethers: 5.7.2 - hardhat: 2.15.0(ts-node@10.9.1)(typescript@4.7.2) - hardhat-gas-reporter: 1.0.9(hardhat@2.15.0) + hardhat: 2.17.2(ts-node@10.9.1)(typescript@4.7.2) + hardhat-gas-reporter: 1.0.9(hardhat@2.17.2) solidity-coverage: 0.7.22 ts-node: 10.9.1(@types/node@20.4.5)(typescript@4.7.2) - typechain: 8.2.0(typescript@4.7.2) + typechain: 8.3.1(typescript@4.7.2) typescript: 4.7.2 dev: true @@ -5251,17 +5330,17 @@ packages: '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.1 dev: true - /@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2)(hardhat@2.15.0): + /@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2)(hardhat@2.17.2): resolution: {integrity: sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==} peerDependencies: ethers: ^5.0.0 hardhat: ^2.0.0 dependencies: ethers: 5.7.2 - hardhat: 2.15.0(ts-node@10.9.1)(typescript@4.7.2) + hardhat: 2.17.2(ts-node@10.9.1)(typescript@4.7.2) dev: true - /@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.15.0): + /@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.17.2): resolution: {integrity: sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ==} peerDependencies: hardhat: ^2.0.4 @@ -5272,17 +5351,17 @@ packages: chalk: 2.4.2 debug: 4.3.4(supports-color@8.1.1) fs-extra: 7.0.1 - hardhat: 2.15.0(ts-node@10.9.1)(typescript@4.7.2) + hardhat: 2.17.2(ts-node@10.9.1)(typescript@4.7.2) lodash: 4.17.21 semver: 6.3.1 table: 6.8.1 - undici: 5.22.1 + undici: 5.23.0 transitivePeerDependencies: - supports-color dev: true - /@oclif/color@1.0.6: - resolution: {integrity: sha512-U6hABUkwoUoEZ1K5mJ2E7AeJ7udjYP3ZYWq18LLoMyjV+Us9hh3UwAghOY75F9PAzF8q5kvhoGu70LnPASbZ8g==} + /@oclif/color@1.0.11: + resolution: {integrity: sha512-2hOJFJoaJdeEH/0D9Ek5B7Q3bV6jFVRIc7AUimqV8HiA6HGynvCcV0jb1kDK7O2h+WT3j6MO6S4IdjipwqOP4Q==} engines: {node: '>=12.0.0'} dependencies: ansi-styles: 4.3.0 @@ -5292,8 +5371,8 @@ packages: tslib: 2.5.3 dev: true - /@oclif/core@2.8.7(@types/node@20.4.5)(typescript@4.7.2): - resolution: {integrity: sha512-WTZUFgANYGyHQOmGc2YsczEdqdlG2/ZEfqksHnuYbz3egozpka/R9LrFwNfWPZETi9ydzcjDWwJKUGQmJG3ixA==} + /@oclif/core@2.11.10(@types/node@20.4.5)(typescript@4.7.2): + resolution: {integrity: sha512-/7Umij3OU++6o+z4U+waJ5nP6IvK9KKEVzz+xsla68YoECLQwz43boUKqYizlNMtTfiwNkiYb5QE+OU/q5qEtA==} engines: {node: '>=14.0.0'} dependencies: '@types/cli-progress': 3.11.0 @@ -5315,7 +5394,8 @@ packages: natural-orderby: 2.0.3 object-treeify: 1.1.33 password-prompt: 1.1.2 - semver: 7.5.2 + semver: 7.5.4 + slice-ansi: 4.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 supports-color: 8.1.1 @@ -5332,11 +5412,11 @@ packages: - typescript dev: true - /@oclif/plugin-autocomplete@2.3.0(@types/node@20.4.5)(typescript@4.7.2): - resolution: {integrity: sha512-32gdneCAQbtjAvpX7lYFYrxsMPAfOh2hyvP4QEMspTiZkygT8m/NwayBVA+Ua5EM3/rk7jxTKYFQ7Gm/ZgSFuA==} + /@oclif/plugin-autocomplete@2.3.6(@types/node@20.4.5)(typescript@4.7.2): + resolution: {integrity: sha512-h969Vc9pzwJ87Z79PXjt67uUZm99zj8pD4zSX3pjc2xOf4ZNslLHNtvb3AjuU01mTM6FYJTsJcwjhPvXzxsqEg==} engines: {node: '>=12.0.0'} dependencies: - '@oclif/core': 2.8.7(@types/node@20.4.5)(typescript@4.7.2) + '@oclif/core': 2.11.10(@types/node@20.4.5)(typescript@4.7.2) chalk: 4.1.2 debug: 4.3.4(supports-color@8.1.1) fs-extra: 9.1.0 @@ -5348,11 +5428,11 @@ packages: - typescript dev: true - /@oclif/plugin-help@5.2.10(@types/node@20.4.5)(typescript@4.7.2): - resolution: {integrity: sha512-l3hnloPkXOLGGrepLLdj8NsBpVhhEpg4jclIeIBaZzIo6+c+/uqcL2LjvOogmSEf5g4zooRtxivwUpcFiBSaBg==} + /@oclif/plugin-help@5.2.18(@types/node@20.4.5)(typescript@4.7.2): + resolution: {integrity: sha512-0JjupXUuDzlI0Ojj7/YL42btfUNuvSgZxdi8ZfeYt/uhC1/zvsSkO29KjffPxKEnbhr6jrkjOgy/Vly5JquYLg==} engines: {node: '>=12.0.0'} dependencies: - '@oclif/core': 2.8.7(@types/node@20.4.5)(typescript@4.7.2) + '@oclif/core': 2.11.10(@types/node@20.4.5)(typescript@4.7.2) transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -5360,12 +5440,12 @@ packages: - typescript dev: true - /@oclif/plugin-not-found@2.3.26(@types/node@20.4.5)(typescript@4.7.2): - resolution: {integrity: sha512-a8WfN8km1A9Q0lXWo1LZgFEjVFYIbOOp/QG++zyHt2Hnsp2b5Zr0p8EQLBK7v6na6C0Mrr+GlMI8zE40hYWMbw==} + /@oclif/plugin-not-found@2.3.38(@types/node@20.4.5)(typescript@4.7.2): + resolution: {integrity: sha512-NaEaSU64IiDpPQK2RylZ3rMmu20xE1X1pUlXn82xdOMS2Izkj6OCuDuy2OkLjT1Bwoe9SswrS+aJz3E8shyUUg==} engines: {node: '>=12.0.0'} dependencies: - '@oclif/color': 1.0.6 - '@oclif/core': 2.8.7(@types/node@20.4.5)(typescript@4.7.2) + '@oclif/color': 1.0.11 + '@oclif/core': 2.11.10(@types/node@20.4.5)(typescript@4.7.2) fast-levenshtein: 3.0.0 transitivePeerDependencies: - '@swc/core' @@ -5374,8 +5454,43 @@ packages: - typescript dev: true - /@open-draft/until@1.0.3: - resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} + /@oclif/plugin-update@3.1.32(@types/node@20.4.5)(typescript@4.7.2): + resolution: {integrity: sha512-x8ND74rXXP74OOQ8y9UAWK6cTx9XgBuHnpKMTS1JGCJ3Y887uT9ccsQC03ezCyPN0+IQqexNk2lCs+FCpLKk9w==} + engines: {node: '>=12.0.0'} + dependencies: + '@oclif/color': 1.0.11 + '@oclif/core': 2.11.10(@types/node@20.4.5)(typescript@4.7.2) + cross-spawn: 7.0.3 + debug: 4.3.4(supports-color@8.1.1) + filesize: 6.4.0 + fs-extra: 9.1.0 + http-call: 5.3.0 + inquirer: 8.2.6 + lodash.throttle: 4.1.1 + log-chopper: 1.0.2 + semver: 7.5.4 + tar-fs: 2.1.1 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - supports-color + - typescript + dev: true + + /@open-draft/deferred-promise@2.1.0: + resolution: {integrity: sha512-Rzd5JrXZX8zErHzgcGyngh4fmEbSHqTETdGj9rXtejlqMIgXFlyKBA7Jn1Xp0Ls0M0Y22+xHcWiEzbmdWl0BOA==} + dev: true + + /@open-draft/logger@0.3.0: + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} + dependencies: + is-node-process: 1.2.0 + outvariant: 1.4.0 + dev: true + + /@open-draft/until@2.1.0: + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} dev: true /@openzeppelin/contracts-upgradeable@4.9.2: @@ -5463,38 +5578,6 @@ packages: /@protobufjs/utf8@1.1.0: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - /@remix-run/web-blob@3.0.4: - resolution: {integrity: sha512-AfegzZvSSDc+LwnXV+SwROTrDtoLiPxeFW+jxgvtDAnkuCX1rrzmVJ6CzqZ1Ai0bVfmJadkG5GxtAfYclpPmgw==} - dependencies: - '@remix-run/web-stream': 1.0.3 - web-encoding: 1.1.5 - dev: true - - /@remix-run/web-fetch@4.3.4: - resolution: {integrity: sha512-AUM1XBa4hcgeNt2CD86OlB5aDLlqdMl0uJ+89R8dPGx07I5BwMXnbopCaPAkvSBIoHeT/IoLWIuZrLi7RvXS+Q==} - engines: {node: ^10.17 || >=12.3} - dependencies: - '@remix-run/web-blob': 3.0.4 - '@remix-run/web-form-data': 3.0.4 - '@remix-run/web-stream': 1.0.3 - '@web3-storage/multipart-parser': 1.0.0 - abort-controller: 3.0.0 - data-uri-to-buffer: 3.0.1 - mrmime: 1.0.1 - dev: true - - /@remix-run/web-form-data@3.0.4: - resolution: {integrity: sha512-UMF1jg9Vu9CLOf8iHBdY74Mm3PUvMW8G/XZRJE56SxKaOFWGSWlfxfG+/a3boAgHFLTkP7K4H1PxlRugy1iQtw==} - dependencies: - web-encoding: 1.1.5 - dev: true - - /@remix-run/web-stream@1.0.3: - resolution: {integrity: sha512-wlezlJaA5NF6SsNMiwQnnAW6tnPzQ5I8qk0Y0pSohm0eHKa2FQ1QhEKLVVcDDu02TmkfHgnux0igNfeYhDOXiA==} - dependencies: - web-streams-polyfill: 3.2.1 - dev: true - /@rollup/plugin-alias@3.1.9(rollup@2.79.1): resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==} engines: {node: '>=8.0.0'} @@ -5673,8 +5756,8 @@ packages: string-argv: 0.3.2 dev: true - /@scure/base@1.1.1: - resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} + /@scure/base@1.1.2: + resolution: {integrity: sha512-sSCrnIdaUZQHhBxZThMuk7Wm1TWzMD3uJNdGgx3JS23xSqevu0tAOsg8k66nL3R2NwQe65AI9GgqpPOgZys/eA==} dev: true /@scure/bip32@1.1.5: @@ -5682,14 +5765,29 @@ packages: dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 - '@scure/base': 1.1.1 + '@scure/base': 1.1.2 + dev: true + + /@scure/bip32@1.3.1: + resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/base': 1.1.2 dev: true /@scure/bip39@1.1.1: resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} dependencies: '@noble/hashes': 1.2.0 - '@scure/base': 1.1.1 + '@scure/base': 1.1.2 + dev: true + + /@scure/bip39@1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + dependencies: + '@noble/hashes': 1.3.1 + '@scure/base': 1.1.2 dev: true /@sentry/core@5.30.0: @@ -6069,8 +6167,8 @@ packages: resolution: {integrity: sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==} engines: {node: '>=14'} dependencies: - '@babel/code-frame': 7.22.10 - '@babel/runtime': 7.22.5 + '@babel/code-frame': 7.22.13 + '@babel/runtime': 7.22.11 '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 @@ -6126,8 +6224,8 @@ packages: resolution: {integrity: sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA==} dev: true - /@truffle/interface-adapter@0.5.34: - resolution: {integrity: sha512-gPxabfMi2TueE4VxnNuyeudOfvGJQ1ofVC02PFw14cnRQhzH327JikjjQbZ1bT6S7kWl9H6P3hQPFeYFMHdm1g==} + /@truffle/interface-adapter@0.5.36: + resolution: {integrity: sha512-e6ECu9YDJuQjjxphdtJatHGgjlGsX/a3rQwqG2kBrK4cynGJdlejoo2iv/7Dj97wgIMIr1qH3L2WDrfTNF+K1g==} dependencies: bn.js: 5.2.1 ethers: 4.0.49 @@ -6143,7 +6241,7 @@ packages: resolution: {integrity: sha512-ZwPsofw4EsCq/2h0t73SPnnFezu4YQWBmK4FxFaOUX0F+o8NsZuHKyfJzuZwyZbiktYmefM3yD9rM0Dj4BhNbw==} dependencies: '@truffle/error': 0.1.1 - '@truffle/interface-adapter': 0.5.34 + '@truffle/interface-adapter': 0.5.36 debug: 4.3.4(supports-color@8.1.1) web3: 1.7.4 transitivePeerDependencies: @@ -6169,7 +6267,7 @@ packages: /@tsconfig/node16@1.0.4: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - /@typechain/ethers-v5@10.2.1(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@8.2.0)(typescript@4.7.2): + /@typechain/ethers-v5@10.2.1(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@8.3.1)(typescript@4.7.2): resolution: {integrity: sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A==} peerDependencies: '@ethersproject/abi': ^5.0.0 @@ -6183,11 +6281,11 @@ packages: ethers: 5.7.2 lodash: 4.17.21 ts-essentials: 7.0.3(typescript@4.7.2) - typechain: 8.2.0(typescript@4.7.2) + typechain: 8.3.1(typescript@4.7.2) typescript: 4.7.2 dev: true - /@typechain/hardhat@6.1.6(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@typechain/ethers-v5@10.2.1)(ethers@5.7.2)(hardhat@2.15.0)(typechain@8.2.0): + /@typechain/hardhat@6.1.6(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@typechain/ethers-v5@10.2.1)(ethers@5.7.2)(hardhat@2.17.2)(typechain@8.3.1): resolution: {integrity: sha512-BiVnegSs+ZHVymyidtK472syodx1sXYlYJJixZfRstHVGYTi8V1O7QG4nsjyb0PC/LORcq7sfBUcHto1y6UgJA==} peerDependencies: '@ethersproject/abi': ^5.4.7 @@ -6199,11 +6297,11 @@ packages: dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/providers': 5.7.2 - '@typechain/ethers-v5': 10.2.1(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@8.2.0)(typescript@4.7.2) + '@typechain/ethers-v5': 10.2.1(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@8.3.1)(typescript@4.7.2) ethers: 5.7.2 fs-extra: 9.1.0 - hardhat: 2.15.0(ts-node@10.9.1)(typescript@4.7.2) - typechain: 8.2.0(typescript@4.7.2) + hardhat: 2.17.2(ts-node@10.9.1)(typescript@4.7.2) + typechain: 8.3.1(typescript@4.7.2) dev: true /@types/argparse@1.0.38: @@ -6489,7 +6587,6 @@ packages: /@types/node@20.5.1: resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} - dev: false /@types/node@8.10.66: resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} @@ -6559,7 +6656,6 @@ packages: /@types/retry@0.12.1: resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==} - dev: false /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} @@ -6628,7 +6724,6 @@ packages: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: '@types/node': 20.5.1 - dev: false /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} @@ -6652,7 +6747,7 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin@5.60.0(@typescript-eslint/parser@5.60.0)(eslint@8.43.0)(typescript@4.9.5): + /@typescript-eslint/eslint-plugin@5.60.0(@typescript-eslint/parser@5.60.0)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-78B+anHLF1TI8Jn/cD0Q00TBYdMgjdOn980JfAVa9yw5sop8nyTfVOQAv6LWywkOGLclDBtv5z3oxN4w7jxyNg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -6664,12 +6759,12 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.60.0(eslint@8.43.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.60.0(eslint@8.48.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.60.0 - '@typescript-eslint/type-utils': 5.60.0(eslint@8.43.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.60.0(eslint@8.43.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.60.0(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.60.0(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.43.0 + eslint: 8.48.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 @@ -6680,20 +6775,20 @@ packages: - supports-color dev: false - /@typescript-eslint/experimental-utils@5.60.0(eslint@8.43.0)(typescript@4.9.5): + /@typescript-eslint/experimental-utils@5.60.0(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-ovid3u7CNBrr0Ct35LUPkNYH4e+z4Kc6dPfSG99oMmH9SfoEoefq09uSnJI4mUb/UM7a/peVM03G+MzLxrD16g==} 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.60.0(eslint@8.43.0)(typescript@4.9.5) - eslint: 8.43.0 + '@typescript-eslint/utils': 5.60.0(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 transitivePeerDependencies: - supports-color - typescript dev: false - /@typescript-eslint/parser@5.60.0(eslint@8.43.0)(typescript@4.9.5): + /@typescript-eslint/parser@5.60.0(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-jBONcBsDJ9UoTWrARkRRCgDz6wUggmH5RpQVlt7BimSwaTkTjwypGzKORXbR4/2Hqjk9hgwlon2rVQAjWNpkyQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -6707,7 +6802,7 @@ packages: '@typescript-eslint/types': 5.60.0 '@typescript-eslint/typescript-estree': 5.60.0(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.43.0 + eslint: 8.48.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -6721,7 +6816,7 @@ packages: '@typescript-eslint/visitor-keys': 5.60.0 dev: false - /@typescript-eslint/type-utils@5.60.0(eslint@8.43.0)(typescript@4.9.5): + /@typescript-eslint/type-utils@5.60.0(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-X7NsRQddORMYRFH7FWo6sA9Y/zbJ8s1x1RIAtnlj6YprbToTiQnM6vxcMu7iYhdunmoC0rUWlca13D5DVHkK2g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -6732,9 +6827,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.60.0(typescript@4.9.5) - '@typescript-eslint/utils': 5.60.0(eslint@8.43.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.60.0(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.43.0 + eslint: 8.48.0 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: @@ -6767,19 +6862,19 @@ packages: - supports-color dev: false - /@typescript-eslint/utils@5.60.0(eslint@8.43.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.60.0(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-ba51uMqDtfLQ5+xHtwlO84vkdjrqNzOnqrnwbMHMRY8Tqeme8C2Q8Fc7LajfGR+e3/4LoYiWXUM6BpIIbHJ4hQ==} 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.43.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.60.0 '@typescript-eslint/types': 5.60.0 '@typescript-eslint/typescript-estree': 5.60.0(typescript@4.9.5) - eslint: 8.43.0 + eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -7154,10 +7249,6 @@ packages: pako: 1.0.11 tar-stream: 2.2.0 - /@web3-storage/multipart-parser@1.0.0: - resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} - dev: true - /@webassemblyjs/ast@1.11.6: resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} dependencies: @@ -7272,12 +7363,6 @@ packages: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: false - /@zxing/text-encoding@0.9.0: - resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} - requiresBuild: true - dev: true - optional: true - /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} @@ -7569,7 +7654,6 @@ packages: /any-signal@4.1.1: resolution: {integrity: sha512-iADenERppdC+A2YKbOXXB2WUeABLaM6qnpZ70kZbPZ1cZMMJ7eF+3CaYm+/PhBizgkzlvssC7QuHS30oOiQYWA==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -8112,7 +8196,6 @@ packages: dependencies: lodash: 4.17.21 platform: 1.3.6 - dev: false /bfj@7.0.2: resolution: {integrity: sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==} @@ -8128,8 +8211,8 @@ packages: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: false - /bigint-crypto-utils@3.2.2: - resolution: {integrity: sha512-U1RbE3aX9ayCUVcIPHuPDPKcK3SFOXf93J1UK/iHlJuQB7bhagPIX06/CLpLEsDThJ7KA4Dhrnzynl+d2weTiw==} + /bigint-crypto-utils@3.3.0: + resolution: {integrity: sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==} engines: {node: '>=14.0.0'} dev: true @@ -8137,6 +8220,10 @@ packages: resolution: {integrity: sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==} dev: true + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + dev: true + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} @@ -8485,7 +8572,7 @@ packages: engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.6.0 + node-gyp-build: 4.6.1 dev: true /builtin-modules@3.3.0: @@ -8502,12 +8589,16 @@ packages: dependencies: streamsearch: 1.1.0 + /byline@5.0.0: + resolution: {integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==} + engines: {node: '>=0.10.0'} + dev: true + /byte-access@1.0.1: resolution: {integrity: sha512-GKYa+lvxnzhgHWj9X+LCsQ4s2/C5uvib573eAOiQKywXMkzFFErY2+yQdzmdE5iWVpmqecsRx3bOtOY4/1eINw==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: uint8arraylist: 2.4.3 - dev: false /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} @@ -8553,7 +8644,7 @@ packages: clone-response: 1.0.3 get-stream: 5.2.0 http-cache-semantics: 4.1.1 - keyv: 4.5.2 + keyv: 4.5.3 lowercase-keys: 2.0.0 normalize-url: 6.1.0 responselike: 2.0.1 @@ -8647,12 +8738,12 @@ packages: hasBin: true dev: true - /chai-as-promised@7.1.1(chai@4.3.7): + /chai-as-promised@7.1.1(chai@4.3.8): resolution: {integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==} peerDependencies: chai: '>= 2.1.2 < 5' dependencies: - chai: 4.3.7 + chai: 4.3.8 check-error: 1.0.2 dev: true @@ -8669,6 +8760,19 @@ packages: type-detect: 4.0.8 dev: true + /chai@4.3.8: + resolution: {integrity: sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.2 + deep-eql: 4.1.3 + get-func-name: 2.0.0 + loupe: 2.3.6 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + /chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} engines: {node: '>=0.10.0'} @@ -8703,8 +8807,8 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk@5.2.0: - resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true @@ -8834,7 +8938,7 @@ packages: catering: 2.1.1 module-error: 1.0.2 napi-macros: 2.2.2 - node-gyp-build: 4.6.0 + node-gyp-build: 4.6.1 dev: true /clean-css@5.3.2: @@ -8893,8 +8997,13 @@ packages: string-width: 5.1.2 dev: true - /cli-width@4.0.0: - resolution: {integrity: sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==} + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + + /cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} dev: true @@ -9271,7 +9380,15 @@ packages: /cross-fetch@3.1.6: resolution: {integrity: sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==} dependencies: - node-fetch: 2.6.13 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: true + + /cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + dependencies: + node-fetch: 2.7.0 transitivePeerDependencies: - encoding dev: true @@ -9567,11 +9684,6 @@ packages: assert-plus: 1.0.0 dev: true - /data-uri-to-buffer@3.0.1: - resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} - engines: {node: '>= 6'} - dev: true - /data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} @@ -9623,7 +9735,6 @@ packages: uint8arrays: 4.0.3 transitivePeerDependencies: - supports-color - dev: false /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -9847,7 +9958,6 @@ packages: /delay@6.0.0: resolution: {integrity: sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==} engines: {node: '>=16'} - dev: false /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} @@ -9964,17 +10074,6 @@ packages: resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} dev: false - /dns-over-http-resolver@1.2.3(node-fetch@2.6.11): - resolution: {integrity: sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==} - dependencies: - debug: 4.3.4(supports-color@8.1.1) - native-fetch: 3.0.0(node-fetch@2.6.11) - receptacle: 1.3.2 - transitivePeerDependencies: - - node-fetch - - supports-color - dev: true - /dns-over-http-resolver@1.2.3(node-fetch@3.3.2): resolution: {integrity: sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==} dependencies: @@ -10150,6 +10249,7 @@ packages: /eip1193-provider@1.0.1: resolution: {integrity: sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dependencies: '@json-rpc-tools/provider': 1.7.6 transitivePeerDependencies: @@ -10237,11 +10337,12 @@ packages: tapable: 2.2.1 dev: false - /enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 + strip-ansi: 6.0.1 dev: true /entities@2.2.0: @@ -10464,7 +10565,7 @@ packages: optionalDependencies: source-map: 0.6.1 - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.43.0)(jest@27.5.1)(typescript@4.9.5): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.48.0)(jest@27.5.1)(typescript@4.9.5): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -10475,20 +10576,20 @@ packages: optional: true dependencies: '@babel/core': 7.22.5 - '@babel/eslint-parser': 7.22.5(@babel/core@7.22.5)(eslint@8.43.0) + '@babel/eslint-parser': 7.22.5(@babel/core@7.22.5)(eslint@8.48.0) '@rushstack/eslint-patch': 1.3.2 - '@typescript-eslint/eslint-plugin': 5.60.0(@typescript-eslint/parser@5.60.0)(eslint@8.43.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.60.0(eslint@8.43.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.60.0(@typescript-eslint/parser@5.60.0)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.60.0(eslint@8.48.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint: 8.43.0 - eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.43.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.60.0)(eslint@8.43.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.60.0)(eslint@8.43.0)(jest@27.5.1)(typescript@4.9.5) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.43.0) - eslint-plugin-react: 7.32.2(eslint@8.43.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.43.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.43.0)(typescript@4.9.5) + eslint: 8.48.0 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.60.0)(eslint@8.48.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.60.0)(eslint@8.48.0)(jest@27.5.1)(typescript@4.9.5) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) + eslint-plugin-react: 7.32.2(eslint@8.48.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) + eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -10509,7 +10610,7 @@ packages: - supports-color dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.60.0)(eslint-import-resolver-node@0.3.7)(eslint@8.43.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.60.0)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -10530,15 +10631,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.60.0(eslint@8.43.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.60.0(eslint@8.48.0)(typescript@4.9.5) debug: 3.2.7 - eslint: 8.43.0 + eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color dev: false - /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.43.0): + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.48.0): resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -10546,14 +10647,14 @@ packages: '@babel/plugin-transform-react-jsx': ^7.14.9 eslint: ^8.1.0 dependencies: - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.10) - eslint: 8.43.0 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.11) + eslint: 8.48.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: false - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.60.0)(eslint@8.43.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.60.0)(eslint@8.48.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -10563,15 +10664,15 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.60.0(eslint@8.43.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.60.0(eslint@8.48.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.43.0 + eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.60.0)(eslint-import-resolver-node@0.3.7)(eslint@8.43.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.60.0)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -10586,7 +10687,7 @@ packages: - supports-color dev: false - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.60.0)(eslint@8.43.0)(jest@27.5.1)(typescript@4.9.5): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.60.0)(eslint@8.48.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: @@ -10599,16 +10700,16 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.60.0(@typescript-eslint/parser@5.60.0)(eslint@8.43.0)(typescript@4.9.5) - '@typescript-eslint/experimental-utils': 5.60.0(eslint@8.43.0)(typescript@4.9.5) - eslint: 8.43.0 + '@typescript-eslint/eslint-plugin': 5.60.0(@typescript-eslint/parser@5.60.0)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.60.0(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 jest: 27.5.1(ts-node@10.9.1) transitivePeerDependencies: - supports-color - typescript dev: false - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.43.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.48.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -10623,7 +10724,7 @@ packages: axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.43.0 + eslint: 8.48.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 @@ -10633,16 +10734,16 @@ packages: semver: 6.3.0 dev: false - /eslint-plugin-react-hooks@4.6.0(eslint@8.43.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.48.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.43.0 + eslint: 8.48.0 dev: false - /eslint-plugin-react@7.32.2(eslint@8.43.0): + /eslint-plugin-react@7.32.2(eslint@8.48.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -10652,7 +10753,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.43.0 + eslint: 8.48.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -10666,14 +10767,14 @@ packages: string.prototype.matchall: 4.0.8 dev: false - /eslint-plugin-testing-library@5.11.0(eslint@8.43.0)(typescript@4.9.5): + /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} 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.60.0(eslint@8.43.0)(typescript@4.9.5) - eslint: 8.43.0 + '@typescript-eslint/utils': 5.60.0(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 transitivePeerDependencies: - supports-color - typescript @@ -10687,8 +10788,8 @@ packages: estraverse: 4.3.0 dev: false - /eslint-scope@7.2.0: - resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + /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 @@ -10705,7 +10806,12 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /eslint-webpack-plugin@3.2.0(eslint@8.43.0)(webpack@5.87.0): + /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} + dev: false + + /eslint-webpack-plugin@3.2.0(eslint@8.48.0)(webpack@5.87.0): resolution: {integrity: sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -10713,7 +10819,7 @@ packages: webpack: ^5.0.0 dependencies: '@types/eslint': 8.40.2 - eslint: 8.43.0 + eslint: 8.48.0 jest-worker: 28.1.3 micromatch: 4.0.5 normalize-path: 3.0.0 @@ -10721,15 +10827,15 @@ packages: webpack: 5.87.0 dev: false - /eslint@8.43.0: - resolution: {integrity: sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==} + /eslint@8.48.0: + resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.43.0) - '@eslint-community/regexpp': 4.5.1 - '@eslint/eslintrc': 2.0.3 - '@eslint/js': 8.43.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/regexpp': 4.8.0 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.48.0 '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -10739,19 +10845,18 @@ packages: debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.1 - espree: 9.5.2 + 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 + globals: 13.21.0 graphemer: 1.4.0 ignore: 5.2.4 - import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -10761,9 +10866,8 @@ packages: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.1 + optionator: 0.9.3 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color @@ -10775,13 +10879,13 @@ packages: requiresBuild: true optional: true - /espree@9.5.2: - resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + /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.10.0 acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.1 + eslint-visitor-keys: 3.4.3 dev: false /esprima@2.7.3: @@ -10932,6 +11036,15 @@ packages: '@scure/bip39': 1.1.1 dev: true + /ethereum-cryptography@2.1.2: + resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/bip32': 1.3.1 + '@scure/bip39': 1.2.1 + dev: true + /ethereumjs-abi@0.6.8: resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} dependencies: @@ -11179,6 +11292,17 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + /fast-json-patch@3.1.1: resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} dev: true @@ -11250,6 +11374,13 @@ packages: object-assign: 4.1.1 dev: true + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + /figures@5.0.0: resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} engines: {node: '>=14'} @@ -11262,7 +11393,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.0.4 + flat-cache: 3.1.0 dev: false /file-loader@6.2.0(webpack@5.87.0): @@ -11305,13 +11436,11 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /filenamify@5.1.1: - resolution: {integrity: sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==} - engines: {node: '>=12.20'} + /filenamify@6.0.0: + resolution: {integrity: sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==} + engines: {node: '>=16'} dependencies: filename-reserved-regex: 3.0.0 - strip-outer: 2.0.0 - trim-repeated: 2.0.0 dev: true /filesize@6.4.0: @@ -11391,11 +11520,12 @@ packages: locate-path: 6.0.0 path-exists: 4.0.0 - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@3.1.0: + resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + engines: {node: '>=12.0.0'} dependencies: flatted: 3.2.7 + keyv: 4.5.3 rimraf: 3.0.2 dev: false @@ -11435,7 +11565,7 @@ packages: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: true - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.43.0)(typescript@4.9.5)(webpack@5.87.0): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.87.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -11455,7 +11585,7 @@ packages: chokidar: 3.5.3 cosmiconfig: 6.0.0 deepmerge: 4.3.1 - eslint: 8.43.0 + eslint: 8.48.0 fs-extra: 9.1.0 glob: 7.2.3 memfs: 3.5.3 @@ -11527,7 +11657,6 @@ packages: /freeport-promise@2.0.0: resolution: {integrity: sha512-dwWpT1DdQcwrhmRwnDnPM/ZFny+FtzU+k50qF2eid3KxaQDsMiBrwo1i0G3qSugkN5db6Cb0zgfc68QeTOpEFg==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} @@ -11690,6 +11819,13 @@ packages: engines: {node: '>=4'} dev: true + /get-random-values@2.1.0: + resolution: {integrity: sha512-q2yOLpLyA8f9unfv2LV8KVRUFeOIrQVS5cnqpbv6N+ea9j1rmW5dFKj/2Q7CK3juEfDYQgPxGt941VJcmw0jKg==} + engines: {node: 14 || 16 || >=18} + dependencies: + global: 4.4.0 + dev: true + /get-stream@2.3.1: resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==} engines: {node: '>=0.10.0'} @@ -11843,8 +11979,8 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + /globals@13.21.0: + resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -11867,7 +12003,7 @@ packages: '@types/glob': 7.2.0 array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.1 glob: 7.2.3 ignore: 5.2.4 merge2: 1.4.1 @@ -11982,8 +12118,8 @@ packages: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} dev: false - /handlebars@4.7.7: - resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} hasBin: true dependencies: @@ -12009,22 +12145,21 @@ packages: har-schema: 2.0.0 dev: true - /hardhat-gas-reporter@1.0.9(hardhat@2.15.0): + /hardhat-gas-reporter@1.0.9(hardhat@2.17.2): resolution: {integrity: sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==} peerDependencies: hardhat: ^2.0.2 dependencies: array-uniq: 1.0.3 eth-gas-reporter: 0.2.25 - hardhat: 2.15.0(ts-node@10.9.1)(typescript@4.7.2) + hardhat: 2.17.2(ts-node@10.9.1)(typescript@4.7.2) sha1: 1.1.1 transitivePeerDependencies: - '@codechecks/client' dev: true - /hardhat@2.15.0(ts-node@10.9.1)(typescript@4.7.2): - resolution: {integrity: sha512-cC9tM/N10YaES04zPOp7yR13iX3YibqaNmi0//Ep40Nt9ELIJx3kFpQmucur0PAIfXYpGnw5RuXHNLkxpnVHEw==} - engines: {node: '>=14.0.0'} + /hardhat@2.17.2(ts-node@10.9.1)(typescript@4.7.2): + resolution: {integrity: sha512-oUv40jBeHw0dKpbyQ+iH9cmNMziweLoTW3MnkNxJ2Gc0KGLrQR/1n4vV4xY60zn2LdmRgnwPqy3CgtY0mfwIIA==} hasBin: true peerDependencies: ts-node: '*' @@ -12037,21 +12172,20 @@ packages: dependencies: '@ethersproject/abi': 5.7.0 '@metamask/eth-sig-util': 4.0.1 - '@nomicfoundation/ethereumjs-block': 5.0.1 - '@nomicfoundation/ethereumjs-blockchain': 7.0.1 - '@nomicfoundation/ethereumjs-common': 4.0.1 - '@nomicfoundation/ethereumjs-evm': 2.0.1 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 - '@nomicfoundation/ethereumjs-statemanager': 2.0.1 - '@nomicfoundation/ethereumjs-trie': 6.0.1 - '@nomicfoundation/ethereumjs-tx': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 - '@nomicfoundation/ethereumjs-vm': 7.0.1 + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-blockchain': 7.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-evm': 2.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-statemanager': 2.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + '@nomicfoundation/ethereumjs-vm': 7.0.2 '@nomicfoundation/solidity-analyzer': 0.1.1 '@sentry/node': 5.30.0 '@types/bn.js': 5.1.1 '@types/lru-cache': 5.1.1 - abort-controller: 3.0.0 adm-zip: 0.4.16 aggregate-error: 3.1.0 ansi-escapes: 4.3.2 @@ -12059,7 +12193,7 @@ packages: chokidar: 3.5.3 ci-info: 2.0.0 debug: 4.3.4(supports-color@8.1.1) - enquirer: 2.3.6 + enquirer: 2.4.1 env-paths: 2.2.1 ethereum-cryptography: 1.2.0 ethereumjs-abi: 0.6.8 @@ -12067,14 +12201,13 @@ packages: fp-ts: 1.19.3 fs-extra: 7.0.1 glob: 7.2.0 - immutable: 4.3.0 + immutable: 4.3.4 io-ts: 1.10.4 keccak: 3.0.3 lodash: 4.17.21 mnemonist: 0.38.5 mocha: 10.2.0 p-map: 4.0.0 - qs: 6.11.2 raw-body: 2.5.2 resolve: 1.17.0 semver: 6.3.1 @@ -12084,7 +12217,7 @@ packages: ts-node: 10.9.1(@types/node@20.4.5)(typescript@4.7.2) tsort: 0.0.1 typescript: 4.7.2 - undici: 5.22.1 + undici: 5.23.0 uuid: 8.3.2 ws: 7.5.9 transitivePeerDependencies: @@ -12273,6 +12406,20 @@ packages: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} dev: true + /http-call@5.3.0: + resolution: {integrity: sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==} + engines: {node: '>=8.0.0'} + dependencies: + content-type: 1.0.5 + debug: 4.3.4(supports-color@8.1.1) + is-retry-allowed: 1.2.0 + is-stream: 2.0.1 + parse-json: 4.0.0 + tunnel-agent: 0.6.0 + transitivePeerDependencies: + - supports-color + dev: true + /http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} dev: false @@ -12473,8 +12620,8 @@ packages: resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} dev: false - /immutable@4.3.0: - resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==} + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} dev: true /import-cwd@3.0.0: @@ -12535,14 +12682,36 @@ packages: /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - /inquirer@9.2.7: - resolution: {integrity: sha512-Bf52lnfvNxGPJPltiNO2tLBp3zC339KNlGMqOkW+dsvNikBhcVDK5kqU2lVX2FTPzuXUFX5WJDlsw//w3ZwoTw==} + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.5.5 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + dev: true + + /inquirer@9.2.10: + resolution: {integrity: sha512-tVVNFIXU8qNHoULiazz612GFl+yqNfjMTbLuViNJE/d860Qxrd3NMrse8dm40VUQLOQeULvaQF8lpAhvysjeyA==} engines: {node: '>=14.18.0'} dependencies: + '@ljharb/through': 2.3.9 ansi-escapes: 4.3.2 - chalk: 5.2.0 + chalk: 5.3.0 cli-cursor: 3.1.0 - cli-width: 4.0.0 + cli-width: 4.1.0 external-editor: 3.1.0 figures: 5.0.0 lodash: 4.17.21 @@ -12552,7 +12721,6 @@ packages: rxjs: 7.8.1 string-width: 4.2.3 strip-ansi: 6.0.1 - through: 2.3.8 wrap-ansi: 6.2.0 dev: true @@ -12657,7 +12825,6 @@ packages: /ip-regex@5.0.0: resolution: {integrity: sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} @@ -12674,7 +12841,7 @@ packages: dependencies: '@ipld/dag-pb': 4.0.4 '@libp2p/interface-keychain': 2.0.5 - '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interface-peer-info': 1.0.10 '@libp2p/interface-pubsub': 3.0.7 '@multiformats/multiaddr': 11.3.0 @@ -12834,7 +13001,7 @@ packages: engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: err-code: 3.0.1 - protobufjs: 7.2.3 + protobufjs: 7.2.4 dev: true /ipfs-utils@8.1.6: @@ -12874,8 +13041,8 @@ packages: it-to-stream: 1.0.0 merge-options: 3.0.4 nanoid: 3.3.6 - native-fetch: 3.0.0(node-fetch@2.6.13) - node-fetch: 2.6.13 + native-fetch: 3.0.0(node-fetch@2.7.0) + node-fetch: 2.7.0 react-native-fetch-api: 3.0.0 stream-to-it: 0.2.4 transitivePeerDependencies: @@ -13062,7 +13229,6 @@ packages: /is-loopback-addr@2.0.1: resolution: {integrity: sha512-SEsepLbdWFb13B6U0tt6dYcUM0iK/U7XOC43N70Z4Qb88WpNtp+ospyNI9ddpqncs7Z7brAEsVBTQpaqSNntIw==} - dev: false /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} @@ -13087,6 +13253,10 @@ packages: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} + /is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + dev: true + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} @@ -13141,6 +13311,11 @@ packages: engines: {node: '>=0.10.0'} dev: false + /is-retry-allowed@1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} + dev: true + /is-root@2.1.0: resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} engines: {node: '>=6'} @@ -13309,14 +13484,12 @@ packages: /it-all@3.0.3: resolution: {integrity: sha512-LwEVD1d0b1O5mDwumnZk+80jSBn5sXDxQ41xiD6j6l2lRiWH6lBLdxXx1C6mlKrXQwRHzUQagOZUmqttDUwb0A==} - dev: false /it-batched-bytes@2.0.4: resolution: {integrity: sha512-n4V19XACvFG+b8lCkuvidYvwpyz3++DAolqZGI+9AcDvIPMAhVwwtFCe9SiDIz45OzQnnNYwBgBxbIinHPgraA==} dependencies: p-defer: 4.0.0 uint8arraylist: 2.4.3 - dev: false /it-buffer@0.1.3: resolution: {integrity: sha512-9a2/9SYVwG7bcn3tpRDR4bXbtuMLXnDK48KVC+GXiQg97ZOOdWz2nIITBsOQ19b+gj01Rw8RNwtiLDLI8P8oiQ==} @@ -13331,7 +13504,6 @@ packages: it-pushable: 3.2.1 it-stream-types: 2.0.1 uint8arraylist: 2.4.3 - dev: false /it-concat@2.0.0: resolution: {integrity: sha512-jchrEB3fHlUENWkVJRmbFJ1A7gcjJDmwiolQsHhVC14DpUIbX8fgr3SOC7XNE5OoUUQNL6/RaMCPChkPemyQUw==} @@ -13345,7 +13517,6 @@ packages: /it-drain@3.0.3: resolution: {integrity: sha512-l4s+izxUpFAR2axprpFiCaq0EtxK1QMd0LWbEtau5b+OegiZ5xdRtz35iJyh6KZY9QtuwEiQxydiOfYJc7stoA==} - dev: false /it-filter@1.0.3: resolution: {integrity: sha512-EI3HpzUrKjTH01miLHWmhNWy3Xpbx4OXMXltgrNprL5lDpF3giVpHIouFpr5l+evXw6aOfxhnt01BIB+4VQA+w==} @@ -13355,7 +13526,6 @@ packages: resolution: {integrity: sha512-2zXUrJuuV6QHM21ahc8NqVUUxkLMVDWXBoUBcj9GCQLQez2OXmddTHN0r0F5B+TkNTpeL618yIgXi1HNPJOxow==} dependencies: it-peekable: 3.0.2 - dev: false /it-first@1.0.7: resolution: {integrity: sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g==} @@ -13369,7 +13539,6 @@ packages: /it-first@3.0.2: resolution: {integrity: sha512-QPLAM2BOkait/o6W25HvP0XTEv+Os3Ce4wET//ADNaPv+WYAHWfQwJuMu5FB8X066hA1F7LEMnULvTpE7/4yQw==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false /it-foreach@0.1.1: resolution: {integrity: sha512-ZLxL651N5w5SL/EIIcrXELgYrrkuEKj/TErG93C4lr6lNZziKsf338ljSG85PjQfu7Frg/1wESl5pLrPSFXI9g==} @@ -13406,7 +13575,6 @@ packages: it-stream-types: 2.0.1 p-defer: 4.0.0 uint8arraylist: 2.4.3 - dev: false /it-last@1.0.6: resolution: {integrity: sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q==} @@ -13425,7 +13593,6 @@ packages: it-stream-types: 2.0.1 uint8-varint: 2.0.1 uint8arraylist: 2.4.3 - dev: false /it-length-prefixed@5.0.3: resolution: {integrity: sha512-b+jDHLcnOnPDQN79ronmzF5jeBjdJsy0ce2O6i6X4J5tnaO8Fd146ZA/tMbzaLlKnTpXa0eKtofpYhumXGENeg==} @@ -13444,7 +13611,6 @@ packages: uint8-varint: 1.0.6 uint8arraylist: 2.4.3 uint8arrays: 4.0.3 - dev: false /it-length-prefixed@9.0.1: resolution: {integrity: sha512-ZBD8ZFLERj8d1q9CeBtk0eJ4EpeI3qwnkmWtemBSm3ZI2dM8PUweNVk5haZ2vw3EIq2uYQiabV9YwNm6EASM4A==} @@ -13455,7 +13621,6 @@ packages: uint8-varint: 1.0.6 uint8arraylist: 2.4.3 uint8arrays: 4.0.3 - dev: false /it-length-prefixed@9.0.3: resolution: {integrity: sha512-YAu424ceYpXctxtjcLOqn7vJq082CaoP8J646ZusYISfQc3bpzQErgTUqMFj81V262KG2W9/YMBHsy6A/4yvmg==} @@ -13467,7 +13632,6 @@ packages: uint8-varint: 2.0.1 uint8arraylist: 2.4.3 uint8arrays: 4.0.6 - dev: false /it-map@1.0.6: resolution: {integrity: sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ==} @@ -13481,7 +13645,6 @@ packages: resolution: {integrity: sha512-h5zCxovJQ+mzJT75xP4GkJuFrJQ5l7IIdhZ6AOWaE02g5F7T1k1j4CB/uKSRR05LLLOi1LqG+7CrH9bi8GIXYA==} dependencies: it-peekable: 3.0.2 - dev: false /it-merge@1.0.4: resolution: {integrity: sha512-DcL6GksTD2HQ7+5/q3JznXaLNfwjyG3/bObaF98da+oHfUiPmdo64oJlT9J8R8G5sJRU7thwaY5zxoAKCn7FJw==} @@ -13494,20 +13657,17 @@ packages: engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: it-pushable: 3.1.3 - dev: false /it-merge@3.0.1: resolution: {integrity: sha512-I6hjU1ABO+k3xY1H6JtCSDXvUME88pxIXSgKeT4WI5rPYbQzpr98ldacVuG95WbjaJxKl6Qot6lUdxduLBQPHA==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: it-pushable: 3.1.3 - dev: false /it-merge@3.0.2: resolution: {integrity: sha512-bMk2km8lTz+Rwv30hzDUdGIcqQkOemFJqmGT2wqQZ6/zHKCsYqdRunPrteCqHLV/nIVhUK8nZZkDA2eJ4MJZiA==} dependencies: it-pushable: 3.2.1 - dev: false /it-pair@1.0.0: resolution: {integrity: sha512-9raOiDu5OAuDOahtMtapKQDrQTxBfzlzrNcB6o7JARHkt+7Bb1dMkW/TpYdAjBJE77KH3e2zGzwpGUP9tXbLww==} @@ -13521,13 +13681,11 @@ packages: dependencies: it-stream-types: 2.0.1 p-defer: 4.0.0 - dev: false /it-parallel@3.0.4: resolution: {integrity: sha512-fuA+SysGxbZc+Yl7EUvzQqZ8bNYQghZ0Mq9zA+fxMQ5eQYzatNg6oJk1y1PvPvNqLgKJMzEInpRO6PbLC3hGAg==} dependencies: p-defer: 4.0.0 - dev: false /it-pb-rpc@0.1.13: resolution: {integrity: sha512-aZ4FNJsDgNepVVTmYXgXbQabIiOQyqYWUhdfovaHDcPSM5KjegwJihJEWMJjMyj+oLSKcZl0vmHgHxXWJ9/ufw==} @@ -13548,7 +13706,6 @@ packages: /it-peekable@3.0.2: resolution: {integrity: sha512-nWwUdhNQ1CfAuoJmsaUotNMYUrfNIlY9gBA1jwWfWSu1I0mLY2brwreKHGOUptXLJUiG5pR04He0xYZMWBRiGA==} - dev: false /it-pipe@1.1.0: resolution: {integrity: sha512-lF0/3qTVeth13TOnHVs0BTFaziwQF7m5Gg+E6JV0BXcLKutC92YjSi7bASgkPOXaLEb+YvNZrPorGMBIJvZfxg==} @@ -13561,7 +13718,6 @@ packages: it-merge: 2.0.1 it-pushable: 3.1.3 it-stream-types: 1.0.5 - dev: false /it-pipe@3.0.1: resolution: {integrity: sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA==} @@ -13570,7 +13726,6 @@ packages: it-merge: 3.0.2 it-pushable: 3.2.1 it-stream-types: 2.0.1 - dev: false /it-protobuf-stream@1.0.2: resolution: {integrity: sha512-2lESJIeZS2ZlYJc/1SKs6LL4Y83rCCvZv750xV1e4uuP9114yNkw2MhIGCtSReg+qNWCvzGqOwjQbKV0LFE6wQ==} @@ -13579,7 +13734,6 @@ packages: it-stream-types: 2.0.1 protons-runtime: 5.0.0(uint8arraylist@2.4.3) uint8arraylist: 2.4.3 - dev: false /it-pushable@1.4.2: resolution: {integrity: sha512-vVPu0CGRsTI8eCfhMknA7KIBqqGFolbRx+1mbQ6XuZ7YCz995Qj7L4XUviwClFunisDq96FdxzF5FnAbw15afg==} @@ -13609,7 +13763,6 @@ packages: dependencies: it-stream-types: 2.0.1 uint8arraylist: 2.4.3 - dev: false /it-sort@1.0.1: resolution: {integrity: sha512-c+C48cP7XMMebB9irLrJs2EmpLILId8NYSojqAqN8etE8ienx0azBgaKvZHYH1DkerqIul0Fl2FqISu2BZgTEQ==} @@ -13621,7 +13774,6 @@ packages: resolution: {integrity: sha512-9BuQc5Y2fmBUNhevQBUDHfItrQmzWoZcnzydJl91V6na6M+RkbNj71UtCPPNIpOt/SQG+va0pe1wMQJ9lP2Oew==} dependencies: it-all: 3.0.3 - dev: false /it-stream-types@1.0.5: resolution: {integrity: sha512-I88Ka1nHgfX62e5mi5LLL+oueqz7Ltg0bUdtsUKDe9SoUqbQPf2Mp5kxDTe9pNhHQGs4pvYPAINwuZ1HAt42TA==} @@ -13637,7 +13789,6 @@ packages: /it-take@3.0.3: resolution: {integrity: sha512-Ay5SXEyrBKD0tO8PQif2QjrStImIsLIg0F50Uu4EeXOw8C9DfVIGfsGL3X9s65F2I9skDp9mLgBzl71IToMxNw==} - dev: false /it-tar@3.0.0: resolution: {integrity: sha512-VhD1Hnx4IXDcQgYJnJgltkn+w5F8kiJaB46lqovh+YWfty2JGW7i40QQjWbSvcg1QfaU8is8AVX8xwx/Db9oOg==} @@ -13686,7 +13837,6 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false /jake@10.8.7: resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} @@ -13794,7 +13944,7 @@ packages: pretty-format: 27.5.1 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.4.5)(typescript@4.7.2) + ts-node: 10.9.1(@types/node@18.13.0)(typescript@4.7.2) transitivePeerDependencies: - bufferutil - canvas @@ -14227,8 +14377,8 @@ packages: /js-base64@3.7.5: resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} - /js-sdsl@4.4.1: - resolution: {integrity: sha512-6Gsx8R0RucyePbWqPssR8DyfuXmLBooYN5cZFZKjHGnQuaf7pEzhtpceagJxVu4LqhYY5EYA7nko3FmeHZ1KbA==} + /js-sdsl@4.4.2: + resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==} dev: true /js-sha3@0.5.7: @@ -14327,6 +14477,9 @@ packages: /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} dev: true /json-parse-even-better-errors@2.3.1: @@ -14424,7 +14577,7 @@ packages: requiresBuild: true dependencies: node-addon-api: 2.0.2 - node-gyp-build: 4.6.0 + node-gyp-build: 4.6.1 readable-stream: 3.6.2 dev: true @@ -14438,11 +14591,10 @@ packages: json-buffer: 3.0.0 dev: true - /keyv@4.5.2: - resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} + /keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} dependencies: json-buffer: 3.0.1 - dev: true /keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} @@ -14582,27 +14734,6 @@ packages: uint8arrays: 3.1.1 dev: true - /libp2p-interfaces@4.0.6(node-fetch@2.6.11): - resolution: {integrity: sha512-3KjzNEIWhi+VoOamLvgKKUE/xqwxSw/JYqsBnfMhAWVRvRtosROtVT03wci2XbuuowCYw+/hEX1xKJIR1w5n0A==} - dependencies: - abortable-iterator: 3.0.2 - debug: 4.3.4(supports-color@8.1.1) - err-code: 3.0.1 - it-length-prefixed: 5.0.3 - it-pipe: 1.1.0 - it-pushable: 1.4.2 - libp2p-crypto: 0.21.2 - multiaddr: 10.0.1(node-fetch@2.6.11) - multiformats: 9.9.0 - p-queue: 6.6.2 - peer-id: 0.16.0 - protobufjs: 6.11.3 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - node-fetch - - supports-color - dev: true - /libp2p-interfaces@4.0.6(node-fetch@3.3.2): resolution: {integrity: sha512-3KjzNEIWhi+VoOamLvgKKUE/xqwxSw/JYqsBnfMhAWVRvRtosROtVT03wci2XbuuowCYw+/hEX1xKJIR1w5n0A==} dependencies: @@ -14638,21 +14769,6 @@ packages: - supports-color dev: true - /libp2p-utils@0.4.1(node-fetch@2.6.11): - resolution: {integrity: sha512-kq/US2unamiyY+YwP47dO1uqpAdcbdYI2Fzi9JIEhjfPBaD1MR/uyQ/YP7ABthl3EaxAjIQYd1TVp85d6QKAtQ==} - dependencies: - abortable-iterator: 3.0.2 - debug: 4.3.4(supports-color@8.1.1) - err-code: 3.0.1 - ip-address: 8.1.0 - is-loopback-addr: 1.0.1 - multiaddr: 10.0.1(node-fetch@2.6.11) - private-ip: 2.3.4 - transitivePeerDependencies: - - node-fetch - - supports-color - dev: true - /libp2p-utils@0.4.1(node-fetch@3.3.2): resolution: {integrity: sha512-kq/US2unamiyY+YwP47dO1uqpAdcbdYI2Fzi9JIEhjfPBaD1MR/uyQ/YP7ABthl3EaxAjIQYd1TVp85d6QKAtQ==} dependencies: @@ -14668,29 +14784,6 @@ packages: - supports-color dev: true - /libp2p-websockets@0.16.2(node-fetch@2.6.11): - resolution: {integrity: sha512-QGfo8jX1Ks16yi8C67CCyMW7k9cfCYiQ0lzKVJBud0fV3ymbMO2L8gzU6iXUUZTHILo8ka26zKhwQ4lmUMI+nA==} - dependencies: - abortable-iterator: 3.0.2 - class-is: 1.1.0 - debug: 4.3.4(supports-color@8.1.1) - err-code: 3.0.1 - ipfs-utils: 9.0.14 - it-ws: 4.0.0 - libp2p-utils: 0.4.1(node-fetch@2.6.11) - mafmt: 10.0.0(node-fetch@2.6.11) - multiaddr: 10.0.1(node-fetch@2.6.11) - multiaddr-to-uri: 8.0.0(node-fetch@2.6.11) - p-defer: 3.0.0 - p-timeout: 4.1.0 - transitivePeerDependencies: - - bufferutil - - encoding - - node-fetch - - supports-color - - utf-8-validate - dev: true - /libp2p-websockets@0.16.2(node-fetch@3.3.2): resolution: {integrity: sha512-QGfo8jX1Ks16yi8C67CCyMW7k9cfCYiQ0lzKVJBud0fV3ymbMO2L8gzU6iXUUZTHILo8ka26zKhwQ4lmUMI+nA==} dependencies: @@ -14714,69 +14807,6 @@ packages: - utf-8-validate dev: true - /libp2p@0.36.2(node-fetch@2.6.11): - resolution: {integrity: sha512-UpNYBMQVivMu56zoibdGitopv39uBBAybIBOEGWmFy/I2NnTVGUutLPrxo47AuN2kntYgo/TNJfW+PpswUgSaw==} - engines: {node: '>=15.0.0'} - dependencies: - '@vascosantos/moving-average': 1.1.0 - abortable-iterator: 3.0.2 - aggregate-error: 3.1.0 - any-signal: 3.0.1 - bignumber.js: 9.1.1 - class-is: 1.1.0 - datastore-core: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) - err-code: 3.0.1 - es6-promisify: 7.0.0 - events: 3.3.0 - hashlru: 2.3.0 - interface-datastore: 6.1.1 - it-all: 1.0.6 - it-buffer: 0.1.3 - it-drain: 1.0.5 - it-filter: 1.0.3 - it-first: 1.0.7 - it-foreach: 0.1.1 - it-handshake: 2.0.0 - it-length-prefixed: 5.0.3 - it-map: 1.0.6 - it-merge: 1.0.4 - it-pipe: 1.1.0 - it-sort: 1.0.1 - it-take: 1.0.2 - libp2p-crypto: 0.21.2 - libp2p-interfaces: 4.0.6(node-fetch@2.6.11) - libp2p-utils: 0.4.1(node-fetch@2.6.11) - mafmt: 10.0.0(node-fetch@2.6.11) - merge-options: 3.0.4 - mortice: 2.0.1 - multiaddr: 10.0.1(node-fetch@2.6.11) - multiformats: 9.9.0 - multistream-select: 3.0.2 - mutable-proxy: 1.0.0 - nat-api: 0.3.1 - node-forge: 1.3.1 - p-any: 3.0.0 - p-fifo: 1.0.0 - p-retry: 4.6.2 - p-settle: 4.1.1 - peer-id: 0.16.0 - private-ip: 2.3.4 - protobufjs: 6.11.3 - retimer: 3.0.0 - sanitize-filename: 1.6.3 - set-delayed-interval: 1.0.0 - streaming-iterables: 6.2.0 - timeout-abort-controller: 3.0.0 - uint8arrays: 3.1.1 - varint: 6.0.0 - wherearewe: 1.0.2 - xsalsa20: 1.2.0 - transitivePeerDependencies: - - node-fetch - - supports-color - dev: true - /libp2p@0.36.2(node-fetch@3.3.2): resolution: {integrity: sha512-UpNYBMQVivMu56zoibdGitopv39uBBAybIBOEGWmFy/I2NnTVGUutLPrxo47AuN2kntYgo/TNJfW+PpswUgSaw==} engines: {node: '>=15.0.0'} @@ -14891,7 +14921,6 @@ packages: xsalsa20: 1.2.0 transitivePeerDependencies: - supports-color - dev: false /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} @@ -14979,6 +15008,10 @@ packages: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} dev: false + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + dev: true + /lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} dev: true @@ -14989,6 +15022,13 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + /log-chopper@1.0.2: + resolution: {integrity: sha512-tEWS6Fb+Xv0yLChJ6saA1DP3H1yPL0PfiIN7SDJ+U/CyP+fD4G/dhKfow+P5UuJWi6BdE4mUcPkJclGXCWxDrg==} + engines: {node: '>=6.0.0'} + dependencies: + byline: 5.0.0 + dev: true + /log-symbols@3.0.0: resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} engines: {node: '>=8'} @@ -15031,7 +15071,6 @@ packages: dependencies: byte-access: 1.0.1 uint8arraylist: 2.4.3 - dev: false /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} @@ -15087,15 +15126,6 @@ packages: hasBin: true dev: false - /mafmt@10.0.0(node-fetch@2.6.11): - resolution: {integrity: sha512-K1bziJOXcnepfztu+2Xy9FLKVLaFMDuspmiyJIYRxnO0WOxFSV7XKSdMxMrVZxcvg1+YjlTIvSGTImUHU2k4Aw==} - dependencies: - multiaddr: 10.0.1(node-fetch@2.6.11) - transitivePeerDependencies: - - node-fetch - - supports-color - dev: true - /mafmt@10.0.0(node-fetch@3.3.2): resolution: {integrity: sha512-K1bziJOXcnepfztu+2Xy9FLKVLaFMDuspmiyJIYRxnO0WOxFSV7XKSdMxMrVZxcvg1+YjlTIvSGTImUHU2k4Aw==} dependencies: @@ -15229,6 +15259,10 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} + /micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + dev: true + /microbundle@0.15.1(ts-node@10.9.1): resolution: {integrity: sha512-aAF+nwFbkSIJGfrJk+HyzmJOq3KFaimH6OIFBU6J2DPjQeg1jXIYlIyEv81Gyisb9moUkudn+wj7zLNYMOv75Q==} hasBin: true @@ -15553,7 +15587,6 @@ packages: observable-webworkers: 2.0.1 p-queue: 7.3.4 p-timeout: 6.1.2 - dev: false /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} @@ -15592,16 +15625,6 @@ packages: - supports-color dev: true - /multiaddr-to-uri@8.0.0(node-fetch@2.6.11): - resolution: {integrity: sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA==} - deprecated: This module is deprecated, please upgrade to @multiformats/multiaddr-to-uri - dependencies: - multiaddr: 10.0.1(node-fetch@2.6.11) - transitivePeerDependencies: - - node-fetch - - supports-color - dev: true - /multiaddr-to-uri@8.0.0(node-fetch@3.3.2): resolution: {integrity: sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA==} deprecated: This module is deprecated, please upgrade to @multiformats/multiaddr-to-uri @@ -15612,21 +15635,6 @@ packages: - supports-color dev: true - /multiaddr@10.0.1(node-fetch@2.6.11): - resolution: {integrity: sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg==} - deprecated: This module is deprecated, please upgrade to @multiformats/multiaddr - dependencies: - dns-over-http-resolver: 1.2.3(node-fetch@2.6.11) - err-code: 3.0.1 - is-ip: 3.1.0 - multiformats: 9.9.0 - uint8arrays: 3.1.1 - varint: 6.0.0 - transitivePeerDependencies: - - node-fetch - - supports-color - dev: true - /multiaddr@10.0.1(node-fetch@3.3.2): resolution: {integrity: sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg==} deprecated: This module is deprecated, please upgrade to @multiformats/multiaddr @@ -15786,6 +15794,10 @@ packages: engines: {node: '>=6.X.X', npm: '>=3.X.X'} dev: true + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + /mute-stream@1.0.0: resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -15857,20 +15869,12 @@ packages: node-fetch: /@achingbrain/node-fetch@2.6.7 dev: true - /native-fetch@3.0.0(node-fetch@2.6.11): - resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} - peerDependencies: - node-fetch: '*' - dependencies: - node-fetch: 2.6.11 - dev: true - - /native-fetch@3.0.0(node-fetch@2.6.13): + /native-fetch@3.0.0(node-fetch@2.7.0): resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} peerDependencies: node-fetch: '*' dependencies: - node-fetch: 2.6.13 + node-fetch: 2.7.0 dev: true /native-fetch@3.0.0(node-fetch@3.3.2): @@ -15954,23 +15958,11 @@ packages: resolution: {integrity: sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==} dependencies: object.getownpropertydescriptors: 2.1.6 - semver: 5.7.1 - dev: true - - /node-fetch@2.6.11: - resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 + semver: 5.7.2 dev: true - /node-fetch@2.6.13: - resolution: {integrity: sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==} + /node-fetch@2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -15981,8 +15973,8 @@ packages: whatwg-url: 5.0.0 dev: true - /node-fetch@2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -16016,6 +16008,11 @@ packages: hasBin: true dev: true + /node-gyp-build@4.6.1: + resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} + hasBin: true + dev: true + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -16058,6 +16055,12 @@ packages: vm-browserify: 1.1.2 dev: true + /node_modules-path@2.0.7: + resolution: {integrity: sha512-/6HODA5TBRgSrtRWZprBmgvnS1LRxiHW0RgGO0/KaYyXaf5e11nrIKaZx+iHw+2OKm61Rk9l9gncF6ewbsjQvQ==} + engines: {node: '>=10.15.3'} + hasBin: true + dev: true + /nofilter@3.1.0: resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} engines: {node: '>=12.19'} @@ -16093,6 +16096,81 @@ packages: dependencies: path-key: 3.1.1 + /npm@9.8.1: + resolution: {integrity: sha512-AfDvThQzsIXhYgk9zhbk5R+lh811lKkLAeQMMhSypf1BM7zUafeIIBzMzespeuVEJ0+LvY36oRQYf7IKLzU3rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dev: true + bundledDependencies: + - '@isaacs/string-locale-compare' + - '@npmcli/arborist' + - '@npmcli/config' + - '@npmcli/fs' + - '@npmcli/map-workspaces' + - '@npmcli/package-json' + - '@npmcli/promise-spawn' + - '@npmcli/run-script' + - abbrev + - archy + - cacache + - chalk + - ci-info + - cli-columns + - cli-table3 + - columnify + - fastest-levenshtein + - fs-minipass + - glob + - graceful-fs + - hosted-git-info + - ini + - init-package-json + - is-cidr + - json-parse-even-better-errors + - libnpmaccess + - libnpmdiff + - libnpmexec + - libnpmfund + - libnpmhook + - libnpmorg + - libnpmpack + - libnpmpublish + - libnpmsearch + - libnpmteam + - libnpmversion + - make-fetch-happen + - minimatch + - minipass + - minipass-pipeline + - ms + - node-gyp + - nopt + - npm-audit-report + - npm-install-checks + - npm-package-arg + - npm-pick-manifest + - npm-profile + - npm-registry-fetch + - npm-user-validate + - npmlog + - p-map + - pacote + - parse-conflict-json + - proc-log + - qrcode-terminal + - read + - semver + - sigstore + - ssri + - supports-color + - tar + - text-table + - tiny-relative-date + - treeverse + - validate-npm-package-name + - which + - write-file-atomic + /nth-check@1.0.2: resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} dependencies: @@ -16235,7 +16313,6 @@ packages: /observable-webworkers@2.0.1: resolution: {integrity: sha512-JI1vB0u3pZjoQKOK1ROWzp0ygxSi7Yb0iR+7UNsw4/Zn4cQ0P3R7XL38zac/Dy2tEA7Lg88/wIJTjF8vYXZ0uw==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false /obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} @@ -16296,19 +16373,19 @@ packages: levn: 0.3.0 prelude-ls: 1.1.2 type-check: 0.3.2 - word-wrap: 1.2.3 + word-wrap: 1.2.5 dev: true - /optionator@0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + /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 - word-wrap: 1.2.3 dev: false /ora@5.4.1: @@ -16459,7 +16536,6 @@ packages: dependencies: eventemitter3: 4.0.7 p-timeout: 5.1.0 - dev: false /p-reflect@2.1.0: resolution: {integrity: sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg==} @@ -16479,7 +16555,6 @@ packages: dependencies: '@types/retry': 0.12.1 retry: 0.13.1 - dev: false /p-settle@4.1.1: resolution: {integrity: sha512-6THGh13mt3gypcNMm0ADqVNCcYa3BK6DWsuJWFCuEKP1rpY+OKGp7gaZwVmLspmic01+fsg/fN57MfvDzZ/PuQ==} @@ -16512,12 +16587,10 @@ packages: /p-timeout@5.1.0: resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} engines: {node: '>=12'} - dev: false /p-timeout@6.1.2: resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} engines: {node: '>=14.16'} - dev: false /p-try@1.0.0: resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} @@ -16566,6 +16639,14 @@ packages: resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} dev: true + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: true + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -17664,7 +17745,6 @@ packages: ip-regex: 5.0.0 ipaddr.js: 2.1.0 netmask: 2.0.2 - dev: false /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -17767,7 +17847,6 @@ packages: '@protobufjs/utf8': 1.1.0 '@types/node': 20.4.5 long: 5.2.3 - dev: false /protons-runtime@5.0.0(uint8arraylist@2.4.3): resolution: {integrity: sha512-QqjGnPGkpvbzq0dITzhG9DVK10rRIHf7nePcU2QQVVpFGuYbwrOWnvGSvei1GcceAzB9syTz6vHzvTPmGRR0PA==} @@ -17777,7 +17856,6 @@ packages: dependencies: protobufjs: 7.2.3 uint8arraylist: 2.4.3 - dev: false /protons-runtime@5.0.2(uint8arraylist@2.4.3): resolution: {integrity: sha512-eKppVrIS5dDh+Y61Yj4bDEOs2sQLQbQGIhr7EBiybPQhIMGBynzVXlYILPWl3Td1GDadobc8qevh5D+JwfG9bw==} @@ -17786,7 +17864,6 @@ packages: dependencies: protobufjs: 7.2.4 uint8arraylist: 2.4.3 - dev: false /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} @@ -17968,11 +18045,9 @@ packages: /rate-limiter-flexible@2.4.1: resolution: {integrity: sha512-dgH4T44TzKVO9CLArNto62hJOwlWJMLUjVVr/ii0uUzZXEXthDNr7/yefW5z/1vvHAfycc1tnuiYyNJ8CTRB3g==} - dev: false /rate-limiter-flexible@2.4.2: resolution: {integrity: sha512-rMATGGOdO1suFyf/mI5LYhts71g1sbdhmd6YvdiXO2gJnd42Tt6QS4JUKJKSWVVkMtBacm6l40FR7Trjo6Iruw==} - dev: false /raw-body@2.5.1: resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} @@ -18005,7 +18080,7 @@ packages: whatwg-fetch: 3.6.2 dev: false - /react-dev-utils@12.0.1(eslint@8.43.0)(typescript@4.9.5)(webpack@5.87.0): + /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.87.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -18024,7 +18099,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.43.0)(typescript@4.9.5)(webpack@5.87.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.87.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -18089,7 +18164,7 @@ packages: engines: {node: '>=0.10.0'} dev: false - /react-scripts@5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.43.0)(react@18.2.0)(ts-node@10.9.1)(typescript@4.9.5): + /react-scripts@5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.48.0)(react@18.2.0)(ts-node@10.9.1)(typescript@4.9.5): resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -18116,9 +18191,9 @@ packages: css-minimizer-webpack-plugin: 3.4.1(webpack@5.87.0) dotenv: 10.0.0 dotenv-expand: 5.1.0 - eslint: 8.43.0 - eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.43.0)(jest@27.5.1)(typescript@4.9.5) - eslint-webpack-plugin: 3.2.0(eslint@8.43.0)(webpack@5.87.0) + eslint: 8.48.0 + eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.48.0)(jest@27.5.1)(typescript@4.9.5) + eslint-webpack-plugin: 3.2.0(eslint@8.48.0)(webpack@5.87.0) file-loader: 6.2.0(webpack@5.87.0) fs-extra: 10.1.0 html-webpack-plugin: 5.5.3(webpack@5.87.0) @@ -18135,7 +18210,7 @@ packages: prompts: 2.4.2 react: 18.2.0 react-app-polyfill: 3.0.0 - react-dev-utils: 12.0.1(eslint@8.43.0)(typescript@4.9.5)(webpack@5.87.0) + react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.87.0) react-refresh: 0.11.0 resolve: 1.22.2 resolve-url-loader: 4.0.0 @@ -18285,6 +18360,10 @@ packages: /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + dev: false + /regenerator-transform@0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: @@ -18666,6 +18745,11 @@ packages: fsevents: 2.3.3 dev: true + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + /run-async@3.0.0: resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} engines: {node: '>=0.12.0'} @@ -18793,7 +18877,7 @@ packages: escodegen: 1.8.1 esprima: 2.7.3 glob: 5.0.15 - handlebars: 4.7.7 + handlebars: 4.7.8 js-yaml: 3.14.1 mkdirp: 0.5.6 nopt: 3.0.6 @@ -18892,6 +18976,11 @@ packages: hasBin: true dev: true + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true @@ -18906,6 +18995,7 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: false /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} @@ -19152,7 +19242,7 @@ packages: js-sha3: 0.8.0 memorystream: 0.3.1 require-from-string: 2.0.2 - semver: 5.7.1 + semver: 5.7.2 tmp: 0.0.33 transitivePeerDependencies: - debug @@ -19179,7 +19269,7 @@ packages: sc-istanbul: 0.4.6 semver: 7.5.4 shelljs: 0.8.5 - web3-utils: 1.10.0 + web3-utils: 1.10.2 transitivePeerDependencies: - bufferutil - encoding @@ -19391,8 +19481,8 @@ packages: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} - /strict-event-emitter@0.4.6: - resolution: {integrity: sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==} + /strict-event-emitter@0.5.0: + resolution: {integrity: sha512-sqnMpVJLSB3daNO6FcvsEk4Mq5IJeAwDeH80DP1S8+pgxrF6yZnE1+VeapesGled7nEcIkz1Ax87HzaIy+02kA==} dev: true /strict-uri-encode@1.1.0: @@ -19610,11 +19700,6 @@ packages: acorn: 8.10.0 dev: true - /strip-outer@2.0.0: - resolution: {integrity: sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /style-inject@0.3.0: resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==} dev: true @@ -20130,13 +20215,6 @@ packages: dependencies: punycode: 2.3.0 - /trim-repeated@2.0.0: - resolution: {integrity: sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==} - engines: {node: '>=12'} - dependencies: - escape-string-regexp: 5.0.0 - dev: true - /truncate-utf8-bytes@1.0.2: resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} dependencies: @@ -20260,6 +20338,7 @@ packages: typescript: 4.7.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + dev: true /ts-pattern@3.3.3: resolution: {integrity: sha512-Z5EFi6g6wyX3uDFHqxF5W5c5h663oZg9O6aOiAT7fqNu0HPSfCxtHzrQ7SblTy738Mrg2Ezorky8H5aUOm8Pvg==} @@ -20380,8 +20459,8 @@ packages: resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} dev: true - /typechain@8.2.0(typescript@4.7.2): - resolution: {integrity: sha512-tZqhqjxJ9xAS/Lh32jccTjMkpx7sTdUVVHAy5Bf0TIer5QFNYXotiX74oCvoVYjyxUKDK3MXHtMFzMyD3kE+jg==} + /typechain@8.3.1(typescript@4.7.2): + resolution: {integrity: sha512-fA7clol2IP/56yq6vkMTR+4URF1nGjV82Wx6Rf09EsqD4tkzMAvEaqYxVFCavJm/1xaRga/oD55K+4FtuXwQOQ==} hasBin: true peerDependencies: typescript: '>=4.3.0' @@ -20470,7 +20549,6 @@ packages: longbits: 1.1.0 uint8arraylist: 2.4.3 uint8arrays: 4.0.3 - dev: false /uint8-varint@2.0.1: resolution: {integrity: sha512-euvmpuulJstK5+xNuI4S1KfnxJnbI5QP52RXIR3GZ3/ZMkOsEK2AgCtFpNvEQLXMxMx2o0qcyevK1fJwOZJagQ==} @@ -20532,6 +20610,13 @@ packages: dependencies: busboy: 1.6.0 + /undici@5.23.0: + resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} + engines: {node: '>=14.0'} + dependencies: + busboy: 1.6.0 + dev: true + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} @@ -20662,7 +20747,7 @@ packages: engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.6.0 + node-gyp-build: 4.6.1 dev: true /utf8-byte-length@1.0.4: @@ -21020,14 +21105,6 @@ packages: defaults: 1.0.4 dev: true - /web-encoding@1.1.5: - resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} - dependencies: - util: 0.12.5 - optionalDependencies: - '@zxing/text-encoding': 0.9.0 - dev: true - /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} @@ -21166,7 +21243,7 @@ packages: dependencies: '@types/bn.js': 5.1.1 '@types/node': 12.20.55 - bignumber.js: 9.1.1 + bignumber.js: 9.1.2 web3-core-helpers: 1.10.0 web3-core-method: 1.10.0 web3-core-requestmanager: 1.10.0 @@ -21182,7 +21259,7 @@ packages: dependencies: '@types/bn.js': 5.1.1 '@types/node': 12.20.55 - bignumber.js: 9.1.1 + bignumber.js: 9.1.2 web3-core-helpers: 1.7.4 web3-core-method: 1.7.4 web3-core-requestmanager: 1.7.4 @@ -21425,7 +21502,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: abortcontroller-polyfill: 1.7.5 - cross-fetch: 3.1.6 + cross-fetch: 3.1.8 es6-promise: 4.2.8 web3-core-helpers: 1.10.0 transitivePeerDependencies: @@ -21518,6 +21595,20 @@ packages: utf8: 3.0.0 dev: true + /web3-utils@1.10.2: + resolution: {integrity: sha512-TdApdzdse5YR+5GCX/b/vQnhhbj1KSAtfrDtRW7YS0kcWp1gkJsN62gw6GzCaNTeXookB7UrLtmDUuMv65qgow==} + engines: {node: '>=8.0.0'} + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.1 + ethereum-bloom-filters: 1.0.10 + ethereum-cryptography: 2.1.2 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + dev: true + /web3-utils@1.7.4: resolution: {integrity: sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==} engines: {node: '>=8.0.0'} @@ -21802,7 +21893,6 @@ packages: engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: is-electron: 2.2.2 - dev: false /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -21872,9 +21962,10 @@ packages: string-width: 4.2.3 dev: true - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + dev: true /wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} @@ -22158,7 +22249,6 @@ packages: optional: true utf-8-validate: optional: true - dev: false /xhr-request-promise@0.1.3: resolution: {integrity: sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==} @@ -22208,7 +22298,6 @@ packages: dependencies: sax: 1.2.4 xmlbuilder: 11.0.1 - dev: false /xml2js@0.6.0: resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} @@ -22216,12 +22305,10 @@ packages: dependencies: sax: 1.2.4 xmlbuilder: 11.0.1 - dev: false /xmlbuilder@11.0.1: resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} engines: {node: '>=4.0'} - dev: false /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} From 8bd38de724c134da9cbea2e399da2d3387ca23aa Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Wed, 30 Aug 2023 21:52:28 +0700 Subject: [PATCH 02/18] Fix build --- packages/@tests/aqua/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/@tests/aqua/package.json b/packages/@tests/aqua/package.json index d0ce73891..173949826 100644 --- a/packages/@tests/aqua/package.json +++ b/packages/@tests/aqua/package.json @@ -2,15 +2,15 @@ "name": "@test/aqua_for_test", "version": "0.1.0", "description": "Shared aqua code for tests", - "exports": { - ".": "./src/index.ts" - }, + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", "engines": { "node": ">=10", "pnpm": ">=3" }, "type": "module", "scripts": { + "build": "tsc", "compile-aqua": "fluence aqua -i ./_aqua -o ./src/_aqua" }, "repository": "https://github.com/fluencelabs/fluence-js", From 5438e16920259ad319a2b20b4efbb47b349882a3 Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Wed, 30 Aug 2023 22:16:21 +0700 Subject: [PATCH 03/18] Fix tests --- packages/core/js-client/src/jsPeer/FluencePeer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/js-client/src/jsPeer/FluencePeer.ts b/packages/core/js-client/src/jsPeer/FluencePeer.ts index 15ccbb6ef..01d28345c 100644 --- a/packages/core/js-client/src/jsPeer/FluencePeer.ts +++ b/packages/core/js-client/src/jsPeer/FluencePeer.ts @@ -263,7 +263,7 @@ export abstract class FluencePeer { private _incomingParticles = new Subject(); private _outgoingConnections = new Subject>(); - private _outgoingConnectionsFinished = lastValueFrom(this._outgoingConnections.pipe(mergeAll())); + private _outgoingConnectionsFinished = lastValueFrom(this._outgoingConnections.pipe(mergeAll()), { defaultValue: undefined }); private _timeouts: Array = []; private _particleSourceSubscription?: Unsubscribable; private _particleQueues = new Map>(); From fe6f67eb30c99529f18910e92ad10e7146ea7b24 Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Wed, 30 Aug 2023 22:46:39 +0700 Subject: [PATCH 04/18] Fix stop order --- packages/core/js-client/src/clientPeer/ClientPeer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/js-client/src/clientPeer/ClientPeer.ts b/packages/core/js-client/src/clientPeer/ClientPeer.ts index 878dab52f..25208da57 100644 --- a/packages/core/js-client/src/clientPeer/ClientPeer.ts +++ b/packages/core/js-client/src/clientPeer/ClientPeer.ts @@ -124,8 +124,8 @@ export class ClientPeer extends FluencePeer implements IFluenceClient { async stop(): Promise { log.trace('disconnecting from Fluence network'); this.changeConnectionState('disconnecting'); - await this.relayConnection.stop(); await super.stop(); + await this.relayConnection.stop(); this.changeConnectionState('disconnected'); log.trace('disconnected'); } From 5a33d1362a99051a6884f35846ef3a9c4e3b7a5d Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Sat, 2 Sep 2023 05:53:36 +0700 Subject: [PATCH 05/18] FluencePeer refactoring --- .../core/js-client/src/jsPeer/FluencePeer.ts | 409 +++++++++--------- 1 file changed, 203 insertions(+), 206 deletions(-) diff --git a/packages/core/js-client/src/jsPeer/FluencePeer.ts b/packages/core/js-client/src/jsPeer/FluencePeer.ts index 01d28345c..d9cb8050c 100644 --- a/packages/core/js-client/src/jsPeer/FluencePeer.ts +++ b/packages/core/js-client/src/jsPeer/FluencePeer.ts @@ -32,7 +32,10 @@ import { concatMap, filter, from, - lastValueFrom, mergeAll, + groupBy, + lastValueFrom, + mergeAll, + mergeMap, Observable, pipe, Subject, @@ -138,6 +141,12 @@ export abstract class FluencePeer { log_peer.trace('all outgoing connections finished'); this._particleSourceSubscription?.unsubscribe(); + + log_peer.trace('Waiting all particles finish execution'); + this._incomingParticles.complete(); + await this._incomingParticlePromise; + log_peer.trace('All particles finished execution'); + this._stopParticleProcessing(); await this.marineHost.stop(); @@ -266,7 +275,7 @@ export abstract class FluencePeer { private _outgoingConnectionsFinished = lastValueFrom(this._outgoingConnections.pipe(mergeAll()), { defaultValue: undefined }); private _timeouts: Array = []; private _particleSourceSubscription?: Unsubscribable; - private _particleQueues = new Map>(); + private _incomingParticlePromise?: Promise; // Internal peer state @@ -305,7 +314,7 @@ export abstract class FluencePeer { }, }); - this._incomingParticles + this._incomingParticlePromise = lastValueFrom(this._incomingParticles .pipe( tap((item) => { log_particle.debug('id %s. received:', item.particle.id); @@ -320,24 +329,195 @@ export abstract class FluencePeer { log_particle.trace('id %s. call results: %j', item.particle.id, item.callResults); }), filterExpiredParticles(this._expireParticle.bind(this)), - ) - .subscribe((item) => { - const p = item.particle; - let particlesQueue = this._particleQueues.get(p.id); - - if (!particlesQueue) { - particlesQueue = this._createParticlesProcessingQueue(); - this._particleQueues.set(p.id, particlesQueue); - - const timeout = setTimeout(() => { - this._expireParticle(item); - }, getActualTTL(p)); + groupBy(item => item.particle.id), + mergeMap(group$ => { + let prevData: Uint8Array = Buffer.from([]); + let firstRun = true; + + return group$.pipe( + filterExpiredParticles(this._expireParticle.bind(this)), + concatMap(async (item) => { + if (firstRun) { + const timeout = setTimeout(() => { + this._expireParticle(item); + }, getActualTTL(item.particle)); + + this._timeouts.push(timeout); + firstRun = false; + } + + if (!this.isInitialized || this.marineHost === undefined) { + // If `.stop()` was called return null to stop particle processing immediately + return null; + } + + // IMPORTANT! + // AVM runner execution and prevData <-> newData swapping + // MUST happen sequentially (in a critical section). + // Otherwise the race might occur corrupting the prevData + + log_particle.debug('id %s. sending particle to interpreter', item.particle.id); + log_particle.trace('id %s. prevData: %s', item.particle.id, this.decodeAvmData(prevData)); + + const args = serializeAvmArgs( + { + initPeerId: item.particle.initPeerId, + currentPeerId: this.keyPair.getPeerId(), + timestamp: item.particle.timestamp, + ttl: item.particle.ttl, + keyFormat: KeyPairFormat.Ed25519, + particleId: item.particle.id, + secretKeyBytes: this.keyPair.toEd25519PrivateKey(), + }, + item.particle.script, + prevData, + item.particle.data, + item.callResults, + ); + + let avmCallResult: InterpreterResult | Error; + try { + const res = await this.marineHost.callService('avm', 'invoke', args, defaultCallParameters); + avmCallResult = deserializeAvmResult(res); + } catch (e) { + avmCallResult = e instanceof Error ? e : new Error(String(e)); + } + + if (!(avmCallResult instanceof Error) && avmCallResult.retCode === 0) { + const newData = Buffer.from(avmCallResult.data); + prevData = newData; + } + + return { + ...item, + result: avmCallResult, + }; + }), + filter((item): item is NonNullable => item !== null), + filterExpiredParticles(this._expireParticle.bind(this)), + concatMap(async (item) => { + // If peer was stopped, do not proceed further + if (item === null || !this.isInitialized) { + return; + } + + // Do not proceed further if the particle is expired + if (hasExpired(item.particle)) { + return; + } + + // Do not continue if there was an error in particle interpretation + if (item.result instanceof Error) { + log_particle.error('id %s. interpreter failed: %s', item.particle.id, item.result.message); + item.onStageChange({ stage: 'interpreterError', errorMessage: item.result.message }); + return; + } + + if (item.result.retCode !== 0) { + log_particle.error( + 'id %s. interpreter failed: retCode: %d, message: %s', + item.particle.id, + item.result.retCode, + item.result.errorMessage, + ); + log_particle.trace('id %s. avm data: %s', item.particle.id, this.decodeAvmData(item.result.data)); + item.onStageChange({ stage: 'interpreterError', errorMessage: item.result.errorMessage }); + return; + } + + log_particle.trace( + 'id %s. interpreter result: retCode: %d, avm data: %s', + item.particle.id, + item.result.retCode, + this.decodeAvmData(item.result.data) + ); + + setTimeout(() => { + item.onStageChange({ stage: 'interpreted' }); + }, 0); + + // send particle further if requested + if (item.result.nextPeerPks.length > 0) { + const newParticle = cloneWithNewData(item.particle, Buffer.from(item.result.data)); + + // Do not send particle after the peer has been stopped + if (!this.isInitialized) { + return; + } - this._timeouts.push(timeout); - } + log_particle.debug( + 'id %s. sending particle into network. Next peer ids: %s', + newParticle.id, + item.result.nextPeerPks.toString(), + ); + + const connectionPromise = this.connection + ?.sendParticle(item.result.nextPeerPks, newParticle) + .then(() => { + log_particle.trace('id %s. send successful', newParticle.id); + item.onStageChange({ stage: 'sent' }); + }) + .catch((e: any) => { + log_particle.error('id %s. send failed %j', newParticle.id, e); + item.onStageChange({ stage: 'sendingError', errorMessage: e.toString() }); + }); + + this._outgoingConnections.next(from(connectionPromise)); + } + + // execute call requests if needed + // and put particle with the results back to queue + if (item.result.callRequests.length > 0) { + for (const [key, cr] of item.result.callRequests) { + const req = { + fnName: cr.functionName, + args: cr.arguments, + serviceId: cr.serviceId, + tetraplets: cr.tetraplets, + particleContext: getParticleContext(item.particle), + }; - particlesQueue.next(item); - }); + if (hasExpired(item.particle)) { + // just in case do not call any services if the particle is already expired + return; + } + this._execSingleCallRequest(req) + .catch((err): CallServiceResult => { + if (err instanceof ServiceError) { + return { + retCode: ResultCodes.error, + result: err.message, + }; + } + + return { + retCode: ResultCodes.error, + result: `Service call failed. fnName="${req.fnName}" serviceId="${ + req.serviceId + }" error: ${err.toString()}`, + }; + }) + .then((res) => { + const serviceResult = { + result: jsonify(res.result), + retCode: res.retCode, + }; + + const newParticle = cloneWithNewData(item.particle, Buffer.from([])); + this._incomingParticles.next({ + ...item, + particle: newParticle, + callResults: [[key, serviceResult]], + }); + }); + } + } else { + item.onStageChange({ stage: 'localWorkDone' }); + } + }) + ) + }) + ), { defaultValue: undefined }); } private _expireParticle(item: ParticleQueueItem) { @@ -347,8 +527,7 @@ export abstract class FluencePeer { item.particle.id, item.particle.ttl, ); - - this._particleQueues.delete(particleId); + this.jsServiceHost.removeParticleScopeHandlers(particleId); item.onStageChange({ stage: 'expired' }); @@ -358,187 +537,6 @@ export abstract class FluencePeer { return new TextDecoder().decode(data.buffer); } - private _createParticlesProcessingQueue() { - const particlesQueue = new Subject(); - let prevData: Uint8Array = Buffer.from([]); - - particlesQueue - .pipe( - filterExpiredParticles(this._expireParticle.bind(this)), - - concatMap(async (item) => { - if (!this.isInitialized || this.marineHost === undefined) { - // If `.stop()` was called return null to stop particle processing immediately - return null; - } - - // IMPORTANT! - // AVM runner execution and prevData <-> newData swapping - // MUST happen sequentially (in a critical section). - // Otherwise the race might occur corrupting the prevData - - log_particle.debug('id %s. sending particle to interpreter', item.particle.id); - log_particle.trace('id %s. prevData: %s', item.particle.id, this.decodeAvmData(prevData)); - - const args = serializeAvmArgs( - { - initPeerId: item.particle.initPeerId, - currentPeerId: this.keyPair.getPeerId(), - timestamp: item.particle.timestamp, - ttl: item.particle.ttl, - keyFormat: KeyPairFormat.Ed25519, - particleId: item.particle.id, - secretKeyBytes: this.keyPair.toEd25519PrivateKey(), - }, - item.particle.script, - prevData, - item.particle.data, - item.callResults, - ); - - let avmCallResult: InterpreterResult | Error; - try { - const res = await this.marineHost.callService('avm', 'invoke', args, defaultCallParameters); - avmCallResult = deserializeAvmResult(res); - } catch (e) { - avmCallResult = e instanceof Error ? e : new Error(String(e)); - } - - if (!(avmCallResult instanceof Error) && avmCallResult.retCode === 0) { - const newData = Buffer.from(avmCallResult.data); - prevData = newData; - } - - return { - ...item, - result: avmCallResult, - }; - }), - ) - .subscribe((item) => { - // If peer was stopped, do not proceed further - if (item === null || !this.isInitialized) { - return; - } - - // Do not proceed further if the particle is expired - if (hasExpired(item.particle)) { - return; - } - - // Do not continue if there was an error in particle interpretation - if (item.result instanceof Error) { - log_particle.error('id %s. interpreter failed: %s', item.particle.id, item.result.message); - item.onStageChange({ stage: 'interpreterError', errorMessage: item.result.message }); - return; - } - - if (item.result.retCode !== 0) { - log_particle.error( - 'id %s. interpreter failed: retCode: %d, message: %s', - item.particle.id, - item.result.retCode, - item.result.errorMessage, - ); - log_particle.trace('id %s. avm data: %s', item.particle.id, this.decodeAvmData(item.result.data)); - item.onStageChange({ stage: 'interpreterError', errorMessage: item.result.errorMessage }); - return; - } - - log_particle.trace( - 'id %s. interpreter result: retCode: %d, avm data: %s', - item.particle.id, - item.result.retCode, - this.decodeAvmData(item.result.data) - ); - - setTimeout(() => { - item.onStageChange({ stage: 'interpreted' }); - }, 0); - - // send particle further if requested - if (item.result.nextPeerPks.length > 0) { - const newParticle = cloneWithNewData(item.particle, Buffer.from(item.result.data)); - - // Do not send particle after the peer has been stopped - if (!this.isInitialized) { - return; - } - - log_particle.debug( - 'id %s. sending particle into network. Next peer ids: %s', - newParticle.id, - item.result.nextPeerPks.toString(), - ); - - const connectionPromise = this.connection - ?.sendParticle(item.result.nextPeerPks, newParticle) - .then(() => { - log_particle.trace('id %s. send successful', newParticle.id); - item.onStageChange({ stage: 'sent' }); - }) - .catch((e: any) => { - log_particle.error('id %s. send failed %j', newParticle.id, e); - item.onStageChange({ stage: 'sendingError', errorMessage: e.toString() }); - }); - - this._outgoingConnections.next(from(connectionPromise)); - } - - // execute call requests if needed - // and put particle with the results back to queue - if (item.result.callRequests.length > 0) { - for (const [key, cr] of item.result.callRequests) { - const req = { - fnName: cr.functionName, - args: cr.arguments, - serviceId: cr.serviceId, - tetraplets: cr.tetraplets, - particleContext: getParticleContext(item.particle), - }; - - if (hasExpired(item.particle)) { - // just in case do not call any services if the particle is already expired - return; - } - this._execSingleCallRequest(req) - .catch((err): CallServiceResult => { - if (err instanceof ServiceError) { - return { - retCode: ResultCodes.error, - result: err.message, - }; - } - - return { - retCode: ResultCodes.error, - result: `Service call failed. fnName="${req.fnName}" serviceId="${ - req.serviceId - }" error: ${err.toString()}`, - }; - }) - .then((res) => { - const serviceResult = { - result: jsonify(res.result), - retCode: res.retCode, - }; - - const newParticle = cloneWithNewData(item.particle, Buffer.from([])); - particlesQueue.next({ - ...item, - particle: newParticle, - callResults: [[key, serviceResult]], - }); - }); - } - } else { - item.onStageChange({ stage: 'localWorkDone' }); - } - }); - - return particlesQueue; - } - private async _execSingleCallRequest(req: CallServiceData): Promise { const particleId = req.particleContext.particleId; log_particle.trace('id %s. executing call service handler %j', particleId, req); @@ -573,17 +571,16 @@ export abstract class FluencePeer { this._timeouts.forEach((timeout) => { clearTimeout(timeout); }); - this._particleQueues.clear(); } } -function filterExpiredParticles(onParticleExpiration: (item: ParticleQueueItem) => void) { +function filterExpiredParticles(onParticleExpiration: (item: T) => void) { return pipe( - tap((item: ParticleQueueItem) => { + tap((item: T) => { if (hasExpired(item.particle)) { onParticleExpiration(item); } }), - filter((x: ParticleQueueItem) => !hasExpired(x.particle)), + filter((x) => !hasExpired(x.particle)), ); } From 967724a8b38cf6b6c034bd57f0ce98bd9174eda0 Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Sat, 2 Sep 2023 05:57:12 +0700 Subject: [PATCH 06/18] mplex to yamux --- packages/core/js-client/package.json | 2 +- .../src/connection/RelayConnection.ts | 12 ++++--- pnpm-lock.yaml | 34 ++++++++++++++++--- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/packages/core/js-client/package.json b/packages/core/js-client/package.json index 4b43411d3..c4d1c8b4b 100644 --- a/packages/core/js-client/package.json +++ b/packages/core/js-client/package.json @@ -27,10 +27,10 @@ "license": "Apache-2.0", "dependencies": { "@chainsafe/libp2p-noise": "13.0.0", + "@chainsafe/libp2p-yamux": "5.0.0", "@fluencelabs/interfaces": "0.8.2", "@libp2p/crypto": "2.0.3", "@libp2p/interface": "0.1.2", - "@libp2p/mplex": "9.0.4", "@libp2p/peer-id": "3.0.2", "@libp2p/peer-id-factory": "3.0.3", "@libp2p/websockets": "7.0.4", diff --git a/packages/core/js-client/src/connection/RelayConnection.ts b/packages/core/js-client/src/connection/RelayConnection.ts index 68bc42dcb..143ccc7bc 100644 --- a/packages/core/js-client/src/connection/RelayConnection.ts +++ b/packages/core/js-client/src/connection/RelayConnection.ts @@ -20,7 +20,7 @@ import type { PeerId } from '@libp2p/interface/peer-id'; import { createLibp2p, Libp2p } from 'libp2p'; import { noise } from '@chainsafe/libp2p-noise'; -import { mplex } from '@libp2p/mplex'; +import { yamux } from '@chainsafe/libp2p-yamux'; import { webSockets } from '@libp2p/websockets'; import { all } from '@libp2p/websockets/filters'; import { multiaddr } from '@multiformats/multiaddr'; @@ -37,6 +37,7 @@ import { IConnection } from './interfaces.js'; import { IParticle } from '../particle/interfaces.js'; import { Particle, serializeToString } from '../particle/Particle.js'; import { IStartable } from '../util/commonTypes.js'; +import debug from 'debug'; const log = logger('connection'); @@ -110,7 +111,7 @@ export class RelayConnection implements IStartable, IConnection { filter: all, }), ], - streamMuxers: [mplex()], + streamMuxers: [yamux()], connectionEncryption: [noise()], connectionManager: { dialTimeout: this.config.dialTimeoutMs, @@ -158,15 +159,17 @@ export class RelayConnection implements IStartable, IConnection { const sink = this._connection.streams[0].sink; */ + log.trace('sending particle...'); const stream = await this.lib2p2Peer.dialProtocol(this.relayAddress, PROTOCOL_NAME); + log.trace('created stream with id ', stream.id); const sink = stream.sink; - return pipe( + await pipe( [fromString(serializeToString(particle))], - // @ts-ignore encode(), sink, ); + log.trace('data written to sink'); } private async connect() { @@ -188,6 +191,7 @@ export class RelayConnection implements IStartable, IConnection { for await (const msg of source) { try { const particle = Particle.fromString(msg); + log.trace('got particle from stream with id %s and particle id %s', stream.id, particle.id); this.particleSource.next(particle); } catch (e) { log.error('error on handling a new incoming message: %j', e); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e734a76d9..039718397 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -171,6 +171,9 @@ importers: '@chainsafe/libp2p-noise': specifier: 13.0.0 version: 13.0.0 + '@chainsafe/libp2p-yamux': + specifier: 5.0.0 + version: 5.0.0 '@fluencelabs/interfaces': specifier: 0.8.2 version: link:../interfaces @@ -180,9 +183,6 @@ importers: '@libp2p/interface': specifier: 0.1.2 version: 0.1.2 - '@libp2p/mplex': - specifier: 9.0.4 - version: 9.0.4 '@libp2p/peer-id': specifier: 3.0.2 version: 3.0.2 @@ -3062,6 +3062,21 @@ packages: - supports-color dev: true + /@chainsafe/libp2p-yamux@5.0.0: + resolution: {integrity: sha512-aWTnBPR2hJt0A2y579sMtZVB6IqgSSHlZ6Eg+WDxNZQ0zcexafuruZQDj+z3FUTNPz+E8IeuyCi7tjI4IEehjw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@libp2p/interface': 0.1.2 + '@libp2p/logger': 3.0.2 + abortable-iterator: 5.0.1 + it-foreach: 2.0.4 + it-pipe: 3.0.1 + it-pushable: 3.2.1 + uint8arraylist: 2.4.3 + transitivePeerDependencies: + - supports-color + dev: false + /@chainsafe/netmask@2.0.0: resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==} dependencies: @@ -4695,6 +4710,7 @@ packages: uint8arrays: 4.0.6 transitivePeerDependencies: - supports-color + dev: true /@libp2p/multistream-select@4.0.2: resolution: {integrity: sha512-Ss3kPD+1Z8RFLUT+oN9I2ynEtp/Yj2+rOngU1XjIxustg1nt5lq0kk9hvWJyBexzmuML0xCknNjUXovpRbFPgQ==} @@ -8196,6 +8212,7 @@ packages: dependencies: lodash: 4.17.21 platform: 1.3.6 + dev: true /bfj@7.0.2: resolution: {integrity: sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==} @@ -13490,6 +13507,7 @@ packages: dependencies: p-defer: 4.0.0 uint8arraylist: 2.4.3 + dev: true /it-buffer@0.1.3: resolution: {integrity: sha512-9a2/9SYVwG7bcn3tpRDR4bXbtuMLXnDK48KVC+GXiQg97ZOOdWz2nIITBsOQ19b+gj01Rw8RNwtiLDLI8P8oiQ==} @@ -13544,6 +13562,12 @@ packages: resolution: {integrity: sha512-ZLxL651N5w5SL/EIIcrXELgYrrkuEKj/TErG93C4lr6lNZziKsf338ljSG85PjQfu7Frg/1wESl5pLrPSFXI9g==} dev: true + /it-foreach@2.0.4: + resolution: {integrity: sha512-txxcoc09g+KdLyOapxAuB12H9zUb2FuZC/TqSXRT+YR0T5fHnvcDIhspgvx/e/HiPKlKjOR8onA0qtuiAtcXqg==} + dependencies: + it-peekable: 3.0.2 + dev: false + /it-glob@0.0.14: resolution: {integrity: sha512-TKKzs9CglbsihSpcwJPXN5DBUssu4akRzPlp8QJRCoLrKoaOpyY2V1qDlxx+UMivn0i114YyTd4AawWl7eqIdw==} dependencies: @@ -16881,6 +16905,7 @@ packages: /platform@1.3.6: resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + dev: true /portfinder@1.0.32: resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} @@ -18048,6 +18073,7 @@ packages: /rate-limiter-flexible@2.4.2: resolution: {integrity: sha512-rMATGGOdO1suFyf/mI5LYhts71g1sbdhmd6YvdiXO2gJnd42Tt6QS4JUKJKSWVVkMtBacm6l40FR7Trjo6Iruw==} + dev: true /raw-body@2.5.1: resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} @@ -20560,7 +20586,7 @@ packages: resolution: {integrity: sha512-oEVZr4/GrH87K0kjNce6z8pSCzLEPqHNLNR5sj8cJOySrTP8Vb/pMIbZKLJGhQKxm1TiZ31atNrpn820Pyqpow==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - uint8arrays: 4.0.6 + uint8arrays: 4.0.3 /uint8arrays@2.1.10: resolution: {integrity: sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A==} From 04f8372d3aa6696402baa4bd05c2a929fdbd34a1 Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Sat, 2 Sep 2023 06:24:30 +0700 Subject: [PATCH 07/18] Small fixes --- .../core/js-client/src/connection/RelayConnection.ts | 4 ++-- packages/core/js-client/src/jsPeer/FluencePeer.ts | 9 +-------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/packages/core/js-client/src/connection/RelayConnection.ts b/packages/core/js-client/src/connection/RelayConnection.ts index 143ccc7bc..bec669e6a 100644 --- a/packages/core/js-client/src/connection/RelayConnection.ts +++ b/packages/core/js-client/src/connection/RelayConnection.ts @@ -37,7 +37,7 @@ import { IConnection } from './interfaces.js'; import { IParticle } from '../particle/interfaces.js'; import { Particle, serializeToString } from '../particle/Particle.js'; import { IStartable } from '../util/commonTypes.js'; -import debug from 'debug'; +import { Connection } from '@libp2p/interface/connection'; const log = logger('connection'); @@ -177,7 +177,7 @@ export class RelayConnection implements IStartable, IConnection { throw new Error('Relay connection is not started'); } - this.lib2p2Peer.handle( + await this.lib2p2Peer.handle( [PROTOCOL_NAME], async ({ connection, stream }) => { pipe( diff --git a/packages/core/js-client/src/jsPeer/FluencePeer.ts b/packages/core/js-client/src/jsPeer/FluencePeer.ts index d9cb8050c..77439dc30 100644 --- a/packages/core/js-client/src/jsPeer/FluencePeer.ts +++ b/packages/core/js-client/src/jsPeer/FluencePeer.ts @@ -136,9 +136,6 @@ export abstract class FluencePeer { */ async stop() { log_peer.trace('stopping Fluence peer'); - this._outgoingConnections.complete(); - await this._outgoingConnectionsFinished; - log_peer.trace('all outgoing connections finished'); this._particleSourceSubscription?.unsubscribe(); @@ -271,8 +268,6 @@ export abstract class FluencePeer { // Queues for incoming and outgoing particles private _incomingParticles = new Subject(); - private _outgoingConnections = new Subject>(); - private _outgoingConnectionsFinished = lastValueFrom(this._outgoingConnections.pipe(mergeAll()), { defaultValue: undefined }); private _timeouts: Array = []; private _particleSourceSubscription?: Unsubscribable; private _incomingParticlePromise?: Promise; @@ -451,7 +446,7 @@ export abstract class FluencePeer { item.result.nextPeerPks.toString(), ); - const connectionPromise = this.connection + await this.connection ?.sendParticle(item.result.nextPeerPks, newParticle) .then(() => { log_particle.trace('id %s. send successful', newParticle.id); @@ -461,8 +456,6 @@ export abstract class FluencePeer { log_particle.error('id %s. send failed %j', newParticle.id, e); item.onStageChange({ stage: 'sendingError', errorMessage: e.toString() }); }); - - this._outgoingConnections.next(from(connectionPromise)); } // execute call requests if needed From eaddbf0efccd759fc22a76481e1167460164f63e Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Mon, 4 Sep 2023 18:22:00 +0700 Subject: [PATCH 08/18] Refactor connections --- .../core/js-client/src/clientPeer/ClientPeer.ts | 13 ++----------- .../js-client/src/connection/RelayConnection.ts | 2 +- .../core/js-client/src/connection/interfaces.ts | 3 ++- packages/core/js-client/src/ephemeral/network.ts | 10 +++++++++- packages/core/js-client/src/jsPeer/FluencePeer.ts | 3 ++- packages/core/js-client/src/util/testUtils.ts | 8 ++++++++ 6 files changed, 24 insertions(+), 15 deletions(-) diff --git a/packages/core/js-client/src/clientPeer/ClientPeer.ts b/packages/core/js-client/src/clientPeer/ClientPeer.ts index 25208da57..b93da9bf5 100644 --- a/packages/core/js-client/src/clientPeer/ClientPeer.ts +++ b/packages/core/js-client/src/clientPeer/ClientPeer.ts @@ -55,20 +55,13 @@ export const makeClientPeerConfig = async ( }; export class ClientPeer extends FluencePeer implements IFluenceClient { - private relayPeerId: PeerIdB58; - private relayConnection: RelayConnection; - constructor( peerConfig: PeerConfig, relayConfig: RelayConnectionConfig, keyPair: KeyPair, marine: IMarineHost, ) { - const relayConnection = new RelayConnection(relayConfig); - - super(peerConfig, keyPair, marine, new JsServiceHost(), relayConnection); - this.relayPeerId = relayConnection.getRelayPeerId(); - this.relayConnection = relayConnection; + super(peerConfig, keyPair, marine, new JsServiceHost(), new RelayConnection(relayConfig)); } getPeerId(): string { @@ -83,7 +76,7 @@ export class ClientPeer extends FluencePeer implements IFluenceClient { connectionStateChangeHandler: (state: ConnectionState) => void = () => {}; getRelayPeerId(): string { - return this.relayPeerId; + return this.internals.getRelayPeerId(); } onConnectionStateChange(handler: (state: ConnectionState) => void): ConnectionState { @@ -115,7 +108,6 @@ export class ClientPeer extends FluencePeer implements IFluenceClient { log.trace('connecting to Fluence network'); this.changeConnectionState('connecting'); await super.start(); - await this.relayConnection.start(); // TODO: check connection (`checkConnection` function) here this.changeConnectionState('connected'); log.trace('connected'); @@ -125,7 +117,6 @@ export class ClientPeer extends FluencePeer implements IFluenceClient { log.trace('disconnecting from Fluence network'); this.changeConnectionState('disconnecting'); await super.stop(); - await this.relayConnection.stop(); this.changeConnectionState('disconnected'); log.trace('disconnected'); } diff --git a/packages/core/js-client/src/connection/RelayConnection.ts b/packages/core/js-client/src/connection/RelayConnection.ts index bec669e6a..8b16baa1c 100644 --- a/packages/core/js-client/src/connection/RelayConnection.ts +++ b/packages/core/js-client/src/connection/RelayConnection.ts @@ -78,7 +78,7 @@ export interface RelayConnectionConfig { /** * Implementation for JS peers which connects to Fluence through relay node */ -export class RelayConnection implements IStartable, IConnection { +export class RelayConnection implements IConnection { private relayAddress: Multiaddr; private lib2p2Peer: Libp2p | null = null; diff --git a/packages/core/js-client/src/connection/interfaces.ts b/packages/core/js-client/src/connection/interfaces.ts index 83282fe65..b285cdfb9 100644 --- a/packages/core/js-client/src/connection/interfaces.ts +++ b/packages/core/js-client/src/connection/interfaces.ts @@ -16,11 +16,12 @@ import type { PeerIdB58 } from '@fluencelabs/interfaces'; import type { Subscribable } from 'rxjs'; import { IParticle } from '../particle/interfaces.js'; +import { IStartable } from '../util/commonTypes.js'; /** * Interface for connection used in Fluence Peer. */ -export interface IConnection { +export interface IConnection extends IStartable { /** * Observable that emits particles received from the connection. */ diff --git a/packages/core/js-client/src/ephemeral/network.ts b/packages/core/js-client/src/ephemeral/network.ts index 521d18e41..b953adcb4 100644 --- a/packages/core/js-client/src/ephemeral/network.ts +++ b/packages/core/js-client/src/ephemeral/network.ts @@ -129,13 +129,21 @@ export interface IEphemeralConnection extends IConnection { receiveParticle(particle: Particle): void; } -export class EphemeralConnection implements IConnection, IEphemeralConnection { +export class EphemeralConnection implements IEphemeralConnection { readonly selfPeerId: PeerIdB58; readonly connections: Map = new Map(); constructor(selfPeerId: PeerIdB58) { this.selfPeerId = selfPeerId; } + + start(): Promise { + return Promise.resolve(); + } + + stop(): Promise { + return Promise.resolve(); + } connectToOther(other: IEphemeralConnection) { if (other.selfPeerId === this.selfPeerId) { diff --git a/packages/core/js-client/src/jsPeer/FluencePeer.ts b/packages/core/js-client/src/jsPeer/FluencePeer.ts index 77439dc30..256a864d6 100644 --- a/packages/core/js-client/src/jsPeer/FluencePeer.ts +++ b/packages/core/js-client/src/jsPeer/FluencePeer.ts @@ -127,6 +127,7 @@ export abstract class FluencePeer { this._startParticleProcessing(); this.isInitialized = true; + await this.connection.start(); log_peer.trace('started Fluence peer'); } @@ -146,7 +147,7 @@ export abstract class FluencePeer { this._stopParticleProcessing(); await this.marineHost.stop(); - + await this.connection.stop(); this.isInitialized = false; log_peer.trace('stopped Fluence peer'); } diff --git a/packages/core/js-client/src/util/testUtils.ts b/packages/core/js-client/src/util/testUtils.ts index d3e057c15..4b3a9c8ce 100644 --- a/packages/core/js-client/src/util/testUtils.ts +++ b/packages/core/js-client/src/util/testUtils.ts @@ -80,6 +80,14 @@ export const compileAqua = async (aquaFile: string): Promise => { }; class NoopConnection implements IConnection { + start(): Promise { + return Promise.resolve(); + } + + stop(): Promise { + return Promise.resolve(); + } + getRelayPeerId(): string { return 'nothing_here'; } From d2d262197dc31eaf2890b4e203169b62c5f0c752 Mon Sep 17 00:00:00 2001 From: Akim <59872966+akim-bow@users.noreply.github.com> Date: Tue, 5 Sep 2023 07:50:30 +0700 Subject: [PATCH 09/18] Update packages/core/js-client/src/jsPeer/FluencePeer.ts Co-authored-by: shamsartem --- packages/core/js-client/src/jsPeer/FluencePeer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/js-client/src/jsPeer/FluencePeer.ts b/packages/core/js-client/src/jsPeer/FluencePeer.ts index 256a864d6..a2bf32d7b 100644 --- a/packages/core/js-client/src/jsPeer/FluencePeer.ts +++ b/packages/core/js-client/src/jsPeer/FluencePeer.ts @@ -140,7 +140,7 @@ export abstract class FluencePeer { this._particleSourceSubscription?.unsubscribe(); - log_peer.trace('Waiting all particles finish execution'); + log_peer.trace('Waiting for all particles to finish execution'); this._incomingParticles.complete(); await this._incomingParticlePromise; log_peer.trace('All particles finished execution'); From e7fabb990a93a13b12169c65410135ff1a7e3913 Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Tue, 5 Sep 2023 07:54:57 +0700 Subject: [PATCH 10/18] Remove redundant checks --- packages/core/js-client/src/jsPeer/FluencePeer.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/packages/core/js-client/src/jsPeer/FluencePeer.ts b/packages/core/js-client/src/jsPeer/FluencePeer.ts index a2bf32d7b..1bb514bfd 100644 --- a/packages/core/js-client/src/jsPeer/FluencePeer.ts +++ b/packages/core/js-client/src/jsPeer/FluencePeer.ts @@ -331,7 +331,6 @@ export abstract class FluencePeer { let firstRun = true; return group$.pipe( - filterExpiredParticles(this._expireParticle.bind(this)), concatMap(async (item) => { if (firstRun) { const timeout = setTimeout(() => { @@ -393,12 +392,7 @@ export abstract class FluencePeer { filterExpiredParticles(this._expireParticle.bind(this)), concatMap(async (item) => { // If peer was stopped, do not proceed further - if (item === null || !this.isInitialized) { - return; - } - - // Do not proceed further if the particle is expired - if (hasExpired(item.particle)) { + if (!this.isInitialized) { return; } From dfad858fe713564d64fdf7cf04744f6eeefb0b6e Mon Sep 17 00:00:00 2001 From: Akim <59872966+akim-bow@users.noreply.github.com> Date: Tue, 5 Sep 2023 18:55:20 +0700 Subject: [PATCH 11/18] Update packages/core/js-client/src/jsPeer/FluencePeer.ts Co-authored-by: shamsartem --- packages/core/js-client/src/jsPeer/FluencePeer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/js-client/src/jsPeer/FluencePeer.ts b/packages/core/js-client/src/jsPeer/FluencePeer.ts index 1bb514bfd..0e21d5ac8 100644 --- a/packages/core/js-client/src/jsPeer/FluencePeer.ts +++ b/packages/core/js-client/src/jsPeer/FluencePeer.ts @@ -562,7 +562,7 @@ export abstract class FluencePeer { } } -function filterExpiredParticles(onParticleExpiration: (item: T) => void) { +function filterExpiredParticles(onParticleExpiration: (item: T) => void) { return pipe( tap((item: T) => { if (hasExpired(item.particle)) { From 78f798b30f20e06ce0bf32eba7447a02752c2a29 Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Wed, 6 Sep 2023 17:42:35 +0700 Subject: [PATCH 12/18] Suppress very long output of raw data --- packages/core/js-client/src/jsPeer/FluencePeer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/js-client/src/jsPeer/FluencePeer.ts b/packages/core/js-client/src/jsPeer/FluencePeer.ts index 0e21d5ac8..1e973d08a 100644 --- a/packages/core/js-client/src/jsPeer/FluencePeer.ts +++ b/packages/core/js-client/src/jsPeer/FluencePeer.ts @@ -352,7 +352,7 @@ export abstract class FluencePeer { // Otherwise the race might occur corrupting the prevData log_particle.debug('id %s. sending particle to interpreter', item.particle.id); - log_particle.trace('id %s. prevData: %s', item.particle.id, this.decodeAvmData(prevData)); + log_particle.trace('id %s. prevData: %s', item.particle.id, this.decodeAvmData(prevData).slice(0, 50)); const args = serializeAvmArgs( { From 07375efccce03f6b4452e8545ed246dcb2ef8366 Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Wed, 6 Sep 2023 18:36:43 +0700 Subject: [PATCH 13/18] Test for parallel execution --- .../src/jsPeer/__test__/flow.spec.ts | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 packages/core/js-client/src/jsPeer/__test__/flow.spec.ts diff --git a/packages/core/js-client/src/jsPeer/__test__/flow.spec.ts b/packages/core/js-client/src/jsPeer/__test__/flow.spec.ts new file mode 100644 index 000000000..8a14d3861 --- /dev/null +++ b/packages/core/js-client/src/jsPeer/__test__/flow.spec.ts @@ -0,0 +1,98 @@ +/* + * Copyright 2023 Fluence Labs Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { describe, expect, it } from 'vitest'; +import { registerHandlersHelper, withPeer } from '../../util/testUtils.js'; +import { handleTimeout } from '../../particle/Particle.js'; +import { CallServiceData, ResultCodes } from '../../jsServiceHost/interfaces.js'; + +describe('FluencePeer flow tests', () => { + // TODO: fix this test + it.skip('should not process concurrently single service in the same function', async function () { + await withPeer(async (peer) => { + const res = await new Promise((resolve, reject) => { + const script = ` + (par + (seq + (call %init_peer_id% ("flow" "timeout") [1000 "test1"] res1) + (call %init_peer_id% ("callback" "callback1") [res1]) + ) + (seq + (call %init_peer_id% ("flow" "timeout") [1000 "test2"] res2) + (call %init_peer_id% ("callback" "callback2") [res2]) + ) + ) + `; + + const particle = peer.internals.createNewParticle(script); + + let hasInnerCall = false; + + peer.internals.regHandler.forParticle(particle.id, 'flow', 'timeout', (req: CallServiceData) => { + const [timeout, message] = req.args; + + if (hasInnerCall) { + return { + result: "Single service processed concurrently", + retCode: ResultCodes.error, + }; + } + + hasInnerCall = true; + + return new Promise((resolve) => { + setTimeout(() => { + const res = { + result: message, + retCode: ResultCodes.success, + }; + hasInnerCall = false; + resolve(res); + }, timeout); + }); + }); + + if (particle instanceof Error) { + return reject(particle.message); + } + + const values: any[] = []; + + registerHandlersHelper(peer, particle, { + callback: { + callback1: (args: any) => { + const [val] = args; + values.push(val); + if (values.length === 2) { + resolve(values); + } + }, + callback2: (args: any) => { + const [val] = args; + values.push(val); + if (values.length === 2) { + resolve(values); + } + }, + }, + }); + + peer.internals.initiateParticle(particle, handleTimeout(reject)); + }); + + await expect(res).toEqual(expect.arrayContaining(["test1", "test1"])); + }); + }); +}); \ No newline at end of file From 68e50f0d40b94102ad541a886f0abe90dd3cd534 Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Fri, 8 Sep 2023 07:07:34 +0700 Subject: [PATCH 14/18] Fix test --- .../js-client/src/jsPeer/__test__/flow.spec.ts | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/packages/core/js-client/src/jsPeer/__test__/flow.spec.ts b/packages/core/js-client/src/jsPeer/__test__/flow.spec.ts index 8a14d3861..00b0a4f1f 100644 --- a/packages/core/js-client/src/jsPeer/__test__/flow.spec.ts +++ b/packages/core/js-client/src/jsPeer/__test__/flow.spec.ts @@ -19,8 +19,7 @@ import { handleTimeout } from '../../particle/Particle.js'; import { CallServiceData, ResultCodes } from '../../jsServiceHost/interfaces.js'; describe('FluencePeer flow tests', () => { - // TODO: fix this test - it.skip('should not process concurrently single service in the same function', async function () { + it('should execute par instruction in parallel', async function () { await withPeer(async (peer) => { const res = await new Promise((resolve, reject) => { const script = ` @@ -38,27 +37,15 @@ describe('FluencePeer flow tests', () => { const particle = peer.internals.createNewParticle(script); - let hasInnerCall = false; - peer.internals.regHandler.forParticle(particle.id, 'flow', 'timeout', (req: CallServiceData) => { const [timeout, message] = req.args; - if (hasInnerCall) { - return { - result: "Single service processed concurrently", - retCode: ResultCodes.error, - }; - } - - hasInnerCall = true; - return new Promise((resolve) => { setTimeout(() => { const res = { result: message, retCode: ResultCodes.success, }; - hasInnerCall = false; resolve(res); }, timeout); }); @@ -94,5 +81,5 @@ describe('FluencePeer flow tests', () => { await expect(res).toEqual(expect.arrayContaining(["test1", "test1"])); }); - }); + }, 1500); }); \ No newline at end of file From b799459d3bb64423412c3df06c036cce4edf1aa7 Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Fri, 8 Sep 2023 17:55:53 +0700 Subject: [PATCH 15/18] Misc optimization --- .../core/js-client/src/jsPeer/FluencePeer.ts | 17 +++++++++-------- .../__test__/{flow.spec.ts => par.spec.ts} | 0 2 files changed, 9 insertions(+), 8 deletions(-) rename packages/core/js-client/src/jsPeer/__test__/{flow.spec.ts => par.spec.ts} (100%) diff --git a/packages/core/js-client/src/jsPeer/FluencePeer.ts b/packages/core/js-client/src/jsPeer/FluencePeer.ts index 1e973d08a..70f1bebc3 100644 --- a/packages/core/js-client/src/jsPeer/FluencePeer.ts +++ b/packages/core/js-client/src/jsPeer/FluencePeer.ts @@ -390,7 +390,7 @@ export abstract class FluencePeer { }), filter((item): item is NonNullable => item !== null), filterExpiredParticles(this._expireParticle.bind(this)), - concatMap(async (item) => { + mergeMap(async (item) => { // If peer was stopped, do not proceed further if (!this.isInitialized) { return; @@ -425,6 +425,8 @@ export abstract class FluencePeer { setTimeout(() => { item.onStageChange({ stage: 'interpreted' }); }, 0); + + let connectionPromise: Promise = Promise.resolve(); // send particle further if requested if (item.result.nextPeerPks.length > 0) { @@ -441,7 +443,7 @@ export abstract class FluencePeer { item.result.nextPeerPks.toString(), ); - await this.connection + connectionPromise = this.connection ?.sendParticle(item.result.nextPeerPks, newParticle) .then(() => { log_particle.trace('id %s. send successful', newParticle.id); @@ -464,11 +466,7 @@ export abstract class FluencePeer { tetraplets: cr.tetraplets, particleContext: getParticleContext(item.particle), }; - - if (hasExpired(item.particle)) { - // just in case do not call any services if the particle is already expired - return; - } + this._execSingleCallRequest(req) .catch((err): CallServiceResult => { if (err instanceof ServiceError) { @@ -502,7 +500,10 @@ export abstract class FluencePeer { } else { item.onStageChange({ stage: 'localWorkDone' }); } - }) + + return connectionPromise; + }), + ) }) ), { defaultValue: undefined }); diff --git a/packages/core/js-client/src/jsPeer/__test__/flow.spec.ts b/packages/core/js-client/src/jsPeer/__test__/par.spec.ts similarity index 100% rename from packages/core/js-client/src/jsPeer/__test__/flow.spec.ts rename to packages/core/js-client/src/jsPeer/__test__/par.spec.ts From d33c5cf5674ac69b67d240ed5f36d68f313625b0 Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Wed, 13 Sep 2023 23:34:11 +0700 Subject: [PATCH 16/18] Add minRepr --- packages/core/js-client/src/minRepr.ts | 63 ++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 packages/core/js-client/src/minRepr.ts diff --git a/packages/core/js-client/src/minRepr.ts b/packages/core/js-client/src/minRepr.ts new file mode 100644 index 000000000..935c727fd --- /dev/null +++ b/packages/core/js-client/src/minRepr.ts @@ -0,0 +1,63 @@ +/* + * Copyright 2023 Fluence Labs Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createLibp2p } from 'libp2p'; +import { webSockets } from '@libp2p/websockets'; +import { all } from '@libp2p/websockets/filters'; +import { yamux } from '@chainsafe/libp2p-yamux'; +import { noise } from '@chainsafe/libp2p-noise'; +import { KeyPair } from './keypair/index.js'; +import { generateKeyPair } from '@libp2p/crypto/keys'; +import { createFromPrivKey } from '@libp2p/peer-id-factory'; +import { multiaddr } from '@multiformats/multiaddr'; +import { identifyService } from 'libp2p/identify'; +import { pingService } from 'libp2p/ping'; + +const key = await generateKeyPair('Ed25519'); +const lib2p2Pid = await createFromPrivKey(key); + +const connConfig = { + peerId: new KeyPair(key, lib2p2Pid).getLibp2pPeerId(), + relayAddress: multiaddr('/ip4/127.0.0.1/tcp/9991/ws/p2p/12D3KooWBM3SdXWqGaawQDGQ6JprtwswEg3FWGvGhmgmMez1vRbR'), + maxInboundStreams: 1024, + maxOutboundStreams: 1024, +}; + +const lib2p2Peer = await createLibp2p({ + peerId: connConfig.peerId, + transports: [ + webSockets({ + filter: (data) => { + data = data.filter(d => d.toString().includes('127.0.0.1')); + return all(data); + }, + }), + ], + streamMuxers: [yamux()], + connectionEncryption: [noise()], + connectionGater: { + // By default, this function forbids connections to private peers. For example multiaddr with ip 127.0.0.1 isn't allowed + denyDialMultiaddr: () => Promise.resolve(false) + }, + services: { + identify: identifyService(), + ping: pingService() + } +}); + +const connection = await lib2p2Peer.dial(connConfig.relayAddress); +const stream = await connection.newStream('/fluence/particle/2.0.0'); +console.log('stream opened'); \ No newline at end of file From 2f6982b678cc2daec1ef8fb0d3aed53a9acf5320 Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Thu, 14 Sep 2023 06:55:24 +0700 Subject: [PATCH 17/18] Fix reset error --- .../src/connection/RelayConnection.ts | 10 ++- packages/core/js-client/src/minRepr.ts | 63 ------------------- 2 files changed, 8 insertions(+), 65 deletions(-) delete mode 100644 packages/core/js-client/src/minRepr.ts diff --git a/packages/core/js-client/src/connection/RelayConnection.ts b/packages/core/js-client/src/connection/RelayConnection.ts index 8b16baa1c..bce9ca8cb 100644 --- a/packages/core/js-client/src/connection/RelayConnection.ts +++ b/packages/core/js-client/src/connection/RelayConnection.ts @@ -36,8 +36,8 @@ import { throwIfHasNoPeerId } from '../util/libp2pUtils.js'; import { IConnection } from './interfaces.js'; import { IParticle } from '../particle/interfaces.js'; import { Particle, serializeToString } from '../particle/Particle.js'; -import { IStartable } from '../util/commonTypes.js'; -import { Connection } from '@libp2p/interface/connection'; +import { identifyService } from 'libp2p/identify'; +import { pingService } from 'libp2p/ping'; const log = logger('connection'); @@ -119,6 +119,12 @@ export class RelayConnection implements IConnection { connectionGater: { // By default, this function forbids connections to private peers. For example multiaddr with ip 127.0.0.1 isn't allowed denyDialMultiaddr: () => Promise.resolve(false) + }, + services: { + identify: identifyService({ + runOnConnectionOpen: false, + }), + ping: pingService() } }); diff --git a/packages/core/js-client/src/minRepr.ts b/packages/core/js-client/src/minRepr.ts deleted file mode 100644 index 935c727fd..000000000 --- a/packages/core/js-client/src/minRepr.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2023 Fluence Labs Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { createLibp2p } from 'libp2p'; -import { webSockets } from '@libp2p/websockets'; -import { all } from '@libp2p/websockets/filters'; -import { yamux } from '@chainsafe/libp2p-yamux'; -import { noise } from '@chainsafe/libp2p-noise'; -import { KeyPair } from './keypair/index.js'; -import { generateKeyPair } from '@libp2p/crypto/keys'; -import { createFromPrivKey } from '@libp2p/peer-id-factory'; -import { multiaddr } from '@multiformats/multiaddr'; -import { identifyService } from 'libp2p/identify'; -import { pingService } from 'libp2p/ping'; - -const key = await generateKeyPair('Ed25519'); -const lib2p2Pid = await createFromPrivKey(key); - -const connConfig = { - peerId: new KeyPair(key, lib2p2Pid).getLibp2pPeerId(), - relayAddress: multiaddr('/ip4/127.0.0.1/tcp/9991/ws/p2p/12D3KooWBM3SdXWqGaawQDGQ6JprtwswEg3FWGvGhmgmMez1vRbR'), - maxInboundStreams: 1024, - maxOutboundStreams: 1024, -}; - -const lib2p2Peer = await createLibp2p({ - peerId: connConfig.peerId, - transports: [ - webSockets({ - filter: (data) => { - data = data.filter(d => d.toString().includes('127.0.0.1')); - return all(data); - }, - }), - ], - streamMuxers: [yamux()], - connectionEncryption: [noise()], - connectionGater: { - // By default, this function forbids connections to private peers. For example multiaddr with ip 127.0.0.1 isn't allowed - denyDialMultiaddr: () => Promise.resolve(false) - }, - services: { - identify: identifyService(), - ping: pingService() - } -}); - -const connection = await lib2p2Peer.dial(connConfig.relayAddress); -const stream = await connection.newStream('/fluence/particle/2.0.0'); -console.log('stream opened'); \ No newline at end of file From 6a5d7cf8f0718e09eae2074feb5dd13102d0dba0 Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Thu, 14 Sep 2023 07:04:31 +0700 Subject: [PATCH 18/18] Latest default nox image --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 942717340..5329c9f9a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -6,7 +6,7 @@ on: nox-image: description: "nox image tag" type: string - default: "fluencelabs/nox:unstable_minimal" + default: "fluencelabs/nox:minimal_0.2.5" avm-version: description: "@fluencelabs/avm version" type: string